diff --git a/package.json b/package.json index 11d2eb8957..4203dad1d5 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "husky": ">=6", "lerna": "^4.0.0", "lint-staged": ">=10", - "prettier": "^2.6.2" + "prettier": "^2.6.2", + "run-pty": "^3.0.0" }, "config": { "commitizen": { @@ -38,7 +39,8 @@ "lint": "eslint . --ext .ts", "prepare": "husky install && yarn lerna run prepare", "lerna:release": "lerna version --conventional-commits --yes", - "lerna:publish": "lerna publish --no-private --force-publish" + "lerna:publish": "lerna publish --no-private --force-publish", + "start:ri": "run-pty % yarn workspace ri-contracts run start % yarn workspace ri-client run start" }, "lint-staged": { "*.ts": "eslint --cache --fix", diff --git a/packages/cli/build/commands/deploy.js b/packages/cli/build/commands/deploy.js index 78bbe03a14..02c737f0b4 100644 --- a/packages/cli/build/commands/deploy.js +++ b/packages/cli/build/commands/deploy.js @@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.deploy = exports.SUPPORTED_DEPLOYMENT_CHAINS = exports.findGameContractAddress = exports.isValidHttpUrl = exports.handler = exports.builder = exports.desc = exports.command = void 0; +exports.deploy = exports.handler = exports.builder = exports.desc = exports.command = void 0; /* eslint-disable @typescript-eslint/no-non-null-assertion */ // eslint-disable-next-line @typescript-eslint/no-var-requires const ethers_1 = require("ethers"); @@ -24,21 +24,30 @@ const fs_1 = __importDefault(require("fs")); const openurl_1 = __importDefault(require("openurl")); const inquirer_prompt_suggest_1 = __importDefault(require("inquirer-prompt-suggest")); inquirer_1.default.registerPrompt("suggest", inquirer_prompt_suggest_1.default); -// Workaround to prevent tsc to transpole dynamic imports with require, which causes an error upstream +// Workaround to prevent tsc to transpile dynamic imports with require, which causes an error upstream // https://github.com/microsoft/TypeScript/issues/43329#issuecomment-922544562 const importNetlify = eval('import("netlify")'); const importChalk = eval('import("chalk")'); const importExeca = eval('import("execa")'); +const importFetch = eval('import("node-fetch")'); exports.command = "deploy"; exports.desc = "Deploys the local mud contracts and optionally the client"; const builder = (yargs) => yargs.options({ + i: { type: "boolean" }, + chainSpec: { type: "string" }, chainId: { type: "number" }, - deploymentName: { type: "string" }, + rpc: { type: "string" }, + personaMirror: { type: "string" }, + persona: { type: "string" }, + personaAllMinter: { type: "string" }, + world: { type: "string" }, + diamond: { type: "string" }, + reuseComponents: { type: "boolean" }, + deployerPrivateKey: { type: "string" }, deployClient: { type: "boolean" }, clientUrl: { type: "string" }, netlifySlug: { type: "string" }, netlifyPersonalToken: { type: "string" }, - deployerPrivateKey: { type: "string" }, }); exports.builder = builder; const handler = (args) => __awaiter(void 0, void 0, void 0, function* () { @@ -56,42 +65,16 @@ function isValidHttpUrl(s) { } return url.protocol === "http:" || url.protocol === "https:"; } -exports.isValidHttpUrl = isValidHttpUrl; -const findGameContractAddress = (deployLogLines) => { +function findLog(deployLogLines, log) { for (const logLine of deployLogLines) { - if (logLine.includes("0: address")) { - return logLine.split(" ")[2].trim(); + if (logLine.includes(log)) { + return logLine.split(log)[1].trim(); } } - throw new Error("Expected to find a log line for the deployed game"); -}; -exports.findGameContractAddress = findGameContractAddress; -exports.SUPPORTED_DEPLOYMENT_CHAINS = { - // 69: { - // name: "Optimistic Kovan", - // network: "optimisticKovan", - // rpcUrl: "https://kovan.optimism.io", - // }, - // 300: { - // name: "Optimism Gnosis Chain", - // network: "optimismGnosisChain", - // rpcUrl: "https://optimism.gnosischain.com", - // }, - 31337: { - name: "Local", - network: "localhost", - rpcUrl: "http://localhost:8545/", - chainId: 31337, - }, - 6969: { - name: "Lattice Degen Chain", - network: "ldc", - rpcUrl: "https://degen-chain.lattice.xyz/", - chainId: 6969, - }, -}; + throw new Error("Can not find log"); +} const getDeployInfo = (args) => __awaiter(void 0, void 0, void 0, function* () { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p; + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17; const { default: chalk } = yield importChalk; console.log(); console.log(chalk.bgWhite.black.bold(" == Mud Deployer == ")); @@ -108,123 +91,208 @@ const getDeployInfo = (args) => __awaiter(void 0, void 0, void 0, function* () { const netlifyAPI = new netlify(token); return (yield netlifyAPI.listAccountsForUser()).map((a) => a.slug); }); - const answers = (yield inquirer_1.default.prompt([ - { - type: "list", - name: "chainId", - choices: Object.entries(exports.SUPPORTED_DEPLOYMENT_CHAINS).map(([chainId, network]) => ({ - name: network.name, - value: parseInt(chainId), - })), - message: "Select an available chain", - loop: false, - when: () => args.chainId == null && config.chainId == null, - }, - { - type: "suggest", - name: "deploymentName", - message: "Enter a name for your deployment:", - suggestions: ["mud game"], - validate: (input) => { - if (input.length < 4) { - return "Invalid: 4 characters minimum"; - } - return true; + const defaultOptions = { + chainSpec: "chainSpec.json", + chainId: 31337, + rpc: "http://localhost:8545", + reuseComponents: false, + deployClient: false, + clientUrl: "http://localhost:3000", + }; + const answers = args.i + ? yield inquirer_1.default.prompt([ + { + type: "input", + name: "chainSpec", + default: defaultOptions.chainSpec, + message: "Provide a chainSpec.json location (local or remote)", + when: () => args.chainSpec == null && config.chainSpec == null, }, - when: () => !args.deploymentName && !config.deploymentName, - }, - { - type: "input", - name: "deployerPrivateKey", - message: "Enter private key of the account you want to deploy with:", - when: () => !args.deployerPrivateKey && !config.deployerPrivateKey, - validate: (i) => { - if (i[0] == "0" && i[1] && i.length === 66) - return true; - return "Invalid private key"; + { + type: "number", + name: "chainId", + default: defaultOptions.chainId, + message: "Provide a chainId for the deployment", + when: (answers) => answers.chainSpec == null && args.chainId == null && config.chainSpec == null, }, - }, - { - type: "list", - message: "Would you like to deploy the game client?", - choices: [ - { name: "Yes", value: true }, - { name: "No", value: false }, - ], - default: false, - name: "deployClient", - validate: (i) => { - if (Boolean(i) && config.netlifyPersonalToken && config.netlifyPersonalToken.length === 0) { - return "You don't have a netlify api token. Can't deploy clients using the cli."; - } + { + type: "input", + name: "rpc", + default: defaultOptions.rpc, + message: "Provide a JSON RPC endpoint for your deployment", + when: (answers) => answers.chainSpec == null && args.rpc == null && config.rpc == null, + validate: (i) => { + if (isValidHttpUrl(i)) + return true; + return "Invalid URL"; + }, + }, + { + type: "input", + name: "personaMirror", + message: "Provide the address of an existing PersonaMirror contract. (If none is given, PersonaMirror will be deployed.)", + when: (answers) => answers.chainSpec == null && args.personaMirror == null && config.personaMirror == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) + return true; + return "Invalid address"; + }, + }, + { + type: "input", + name: "persona", + message: "Provide the address of an existing Persona contract. (If none is given, Persona will be deployed.)", + when: (answers) => answers.chainSpec == null && args.persona == null && config.persona == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) + return true; + return "Invalid address"; + }, }, - when: () => args.deployClient == null && config.deployClient == null, - }, - { - type: "input", - name: "netlifyPersonalToken", - message: "Enter your netlify personal token:", - when: (answers) => answers.deployClient && !args.netlifyPersonalToken && !config.netlifyPersonalToken, - validate: (i) => { - if (i[0] == "0" && i[1] && i.length === 66) - return true; - return "Invalid private key"; + { + type: "input", + name: "personaAllMinter", + message: "Provide the address of an existing PersonaAllMinter contract. (If none is given, PersonaAllMinter will be deployed.)", + when: (answers) => answers.chainSpec == null && args.persona == null && config.persona == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) + return true; + return "Invalid address"; + }, }, - }, - { - type: "list", - message: "From which netlify account?", - choices: (answers) => __awaiter(void 0, void 0, void 0, function* () { - var _q, _r; - return yield getNetlifyAccounts((_r = (_q = args.netlifyPersonalToken) !== null && _q !== void 0 ? _q : config.netlifyPersonalToken) !== null && _r !== void 0 ? _r : answers.netlifyPersonalToken); - }), - name: "netlifySlug", - when: (answers) => answers.deployClient && !args.netlifySlug && !config.netlifySlug, - }, - { - type: "input", - name: "clientUrl", - message: "Enter URL of already deployed client:", - when: (answers) => !answers.deployClient && !args.clientUrl && !config.clientUrl, - default: "http://localhost:3000", - validate: (i) => { - if (isValidHttpUrl(i)) { - if (i[i.length - 1] === "/") { - return "No trailing slash"; + { + type: "input", + name: "diamond", + message: "Provide the address of an existing Diamond contract that should be updated. (If none is given, a new Diamond will be deployed.)", + when: () => args.diamond == null && config.diamond == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) + return true; + return "Invalid address"; + }, + }, + { + type: "input", + name: "world", + message: "Provide the address of an existing World contract. (If none is given, a new World will be deployed.)", + when: () => args.world == null && config.world == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) + return true; + return "Invalid address"; + }, + }, + { + type: "list", + name: "reuseComponents", + message: "Reuse existing components?", + choices: [ + { name: "Yes", value: true }, + { name: "No", value: false }, + ], + default: defaultOptions.reuseComponents, + when: () => args.reuseComponents == null && config.reuseComponents == null, + }, + { + type: "input", + name: "deployerPrivateKey", + message: "Enter private key of the deployer account:", + when: () => !args.deployerPrivateKey && !config.deployerPrivateKey, + validate: (i) => { + if (i[0] == "0" && i[1] == "x" && i.length === 66) + return true; + return "Invalid private key"; + }, + }, + { + type: "list", + message: "Deploy the client?", + choices: [ + { name: "Yes", value: true }, + { name: "No", value: false }, + ], + default: defaultOptions.deployClient, + name: "deployClient", + when: () => args.deployClient == null && config.deployClient == null, + }, + { + type: "input", + name: "netlifyPersonalToken", + message: "Enter a netlify personal token for deploying the client:", + when: (answers) => answers.deployClient && !args.netlifyPersonalToken && !config.netlifyPersonalToken, + }, + { + type: "list", + message: "From which netlify account?", + choices: (answers) => __awaiter(void 0, void 0, void 0, function* () { + var _18, _19; + return yield getNetlifyAccounts((_19 = (_18 = args.netlifyPersonalToken) !== null && _18 !== void 0 ? _18 : config.netlifyPersonalToken) !== null && _19 !== void 0 ? _19 : answers.netlifyPersonalToken); + }), + name: "netlifySlug", + when: (answers) => answers.deployClient && !args.netlifySlug && !config.netlifySlug, + }, + { + type: "input", + name: "clientUrl", + message: "Enter URL of an already deployed client:", + when: (answers) => !answers.deployClient && !args.clientUrl && !config.clientUrl, + default: "http://localhost:3000", + validate: (i) => { + if (isValidHttpUrl(i)) { + if (i[i.length - 1] === "/") { + return "No trailing slash"; + } + return true; + } + else { + return "Not a valid URL"; } - return true; - } - else { - return "Not a valid URL"; - } + }, }, - }, - ])); + ]) + : {}; + const { default: fetch } = yield importFetch; + const chainSpecUrl = (_b = (_a = args.chainSpec) !== null && _a !== void 0 ? _a : config.chainSpec) !== null && _b !== void 0 ? _b : answers.chainSpec; + const chainSpec = chainSpecUrl == null + ? null + : isValidHttpUrl(chainSpecUrl) + ? yield (yield fetch(chainSpecUrl)).json() + : JSON.parse(fs_1.default.readFileSync(chainSpecUrl, "utf8")); + // Priority of config source: command line args >> chainSpec >> local config >> interactive answers >> defaults + // -> Command line args can override every other config, interactive questions are only asked if no other config given for this option return { - chainId: (_b = (_a = args.chainId) !== null && _a !== void 0 ? _a : config.chainId) !== null && _b !== void 0 ? _b : answers.chainId, - deploymentName: (_d = (_c = args.deploymentName) !== null && _c !== void 0 ? _c : config.deploymentName) !== null && _d !== void 0 ? _d : answers.deploymentName, - deployerPrivateKey: (_f = (_e = args.deployerPrivateKey) !== null && _e !== void 0 ? _e : config.deployerPrivateKey) !== null && _f !== void 0 ? _f : answers.netlifyPersonalToken, - deployClient: (_h = (_g = args.deployClient) !== null && _g !== void 0 ? _g : config.deployClient) !== null && _h !== void 0 ? _h : answers.deployClient, - netlifySlug: (_k = (_j = args.netlifySlug) !== null && _j !== void 0 ? _j : config.netlifySlug) !== null && _k !== void 0 ? _k : answers.netlifySlug, - clientUrl: (_m = (_l = args.clientUrl) !== null && _l !== void 0 ? _l : config.clientUrl) !== null && _m !== void 0 ? _m : answers.clientUrl, - netlifyPersonalToken: (_p = (_o = args.netlifyPersonalToken) !== null && _o !== void 0 ? _o : config.netlifyPersonalToken) !== null && _p !== void 0 ? _p : answers.netlifyPersonalToken, + chainSpec: (_e = (_d = (_c = args.chainSpec) !== null && _c !== void 0 ? _c : config.chainSpec) !== null && _d !== void 0 ? _d : answers.chainSpec) !== null && _e !== void 0 ? _e : defaultOptions.chainSpec, + chainId: (_j = (_h = (_g = (_f = args.chainId) !== null && _f !== void 0 ? _f : chainSpec === null || chainSpec === void 0 ? void 0 : chainSpec.chainId) !== null && _g !== void 0 ? _g : config.chainId) !== null && _h !== void 0 ? _h : answers.chainId) !== null && _j !== void 0 ? _j : defaultOptions.chainId, + rpc: (_o = (_m = (_l = (_k = args.rpc) !== null && _k !== void 0 ? _k : chainSpec === null || chainSpec === void 0 ? void 0 : chainSpec.rpc) !== null && _l !== void 0 ? _l : config.rpc) !== null && _m !== void 0 ? _m : answers.rpc) !== null && _o !== void 0 ? _o : defaultOptions.rpc, + personaMirror: (_r = (_q = (_p = args.personaMirror) !== null && _p !== void 0 ? _p : chainSpec === null || chainSpec === void 0 ? void 0 : chainSpec.personaMirrorAddress) !== null && _q !== void 0 ? _q : config.personaMirror) !== null && _r !== void 0 ? _r : answers.personaMirror, + personaAllMinter: (_u = (_t = (_s = args.personaAllMinter) !== null && _s !== void 0 ? _s : chainSpec === null || chainSpec === void 0 ? void 0 : chainSpec.personaAllMinterAddress) !== null && _t !== void 0 ? _t : config.personaAllMinter) !== null && _u !== void 0 ? _u : answers.personaAllMinter, + persona: (_x = (_w = (_v = args.persona) !== null && _v !== void 0 ? _v : chainSpec === null || chainSpec === void 0 ? void 0 : chainSpec.personaAddress) !== null && _w !== void 0 ? _w : config.persona) !== null && _x !== void 0 ? _x : answers.persona, + world: (_0 = (_z = (_y = args.world) !== null && _y !== void 0 ? _y : chainSpec === null || chainSpec === void 0 ? void 0 : chainSpec.world) !== null && _z !== void 0 ? _z : config.world) !== null && _0 !== void 0 ? _0 : answers.world, + diamond: (_2 = (_1 = args.diamond) !== null && _1 !== void 0 ? _1 : config.diamond) !== null && _2 !== void 0 ? _2 : answers.diamond, + reuseComponents: (_5 = (_4 = (_3 = args.reuseComponents) !== null && _3 !== void 0 ? _3 : config.reuseComponents) !== null && _4 !== void 0 ? _4 : answers.reuseComponents) !== null && _5 !== void 0 ? _5 : defaultOptions.reuseComponents, + deployerPrivateKey: (_7 = (_6 = args.deployerPrivateKey) !== null && _6 !== void 0 ? _6 : config.deployerPrivateKey) !== null && _7 !== void 0 ? _7 : answers.deployerPrivateKey, + deployClient: (_10 = (_9 = (_8 = args.deployClient) !== null && _8 !== void 0 ? _8 : config.deployClient) !== null && _9 !== void 0 ? _9 : answers.deployClient) !== null && _10 !== void 0 ? _10 : defaultOptions.deployClient, + clientUrl: (_13 = (_12 = (_11 = args.clientUrl) !== null && _11 !== void 0 ? _11 : config.clientUrl) !== null && _12 !== void 0 ? _12 : answers.clientUrl) !== null && _13 !== void 0 ? _13 : defaultOptions.clientUrl, + netlifySlug: (_15 = (_14 = args.netlifySlug) !== null && _14 !== void 0 ? _14 : config.netlifySlug) !== null && _15 !== void 0 ? _15 : answers.netlifySlug, + netlifyPersonalToken: (_17 = (_16 = args.netlifyPersonalToken) !== null && _16 !== void 0 ? _16 : config.netlifyPersonalToken) !== null && _17 !== void 0 ? _17 : answers.netlifyPersonalToken, }; }); const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { const { default: chalk } = yield importChalk; const { execa } = yield importExeca; console.log(); - console.log(chalk.yellow(`>> Deploying ${chalk.bgYellow.black.bold(" " + options.deploymentName + " ")} <<`)); + console.log(chalk.yellow(`>> Deploying contracts <<`)); + console.log("Options"); + console.log(options); const wallet = new ethers_1.ethers.Wallet(options.deployerPrivateKey); console.log(chalk.red(`>> Deployer address: ${chalk.bgYellow.black.bold(" " + wallet.address + " ")} <<`)); console.log(); - const network = exports.SUPPORTED_DEPLOYMENT_CHAINS[options.chainId]; const logger = new listr2_1.Logger({ useIcons: true }); const { NetlifyAPI: netlify } = yield importNetlify; const netlifyAPI = options.deployClient && new netlify(options.netlifyPersonalToken); const id = (0, uuid_1.v4)().substring(0, 6); - let gameContractAddress = undefined; - let gameClientUrl = undefined; + let launcherUrl; + let gameContractAddress; try { const tasks = new listr2_1.Listr([ { @@ -242,17 +310,23 @@ const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { "--private-keys", wallet.privateKey, "--sig", - "deployEmber(address)", + "deployEmber(address,address,address,address,bool)", wallet.address, + options.personaMirror || ethers_1.constants.AddressZero, + options.diamond || ethers_1.constants.AddressZero, + options.world || ethers_1.constants.AddressZero, + options.reuseComponents ? "true" : "false", "--fork-url", - network.rpcUrl, + options.rpc, ]); (_a = child.stdout) === null || _a === void 0 ? void 0 : _a.pipe(task.stdout()); const { stdout } = yield child; const lines = stdout.split("\n"); - gameContractAddress = (0, exports.findGameContractAddress)(lines); - ctx.gameContractAddress = gameContractAddress; - task.output = chalk.yellow(`Game deployed at: ${chalk.bgYellow.black(gameContractAddress)} on chain: ${chalk.bgYellow.black(network.name)}`); + ctx.gameContractAddress = gameContractAddress = findLog(lines, "diamond: address"); + ctx.personaAddress = findLog(lines, "persona: address"); + ctx.personaMirrorAddress = findLog(lines, "personaMirror: address"); + ctx.personaAllMinterAddress = findLog(lines, "personaAllMinter: address"); + task.output = chalk.yellow(`Game deployed at: ${chalk.bgYellow.black(gameContractAddress)}`); }), options: { bottomBar: 3 }, }, @@ -265,7 +339,7 @@ const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { task: (_, task) => __awaiter(void 0, void 0, void 0, function* () { const time = Date.now(); task.output = "Building local client..."; - const child = execa("yarn", ["workspace", "client", "build"]); + const child = execa("yarn", ["workspace", "ri-client", "build"]); yield child; const duration = Date.now() - time; task.output = "Client built in " + Math.round(duration / 1000) + "s"; @@ -278,7 +352,7 @@ const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { task: (ctx, task) => __awaiter(void 0, void 0, void 0, function* () { const site = yield netlifyAPI.createSite({ body: { - name: `lattice-starterkit-deployment-${wallet.address.substring(2, 8)}-${id}`, + name: `mud-deployment-${wallet.address.substring(2, 8)}-${id}`, account_slug: options.netlifySlug, ssl: true, force_ssl: true, @@ -286,7 +360,6 @@ const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { }); ctx.siteId = site.id; ctx.clientUrl = site.ssl_url; - gameClientUrl = site.ssl_url; task.output = "Netlify site created with id: " + chalk.bgYellow.black(site.id); }), skip: () => !options.deployClient, @@ -313,12 +386,11 @@ const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { }, }, { - title: "Redirect to Lattice Launcher", + title: "Open Launcher", task: (ctx) => __awaiter(void 0, void 0, void 0, function* () { - const gameContractAddress = ctx.gameContractAddress; const clientUrl = options.deployClient ? ctx.clientUrl : options.clientUrl; - const deepLinkURI = `lattice://deployFromCLI?gameContractAddress=${gameContractAddress}&chainId=${options.chainId}&clientUrl=${clientUrl}&name=${options.deploymentName}`; - openurl_1.default.open(deepLinkURI); + launcherUrl = `https://play.lattice.xyz?address=${ctx.gameContractAddress || ""}&personaMirrorAddress=${ctx.personaMirrorAddress || ""}&personaAddress=${options.persona || ctx.personaAddress || ""}&personaAllMinterAddress=${options.personaAllMinter || ctx.personaAllMinterAddress || ""}&client=${clientUrl || ""}&rpc=${options.rpc || ""}&chainId=${options.chainId || ""}`; + openurl_1.default.open(launcherUrl); }), options: { bottomBar: 3 }, }, @@ -327,11 +399,10 @@ const deploy = (options) => __awaiter(void 0, void 0, void 0, function* () { }, ]); yield tasks.run(); - console.log(); console.log(chalk.bgGreen.black.bold(" Congratulations! Deployment successful")); console.log(); - console.log(chalk.green(`Game contract deployed to ${gameContractAddress}`)); - console.log(chalk.green(`Game client deployed to ${gameClientUrl}`)); + console.log(chalk.green(`Contract deployed to ${gameContractAddress}`)); + console.log(chalk.green(`Open launcher at ${launcherUrl}`)); console.log(); } catch (e) { diff --git a/packages/cli/build/commands/hello.js b/packages/cli/build/commands/hello.js index 1cdd82ff7d..92fe8cc813 100644 --- a/packages/cli/build/commands/hello.js +++ b/packages/cli/build/commands/hello.js @@ -11,7 +11,7 @@ const builder = (yargs) => yargs exports.builder = builder; const handler = (argv) => { const { name } = argv; - const greeting = `Hello, ${name}!`; + const greeting = `Gm, ${name}!`; console.log(greeting); process.exit(0); }; diff --git a/packages/cli/package.json b/packages/cli/package.json index 7c4cc4fcce..0c28a61681 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -46,6 +46,7 @@ "inquirer-prompt-suggest": "^0.1.0", "listr2": "^4.0.5", "netlify": "^11.0.1", + "node-fetch": "^3.2.6", "openurl": "^1.1.1", "path": "^0.12.7", "uuid": "^8.3.2", diff --git a/packages/cli/src/commands/deploy.ts b/packages/cli/src/commands/deploy.ts index e317fc19d5..500453ee3b 100644 --- a/packages/cli/src/commands/deploy.ts +++ b/packages/cli/src/commands/deploy.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // eslint-disable-next-line @typescript-eslint/no-var-requires -import { ethers } from "ethers"; +import { constants, ethers } from "ethers"; import inquirer from "inquirer"; import { v4 } from "uuid"; import { Listr, Logger } from "listr2"; @@ -11,27 +11,29 @@ import ips from "inquirer-prompt-suggest"; import { Arguments, CommandBuilder } from "yargs"; inquirer.registerPrompt("suggest", ips); -// Workaround to prevent tsc to transpole dynamic imports with require, which causes an error upstream +// Workaround to prevent tsc to transpile dynamic imports with require, which causes an error upstream // https://github.com/microsoft/TypeScript/issues/43329#issuecomment-922544562 const importNetlify = eval('import("netlify")') as Promise; const importChalk = eval('import("chalk")') as Promise; const importExeca = eval('import("execa")') as Promise; +const importFetch = eval('import("node-fetch")') as Promise; interface Options { + i?: boolean; + chainSpec?: string; chainId?: number; - deploymentName?: string; + rpc?: string; + personaMirror?: string; + personaAllMinter?: string; + persona?: string; + world?: string; + diamond?: string; + reuseComponents?: boolean; + deployerPrivateKey?: string; deployClient?: boolean; clientUrl?: string; netlifySlug?: string; netlifyPersonalToken?: string; - deployerPrivateKey?: string; -} - -interface Network { - network: string; - name: string; - rpcUrl: string; - chainId: number; } export const command = "deploy"; @@ -39,13 +41,21 @@ export const desc = "Deploys the local mud contracts and optionally the client"; export const builder: CommandBuilder = (yargs) => yargs.options({ + i: { type: "boolean" }, + chainSpec: { type: "string" }, chainId: { type: "number" }, - deploymentName: { type: "string" }, + rpc: { type: "string" }, + personaMirror: { type: "string" }, + persona: { type: "string" }, + personaAllMinter: { type: "string" }, + world: { type: "string" }, + diamond: { type: "string" }, + reuseComponents: { type: "boolean" }, + deployerPrivateKey: { type: "string" }, deployClient: { type: "boolean" }, clientUrl: { type: "string" }, netlifySlug: { type: "string" }, netlifyPersonalToken: { type: "string" }, - deployerPrivateKey: { type: "string" }, }); export const handler = async (args: Arguments): Promise => { @@ -53,7 +63,7 @@ export const handler = async (args: Arguments): Promise => { await deploy(info); }; -export function isValidHttpUrl(s: string): boolean { +function isValidHttpUrl(s: string): boolean { let url: URL | undefined; try { @@ -65,39 +75,14 @@ export function isValidHttpUrl(s: string): boolean { return url.protocol === "http:" || url.protocol === "https:"; } -export const findGameContractAddress = (deployLogLines: string[]): string => { +function findLog(deployLogLines: string[], log: string): string { for (const logLine of deployLogLines) { - if (logLine.includes("0: address")) { - return logLine.split(" ")[2].trim(); + if (logLine.includes(log)) { + return logLine.split(log)[1].trim(); } } - throw new Error("Expected to find a log line for the deployed game"); -}; - -export const SUPPORTED_DEPLOYMENT_CHAINS: { [key: number]: Network } = { - // 69: { - // name: "Optimistic Kovan", - // network: "optimisticKovan", - // rpcUrl: "https://kovan.optimism.io", - // }, - // 300: { - // name: "Optimism Gnosis Chain", - // network: "optimismGnosisChain", - // rpcUrl: "https://optimism.gnosischain.com", - // }, - 31337: { - name: "Local", - network: "localhost", - rpcUrl: "http://localhost:8545/", - chainId: 31337, - }, - 6969: { - name: "Lattice Degen Chain", - network: "ldc", - rpcUrl: "https://degen-chain.lattice.xyz/", - chainId: 6969, - }, -}; + throw new Error("Can not find log"); +} const getDeployInfo: (args: Arguments) => Promise = async (args) => { const { default: chalk } = await importChalk; @@ -117,103 +102,197 @@ const getDeployInfo: (args: Arguments) => Promise = async (arg const netlifyAPI = new netlify(token); return (await netlifyAPI.listAccountsForUser()).map((a: { slug: string }) => a.slug); }; - const answers: Options = (await inquirer.prompt([ - { - type: "list", - name: "chainId", - choices: Object.entries(SUPPORTED_DEPLOYMENT_CHAINS).map(([chainId, network]) => ({ - name: network.name, - value: parseInt(chainId), - })), - message: "Select an available chain", - loop: false, - when: () => args.chainId == null && config.chainId == null, - }, - { - type: "suggest", - name: "deploymentName", - message: "Enter a name for your deployment:", - suggestions: ["mud game"], - validate: (input: string) => { - if (input.length < 4) { - return "Invalid: 4 characters minimum"; - } - return true; - }, - when: () => !args.deploymentName && !config.deploymentName, - }, - { - type: "input", - name: "deployerPrivateKey", - message: "Enter private key of the account you want to deploy with:", - when: () => !args.deployerPrivateKey && !config.deployerPrivateKey, - validate: (i) => { - if (i[0] == "0" && i[1] && i.length === 66) return true; - return "Invalid private key"; - }, - }, - { - type: "list", - message: "Would you like to deploy the game client?", - choices: [ - { name: "Yes", value: true }, - { name: "No", value: false }, - ], - default: false, - name: "deployClient", - validate: (i) => { - if (Boolean(i) && config.netlifyPersonalToken && config.netlifyPersonalToken.length === 0) { - return "You don't have a netlify api token. Can't deploy clients using the cli."; - } - }, - when: () => args.deployClient == null && config.deployClient == null, - }, - { - type: "input", - name: "netlifyPersonalToken", - message: "Enter your netlify personal token:", - when: (answers) => answers.deployClient && !args.netlifyPersonalToken && !config.netlifyPersonalToken, - validate: (i) => { - if (i[0] == "0" && i[1] && i.length === 66) return true; - return "Invalid private key"; - }, - }, - { - type: "list", - message: "From which netlify account?", - choices: async (answers) => - await getNetlifyAccounts( - args.netlifyPersonalToken ?? config.netlifyPersonalToken ?? answers.netlifyPersonalToken! - ), - name: "netlifySlug", - when: (answers) => answers.deployClient && !args.netlifySlug && !config.netlifySlug, - }, - { - type: "input", - name: "clientUrl", - message: "Enter URL of already deployed client:", - when: (answers) => !answers.deployClient && !args.clientUrl && !config.clientUrl, - default: "http://localhost:3000", - validate: (i) => { - if (isValidHttpUrl(i)) { - if (i[i.length - 1] === "/") { - return "No trailing slash"; - } - return true; - } else { - return "Not a valid URL"; - } - }, - }, - ])) as Options; + + const defaultOptions: Options = { + chainSpec: "chainSpec.json", + chainId: 31337, + rpc: "http://localhost:8545", + reuseComponents: false, + deployClient: false, + clientUrl: "http://localhost:3000", + }; + + const answers: Options = args.i + ? await inquirer.prompt([ + { + type: "input", + name: "chainSpec", + default: defaultOptions.chainSpec, + message: "Provide a chainSpec.json location (local or remote)", + when: () => args.chainSpec == null && config.chainSpec == null, + }, + { + type: "number", + name: "chainId", + default: defaultOptions.chainId, + message: "Provide a chainId for the deployment", + when: (answers) => answers.chainSpec == null && args.chainId == null && config.chainSpec == null, + }, + { + type: "input", + name: "rpc", + default: defaultOptions.rpc, + message: "Provide a JSON RPC endpoint for your deployment", + when: (answers) => answers.chainSpec == null && args.rpc == null && config.rpc == null, + validate: (i) => { + if (isValidHttpUrl(i)) return true; + return "Invalid URL"; + }, + }, + { + type: "input", + name: "personaMirror", + message: + "Provide the address of an existing PersonaMirror contract. (If none is given, PersonaMirror will be deployed.)", + when: (answers) => answers.chainSpec == null && args.personaMirror == null && config.personaMirror == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) return true; + return "Invalid address"; + }, + }, + { + type: "input", + name: "persona", + message: "Provide the address of an existing Persona contract. (If none is given, Persona will be deployed.)", + when: (answers) => answers.chainSpec == null && args.persona == null && config.persona == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) return true; + return "Invalid address"; + }, + }, + { + type: "input", + name: "personaAllMinter", + message: + "Provide the address of an existing PersonaAllMinter contract. (If none is given, PersonaAllMinter will be deployed.)", + when: (answers) => answers.chainSpec == null && args.persona == null && config.persona == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) return true; + return "Invalid address"; + }, + }, + { + type: "input", + name: "diamond", + message: + "Provide the address of an existing Diamond contract that should be updated. (If none is given, a new Diamond will be deployed.)", + when: () => args.diamond == null && config.diamond == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) return true; + return "Invalid address"; + }, + }, + { + type: "input", + name: "world", + message: + "Provide the address of an existing World contract. (If none is given, a new World will be deployed.)", + when: () => args.world == null && config.world == null, + validate: (i) => { + if (!i || (i[0] == "0" && i[1] == "x" && i.length === 42)) return true; + return "Invalid address"; + }, + }, + { + type: "list", + name: "reuseComponents", + message: "Reuse existing components?", + choices: [ + { name: "Yes", value: true }, + { name: "No", value: false }, + ], + default: defaultOptions.reuseComponents, + when: () => args.reuseComponents == null && config.reuseComponents == null, + }, + { + type: "input", + name: "deployerPrivateKey", + message: "Enter private key of the deployer account:", + when: () => !args.deployerPrivateKey && !config.deployerPrivateKey, + validate: (i) => { + if (i[0] == "0" && i[1] == "x" && i.length === 66) return true; + return "Invalid private key"; + }, + }, + { + type: "list", + message: "Deploy the client?", + choices: [ + { name: "Yes", value: true }, + { name: "No", value: false }, + ], + default: defaultOptions.deployClient, + name: "deployClient", + when: () => args.deployClient == null && config.deployClient == null, + }, + { + type: "input", + name: "netlifyPersonalToken", + message: "Enter a netlify personal token for deploying the client:", + when: (answers) => answers.deployClient && !args.netlifyPersonalToken && !config.netlifyPersonalToken, + }, + { + type: "list", + message: "From which netlify account?", + choices: async (answers) => + await getNetlifyAccounts( + args.netlifyPersonalToken ?? config.netlifyPersonalToken ?? answers.netlifyPersonalToken! + ), + name: "netlifySlug", + when: (answers) => answers.deployClient && !args.netlifySlug && !config.netlifySlug, + }, + { + type: "input", + name: "clientUrl", + message: "Enter URL of an already deployed client:", + when: (answers) => !answers.deployClient && !args.clientUrl && !config.clientUrl, + default: "http://localhost:3000", + validate: (i) => { + if (isValidHttpUrl(i)) { + if (i[i.length - 1] === "/") { + return "No trailing slash"; + } + return true; + } else { + return "Not a valid URL"; + } + }, + }, + ]) + : ({} as Options); + + const { default: fetch } = await importFetch; + const chainSpecUrl = args.chainSpec ?? config.chainSpec ?? answers.chainSpec; + const chainSpec = + chainSpecUrl == null + ? null + : isValidHttpUrl(chainSpecUrl) + ? await (await fetch(chainSpecUrl)).json() + : JSON.parse(fs.readFileSync(chainSpecUrl, "utf8")); + + // Priority of config source: command line args >> chainSpec >> local config >> interactive answers >> defaults + // -> Command line args can override every other config, interactive questions are only asked if no other config given for this option return { - chainId: args.chainId ?? config.chainId ?? answers.chainId, - deploymentName: args.deploymentName ?? config.deploymentName ?? answers.deploymentName, - deployerPrivateKey: args.deployerPrivateKey ?? config.deployerPrivateKey ?? answers.netlifyPersonalToken, - deployClient: args.deployClient ?? config.deployClient ?? answers.deployClient, + chainSpec: args.chainSpec ?? config.chainSpec ?? answers.chainSpec ?? defaultOptions.chainSpec, + chainId: args.chainId ?? chainSpec?.chainId ?? config.chainId ?? answers.chainId ?? defaultOptions.chainId, + rpc: args.rpc ?? chainSpec?.rpc ?? config.rpc ?? answers.rpc ?? defaultOptions.rpc, + personaMirror: + args.personaMirror ?? chainSpec?.personaMirrorAddress ?? config.personaMirror ?? answers.personaMirror, + personaAllMinter: + args.personaAllMinter ?? + chainSpec?.personaAllMinterAddress ?? + config.personaAllMinter ?? + answers.personaAllMinter, + persona: args.persona ?? chainSpec?.personaAddress ?? config.persona ?? answers.persona, + world: args.world ?? chainSpec?.world ?? config.world ?? answers.world, + diamond: args.diamond ?? config.diamond ?? answers.diamond, + reuseComponents: + args.reuseComponents ?? config.reuseComponents ?? answers.reuseComponents ?? defaultOptions.reuseComponents, + deployerPrivateKey: args.deployerPrivateKey ?? config.deployerPrivateKey ?? answers.deployerPrivateKey, + deployClient: args.deployClient ?? config.deployClient ?? answers.deployClient ?? defaultOptions.deployClient, + clientUrl: args.clientUrl ?? config.clientUrl ?? answers.clientUrl ?? defaultOptions.clientUrl, netlifySlug: args.netlifySlug ?? config.netlifySlug ?? answers.netlifySlug, - clientUrl: args.clientUrl ?? config.clientUrl ?? answers.clientUrl, netlifyPersonalToken: args.netlifyPersonalToken ?? config.netlifyPersonalToken ?? answers.netlifyPersonalToken, }; }; @@ -222,13 +301,15 @@ export const deploy = async (options: Options) => { const { default: chalk } = await importChalk; const { execa } = await importExeca; console.log(); - console.log(chalk.yellow(`>> Deploying ${chalk.bgYellow.black.bold(" " + options.deploymentName + " ")} <<`)); + console.log(chalk.yellow(`>> Deploying contracts <<`)); + + console.log("Options"); + console.log(options); const wallet = new ethers.Wallet(options.deployerPrivateKey!); console.log(chalk.red(`>> Deployer address: ${chalk.bgYellow.black.bold(" " + wallet.address + " ")} <<`)); console.log(); - const network = SUPPORTED_DEPLOYMENT_CHAINS[options.chainId!]; const logger = new Logger({ useIcons: true }); const { NetlifyAPI: netlify } = await importNetlify; @@ -236,8 +317,8 @@ export const deploy = async (options: Options) => { const netlifyAPI = options.deployClient && new netlify(options.netlifyPersonalToken); const id = v4().substring(0, 6); - let gameContractAddress: string | undefined = undefined; - let gameClientUrl: string | undefined = undefined; + let launcherUrl; + let gameContractAddress; try { const tasks = new Listr([ @@ -256,23 +337,25 @@ export const deploy = async (options: Options) => { "--private-keys", wallet.privateKey, "--sig", - "deployEmber(address)", + "deployEmber(address,address,address,address,bool)", wallet.address, + options.personaMirror || constants.AddressZero, + options.diamond || constants.AddressZero, + options.world || constants.AddressZero, + options.reuseComponents ? "true" : "false", "--fork-url", - network.rpcUrl, + options.rpc!, ]); child.stdout?.pipe(task.stdout()); const { stdout } = await child; const lines = stdout.split("\n"); - gameContractAddress = findGameContractAddress(lines); - ctx.gameContractAddress = gameContractAddress; + ctx.gameContractAddress = gameContractAddress = findLog(lines, "diamond: address"); + ctx.personaAddress = findLog(lines, "persona: address"); + ctx.personaMirrorAddress = findLog(lines, "personaMirror: address"); + ctx.personaAllMinterAddress = findLog(lines, "personaAllMinter: address"); - task.output = chalk.yellow( - `Game deployed at: ${chalk.bgYellow.black(gameContractAddress)} on chain: ${chalk.bgYellow.black( - network.name - )}` - ); + task.output = chalk.yellow(`Game deployed at: ${chalk.bgYellow.black(gameContractAddress)}`); }, options: { bottomBar: 3 }, }, @@ -286,7 +369,7 @@ export const deploy = async (options: Options) => { task: async (_, task) => { const time = Date.now(); task.output = "Building local client..."; - const child = execa("yarn", ["workspace", "client", "build"]); + const child = execa("yarn", ["workspace", "ri-client", "build"]); await child; const duration = Date.now() - time; task.output = "Client built in " + Math.round(duration / 1000) + "s"; @@ -299,7 +382,7 @@ export const deploy = async (options: Options) => { task: async (ctx, task) => { const site = await netlifyAPI.createSite({ body: { - name: `lattice-starterkit-deployment-${wallet.address.substring(2, 8)}-${id}`, + name: `mud-deployment-${wallet.address.substring(2, 8)}-${id}`, account_slug: options.netlifySlug, ssl: true, force_ssl: true, @@ -307,8 +390,6 @@ export const deploy = async (options: Options) => { }); ctx.siteId = site.id; ctx.clientUrl = site.ssl_url; - gameClientUrl = site.ssl_url; - task.output = "Netlify site created with id: " + chalk.bgYellow.black(site.id); }, skip: () => !options.deployClient, @@ -336,12 +417,17 @@ export const deploy = async (options: Options) => { }, }, { - title: "Redirect to Lattice Launcher", + title: "Open Launcher", task: async (ctx) => { - const gameContractAddress = ctx.gameContractAddress; const clientUrl = options.deployClient ? ctx.clientUrl : options.clientUrl; - const deepLinkURI = `lattice://deployFromCLI?gameContractAddress=${gameContractAddress}&chainId=${options.chainId}&clientUrl=${clientUrl}&name=${options.deploymentName}`; - openurl.open(deepLinkURI); + launcherUrl = `https://play.lattice.xyz?address=${ + ctx.gameContractAddress || "" + }&personaMirrorAddress=${ctx.personaMirrorAddress || ""}&personaAddress=${ + options.persona || ctx.personaAddress || "" + }&personaAllMinterAddress=${options.personaAllMinter || ctx.personaAllMinterAddress || ""}&client=${ + clientUrl || "" + }&rpc=${options.rpc || ""}&chainId=${options.chainId || ""}`; + openurl.open(launcherUrl); }, options: { bottomBar: 3 }, }, @@ -352,11 +438,10 @@ export const deploy = async (options: Options) => { }, ]); await tasks.run(); - console.log(); console.log(chalk.bgGreen.black.bold(" Congratulations! Deployment successful")); console.log(); - console.log(chalk.green(`Game contract deployed to ${gameContractAddress}`)); - console.log(chalk.green(`Game client deployed to ${gameClientUrl}`)); + console.log(chalk.green(`Contract deployed to ${gameContractAddress}`)); + console.log(chalk.green(`Open launcher at ${launcherUrl}`)); console.log(); } catch (e) { logger.fail((e as Error).message); diff --git a/packages/cli/src/commands/hello.ts b/packages/cli/src/commands/hello.ts index bc7b812cd2..7099cded1e 100644 --- a/packages/cli/src/commands/hello.ts +++ b/packages/cli/src/commands/hello.ts @@ -17,7 +17,7 @@ export const builder: CommandBuilder = (yargs) => export const handler = (argv: Arguments): void => { const { name } = argv; - const greeting = `Hello, ${name}!`; + const greeting = `Gm, ${name}!`; console.log(greeting); process.exit(0); }; diff --git a/packages/persona-js/src/Persona.ts b/packages/persona-js/src/Persona.ts index 0b9accacfe..89bc5358de 100644 --- a/packages/persona-js/src/Persona.ts +++ b/packages/persona-js/src/Persona.ts @@ -53,11 +53,14 @@ export function Persona({ personaAddress, personaAllMinterAddress, personaMirror return tx.wait(); } - async function mintAndBurner(consumer: string): Promise<{ personaId: number; burnerWallet: Wallet }> { - const personaId = await mintPersona(); + async function mintAndBurner( + consumer: string, + overrides?: Overrides + ): Promise<{ personaId: number; burnerWallet: Wallet }> { + const personaId = await mintPersona(overrides); const burnerWallet = Wallet.createRandom().connect(provider); - await authorize(personaId, burnerWallet.address, consumer); - await impersonate(burnerWallet, personaId, consumer); + await authorize(personaId, burnerWallet.address, consumer, overrides); + await impersonate(burnerWallet, personaId, consumer, overrides); return { personaId, burnerWallet }; } diff --git a/packages/ri/client/package.json b/packages/ri/client/package.json index 56712e80f5..4bb617ce98 100644 --- a/packages/ri/client/package.json +++ b/packages/ri/client/package.json @@ -49,7 +49,7 @@ "test": "jest", "lint": "eslint . --fix --ext .ts", "prettier": "prettier --write '**/*.{ts,tsx}'", - "start:dev": "vite", + "start": "vite --force", "build": "vite build", "start:prod": "vite preview", "test:performance": "cypress run", diff --git a/packages/ri/client/src/boot.tsx b/packages/ri/client/src/boot.tsx index f6ad4829c4..84e889a8d9 100644 --- a/packages/ri/client/src/boot.tsx +++ b/packages/ri/client/src/boot.tsx @@ -41,7 +41,7 @@ async function bootLayers() { const chainIdString = params.get("chainId"); const personaIdString = params.get("personaId"); const jsonRpc = params.get("rpc") || undefined; - const wsRpc = params.get("wsRpc") || (jsonRpc && jsonRpc.replace("http", "ws")); + const wsRpc = params.get("wsRpc") || undefined; // || (jsonRpc && jsonRpc.replace("http", "ws")); const checkpointUrl = params.get("checkpoint") || undefined; const devMode = params.get("dev") === "true" || false; diff --git a/packages/ri/client/src/layers/Network/createNetworkLayer.ts b/packages/ri/client/src/layers/Network/createNetworkLayer.ts index 035fc3619b..94bafd1799 100644 --- a/packages/ri/client/src/layers/Network/createNetworkLayer.ts +++ b/packages/ri/client/src/layers/Network/createNetworkLayer.ts @@ -58,7 +58,7 @@ export async function createNetworkLayer(config?: NetworkLayerConfig) { Stamina: defineComponent( world, { current: Type.Number, max: Type.Number, regeneration: Type.Number }, - { id: "Stamina", metadata: { contractId: keccak256("ember.component.staminaComponent") } } + { id: "Stamina", metadata: { contractId: keccak256("ember.component.personaComponent") } } ), LastActionTurn: defineComponent( world, diff --git a/packages/ri/contracts/.gitignore b/packages/ri/contracts/.gitignore index d3dfa2db4d..0b7f284a82 100644 --- a/packages/ri/contracts/.gitignore +++ b/packages/ri/contracts/.gitignore @@ -7,3 +7,4 @@ artifacts/ deployments abi/ types/ethers-contracts/ +broadcast/ \ No newline at end of file diff --git a/packages/ri/contracts/chainSpec.json b/packages/ri/contracts/chainSpec.json new file mode 100644 index 0000000000..16a378f46a --- /dev/null +++ b/packages/ri/contracts/chainSpec.json @@ -0,0 +1,5 @@ +{ + "chainId": 31337, + "rpc": "http://localhost:8545", + "wsRpc": "ws://localhost:8545" +} diff --git a/packages/ri/contracts/deploy-utils/accessControllers.ts b/packages/ri/contracts/deploy-utils/accessControllers.ts deleted file mode 100644 index e8d5814e86..0000000000 --- a/packages/ri/contracts/deploy-utils/accessControllers.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { blue } from "colorette"; -import { CombinedFacets } from "../types/ethers-contracts"; - -export const deployAccessController = async function ( - hre: HardhatRuntimeEnvironment, - diamond: CombinedFacets, - name: string -) { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - - console.log(blue("Deploying Access Controller: " + name)); - const { address, newlyDeployed } = await deploy(name, { - from: deployer, - log: true, - autoMine: true, - args: [], - }); - if (newlyDeployed) { - console.log(blue("Registering access controller")); - const tx = await diamond.registerAccessControllerExternally(address); - await tx.wait(); - } -}; diff --git a/packages/ri/contracts/deploy-utils/components.ts b/packages/ri/contracts/deploy-utils/components.ts deleted file mode 100644 index b395dcc560..0000000000 --- a/packages/ri/contracts/deploy-utils/components.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { blue } from "colorette"; - -export const deployComponent = async function ( - hre: HardhatRuntimeEnvironment, - world: string, - diamondAddress: string, - name: string -) { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - - console.log(blue("Deploying Component: " + name)); - const { newlyDeployed } = await deploy(name, { - from: deployer, - log: true, - autoMine: true, - args: [world], - }); - - if (newlyDeployed) { - console.log(blue("Transferring ownership")); - const component = await hre.ethers.getContract(name, deployer); - const owner = await component.owner(); - - console.log("Current owner: ", owner); - console.log("Deployer: ", deployer); - if (deployer !== owner) { - console.log("Deployer is not owner, abort transferring ownership"); - return; - } - - const tx = await component.transferOwnership(diamondAddress); - await tx.wait(); - } -}; diff --git a/packages/ri/contracts/deploy-utils/contentCreators.ts b/packages/ri/contracts/deploy-utils/contentCreators.ts deleted file mode 100644 index 323a203558..0000000000 --- a/packages/ri/contracts/deploy-utils/contentCreators.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { blue } from "colorette"; -import { CombinedFacets } from "../types/ethers-contracts"; - -export const deployContentCreator = async function ( - hre: HardhatRuntimeEnvironment, - diamond: CombinedFacets, - name: string -) { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - - console.log(blue("Deploying Content Creator: " + name)); - const { address, newlyDeployed } = await deploy(name, { - from: deployer, - log: true, - autoMine: true, - args: [], - }); - if (newlyDeployed) { - console.log(blue("Registering content creator")); - const tx = await diamond.registerContentCreatorExternally(address); - await tx.wait(); - } -}; diff --git a/packages/ri/contracts/deploy.json b/packages/ri/contracts/deploy.json new file mode 100644 index 0000000000..3a150f6b0e --- /dev/null +++ b/packages/ri/contracts/deploy.json @@ -0,0 +1,45 @@ +{ + "components": [ + "EmbodiedSystemArgumentComponent", + "EntityTypeComponent", + "GameConfigComponent", + "LastActionTurnComponent", + "LearnedSpellsComponent", + "MaxDistanceComponent", + "MineableComponent", + "MovableComponent", + "OwnedByComponent", + "PersonaComponent", + "PositionComponent", + "SpellComponent", + "StaminaComponent", + "UntraversableComponent" + ], + "facets": [ + { + "name": "InitializeFacet", + "functions": [ + "initializeExternally", + "configureWorld", + "registerAccessControllerExternally", + "registerContentCreatorExternally", + "registerEmbodiedSystemExternally" + ] + }, + { "name": "EmberFacet", "functions": ["world"] }, + { + "name": "DebugFacet", + "functions": [ + "addComponentToEntityExternally", + "removeComponentFromEntityExternally", + "callerEntityID", + "bulkSetState", + "entryPoint" + ] + }, + { + "name": "CastSpellFacet", + "functions": ["castSpell"] + } + ] +} diff --git a/packages/ri/contracts/deploy/001_deploy_libraries.ts b/packages/ri/contracts/deploy/001_deploy_libraries.ts deleted file mode 100644 index 5f3bf3a727..0000000000 --- a/packages/ri/contracts/deploy/001_deploy_libraries.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { DeployFunction } from "hardhat-deploy/types"; - -const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - - await deploy("LibQuery", { - from: deployer, - log: true, - autoMine: true, - }); - - await deploy("LibStamina", { - from: deployer, - log: true, - autoMine: true, - }); -}; -export default func; -func.tags = ["Libraries"]; diff --git a/packages/ri/contracts/deploy/002_deploy_persona.ts b/packages/ri/contracts/deploy/002_deploy_persona.ts deleted file mode 100644 index 763e15a656..0000000000 --- a/packages/ri/contracts/deploy/002_deploy_persona.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { DeployFunction } from "hardhat-deploy/types"; -import { blue } from "colorette"; - -const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - - console.log(blue("Deploying MockL2Bridge")); - const mockBridge = await deploy("MockL2Bridge", { - from: deployer, - log: true, - autoMine: true, - args: [], - }); - - console.log(blue("Deploying Persona")); - const persona = await deploy("Persona", { - from: deployer, - log: true, - autoMine: true, - args: ["Persona", "LTX-PERSONA", mockBridge.address, hre.ethers.constants.AddressZero], - }); - - console.log(blue("Deploying PersonaMirror")); - const personaMirror = await deploy("PersonaMirror", { - from: deployer, - log: true, - autoMine: true, - args: [persona.address, mockBridge.address], - }); - - console.log(blue("Deploying PersonaAllMinter")); - const personaAllMinter = await deploy("PersonaAllMinter", { - from: deployer, - log: true, - autoMine: true, - args: [], - deterministicDeployment: "0xDEADBEEF", - }); - const personaAllMinterContract = await hre.ethers.getContract("PersonaAllMinter", deployer); - - console.log(blue("Setting Persona address on PersonaAllMinter")); - let tx = await personaAllMinterContract.setPersona(persona.address); - await tx.wait(); - - const personaContract = await hre.ethers.getContract("Persona", deployer); - - console.log(blue("Authorizing PersonaAllMinter")); - tx = await personaContract.setMinter(personaAllMinter.address, true); - await tx.wait(); - - console.log(blue("Setting PersonaMirror L2 address on Persona")); - tx = await personaContract.setPersonaMirrorL2(personaMirror.address); - await tx.wait(); - - const isMinter = await personaContract.isMinter(personaAllMinter.address); - console.log(blue(`Is PersonaAllMinter authorized as a minter? ${isMinter}`)); -}; -export default func; -func.tags = ["Persona"]; diff --git a/packages/ri/contracts/deploy/003_deploy_diamond.ts b/packages/ri/contracts/deploy/003_deploy_diamond.ts deleted file mode 100644 index 5e26cd02c4..0000000000 --- a/packages/ri/contracts/deploy/003_deploy_diamond.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { HardhatRuntimeEnvironment } from "hardhat/types"; -import { DeployFunction } from "hardhat-deploy/types"; -import { blue, green } from "colorette"; -import { CombinedFacets, LocalLatticeGameLocator } from "../types/ethers-contracts"; -import { deployComponent } from "../deploy-utils/components"; -import { deployAccessController } from "../deploy-utils/accessControllers"; -// import { deployContentCreator } from "../deploy-utils/contentCreators"; - -const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { - const { deployments, getNamedAccounts } = hre; - const { diamond, deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - - const personaMiror = await hre.ethers.getContract("PersonaMirror", deployer); - const LibQuery = await hre.deployments.get("LibQuery"); - const LibStamina = await hre.deployments.get("LibStamina"); - - console.log(blue("Deploying Diamond")); - const facets = ["EmberFacet", "InitializeFacet", "CastSpellFacet", "MoveFacet", "PlayerJoinFacet"]; - const chainId = await hre.getChainId(); - if (chainId === "31337") facets.push("DebugFacet"); - - const { newlyDeployed } = await diamond.deploy("Diamond", { - from: deployer, - owner: deployer, - facets, - log: true, - execute: { - methodName: "initializeExternally", - args: [[true, personaMiror.address]], - }, - libraries: { - LibQuery: LibQuery.address, - LibStamina: LibStamina.address, - }, - autoMine: true, - }); - - const ember = (await hre.ethers.getContract("Diamond", deployer)) as CombinedFacets; - const world = await ember.world(); - // Deploy components - await deployComponent(hre, world, ember.address, "PositionComponent"); - await deployComponent(hre, world, ember.address, "EntityTypeComponent"); - await deployComponent(hre, world, ember.address, "MovableComponent"); - await deployComponent(hre, world, ember.address, "UntraversableComponent"); - await deployComponent(hre, world, ember.address, "OwnedByComponent"); - await deployComponent(hre, world, ember.address, "PersonaComponent"); - await deployComponent(hre, world, ember.address, "StaminaComponent"); - await deployComponent(hre, world, ember.address, "LastActionTurnComponent"); - await deployComponent(hre, world, ember.address, "GameConfigComponent"); - // await deployComponent(hre, world, ember.address, "SpawnPointComponent"); - await deployComponent(hre, world, ember.address, "MineableComponent"); - - // Deploy access controllers - await deployAccessController(hre, ember, "PersonaAccessController"); - // Deploy content creators - // await deployContentCreator(hre, ember, "MapContentCreator") - // Deploy embodied systems - - console.log(blue("Deploying LocalLatticeGameLocator")); - await deploy("LocalLatticeGameLocator", { - from: deployer, - log: true, - autoMine: true, - args: [], - deterministicDeployment: "0xAAAAFFFF", - }); - const localLatticeGameLocator = (await hre.ethers.getContract( - "LocalLatticeGameLocator", - deployer - )) as LocalLatticeGameLocator; - console.log(green("LocalLatticeGameLocator: " + localLatticeGameLocator.address)); - - if (newlyDeployed) { - const tx = await localLatticeGameLocator.setLocalLatticeGameAddress(ember.address); - await tx.wait(); - console.log(blue("Local Lattice game linked")); - } - - console.log(green(`Setting hardhat time to local time.`)); - await hre.network.provider.send("evm_setNextBlockTimestamp", [Math.round(Date.now() / 1000)]); - - // Only configure the world after setting hardhat time - // to the correct value because it saves the game - // start timestamp. - console.log(blue("Configure world")); - const tx = await ember.configureWorld(); - await tx.wait(); -}; -export default func; -func.tags = ["Diamond"]; diff --git a/packages/ri/contracts/package.json b/packages/ri/contracts/package.json index dccbb87e27..3380f3281a 100644 --- a/packages/ri/contracts/package.json +++ b/packages/ri/contracts/package.json @@ -4,27 +4,23 @@ "version": "0.1.7", "private": true, "scripts": { + "----- DEV -----": "---------------------------", "prepare": "yarn build && chmod u+x git-install.sh && chmod u+x exports.sh", "git:install": "bash git-install.sh", "lint": "yarn prettier && yarn solhint", "prettier": "prettier --write 'src/**/*.sol'", "solhint": "solhint --config ./.solhint.json 'src/**/*.sol' --fix", "test": "forge test", - "build": "rimraf out && forge build --force && yarn dist && yarn types", + "----- BUILD/DEPLOY -----": "---------------------------", + "start": "run-p -l anvil:node deploy:local", + "build": "yarn codegen && rimraf out && forge build --force && yarn dist && yarn types", "dist": "rimraf abi && mkdir abi && bash exports.sh && yarn mud diamond-abi", + "deploy:local": "yarn mud deploy --deployerPrivateKey 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", + "deploy:degen": "yarn mud deploy -i --deployerPrivateKey 0x044C7963E9A89D4F8B64AB23E02E97B2E00DD57FCB60F316AC69B77135003AEF", "types": "rimraf types && typechain --target=ethers-v5 abi/*.json", - "start:hardhat": "hardhat node", - "start:anvil": "run-p -l anvil:node anvil:automine", - "anvil:node": "anvil", - "anvil:automine": "wait-on tcp:8545 && curl -X POST localhost:8545 -H \"Content-Type: application/json\" --data '{\"jsonrpc\": \"2.0\", \"method\": \"evm_setAutomine\", \"params\": [true], \"id\": 1 }'", - "forge:deploy:anvil": "yarn forge:deploy --private-keys 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --sig \"deployEmber(address)\" 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --fork-url http://localhost:8545", - "forge:deploy:hardhat": "yarn forge:deploy --private-keys 0x044C7963E9A89D4F8B64AB23E02E97B2E00DD57FCB60F316AC69B77135003AEF --sig \"deployEmber(address)\" 0x1c0f0Af3262A7213E59Be7f1440282279D788335 --fork-url http://localhost:8545", - "forge:deploy:degen": "yarn forge:deploy --private-keys 0x044C7963E9A89D4F8B64AB23E02E97B2E00DD57FCB60F316AC69B77135003AEF --sig \"deployEmber(address)\" 0x1c0f0Af3262A7213E59Be7f1440282279D788335 --fork-url https://degen-chain.lattice.xyz --legacy", - "forge:deploy": "forge script ./src/test/utils/BroadcastDeploy.sol --target-contract Deploy --broadcast -vvv", - "hardhat:deploy:degen": "yarn hardhat:deploy --network degen", - "hardhat:deploy:hardhat": "yarn hardhat:deploy --network hardhat", - "hardhat:deploy:update": "yarn hardhat deploy --network localhost --tags Diamond", - "hardhat:deploy": "hardhat deploy --reset" + "anvil:node": "anvil -b 1 -vvvv", + "forge:deploy": "yarn codegen && forge script ./src/test/utils/BroadcastDeploy.sol --target-contract Deploy --broadcast -vvv", + "codegen": "yarn ejs src/libraries/LibDeploy.ejs -f deploy.json -o src/libraries/LibDeploy.sol" }, "devDependencies": { "@ethersproject/abi": "^5.6.0", @@ -35,23 +31,18 @@ "@latticexyz/solecs": "0.1.8", "@latticexyz/std-contracts": "^0.1.0", "@manifoldxyz/royalty-registry-solidity": "https://github.com/manifoldxyz/royalty-registry-solidity.git#c5ad6269d37e180fbf449a1f5ba2d2ff6c441efc", - "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers", "@opengsn/contracts": "^2.2.6", "@rari-capital/solmate": "https://github.com/rari-capital/solmate.git#851ea3baa4327f453da723df75b1093b58b964dc", "@typechain/ethers-v5": "^9.0.0", - "@typechain/hardhat": "^5.0.0", "@types/glob": "^7.2.0", "@types/node": "^17.0.21", "base64-sol": "https://github.com/Brechtpd/base64.git#4d85607b18d981acff392d2e99ba654305552a97", "copyfiles": "^2.4.1", "ds-test": "https://github.com/dapphub/ds-test.git#c7a36fb236f298e04edf28e2fee385b80f53945f", + "ejs": "^3.1.8", "ethers": "^5.6.6", "forge-std": "https://github.com/foundry-rs/forge-std.git#4d36e3f7e2168c8155c641eb0f80e85cd584bd1c", "glob": "^8.0.3", - "hardhat": "^2.9.1", - "hardhat-abi-exporter": "^2.8.0", - "hardhat-deploy": "^0.11.5", - "hardhat-diamond-abi": "^2.0.0", "memmove": "https://github.com/brockelmore/memmove.git#d577ecd1bc43656f4032edf4daa9797f756a8ad2", "npm-run-all": "^4.1.5", "openzeppelin-solidity": "https://github.com/OpenZeppelin/openzeppelin-contracts.git#57725120581e27ec469e1c7e497a4008aafff818", diff --git a/packages/ri/contracts/src/facets/systems/CastSpellFacet.sol b/packages/ri/contracts/src/facets/CastSpellFacet.sol similarity index 79% rename from packages/ri/contracts/src/facets/systems/CastSpellFacet.sol rename to packages/ri/contracts/src/facets/CastSpellFacet.sol index 36e58bb440..6282e6ec26 100644 --- a/packages/ri/contracts/src/facets/systems/CastSpellFacet.sol +++ b/packages/ri/contracts/src/facets/CastSpellFacet.sol @@ -4,16 +4,16 @@ pragma solidity >=0.8.0; import { World } from "solecs/World.sol"; import { Component } from "solecs/Component.sol"; -import { LearnedSpellsComponent, ID as LearnedSpellsComponentID } from "../../components/LearnedSpellsComponent.sol"; -import { SpellComponent, Spell, ID as SpellComponentID } from "../../components/SpellComponent.sol"; -import { EmbodiedSystemArgumentComponent, ID as EmbodiedSystemArgumentComponentID } from "../../components/EmbodiedSystemArgumentComponent.sol"; +import { LearnedSpellsComponent, ID as LearnedSpellsComponentID } from "../components/LearnedSpellsComponent.sol"; +import { SpellComponent, Spell, ID as SpellComponentID } from "../components/SpellComponent.sol"; +import { EmbodiedSystemArgumentComponent, ID as EmbodiedSystemArgumentComponentID } from "../components/EmbodiedSystemArgumentComponent.sol"; -import { UsingAccessControl } from "../../access/UsingAccessControl.sol"; +import { UsingAccessControl } from "../access/UsingAccessControl.sol"; -import { AppStorage } from "../../libraries/LibAppStorage.sol"; -import { LibECS } from "../../libraries/LibECS.sol"; -import { LibEmbodiedSystem } from "../../libraries/LibEmbodiedSystem.sol"; -import { LibUtils } from "../../libraries/LibUtils.sol"; +import { AppStorage } from "../libraries/LibAppStorage.sol"; +import { LibECS } from "../libraries/LibECS.sol"; +import { LibEmbodiedSystem } from "../libraries/LibEmbodiedSystem.sol"; +import { LibUtils } from "../libraries/LibUtils.sol"; contract CastSpellFacet is UsingAccessControl { AppStorage internal s; diff --git a/packages/ri/contracts/src/facets/EmberFacet.sol b/packages/ri/contracts/src/facets/EmberFacet.sol index 091952a739..f519572299 100644 --- a/packages/ri/contracts/src/facets/EmberFacet.sol +++ b/packages/ri/contracts/src/facets/EmberFacet.sol @@ -8,17 +8,10 @@ import { UsingAccessControl } from "../access/UsingAccessControl.sol"; import { AppStorage } from "../libraries/LibAppStorage.sol"; import { LibDiamond, DiamondStorage } from "../diamond/libraries/LibDiamond.sol"; -import { GameConfigComponent, ID as GameConfigComponentID, GameConfig, GodID } from "../components/GameConfigComponent.sol"; - contract EmberFacet is UsingDiamondOwner, UsingAccessControl { AppStorage internal s; function world() external view returns (address) { return address(s.world); } - - function configureWorld() public { - GameConfigComponent gameConfigComponent = GameConfigComponent(s.world.getComponent(GameConfigComponentID)); - gameConfigComponent.set(GodID, GameConfig({ startTime: block.timestamp, turnLength: uint256(20) })); - } } diff --git a/packages/ri/contracts/src/facets/InitializeFacet.sol b/packages/ri/contracts/src/facets/InitializeFacet.sol index 3e28734563..f5a16005ca 100644 --- a/packages/ri/contracts/src/facets/InitializeFacet.sol +++ b/packages/ri/contracts/src/facets/InitializeFacet.sol @@ -11,13 +11,20 @@ import { AppStorage, Config } from "../libraries/LibAppStorage.sol"; import { LibContent } from "../libraries/LibContent.sol"; import { LibAccessControl } from "../libraries/LibAccessControl.sol"; import { LibEmbodiedSystem } from "../libraries/LibEmbodiedSystem.sol"; +import { GameConfigComponent, ID as GameConfigComponentID, GameConfig, GodID } from "../components/GameConfigComponent.sol"; contract InitializeFacet is UsingDiamondOwner, UsingAccessControl { AppStorage internal s; - function initializeExternally(Config calldata config) external { + function initializeExternally(Config calldata config, World world) external { s.config = config; - s.world = new World(); + World unusedWorldToMakeForgeHappy = new World(); + s.world = world; + } + + function configureWorld() external { + GameConfigComponent gameConfigComponent = GameConfigComponent(s.world.getComponent(GameConfigComponentID)); + gameConfigComponent.set(GodID, GameConfig({ startTime: block.timestamp, turnLength: uint256(20) })); } function registerAccessControllerExternally(address accessControllerAddr) external { diff --git a/packages/ri/contracts/src/libraries/LibDeploy.ejs b/packages/ri/contracts/src/libraries/LibDeploy.ejs new file mode 100644 index 0000000000..8ed139e36f --- /dev/null +++ b/packages/ri/contracts/src/libraries/LibDeploy.ejs @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +// Foundry +import { DSTest } from "ds-test/test.sol"; +import { console } from "forge-std/console.sol"; +import { Cheats } from "../test/utils/Cheats.sol"; + +// ECS +import { World } from "solecs/World.sol"; + +// Diamonds +import { Diamantaire } from "../diamond/Diamantaire.sol"; +import { Diamond } from "../diamond/Diamond.sol"; +import { IDiamondCut } from "../diamond/interfaces/IDiamondCut.sol"; +import { AppStorage, Config } from "../libraries/LibAppStorage.sol"; + +// Facets +<% facets.forEach(facet => { -%> +import { <%= facet.name %> } from "../facets/<%= facet.name %>.sol"; +<% }) -%> + +// Components +<% components.forEach(component => { -%> +import { <%- component %> } from "../components/<%- component %>.sol"; +<% }); -%> + +// Access Controllers +import { PersonaAccessController } from "../access/PersonaAccessController.sol"; + +// Content Creators +import { SpellContentCreator } from "../entities/SpellContentCreator.sol"; + +// Embodied Systems +import { CreateEntityFromPrototypeEmbodiedSystem } from "../embodied/CreateEntityFromPrototypeEmbodiedSystem.sol"; + +// Outside World +import { MockL2Bridge } from "persona/test/mocks/MockL2Bridge.sol"; +import { MockConsumer } from "persona/test/mocks/MockConsumer.sol"; +import { Persona } from "persona/L1/Persona.sol"; +import { EmptyPersonaTokenURIGenerator } from "persona/L1/EmptyPersonaTokenURIGenerator.sol"; +import { PersonaMirror } from "persona/L2/PersonaMirror.sol"; +import { PersonaAllMinter } from "persona/L1/PersonaAllMinter.sol"; + +struct DeployResult { + Diamond diamond; + World world; + address deployer; + MockL2Bridge bridge; + Persona persona; + PersonaAllMinter personaAllMinter; + PersonaMirror personaMirror; + EmptyPersonaTokenURIGenerator tokenURIGenerator; +} + +library LibDeploy { + + function deploy( + address _deployer, + address _personaMirror, + address payable _diamond, + address _world, + bool _reuseComponents + ) internal returns (DeployResult memory result) { + result.deployer = _deployer; + bool upgrade = _diamond != address(0); + IDiamondCut.FacetCutAction action = upgrade ? IDiamondCut.FacetCutAction.Replace : IDiamondCut.FacetCutAction.Add; + + Diamantaire diamantaire = new Diamantaire(); + + bytes4[] memory functionSelectors; + + IDiamondCut.FacetCut[] memory diamondCut = new IDiamondCut.FacetCut[](4); + + // ------------------------ + // Add facets + // ------------------------ + +<% facets.forEach((facet, facetIndex) => { -%> + // Add <%= facet.name %> + <%= facet.name %> _<%= facet.name %> = new <%= facet.name %>(); + + functionSelectors = new bytes4[](<%= facet.functions.length %>); +<% facet.functions.forEach((func, funcIndex) => { -%> + functionSelectors[<%= funcIndex -%>] = <%= facet.name -%>.<%= func -%>.selector; +<% }); -%> + + diamondCut[<%= facetIndex %>] = IDiamondCut.FacetCut({ + facetAddress: address(_<%= facet.name %>), + action: action, + functionSelectors: functionSelectors + }); + +<% }); -%> + // ----------------------a- + // Deploy + // ------------------------ + + if (_personaMirror == address(0)) { + // deploy persona, persona mirror, and the bridge + result.bridge = new MockL2Bridge(); + result.tokenURIGenerator = new EmptyPersonaTokenURIGenerator(); + result.persona = new Persona("L", "L", address(result.bridge), address(0)); + result.personaAllMinter = new PersonaAllMinter(); + result.personaAllMinter.setPersona(address(result.persona)); + result.persona.setMinter(address(result.personaAllMinter), true); + result.personaMirror = new PersonaMirror(address(result.persona), address(result.bridge)); + result.persona.setPersonaMirrorL2(address(result.personaMirror)); + } else { + result.personaMirror = PersonaMirror(_personaMirror); + } + + // Deploy the diamond + if (upgrade) { + // Upgrade the diamond + IDiamondCut(_diamond).diamondCut(diamondCut, address(0), new bytes(0)); + result.diamond = Diamond(_diamond); + } else { + // Deploy a new diamond + result.diamond = diamantaire.createDiamond(result.deployer, diamondCut, new bytes(0), 0); + } + address diamondAddress = address(result.diamond); + + // Call initialize on the initialize facet + result.world = _world == address(0) ? new World() : World(_world); + InitializeFacet(diamondAddress).initializeExternally(Config(false, address(result.personaMirror)), result.world); + + // Deploy each component and transfer ownership to the diamond contract + if(!_reuseComponents) { +<% components.forEach(component => { -%> + (new <%= component %>(address(result.world))).transferOwnership(diamondAddress); +<% });%> + } + + // ------------------------ + // Initialize + // ------------------------ + + if(!upgrade) { + InitializeFacet(diamondAddress).configureWorld(); + + // Register access controllers + InitializeFacet(diamondAddress).registerAccessControllerExternally(address(new PersonaAccessController())); + + // Register content creators + InitializeFacet(diamondAddress).registerContentCreatorExternally(address(new SpellContentCreator())); + + // Register embodied systems + address createEntityFromPrototypeEmbodiedSystem = address(new CreateEntityFromPrototypeEmbodiedSystem()); + InitializeFacet(diamondAddress).registerEmbodiedSystemExternally( + createEntityFromPrototypeEmbodiedSystem, + CreateEntityFromPrototypeEmbodiedSystem.createEntityFromPrototype.selector + ); + } + } +} diff --git a/packages/ri/contracts/src/libraries/LibDeploy.sol b/packages/ri/contracts/src/libraries/LibDeploy.sol new file mode 100644 index 0000000000..acb204c49e --- /dev/null +++ b/packages/ri/contracts/src/libraries/LibDeploy.sol @@ -0,0 +1,218 @@ +// SPDX-License-Identifier: Unlicense +pragma solidity >=0.8.0; + +// Foundry +import { DSTest } from "ds-test/test.sol"; +import { console } from "forge-std/console.sol"; +import { Cheats } from "../test/utils/Cheats.sol"; + +// ECS +import { World } from "solecs/World.sol"; + +// Diamonds +import { Diamantaire } from "../diamond/Diamantaire.sol"; +import { Diamond } from "../diamond/Diamond.sol"; +import { IDiamondCut } from "../diamond/interfaces/IDiamondCut.sol"; +import { AppStorage, Config } from "../libraries/LibAppStorage.sol"; + +// Facets +import { InitializeFacet } from "../facets/InitializeFacet.sol"; +import { EmberFacet } from "../facets/EmberFacet.sol"; +import { DebugFacet } from "../facets/DebugFacet.sol"; +import { CastSpellFacet } from "../facets/CastSpellFacet.sol"; + +// Components +import { EmbodiedSystemArgumentComponent } from "../components/EmbodiedSystemArgumentComponent.sol"; +import { EntityTypeComponent } from "../components/EntityTypeComponent.sol"; +import { GameConfigComponent } from "../components/GameConfigComponent.sol"; +import { LastActionTurnComponent } from "../components/LastActionTurnComponent.sol"; +import { LearnedSpellsComponent } from "../components/LearnedSpellsComponent.sol"; +import { MaxDistanceComponent } from "../components/MaxDistanceComponent.sol"; +import { MineableComponent } from "../components/MineableComponent.sol"; +import { MovableComponent } from "../components/MovableComponent.sol"; +import { OwnedByComponent } from "../components/OwnedByComponent.sol"; +import { PersonaComponent } from "../components/PersonaComponent.sol"; +import { PositionComponent } from "../components/PositionComponent.sol"; +import { SpellComponent } from "../components/SpellComponent.sol"; +import { StaminaComponent } from "../components/StaminaComponent.sol"; +import { UntraversableComponent } from "../components/UntraversableComponent.sol"; + +// Access Controllers +import { PersonaAccessController } from "../access/PersonaAccessController.sol"; + +// Content Creators +import { SpellContentCreator } from "../entities/SpellContentCreator.sol"; + +// Embodied Systems +import { CreateEntityFromPrototypeEmbodiedSystem } from "../embodied/CreateEntityFromPrototypeEmbodiedSystem.sol"; + +// Outside World +import { MockL2Bridge } from "persona/test/mocks/MockL2Bridge.sol"; +import { MockConsumer } from "persona/test/mocks/MockConsumer.sol"; +import { Persona } from "persona/L1/Persona.sol"; +import { EmptyPersonaTokenURIGenerator } from "persona/L1/EmptyPersonaTokenURIGenerator.sol"; +import { PersonaMirror } from "persona/L2/PersonaMirror.sol"; +import { PersonaAllMinter } from "persona/L1/PersonaAllMinter.sol"; + +struct DeployResult { + Diamond diamond; + World world; + address deployer; + MockL2Bridge bridge; + Persona persona; + PersonaAllMinter personaAllMinter; + PersonaMirror personaMirror; + EmptyPersonaTokenURIGenerator tokenURIGenerator; +} + +library LibDeploy { + function deploy( + address _deployer, + address _personaMirror, + address payable _diamond, + address _world, + bool _reuseComponents + ) internal returns (DeployResult memory result) { + result.deployer = _deployer; + bool upgrade = _diamond != address(0); + IDiamondCut.FacetCutAction action = upgrade ? IDiamondCut.FacetCutAction.Replace : IDiamondCut.FacetCutAction.Add; + + Diamantaire diamantaire = new Diamantaire(); + + bytes4[] memory functionSelectors; + + IDiamondCut.FacetCut[] memory diamondCut = new IDiamondCut.FacetCut[](4); + + // ------------------------ + // Add facets + // ------------------------ + + // Add InitializeFacet + InitializeFacet _InitializeFacet = new InitializeFacet(); + + functionSelectors = new bytes4[](5); + functionSelectors[0] = InitializeFacet.initializeExternally.selector; + functionSelectors[1] = InitializeFacet.configureWorld.selector; + functionSelectors[2] = InitializeFacet.registerAccessControllerExternally.selector; + functionSelectors[3] = InitializeFacet.registerContentCreatorExternally.selector; + functionSelectors[4] = InitializeFacet.registerEmbodiedSystemExternally.selector; + + diamondCut[0] = IDiamondCut.FacetCut({ + facetAddress: address(_InitializeFacet), + action: action, + functionSelectors: functionSelectors + }); + + // Add EmberFacet + EmberFacet _EmberFacet = new EmberFacet(); + + functionSelectors = new bytes4[](1); + functionSelectors[0] = EmberFacet.world.selector; + + diamondCut[1] = IDiamondCut.FacetCut({ + facetAddress: address(_EmberFacet), + action: action, + functionSelectors: functionSelectors + }); + + // Add DebugFacet + DebugFacet _DebugFacet = new DebugFacet(); + + functionSelectors = new bytes4[](5); + functionSelectors[0] = DebugFacet.addComponentToEntityExternally.selector; + functionSelectors[1] = DebugFacet.removeComponentFromEntityExternally.selector; + functionSelectors[2] = DebugFacet.callerEntityID.selector; + functionSelectors[3] = DebugFacet.bulkSetState.selector; + functionSelectors[4] = DebugFacet.entryPoint.selector; + + diamondCut[2] = IDiamondCut.FacetCut({ + facetAddress: address(_DebugFacet), + action: action, + functionSelectors: functionSelectors + }); + + // Add CastSpellFacet + CastSpellFacet _CastSpellFacet = new CastSpellFacet(); + + functionSelectors = new bytes4[](1); + functionSelectors[0] = CastSpellFacet.castSpell.selector; + + diamondCut[3] = IDiamondCut.FacetCut({ + facetAddress: address(_CastSpellFacet), + action: action, + functionSelectors: functionSelectors + }); + + // ----------------------a- + // Deploy + // ------------------------ + + if (_personaMirror == address(0)) { + // deploy persona, persona mirror, and the bridge + result.bridge = new MockL2Bridge(); + result.tokenURIGenerator = new EmptyPersonaTokenURIGenerator(); + result.persona = new Persona("L", "L", address(result.bridge), address(0)); + result.personaAllMinter = new PersonaAllMinter(); + result.personaAllMinter.setPersona(address(result.persona)); + result.persona.setMinter(address(result.personaAllMinter), true); + result.personaMirror = new PersonaMirror(address(result.persona), address(result.bridge)); + result.persona.setPersonaMirrorL2(address(result.personaMirror)); + } else { + result.personaMirror = PersonaMirror(_personaMirror); + } + + // Deploy the diamond + if (upgrade) { + // Upgrade the diamond + IDiamondCut(_diamond).diamondCut(diamondCut, address(0), new bytes(0)); + result.diamond = Diamond(_diamond); + } else { + // Deploy a new diamond + result.diamond = diamantaire.createDiamond(result.deployer, diamondCut, new bytes(0), 0); + } + address diamondAddress = address(result.diamond); + + // Call initialize on the initialize facet + result.world = _world == address(0) ? new World() : World(_world); + InitializeFacet(diamondAddress).initializeExternally(Config(false, address(result.personaMirror)), result.world); + + // Deploy each component and transfer ownership to the diamond contract + if (!_reuseComponents) { + (new EmbodiedSystemArgumentComponent(address(result.world))).transferOwnership(diamondAddress); + (new EntityTypeComponent(address(result.world))).transferOwnership(diamondAddress); + (new GameConfigComponent(address(result.world))).transferOwnership(diamondAddress); + (new LastActionTurnComponent(address(result.world))).transferOwnership(diamondAddress); + (new LearnedSpellsComponent(address(result.world))).transferOwnership(diamondAddress); + (new MaxDistanceComponent(address(result.world))).transferOwnership(diamondAddress); + (new MineableComponent(address(result.world))).transferOwnership(diamondAddress); + (new MovableComponent(address(result.world))).transferOwnership(diamondAddress); + (new OwnedByComponent(address(result.world))).transferOwnership(diamondAddress); + (new PersonaComponent(address(result.world))).transferOwnership(diamondAddress); + (new PositionComponent(address(result.world))).transferOwnership(diamondAddress); + (new SpellComponent(address(result.world))).transferOwnership(diamondAddress); + (new StaminaComponent(address(result.world))).transferOwnership(diamondAddress); + (new UntraversableComponent(address(result.world))).transferOwnership(diamondAddress); + } + + // ------------------------ + // Initialize + // ------------------------ + + if (!upgrade) { + InitializeFacet(diamondAddress).configureWorld(); + + // Register access controllers + InitializeFacet(diamondAddress).registerAccessControllerExternally(address(new PersonaAccessController())); + + // Register content creators + InitializeFacet(diamondAddress).registerContentCreatorExternally(address(new SpellContentCreator())); + + // Register embodied systems + address createEntityFromPrototypeEmbodiedSystem = address(new CreateEntityFromPrototypeEmbodiedSystem()); + InitializeFacet(diamondAddress).registerEmbodiedSystemExternally( + createEntityFromPrototypeEmbodiedSystem, + CreateEntityFromPrototypeEmbodiedSystem.createEntityFromPrototype.selector + ); + } + } +} diff --git a/packages/ri/contracts/src/test/EmberTest.sol b/packages/ri/contracts/src/test/EmberTest.sol index e157c0a342..1d972cc693 100644 --- a/packages/ri/contracts/src/test/EmberTest.sol +++ b/packages/ri/contracts/src/test/EmberTest.sol @@ -10,7 +10,7 @@ import { Deploy } from "./utils/Deploy.sol"; import { EmberFacet } from "../facets/EmberFacet.sol"; import { DebugFacet } from "../facets/DebugFacet.sol"; import { InitializeFacet } from "../facets/InitializeFacet.sol"; -import { CastSpellFacet } from "../facets/systems/CastSpellFacet.sol"; +import { CastSpellFacet } from "../facets/CastSpellFacet.sol"; // Components import { EmbodiedSystemArgumentComponent, ID as EmbodiedSystemArgumentComponentID } from "../components/EmbodiedSystemArgumentComponent.sol"; import { EntityTypeComponent, ID as EntityTypeComponentID } from "../components/EntityTypeComponent.sol"; diff --git a/packages/ri/contracts/src/test/utils/BroadcastDeploy.sol b/packages/ri/contracts/src/test/utils/BroadcastDeploy.sol index b0789f9d3c..b2c3567a12 100644 --- a/packages/ri/contracts/src/test/utils/BroadcastDeploy.sol +++ b/packages/ri/contracts/src/test/utils/BroadcastDeploy.sol @@ -7,211 +7,36 @@ import { Vm } from "forge-std/Vm.sol"; import { console } from "forge-std/console.sol"; import { Utilities } from "./Utilities.sol"; import { Cheats } from "./Cheats.sol"; -// ECS -import { World } from "solecs/World.sol"; -// Diamonds -import { Diamantaire } from "../../diamond/Diamantaire.sol"; -import { Diamond } from "../../diamond/Diamond.sol"; -import { IDiamondCut } from "../../diamond/interfaces/IDiamondCut.sol"; -import { AppStorage, Config } from "../../libraries/LibAppStorage.sol"; -// Facets -import { EmberFacet } from "../../facets/EmberFacet.sol"; -import { InitializeFacet } from "../../facets/InitializeFacet.sol"; -import { DebugFacet } from "../../facets/DebugFacet.sol"; -// Facets: Systems -import { CastSpellFacet } from "../../facets/systems/CastSpellFacet.sol"; -// Components -import { EmbodiedSystemArgumentComponent } from "../../components/EmbodiedSystemArgumentComponent.sol"; -import { EntityTypeComponent } from "../../components/EntityTypeComponent.sol"; -import { LearnedSpellsComponent } from "../../components/LearnedSpellsComponent.sol"; -import { MaxDistanceComponent } from "../../components/MaxDistanceComponent.sol"; -import { OwnedByComponent } from "../../components/OwnedByComponent.sol"; -import { PersonaComponent } from "../../components/PersonaComponent.sol"; -import { PositionComponent } from "../../components/PositionComponent.sol"; -import { SpellComponent } from "../../components/SpellComponent.sol"; - -// Access Controllers -import { PersonaAccessController } from "../../access/PersonaAccessController.sol"; - -// Content Creators -import { SpellContentCreator } from "../../entities/SpellContentCreator.sol"; - -// Embodied Systems -import { CreateEntityFromPrototypeEmbodiedSystem } from "../../embodied/CreateEntityFromPrototypeEmbodiedSystem.sol"; - -// Outside World -import { MockL2Bridge } from "persona/test/mocks/MockL2Bridge.sol"; -import { MockConsumer } from "persona/test/mocks/MockConsumer.sol"; -import { Persona } from "persona/L1/Persona.sol"; -import { EmptyPersonaTokenURIGenerator } from "persona/L1/EmptyPersonaTokenURIGenerator.sol"; -import { PersonaMirror } from "persona/L2/PersonaMirror.sol"; -import { PersonaAllMinter } from "persona/L1/PersonaAllMinter.sol"; - -// Fixtures -import { TestContentCreator } from "../fixtures/TestContentCreator.sol"; -import { TestEmbodiedSystem } from "../fixtures/TestEmbodiedSystem.sol"; -import { PersonaFixture } from "../fixtures/PersonaFixture.sol"; +// Libs +import { LibDeploy, DeployResult } from "../../libraries/LibDeploy.sol"; contract Deploy is DSTest { Cheats internal immutable vm = Cheats(HEVM_ADDRESS); - Utilities internal immutable utils = new Utilities(); - - Diamantaire internal diamantaire; - address public deployer; - Diamond public diamond; - World public world; - InitializeFacet public initializeFacetOnDiamond; - EmberFacet public emberFacetOnDiamond; - DebugFacet public debugFacetOnDiamond; - - PersonaFixture public personaFixture; - - MockL2Bridge public bridge; - Persona public persona; - PersonaAllMinter public personaAllMinter; - EmptyPersonaTokenURIGenerator public tokenURIGenerator; - PersonaMirror public personaMirror; - MockConsumer public consumer; - - function deployEmber(address _deployer) public returns (address) { - deployer = _deployer; - // deployer = 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266; // 1st anvil address - // deployer = 0x1c0f0Af3262A7213E59Be7f1440282279D788335; // 1st hardhat address - // deployer = 0xDdaa406fe1D2d3Af4B9cB3dA1B3C9E9fa3B7f427; // degen chain - - vm.startBroadcast(deployer); - - // deploy persona, persona mirror, and the bridge - bridge = new MockL2Bridge(); - tokenURIGenerator = new EmptyPersonaTokenURIGenerator(); - persona = new Persona("L", "L", address(bridge), address(0)); - personaAllMinter = new PersonaAllMinter(); - personaAllMinter.setPersona(address(persona)); - persona.setMinter(address(personaAllMinter), true); - personaMirror = new PersonaMirror(address(persona), address(bridge)); - persona.setPersonaMirrorL2(address(personaMirror)); - consumer = new MockConsumer(address(personaMirror)); - - diamantaire = new Diamantaire(); - - bytes4[] memory functionSelectors; - - IDiamondCut.FacetCut[] memory diamondCut = new IDiamondCut.FacetCut[](3); - - // ------------------------------------------------------------------------- - // adding initialize facet (add function selectors here) - // ------------------------------------------------------------------------- - InitializeFacet initializeFacet = new InitializeFacet(); - - functionSelectors = new bytes4[](4); - functionSelectors[0] = InitializeFacet.initializeExternally.selector; - functionSelectors[1] = InitializeFacet.registerAccessControllerExternally.selector; - functionSelectors[2] = InitializeFacet.registerContentCreatorExternally.selector; - functionSelectors[3] = InitializeFacet.registerEmbodiedSystemExternally.selector; - - diamondCut[0] = IDiamondCut.FacetCut({ - facetAddress: address(initializeFacet), - action: IDiamondCut.FacetCutAction.Add, - functionSelectors: functionSelectors - }); - - // ------------------------------------------------------------------------- - // adding ember facet (add function selectors here) - // ------------------------------------------------------------------------- - EmberFacet emberFacet = new EmberFacet(); - - functionSelectors = new bytes4[](1); - functionSelectors[0] = EmberFacet.world.selector; - - diamondCut[1] = IDiamondCut.FacetCut({ - facetAddress: address(emberFacet), - action: IDiamondCut.FacetCutAction.Add, - functionSelectors: functionSelectors - }); - - // ------------------------------------------------------------------------- - // adding debug facet (add function selectors here) - // ------------------------------------------------------------------------- - DebugFacet debugFacet = new DebugFacet(); - - functionSelectors = new bytes4[](5); - functionSelectors[0] = DebugFacet.addComponentToEntityExternally.selector; - functionSelectors[1] = DebugFacet.removeComponentFromEntityExternally.selector; - functionSelectors[2] = DebugFacet.callerEntityID.selector; - functionSelectors[3] = DebugFacet.bulkSetState.selector; - functionSelectors[4] = DebugFacet.entryPoint.selector; - - diamondCut[2] = IDiamondCut.FacetCut({ - facetAddress: address(debugFacet), - action: IDiamondCut.FacetCutAction.Add, - functionSelectors: functionSelectors - }); - - // ------------------------------------------------------------------------- - // adding cast spell facet - // ------------------------------------------------------------------------- - CastSpellFacet castSpellFacet = new CastSpellFacet(); - - functionSelectors = new bytes4[](1); - functionSelectors[0] = CastSpellFacet.castSpell.selector; - - diamondCut[3] = IDiamondCut.FacetCut({ - facetAddress: address(castSpellFacet), - action: IDiamondCut.FacetCutAction.Add, - functionSelectors: functionSelectors - }); - - // Call initialize on the initialize facet - bytes memory data = abi.encodeWithSignature( - "initializeExternally((bool,address))", - Config({ resetCallerEntityID: false, personaMirror: address(personaMirror) }) - ); - // Create the diamond - diamond = diamantaire.createDiamond(deployer, diamondCut, data, 0); - address diamondAddress = address(diamond); - // Create reference to facets and the World - emberFacetOnDiamond = EmberFacet(diamondAddress); - initializeFacetOnDiamond = InitializeFacet(diamondAddress); - debugFacetOnDiamond = DebugFacet(diamondAddress); - address worldAddress = emberFacetOnDiamond.world(); - world = World(worldAddress); - // Create each component and transfer ownership to the ember contract - (new EmbodiedSystemArgumentComponent(worldAddress)).transferOwnership(diamondAddress); - (new EntityTypeComponent(worldAddress)).transferOwnership(diamondAddress); - (new LearnedSpellsComponent(worldAddress)).transferOwnership(diamondAddress); - (new MaxDistanceComponent(worldAddress)).transferOwnership(diamondAddress); - (new OwnedByComponent(worldAddress)).transferOwnership(diamondAddress); - (new PersonaComponent(worldAddress)).transferOwnership(diamondAddress); - (new PositionComponent(worldAddress)).transferOwnership(diamondAddress); - (new SpellComponent(worldAddress)).transferOwnership(diamondAddress); - // Register access controllers - initializeFacetOnDiamond.registerAccessControllerExternally(address(new PersonaAccessController())); - // Register content creators - initializeFacetOnDiamond.registerContentCreatorExternally(address(new SpellContentCreator())); - // Register embodied systems - address createEntityFromPrototypeEmbodiedSystem = address(new CreateEntityFromPrototypeEmbodiedSystem()); - initializeFacetOnDiamond.registerEmbodiedSystemExternally( - createEntityFromPrototypeEmbodiedSystem, - CreateEntityFromPrototypeEmbodiedSystem.createEntityFromPrototype.selector - ); + function deployEmber( + address _deployer, + address _personaMirror, + address payable _diamond, + address _world, + bool _reuseComponents + ) + public + returns ( + address persona, + address personaAllMinter, + address personaMirror, + address diamond, + address world + ) + { + vm.startBroadcast(_deployer); + DeployResult memory result = LibDeploy.deploy(_deployer, _personaMirror, _diamond, _world, _reuseComponents); vm.stopBroadcast(); - return address(diamond); - } - - function deployTestFixtures() public { - vm.startPrank(deployer); - require(address(diamond) != address(0), "Diamond not deployed yet"); - // Register content creators - initializeFacetOnDiamond.registerContentCreatorExternally(address(new TestContentCreator())); - // Register embodied systems - address testEmbodiedSystem = address(new TestEmbodiedSystem()); - initializeFacetOnDiamond.registerEmbodiedSystemExternally( - testEmbodiedSystem, - TestEmbodiedSystem.dummyEmbodiedSystem.selector - ); - personaFixture = new PersonaFixture(address(this)); - vm.stopPrank(); + persona = address(result.persona); + personaAllMinter = address(result.personaAllMinter); + personaMirror = address(result.personaMirror); + diamond = address(result.diamond); + world = address(result.world); } } diff --git a/packages/ri/contracts/src/test/utils/Deploy.sol b/packages/ri/contracts/src/test/utils/Deploy.sol index a4992b6d32..0c7b7f6c83 100644 --- a/packages/ri/contracts/src/test/utils/Deploy.sol +++ b/packages/ri/contracts/src/test/utils/Deploy.sol @@ -18,7 +18,7 @@ import { EmberFacet } from "../../facets/EmberFacet.sol"; import { InitializeFacet } from "../../facets/InitializeFacet.sol"; import { DebugFacet } from "../../facets/DebugFacet.sol"; // Facets: Systems -import { CastSpellFacet } from "../../facets/systems/CastSpellFacet.sol"; +import { CastSpellFacet } from "../../facets/CastSpellFacet.sol"; // Components import { EmbodiedSystemArgumentComponent } from "../../components/EmbodiedSystemArgumentComponent.sol"; diff --git a/packages/ri/contracts/tasks/compilets.template b/packages/ri/contracts/tasks/compilets.template deleted file mode 100644 index 5a330317d1..0000000000 --- a/packages/ri/contracts/tasks/compilets.template +++ /dev/null @@ -1,44 +0,0 @@ -import { TASK_COMPILE_SOLIDITY } from "hardhat/builtin-tasks/task-names"; -import * as fs from "fs"; -import * as path from "path"; -import { subtask } from "hardhat/config"; - -// TODO: fix - -subtask(TASK_COMPILE_SOLIDITY).setAction(async (_: { force: boolean; quiet: boolean }, { config }, runSuper) => { - console.log("Symlinking forge-style libraries"); - const symlinks = []; - const libraries = [ - ["solmate", "@rari-capital/solmate/src"], - ["solecs", "@latticexyz/solecs/src"], - ["ds-test", "ds-test/src"], - ["forge-std", "forge-std/src"], - ["persona", "@latticexyz/persona/src"], - ["base64", "base64-sol"], - ["gsn", "@opengsn/contracts/src"], - ["royalty-registry", "@manifoldxyz/royalty-registry-solidity/contracts"], - ["@openzeppelin", "openzeppelin-solidity"], - ["memmove", "memmove/src"], - ]; - for (const [library, libraryPath] of libraries) { - const symlinkPath = path.join(process.cwd(), library); - console.log("Adding symlink at path: " + symlinkPath); - if (fs.existsSync(symlinkPath)) { - console.warn("symlink already exists!"); - } else { - const libPath = path.join(config.paths.sources, "..", "..", "node_modules", libraryPath); - fs.symlinkSync(libPath, symlinkPath, "dir"); - } - symlinks.push(symlinkPath); - } - try { - await runSuper(); - } catch (e) { - console.error(e); - } finally { - for (const symlink of symlinks) { - console.log("Removing symlink at path: " + symlink); - fs.unlinkSync(symlink); - } - } -}); diff --git a/packages/ri/launcher/src/Store.ts b/packages/ri/launcher/src/Store.ts index 004b17e792..118696270d 100644 --- a/packages/ri/launcher/src/Store.ts +++ b/packages/ri/launcher/src/Store.ts @@ -104,7 +104,11 @@ export class Store { console.log(this.wallet, this.persona, this.gameSpec); throw new Error("Mint failed: no wallet or persona or game spec"); } - const { personaId, burnerWallet } = await this.persona.mintAndBurner(this.gameSpec.address); + const { personaId, burnerWallet } = await this.persona.mintAndBurner(this.gameSpec.address, { + maxPriorityFeePerGas: 0, + maxFeePerGas: 0, + gasLimit: 200000, + }); localStorage.setItem(burnerWalletStorageKey, burnerWallet.privateKey); localStorage.setItem(personaStorageKey, String(personaId)); runInAction(() => { diff --git a/yarn.lock b/yarn.lock index 681e8a0f4a..2da34d5b57 100644 --- a/yarn.lock +++ b/yarn.lock @@ -593,76 +593,7 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" - integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== - dependencies: - "@ethereumjs/common" "^2.6.3" - "@ethereumjs/tx" "^3.5.1" - ethereumjs-util "^7.1.4" - merkle-patricia-tree "^4.2.4" - -"@ethereumjs/blockchain@^5.5.2", "@ethereumjs/blockchain@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" - integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/ethash" "^1.1.0" - debug "^4.3.3" - ethereumjs-util "^7.1.5" - level-mem "^5.0.1" - lru-cache "^5.1.1" - semaphore-async-await "^1.5.1" - -"@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" - integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" - -"@ethereumjs/ethash@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" - integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== - dependencies: - "@ethereumjs/block" "^3.5.0" - "@types/levelup" "^4.3.0" - buffer-xor "^2.0.1" - ethereumjs-util "^7.1.1" - miller-rabin "^4.0.0" - -"@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== - dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" - -"@ethereumjs/vm@^5.9.0": - version "5.9.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.2.tgz#e707976d507793096e449a87f0b204f614421cee" - integrity sha512-6zvH7iuMI7+74aGak6j9+GDYpV2T08vy2FL4iSK1PId7lNyjFELCAzDCSTQcVoyPoRMkZvRHy79W+djwvguMCA== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.3" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.2" - async-eventemitter "^0.2.4" - core-js-pure "^3.0.1" - debug "^4.3.3" - ethereumjs-util "^7.1.5" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - merkle-patricia-tree "^4.2.4" - rustbn.js "~0.2.0" - -"@ethersproject/abi@5.6.3", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.0", "@ethersproject/abi@^5.6.3": +"@ethersproject/abi@5.6.3", "@ethersproject/abi@^5.6.0", "@ethersproject/abi@^5.6.3": version "5.6.3" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.3.tgz#2d643544abadf6e6b63150508af43475985c23db" integrity sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw== @@ -1985,17 +1916,6 @@ "@openzeppelin/contracts" "^4.3.2" "@openzeppelin/contracts-upgradeable" "^4.3.2" -"@metamask/eth-sig-util@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" - integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^6.2.1" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - "@netlify/open-api@^2.8.0": version "2.9.0" resolved "https://registry.yarnpkg.com/@netlify/open-api/-/open-api-2.9.0.tgz#3fd18a95c06e7f11aad20b15c1e525accc86369f" @@ -2022,11 +1942,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers": - version "0.3.0-beta.13" - resolved "https://registry.yarnpkg.com/hardhat-deploy-ethers/-/hardhat-deploy-ethers-0.3.0-beta.13.tgz#b96086ff768ddf69928984d5eb0a8d78cfca9366" - integrity sha512-PdWVcKB9coqWV1L7JTpfXRCI91Cgwsm7KLmBcwZ8f0COSm1xtABHZTyz3fvF6p42cTnz1VM0QnfDvMFlIRkSNw== - "@npmcli/ci-detect@^1.0.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz#18478bbaa900c37bfbd8a2006a6262c62e8b0fe1" @@ -2292,74 +2207,6 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sentry/core@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" - integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/hub@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" - integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== - dependencies: - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/minimal@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" - integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sentry/node@^5.18.1": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" - integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== - dependencies: - "@sentry/core" "5.30.0" - "@sentry/hub" "5.30.0" - "@sentry/tracing" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/tracing@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" - integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/types@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" - integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== - -"@sentry/utils@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" - integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== - dependencies: - "@sentry/types" "5.30.0" - tslib "^1.9.3" - "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -2451,18 +2298,6 @@ lodash "^4.17.15" ts-essentials "^7.0.1" -"@typechain/hardhat@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-5.0.0.tgz#3a4fa36aa7a11e6a59ff2ac729e2cb4f8be3270a" - integrity sha512-Pqk+KdREbU6Uk3en1Z5caQpWt2bKU+KTOi+6dZwcIXJpF1wKoAwF1cbaYSQEzrG4BSUTM1rHQhW5JHSfeqpsAg== - dependencies: - fs-extra "^9.1.0" - -"@types/abstract-leveldown@*": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#f055979a99f7654e84d6b8e6267419e9c4cfff87" - integrity sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ== - "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": version "7.1.19" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" @@ -2496,20 +2331,6 @@ dependencies: "@babel/types" "^7.3.0" -"@types/bn.js@^4.11.3": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== - dependencies: - "@types/node" "*" - -"@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - "@types/clear@^0.1.2": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/clear/-/clear-0.1.2.tgz#131050f8a7b429ae0e4ca390339ea9977ca977bd" @@ -2600,30 +2421,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== -"@types/level-errors@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" - integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== - -"@types/levelup@^4.3.0": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" - integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== - dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" - "@types/node" "*" - "@types/lodash@^4.14.182": version "4.14.182" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2" integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q== -"@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== - "@types/minimatch@*", "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -2661,13 +2463,6 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - "@types/prettier@^2.1.1", "@types/prettier@^2.1.5": version "2.6.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" @@ -2678,11 +2473,6 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== -"@types/qs@^6.9.7": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== - "@types/react-collapse@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@types/react-collapse/-/react-collapse-5.0.1.tgz#078ea1ad15e00ba2063f2e4d8d6760c9375a2023" @@ -2734,13 +2524,6 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" @@ -2888,11 +2671,6 @@ "@typescript-eslint/types" "5.27.1" eslint-visitor-keys "^3.3.0" -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - "@use-gesture/core@10.2.15": version "10.2.15" resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.15.tgz#ed55e85211eb6129a7979f177f1831d078087d22" @@ -2923,35 +2701,6 @@ abbrev@1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abstract-leveldown@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" - integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -abstract-leveldown@~6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - acorn-globals@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" @@ -2995,11 +2744,6 @@ add-stream@^1.0.0: resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" integrity sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ== -adm-zip@^0.4.16: - version "0.4.16" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" - integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== - aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -3046,12 +2790,7 @@ ansi-align@^3.0.0: dependencies: string-width "^4.1.0" -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-colors@^4.1.0, ansi-colors@^4.1.1: +ansi-colors@^4.1.1: version "4.1.3" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== @@ -3253,13 +2992,6 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -async-eventemitter@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - async-mutex@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.3.2.tgz#1485eda5bda1b0ec7c8df1ac2e815757ad1831df" @@ -3267,14 +2999,7 @@ async-mutex@^0.3.2: dependencies: tslib "^2.3.1" -async@^2.4.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -async@^3.2.0: +async@^3.2.0, async@^3.2.3: version "3.2.4" resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== @@ -3299,13 +3024,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.21.1: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axios@^0.25.0: version "0.25.0" resolved "https://registry.yarnpkg.com/axios/-/axios-0.25.0.tgz#349cfbb31331a9b4453190791760a8d35b093e0a" @@ -3395,13 +3113,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.2: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -3442,11 +3153,6 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - blob-util@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" @@ -3457,12 +3163,12 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: +bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: +bn.js@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== @@ -3503,7 +3209,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: +brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== @@ -3513,23 +3219,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - browserslist@^4.20.2: version "4.20.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" @@ -3548,22 +3237,6 @@ bs-logger@0.x: dependencies: fast-json-stable-stringify "2.x" -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3581,18 +3254,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer-xor@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" - integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== - dependencies: - safe-buffer "^5.1.1" - buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" @@ -3621,11 +3282,6 @@ byte-size@^7.0.0: resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - cacache@^15.0.5, cacache@^15.2.0: version "15.3.0" resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.3.0.tgz#dc85380fb2f556fe3dda4c719bfa0ec875a7f1eb" @@ -3719,7 +3375,7 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0, camelcase@^6.2.0: +camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -3748,7 +3404,7 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3796,7 +3452,7 @@ check-more-types@^2.24.0: resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: +chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -3831,14 +3487,6 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" @@ -4014,11 +3662,6 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - command-line-args@^5.1.1: version "5.2.1" resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" @@ -4044,11 +3687,6 @@ commander@2.18.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" integrity sha512-6CYPa+JP2ftfRU2qkDK+UTVeQYosOg/2GbcjIcKPHfinyOLPVGXu/ovN86RP49Re5ndJK1N0kuiidFFuepc4ZQ== -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - commander@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" @@ -4240,11 +3878,6 @@ convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - copyfiles@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.1.tgz#d2dcff60aaad1015f09d0b66e7f0f1c5cd3c5da5" @@ -4258,11 +3891,6 @@ copyfiles@^2.4.1: untildify "^4.0.0" yargs "^16.1.0" -core-js-pure@^3.0.1: - version "3.22.8" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.8.tgz#f2157793b58719196ccf9673cc14f3683adc0957" - integrity sha512-bOxbZIy9S5n4OVH63XaLVXZ49QKicjowDx/UELyJ68vxfCRpYsbyh/WNZNfEfAk+ekA8vSjt+gCDpvh672bc3w== - core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -4302,34 +3930,6 @@ cosmiconfig@^7, cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -4525,13 +4125,6 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, d dependencies: ms "2.1.2" -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -4557,11 +4150,6 @@ decamelize@^1.1.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" @@ -4618,14 +4206,6 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" - define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" @@ -4644,21 +4224,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== -delete-empty@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/delete-empty/-/delete-empty-3.0.0.tgz#f8040f2669f26fa7060bc2304e9859c593b685e8" - integrity sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ== - dependencies: - ansi-colors "^4.1.0" - minimist "^1.2.0" - path-starts-with "^2.0.0" - rimraf "^2.6.2" - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -4712,11 +4277,6 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" @@ -4784,12 +4344,19 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +ejs@^3.1.8: + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== + dependencies: + jake "^10.8.5" + electron-to-chromium@^1.4.147: version "1.4.150" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.150.tgz#89f0e12505462d5df7e56c5b91aff7e1dfdd33ec" integrity sha512-MP3oBer0X7ZeS9GJ0H6lmkn561UxiwOIY9TTkdxVY7lI9G6GVCKfgJaHaDcakwdKxBXA4T3ybeswH/WBIN/KTA== -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: +elliptic@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== @@ -4827,21 +4394,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -encode-utf8@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" - integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== - -encoding-down@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" - integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== - dependencies: - abstract-leveldown "^6.2.1" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - encoding@^0.1.12: version "0.1.13" resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" @@ -4856,7 +4408,7 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -enquirer@^2.3.0, enquirer@^2.3.6: +enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -4878,13 +4430,6 @@ err-code@^2.0.2: resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== -errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -5071,11 +4616,6 @@ escape-goat@^2.0.0: resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -5086,6 +4626,11 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" @@ -5306,60 +4851,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - dependencies: - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - -ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" - integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -ethers@^5.5.2, ethers@^5.5.3, ethers@^5.6.6, ethers@^5.6.7: +ethers@^5.6.6, ethers@^5.6.7: version "5.6.8" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.8.tgz#d36b816b4896341a80a8bbd2a44e8cb6e9b98dd4" integrity sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w== @@ -5431,19 +4923,6 @@ ethers@^5.6.9: "@ethersproject/web" "5.6.1" "@ethersproject/wordlists" "5.6.1" -ethjs-util@0.1.6, ethjs-util@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter2@^6.4.3: version "6.4.5" resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" @@ -5454,14 +4933,6 @@ eventemitter3@^4.0.4, eventemitter3@^4.0.7: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - execa@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -5685,6 +5156,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +filelist@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -5717,15 +5195,7 @@ find-root@1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@5.0.0, find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^2.0.0, find-up@^2.1.0: +find-up@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== @@ -5740,6 +5210,14 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + findup-sync@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" @@ -5767,11 +5245,6 @@ flat-cache@^3.0.4: flatted "^3.1.0" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" @@ -5782,14 +5255,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== -fmix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" - integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== - dependencies: - imul "^1.0.0" - -follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.14.7: +follow-redirects@^1.14.7: version "1.15.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== @@ -5816,15 +5282,6 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5846,16 +5303,6 @@ formdata-polyfill@^4.0.10: dependencies: fetch-blob "^3.1.2" -fp-ts@1.19.3: - version "1.19.3" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" - integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== - -fp-ts@^1.0.0: - version "1.19.5" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" - integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== - from2@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" @@ -5878,17 +5325,6 @@ fs-extra@8.1.0: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" @@ -5898,7 +5334,7 @@ fs-extra@^10.0.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^7.0.0, fs-extra@^7.0.1: +fs-extra@^7.0.0: version "7.0.1" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== @@ -5956,7 +5392,7 @@ function.prototype.name@^1.1.5: es-abstract "^1.19.0" functions-have-names "^1.2.2" -functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: +functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== @@ -6152,18 +5588,6 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -6262,16 +5686,11 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.9: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - handlebars@^4.7.7: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" @@ -6302,95 +5721,6 @@ hard-rejection@^2.1.0: resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== -hardhat-abi-exporter@^2.8.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/hardhat-abi-exporter/-/hardhat-abi-exporter-2.9.0.tgz#abed78eb910a44b3bff1c850b30baabf8ca148f9" - integrity sha512-OTQoXAunRJzzAkccznPHjLLsufBjb7awpK/WQC/6rV0WLPgkQexflErnKmjhDEwTVw0i0zDybO3aZbB53vhfFw== - dependencies: - "@ethersproject/abi" "^5.5.0" - delete-empty "^3.0.0" - -hardhat-deploy@^0.11.5: - version "0.11.10" - resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.11.10.tgz#5d34020ae2d475a9278d5dd5f493d86290a35b4d" - integrity sha512-Iby2WhDuAdaKXFkcrMbaA9YWOgDMBnuwixCk4TfBBu8+mBGI9muYsbU/pCMkKfXA4MwSHENweJlfDMyyz7zcNA== - dependencies: - "@types/qs" "^6.9.7" - axios "^0.21.1" - chalk "^4.1.2" - chokidar "^3.5.2" - debug "^4.3.2" - enquirer "^2.3.6" - ethers "^5.5.3" - form-data "^4.0.0" - fs-extra "^10.0.0" - match-all "^1.2.6" - murmur-128 "^0.2.1" - qs "^6.9.4" - zksync-web3 "^0.4.0" - -hardhat-diamond-abi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hardhat-diamond-abi/-/hardhat-diamond-abi-2.0.0.tgz#4bbc45470710652632ea33122a5d6ecd4165efa2" - integrity sha512-HWEm01G7Q2+ebDR4i1q1GjZFZf1a3lzirSyHa7RX5Yt91Bo8AXH+klDBTy57m7qCm0gU7HFkYOfmCy3c0RAqmQ== - dependencies: - debug "^4.3.3" - ethers "^5.5.2" - -hardhat@^2.9.1: - version "2.9.9" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" - integrity sha512-Qv7SXnRc0zq1kGXruNnSKpP3eFccXMR5Qv6GVX9hBIJ5efN0PflKPq92aQ5Cv3jrjJeRevLznWZVz7bttXhVfw== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.2" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.1" - "@ethereumjs/vm" "^5.9.0" - "@ethersproject/abi" "^5.1.2" - "@metamask/eth-sig-util" "^4.0.0" - "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.14.1" - "@types/bn.js" "^5.1.0" - "@types/lru-cache" "^5.1.0" - abort-controller "^3.0.0" - adm-zip "^0.4.16" - aggregate-error "^3.0.0" - ansi-escapes "^4.3.0" - chalk "^2.4.2" - chokidar "^3.4.0" - ci-info "^2.0.0" - debug "^4.1.1" - enquirer "^2.3.0" - env-paths "^2.2.0" - ethereum-cryptography "^0.1.2" - ethereumjs-abi "^0.6.8" - ethereumjs-util "^7.1.4" - find-up "^2.1.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - glob "7.2.0" - immutable "^4.0.0-rc.12" - io-ts "1.10.4" - lodash "^4.17.11" - merkle-patricia-tree "^4.2.4" - mnemonist "^0.38.0" - mocha "^9.2.0" - p-map "^4.0.0" - qs "^6.7.0" - raw-body "^2.4.1" - resolve "1.17.0" - semver "^6.3.0" - slash "^3.0.0" - solc "0.7.3" - source-map-support "^0.5.13" - stacktrace-parser "^0.1.10" - "true-case-path" "^2.2.1" - tsort "0.0.1" - undici "^5.4.0" - uuid "^8.3.2" - ws "^7.4.6" - has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -6442,16 +5772,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -6475,11 +5796,6 @@ hastscript@^6.0.0: property-information "^5.0.0" space-separated-tokens "^1.0.0" -he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - highlight.js@^10.4.1, highlight.js@~10.7.0: version "10.7.3" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531" @@ -6537,17 +5853,6 @@ http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" @@ -6651,21 +5956,6 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== - -immutable@^4.0.0-rc.12: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== - import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -6695,11 +5985,6 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" -imul@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" - integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -6723,7 +6008,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -6859,13 +6144,6 @@ into-stream@^6.0.0: from2 "^2.3.0" p-is-promise "^3.0.0" -io-ts@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" - integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== - dependencies: - fp-ts "^1.0.0" - ip@^1.1.5: version "1.1.8" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" @@ -7000,11 +6278,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== - is-hexadecimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" @@ -7070,7 +6343,7 @@ is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== -is-plain-obj@^2.0.0, is-plain-obj@^2.1.0: +is-plain-obj@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== @@ -7251,6 +6524,16 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== + dependencies: + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.1" + minimatch "^3.0.4" + jest-canvas-mock@^2.3.1: version "2.4.0" resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz#947b71442d7719f8e055decaecdb334809465341" @@ -7685,13 +6968,6 @@ js-sha3@0.8.0, js-sha3@^0.8.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.1.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -7700,6 +6976,13 @@ js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -7783,13 +7066,6 @@ json5@2.x, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -7831,15 +7107,6 @@ jsprim@^2.0.2: json-schema "0.4.0" verror "1.10.0" -keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -7852,13 +7119,6 @@ kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" - kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -7900,77 +7160,6 @@ lerna@^4.0.0: import-local "^3.0.2" npmlog "^4.1.2" -level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" - -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== - -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== - dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" - -level-mem@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" - integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== - dependencies: - level-packager "^5.0.3" - memdown "^5.0.0" - -level-packager@^5.0.3: - version "5.1.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" - integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== - dependencies: - encoding-down "^6.3.0" - levelup "^4.3.2" - -level-supports@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== - dependencies: - xtend "^4.0.2" - -level-ws@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" - integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== - dependencies: - inherits "^2.0.3" - readable-stream "^3.1.0" - xtend "^4.0.1" - -levelup@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== - dependencies: - deferred-leveldown "~5.3.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -8167,7 +7356,7 @@ lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: +log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -8215,13 +7404,6 @@ lowlight@^1.17.0: fault "^1.0.0" highlight.js "~10.7.0" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -8229,16 +7411,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - -ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== - magic-string@^0.25.2, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -8326,37 +7498,6 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -match-all@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" - integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== - -mcl-wasm@^0.7.1: - version "0.7.9" - resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" - integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -memdown@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" - integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== - dependencies: - abstract-leveldown "~6.2.1" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.2.0" - "memmove@https://github.com/brockelmore/memmove.git#d577ecd1bc43656f4032edf4daa9797f756a8ad2": version "0.0.0" resolved "https://github.com/brockelmore/memmove.git#d577ecd1bc43656f4032edf4daa9797f756a8ad2" @@ -8398,18 +7539,6 @@ merge@^2.1.1: resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== -merkle-patricia-tree@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" - integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== - dependencies: - "@types/levelup" "^4.3.0" - ethereumjs-util "^7.1.4" - level-mem "^5.0.1" - level-ws "^2.0.0" - readable-stream "^3.6.0" - semaphore-async-await "^1.5.1" - micro-api-client@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/micro-api-client/-/micro-api-client-3.3.0.tgz#52dd567d322f10faffe63d19d4feeac4e4ffd215" @@ -8423,14 +7552,6 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: braces "^3.0.2" picomatch "^2.3.1" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -8483,13 +7604,6 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -8626,13 +7740,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mnemonist@^0.38.0: - version "0.38.5" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" - integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== - dependencies: - obliterator "^2.0.0" - mobx-react-lite@^3.3.0, mobx-react-lite@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-3.4.0.tgz#d59156a96889cdadad751e5e4dab95f28926dfff" @@ -8648,36 +7755,6 @@ mobx@^6.4.2, mobx@^6.5.0, mobx@^6.6.0: resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.6.0.tgz#617ca1f3b745a781fa89c5eb94a773e3cbeff8ae" integrity sha512-MNTKevLH/6DShLZcmSL351+JgiJPO56A4GUpoiDQ3/yZ0mAtclNLdHK9q4BcQhibx8/JSDupfTpbX2NZPemlRg== -mocha@^9.2.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - modify-values@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" @@ -8695,7 +7772,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.0.0, ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -8719,15 +7796,6 @@ multistream@^4.1.0: once "^1.4.0" readable-stream "^3.6.0" -murmur-128@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" - integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== - dependencies: - encode-utf8 "^1.0.2" - fmix "^0.1.0" - imul "^1.0.0" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -8738,10 +7806,10 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nan@^2.14.0: + version "2.16.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" + integrity sha512-UdAqHyFngu7TfQKsCBgAA6pWDkT8MAO7d0jyOecVhN5354xbLqdn8mV9Tat9gepAupm0bt2DbeaSC8vS52MuFA== nanoid@^3.3.4: version "3.3.4" @@ -8793,11 +7861,6 @@ node-abi@^2.21.0: dependencies: semver "^5.4.1" -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -8810,7 +7873,7 @@ node-fetch@^2.6.1, node-fetch@^2.6.6, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^3.0.0: +node-fetch@^3.0.0, node-fetch@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.6.tgz#6d4627181697a9d9674aae0d61548e0d629b31b9" integrity sha512-LAy/HZnLADOVkVPubaxHDft29booGglPFDr2Hw0J1AercRh01UiVFm++KMDnJeH9sHgNB4hsXPii7Sgym/sTbw== @@ -8819,11 +7882,6 @@ node-fetch@^3.0.0: fetch-blob "^3.1.4" formdata-polyfill "^4.0.10" -node-gyp-build@^4.2.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== - node-gyp@^5.0.2: version "5.1.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" @@ -8862,6 +7920,13 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== +node-pty@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/node-pty/-/node-pty-0.10.1.tgz#cd05d03a2710315ec40221232ec04186f6ac2c6d" + integrity sha512-JTdtUS0Im/yRsWJSx7yiW9rtpfmxqxolrtnyKwPLI+6XqTAPW/O2MjS8FYL4I5TsMbH2lVgDb2VMjp+9LoQGNg== + dependencies: + nan "^2.14.0" + node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" @@ -9125,11 +8190,6 @@ object.getownpropertydescriptors@^2.0.3: define-properties "^1.1.4" es-abstract "^1.20.1" -obliterator@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" - integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== - observable-webworker@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/observable-webworker/-/observable-webworker-4.0.1.tgz#9d8ba192d582a128b089460b15140f7501026477" @@ -9505,16 +8565,11 @@ path-key@^4.0.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-starts-with@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-starts-with/-/path-starts-with-2.0.0.tgz#ffd6d51926cd497022b44d392196033d5451892f" - integrity sha512-3UHTHbJz5+NLkPafFR+2ycJOjoc4WV2e9qCZCnm71zHiWaFrm1XniLVTkZXvaRgxr1xFh9JsTdicpH2yM03nLA== - path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -9535,17 +8590,6 @@ path@^0.12.7: process "^0.11.1" util "^0.10.3" -pbkdf2@^3.0.17: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -9826,11 +8870,6 @@ proxy-from-env@1.0.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -9866,7 +8905,7 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qs@^6.7.0, qs@^6.9.4, qs@^6.9.6: +qs@^6.9.4, qs@^6.9.6: version "6.10.5" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== @@ -9898,23 +8937,6 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -raw-body@^2.4.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - rc@^1.2.7, rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -10066,7 +9088,7 @@ read@1, read@~1.0.1: dependencies: mute-stream "~0.0.4" -readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.0, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -10213,11 +9235,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -10260,13 +9277,6 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - resolve@^1.10.0, resolve@^1.11.0, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" @@ -10321,7 +9331,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.6.2, rimraf@^2.6.3: +rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -10335,21 +9345,6 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.2.3, rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - rollup-plugin-commonjs@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" @@ -10392,10 +9387,13 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== +run-pty@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/run-pty/-/run-pty-3.0.0.tgz#1be5c9e71fee2d254d7278104045041f8f55b9a8" + integrity sha512-FsDF3+/xsBdHMK4zqT3/pV+au7JvFBzxgnmBHTIHrT26INuU2kd0q5oIXjbbspwv09vh5JKPN7Eu1oF/gOZ4jA== + dependencies: + node-pty "^0.10.1" + tiny-decoders "^6.0.1" rxjs@^5.5.2: version "5.5.12" @@ -10418,7 +9416,7 @@ rxjs@^7.2.0, rxjs@^7.5.1, rxjs@^7.5.4, rxjs@^7.5.5: dependencies: tslib "^2.1.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -10447,25 +9445,11 @@ scheduler@^0.22.0: dependencies: loose-envify "^1.1.0" -scrypt-js@3.0.1, scrypt-js@^3.0.0: +scrypt-js@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semaphore-async-await@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" - integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== - semver-diff@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" @@ -10490,36 +9474,11 @@ semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - shallow-clone@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" @@ -10670,21 +9629,6 @@ socks@^2.3.3, socks@^2.6.2: ip "^1.1.5" smart-buffer "^4.2.0" -solc@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" - integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - follow-redirects "^1.12.1" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - solhint@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.7.tgz#b5da4fedf7a0fee954cb613b6c55a5a2b0063aa7" @@ -10731,7 +9675,7 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@^0.5.13, source-map-support@^0.5.6: +source-map-support@^0.5.6: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -10838,18 +9782,6 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - stream-meter@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/stream-meter/-/stream-meter-1.0.4.tgz#52af95aa5ea760a2491716704dbff90f73afdd1d" @@ -11025,13 +9957,6 @@ strip-final-newline@^3.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== - dependencies: - is-hex-prefixed "1.0.0" - strip-indent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" @@ -11044,16 +9969,16 @@ strip-json-comments@3.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" @@ -11079,13 +10004,6 @@ styled-components@^5.3.5: shallowequal "^1.1.0" supports-color "^5.5.0" -supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - supports-color@^5.3.0, supports-color@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -11100,6 +10018,13 @@ supports-color@^7.0.0, supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +supports-color@^8.0.0, supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + supports-hyperlinks@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" @@ -11262,7 +10187,12 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -tmp@0.0.33, tmp@^0.0.33: +tiny-decoders@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/tiny-decoders/-/tiny-decoders-6.0.1.tgz#e296333ec32dd007740e8dc6d45cad980883011f" + integrity sha512-dhL3vj2ge2jRKBHwKXL4w1BzjzjUBJoxsgzsLrCDhtq0CCKt2XXFfCQSEnttWSbqFAzwFfyIae+YR7Moab6w0w== + +tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== @@ -11298,11 +10228,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" @@ -11344,11 +10269,6 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - ts-command-line-args@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" @@ -11397,7 +10317,7 @@ ts-node@^10.7.0, ts-node@^10.8.0: v8-compile-cache-lib "^3.0.1" yn "3.1.1" -tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -11407,11 +10327,6 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== -tsort@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" - integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= - tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -11426,21 +10341,11 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" @@ -11485,11 +10390,6 @@ type-fest@^0.6.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - type-fest@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" @@ -11589,11 +10489,6 @@ undefsafe@^2.0.5: resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -undici@^5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.4.0.tgz#c474fae02743d4788b96118d46008a24195024d2" - integrity sha512-A1SRXysDg7J+mVP46jF+9cKANw0kptqSFZ8tGyL+HBiv0K1spjxPX8Z4EGu+Eu6pjClJUBdnUPlxrOafR668/g== - unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -11630,11 +10525,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - untildify@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" @@ -11862,13 +10752,6 @@ which-boxed-primitive@^1.0.2: is-string "^1.0.5" is-symbol "^1.0.3" -which@2.0.2, which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -11876,6 +10759,13 @@ which@^1.2.14, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + wide-align@^1.1.0: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -11908,11 +10798,6 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.2.0" -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -12020,7 +10905,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -12030,7 +10915,7 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: +yallist@^3.0.0, yallist@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== @@ -12065,17 +10950,7 @@ yargs-parser@^21.0.0: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@16.2.0, yargs@^16.1.0, yargs@^16.2.0: +yargs@^16.1.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== @@ -12118,8 +10993,3 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zksync-web3@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.4.0.tgz#9ab3e8648a6ab11d42b649b3458a0383d6c41bab" - integrity sha512-LmrjkQlg2YSR+P0J1NQKtkraCN2ESKfVoMxole3NxesrASQTsk6fR5+ph/8Vucq/Xh8EoAafp07+Q6TavP/TTw==