From c44c00d3340191d4b276579556c613308c32cc1d Mon Sep 17 00:00:00 2001 From: Stanley Yuen <102275989+stanleyyconsensys@users.noreply.github.com> Date: Wed, 1 May 2024 12:14:57 +0800 Subject: [PATCH] feat: add get starknet package (#186) * feat: add get-starknet package * feat: test cicd * feat: test cicd * fix: test ccid * feat: update read me * fix: update lint style * fix: update comment * fix: update lint checking * fix: update readme * fix: export get-starknet type and interface * chore: add webpack bundler to get-starknet * chore: update get-starknet yarn * chore: update output path for get-starknet * fix: incorrect request result * fix: update request method result for get-starkent * chore: update readme * chore: remove unuse files * chore: remove publish script in get-starknet package * chore: remove CICD for get-starknet package * fix: update typo in get-starknet * fix: update wallet default version to wildcard * feat: update package * fix: update root domain * fix: update testing script name --- packages/get-starknet/.depcheckrc.json | 3 + packages/get-starknet/.eslintrc.js | 15 + packages/get-starknet/.gitignore | 5 + packages/get-starknet/.npmignore | 3 + packages/get-starknet/.prettierrc | 11 + packages/get-starknet/LICENSE-APACHE | 203 +++ packages/get-starknet/LICENSE-MIT | 21 + packages/get-starknet/README.md | 23 + packages/get-starknet/package.json | 59 + packages/get-starknet/public/index.html | 1 + packages/get-starknet/src/accounts.ts | 53 + packages/get-starknet/src/index.ts | 5 + packages/get-starknet/src/signer.ts | 57 + packages/get-starknet/src/snap.ts | 353 ++++++ packages/get-starknet/src/type.ts | 32 + packages/get-starknet/src/wallet.ts | 150 +++ packages/get-starknet/test-fed.ts | 80 ++ packages/get-starknet/tsconfig.build.json | 13 + packages/get-starknet/tsconfig.json | 11 + packages/get-starknet/webpack.config.js | 38 + packages/get-starknet/webpack.config.jsonp.js | 26 + packages/get-starknet/webpack.serve.config.js | 36 + .../test/src/switchNetwork.test.ts | 2 +- yarn.lock | 1127 ++++++++++++++++- 24 files changed, 2287 insertions(+), 40 deletions(-) create mode 100644 packages/get-starknet/.depcheckrc.json create mode 100644 packages/get-starknet/.eslintrc.js create mode 100644 packages/get-starknet/.gitignore create mode 100644 packages/get-starknet/.npmignore create mode 100644 packages/get-starknet/.prettierrc create mode 100644 packages/get-starknet/LICENSE-APACHE create mode 100644 packages/get-starknet/LICENSE-MIT create mode 100644 packages/get-starknet/README.md create mode 100644 packages/get-starknet/package.json create mode 100644 packages/get-starknet/public/index.html create mode 100644 packages/get-starknet/src/accounts.ts create mode 100644 packages/get-starknet/src/index.ts create mode 100644 packages/get-starknet/src/signer.ts create mode 100644 packages/get-starknet/src/snap.ts create mode 100644 packages/get-starknet/src/type.ts create mode 100644 packages/get-starknet/src/wallet.ts create mode 100644 packages/get-starknet/test-fed.ts create mode 100644 packages/get-starknet/tsconfig.build.json create mode 100644 packages/get-starknet/tsconfig.json create mode 100644 packages/get-starknet/webpack.config.js create mode 100644 packages/get-starknet/webpack.config.jsonp.js create mode 100644 packages/get-starknet/webpack.serve.config.js diff --git a/packages/get-starknet/.depcheckrc.json b/packages/get-starknet/.depcheckrc.json new file mode 100644 index 00000000..6d245428 --- /dev/null +++ b/packages/get-starknet/.depcheckrc.json @@ -0,0 +1,3 @@ +{ + "ignores": ["@types/*", "prettier-plugin-packagejson", "rimraf", "ts-node", "typedoc"] +} diff --git a/packages/get-starknet/.eslintrc.js b/packages/get-starknet/.eslintrc.js new file mode 100644 index 00000000..0a8f4696 --- /dev/null +++ b/packages/get-starknet/.eslintrc.js @@ -0,0 +1,15 @@ +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: ['plugin:@typescript-eslint/recommended'], + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + }, + plugins: ['@typescript-eslint'], + rules: { + }, +}; diff --git a/packages/get-starknet/.gitignore b/packages/get-starknet/.gitignore new file mode 100644 index 00000000..95654137 --- /dev/null +++ b/packages/get-starknet/.gitignore @@ -0,0 +1,5 @@ +node_modules +dist +js +.nyc_output +/eslint-report.json diff --git a/packages/get-starknet/.npmignore b/packages/get-starknet/.npmignore new file mode 100644 index 00000000..6b5f4d44 --- /dev/null +++ b/packages/get-starknet/.npmignore @@ -0,0 +1,3 @@ +.eslintignore +.eslintrc.js +.prettierrc \ No newline at end of file diff --git a/packages/get-starknet/.prettierrc b/packages/get-starknet/.prettierrc new file mode 100644 index 00000000..36da6fbc --- /dev/null +++ b/packages/get-starknet/.prettierrc @@ -0,0 +1,11 @@ +{ + "bracketSpacing": true, + "jsxBracketSameLine": true, + "printWidth": 120, + "proseWrap": "preserve", + "semi": true, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false +} diff --git a/packages/get-starknet/LICENSE-APACHE b/packages/get-starknet/LICENSE-APACHE new file mode 100644 index 00000000..dd2e69f2 --- /dev/null +++ b/packages/get-starknet/LICENSE-APACHE @@ -0,0 +1,203 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Copyright 2022 ConsenSys Software Inc. diff --git a/packages/get-starknet/LICENSE-MIT b/packages/get-starknet/LICENSE-MIT new file mode 100644 index 00000000..6ca719f5 --- /dev/null +++ b/packages/get-starknet/LICENSE-MIT @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 ConsenSys Software Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/get-starknet/README.md b/packages/get-starknet/README.md new file mode 100644 index 00000000..f11de1a6 --- /dev/null +++ b/packages/get-starknet/README.md @@ -0,0 +1,23 @@ +# MetaMask Get Starknet + +This repository contains a node module that makes it easy to integrate the Starknet Snap through the interface defined by get-starknet-core. + + +## how to build +Execute the following cmd to build the project in [module federation]([https://webpack.js.org/concepts/module-federation/] ) standard +```bash +yarn build:fed +``` + + +## How to use + +```javascript +const walletInstance = new MetaMaskSnapWallet( + provider, snapVersion +); +``` + +`provider` refer to the instance from window.ethereum +`snapVersion` refer to the version of the Starknet Snap that is connecting to, "*" for latest version + diff --git a/packages/get-starknet/package.json b/packages/get-starknet/package.json new file mode 100644 index 00000000..d3279e9d --- /dev/null +++ b/packages/get-starknet/package.json @@ -0,0 +1,59 @@ +{ + "name": "@consensys/get-starknet", + "version": "1.0.0", + "license": "(Apache-2.0 OR MIT)", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "/dist" + ], + "repository": { + "type": "git", + "url": "https://github.com/ConsenSys/starknet-snap.git" + }, + "scripts": { + "start": "webpack-cli serve --config webpack.serve.config.js", + "clean": "rimraf dist", + "setup": "yarn install --no-immutable", + "build": "tsc --project tsconfig.build.json", + "build:jsonp": "webpack --config webpack.config.jsonp.js", + "build:fed": " webpack --config webpack.config.js", + "prettier": "prettier --write \"src/**/*.ts\"", + "lint": "eslint 'src/*.{js,ts,tsx}' --max-warnings 0 -f json -o eslint-report.json", + "lint:fix": "eslint '**/*.{js,ts,tsx}' --fix", + "test:unit": "" + }, + "keywords": [], + "author": "Consensys", + "devDependencies": { + "@types/chai": "^4.3.1", + "@types/chai-as-promised": "^7.1.5", + "@types/sinon": "^10.0.11", + "@types/sinon-chai": "^3.2.8", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "@typescript-eslint/parser": "^5.20.0", + "chai": "^4.3.6", + "chai-as-promised": "^7.1.1", + "depcheck": "^1.4.7", + "eslint": "^8.13.0", + "get-starknet-core": "^3.2.0", + "html-webpack-plugin": "5.6.0", + "prettier": "^2.6.2", + "rimraf": "^3.0.2", + "serve": "14.2.1", + "sinon": "^13.0.2", + "sinon-chai": "^3.7.0", + "ts-loader": "^9.5.1", + "typescript": "^4.6.3", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "4.15.1" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, + "dependencies": { + "starknet": "^5.14.0" + } +} diff --git a/packages/get-starknet/public/index.html b/packages/get-starknet/public/index.html new file mode 100644 index 00000000..6c70bcfe --- /dev/null +++ b/packages/get-starknet/public/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/get-starknet/src/accounts.ts b/packages/get-starknet/src/accounts.ts new file mode 100644 index 00000000..14c4291a --- /dev/null +++ b/packages/get-starknet/src/accounts.ts @@ -0,0 +1,53 @@ +import { MetaMaskSnap } from './snap'; +import { + Abi, + Account, + AllowArray, + CairoVersion, + Call, + DeclareContractPayload, + DeclareContractResponse, + InvocationsDetails, + InvokeFunctionResponse, + ProviderInterface, + ProviderOptions, + Signature, + SignerInterface, + TypedData, +} from 'starknet'; + +export class MetaMaskAccount extends Account { + #snap: MetaMaskSnap; + #address: string; + + constructor( + snap: MetaMaskSnap, + providerOrOptions: ProviderOptions | ProviderInterface, + address: string, + pkOrSigner: Uint8Array | string | SignerInterface, + cairoVersion?: CairoVersion, + ) { + super(providerOrOptions, address, pkOrSigner, cairoVersion); + this.#snap = snap; + this.#address = address; + } + + async execute( + calls: AllowArray, + abis?: Abi[] | undefined, + transactionsDetail?: InvocationsDetails, + ): Promise { + return this.#snap.execute(this.#address, calls, abis, transactionsDetail); + } + + async signMessage(typedData: TypedData): Promise { + return this.#snap.signMessage(typedData, true, this.#address); + } + + async declare( + contractPayload: DeclareContractPayload, + transactionsDetails?: InvocationsDetails, + ): Promise { + return this.#snap.declare(this.#address, contractPayload, transactionsDetails); + } +} diff --git a/packages/get-starknet/src/index.ts b/packages/get-starknet/src/index.ts new file mode 100644 index 00000000..d7314ab2 --- /dev/null +++ b/packages/get-starknet/src/index.ts @@ -0,0 +1,5 @@ +export * from './type'; +export * from './snap'; +export * from './signer'; +export * from './accounts'; +export * from './wallet'; diff --git a/packages/get-starknet/src/signer.ts b/packages/get-starknet/src/signer.ts new file mode 100644 index 00000000..e363528e --- /dev/null +++ b/packages/get-starknet/src/signer.ts @@ -0,0 +1,57 @@ +import { MetaMaskSnap } from './snap'; +import { + Abi, + ArraySignatureType, + Call, + DeclareSignerDetails, + DeployAccountSignerDetails, + InvocationsSignerDetails, + Signature, + SignerInterface, + TypedData, + ec, + num, +} from 'starknet'; + +export class MetaMaskSigner implements SignerInterface { + #snap: MetaMaskSnap; + #address: string; + + constructor(snap: MetaMaskSnap, address: string) { + this.#snap = snap; + this.#address = address; + } + + async getPubKey(): Promise { + return this.#snap.getPubKey(this.#address); + } + + async signMessage(typedData: TypedData, accountAddress: string): Promise { + const result = (await this.#snap.signMessage(typedData, false, accountAddress)) as ArraySignatureType; + return new ec.starkCurve.Signature(num.toBigInt(result[0]), num.toBigInt(result[1])); + } + + async signTransaction( + transactions: Call[], + transactionsDetail: InvocationsSignerDetails, + abis?: Abi[] | undefined, + ): Promise { + const result = (await this.#snap.signTransaction( + this.#address, + transactions, + transactionsDetail, + abis, + )) as ArraySignatureType; + return new ec.starkCurve.Signature(num.toBigInt(result[0]), num.toBigInt(result[1])); + } + + async signDeployAccountTransaction(transaction: DeployAccountSignerDetails): Promise { + const result = (await this.#snap.signDeployAccountTransaction(this.#address, transaction)) as ArraySignatureType; + return new ec.starkCurve.Signature(num.toBigInt(result[0]), num.toBigInt(result[1])); + } + + async signDeclareTransaction(transaction: DeclareSignerDetails): Promise { + const result = (await this.#snap.signDeclareTransaction(this.#address, transaction)) as ArraySignatureType; + return new ec.starkCurve.Signature(num.toBigInt(result[0]), num.toBigInt(result[1])); + } +} diff --git a/packages/get-starknet/src/snap.ts b/packages/get-starknet/src/snap.ts new file mode 100644 index 00000000..690b9ffe --- /dev/null +++ b/packages/get-starknet/src/snap.ts @@ -0,0 +1,353 @@ +import { AccContract, MetaMaskProvider, Network, RequestSnapResponse } from './type'; +import { + Abi, + AllowArray, + Call, + DeclareContractPayload, + DeclareContractResponse, + DeclareSignerDetails, + DeployAccountSignerDetails, + InvocationsDetails, + InvocationsSignerDetails, + InvokeFunctionResponse, + Signature, + TypedData, +} from 'starknet'; + +export class MetaMaskSnap { + #provider: MetaMaskProvider; + #snapId: string; + #version: string; + + constructor(snapId: string, version: string, provider: MetaMaskProvider) { + this.#provider = provider; + this.#snapId = snapId; + this.#version = version; + } + + async getPubKey(userAddress: string): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_extractPublicKey', + params: { + userAddress, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as string; + } + + async signTransaction( + signerAddress: string, + transactions: Call[], + transactionsDetail: InvocationsSignerDetails, + abis?: Abi[] | undefined, + ): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_signTransaction', + params: { + signerAddress, + transactions, + transactionsDetail, + abis: abis, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as Signature; + } + + async signDeployAccountTransaction( + signerAddress: string, + transaction: DeployAccountSignerDetails, + ): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_signDeployAccountTransaction', + params: { + signerAddress, + transaction, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as Signature; + } + + async signDeclareTransaction(signerAddress: string, transaction: DeclareSignerDetails): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_signDeclareTransaction', + params: { + signerAddress, + transaction, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as Signature; + } + + async execute( + senderAddress: string, + txnInvocation: AllowArray, + abis?: Abi[] | undefined, + invocationsDetails?: InvocationsDetails, + ): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_executeTxn', + params: { + senderAddress, + txnInvocation, + abis, + invocationsDetails, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as InvokeFunctionResponse; + } + + async signMessage(typedDataMessage: TypedData, enableAuthorize: boolean, signerAddress: string): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_signMessage', + params: { + signerAddress, + typedDataMessage, + enableAuthorize: enableAuthorize, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as Signature; + } + + async declare( + senderAddress: string, + contractPayload: DeclareContractPayload, + invocationsDetails?: InvocationsDetails, + ): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_declareContract', + params: { + senderAddress, + contractPayload, + invocationsDetails, + ...(await this.#getSnapParams()), + }, + }, + }, + })) as DeclareContractResponse; + } + + async getNetwork(chainId: string): Promise { + const response = (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_getStoredNetworks', + params: {}, + }, + }, + })) as unknown as Network[]; + + const network = response.find((n) => { + return n.chainId === chainId; + }); + + return network; + } + + async recoverDefaultAccount(chainId: string): Promise { + const result = await this.recoverAccounts(chainId, 0, 1, 1); + return result[0]; + } + + async recoverAccounts( + chainId: string, + startScanIndex = 0, + maxScanned = 1, + maxMissed = 1, + ): Promise> { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_recoverAccounts', + params: { + startScanIndex, + maxScanned, + maxMissed, + chainId, + }, + }, + }, + })) as Array; + } + + async switchNetwork(chainId: string): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_switchNetwork', + params: { + chainId, + enableAuthorize: true, + }, + }, + }, + })) as boolean; + } + + async addStarknetChain(chainName: string, chainId: string, rpcUrl: string, explorerUrl: string): Promise { + return (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_addNetwork', + params: { + networkName: chainName, + networkChainId: chainId, + networkNodeUrl: rpcUrl, + networkVoyagerUrl: explorerUrl, + }, + }, + }, + })) as boolean; + } + + async watchAsset(address: string, name: string, symbol: string, decimals: number): Promise { + return this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_addErc20Token', + params: { + tokenAddress: address, + tokenName: name, + tokenSymbol: symbol, + tokenDecimals: decimals, + }, + }, + }, + }) as unknown as boolean; + } + + async getCurrentNetwork(): Promise { + const response = (await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'starkNet_getCurrentNetwork', + params: {}, + }, + }, + })) as unknown as Network; + + return response; + } + + async #getSnapParams() { + const network = await this.getCurrentNetwork(); + return { + chainId: network.chainId, + }; + } + + static async GetProvider(window: { ethereum?: unknown }) { + const { ethereum } = window; + if (!ethereum) { + return null; + } + let providers = [ethereum]; + + //ethereum.detected or ethereum.providers may exist when more than 1 wallet installed + if (ethereum.hasOwnProperty('detected')) { + providers = ethereum['detected']; + } else if (ethereum.hasOwnProperty('providers')) { + providers = ethereum['providers']; + } + + //delect provider by sending request + for (const provider of providers) { + if (provider && (await MetaMaskSnap.IsSupportSnap(provider as MetaMaskProvider))) { + return provider; + } + } + return null; + } + + static async IsSupportSnap(provider: MetaMaskProvider) { + try { + await provider.request({ + method: 'wallet_getSnaps', + }); + return true; + } catch { + return false; + } + } + + async installIfNot(): Promise { + const response = (await this.#provider.request({ + method: 'wallet_requestSnaps', + params: { + [this.#snapId]: { version: this.#version }, + }, + })) as RequestSnapResponse; + if (!response || !response[this.#snapId]?.enabled) { + return false; + } + return true; + } + + async isInstalled() { + try { + await this.#provider.request({ + method: 'wallet_invokeSnap', + params: { + snapId: this.#snapId, + request: { + method: 'ping', + }, + }, + }); + return true; + } catch (err) { + return false; + } + } +} diff --git a/packages/get-starknet/src/type.ts b/packages/get-starknet/src/type.ts new file mode 100644 index 00000000..335e803f --- /dev/null +++ b/packages/get-starknet/src/type.ts @@ -0,0 +1,32 @@ +export interface MetaMaskProvider { + request(args: { method: string; params?: unknown[] | Record }): Promise; +} + +export type AccContract = { + addressSalt: string; + publicKey: string; // in hex + address: string; // in hex + addressIndex: number; + derivationPath: string; + deployTxnHash: string; // in hex + chainId: string; // in hex +}; + +export type Network = { + name: string; + chainId: string; // in hex + baseUrl: string; + nodeUrl: string; + voyagerUrl: string; + accountClassHash: string; // in hex + useOldAccounts?: boolean; +}; + +export type RequestSnapResponse = { + [key in string]: { + enabled: boolean; + version: string; + id: string; + blocked: boolean; + }; +}; diff --git a/packages/get-starknet/src/wallet.ts b/packages/get-starknet/src/wallet.ts new file mode 100644 index 00000000..be21ba7a --- /dev/null +++ b/packages/get-starknet/src/wallet.ts @@ -0,0 +1,150 @@ +import { + type AddStarknetChainParameters, + IStarknetWindowObject, + type RpcMessage, + type SwitchStarknetChainParameter, + type WalletEvents, + type WatchAssetParameters, +} from 'get-starknet-core'; +import { MetaMaskAccount } from './accounts'; +import { MetaMaskSigner } from './signer'; +import { MetaMaskSnap } from './snap'; +import { MetaMaskProvider } from './type'; +import { AccountInterface, Provider, ProviderInterface } from 'starknet'; + +export class MetaMaskSnapWallet implements IStarknetWindowObject { + id: string; + name: string; + version: string; + icon: string; + account?: AccountInterface | undefined; + provider?: ProviderInterface | undefined; + selectedAddress?: string | undefined; + chainId?: string | undefined; + isConnected?: boolean; + + snap: MetaMaskSnap; + metamaskProvider: MetaMaskProvider; + + private static readonly cairoVersion = '0'; + private static readonly SNAPI_ID = 'npm:@consensys/starknet-snap'; + + constructor(metamaskProvider: MetaMaskProvider, snapVersion = '*') { + this.id = 'metamask'; + this.name = 'Metamask'; + this.version = 'v1.0.0'; + this.icon = `data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMTIiIGhlaWdodD0iMTg5IiB2aWV3Qm94PSIwIDAgMjEyIDE4OSI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cG9seWdvbiBmaWxsPSIjQ0RCREIyIiBwb2ludHM9IjYwLjc1IDE3My4yNSA4OC4zMTMgMTgwLjU2MyA4OC4zMTMgMTcxIDkwLjU2MyAxNjguNzUgMTA2LjMxMyAxNjguNzUgMTA2LjMxMyAxODAgMTA2LjMxMyAxODcuODc1IDg5LjQzOCAxODcuODc1IDY4LjYyNSAxNzguODc1Ii8+PHBvbHlnb24gZmlsbD0iI0NEQkRCMiIgcG9pbnRzPSIxMDUuNzUgMTczLjI1IDEzMi43NSAxODAuNTYzIDEzMi43NSAxNzEgMTM1IDE2OC43NSAxNTAuNzUgMTY4Ljc1IDE1MC43NSAxODAgMTUwLjc1IDE4Ny44NzUgMTMzLjg3NSAxODcuODc1IDExMy4wNjMgMTc4Ljg3NSIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjU2LjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzEgOTEuMTI1IDE2OC43NSAxMjAuMzc1IDE2OC43NSAxMjMuNzUgMTcxIDEyMS41IDE1Mi40MzggMTE3IDE0OS42MjUgOTQuNSAxNTAuMTg4Ii8+PHBvbHlnb24gZmlsbD0iI0Y4OUMzNSIgcG9pbnRzPSI3NS4zNzUgMjcgODguODc1IDU4LjUgOTUuMDYzIDE1MC4xODggMTE3IDE1MC4xODggMTIzLjc1IDU4LjUgMTM2LjEyNSAyNyIvPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MC41NjMgMTUyLjQzOCIvPjxwb2x5Z29uIGZpbGw9IiNFQThFM0EiIHBvaW50cz0iOTIuMjUgMTAyLjM3NSA5NS4wNjMgMTUwLjE4OCA4Ni42MjUgMTI1LjcxOSIvPjxwb2x5Z29uIGZpbGw9IiNEODdDMzAiIHBvaW50cz0iMzkuMzc1IDEzOC45MzggNjUuMjUgMTM4LjM3NSA2MC43NSAxNzMuMjUiLz48cG9seWdvbiBmaWxsPSIjRUI4RjM1IiBwb2ludHM9IjEyLjkzOCAxODguNDM4IDYwLjc1IDE3My4yNSAzOS4zNzUgMTM4LjkzOCAuNTYzIDE0MS43NSIvPjxwb2x5Z29uIGZpbGw9IiNFODgyMUUiIHBvaW50cz0iODguODc1IDU4LjUgNjQuNjg4IDc4Ljc1IDQ2LjEyNSAxMDEuMjUgOTIuMjUgMTAyLjkzOCIvPjxwb2x5Z29uIGZpbGw9IiNERkNFQzMiIHBvaW50cz0iNjAuNzUgMTczLjI1IDkwLjU2MyAxNTIuNDM4IDg4LjMxMyAxNzAuNDM4IDg4LjMxMyAxODAuNTYzIDY4LjA2MyAxNzYuNjI1Ii8+PHBvbHlnb24gZmlsbD0iI0RGQ0VDMyIgcG9pbnRzPSIxMjEuNSAxNzMuMjUgMTUwLjc1IDE1Mi40MzggMTQ4LjUgMTcwLjQzOCAxNDguNSAxODAuNTYzIDEyOC4yNSAxNzYuNjI1IiB0cmFuc2Zvcm09Im1hdHJpeCgtMSAwIDAgMSAyNzIuMjUgMCkiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMjExLjUgMCkiPjxwb2x5Z29uIGZpbGw9IiNGODlEMzUiIHBvaW50cz0iMTYuMzEzIDk2LjE4OCAuNTYzIDE0MS43NSAzOS45MzggMTM5LjUgNjUuMjUgMTM5LjUgNjUuMjUgMTE5LjgxMyA2NC4xMjUgNzkuMzEzIDU4LjUgODMuODEzIi8+PHBvbHlnb24gZmlsbD0iI0Q4N0MzMCIgcG9pbnRzPSI0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi4zNzUgODcuMTg4IDEyNiA2NS4yNSAxMjAuMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VBOEQzQSIgcG9pbnRzPSI0Ni4xMjUgMTAxLjgxMyA2NS4yNSAxMTkuODEzIDY1LjI1IDEzNy44MTMiLz48cG9seWdvbiBmaWxsPSIjRjg5RDM1IiBwb2ludHM9IjY1LjI1IDEyMC4zNzUgODcuNzUgMTI2IDk1LjA2MyAxNTAuMTg4IDkwIDE1MyA2NS4yNSAxMzguMzc1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSI2NS4yNSAxMzguMzc1IDYwLjc1IDE3My4yNSA5MCAxNTMiLz48cG9seWdvbiBmaWxsPSIjRUE4RTNBIiBwb2ludHM9IjkyLjI1IDEwMi4zNzUgOTUuMDYzIDE1MC4xODggODYuNjI1IDEyNS43MTkiLz48cG9seWdvbiBmaWxsPSIjRDg3QzMwIiBwb2ludHM9IjM5LjM3NSAxMzguOTM4IDY1LjI1IDEzOC4zNzUgNjAuNzUgMTczLjI1Ii8+PHBvbHlnb24gZmlsbD0iI0VCOEYzNSIgcG9pbnRzPSIxMi45MzggMTg4LjQzOCA2MC43NSAxNzMuMjUgMzkuMzc1IDEzOC45MzggLjU2MyAxNDEuNzUiLz48cG9seWdvbiBmaWxsPSIjRTg4MjFFIiBwb2ludHM9Ijg4Ljg3NSA1OC41IDY0LjY4OCA3OC43NSA0Ni4xMjUgMTAxLjI1IDkyLjI1IDEwMi45MzgiLz48cG9seWdvbiBmaWxsPSIjMzkzOTM5IiBwb2ludHM9IjcwLjMxMyAxMTIuNSA2NC4xMjUgMTI1LjQzOCA4Ni4wNjMgMTE5LjgxMyIgdHJhbnNmb3JtPSJtYXRyaXgoLTEgMCAwIDEgMTUwLjE4OCAwKSIvPjxwb2x5Z29uIGZpbGw9IiNFODhGMzUiIHBvaW50cz0iMTIuMzc1IC41NjMgODguODc1IDU4LjUgNzUuOTM4IDI3Ii8+PHBhdGggZmlsbD0iIzhFNUEzMCIgZD0iTTEyLjM3NTAwMDIsMC41NjI1MDAwMDggTDIuMjUwMDAwMDMsMzEuNTAwMDAwNSBMNy44NzUwMDAxMiw2NS4yNTAwMDEgTDMuOTM3NTAwMDYsNjcuNTAwMDAxIEw5LjU2MjUwMDE0LDcyLjU2MjUgTDUuMDYyNTAwMDgsNzYuNTAwMDAxMSBMMTEuMjUsODIuMTI1MDAxMiBMNy4zMTI1MDAxMSw4NS41MDAwMDEzIEwxNi4zMTI1MDAyLDk2Ljc1MDAwMTQgTDU4LjUwMDAwMDksODMuODEyNTAxMiBDNzkuMTI1MDAxMiw2Ny4zMTI1MDA0IDg5LjI1MDAwMTMsNTguODc1MDAwMyA4OC44NzUwMDEzLDU4LjUwMDAwMDkgQzg4LjUwMDAwMTMsNTguMTI1MDAwOSA2My4wMDAwMDA5LDM4LjgxMjUwMDYgMTIuMzc1MDAwMiwwLjU2MjUwMDAwOCBaIi8+PC9nPjwvZz48L3N2Zz4=`; + this.metamaskProvider = metamaskProvider; + this.provider = undefined; + this.chainId = undefined; + this.account = undefined; + this.selectedAddress = undefined; + this.isConnected = false; + this.snap = new MetaMaskSnap(MetaMaskSnapWallet.SNAPI_ID, snapVersion, this.metamaskProvider); + } + + async request(call: Omit): Promise { + if (call.type === 'wallet_switchStarknetChain') { + const params = call.params as SwitchStarknetChainParameter; + const result = await this.snap.switchNetwork(params.chainId); + if (result === true) { + await this.enable(); + } + return result as unknown as T['result']; + } + + if (call.type === 'wallet_addStarknetChain') { + const params = call.params as AddStarknetChainParameters; + const currentNetwork = await this.#getNetwork(); + if (currentNetwork?.chainId === params.chainId) { + return true as unknown as T['result']; + } + const result = await this.snap.addStarknetChain( + params.chainName, + params.chainId, + params.rpcUrls ? params.rpcUrls[0] : '', + params.blockExplorerUrls ? params.blockExplorerUrls[0] : '', + ); + return result as unknown as T['result']; + } + + if (call.type === 'wallet_watchAsset') { + const params = call.params as WatchAssetParameters; + const result = + (await this.snap.watchAsset( + params.options.address, + params.options.name, + params.options.symbol, + params.options.decimals, + )) ?? false; + return result as unknown as T['result']; + } + + throw new Error(`Method ${call.type} not implemented`); + } + + async #getNetwork() { + return await this.snap.getCurrentNetwork(); + } + + async #getWalletAddress(chainId: string) { + //address always same regardless network, only single address provided + if (this.selectedAddress) { + return this.selectedAddress; + } + + const accountResponse = await this.snap.recoverDefaultAccount(chainId); + + if (!accountResponse || !accountResponse.address) { + throw new Error('Unable to recover accounts'); + } + + return accountResponse.address; + } + + async #getRPCProvider(network: { chainId: string; nodeUrl: string }) { + return new Provider({ + rpc: { + nodeUrl: network.nodeUrl, + }, + }); + } + + async #getAccountInstance(address: string, provider: ProviderInterface) { + const signer = new MetaMaskSigner(this.snap, address); + + return new MetaMaskAccount(this.snap, provider, address, signer, MetaMaskSnapWallet.cairoVersion); + } + + async enable() { + await this.snap.installIfNot(); + this.isConnected = true; + const network = await this.#getNetwork(); + if (!network) { + throw new Error('Current network not found'); + } + this.chainId = network.chainId; + this.selectedAddress = await this.#getWalletAddress(this.chainId); + if (!this.selectedAddress) { + throw new Error('Address not found'); + } + this.provider = await this.#getRPCProvider(network); + this.account = await this.#getAccountInstance(this.selectedAddress, this.provider); + + return [this.selectedAddress]; + } + + async isPreauthorized() { + return true; + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + on() { + throw new Error('Method not supported'); + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + off() { + throw new Error('Method not supported'); + } +} diff --git a/packages/get-starknet/test-fed.ts b/packages/get-starknet/test-fed.ts new file mode 100644 index 00000000..d9ad2023 --- /dev/null +++ b/packages/get-starknet/test-fed.ts @@ -0,0 +1,80 @@ +import { MetaMaskSnap } from './src/snap'; +import { MetaMaskSnapWallet } from './src/wallet'; + +const init = async() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const provider = await MetaMaskSnap.GetProvider(window as any) as any; + const wallet = new MetaMaskSnapWallet(provider, '*'); + + const address = await wallet.enable(); + console.log("address", address) + + const wallet_switchStarknetChain = await wallet.request( { + type: 'wallet_switchStarknetChain', + params: { + chainId: '0x534e5f4d41494e', + }, + }); + console.log("wallet_switchStarknetChain", wallet_switchStarknetChain) + + const wallet_addStarknetChain = await wallet.request( { + type: 'wallet_addStarknetChain', + params: { + chainId: '0x534e5f4d41494e', + chainName: 'StarkNet', + rpcUrls: ['https://stg-rpc.starknet.io'], + blockExplorerUrls: ['https://stg-explorer.starknet.io'], + }, + }); + console.log("wallet_addStarknetChain", wallet_addStarknetChain) + + const message = { + types: { + StarkNetDomain: [ + { name: "name", type: "string" }, + { name: "version", type: "felt" }, + { name: "chainId", type: "felt" }, + ], + Airdrop: [ + { name: "address", type: "felt" }, + { name: "amount", type: "felt" } + ], + Validate: [ + { name: "id", type: "felt" }, + { name: "from", type: "felt" }, + { name: "amount", type: "felt" }, + { name: "nameGamer", type: "string" }, + { name: "endDate", type: "felt" }, + { name: "itemsAuthorized", type: "felt*" }, // array of felt + { name: "chkFunction", type: "selector" }, // name of function + { name: "rootList", type: "merkletree", contains: "Airdrop" } // root of a merkle tree + ] + }, + primaryType: "Validate", + domain: { + name: "myDapp", + version: "1", + chainId: "0x534e5f474f45524c49", + }, + message: { + id: "0x0000004f000f", + from: "0x2c94f628d125cd0e86eaefea735ba24c262b9a441728f63e5776661829a4066", + amount: "400", + nameGamer: "Hector26", + endDate: "0x27d32a3033df4277caa9e9396100b7ca8c66a4ef8ea5f6765b91a7c17f0109c", + itemsAuthorized: ["0x01", "0x03", "0x0a", "0x0e"], + chkFunction: "check_authorization", + rootList: [ + { + address: "0x69b49c2cc8b16e80e86bfc5b0614a59aa8c9b601569c7b80dde04d3f3151b79", + amount: "1554785", + } + ] + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } as any + + const signData = await wallet.account.signMessage(message) + console.log("signData", signData) +} +init() diff --git a/packages/get-starknet/tsconfig.build.json b/packages/get-starknet/tsconfig.build.json new file mode 100644 index 00000000..c6e00d65 --- /dev/null +++ b/packages/get-starknet/tsconfig.build.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "inlineSources": true, + "noEmit": false, + "outDir": "dist", + "rootDir": "src", + "sourceMap": true + }, + "include": ["./src/**/*.ts"], + "exclude": ["./src/**/*.test.ts"] +} diff --git a/packages/get-starknet/tsconfig.json b/packages/get-starknet/tsconfig.json new file mode 100644 index 00000000..6d4ccf24 --- /dev/null +++ b/packages/get-starknet/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "module": "commonjs", /* Specify what module code is generated. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + "skipLibCheck": true , /* Skip type checking all .d.ts files. */ + "resolveJsonModule": true, /* lets us import JSON modules from within TypeScript modules. */ + } +} diff --git a/packages/get-starknet/webpack.config.js b/packages/get-starknet/webpack.config.js new file mode 100644 index 00000000..9ec85c98 --- /dev/null +++ b/packages/get-starknet/webpack.config.js @@ -0,0 +1,38 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const { ModuleFederationPlugin } = require('webpack').container; +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require('path'); + +module.exports = { + mode: 'production', + entry: './src/index.ts', + output: { + path: path.resolve(__dirname, './dist/webpack'), + filename: 'index.js', + publicPath: 'https://snaps.consensys.io/starknet/get-starknet/v1/', + library: { + type: 'commonjs2', + }, + }, + resolve: { + extensions: ['.ts', '.tsx', '.js'], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, + plugins: [ + new ModuleFederationPlugin({ + name: 'MetaMaskStarknetSnapWallet', + filename: 'remoteEntry.js', + exposes: { + './index': './src/index.ts', + }, + }), + ], +}; \ No newline at end of file diff --git a/packages/get-starknet/webpack.config.jsonp.js b/packages/get-starknet/webpack.config.jsonp.js new file mode 100644 index 00000000..d6ca14d8 --- /dev/null +++ b/packages/get-starknet/webpack.config.jsonp.js @@ -0,0 +1,26 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require('path'); + +module.exports = { + mode: 'production', + entry: './src/index.ts', + output: { + path: path.resolve(__dirname, 'dist/jsonp'), + filename: 'index.jsonp.js', + library: 'MetaMaskStarknetSnapWallet', + libraryTarget: 'jsonp', + libraryExport: 'default', + }, + resolve: { + extensions: ['.ts', '.tsx', '.js'], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, +}; \ No newline at end of file diff --git a/packages/get-starknet/webpack.serve.config.js b/packages/get-starknet/webpack.serve.config.js new file mode 100644 index 00000000..0efd44a7 --- /dev/null +++ b/packages/get-starknet/webpack.serve.config.js @@ -0,0 +1,36 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const HtmlWebpackPlugin = require('html-webpack-plugin'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const path = require('path'); + +module.exports = { + entry: './test-fed', + mode: 'development', + target: 'web', + devServer: { + static: { + directory: path.join(__dirname, 'dist'), + }, + port: 3001, + }, + output: { + publicPath: 'auto', + }, + resolve: { + extensions: ['.ts', '.tsx', '.js'], + }, + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: './public/index.html', + }), + ], +}; \ No newline at end of file diff --git a/packages/starknet-snap/test/src/switchNetwork.test.ts b/packages/starknet-snap/test/src/switchNetwork.test.ts index fded4148..f48129ee 100644 --- a/packages/starknet-snap/test/src/switchNetwork.test.ts +++ b/packages/starknet-snap/test/src/switchNetwork.test.ts @@ -54,7 +54,7 @@ describe('Test function: switchNetwork', function () { expect(state.currentNetwork).to.be.eql(STARKNET_MAINNET_NETWORK); }); - it('should skip autherize when enableAuthorize is false or omit', async function () { + it('should skip authorize when enableAuthorize is false or omit', async function () { const requestObject: SwitchNetworkRequestParams = { chainId: STARKNET_MAINNET_NETWORK.chainId, }; diff --git a/yarn.lock b/yarn.lock index 616abe29..da36c830 100644 --- a/yarn.lock +++ b/yarn.lock @@ -64,6 +64,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.24.1": + version: 7.24.2 + resolution: "@babel/code-frame@npm:7.24.2" + dependencies: + "@babel/highlight": ^7.24.2 + picocolors: ^1.0.0 + checksum: 70e867340cfe09ca5488b2f36372c45cabf43c79a5b6426e6df5ef0611ff5dfa75a57dda841895693de6008f32c21a7c97027a8c7bcabd63a7d17416cbead6f8 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.17.7, @babel/compat-data@npm:^7.20.1, @babel/compat-data@npm:^7.20.5": version: 7.21.0 resolution: "@babel/compat-data@npm:7.21.0" @@ -198,6 +208,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/generator@npm:7.24.1" + dependencies: + "@babel/types": ^7.24.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: 98c6ce5ec7a1cba2bdf35cdf607273b90cf7cf82bbe75cd0227363fb84d7e1bd8efa74f40247d5900c8c009123f10132ad209a05283757698de918278c3c6700 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.16.0, @babel/helper-annotate-as-pure@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-annotate-as-pure@npm:7.18.6" @@ -776,6 +798,18 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.24.2": + version: 7.24.2 + resolution: "@babel/highlight@npm:7.24.2" + dependencies: + "@babel/helper-validator-identifier": ^7.22.20 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5f17b131cc3ebf3ab285a62cf98a404aef1bd71a6be045e748f8d5bf66d6a6e1aefd62f5972c84369472e8d9f22a614c58a89cd331eb60b7ba965b31b1bbeaf5 + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.3": version: 7.21.3 resolution: "@babel/parser@npm:7.21.3" @@ -794,6 +828,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.1": + version: 7.24.1 + resolution: "@babel/parser@npm:7.24.1" + bin: + parser: ./bin/babel-parser.js + checksum: a1068941dddf82ffdf572565b8b7b2cddb963ff9ddf97e6e28f50e843d820b4285e6def8f59170104a94e2a91ae2e3b326489886d77a57ea29d468f6a5e79bf9 + languageName: node + linkType: hard + "@babel/parser@npm:^7.24.0": version: 7.24.0 resolution: "@babel/parser@npm:7.24.0" @@ -2861,6 +2904,24 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.23.2": + version: 7.24.1 + resolution: "@babel/traverse@npm:7.24.1" + dependencies: + "@babel/code-frame": ^7.24.1 + "@babel/generator": ^7.24.1 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.24.1 + "@babel/types": ^7.24.0 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 92a5ca906abfba9df17666d2001ab23f18600035f706a687055a0e392a690ae48d6fec67c8bd4ef19ba18699a77a5b7f85727e36b83f7d110141608fe0c24fe9 + languageName: node + linkType: hard + "@babel/traverse@npm:^7.24.0": version: 7.24.0 resolution: "@babel/traverse@npm:7.24.0" @@ -3153,6 +3214,36 @@ __metadata: languageName: node linkType: hard +"@consensys/get-starknet@workspace:packages/get-starknet": + version: 0.0.0-use.local + resolution: "@consensys/get-starknet@workspace:packages/get-starknet" + dependencies: + "@types/chai": ^4.3.1 + "@types/chai-as-promised": ^7.1.5 + "@types/sinon": ^10.0.11 + "@types/sinon-chai": ^3.2.8 + "@typescript-eslint/eslint-plugin": ^5.20.0 + "@typescript-eslint/parser": ^5.20.0 + chai: ^4.3.6 + chai-as-promised: ^7.1.1 + depcheck: ^1.4.7 + eslint: ^8.13.0 + get-starknet-core: ^3.2.0 + html-webpack-plugin: 5.6.0 + prettier: ^2.6.2 + rimraf: ^3.0.2 + serve: 14.2.1 + sinon: ^13.0.2 + sinon-chai: ^3.7.0 + starknet: ^5.14.0 + ts-loader: ^9.5.1 + typescript: ^4.6.3 + webpack: ^5.91.0 + webpack-cli: ^5.1.4 + webpack-dev-server: 4.15.1 + languageName: unknown + linkType: soft + "@consensys/starknet-snap@file:../starknet-snap::locator=wallet-ui%40workspace%3Apackages%2Fwallet-ui": version: 2.6.1 resolution: "@consensys/starknet-snap@file:../starknet-snap#../starknet-snap::hash=33b3e4&locator=wallet-ui%40workspace%3Apackages%2Fwallet-ui" @@ -3164,7 +3255,7 @@ __metadata: ethers: ^5.5.1 starknet: 6.7.0 starknet_v4.22.0: "npm:starknet@4.22.0" - checksum: 983f842b9dba2bec7cfcd8907f9dd8d420befc61e045b7138f1786f1662ff6c4f3279b8db49193cf2ae39dff0b9173a5475d1b072f918fda72d54d9d05d4bfd5 + checksum: c10be535cf8eb133f4568ab01f65c1415964870bbb9fe4cbb6638e8c9eed27c929fa1cea2ca88cb2cd85533f2002466ae3cf94ab069ad81bb4ce877a96e2a7b7 languageName: node linkType: hard @@ -3455,7 +3546,7 @@ __metadata: languageName: node linkType: hard -"@discoveryjs/json-ext@npm:^0.5.3": +"@discoveryjs/json-ext@npm:^0.5.0, @discoveryjs/json-ext@npm:^0.5.3": version: 0.5.7 resolution: "@discoveryjs/json-ext@npm:0.5.7" checksum: 2176d301cc258ea5c2324402997cf8134ebb212469c0d397591636cea8d3c02f2b3cf9fd58dcb748c7a0dade77ebdc1b10284fa63e608c033a1db52fddc69918 @@ -4587,6 +4678,17 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": ^1.2.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:3.1.0, @jridgewell/resolve-uri@npm:^3.0.3": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" @@ -4608,6 +4710,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 + languageName: node + linkType: hard + "@jridgewell/source-map@npm:^0.3.2": version: 0.3.2 resolution: "@jridgewell/source-map@npm:0.3.2" @@ -4635,7 +4744,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.14": +"@jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.15": version: 1.4.15 resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 @@ -4672,6 +4781,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 + languageName: node + linkType: hard + "@lavamoat/aa@npm:^3.1.1": version: 3.1.2 resolution: "@lavamoat/aa@npm:3.1.2" @@ -7984,6 +8103,13 @@ __metadata: languageName: node linkType: hard +"@types/minimatch@npm:^3.0.3": + version: 3.0.5 + resolution: "@types/minimatch@npm:3.0.5" + checksum: c41d136f67231c3131cf1d4ca0b06687f4a322918a3a5adddc87ce90ed9dbd175a3610adee36b106ae68c0b92c637c35e02b58c8a56c424f71d30993ea220b92 + languageName: node + linkType: hard + "@types/minimist@npm:^1.2.0": version: 1.2.2 resolution: "@types/minimist@npm:1.2.2" @@ -8344,6 +8470,15 @@ __metadata: languageName: node linkType: hard +"@types/ws@npm:^8.5.5": + version: 8.5.10 + resolution: "@types/ws@npm:8.5.10" + dependencies: + "@types/node": "*" + checksum: 3ec416ea2be24042ebd677932a462cf16d2080393d8d7d0b1b3f5d6eaa4a7387aaf0eefb99193c0bfd29444857cf2e0c3ac89899e130550dc6c14ada8a46d25e + languageName: node + linkType: hard + "@types/yargs-parser@npm:*": version: 21.0.0 resolution: "@types/yargs-parser@npm:21.0.0" @@ -8517,6 +8652,63 @@ __metadata: languageName: node linkType: hard +"@vue/compiler-core@npm:3.4.21": + version: 3.4.21 + resolution: "@vue/compiler-core@npm:3.4.21" + dependencies: + "@babel/parser": ^7.23.9 + "@vue/shared": 3.4.21 + entities: ^4.5.0 + estree-walker: ^2.0.2 + source-map-js: ^1.0.2 + checksum: 0d6b7732bc5ca5b4561526bbe646f9acd09cd70561b6c822d15856347f21a009ebf30f2f85b1b7500f24f7c0333a2af8ee645c389abe52485c1f4724c982b306 + languageName: node + linkType: hard + +"@vue/compiler-dom@npm:3.4.21": + version: 3.4.21 + resolution: "@vue/compiler-dom@npm:3.4.21" + dependencies: + "@vue/compiler-core": 3.4.21 + "@vue/shared": 3.4.21 + checksum: f53e4f4e0afc954cede91a8cbeb3a4e053531a43a0f5999d1b18da443ca3f1f6fc9344a8741c72c5719a61bb34e18004ac88e16747bcf145ebc8a31188263690 + languageName: node + linkType: hard + +"@vue/compiler-sfc@npm:^3.3.4": + version: 3.4.21 + resolution: "@vue/compiler-sfc@npm:3.4.21" + dependencies: + "@babel/parser": ^7.23.9 + "@vue/compiler-core": 3.4.21 + "@vue/compiler-dom": 3.4.21 + "@vue/compiler-ssr": 3.4.21 + "@vue/shared": 3.4.21 + estree-walker: ^2.0.2 + magic-string: ^0.30.7 + postcss: ^8.4.35 + source-map-js: ^1.0.2 + checksum: 226dc404be96a2811777825918d971feb42650e262159183548d64a463c4153fab97cdc2647224c609c89dbc0d930c6d9dbe6528ef52a1396b4b22163c20569a + languageName: node + linkType: hard + +"@vue/compiler-ssr@npm:3.4.21": + version: 3.4.21 + resolution: "@vue/compiler-ssr@npm:3.4.21" + dependencies: + "@vue/compiler-dom": 3.4.21 + "@vue/shared": 3.4.21 + checksum: c510bee68b1a5b7f8ae3fe771c10ce9c397f876a234ced9df89e4a8353f3874870857e929cbb37e6d785d355b43f2264dc3a7fd5cb6867dc5b39ddca607ea3ed + languageName: node + linkType: hard + +"@vue/shared@npm:3.4.21": + version: 3.4.21 + resolution: "@vue/shared@npm:3.4.21" + checksum: 5f30a408911f339c647baa88c45c3a2f6d58dbdaf2bd404753690f24b612717bdfe9050401d8ffb02613a9a06dd0b43c8307420cd69fda6e92e6d65bf9bc0c6f + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/ast@npm:1.11.1" @@ -8537,6 +8729,16 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/ast@npm:1.12.1" + dependencies: + "@webassemblyjs/helper-numbers": 1.11.6 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/ast@npm:1.9.0" @@ -8604,6 +8806,13 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/helper-buffer@npm:1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" + checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca + languageName: node + linkType: hard + "@webassemblyjs/helper-buffer@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" @@ -8703,6 +8912,18 @@ __metadata: 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": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.6 + "@webassemblyjs/wasm-gen": 1.12.1 + checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f + languageName: node + linkType: hard + "@webassemblyjs/helper-wasm-section@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" @@ -8838,6 +9059,22 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wasm-edit@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + 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 + checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 + languageName: node + linkType: hard + "@webassemblyjs/wasm-gen@npm:1.11.1": version: 1.11.1 resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" @@ -8864,6 +9101,19 @@ __metadata: 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": 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 + checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff + languageName: node + linkType: hard + "@webassemblyjs/wasm-gen@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" @@ -8901,6 +9151,18 @@ __metadata: 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": 1.12.1 + "@webassemblyjs/helper-buffer": 1.12.1 + "@webassemblyjs/wasm-gen": 1.12.1 + "@webassemblyjs/wasm-parser": 1.12.1 + checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 + languageName: node + linkType: hard + "@webassemblyjs/wasm-opt@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" @@ -8941,6 +9203,20 @@ __metadata: languageName: node linkType: hard +"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.12.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" + 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 + checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 + languageName: node + linkType: hard + "@webassemblyjs/wasm-parser@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" @@ -8989,6 +9265,16 @@ __metadata: 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": 1.12.1 + "@xtuc/long": 4.2.2 + checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 + languageName: node + linkType: hard + "@webassemblyjs/wast-printer@npm:1.9.0": version: 1.9.0 resolution: "@webassemblyjs/wast-printer@npm:1.9.0" @@ -9000,6 +9286,39 @@ __metadata: languageName: node linkType: hard +"@webpack-cli/configtest@npm:^2.1.1": + version: 2.1.1 + resolution: "@webpack-cli/configtest@npm:2.1.1" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 9f9f9145c2d05471fc83d426db1df85cf49f329836b0c4b9f46b6948bed4b013464c00622b136d2a0a26993ce2306976682592245b08ee717500b1db45009a72 + languageName: node + linkType: hard + +"@webpack-cli/info@npm:^2.0.2": + version: 2.0.2 + resolution: "@webpack-cli/info@npm:2.0.2" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + checksum: 8f9a178afca5c82e113aed1efa552d64ee5ae4fdff63fe747c096a981ec74f18a5d07bd6e89bbe6715c3e57d96eea024a410e58977169489fe1df044c10dd94e + languageName: node + linkType: hard + +"@webpack-cli/serve@npm:^2.0.5": + version: 2.0.5 + resolution: "@webpack-cli/serve@npm:2.0.5" + peerDependencies: + webpack: 5.x.x + webpack-cli: 5.x.x + peerDependenciesMeta: + webpack-dev-server: + optional: true + checksum: 75f0e54681796d567a71ac3e2781d2901a8d8cf1cdfc82f261034dddac59a8343e8c3bc5e32b4bb9d6766759ba49fb29a5cd86ef1701d79c506fe886bb63ac75 + languageName: node + linkType: hard + "@xtuc/ieee754@npm:^1.2.0": version: 1.2.0 resolution: "@xtuc/ieee754@npm:1.2.0" @@ -9014,6 +9333,13 @@ __metadata: languageName: node linkType: hard +"@zeit/schemas@npm:2.29.0": + version: 2.29.0 + resolution: "@zeit/schemas@npm:2.29.0" + checksum: 3cea06bb67d790336aca0cc17580fd492ff3fc66ef4d180dce7053ff7ff54ab81b56bf718ba6f537148c581161d06306a481ec218d540bff922e0e009844ffd1 + languageName: node + linkType: hard + "JSONStream@npm:^1.0.3, JSONStream@npm:^1.0.4": version: 1.3.5 resolution: "JSONStream@npm:1.3.5" @@ -9300,6 +9626,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:8.11.0": + version: 8.11.0 + resolution: "ajv@npm:8.11.0" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: 5e0ff226806763be73e93dd7805b634f6f5921e3e90ca04acdf8db81eed9d8d3f0d4c5f1213047f45ebbf8047ffe0c840fa1ef2ec42c3a644899f69aa72b5bef + languageName: node + linkType: hard + "ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" @@ -9324,7 +9662,7 @@ __metadata: languageName: node linkType: hard -"ansi-align@npm:^3.0.0": +"ansi-align@npm:^3.0.0, ansi-align@npm:^3.0.1": version: 3.0.1 resolution: "ansi-align@npm:3.0.1" dependencies: @@ -9411,6 +9749,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^6.1.0": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: ef940f2f0ced1a6347398da88a91da7930c33ecac3c77b72c5905f8b8fe402c52e6fde304ff5347f616e27a742da3f1dc76de98f6866c69251ad0b07a66776d9 + languageName: node + linkType: hard + "ansi-to-html@npm:^0.6.11": version: 0.6.15 resolution: "ansi-to-html@npm:0.6.15" @@ -9486,6 +9831,13 @@ __metadata: languageName: node linkType: hard +"arch@npm:^2.2.0": + version: 2.2.0 + resolution: "arch@npm:2.2.0" + checksum: e21b7635029fe8e9cdd5a026f9a6c659103e63fff423834323cdf836a1bb240a72d0c39ca8c470f84643385cf581bd8eda2cad8bf493e27e54bd9783abe9101f + languageName: node + linkType: hard + "archy@npm:^1.0.0": version: 1.0.0 resolution: "archy@npm:1.0.0" @@ -9523,6 +9875,13 @@ __metadata: languageName: node linkType: hard +"arg@npm:5.0.2, arg@npm:^5.0.2": + version: 5.0.2 + resolution: "arg@npm:5.0.2" + checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078 + languageName: node + linkType: hard + "arg@npm:^4.1.0": version: 4.1.3 resolution: "arg@npm:4.1.3" @@ -9530,13 +9889,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^5.0.2": - version: 5.0.2 - resolution: "arg@npm:5.0.2" - checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078 - languageName: node - linkType: hard - "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -9593,6 +9945,13 @@ __metadata: languageName: node linkType: hard +"array-differ@npm:^3.0.0": + version: 3.0.0 + resolution: "array-differ@npm:3.0.0" + checksum: 117edd9df5c1530bd116c6e8eea891d4bd02850fd89b1b36e532b6540e47ca620a373b81feca1c62d1395d9ae601516ba538abe5e8172d41091da2c546b05fb7 + languageName: node + linkType: hard + "array-find-index@npm:^1.0.1": version: 1.0.2 resolution: "array-find-index@npm:1.0.2" @@ -10488,6 +10847,22 @@ __metadata: languageName: node linkType: hard +"boxen@npm:7.0.0": + version: 7.0.0 + resolution: "boxen@npm:7.0.0" + dependencies: + ansi-align: ^3.0.1 + camelcase: ^7.0.0 + chalk: ^5.0.1 + cli-boxes: ^3.0.0 + string-width: ^5.1.2 + type-fest: ^2.13.0 + widest-line: ^4.0.1 + wrap-ansi: ^8.0.1 + checksum: b917cf7a168ef3149635a8c02d5c9717d66182348bd27038d85328ad12655151e3324db0f2815253846c33e5f0ddf28b6cd52d56a12b9f88617b7f8f722b946a + languageName: node + linkType: hard + "boxen@npm:^5.1.2": version: 5.1.2 resolution: "boxen@npm:5.1.2" @@ -11042,6 +11417,13 @@ __metadata: languageName: node linkType: hard +"callsite@npm:^1.0.0": + version: 1.0.0 + resolution: "callsite@npm:1.0.0" + checksum: 569686d622a288a4f0a827466c2f967b6d7a98f2ee1e6ada9dcf5a6802267a5e2a995d40f07113b5f95c7b2b2d5cbff4fdde590195f2a8bed24b829d048688f8 + languageName: node + linkType: hard + "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -11101,13 +11483,20 @@ __metadata: languageName: node linkType: hard -"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0, camelcase@npm:^6.2.1": +"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0, camelcase@npm:^6.2.1, camelcase@npm:^6.3.0": version: 6.3.0 resolution: "camelcase@npm:6.3.0" checksum: 8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d languageName: node linkType: hard +"camelcase@npm:^7.0.0": + version: 7.0.1 + resolution: "camelcase@npm:7.0.1" + checksum: 86ab8f3ebf08bcdbe605a211a242f00ed30d8bfb77dab4ebb744dd36efbc84432d1c4adb28975ba87a1b8be40a80fbd1e60e2f06565315918fa7350011a26d3d + languageName: node + linkType: hard + "camelize@npm:^1.0.0": version: 1.0.1 resolution: "camelize@npm:1.0.1" @@ -11209,6 +11598,22 @@ __metadata: languageName: node linkType: hard +"chalk-template@npm:0.4.0": + version: 0.4.0 + resolution: "chalk-template@npm:0.4.0" + dependencies: + chalk: ^4.1.2 + checksum: 6c706802a79a7963cbce18f022b046fe86e438a67843151868852f80ea7346e975a6a9749991601e7e5d3b6a6c4852a04c53dc966a9a3d04031bd0e0ed53c819 + languageName: node + linkType: hard + +"chalk@npm:5.0.1": + version: 5.0.1 + resolution: "chalk@npm:5.0.1" + checksum: 7b45300372b908f0471fbf7389ce2f5de8d85bb949026fd51a1b95b10d0ed32c7ed5aab36dd5e9d2bf3191867909b4404cef75c5f4d2d1daeeacd301dd280b76 + languageName: node + linkType: hard + "chalk@npm:^2.0.0, chalk@npm:^2.4.1, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" @@ -11240,6 +11645,13 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^5.0.1": + version: 5.3.0 + resolution: "chalk@npm:5.3.0" + checksum: 623922e077b7d1e9dedaea6f8b9e9352921f8ae3afe739132e0e00c275971bdd331268183b2628cf4ab1727c45ea1f28d7e24ac23ce1db1eb653c414ca8a5a80 + languageName: node + linkType: hard + "char-regex@npm:^1.0.2": version: 1.0.2 resolution: "char-regex@npm:1.0.2" @@ -11453,6 +11865,13 @@ __metadata: languageName: node linkType: hard +"cli-boxes@npm:^3.0.0": + version: 3.0.0 + resolution: "cli-boxes@npm:3.0.0" + checksum: 637d84419d293a9eac40a1c8c96a2859e7d98b24a1a317788e13c8f441be052fc899480c6acab3acc82eaf1bccda6b7542d7cdcf5c9c3cc39227175dc098d5b2 + languageName: node + linkType: hard + "cli-cursor@npm:^3.1.0": version: 3.1.0 resolution: "cli-cursor@npm:3.1.0" @@ -11489,6 +11908,17 @@ __metadata: languageName: node linkType: hard +"clipboardy@npm:3.0.0": + version: 3.0.0 + resolution: "clipboardy@npm:3.0.0" + dependencies: + arch: ^2.2.0 + execa: ^5.1.1 + is-wsl: ^2.2.0 + checksum: 2c292acb59705494cbe07d7df7c8becff4f01651514d32ebd80f4aec2d20946d8f3824aac67ecdf2d09ef21fdf0eb24b6a7f033c137ccdceedc4661c54455c94 + languageName: node + linkType: hard + "cliui@npm:^6.0.0": version: 6.0.0 resolution: "cliui@npm:6.0.0" @@ -11672,6 +12102,13 @@ __metadata: languageName: node linkType: hard +"colorette@npm:^2.0.14": + version: 2.0.20 + resolution: "colorette@npm:2.0.20" + checksum: 0c016fea2b91b733eb9f4bcdb580018f52c0bc0979443dad930e5037a968237ac53d9beb98e218d2e9235834f8eebce7f8e080422d6194e957454255bde71d3d + languageName: node + linkType: hard + "combine-source-map@npm:^0.8.0, combine-source-map@npm:~0.8.0": version: 0.8.0 resolution: "combine-source-map@npm:0.8.0" @@ -11700,6 +12137,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^10.0.1": + version: 10.0.1 + resolution: "commander@npm:10.0.1" + checksum: 436901d64a818295803c1996cd856621a74f30b9f9e28a588e726b2b1670665bccd7c1a77007ebf328729f0139838a88a19265858a0fa7a8728c4656796db948 + languageName: node + linkType: hard + "commander@npm:^2.19.0, commander@npm:^2.20.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -11782,7 +12226,7 @@ __metadata: languageName: node linkType: hard -"compression@npm:^1.7.4": +"compression@npm:1.7.4, compression@npm:^1.7.4": version: 1.7.4 resolution: "compression@npm:1.7.4" dependencies: @@ -12247,7 +12691,7 @@ __metadata: languageName: node linkType: hard -"cosmiconfig@npm:^7.0.0": +"cosmiconfig@npm:^7.0.0, cosmiconfig@npm:^7.1.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" dependencies: @@ -12956,6 +13400,13 @@ __metadata: languageName: node linkType: hard +"deep-extend@npm:^0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 + languageName: node + linkType: hard + "deep-freeze-strict@npm:^1.1.1": version: 1.1.1 resolution: "deep-freeze-strict@npm:1.1.1" @@ -13083,20 +13534,60 @@ __metadata: languageName: node linkType: hard -"depd@npm:2.0.0, depd@npm:^2.0.0": - version: 2.0.0 - resolution: "depd@npm:2.0.0" - checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a - languageName: node - linkType: hard - -"depd@npm:~1.1.2": - version: 1.1.2 +"depcheck@npm:^1.4.7": + version: 1.4.7 + resolution: "depcheck@npm:1.4.7" + dependencies: + "@babel/parser": ^7.23.0 + "@babel/traverse": ^7.23.2 + "@vue/compiler-sfc": ^3.3.4 + callsite: ^1.0.0 + camelcase: ^6.3.0 + cosmiconfig: ^7.1.0 + debug: ^4.3.4 + deps-regex: ^0.2.0 + findup-sync: ^5.0.0 + ignore: ^5.2.4 + is-core-module: ^2.12.0 + js-yaml: ^3.14.1 + json5: ^2.2.3 + lodash: ^4.17.21 + minimatch: ^7.4.6 + multimatch: ^5.0.0 + please-upgrade-node: ^3.2.0 + readdirp: ^3.6.0 + require-package-name: ^2.0.1 + resolve: ^1.22.3 + resolve-from: ^5.0.0 + semver: ^7.5.4 + yargs: ^16.2.0 + bin: + depcheck: bin/depcheck.js + checksum: e648788554ba88bd0dc37ce398f7756f143a78487b4ee3ac01756ad7ed97034476e0709497e9f8e474117bd4258db669a53fd46fafb703f151c9a0394fc8a55a + languageName: node + linkType: hard + +"depd@npm:2.0.0, depd@npm:^2.0.0": + version: 2.0.0 + resolution: "depd@npm:2.0.0" + checksum: abbe19c768c97ee2eed6282d8ce3031126662252c58d711f646921c9623f9052e3e1906443066beec1095832f534e57c523b7333f8e7e0d93051ab6baef5ab3a + languageName: node + linkType: hard + +"depd@npm:~1.1.2": + version: 1.1.2 resolution: "depd@npm:1.1.2" checksum: 6b406620d269619852885ce15965272b829df6f409724415e0002c8632ab6a8c0a08ec1f0bd2add05dc7bd7507606f7e2cc034fa24224ab829580040b835ecd9 languageName: node linkType: hard +"deps-regex@npm:^0.2.0": + version: 0.2.0 + resolution: "deps-regex@npm:0.2.0" + checksum: a782304d481824c21c5aaff3d7fbd2eba9b112688cbadb36537304dde61e106595d4858bd097fad1df8b96fbff3df571dc9bfd73b749cbd24fd088cce3a999d8 + languageName: node + linkType: hard + "deps-sort@npm:^2.0.1": version: 2.0.1 resolution: "deps-sort@npm:2.0.1" @@ -13144,6 +13635,13 @@ __metadata: languageName: node linkType: hard +"detect-file@npm:^1.0.0": + version: 1.0.0 + resolution: "detect-file@npm:1.0.0" + checksum: 1861e4146128622e847abe0e1ed80fef01e78532665858a792267adf89032b7a9c698436137707fcc6f02956c2a6a0052d6a0cef5be3d4b76b1ff0da88e2158a + languageName: node + linkType: hard + "detect-indent@npm:^6.0.0": version: 6.1.0 resolution: "detect-indent@npm:6.1.0" @@ -13538,6 +14036,13 @@ __metadata: languageName: node linkType: hard +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 7d00d7cd8e49b9afa762a813faac332dee781932d6f2c848dc348939c4253f1d4564341b7af1d041853bc3f32c2ef141b58e0a4d9862c17a7f08f68df1e0f1ed + languageName: node + linkType: hard + "ecc-jsbn@npm:~0.1.1": version: 0.1.2 resolution: "ecc-jsbn@npm:0.1.2" @@ -13677,6 +14182,16 @@ __metadata: languageName: node linkType: hard +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.16.0": + version: 5.16.0 + resolution: "enhanced-resolve@npm:5.16.0" + dependencies: + graceful-fs: ^4.2.4 + tapable: ^2.2.0 + checksum: ccfd01850ecf2aa51e8554d539973319ff7d8a539ef1e0ba3460a0ccad6223c4ef6e19165ee64161b459cd8a48df10f52af4434c60023c65fde6afa32d475f7e + languageName: node + linkType: hard + "enhanced-resolve@npm:^5.10.0": version: 5.12.0 resolution: "enhanced-resolve@npm:5.12.0" @@ -13704,6 +14219,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^4.5.0": + version: 4.5.0 + resolution: "entities@npm:4.5.0" + checksum: 853f8ebd5b425d350bffa97dd6958143179a5938352ccae092c62d1267c4e392a039be1bae7d51b6e4ffad25f51f9617531fedf5237f15df302ccfb452cbf2d7 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -13711,6 +14233,18 @@ __metadata: languageName: node linkType: hard +"envify@npm:^4.1.0": + version: 4.1.0 + resolution: "envify@npm:4.1.0" + dependencies: + esprima: ^4.0.0 + through: ~2.3.4 + bin: + envify: bin/envify + checksum: ee48873a56a117b812fb5e4d50870bf4440f5ba3462db4f4677e041fbdf2d05c70d72baa59af5f584373ab54d751b6543087a9afd4313774e058f020486728b8 + languageName: node + linkType: hard + "err-code@npm:^2.0.2": version: 2.0.3 resolution: "err-code@npm:2.0.3" @@ -14288,6 +14822,13 @@ __metadata: languageName: node linkType: hard +"estree-walker@npm:^2.0.2": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 6151e6f9828abe2259e57f5fd3761335bb0d2ebd76dc1a01048ccee22fabcfef3c0859300f6d83ff0d1927849368775ec5a6d265dde2f6de5a1be1721cd94efc + languageName: node + linkType: hard + "esutils@npm:^2.0.2": version: 2.0.3 resolution: "esutils@npm:2.0.3" @@ -14537,6 +15078,15 @@ __metadata: languageName: node linkType: hard +"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": + version: 2.0.2 + resolution: "expand-tilde@npm:2.0.2" + dependencies: + homedir-polyfill: ^1.0.1 + checksum: 2efe6ed407d229981b1b6ceb552438fbc9e5c7d6a6751ad6ced3e0aa5cf12f0b299da695e90d6c2ac79191b5c53c613e508f7149e4573abfbb540698ddb7301a + languageName: node + linkType: hard + "expect@npm:^27.5.1": version: 27.5.1 resolution: "expect@npm:27.5.1" @@ -14762,6 +15312,13 @@ __metadata: languageName: node linkType: hard +"fastest-levenshtein@npm:^1.0.12": + version: 1.0.16 + resolution: "fastest-levenshtein@npm:1.0.16" + checksum: a78d44285c9e2ae2c25f3ef0f8a73f332c1247b7ea7fb4a191e6bb51aa6ee1ef0dfb3ed113616dcdc7023e18e35a8db41f61c8d88988e877cf510df8edafbc71 + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.15.0 resolution: "fastq@npm:1.15.0" @@ -14989,6 +15546,18 @@ __metadata: languageName: node linkType: hard +"findup-sync@npm:^5.0.0": + version: 5.0.0 + resolution: "findup-sync@npm:5.0.0" + dependencies: + detect-file: ^1.0.0 + is-glob: ^4.0.3 + micromatch: ^4.0.4 + resolve-dir: ^1.0.1 + checksum: 576716c77a0e8330b17ae9cba27d1fda8907c8cda7bf33a47f1999e16e089bfc6df4dd62933e0760f430736183c054348c34aa45dd882d49c8c098f55b89ee1d + languageName: node + linkType: hard + "flat-cache@npm:^3.0.4": version: 3.0.4 resolution: "flat-cache@npm:3.0.4" @@ -15308,6 +15877,13 @@ __metadata: languageName: node linkType: hard +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 2b0ff4ce708d99715ad14a6d1f894e2a83242e4a52ccfcefaee5e40050562e5f6dafc1adbb4ce2d4ab47279a45dc736ab91ea5042d843c3c092820dfe032efb1 + languageName: node + linkType: hard + "function.prototype.name@npm:^1.1.0, function.prototype.name@npm:^1.1.5": version: 1.1.5 resolution: "function.prototype.name@npm:1.1.5" @@ -15443,6 +16019,18 @@ __metadata: languageName: node linkType: hard +"get-starknet-core@npm:^3.2.0": + version: 3.2.0 + resolution: "get-starknet-core@npm:3.2.0" + peerDependencies: + starknet: ^5.18.0 + peerDependenciesMeta: + starknet: + optional: false + checksum: 9bb3ddea6634a40b951c0f01366444beffe8c6785809a2404ad0ff60ec925420e9a4e846b809ddb40ecb5e9dbb73213359b0a051b8426a6d46974f5cd78ccf93 + languageName: node + linkType: hard + "get-stdin@npm:^4.0.1": version: 4.0.1 resolution: "get-stdin@npm:4.0.1" @@ -15648,6 +16236,17 @@ __metadata: languageName: node linkType: hard +"global-modules@npm:^1.0.0": + version: 1.0.0 + resolution: "global-modules@npm:1.0.0" + dependencies: + global-prefix: ^1.0.1 + is-windows: ^1.0.1 + resolve-dir: ^1.0.0 + checksum: 10be68796c1e1abc1e2ba87ec4ea507f5629873b119ab0cd29c07284ef2b930f1402d10df01beccb7391dedd9cd479611dd6a24311c71be58937beaf18edf85e + languageName: node + linkType: hard + "global-modules@npm:^2.0.0": version: 2.0.0 resolution: "global-modules@npm:2.0.0" @@ -15657,6 +16256,19 @@ __metadata: languageName: node linkType: hard +"global-prefix@npm:^1.0.1": + version: 1.0.2 + resolution: "global-prefix@npm:1.0.2" + dependencies: + expand-tilde: ^2.0.2 + homedir-polyfill: ^1.0.1 + ini: ^1.3.4 + is-windows: ^1.0.1 + which: ^1.2.14 + checksum: 061b43470fe498271bcd514e7746e8a8535032b17ab9570517014ae27d700ff0dca749f76bbde13ba384d185be4310d8ba5712cb0e74f7d54d59390db63dd9a0 + languageName: node + linkType: hard + "global-prefix@npm:^3.0.0": version: 3.0.0 resolution: "global-prefix@npm:3.0.0" @@ -15749,6 +16361,13 @@ __metadata: languageName: node linkType: hard +"graceful-fs@npm:^4.2.11": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + "grapheme-splitter@npm:^1.0.4": version: 1.0.4 resolution: "grapheme-splitter@npm:1.0.4" @@ -15976,6 +16595,15 @@ __metadata: languageName: node linkType: hard +"hasown@npm:^2.0.0": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: ^1.1.2 + checksum: e8516f776a15149ca6c6ed2ae3110c417a00b62260e222590e54aa367cbcd6ed99122020b37b7fbdf05748df57b265e70095d7bf35a47660587619b15ffb93db + languageName: node + linkType: hard + "hast-to-hyperscript@npm:^9.0.0": version: 9.0.1 resolution: "hast-to-hyperscript@npm:9.0.1" @@ -16085,6 +16713,15 @@ __metadata: languageName: node linkType: hard +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: ^1.0.0 + checksum: 18dd4db87052c6a2179d1813adea0c4bfcfa4f9996f0e226fefb29eb3d548e564350fa28ec46b0bf1fbc0a1d2d6922ceceb80093115ea45ff8842a4990139250 + languageName: node + linkType: hard + "hoopy@npm:^0.1.4": version: 0.1.4 resolution: "hoopy@npm:0.1.4" @@ -16191,6 +16828,27 @@ __metadata: languageName: node linkType: hard +"html-webpack-plugin@npm:5.6.0": + version: 5.6.0 + resolution: "html-webpack-plugin@npm:5.6.0" + dependencies: + "@types/html-minifier-terser": ^6.0.0 + html-minifier-terser: ^6.0.2 + lodash: ^4.17.21 + pretty-error: ^4.0.0 + tapable: ^2.0.0 + peerDependencies: + "@rspack/core": 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + "@rspack/core": + optional: true + webpack: + optional: true + checksum: 32a6e41da538e798fd0be476637d7611a5e8a98a3508f031996e9eb27804dcdc282cb01f847cf5d066f21b49cfb8e21627fcf977ffd0c9bea81cf80e5a65070d + languageName: node + linkType: hard + "html-webpack-plugin@npm:^4.0.0": version: 4.5.2 resolution: "html-webpack-plugin@npm:4.5.2" @@ -16483,6 +17141,13 @@ __metadata: languageName: node linkType: hard +"ignore@npm:^5.2.4": + version: 5.3.1 + resolution: "ignore@npm:5.3.1" + checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 + languageName: node + linkType: hard + "immer@npm:^9.0.16, immer@npm:^9.0.6, immer@npm:^9.0.7": version: 9.0.19 resolution: "immer@npm:9.0.19" @@ -16573,7 +17238,7 @@ __metadata: languageName: node linkType: hard -"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5": +"ini@npm:^1.3.2, ini@npm:^1.3.4, ini@npm:^1.3.5, ini@npm:~1.3.0": version: 1.3.8 resolution: "ini@npm:1.3.8" checksum: dfd98b0ca3a4fc1e323e38a6c8eb8936e31a97a918d3b377649ea15bdb15d481207a0dda1021efbd86b464cae29a0d33c1d7dcaf6c5672bee17fa849bc50a1b3 @@ -16634,6 +17299,13 @@ __metadata: languageName: node linkType: hard +"interpret@npm:^3.1.1": + version: 3.1.1 + resolution: "interpret@npm:3.1.1" + checksum: 35cebcf48c7351130437596d9ab8c8fe131ce4038da4561e6d665f25640e0034702a031cf7e3a5cea60ac7ac548bf17465e0571ede126f3d3a6933152171ac82 + languageName: node + linkType: hard + "ip@npm:^2.0.0": version: 2.0.1 resolution: "ip@npm:2.0.1" @@ -16803,6 +17475,15 @@ __metadata: languageName: node linkType: hard +"is-core-module@npm:^2.12.0, is-core-module@npm:^2.13.0": + version: 2.13.1 + resolution: "is-core-module@npm:2.13.1" + dependencies: + hasown: ^2.0.0 + checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c + languageName: node + linkType: hard + "is-data-descriptor@npm:^0.1.4": version: 0.1.4 resolution: "is-data-descriptor@npm:0.1.4" @@ -17114,6 +17795,13 @@ __metadata: languageName: node linkType: hard +"is-port-reachable@npm:4.0.0": + version: 4.0.0 + resolution: "is-port-reachable@npm:4.0.0" + checksum: 47b7e10db8edcef27fbf9e50f0de85ad368d35688790ca64a13db67260111ac5f4b98989b11af06199fa93f25d810bd09a5b21b2c2646529668638f7c34d3c04 + 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" @@ -17285,7 +17973,7 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.2": +"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": version: 1.0.2 resolution: "is-windows@npm:1.0.2" checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 @@ -18288,7 +18976,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:^3.13.1": +"js-yaml@npm:^3.13.1, js-yaml@npm:^3.14.1": version: 3.14.1 resolution: "js-yaml@npm:3.14.1" dependencies: @@ -19028,6 +19716,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.30.7": + version: 0.30.8 + resolution: "magic-string@npm:0.30.8" + dependencies: + "@jridgewell/sourcemap-codec": ^1.4.15 + checksum: 79922f4500d3932bb587a04440d98d040170decf432edc0f91c0bf8d41db16d364189bf800e334170ac740918feda62cd39dcc170c337dc18050cfcf00a5f232 + languageName: node + linkType: hard + "make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" @@ -19375,7 +20072,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.0, micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -19529,6 +20226,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^7.4.6": + version: 7.4.6 + resolution: "minimatch@npm:7.4.6" + dependencies: + brace-expansion: ^2.0.1 + checksum: 1a6c8d22618df9d2a88aabeef1de5622eb7b558e9f8010be791cb6b0fa6e102d39b11c28d75b855a1e377b12edc7db8ff12a99c20353441caa6a05e78deb5da9 + languageName: node + linkType: hard + "minimist-options@npm:4.1.0": version: 4.1.0 resolution: "minimist-options@npm:4.1.0" @@ -19800,6 +20506,19 @@ __metadata: languageName: node linkType: hard +"multimatch@npm:^5.0.0": + version: 5.0.0 + resolution: "multimatch@npm:5.0.0" + dependencies: + "@types/minimatch": ^3.0.3 + array-differ: ^3.0.0 + array-union: ^2.1.0 + arrify: ^2.0.1 + minimatch: ^3.0.4 + checksum: 82c8030a53af965cab48da22f1b0f894ef99e16ee680dabdfbd38d2dfacc3c8208c475203d747afd9e26db44118ed0221d5a0d65268c864f06d6efc7ac6df812 + languageName: node + linkType: hard + "nan@npm:^2.12.1": version: 2.17.0 resolution: "nan@npm:2.17.0" @@ -19827,6 +20546,15 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" + bin: + nanoid: bin/nanoid.cjs + checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + languageName: node + linkType: hard + "nanomatch@npm:^1.2.9": version: 1.2.13 resolution: "nanomatch@npm:1.2.13" @@ -20846,6 +21574,13 @@ __metadata: languageName: node linkType: hard +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: 4e55e0231d58f828a41d0f1da2bf2ff7bcef8f4cb6146e69d16ce499190de58b06199e6bd9b17fbf0d4d8aef9052099cdf8c4f13a6294b1a522e8e958073066e + languageName: node + linkType: hard + "parse5@npm:6.0.1, parse5@npm:^6.0.0": version: 6.0.1 resolution: "parse5@npm:6.0.1" @@ -21141,6 +21876,15 @@ __metadata: languageName: node linkType: hard +"please-upgrade-node@npm:^3.2.0": + version: 3.2.0 + resolution: "please-upgrade-node@npm:3.2.0" + dependencies: + semver-compare: ^1.0.0 + checksum: d87c41581a2a022fbe25965a97006238cd9b8cbbf49b39f78d262548149a9d30bd2bdf35fec3d810e0001e630cd46ef13c7e19c389dea8de7e64db271a2381bb + languageName: node + linkType: hard + "pnp-webpack-plugin@npm:1.6.4": version: 1.6.4 resolution: "pnp-webpack-plugin@npm:1.6.4" @@ -22089,6 +22833,17 @@ __metadata: languageName: node linkType: hard +"postcss@npm:^8.4.35": + version: 8.4.38 + resolution: "postcss@npm:8.4.38" + dependencies: + nanoid: ^3.3.7 + picocolors: ^1.0.0 + source-map-js: ^1.2.0 + checksum: 649f9e60a763ca4b5a7bbec446a069edf07f057f6d780a5a0070576b841538d1ecf7dd888f2fbfd1f76200e26c969e405aeeae66332e6927dbdc8bdcb90b9451 + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -22560,6 +23315,20 @@ __metadata: languageName: node linkType: hard +"rc@npm:^1.0.1, rc@npm:^1.1.6": + version: 1.2.8 + resolution: "rc@npm:1.2.8" + dependencies: + deep-extend: ^0.6.0 + ini: ~1.3.0 + minimist: ^1.2.0 + strip-json-comments: ~2.0.1 + bin: + rc: ./cli.js + checksum: 2e26e052f8be2abd64e6d1dabfbd7be03f80ec18ccbc49562d31f617d0015fbdbcf0f9eed30346ea6ab789e0fdfe4337f033f8016efdbee0df5354751842080e + languageName: node + linkType: hard + "react-app-polyfill@npm:^3.0.0": version: 3.0.0 resolution: "react-app-polyfill@npm:3.0.0" @@ -23052,7 +23821,7 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:~3.6.0": +"readdirp@npm:^3.6.0, readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" dependencies: @@ -23061,6 +23830,15 @@ __metadata: languageName: node linkType: hard +"rechoir@npm:^0.8.0": + version: 0.8.0 + resolution: "rechoir@npm:0.8.0" + dependencies: + resolve: ^1.20.0 + checksum: ad3caed8afdefbc33fbc30e6d22b86c35b3d51c2005546f4e79bcc03c074df804b3640ad18945e6bef9ed12caedc035655ec1082f64a5e94c849ff939dc0a788 + languageName: node + linkType: hard + "recursive-readdir@npm:^2.2.2": version: 2.2.3 resolution: "recursive-readdir@npm:2.2.3" @@ -23209,6 +23987,25 @@ __metadata: languageName: node linkType: hard +"registry-auth-token@npm:3.3.2": + version: 3.3.2 + resolution: "registry-auth-token@npm:3.3.2" + dependencies: + rc: ^1.1.6 + safe-buffer: ^5.0.1 + checksum: c9d7ae160a738f1fa825556e3669e6c771d2c0239ce37679f7e8646157a97d0a76464738be075002a1f754ef9bfb913b689f4bbfd5296d28f136fbf98c8c2217 + languageName: node + linkType: hard + +"registry-url@npm:3.1.0": + version: 3.1.0 + resolution: "registry-url@npm:3.1.0" + dependencies: + rc: ^1.0.1 + checksum: 6d223da41b04e1824f5faa63905c6f2e43b216589d72794111573f017352b790aef42cd1f826463062f89d804abb2027e3d9665d2a9a0426a11eedd04d470af3 + languageName: node + linkType: hard + "regjsparser@npm:^0.9.1": version: 0.9.1 resolution: "regjsparser@npm:0.9.1" @@ -23421,6 +24218,13 @@ __metadata: languageName: node linkType: hard +"require-package-name@npm:^2.0.1": + version: 2.0.1 + resolution: "require-package-name@npm:2.0.1" + checksum: 00f4e9e467ebe2bbced2b4198a165de11c83b5ee9f4c20b05a8782659b92bcb544dbd50be9a3eed746d05ecd875453e258c079eb3a79604b50a27cf8ab0798b5 + languageName: node + linkType: hard + "requires-port@npm:^1.0.0": version: 1.0.0 resolution: "requires-port@npm:1.0.0" @@ -23444,6 +24248,16 @@ __metadata: languageName: node linkType: hard +"resolve-dir@npm:^1.0.0, resolve-dir@npm:^1.0.1": + version: 1.0.1 + resolution: "resolve-dir@npm:1.0.1" + dependencies: + expand-tilde: ^2.0.0 + global-modules: ^1.0.0 + checksum: ef736b8ed60d6645c3b573da17d329bfb50ec4e1d6c5ffd6df49e3497acef9226f9810ea6823b8ece1560e01dcb13f77a9f6180d4f242d00cc9a8f4de909c65c + languageName: node + linkType: hard + "resolve-from@npm:5.0.0, resolve-from@npm:^5.0.0": version: 5.0.0 resolution: "resolve-from@npm:5.0.0" @@ -23515,6 +24329,19 @@ __metadata: languageName: node linkType: hard +"resolve@npm:^1.22.3": + version: 1.22.8 + resolution: "resolve@npm:1.22.8" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + languageName: node + linkType: hard + "resolve@npm:^2.0.0-next.4": version: 2.0.0-next.4 resolution: "resolve@npm:2.0.0-next.4" @@ -23541,6 +24368,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@^1.22.3#~builtin": + version: 1.22.8 + resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=c3c19d" + dependencies: + is-core-module: ^2.13.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 + languageName: node + linkType: hard + "resolve@patch:resolve@^2.0.0-next.4#~builtin": version: 2.0.0-next.4 resolution: "resolve@patch:resolve@npm%3A2.0.0-next.4#~builtin::version=2.0.0-next.4&hash=c3c19d" @@ -23930,6 +24770,13 @@ __metadata: languageName: node linkType: hard +"semver-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "semver-compare@npm:1.0.0" + checksum: dd1d7e2909744cf2cf71864ac718efc990297f9de2913b68e41a214319e70174b1d1793ac16e31183b128c2b9812541300cb324db8168e6cf6b570703b171c68 + languageName: node + linkType: hard + "semver@npm:2 || 3 || 4 || 5, semver@npm:^5.4.1, semver@npm:^5.5.0, semver@npm:^5.6.0": version: 5.7.1 resolution: "semver@npm:5.7.1" @@ -24049,7 +24896,7 @@ __metadata: languageName: node linkType: hard -"serve-handler@npm:^6.1.5": +"serve-handler@npm:6.1.5, serve-handler@npm:^6.1.5": version: 6.1.5 resolution: "serve-handler@npm:6.1.5" dependencies: @@ -24092,6 +24939,27 @@ __metadata: languageName: node linkType: hard +"serve@npm:14.2.1": + version: 14.2.1 + resolution: "serve@npm:14.2.1" + dependencies: + "@zeit/schemas": 2.29.0 + ajv: 8.11.0 + arg: 5.0.2 + boxen: 7.0.0 + chalk: 5.0.1 + chalk-template: 0.4.0 + clipboardy: 3.0.0 + compression: 1.7.4 + is-port-reachable: 4.0.0 + serve-handler: 6.1.5 + update-check: 1.5.4 + bin: + serve: build/main.js + checksum: c39a517b5d795a0a5c2f9fb9ff088b7e4962c579e34ace5b85dd62f93e0eacbc8a90359792c153c444a83258ffda392113dff7bfd10d41ced574a2d1886c2994 + languageName: node + linkType: hard + "ses@npm:^0.18.8": version: 0.18.8 resolution: "ses@npm:0.18.8" @@ -24399,6 +25267,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.0": + version: 1.2.0 + resolution: "source-map-js@npm:1.2.0" + checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 + languageName: node + linkType: hard + "source-map-loader@npm:^3.0.0": version: 3.0.2 resolution: "source-map-loader@npm:3.0.2" @@ -24456,7 +25331,7 @@ __metadata: languageName: node linkType: hard -"source-map@npm:^0.7.3": +"source-map@npm:^0.7.3, source-map@npm:^0.7.4": version: 0.7.4 resolution: "source-map@npm:0.7.4" checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 @@ -24930,6 +25805,17 @@ __metadata: 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: ^0.2.0 + emoji-regex: ^9.2.2 + strip-ansi: ^7.0.1 + checksum: 7369deaa29f21dda9a438686154b62c2c5f661f8dda60449088f9f980196f7908fc39fdd1803e3e01541970287cf5deae336798337e9319a7055af89dafa7193 + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.0 || ^3.0.1, string.prototype.matchall@npm:^4.0.6, string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -25144,6 +26030,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:~2.0.1": + version: 2.0.1 + resolution: "strip-json-comments@npm:2.0.1" + checksum: 1074ccb63270d32ca28edfb0a281c96b94dc679077828135141f27d52a5a398ef5e78bcf22809d23cadc2b81dfbe345eb5fd8699b385c8b1128907dec4a7d1e1 + languageName: node + linkType: hard + "strnum@npm:^1.0.5": version: 1.0.5 resolution: "strnum@npm:1.0.5" @@ -25929,13 +26822,6 @@ __metadata: languageName: node linkType: hard -"ts-mixer@npm:^6.0.3": - version: 6.0.4 - resolution: "ts-mixer@npm:6.0.4" - checksum: 36b1af526befd74345e736e9aa16f5c28876ebcea07784da14d929149fd7e6028cfd2fe9304c8efe8cb91b588443a9cc9e991df58e4c6e602326edbaae2af3ab - languageName: node - linkType: hard - "ts-node@npm:^10.8.1": version: 10.9.1 resolution: "ts-node@npm:10.9.1" @@ -26118,6 +27004,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^2.13.0": + version: 2.19.0 + resolution: "type-fest@npm:2.19.0" + checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 + languageName: node + linkType: hard + "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -26497,6 +27390,16 @@ __metadata: languageName: node linkType: hard +"update-check@npm:1.5.4": + version: 1.5.4 + resolution: "update-check@npm:1.5.4" + dependencies: + registry-auth-token: 3.3.2 + registry-url: 3.1.0 + checksum: 2c9f7de6f030364c5ea02a341e5ae2dfe76da6559b32d40dd3b047b3ac0927408cf92d322c51cd8e009688210a85ccbf1eba449762a65a0d1b14f3cdf1ea5c48 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -26919,6 +27822,16 @@ __metadata: languageName: node linkType: hard +"watchpack@npm:^2.4.1": + version: 2.4.1 + resolution: "watchpack@npm:2.4.1" + dependencies: + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.1.2 + checksum: 5b0179348655dcdf19cac7cb4ff923fdc024d630650c0bf6bec8899cf47c60e19d4f810a88dba692ed0e7f684cf0fcffea86efdbf6c35d81f031e328043b7fab + languageName: node + linkType: hard + "wbuf@npm:^1.1.0, wbuf@npm:^1.7.3": version: 1.7.3 resolution: "wbuf@npm:1.7.3" @@ -26986,6 +27899,38 @@ __metadata: languageName: node linkType: hard +"webpack-cli@npm:^5.1.4": + version: 5.1.4 + resolution: "webpack-cli@npm:5.1.4" + 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 + peerDependencies: + webpack: 5.x.x + peerDependenciesMeta: + "@webpack-cli/generators": + optional: true + webpack-bundle-analyzer: + optional: true + webpack-dev-server: + optional: true + bin: + webpack-cli: bin/cli.js + checksum: 3a4ad0d0342a6815c850ee4633cc2a8a5dae04f918e7847f180bf24ab400803cf8a8943707ffbed03eb20fe6ce647f996f60a2aade87b0b4a9954da3da172ce0 + languageName: node + linkType: hard + "webpack-dev-middleware@npm:^3.7.3": version: 3.7.3 resolution: "webpack-dev-middleware@npm:3.7.3" @@ -27032,6 +27977,53 @@ __metadata: languageName: node linkType: hard +"webpack-dev-server@npm:4.15.1": + version: 4.15.1 + resolution: "webpack-dev-server@npm:4.15.1" + 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.1 + ws: ^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: cd0063b068d2b938fd76c412d555374186ac2fa84bbae098265212ed50a5c15d6f03aa12a5a310c544a242943eb58c0bfde4c296d5c36765c182f53799e1bc71 + languageName: node + linkType: hard + "webpack-dev-server@npm:^4.6.0": version: 4.12.0 resolution: "webpack-dev-server@npm:4.12.0" @@ -27119,7 +28111,7 @@ __metadata: languageName: node linkType: hard -"webpack-merge@npm:^5.9.0": +"webpack-merge@npm:^5.7.3, webpack-merge@npm:^5.9.0": version: 5.10.0 resolution: "webpack-merge@npm:5.10.0" dependencies: @@ -27322,6 +28314,43 @@ __metadata: languageName: node linkType: hard +"webpack@npm:^5.91.0": + version: 5.91.0 + resolution: "webpack@npm:5.91.0" + 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 + peerDependenciesMeta: + webpack-cli: + optional: true + bin: + webpack: bin/webpack.js + checksum: f1073715dbb1ed5c070affef293d800a867708bcbc5aba4d8baee87660e0cf53c55966a6f36fab078d1d6c9567cdcd0a9086bdfb607cab87ea68c6449791b9a3 + 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" @@ -27452,7 +28481,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^1.2.9, which@npm:^1.3.1": +"which@npm:^1.2.14, which@npm:^1.2.9, which@npm:^1.3.1": version: 1.3.1 resolution: "which@npm:1.3.1" dependencies: @@ -27481,6 +28510,15 @@ __metadata: languageName: node linkType: hard +"widest-line@npm:^4.0.1": + version: 4.0.1 + resolution: "widest-line@npm:4.0.1" + dependencies: + string-width: ^5.0.1 + checksum: 64c48cf27171221be5f86fc54b94dd29879165bdff1a7aa92dde723d9a8c99fb108312768a5d62c8c2b80b701fa27bbd36a1ddc58367585cd45c0db7920a0cba + languageName: node + linkType: hard + "wildcard@npm:^2.0.0": version: 2.0.1 resolution: "wildcard@npm:2.0.1" @@ -27754,6 +28792,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^8.0.1": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: ^6.1.0 + string-width: ^5.0.1 + strip-ansi: ^7.0.1 + checksum: 371733296dc2d616900ce15a0049dca0ef67597d6394c57347ba334393599e800bab03c41d4d45221b6bc967b8c453ec3ae4749eff3894202d16800fdfe0e238 + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2"