diff --git a/.config/husky/pre-commit b/.config/husky/pre-commit deleted file mode 100755 index fab6428a..00000000 --- a/.config/husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -pnpm lint-staged diff --git a/packages/evmcrispr/.env.example b/.env.example similarity index 100% rename from packages/evmcrispr/.env.example rename to .env.example diff --git a/.eslintrc b/.eslintrc index 032c139b..93a8a840 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,69 +1,3 @@ { - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "ecmaVersion": 8, - "sourceType": "module", - "ecmaFeatures": { - "impliedStrict": true, - "experimentalObjectRestSpread": true - }, - "allowImportExportEverywhere": true - }, - "plugins": ["@typescript-eslint", "import"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/recommended", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:import/typescript", - "plugin:prettier/recommended", - "prettier" - ], - "rules": { - "import/order": [ - "error", - { - "groups": ["external", "internal"], - "newlines-between": "always-and-inside-groups" - } - ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/consistent-type-imports": "warn", - "sort-imports": [ - "warn", - { - "ignoreDeclarationSort": true - } - ], - "spaced-comment": [ - "error", - "always", - { - "block": { - "markers": ["*"], - "balanced": true - } - } - ] - }, - "ignorePatterns": ["node_modules", "dist", "CHANGELOG.md"], - "settings": { - "import/parsers": { - "@typescript-eslint/parser": [".ts", ".tsx", ".d.ts"] - }, - "import/resolver": { - "typescript": { - "alwaysTryTypes": true - } - } - }, - "env": { - "es6": true, - "browser": true, - "node": true, - "mocha": true - } + "extends": ["evmcrispr"] } diff --git a/.gitignore b/.gitignore index 465ede16..68a3e6c9 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,8 @@ act.secrets tsconfig.tsbuildinfo # typedocs -docs \ No newline at end of file +docs + +.turbo + +chain-manager.log \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 264b05e3..951b0fb1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,14 +1,20 @@ { + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", - "name": "hardhat test", - "skipFiles": ["/**"], - "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/hardhat", - "args": ["test"], - "cwd": "${workspaceFolder}/packages/evmcrispr/" + "name": "Launch Program", + "skipFiles": [ + "/**" + ], + "program": "${file}", + "outFiles": [ + "${workspaceFolder}/**/*.js" + ] } ] -} +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 193b496b..135f5a47 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,10 +11,5 @@ "solidity.packageDefaultDependenciesContractsDirectory": "", "solidity.packageDefaultDependenciesDirectory": "packages/hardhat/node_modules", "solidity.enabledAsYouTypeCompilationErrorCheck": true, - "solidity.validationDelay": 1500, - "mochaExplorer.env": { - "HARDHAT_CONFIG": "hardhat.config.ts", - "HARDHAT_COMPILE": "true" - }, - "mochaExplorer.require": ["ts-node/register/transpile-only"] + "solidity.validationDelay": 1500 } diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index d65dee3c..00000000 --- a/babel.config.js +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - presets: ['@babel/preset-typescript', '@babel/preset-react'], - - overrides: [ - { - include: ['./packages/evmcrispr', './packages/evmcrispr-terminal'], - presets: [['@babel/preset-env', { targets: 'defaults, not ie 11' }]], - }, - ], -}; diff --git a/common/eslint-config-evmcrispr/.eslintrc.js b/common/eslint-config-evmcrispr/.eslintrc.js new file mode 100644 index 00000000..da930fd3 --- /dev/null +++ b/common/eslint-config-evmcrispr/.eslintrc.js @@ -0,0 +1,72 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + parserOptions: { + ecmaVersion: 8, + sourceType: 'module', + ecmaFeatures: { + impliedStrict: true, + experimentalObjectRestSpread: true, + }, + allowImportExportEverywhere: true, + }, + plugins: ['@typescript-eslint', 'import', 'turbo'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:import/errors', + 'plugin:import/warnings', + 'plugin:import/typescript', + 'plugin:prettier/recommended', + 'prettier', + 'turbo', + ], + rules: { + 'import/order': [ + 'error', + { + groups: ['external', 'internal'], + 'newlines-between': 'always-and-inside-groups', + alphabetize: { order: 'asc' }, + }, + ], + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'warn', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/consistent-type-imports': 'warn', + 'sort-imports': [ + 'warn', + { + ignoreDeclarationSort: true, + }, + ], + 'spaced-comment': [ + 'error', + 'always', + { + block: { + markers: ['*'], + balanced: true, + }, + }, + ], + 'turbo/no-undeclared-env-vars': 'warn', + }, + ignorePatterns: ['node_modules', 'dist', 'CHANGELOG.md'], + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx', '.d.ts'], + }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + }, + }, + }, + env: { + es6: true, + browser: true, + node: true, + mocha: true, + }, +}; diff --git a/common/eslint-config-evmcrispr/index.js b/common/eslint-config-evmcrispr/index.js new file mode 100644 index 00000000..1852a917 --- /dev/null +++ b/common/eslint-config-evmcrispr/index.js @@ -0,0 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-var-requires +const eslintrc = require('./.eslintrc'); + +module.exports = eslintrc; diff --git a/common/eslint-config-evmcrispr/package.json b/common/eslint-config-evmcrispr/package.json new file mode 100644 index 00000000..59b437ba --- /dev/null +++ b/common/eslint-config-evmcrispr/package.json @@ -0,0 +1,27 @@ +{ + "name": "eslint-config-evmcrispr", + "private": true, + "main": "index.js", + "description": "Test helpers for the EVMcrispr library", + "author": "Blossom Labs", + "license": "GPL-3.0", + "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", + "eslint": "^7.32.0", + "eslint-config-prettier": "^8.5.0", + "eslint-config-turbo": "^0.0.7", + "eslint-import-resolver-typescript": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-react": "^7.29.4", + "eslint-plugin-react-hooks": "^4.5.0", + "eslint-plugin-turbo": "^0.0.7", + "prettier": "^2.6.2", + "typescript": "4.7.4" + }, + "peerDependencies": { + "eslint": "^7.32.0", + "typescript": "4.7.4" + } +} diff --git a/common/test/.eslintrc b/common/test/.eslintrc new file mode 100644 index 00000000..5b77555d --- /dev/null +++ b/common/test/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["evmcrispr"] +} diff --git a/common/test/hardhat.config.ts b/common/test/hardhat.config.ts new file mode 100644 index 00000000..e0c682d1 --- /dev/null +++ b/common/test/hardhat.config.ts @@ -0,0 +1,15 @@ +import type { HardhatUserConfig } from 'hardhat/config'; + +const FORK_CHAIN_ID = parseInt(process.env.FORK_CHAIN_ID ?? '100'); + +if (!FORK_CHAIN_ID) { + throw new Error('Missing FORK_CHAIN_ID env variable'); +} + +export const config: HardhatUserConfig = { + networks: { + hardhat: { + chainId: FORK_CHAIN_ID, + }, + }, +}; diff --git a/common/test/package.json b/common/test/package.json new file mode 100644 index 00000000..fe53a874 --- /dev/null +++ b/common/test/package.json @@ -0,0 +1,32 @@ +{ + "name": "@1hive/evmcrispr-test-common", + "private": true, + "main": "src/index.ts", + "description": "Test helpers for the EVMcrispr library", + "scripts": { + "lint": "tsc --noEmit && eslint", + "create-fixtures": "ts-node scripts/create-fixtures.ts" + }, + "exports": { + ".": "./src/index.ts", + "./setups/file": "./setups/file.ts", + "./setups/global": "./setups/global.ts", + "./hardhat.config": "./hardhat.config.ts", + "./vite.config": "./vite.config.ts" + }, + "author": "Blossom Labs", + "license": "GPL-3.0", + "devDependencies": { + "@1hive/evmcrispr": "workspace:^0.9.0", + "@types/express": "^4.17.15", + "arcsecond": "^4.1.0", + "eslint-config-evmcrispr": "workspace:*", + "tsconfig-evmcrispr": "workspace:*", + "express": "^4.18.2", + "is-port-reachable": "^4.0.0", + "isomorphic-fetch": "^3.0.0", + "msw": "^0.47.3", + "ora": "^6.1.2", + "winston": "^3.8.2" + } +} diff --git a/packages/evmcrispr/scripts/create-fixtures.ts b/common/test/scripts/create-fixtures.ts similarity index 97% rename from packages/evmcrispr/scripts/create-fixtures.ts rename to common/test/scripts/create-fixtures.ts index a15ce0aa..195d34e1 100644 --- a/packages/evmcrispr/scripts/create-fixtures.ts +++ b/common/test/scripts/create-fixtures.ts @@ -1,11 +1,10 @@ -import ora from 'ora'; - -import fs from 'fs'; - +import { IPFSResolver } from '@1hive/evmcrispr'; import { fetchAppArtifact, parseContentUri, -} from '../src/modules/aragonos/utils'; +} from '@1hive/evmcrispr-aragonos-module/src/utils'; +import ora from 'ora'; + import { basePath, fetchOrganizationApps, @@ -14,7 +13,7 @@ import { generateMockDAOFile, generateSubgraphDataIndexFile, } from './helpers/fixtures'; -import { IPFSResolver } from '../src/IPFSResolver'; +import fs from 'fs'; // // Rinkeby // const CHAIN_ID = 4; diff --git a/packages/evmcrispr/scripts/helpers/fixtures.ts b/common/test/scripts/helpers/fixtures.ts similarity index 95% rename from packages/evmcrispr/scripts/helpers/fixtures.ts rename to common/test/scripts/helpers/fixtures.ts index 549b1749..cb6f79d2 100644 --- a/packages/evmcrispr/scripts/helpers/fixtures.ts +++ b/common/test/scripts/helpers/fixtures.ts @@ -1,11 +1,12 @@ -import fs from 'fs'; -import { subgraphUrlFromChainId } from '../../src/modules/aragonos/Connector'; +import { subgraphUrlFromChainId } from '@1hive/evmcrispr-aragonos-module/src/Connector'; import { ORGANIZATION_APPS, REPO, getSystemApp, parseRegistry, -} from '../../src/modules/aragonos/utils'; +} from '@1hive/evmcrispr-aragonos-module/src/utils'; + +import fs from 'fs'; export const basePath = (relativePath: string): string => `test/fixtures/${relativePath}`; diff --git a/common/test/setups/file.ts b/common/test/setups/file.ts new file mode 100644 index 00000000..6a8b3ce0 --- /dev/null +++ b/common/test/setups/file.ts @@ -0,0 +1,70 @@ +import type { Wallet } from 'ethers'; +import 'isomorphic-fetch'; +import type { setupServer } from 'msw/lib/node'; + +import { buildChainEndpoint } from '../src/chain-manager/helpers'; +import { getWallets } from '../src/ethers'; +import { setUpServer as setUpServer_ } from '../src/server'; + +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKER_ID = process.env.VITEST_POOL_ID; + +declare module 'vitest' { + export interface Suite { + utils: { + getWallets(): Promise; + }; + } +} + +export type SetupOptions = { + customServerHandlers?: Parameters; + chainManagerPort: number; +}; + +export function runSetup({ + customServerHandlers = [], + chainManagerPort, +}: SetupOptions): void { + const server = setUpServer_(customServerHandlers); + const chainManagerEndpoint = buildChainEndpoint(chainManagerPort); + + beforeAll((ctx) => { + ctx.utils = { + getWallets() { + return getWallets(chainManagerPort); + }, + }; + + server.listen({ + onUnhandledRequest: (req) => { + if (req.url.hostname === 'localhost') { + return 'bypass'; + } + + // Display warning when running on node.js environment + console.warn(`WARNING: Unhandled request: ${req.url}`); + return 'warn'; + }, + }); + }); + + beforeEach(() => { + server.resetHandlers(); + }); + + afterAll(async () => { + server.close(); + + const response = await fetch( + `${chainManagerEndpoint}/reset?index=${WORKER_ID}`, + ); + + if (response.status !== 200) { + const data = await response.json(); + throw new Error( + `An error occured while resetting chain: ${data.message}`, + ); + } + }); +} diff --git a/common/test/setups/global.ts b/common/test/setups/global.ts new file mode 100644 index 00000000..cd2aa9a8 --- /dev/null +++ b/common/test/setups/global.ts @@ -0,0 +1,9 @@ +import { closeServer, runServer } from '../src/chain-manager/app'; + +export async function setup(port: number): Promise { + await runServer(port); +} + +export function teardown(): void { + closeServer(); +} diff --git a/common/test/src/chain-manager/app.ts b/common/test/src/chain-manager/app.ts new file mode 100644 index 00000000..c8f61d6f --- /dev/null +++ b/common/test/src/chain-manager/app.ts @@ -0,0 +1,220 @@ +import { providers } from 'ethers'; +import type { ErrorRequestHandler } from 'express'; +import express from 'express'; +import isPortReachable from 'is-port-reachable'; + +import { CHAIN_CREATION_TIMEOUT_MS, HOST } from './constants'; +import { + buildChainEndpoint, + createChain, + getBasePort, + removeLogFile, + sleep, +} from './helpers'; +import { logger } from './logger'; +import type { + ChainData as ChainProcessData, + ChainResponseBody, + ErrorResponseBody, +} from './types'; +import type { Server } from 'http'; +import { StringDecoder } from 'string_decoder'; + +const ARCHIVE_NODE_ENDPOINT = process.env.ARCHIVE_NODE_ENDPOINT; +const FORK_BLOCK_NUMBER = process.env.FORK_BLOCK_NUMBER; +// eslint-disable-next-line turbo/no-undeclared-env-vars +const LOG_CHAINS = Boolean(process.env.LOG_CHAINS); +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKERS_LENGTH = parseInt(process.env.WORKERS_LENGTH ?? '8'); + +let currentPort: number; + +if (!ARCHIVE_NODE_ENDPOINT) { + throw new Error('Missing ARCHIVE_NODE_ENDPOINT'); +} + +if (!FORK_BLOCK_NUMBER) { + throw new Error('Missing FORK_BLOCK_NUMBER'); +} + +const app = express(); +let server: Server | undefined; + +const CHAIN_PROCESSES: Record = {}; +const decoder = new StringDecoder('utf-8'); + +app.get( + '/chain', + async (req, res, next) => { + const workerIndex = parseInt((req.query['index'] as string) ?? '1'); + + const chainPort = getBasePort(currentPort, WORKERS_LENGTH) + workerIndex; + const chainEndpoint = buildChainEndpoint(chainPort); + + if (!CHAIN_PROCESSES[workerIndex]) { + const portInUsed = await isPortReachable(chainPort, { + host: HOST, + }); + + if (portInUsed) { + next( + new Error( + `/chain - Couldn't create worker chain ${workerIndex} on port ${chainPort} as it's already in used`, + ), + ); + return; + } + + try { + let isReady = false; + let error; + + logger.info( + `/chain - Creating chain with id ${workerIndex} on port ${chainPort}…`, + ); + + const chainProcess = createChain( + chainPort, + ARCHIVE_NODE_ENDPOINT, + FORK_BLOCK_NUMBER, + (data) => { + if (LOG_CHAINS) { + logger.verbose( + `(id: ${workerIndex}, port ${chainPort}) ${decoder.write( + data, + )}`, + ); + } + isReady = true; + }, + (err) => { + if (LOG_CHAINS) { + logger.error(`(id: ${workerIndex}, port ${chainPort}) ${err}`); + } + isReady = true; + error = err; + }, + ); + + // Wait until the chain subprocess is ready or timeout triggers + await Promise.race([ + (async function () { + while (!isReady) { + await sleep(); + } + })(), + new Promise((_, reject) => + setTimeout(() => reject(), CHAIN_CREATION_TIMEOUT_MS), + ), + ]); + + if (error) { + next(error); + return; + } + + logger.info( + `/chain - Worker chain ${workerIndex} on port ${chainPort} ready!`, + ); + + const provider = new providers.JsonRpcProvider(chainEndpoint); + + const snapshotId = (await provider.send('evm_snapshot', [])) as string; + + CHAIN_PROCESSES[workerIndex] = { + process: chainProcess, + port: chainPort, + snapshot: snapshotId, + provider, + }; + } catch (err) { + next( + new Error( + `/chain - An error occured while creating worker chain ${workerIndex} ${ + err ? `:${err}` : '' + }`, + ), + ); + return; + } + } + + res.status(200).json({ endpoint: chainEndpoint }); + }, +); + +app.get('/reset', async (req, res, next) => { + const workerIndex = parseInt((req.query['index'] as string) ?? '1'); + const chain = CHAIN_PROCESSES[workerIndex]; + + if (!chain) { + next(new Error(`/reset - Worker chain ${workerIndex} not found`)); + return; + } + + const { provider, snapshot } = CHAIN_PROCESSES[workerIndex]; + + try { + await provider.send('evm_revert', [snapshot]); + const snapshotId = await provider.send('evm_snapshot', []); + CHAIN_PROCESSES[workerIndex].snapshot = snapshotId; + + res.sendStatus(200); + } catch (err) { + const err_ = err as Error; + next( + new Error( + `/reset - An error occurred while resetting worker chain ${workerIndex}: ${err_.message}`, + ), + ); + } +}); + +const errorHandler: ErrorRequestHandler = function ( + error, + _req, + res, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _next, +) { + const [, message] = error.message.split('-'); + logger.error(error.message); + res.status(500).json({ message: message.trim() }); +}; + +app.use(errorHandler); + +export async function runServer(port: number): Promise { + removeLogFile(); + + currentPort = port; + + const isServerRunning = await isPortReachable(port, { + host: HOST, + }); + + if (isServerRunning) { + throw new Error( + `Can't run chain manager as port ${port} is already in used`, + ); + } + + server = app.listen(port, () => { + logger.info(`Chain manager listening on port ${port}`); + }); +} + +export async function closeServer(): Promise { + logger.info('Closing chain manager server'); + + if (!server) { + throw new Error( + `Error when closing chain manager. Can't found server on port ${currentPort}`, + ); + } + + Object.keys(CHAIN_PROCESSES) + .map((key) => CHAIN_PROCESSES[key]) + .forEach(({ process }) => process.kill()); + server.close(); +} diff --git a/common/test/src/chain-manager/constants.ts b/common/test/src/chain-manager/constants.ts new file mode 100644 index 00000000..cb91e717 --- /dev/null +++ b/common/test/src/chain-manager/constants.ts @@ -0,0 +1,3 @@ +export const CHAIN_CREATION_TIMEOUT_MS = 10000; +export const HOST = 'localhost'; +export const LOG_FILE_NAME = 'chain-manager.log'; diff --git a/common/test/src/chain-manager/helpers.ts b/common/test/src/chain-manager/helpers.ts new file mode 100644 index 00000000..ebe41083 --- /dev/null +++ b/common/test/src/chain-manager/helpers.ts @@ -0,0 +1,50 @@ +import type { ExecaChildProcess } from 'execa'; +import { execaCommand } from 'execa'; + +import { HOST, LOG_FILE_NAME } from './constants'; +import fs from 'fs'; + +export function buildChainEndpoint(port?: number | string): string { + return `http://${HOST}${port ? `:${port}` : ''}`; +} + +export function sleep(ms = 1000): Promise { + return new Promise((resolve) => setTimeout(() => resolve(), ms)); +} + +export function createChain( + port: number, + forkUrl: string, + forkBlockNumber: string, + onData?: (data: Buffer) => void, + onError?: (err: any) => void, +): ExecaChildProcess { + const chainProcess = execaCommand( + `hardhat node --port ${port} --fork ${forkUrl} --fork-block-number ${forkBlockNumber}`, + ); + if (onData) { + chainProcess.stdout?.addListener('data', onData); + } + if (onError) { + chainProcess.stdout?.addListener('error', onError); + } + + return chainProcess; +} + +export function removeLogFile(): void { + const path = `${process.cwd()}/${LOG_FILE_NAME}`; + if (fs.existsSync(path)) { + fs.unlinkSync(path); + } +} + +export const getBasePort = (port: number, threadsLength: number): number => { + const basePort = parseInt(port.toString().slice(1)); + + /** + * The first 100 ports are reserved to chain manager servers. + * The rest of them are reserved to forked chains. + */ + return basePort * threadsLength + 8100; +}; diff --git a/common/test/src/chain-manager/logger.ts b/common/test/src/chain-manager/logger.ts new file mode 100644 index 00000000..b63d70e7 --- /dev/null +++ b/common/test/src/chain-manager/logger.ts @@ -0,0 +1,26 @@ +import { createLogger, format, transports } from 'winston'; + +import { LOG_FILE_NAME } from './constants'; + +const { combine, align, timestamp, printf, colorize } = format; + +const CONSOLE_OUTPUT = Boolean(process.env.CONSOLE_OUTPUT); + +export const logger = createLogger({ + level: 'verbose', + format: combine( + timestamp({ + format: 'YYYY-MM-DD hh:mm:ss.SSS A', + }), + ...(CONSOLE_OUTPUT ? [colorize()] : []), + align(), + printf((info) => `[${info.timestamp}] ${info.level}: ${info.message}`), + ), + transports: [ + CONSOLE_OUTPUT + ? new transports.Console() + : new transports.File({ + filename: LOG_FILE_NAME, + }), + ], +}); diff --git a/common/test/src/chain-manager/types.ts b/common/test/src/chain-manager/types.ts new file mode 100644 index 00000000..f5894da7 --- /dev/null +++ b/common/test/src/chain-manager/types.ts @@ -0,0 +1,22 @@ +import type { providers } from 'ethers'; +import type { ExecaChildProcess } from 'execa'; + +export type ServerRunOptions = { + throwIfPortInUsed?: boolean; + port: number; +}; + +export type ChainResponseBody = { + endpoint: string; +}; + +export type ErrorResponseBody = { + message: string; +}; + +export type ChainData = { + process: ExecaChildProcess; + port: number; + snapshot: string; + provider: providers.JsonRpcProvider; +}; diff --git a/common/test/src/ethers.ts b/common/test/src/ethers.ts new file mode 100644 index 00000000..8f5b7b0a --- /dev/null +++ b/common/test/src/ethers.ts @@ -0,0 +1,42 @@ +import 'isomorphic-fetch'; +import { Wallet, providers } from 'ethers'; + +import { buildChainEndpoint } from './chain-manager/helpers'; + +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKER_ID = parseInt(process.env.VITEST_POOL_ID ?? '1'); + +const PRIVATE_KEYS = [ + '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80', + '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d', + '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a', + '0x7c852118294e51e653712a81e05800f419141751be58f605c371e15141b007a6', + '0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a', + '0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba', + '0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e', + '0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356', + '0xdbda1821b80551c9d65939329250298aa3472ba22feea921c0cf5d620ea67b97', + '0x2a871d0798f97d79848a013d4936a73bf4cc922c825d33c1cf7073dff6d409c6', +]; + +export async function getProvider( + chainManagerPort: number, +): Promise { + const chainManagerEndpoint = buildChainEndpoint(chainManagerPort); + const response = await fetch( + `${chainManagerEndpoint}/chain?index=${WORKER_ID}`, + ); + const data = await response.json(); + + if (response.status !== 200) { + throw new Error(`Error when trying to get provider: ${data.message}`); + } + + return new providers.JsonRpcProvider(data.endpoint); +} + +export async function getWallets(chainManagerPort: number): Promise { + const provider = await getProvider(chainManagerPort); + + return PRIVATE_KEYS.map((pk) => new Wallet(pk, provider)); +} diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC.json b/common/test/src/fixtures/artifacts/QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC.json rename to common/test/src/fixtures/artifacts/QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG.json b/common/test/src/fixtures/artifacts/QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG.json rename to common/test/src/fixtures/artifacts/QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmTgqjnoPb7jfKBaKDYBYt9DR1YnwvGtiHQYEzvG7BW6DX.json b/common/test/src/fixtures/artifacts/QmTgqjnoPb7jfKBaKDYBYt9DR1YnwvGtiHQYEzvG7BW6DX.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmTgqjnoPb7jfKBaKDYBYt9DR1YnwvGtiHQYEzvG7BW6DX.json rename to common/test/src/fixtures/artifacts/QmTgqjnoPb7jfKBaKDYBYt9DR1YnwvGtiHQYEzvG7BW6DX.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr.json b/common/test/src/fixtures/artifacts/QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr.json rename to common/test/src/fixtures/artifacts/QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC.json b/common/test/src/fixtures/artifacts/QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC.json rename to common/test/src/fixtures/artifacts/QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6.json b/common/test/src/fixtures/artifacts/QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6.json rename to common/test/src/fixtures/artifacts/QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmW8K3pwRGnGDjwQb66pAD9N8bXjpQtLM2vdKGyw1vfdyo.json b/common/test/src/fixtures/artifacts/QmW8K3pwRGnGDjwQb66pAD9N8bXjpQtLM2vdKGyw1vfdyo.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmW8K3pwRGnGDjwQb66pAD9N8bXjpQtLM2vdKGyw1vfdyo.json rename to common/test/src/fixtures/artifacts/QmW8K3pwRGnGDjwQb66pAD9N8bXjpQtLM2vdKGyw1vfdyo.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z.json b/common/test/src/fixtures/artifacts/QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z.json rename to common/test/src/fixtures/artifacts/QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmX9WfXEQrPU4jMxBdPga6fbq79DCPqfcNA75Xo9Mi9Zyx.json b/common/test/src/fixtures/artifacts/QmX9WfXEQrPU4jMxBdPga6fbq79DCPqfcNA75Xo9Mi9Zyx.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmX9WfXEQrPU4jMxBdPga6fbq79DCPqfcNA75Xo9Mi9Zyx.json rename to common/test/src/fixtures/artifacts/QmX9WfXEQrPU4jMxBdPga6fbq79DCPqfcNA75Xo9Mi9Zyx.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmXVKrQPg8ZeLhU8AsTGCiC486V4Nadbom2GECtV91RCM6.json b/common/test/src/fixtures/artifacts/QmXVKrQPg8ZeLhU8AsTGCiC486V4Nadbom2GECtV91RCM6.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmXVKrQPg8ZeLhU8AsTGCiC486V4Nadbom2GECtV91RCM6.json rename to common/test/src/fixtures/artifacts/QmXVKrQPg8ZeLhU8AsTGCiC486V4Nadbom2GECtV91RCM6.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi.json b/common/test/src/fixtures/artifacts/QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi.json rename to common/test/src/fixtures/artifacts/QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmYHVNYhcEp8tpZd1PsiJFEbVGA9D8ooFVyLWQxSq7NAS7.json b/common/test/src/fixtures/artifacts/QmYHVNYhcEp8tpZd1PsiJFEbVGA9D8ooFVyLWQxSq7NAS7.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmYHVNYhcEp8tpZd1PsiJFEbVGA9D8ooFVyLWQxSq7NAS7.json rename to common/test/src/fixtures/artifacts/QmYHVNYhcEp8tpZd1PsiJFEbVGA9D8ooFVyLWQxSq7NAS7.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg.json b/common/test/src/fixtures/artifacts/QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg.json rename to common/test/src/fixtures/artifacts/QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn.json b/common/test/src/fixtures/artifacts/QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn.json rename to common/test/src/fixtures/artifacts/QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo.json b/common/test/src/fixtures/artifacts/QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo.json rename to common/test/src/fixtures/artifacts/QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8.json b/common/test/src/fixtures/artifacts/QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8.json rename to common/test/src/fixtures/artifacts/QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j.json b/common/test/src/fixtures/artifacts/QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j.json rename to common/test/src/fixtures/artifacts/QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB.json b/common/test/src/fixtures/artifacts/Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB.json rename to common/test/src/fixtures/artifacts/Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S.json b/common/test/src/fixtures/artifacts/QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S.json rename to common/test/src/fixtures/artifacts/QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66.json b/common/test/src/fixtures/artifacts/Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66.json rename to common/test/src/fixtures/artifacts/Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmcDCHLShmtcNiKhu6Z5kYMNN9ekavtTXgrQx8gcZXr2jf.json b/common/test/src/fixtures/artifacts/QmcDCHLShmtcNiKhu6Z5kYMNN9ekavtTXgrQx8gcZXr2jf.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmcDCHLShmtcNiKhu6Z5kYMNN9ekavtTXgrQx8gcZXr2jf.json rename to common/test/src/fixtures/artifacts/QmcDCHLShmtcNiKhu6Z5kYMNN9ekavtTXgrQx8gcZXr2jf.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmcJNTXjdRyeixbpFwd8cmd1XffszD2kiUcCogaiucmtDk.json b/common/test/src/fixtures/artifacts/QmcJNTXjdRyeixbpFwd8cmd1XffszD2kiUcCogaiucmtDk.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmcJNTXjdRyeixbpFwd8cmd1XffszD2kiUcCogaiucmtDk.json rename to common/test/src/fixtures/artifacts/QmcJNTXjdRyeixbpFwd8cmd1XffszD2kiUcCogaiucmtDk.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmcokWKsf7aHWvUzt5Zn95XTQXGiLZe2ULrtCGfS5mPJiU.json b/common/test/src/fixtures/artifacts/QmcokWKsf7aHWvUzt5Zn95XTQXGiLZe2ULrtCGfS5mPJiU.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmcokWKsf7aHWvUzt5Zn95XTQXGiLZe2ULrtCGfS5mPJiU.json rename to common/test/src/fixtures/artifacts/QmcokWKsf7aHWvUzt5Zn95XTQXGiLZe2ULrtCGfS5mPJiU.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC.json b/common/test/src/fixtures/artifacts/QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC.json rename to common/test/src/fixtures/artifacts/QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4.json b/common/test/src/fixtures/artifacts/Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4.json rename to common/test/src/fixtures/artifacts/Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG.json b/common/test/src/fixtures/artifacts/QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG.json similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG.json rename to common/test/src/fixtures/artifacts/QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG.json diff --git a/packages/evmcrispr/test/fixtures/artifacts/index.ts b/common/test/src/fixtures/artifacts/index.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/artifacts/index.ts rename to common/test/src/fixtures/artifacts/index.ts index b6d102f6..0527e397 100644 --- a/packages/evmcrispr/test/fixtures/artifacts/index.ts +++ b/common/test/src/fixtures/artifacts/index.ts @@ -1,30 +1,30 @@ // WARNING: this file is generated automatically -import QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg from './QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg.json'; -import QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S from './QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S.json'; -import QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC from './QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC.json'; -import QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo from './QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo.json'; -import QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8 from './QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8.json'; +import QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC from './QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC.json'; +import QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG from './QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG.json'; import QmTgqjnoPb7jfKBaKDYBYt9DR1YnwvGtiHQYEzvG7BW6DX from './QmTgqjnoPb7jfKBaKDYBYt9DR1YnwvGtiHQYEzvG7BW6DX.json'; +import QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr from './QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr.json'; +import QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC from './QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC.json'; +import QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6 from './QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6.json'; import QmW8K3pwRGnGDjwQb66pAD9N8bXjpQtLM2vdKGyw1vfdyo from './QmW8K3pwRGnGDjwQb66pAD9N8bXjpQtLM2vdKGyw1vfdyo.json'; -import QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi from './QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi.json'; -import Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66 from './Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66.json'; +import QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z from './QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z.json'; import QmX9WfXEQrPU4jMxBdPga6fbq79DCPqfcNA75Xo9Mi9Zyx from './QmX9WfXEQrPU4jMxBdPga6fbq79DCPqfcNA75Xo9Mi9Zyx.json'; -import Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4 from './Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4.json'; -import QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG from './QmRcrF7Kjg83h1xTn7yjEzMXy82bhpKWz6sEMpP1T8MYSG.json'; -import Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB from './Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB.json'; -import QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6 from './QmV4ZEPhRPEqGipoPJVHn8F2Kby9JgNUfFNd7tr3ZmpuL6.json'; -import QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC from './QmUQANzdvsTYLFxdrPqQU9HxQ4qP3VKdAhJb2iQMp6yZYC.json'; -import QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j from './QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j.json'; -import QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr from './QmUPXZ7L3BD5KSMa6v4EGAcrumcYFP3caEv5GPdnHnZ7fr.json'; import QmXVKrQPg8ZeLhU8AsTGCiC486V4Nadbom2GECtV91RCM6 from './QmXVKrQPg8ZeLhU8AsTGCiC486V4Nadbom2GECtV91RCM6.json'; +import QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi from './QmXeaqu2CDFor6Xa1azzAzskb1y4kgmuVdL4WDWK5zcmRi.json'; import QmYHVNYhcEp8tpZd1PsiJFEbVGA9D8ooFVyLWQxSq7NAS7 from './QmYHVNYhcEp8tpZd1PsiJFEbVGA9D8ooFVyLWQxSq7NAS7.json'; -import QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC from './QmQDyPpFCDqquSNQU1fHnmhURKBTpxdqsiuQYfX57mXmzC.json'; +import QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg from './QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg.json'; +import QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn from './QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn.json'; +import QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo from './QmZUQFEoULoSrF8aa8ub61VPZDrjMqnpqVFRFBge2fiMXo.json'; +import QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8 from './QmZrN4TB3H7fBFrukFiWvbiG2n1V9XFy6GFefE8zzysqe8.json'; +import QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j from './QmaxwbpFvYj5RtD886xa3tFbfb51a7J2sTkTFsbGewBp4j.json'; +import Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB from './Qmb5Lsc28iqNJ7CAH1A4GT3FArPuh8KeBYtvzt781hzNqB.json'; +import QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S from './QmbHQftzWRv5PzhJTQHLFF2rYude8K3EXQSffWH7yB5z8S.json'; +import Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66 from './Qmbh1AtQfE6qv3bqBgDy3YbcWCRQoWgArwAEYejUXD8A66.json'; import QmcDCHLShmtcNiKhu6Z5kYMNN9ekavtTXgrQx8gcZXr2jf from './QmcDCHLShmtcNiKhu6Z5kYMNN9ekavtTXgrQx8gcZXr2jf.json'; -import QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z from './QmWfyidPaB8n722exwHMJuSXPd1nyqvZyQvwaKeh4jRr4z.json'; -import QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG from './QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG.json'; import QmcJNTXjdRyeixbpFwd8cmd1XffszD2kiUcCogaiucmtDk from './QmcJNTXjdRyeixbpFwd8cmd1XffszD2kiUcCogaiucmtDk.json'; import QmcokWKsf7aHWvUzt5Zn95XTQXGiLZe2ULrtCGfS5mPJiU from './QmcokWKsf7aHWvUzt5Zn95XTQXGiLZe2ULrtCGfS5mPJiU.json'; -import QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn from './QmYnhBZeN6BYzZxzFa7L7eAffz4y4zmzJ5PhdEyJ6sNMkn.json'; +import QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC from './QmcyRHTRoom5Kd1CaheWKKivkARnpXhNh87KukDBTaBTSC.json'; +import Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4 from './Qmec1RUNuygtD1L2SC1Fgp4Cp7JV2SeRrMDAAEZjsgLZn4.json'; +import QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG from './QmfTtgVcrfUjkReNrWjyt9TJFkhf5ke96QUTW8y2b8kNXG.json'; export const artifacts = { QmYXRbeeit6mDGkKHHBrtfAVzVCcpfy7mRKh3q4CZwCBHg, diff --git a/packages/evmcrispr/test/fixtures/blockscout/0x44fA8E6f47987339850636F88629646662444217.json b/common/test/src/fixtures/blockscout/0x44fA8E6f47987339850636F88629646662444217.json similarity index 100% rename from packages/evmcrispr/test/fixtures/blockscout/0x44fA8E6f47987339850636F88629646662444217.json rename to common/test/src/fixtures/blockscout/0x44fA8E6f47987339850636F88629646662444217.json diff --git a/packages/evmcrispr/test/fixtures/blockscout/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9.json b/common/test/src/fixtures/blockscout/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9.json similarity index 100% rename from packages/evmcrispr/test/fixtures/blockscout/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9.json rename to common/test/src/fixtures/blockscout/0xf8D1677c8a0c961938bf2f9aDc3F3CFDA759A9d9.json diff --git a/packages/evmcrispr/test/fixtures/blockscout/index.ts b/common/test/src/fixtures/blockscout/index.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/blockscout/index.ts rename to common/test/src/fixtures/blockscout/index.ts diff --git a/packages/evmcrispr/test/fixtures/etherscan/0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735.json b/common/test/src/fixtures/etherscan/0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735.json similarity index 100% rename from packages/evmcrispr/test/fixtures/etherscan/0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735.json rename to common/test/src/fixtures/etherscan/0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735.json diff --git a/packages/evmcrispr/test/fixtures/etherscan/index.ts b/common/test/src/fixtures/etherscan/index.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/etherscan/index.ts rename to common/test/src/fixtures/etherscan/index.ts diff --git a/packages/evmcrispr/test/fixtures/helpers.ts b/common/test/src/fixtures/helpers.ts similarity index 61% rename from packages/evmcrispr/test/fixtures/helpers.ts rename to common/test/src/fixtures/helpers.ts index 6ad6ff3a..3b9700d9 100644 --- a/packages/evmcrispr/test/fixtures/helpers.ts +++ b/common/test/src/fixtures/helpers.ts @@ -1,9 +1,8 @@ -import { ethers } from 'hardhat'; -import type { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; -import { utils } from 'ethers'; +import type { Permission } from '@1hive/evmcrispr-aragonos-module'; +import type { Signer } from 'ethers'; +import { Wallet, utils } from 'ethers'; import { DAO } from '.'; -import type { Permission } from '../../src/modules/aragonos/types'; import { KERNEL_TRANSACTION_COUNT } from './mock-dao'; export const resolvePermission = (permission: Permission): Permission => { @@ -23,14 +22,16 @@ export const getSignatureSelector = (signature: string): string => { return signature.split('(')[0]; }; -export const getSigner = async (): Promise => { - const signer = (await ethers.getSigners())[0]; +export const getSigner = async (): Promise => { + const wallet = Wallet.fromMnemonic( + 'test test test test test test test test test test test junk', + ); - signer.provider!.getTransactionCount = (): Promise => { + wallet.provider!.getTransactionCount = (): Promise => { return new Promise((resolve) => { resolve(KERNEL_TRANSACTION_COUNT); }); }; - return signer; + return wallet; }; diff --git a/packages/evmcrispr/test/fixtures/index.ts b/common/test/src/fixtures/index.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/index.ts rename to common/test/src/fixtures/index.ts diff --git a/packages/evmcrispr/test/fixtures/mock-app.ts b/common/test/src/fixtures/mock-app.ts similarity index 96% rename from packages/evmcrispr/test/fixtures/mock-app.ts rename to common/test/src/fixtures/mock-app.ts index bc1a1cd0..53d50968 100644 --- a/packages/evmcrispr/test/fixtures/mock-app.ts +++ b/common/test/src/fixtures/mock-app.ts @@ -1,7 +1,7 @@ +import { toDecimals } from '@1hive/evmcrispr'; import { utils } from 'ethers'; import { DAO } from '.'; -import { toDecimals } from '../../src/utils'; export const APP = { appName: 'token-manager.aragonpm.eth', diff --git a/packages/evmcrispr/test/fixtures/mock-dao-2.ts b/common/test/src/fixtures/mock-dao-2.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/mock-dao-2.ts rename to common/test/src/fixtures/mock-dao-2.ts diff --git a/packages/evmcrispr/test/fixtures/mock-dao-3.ts b/common/test/src/fixtures/mock-dao-3.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/mock-dao-3.ts rename to common/test/src/fixtures/mock-dao-3.ts diff --git a/packages/evmcrispr/test/fixtures/mock-dao-4.ts b/common/test/src/fixtures/mock-dao-4.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/mock-dao-4.ts rename to common/test/src/fixtures/mock-dao-4.ts diff --git a/packages/evmcrispr/test/fixtures/mock-dao.ts b/common/test/src/fixtures/mock-dao.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/mock-dao.ts rename to common/test/src/fixtures/mock-dao.ts diff --git a/packages/evmcrispr/test/fixtures/mock-forwarders.ts b/common/test/src/fixtures/mock-forwarders.ts similarity index 90% rename from packages/evmcrispr/test/fixtures/mock-forwarders.ts rename to common/test/src/fixtures/mock-forwarders.ts index fd0dfb3c..5f148072 100644 --- a/packages/evmcrispr/test/fixtures/mock-forwarders.ts +++ b/common/test/src/fixtures/mock-forwarders.ts @@ -1,4 +1,4 @@ -import { toDecimals } from '../../src/utils'; +import { toDecimals } from '@1hive/evmcrispr'; export const FORWARDER = 'token-manager'; export const FEE_FORWARDER = 'tollgate.1hive'; diff --git a/packages/evmcrispr/test/fixtures/mock-permissions.ts b/common/test/src/fixtures/mock-permissions.ts similarity index 86% rename from packages/evmcrispr/test/fixtures/mock-permissions.ts rename to common/test/src/fixtures/mock-permissions.ts index 84aa59af..4fdef33d 100644 --- a/packages/evmcrispr/test/fixtures/mock-permissions.ts +++ b/common/test/src/fixtures/mock-permissions.ts @@ -1,5 +1,6 @@ -import type { Entity, Permission } from '../../src/modules/aragonos'; -import { and, oracle, timestamp } from '../../src/modules/aragonos'; +import type { Entity, Permission } from '@1hive/evmcrispr-aragonos-module'; + +import { and, oracle, timestamp } from '@1hive/evmcrispr-aragonos-module'; export const GRANT_PERMISSIONS: Permission[] = [ ['0xc125218F4Df091eE40624784caF7F47B9738086f', 'token-manager', 'MINT_ROLE'], diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8.json b/common/test/src/fixtures/subgraph-data/0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8.json rename to common/test/src/fixtures/subgraph-data/0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8.json diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/0x8ccbeab14b5ac4a431fffc39f4bec4089020a155.json b/common/test/src/fixtures/subgraph-data/0x8ccbeab14b5ac4a431fffc39f4bec4089020a155.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/0x8ccbeab14b5ac4a431fffc39f4bec4089020a155.json rename to common/test/src/fixtures/subgraph-data/0x8ccbeab14b5ac4a431fffc39f4bec4089020a155.json diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/0xA1514067E6fE7919FB239aF5259FfF120902b4f9.json b/common/test/src/fixtures/subgraph-data/0xA1514067E6fE7919FB239aF5259FfF120902b4f9.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/0xA1514067E6fE7919FB239aF5259FfF120902b4f9.json rename to common/test/src/fixtures/subgraph-data/0xA1514067E6fE7919FB239aF5259FfF120902b4f9.json diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/0xb25f0ee2d26461e2b5b3d3ddafe197a0da677b98.json b/common/test/src/fixtures/subgraph-data/0xb25f0ee2d26461e2b5b3d3ddafe197a0da677b98.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/0xb25f0ee2d26461e2b5b3d3ddafe197a0da677b98.json rename to common/test/src/fixtures/subgraph-data/0xb25f0ee2d26461e2b5b3d3ddafe197a0da677b98.json diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/0xb56a8003a8d2efab7d2d4c10617d787e9e4b582c.json b/common/test/src/fixtures/subgraph-data/0xb56a8003a8d2efab7d2d4c10617d787e9e4b582c.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/0xb56a8003a8d2efab7d2d4c10617d787e9e4b582c.json rename to common/test/src/fixtures/subgraph-data/0xb56a8003a8d2efab7d2d4c10617d787e9e4b582c.json diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/0xd8765273da3a7f7a4dc184e8a9f8a894e4dfb4c4.json b/common/test/src/fixtures/subgraph-data/0xd8765273da3a7f7a4dc184e8a9f8a894e4dfb4c4.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/0xd8765273da3a7f7a4dc184e8a9f8a894e4dfb4c4.json rename to common/test/src/fixtures/subgraph-data/0xd8765273da3a7f7a4dc184e8a9f8a894e4dfb4c4.json diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/index.ts b/common/test/src/fixtures/subgraph-data/index.ts similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/index.ts rename to common/test/src/fixtures/subgraph-data/index.ts diff --git a/packages/evmcrispr/test/fixtures/subgraph-data/token-manager.json b/common/test/src/fixtures/subgraph-data/token-manager.json similarity index 100% rename from packages/evmcrispr/test/fixtures/subgraph-data/token-manager.json rename to common/test/src/fixtures/subgraph-data/token-manager.json diff --git a/common/test/src/fixtures/tokenlist/honeyswap.json b/common/test/src/fixtures/tokenlist/honeyswap.json new file mode 100644 index 00000000..0944952e --- /dev/null +++ b/common/test/src/fixtures/tokenlist/honeyswap.json @@ -0,0 +1,22 @@ +{ + "name": "Honeyswap Default", + "timestamp": "2022-07-06T23:17:54.015Z", + "version": { + "major": 5, + "minor": 28, + "patch": 0 + }, + "tags": {}, + "logoURI": "ipfs://Qma4TXHsoK3yVtEGCRVeezfVGzokPGLC49Hhyvd9Lf4x2j", + "keywords": ["honeyswap", "xdai", "polygon"], + "tokens": [ + { + "name": "Honey", + "address": "0x71850b7e9ee3f13ab46d67167341e4bdc905eef9", + "symbol": "HNY", + "decimals": 18, + "chainId": 100, + "logoURI": "https://raw.githubusercontent.com/1Hive/default-token-list/master/src/assets/xdai/0x71850b7E9Ee3f13Ab46d67167341E4bDc905Eef9/logo.png" + } + ] +} diff --git a/packages/evmcrispr/test/fixtures/tokenlist/uniswap.json b/common/test/src/fixtures/tokenlist/uniswap.json similarity index 100% rename from packages/evmcrispr/test/fixtures/tokenlist/uniswap.json rename to common/test/src/fixtures/tokenlist/uniswap.json diff --git a/common/test/src/index.ts b/common/test/src/index.ts new file mode 100644 index 00000000..8376d103 --- /dev/null +++ b/common/test/src/index.ts @@ -0,0 +1,6 @@ +export { buildChainEndpoint } from './chain-manager/helpers'; +export * from './ethers'; +export * from './fixtures'; +export * from './test-helpers/cas11'; +export * from './test-helpers/expects'; +export * from './server'; diff --git a/packages/evmcrispr/test/fixtures/server.ts b/common/test/src/server.ts similarity index 76% rename from packages/evmcrispr/test/fixtures/server.ts rename to common/test/src/server.ts index 3e420a87..ef99cff6 100644 --- a/packages/evmcrispr/test/fixtures/server.ts +++ b/common/test/src/server.ts @@ -1,21 +1,27 @@ -import type { DefaultBodyType, PathParams } from 'msw'; +import { utils } from 'ethers'; +import type { DefaultBodyType, PathParams, RequestHandler } from 'msw'; import { graphql, rest } from 'msw'; import { setupServer } from 'msw/node'; -import { utils } from 'ethers'; +import { artifacts } from './fixtures/artifacts'; +import { blockscout } from './fixtures/blockscout'; +import { etherscan } from './fixtures/etherscan'; +import { DAOs, REPOs } from './fixtures/subgraph-data'; +import honeyswapTokenList from './fixtures/tokenlist/honeyswap.json'; +import uniswapTokenList from './fixtures/tokenlist/uniswap.json'; + +const PINATA_AUTH = `Bearer test_pinata_jwt`; -import { artifacts } from './artifacts/'; -import { etherscan } from './etherscan'; -import { blockscout } from './blockscout'; -import { DAOs, REPOs } from './subgraph-data'; -import tokenListFixture from './tokenlist/uniswap.json'; -import { IPFS_GATEWAY } from '../../src/IPFSResolver'; -import { addressesEqual } from '../../src/utils'; +// TODO: allow to input custom ipfs gateway instead of hard-coding it +const IPFS_GATEWAY = 'https://ipfs.blossom.software/ipfs/'; -const PINATA_AUTH = `Bearer ${process.env.VITE_PINATA_JWT}`; -// const ETHERSCAN_API_KEY = process.env.ETHERSCAN_API; +function addressesEqual(first: string, second: string): boolean { + first = first && first.toLowerCase(); + second = second && second.toLowerCase(); + return first === second; +} -const handlers = [ +const DEFAULT_HANDLERS: RequestHandler[] = [ graphql.query, { repoName: string }>( 'Repos', (req, res, ctx) => { @@ -56,7 +62,6 @@ const handlers = [ `${IPFS_GATEWAY}:cid/:resource`, (req, res, ctx) => { const { cid, resource } = req.params; - try { if (resource === 'artifact.json') { const artifact = artifacts[cid as keyof typeof artifacts]; @@ -72,7 +77,7 @@ const handlers = [ } }, ), - rest.get( + rest.get( `https://api-rinkeby.etherscan.io/api`, (req, res, ctx) => { const address = req.url.searchParams.get('address'); @@ -137,7 +142,10 @@ const handlers = [ }, ), rest.get('https://tokens.uniswap.org/', (_, res, ctx) => { - return res(ctx.status(200), ctx.json(tokenListFixture)); + return res(ctx.status(200), ctx.json(uniswapTokenList)); + }), + rest.get('https://tokens.honeyswap.org/', (_, res, ctx) => { + return res(ctx.status(200), ctx.json(honeyswapTokenList)); }), rest.post< { @@ -178,4 +186,7 @@ const handlers = [ }), ]; -export const server = setupServer(...handlers); +export const setUpServer = ( + customHandlers: Parameters = [], +): ReturnType => + setupServer(...DEFAULT_HANDLERS, ...customHandlers); diff --git a/packages/evmcrispr/test/test-helpers/cas11.ts b/common/test/src/test-helpers/cas11.ts similarity index 76% rename from packages/evmcrispr/test/test-helpers/cas11.ts rename to common/test/src/test-helpers/cas11.ts index 64602ac8..a88600a4 100644 --- a/packages/evmcrispr/test/test-helpers/cas11.ts +++ b/common/test/src/test-helpers/cas11.ts @@ -1,47 +1,51 @@ -import type { Err, Parser } from 'arcsecond'; -import { withData } from 'arcsecond'; -import { expect } from 'chai'; -import type { Signer } from 'ethers'; - -import { inspect } from 'util'; -import type { ErrorException } from '../../src'; -import { Cas11AST } from '../../src'; -import { EVMcrispr } from '../../src/EVMcrispr'; -import { scriptParser } from '../../src/parsers/script'; -import { createParserState } from '../../src/parsers/utils'; import type { BlockExpressionNode, + Cas11AST, CommandExpressionNode, + Comparison, + ErrorException, HelperFunctionNode, - Node, NodeParser, NodeParserState, -} from '../../src/types'; -import { BindingsSpace, NodeType } from '../../src/types'; -import type { Comparison } from '../../src/utils'; -import { ComparisonType, buildArgsLengthErrorMsg } from '../../src/utils'; -import { buildParserError } from '../../src/utils/parsers'; +} from '@1hive/evmcrispr'; import { + BindingsSpace, CommandError, + ComparisonType, + EVMcrispr, ExpressionError, HelperFunctionError, -} from '../../src/errors'; + NodeType, + buildArgsLengthErrorMsg, + createParserState, + scriptParser, +} from '@1hive/evmcrispr'; +import type { Err, Parser } from 'arcsecond'; +import { withData } from 'arcsecond'; +import type { Signer } from 'ethers'; +import { expect, it } from 'vitest'; + import { expectThrowAsync } from './expects'; +import { inspect } from 'util'; const { CommandExpression } = NodeType; const { Between, Equal, Greater } = ComparisonType; -export type Case = [string, any, string?]; +export type Case = { + message?: string; + value: V; + expected?: E; + title: string; +}; -export type InterpreterCase = [Node, any, string?]; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export const deepConsoleLog = (thing: any): void => console.log(inspect(thing, false, null, true)); -export const runParser = ( +export function runParser( parser: Parser, value: string, -): any => { +): any { const res = withData(parser)( createParserState(), ).run(value); @@ -51,61 +55,19 @@ export const runParser = ( } return res.result; -}; - -export const runCases = ( - caseOrCases: Case | Case[], - parser: Parser, -): void => - (Array.isArray(caseOrCases[0]) ? caseOrCases : [caseOrCases]).forEach( - ([value, expected, errorMsg]) => - expect(runParser(parser, value), errorMsg).eql(expected), - ); +} -export const runInterpreterCases = async ( - caseOrCases: InterpreterCase | InterpreterCase[], - getSigner: () => Promise, -): Promise => - Promise.all( - (Array.isArray(caseOrCases[0]) ? caseOrCases : [caseOrCases]).map( - async ([node, expected, errorMsg]) => { - const [res] = await new EVMcrispr( - new Cas11AST([node]), - getSigner, - ).interpret(); - - expect(res, errorMsg).to.equal(expected); - }, - ), - ); - -export const runErrorCase = ( - parser: NodeParser, - text: string, - errType: string, - errMsg?: string, -): void => { +export function runParserError(parser: NodeParser, text: string): string { const parserState = createParserState(); const res = withData(parser)(parserState).run( text, ); expect(res.isError, 'error not thrown').to.be.true; - expect( - (res as Err).error, - 'error message mismatch', - ).to.equals( - buildParserError( - { - index: res.index, - error: (res as Err).error, - data: parserState, - } as Err, - errType, - errMsg, - ), - ); -}; + + return (res as Err).error; +} + export const createInterpreter = ( script: string, signer: Signer, @@ -188,12 +150,6 @@ const createCommandNode = (name: string): CommandExpressionNode => ({ opts: [], }); -// const createHelperNode = (name: string): HelperFunctionNode => ({ -// type: HelperFunctionExpression, -// name: name, -// args: [], -// }); - export const itChecksInvalidArgsLength = ( expressionType: NodeType, argumentlessExpression: string, @@ -201,7 +157,7 @@ export const itChecksInvalidArgsLength = ( c: Comparison, lazySigner: () => Signer, module?: string, -): Mocha.Test => { +): void => { const { type, minValue, maxValue } = c; return it('should fail when receiving an invalid number of arguments', async () => { /** @@ -285,7 +241,7 @@ export const itChecksNonDefinedIdentifier = ( commandName: string, argIndex: number, isAragonOS = false, -): Mocha.Test => { +): void => { return it(itName, async () => { const nonDefinedIdentifier = 'non-defined-address'; const interpreter = createInterpreter(nonDefinedIdentifier); diff --git a/packages/evmcrispr/test/test-helpers/expects.ts b/common/test/src/test-helpers/expects.ts similarity index 54% rename from packages/evmcrispr/test/test-helpers/expects.ts rename to common/test/src/test-helpers/expects.ts index eb74ae5d..9bf2304c 100644 --- a/packages/evmcrispr/test/test-helpers/expects.ts +++ b/common/test/src/test-helpers/expects.ts @@ -1,16 +1,5 @@ -import { expect } from 'chai'; -import { utils } from 'ethers'; -import { multihash } from 'is-ipfs'; - -import type { ErrorException } from '../../src/errors'; -import { ErrorInvalid } from '../../src/errors'; -import type { - AragonArtifact, - ParsedApp, -} from '../../src/modules/aragonos/types'; -import { parseContentUri } from '../../src/modules/aragonos/utils'; - -const { isAddress } = utils; +import type { ErrorException } from '@1hive/evmcrispr'; +import { ErrorInvalid } from '@1hive/evmcrispr'; const HASH_REGEX = /^0x[a-zA-Z0-9]{64}$/; @@ -47,20 +36,6 @@ export const expectThrowAsync = async ( } }; -export const isValidArtifact = (artifact: AragonArtifact): void => { - const { appName, abi, roles } = artifact; - - expect(appName, 'Artifact name not found').to.not.be.null; - - expect(abi.length, 'Artifact ABI not found').to.be.greaterThan(0); - - roles.forEach(({ bytes, id, name }) => { - expectHash(bytes, 'Invalid artifact role hash'); - expect(id, 'Artifact role id not found').to.not.be.empty; - expect(name, 'Artifact role name not found').to.not.be.empty; - }); -}; - export const isValidIdentifier = ( evmcrisprMethod: (invalidIdentifier: string) => any, checkLabeledAppIdentifier = false, @@ -118,38 +93,3 @@ export const isValidIdentifier = ( } }; }; - -export const isValidParsedApp = (app: ParsedApp): void => { - const { address, appId, artifact, codeAddress, contentUri, name, roles } = - app; - - expect(isAddress(address), 'Invalid app address').to.be.true; - - expectHash(appId, 'Invalid appId'); - - expect(isAddress(codeAddress), 'Invalid app code address').to.be.true; - - if (contentUri) { - expect(multihash(parseContentUri(contentUri)), 'Invalid contentUri').to.be - .true; - } - - expect(name, 'App name missing').to.not.be.empty; - - expect(app).has.property('artifact'); - - if (artifact) { - isValidArtifact(artifact); - } - - roles.forEach(({ manager, grantees, roleHash }) => { - expect(isAddress(manager), 'Invalid app role manager').to.be.true; - - grantees.forEach(({ granteeAddress }) => { - expect(isAddress(granteeAddress), 'Invalid app role grantee address').to - .be.true; - }); - - expectHash(roleHash, 'Invalid app role hash'); - }); -}; diff --git a/common/test/src/test-helpers/index.ts b/common/test/src/test-helpers/index.ts new file mode 100644 index 00000000..30e15b3c --- /dev/null +++ b/common/test/src/test-helpers/index.ts @@ -0,0 +1,2 @@ +export * from './cas11'; +export * from './expects'; diff --git a/common/test/tsconfig.json b/common/test/tsconfig.json new file mode 100644 index 00000000..6ccdbb8c --- /dev/null +++ b/common/test/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "tsconfig-evmcrispr/base.json" +} diff --git a/common/test/tsup.config.ts b/common/test/tsup.config.ts new file mode 100644 index 00000000..9067c354 --- /dev/null +++ b/common/test/tsup.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'tsup'; + +import { getConfig } from '../../scripts/tsup'; + +export default defineConfig(getConfig({ entry: ['src/index.ts'] })); diff --git a/common/test/vite.config.ts b/common/test/vite.config.ts new file mode 100644 index 00000000..5035cebe --- /dev/null +++ b/common/test/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vitest/config'; + +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKERS_LENGTH = parseInt(process.env.WORKERS_LENGTH ?? '8'); + +export default defineConfig({ + test: { + coverage: { + reporter: ['lcov'], + }, + globals: true, + environment: 'node', + setupFiles: ['setup.ts'], + globalSetup: ['global-setup.ts'], + maxThreads: WORKERS_LENGTH, + minThreads: WORKERS_LENGTH, + testTimeout: 60000, + hookTimeout: 60000, + }, +}); diff --git a/common/tsconfig/base.json b/common/tsconfig/base.json new file mode 100644 index 00000000..e4ddcdcb --- /dev/null +++ b/common/tsconfig/base.json @@ -0,0 +1,24 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "types": ["vitest/globals"], + "downlevelIteration": true, + "esModuleInterop": true, + "isolatedModules": true, + "noEmit": true, + "noImplicitAny": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "skipLibCheck": true, + "strict": true, + "moduleResolution": "node", + "module": "CommonJS", + "target": "ES2021", + "resolveJsonModule": true + }, + "exclude": ["node_modules", "**/dist/**"], + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node" + } +} diff --git a/common/tsconfig/package.json b/common/tsconfig/package.json new file mode 100644 index 00000000..9969bf93 --- /dev/null +++ b/common/tsconfig/package.json @@ -0,0 +1,4 @@ +{ + "name": "tsconfig-evmcrispr", + "private": true +} diff --git a/common/tsconfig/react-app.json b/common/tsconfig/react-app.json new file mode 100644 index 00000000..22d38fd9 --- /dev/null +++ b/common/tsconfig/react-app.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "jsx": "react-jsx", + "allowJs": false, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "node", + "resolveJsonModule": true + } +} diff --git a/core/evmcrispr/.eslintrc b/core/evmcrispr/.eslintrc new file mode 100644 index 00000000..5b77555d --- /dev/null +++ b/core/evmcrispr/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["evmcrispr"] +} diff --git a/packages/evmcrispr/CHANGELOG.md b/core/evmcrispr/CHANGELOG.md similarity index 100% rename from packages/evmcrispr/CHANGELOG.md rename to core/evmcrispr/CHANGELOG.md diff --git a/packages/evmcrispr/README.md b/core/evmcrispr/README.md similarity index 100% rename from packages/evmcrispr/README.md rename to core/evmcrispr/README.md diff --git a/core/evmcrispr/global-setup.ts b/core/evmcrispr/global-setup.ts new file mode 100644 index 00000000..bfa1631d --- /dev/null +++ b/core/evmcrispr/global-setup.ts @@ -0,0 +1,12 @@ +import { + setup as _setup, + teardown as _teardown, +} from '@1hive/evmcrispr-test-common/setups/global'; + +export function setup(): Promise { + return _setup(8000); +} + +export function teardown(): void { + _teardown(); +} diff --git a/core/evmcrispr/hardhat.config.ts b/core/evmcrispr/hardhat.config.ts new file mode 100644 index 00000000..84dcc969 --- /dev/null +++ b/core/evmcrispr/hardhat.config.ts @@ -0,0 +1 @@ +export { config as default } from '@1hive/evmcrispr-test-common/hardhat.config'; diff --git a/packages/evmcrispr/package.json b/core/evmcrispr/package.json similarity index 52% rename from packages/evmcrispr/package.json rename to core/evmcrispr/package.json index 44cd3c08..9486376a 100644 --- a/packages/evmcrispr/package.json +++ b/core/evmcrispr/package.json @@ -4,18 +4,15 @@ "codename": "morphean simulation", "license": "GPL-3.0", "description": "A library that encapsulates actions in EVM scripts for DAOs", - "main": "dist/1hive-evmcrispr.cjs.js", - "module": "dist/1hive-evmcrispr.esm.js", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", "author": "Blossom Labs", "sideEffects": false, "devDependencies": { "@types/isomorphic-fetch": "^0.0.36", "@types/lodash.clonedeep": "^4.5.7", - "is-ipfs": "^6.0.2", - "msw": "^0.47.3", - "node-fetch": "^3.2.4", - "nyc": "^15.1.0", - "ora": "^5.4.0" + "nyc": "^15.1.0" }, "dependencies": { "arcsecond": "^4.1.0", @@ -24,18 +21,24 @@ "lodash.clonedeep": "^4.5.0" }, "peerDependencies": { + "@1hive/evmcrispr-aragonos-module": "workspace:^0.9.0", + "@1hive/evmcrispr-giveth-module": "workspace:^0.9.0", + "@1hive/evmcrispr-tenderly-module": "workspace:^0.9.0", "ethers": "^5.6.4" }, "files": [ "dist" ], "scripts": { - "chain": "hardhat node", - "create-fixtures": "hardhat run scripts/create-fixtures.ts", - "create-docs": "typedoc", + "dotenv": "dotenv -e ../../.env --", "preinstall": "npx only-allow pnpm", - "lint:types": "tsc --noEmit", - "test": "hardhat test", - "test:coverage": "nyc --reporter=lcov pnpm test" + "build": "tsup", + "clean": "hardhat clean", + "lint": "tsc --noEmit && eslint", + "create-docs": "typedoc", + "test": "pnpm run dotenv vitest run", + "test:coverage": "pnpm run dotenv vitest run --coverage", + "test:ui": "pnpm run dotenv vitest --ui", + "test:watch": "pnpm run dotenv vitest" } } diff --git a/core/evmcrispr/setup.ts b/core/evmcrispr/setup.ts new file mode 100644 index 00000000..fc90b26d --- /dev/null +++ b/core/evmcrispr/setup.ts @@ -0,0 +1,3 @@ +import { runSetup } from '@1hive/evmcrispr-test-common/setups/file'; + +runSetup({ chainManagerPort: 8000 }); diff --git a/packages/evmcrispr/src/BindingsManager.ts b/core/evmcrispr/src/BindingsManager.ts similarity index 100% rename from packages/evmcrispr/src/BindingsManager.ts rename to core/evmcrispr/src/BindingsManager.ts diff --git a/packages/evmcrispr/src/Cas11AST.ts b/core/evmcrispr/src/Cas11AST.ts similarity index 100% rename from packages/evmcrispr/src/Cas11AST.ts rename to core/evmcrispr/src/Cas11AST.ts diff --git a/packages/evmcrispr/src/EVMcrispr.ts b/core/evmcrispr/src/EVMcrispr.ts similarity index 99% rename from packages/evmcrispr/src/EVMcrispr.ts rename to core/evmcrispr/src/EVMcrispr.ts index 77fc10b3..f3321936 100644 --- a/packages/evmcrispr/src/EVMcrispr.ts +++ b/core/evmcrispr/src/EVMcrispr.ts @@ -1,6 +1,10 @@ import type { Signer, providers } from 'ethers'; import { BigNumber, Contract, constants, ethers, utils } from 'ethers'; +import { BindingsManager } from './BindingsManager'; +import type { Cas11AST } from './Cas11AST'; +import { IPFSResolver } from './IPFSResolver'; +import type { Module } from './Module'; import { CommandError, ErrorException, @@ -8,7 +12,8 @@ import { HelperFunctionError, NodeError, } from './errors'; -import { timeUnits, toDecimals } from './utils'; +import { Std } from './std/Std'; +import { BindingsSpace, NodeType } from './types'; import type { Action, Address, @@ -25,13 +30,8 @@ import type { RelativeBinding, VariableIdentifierNode, } from './types'; -import { BindingsSpace, NodeType } from './types'; -import type { Module } from './Module'; -import { Std } from './modules/std/Std'; -import { BindingsManager } from './BindingsManager'; import type { NodeInterpreter, NodesInterpreter } from './types/modules'; -import type { Cas11AST } from './Cas11AST'; -import { IPFSResolver } from './IPFSResolver'; +import { timeUnits, toDecimals } from './utils'; const { AddressLiteral, @@ -133,7 +133,7 @@ export class EVMcrispr { } } - setConnectedAccount(account: string | undefined) { + setConnectedAccount(account: string | undefined): void { this.#account = account; } diff --git a/packages/evmcrispr/src/IPFSResolver.ts b/core/evmcrispr/src/IPFSResolver.ts similarity index 97% rename from packages/evmcrispr/src/IPFSResolver.ts rename to core/evmcrispr/src/IPFSResolver.ts index bec275c0..d3b4fcba 100644 --- a/packages/evmcrispr/src/IPFSResolver.ts +++ b/core/evmcrispr/src/IPFSResolver.ts @@ -1,3 +1,5 @@ +import fetch from 'isomorphic-fetch'; + import { ErrorConnection, ErrorUnexpectedResult } from './errors'; export const IPFS_GATEWAY = 'https://ipfs.blossom.software/ipfs/'; // "https://gateway.pinata.cloud/ipfs/"; diff --git a/packages/evmcrispr/src/Module.ts b/core/evmcrispr/src/Module.ts similarity index 100% rename from packages/evmcrispr/src/Module.ts rename to core/evmcrispr/src/Module.ts diff --git a/packages/evmcrispr/abis/index.ts b/core/evmcrispr/src/abis/index.ts similarity index 100% rename from packages/evmcrispr/abis/index.ts rename to core/evmcrispr/src/abis/index.ts diff --git a/packages/evmcrispr/abis/tokens.ts b/core/evmcrispr/src/abis/tokens.ts similarity index 100% rename from packages/evmcrispr/abis/tokens.ts rename to core/evmcrispr/src/abis/tokens.ts diff --git a/packages/evmcrispr/src/errors.ts b/core/evmcrispr/src/errors.ts similarity index 100% rename from packages/evmcrispr/src/errors.ts rename to core/evmcrispr/src/errors.ts diff --git a/packages/evmcrispr/src/index.ts b/core/evmcrispr/src/index.ts similarity index 68% rename from packages/evmcrispr/src/index.ts rename to core/evmcrispr/src/index.ts index b206c9fe..26361afc 100644 --- a/packages/evmcrispr/src/index.ts +++ b/core/evmcrispr/src/index.ts @@ -1,20 +1,16 @@ -export { ErrorException, ErrorInvalid, ErrorNotFound } from './errors'; -export type { ErrorOptions } from './errors'; -export * from './types'; - -export { Module } from './Module'; -export { - ModuleConstructor as StdConstructor, - commands as stdCommands, - helpers as stdHelpers, -} from './modules/std'; - +export * from './abis'; export { BindingsManager } from './BindingsManager'; - export { Cas11AST } from './Cas11AST'; +export * from './errors'; export { EVMcrispr } from './EVMcrispr'; export * from './IPFSResolver'; - -export * from './utils/ast'; - +export { Module } from './Module'; +export { createParserState } from './parsers/utils'; export { scriptParser, parseScript } from './parsers/script'; +export { + ModuleConstructor as StdConstructor, + commands as stdCommands, + helpers as stdHelpers, +} from './std'; +export * from './types'; +export * from './utils'; diff --git a/packages/evmcrispr/src/parsers/arithmetic.ts b/core/evmcrispr/src/parsers/arithmetic.ts similarity index 100% rename from packages/evmcrispr/src/parsers/arithmetic.ts rename to core/evmcrispr/src/parsers/arithmetic.ts diff --git a/packages/evmcrispr/src/parsers/array.ts b/core/evmcrispr/src/parsers/array.ts similarity index 95% rename from packages/evmcrispr/src/parsers/array.ts rename to core/evmcrispr/src/parsers/array.ts index a4fe5645..565f3063 100644 --- a/packages/evmcrispr/src/parsers/array.ts +++ b/core/evmcrispr/src/parsers/array.ts @@ -14,7 +14,7 @@ import { openingCharParser, } from './utils'; -export const ARRAY_PARSER_ERROR = 'ArrayParserError'; +const ARRAY_PARSER_ERROR = 'ArrayParserError'; export const arrayExpressionParser: NodeParser = recursiveParser(() => diff --git a/packages/evmcrispr/src/parsers/block.ts b/core/evmcrispr/src/parsers/block.ts similarity index 100% rename from packages/evmcrispr/src/parsers/block.ts rename to core/evmcrispr/src/parsers/block.ts diff --git a/packages/evmcrispr/src/parsers/call.ts b/core/evmcrispr/src/parsers/call.ts similarity index 90% rename from packages/evmcrispr/src/parsers/call.ts rename to core/evmcrispr/src/parsers/call.ts index 1a74f29d..8018f486 100644 --- a/packages/evmcrispr/src/parsers/call.ts +++ b/core/evmcrispr/src/parsers/call.ts @@ -16,19 +16,19 @@ import type { } from '../types'; import { NodeType } from '../types'; +import { buildParserError } from '../utils/parsers'; +import { argumentsParser } from './expression'; +import { helperFunctionParser } from './helper'; import { addressParser, probableIdentifierParser, variableIdentifierParser, } from './primaries'; -import { argumentsParser } from './expression'; -import { helperFunctionParser } from './helper'; import { callOperatorParser, createNodeLocation, currentContexDataParser, } from './utils'; -import { buildParserError } from '../utils/parsers'; const chainedCallExpressionParser = ( target: CallExpressionNode, @@ -68,12 +68,14 @@ const chainedCallExpressionParser = ( const enclosingParsers = [callOperatorParser]; -const callableExpressions = choice([ - addressParser(enclosingParsers), - variableIdentifierParser(enclosingParsers), - helperFunctionParser, - probableIdentifierParser(enclosingParsers), -]); +const callableExpressionsParser = recursiveParser(() => + choice([ + addressParser(enclosingParsers), + variableIdentifierParser(enclosingParsers), + helperFunctionParser, + probableIdentifierParser(enclosingParsers), + ]), +); export const callExpressionParser: NodeParser = recursiveParser(() => @@ -81,7 +83,7 @@ export const callExpressionParser: NodeParser = const initialContext = (yield currentContexDataParser) as unknown as LocationData; const target = - (yield callableExpressions) as unknown as CallExpressionNode['target']; + (yield callableExpressionsParser) as unknown as CallExpressionNode['target']; yield callOperatorParser; diff --git a/packages/evmcrispr/src/parsers/command.ts b/core/evmcrispr/src/parsers/command.ts similarity index 81% rename from packages/evmcrispr/src/parsers/command.ts rename to core/evmcrispr/src/parsers/command.ts index 26b12b04..d8b4fc96 100644 --- a/packages/evmcrispr/src/parsers/command.ts +++ b/core/evmcrispr/src/parsers/command.ts @@ -12,6 +12,7 @@ import { } from 'arcsecond'; import type { + ArgumentExpressionNode, CommandArgExpressionNode, CommandExpressionNode, CommandOptNode, @@ -19,10 +20,19 @@ import type { NodeParser, } from '../types'; import { NodeType } from '../types'; -import { buildParserError } from '../utils/parsers'; +import { buildParserError, getIncorrectReceivedValue } from '../utils/parsers'; +import { arithmeticParser } from './arithmetic'; +import { arrayExpressionParser } from './array'; +import { callExpressionParser } from './call'; import { commentParser } from './comment'; -import { argumentExpressionParser, expressionParser } from './expression'; +import { expressionParser } from './expression'; +import { helperFunctionParser } from './helper'; +import { + primaryParser, + probableIdentifierParser, + variableIdentifierParser, +} from './primaries'; import { addNewError, camelAndKebabCase, @@ -64,6 +74,26 @@ const commandNameParser = enclose(regex(COMMAND_NAME_REGEX)) return commandName; }); +function argumentExpressionParser( + enclosingParsers = [], +): NodeParser { + return recursiveParser(() => + choice([ + arithmeticParser, + callExpressionParser, + helperFunctionParser, + arrayExpressionParser, + primaryParser(enclosingParsers), + variableIdentifierParser(enclosingParsers), + probableIdentifierParser(enclosingParsers), + ]).errorMap(({ data, error, index }) => { + return `ExpressionParserError(${data.line},${ + index - data.offset + }): Expecting a valid expression${getIncorrectReceivedValue(error)}`; + }), + ); +} + export const commandOptParser: NodeParser = locate( sequenceOf([ @@ -108,7 +138,7 @@ const commandArgsParser = coroutine(function* () { return commandArgOrOpt; }); -export const COMMAND_PARSER_ERROR = 'CommandParserError'; +const COMMAND_PARSER_ERROR = 'CommandParserError'; export const endOfCommandParser = choice([endLine, lookAhead(endOfInput)]); diff --git a/core/evmcrispr/src/parsers/comment.ts b/core/evmcrispr/src/parsers/comment.ts new file mode 100644 index 00000000..94bf645f --- /dev/null +++ b/core/evmcrispr/src/parsers/comment.ts @@ -0,0 +1,20 @@ +import { + char, + choice, + endOfInput, + everythingUntil, + recursiveParser, + sequenceOf, +} from 'arcsecond'; + +import { endLine, optionalWhitespace } from './utils'; + +const commentInitializerChar = char('#'); + +export const commentParser = recursiveParser(() => + sequenceOf([ + optionalWhitespace, + commentInitializerChar, + everythingUntil(choice([endOfInput, endLine])), + ]), +); diff --git a/packages/evmcrispr/src/parsers/expression.ts b/core/evmcrispr/src/parsers/expression.ts similarity index 93% rename from packages/evmcrispr/src/parsers/expression.ts rename to core/evmcrispr/src/parsers/expression.ts index 959376ae..a55b9e08 100644 --- a/packages/evmcrispr/src/parsers/expression.ts +++ b/core/evmcrispr/src/parsers/expression.ts @@ -1,3 +1,4 @@ +import type { Parser } from 'arcsecond'; import { between, char, @@ -58,10 +59,11 @@ const asExpressionParser: NodeParser = }), }), ); -export const argumentExpressionParser: EnclosingNodeParser< - ArgumentExpressionNode -> = (enclosingParsers = []) => - recursiveParser(() => + +export function argumentExpressionParser( + enclosingParsers: Parser[] = [], +): NodeParser { + return recursiveParser(() => choice([ arithmeticParser, callExpressionParser, @@ -76,6 +78,7 @@ export const argumentExpressionParser: EnclosingNodeParser< }): Expecting a valid expression${getIncorrectReceivedValue(error)}`; }), ); +} export const expressionParser: EnclosingNodeParser< CommandArgExpressionNode | string | null diff --git a/packages/evmcrispr/src/parsers/helper.ts b/core/evmcrispr/src/parsers/helper.ts similarity index 79% rename from packages/evmcrispr/src/parsers/helper.ts rename to core/evmcrispr/src/parsers/helper.ts index 24dc2f3e..8237c4a8 100644 --- a/packages/evmcrispr/src/parsers/helper.ts +++ b/core/evmcrispr/src/parsers/helper.ts @@ -25,17 +25,20 @@ import { openingCharParser, } from './utils'; -export const HELPER_PARSER_ERROR = 'HelperParserError'; -const helperNameParser = takeLeft(regex(/^(?!-|\.)[a-zA-Z\-.]+(? - buildParserError(err, HELPER_PARSER_ERROR, 'Expecting a helper name'), +const HELPER_PARSER_ERROR = 'HelperParserError'; + +const helperNameParser = recursiveParser(() => + takeLeft(regex(/^(?!-|\.)[a-zA-Z\-.]+(? + buildParserError(err, HELPER_PARSER_ERROR, 'Expecting a helper name'), + ), ); export const helperFunctionParser: NodeParser = diff --git a/packages/evmcrispr/src/parsers/primaries/identifiers.ts b/core/evmcrispr/src/parsers/primaries/identifiers.ts similarity index 95% rename from packages/evmcrispr/src/parsers/primaries/identifiers.ts rename to core/evmcrispr/src/parsers/primaries/identifiers.ts index e483e5b0..c74adc74 100644 --- a/packages/evmcrispr/src/parsers/primaries/identifiers.ts +++ b/core/evmcrispr/src/parsers/primaries/identifiers.ts @@ -19,9 +19,9 @@ import { NodeType } from '../../types'; import { buildParserError } from '../../utils/parsers'; import { createNodeLocation, enclosingLookaheadParser, locate } from '../utils'; -export const VARIABLE_PARSER_ERROR = 'VariableParserError'; +const VARIABLE_PARSER_ERROR = 'VariableParserError'; -export const PROBABLE_IDENTIFIER_PARSER_ERROR = 'IdentifierParserError'; +const PROBABLE_IDENTIFIER_PARSER_ERROR = 'IdentifierParserError'; export const variableIdentifierParser: EnclosingNodeParser< VariableIdentifierNode diff --git a/packages/evmcrispr/src/parsers/primaries/index.ts b/core/evmcrispr/src/parsers/primaries/index.ts similarity index 100% rename from packages/evmcrispr/src/parsers/primaries/index.ts rename to core/evmcrispr/src/parsers/primaries/index.ts diff --git a/packages/evmcrispr/src/parsers/primaries/literals/address.ts b/core/evmcrispr/src/parsers/primaries/literals/address.ts similarity index 94% rename from packages/evmcrispr/src/parsers/primaries/literals/address.ts rename to core/evmcrispr/src/parsers/primaries/literals/address.ts index 0441c724..eb7529b6 100644 --- a/packages/evmcrispr/src/parsers/primaries/literals/address.ts +++ b/core/evmcrispr/src/parsers/primaries/literals/address.ts @@ -9,7 +9,7 @@ import { locate, } from '../../utils'; -export const ADDRESS_PARSER_ERROR = 'AddressParserError'; +const ADDRESS_PARSER_ERROR = 'AddressParserError'; export const addressParser: EnclosingNodeParser = ( enclosingParsers = [], diff --git a/packages/evmcrispr/src/parsers/primaries/literals/boolean.ts b/core/evmcrispr/src/parsers/primaries/literals/boolean.ts similarity index 94% rename from packages/evmcrispr/src/parsers/primaries/literals/boolean.ts rename to core/evmcrispr/src/parsers/primaries/literals/boolean.ts index 65384693..22f7b404 100644 --- a/packages/evmcrispr/src/parsers/primaries/literals/boolean.ts +++ b/core/evmcrispr/src/parsers/primaries/literals/boolean.ts @@ -9,7 +9,7 @@ import { locate, } from '../../utils'; -export const BOOLEAN_PARSER_ERROR = 'BooleanParserError'; +const BOOLEAN_PARSER_ERROR = 'BooleanParserError'; export const booleanParser: EnclosingNodeParser = ( enclosingParsers = [], diff --git a/packages/evmcrispr/src/parsers/primaries/literals/hexadecimal.ts b/core/evmcrispr/src/parsers/primaries/literals/hexadecimal.ts similarity index 93% rename from packages/evmcrispr/src/parsers/primaries/literals/hexadecimal.ts rename to core/evmcrispr/src/parsers/primaries/literals/hexadecimal.ts index 65a05e48..ad0ef2c2 100644 --- a/packages/evmcrispr/src/parsers/primaries/literals/hexadecimal.ts +++ b/core/evmcrispr/src/parsers/primaries/literals/hexadecimal.ts @@ -9,7 +9,7 @@ import { locate, } from '../../utils'; -export const HEXADECIMAL_PARSER_ERROR = 'HexadecimalParserError'; +const HEXADECIMAL_PARSER_ERROR = 'HexadecimalParserError'; export const hexadecimalParser: EnclosingNodeParser = ( enclosingParsers = [], diff --git a/packages/evmcrispr/src/parsers/primaries/literals/index.ts b/core/evmcrispr/src/parsers/primaries/literals/index.ts similarity index 100% rename from packages/evmcrispr/src/parsers/primaries/literals/index.ts rename to core/evmcrispr/src/parsers/primaries/literals/index.ts diff --git a/packages/evmcrispr/src/parsers/primaries/literals/number.ts b/core/evmcrispr/src/parsers/primaries/literals/number.ts similarity index 100% rename from packages/evmcrispr/src/parsers/primaries/literals/number.ts rename to core/evmcrispr/src/parsers/primaries/literals/number.ts diff --git a/packages/evmcrispr/src/parsers/primaries/literals/string.ts b/core/evmcrispr/src/parsers/primaries/literals/string.ts similarity index 95% rename from packages/evmcrispr/src/parsers/primaries/literals/string.ts rename to core/evmcrispr/src/parsers/primaries/literals/string.ts index 132e95c6..834af58e 100644 --- a/packages/evmcrispr/src/parsers/primaries/literals/string.ts +++ b/core/evmcrispr/src/parsers/primaries/literals/string.ts @@ -9,7 +9,7 @@ import { locate, } from '../../utils'; -export const STRING_PARSER_ERROR = 'StringParserError'; +const STRING_PARSER_ERROR = 'StringParserError'; export const stringParser: EnclosingNodeParser = ( enclosingParsers = [], diff --git a/packages/evmcrispr/src/parsers/script.ts b/core/evmcrispr/src/parsers/script.ts similarity index 100% rename from packages/evmcrispr/src/parsers/script.ts rename to core/evmcrispr/src/parsers/script.ts index ff74f9d2..75b49881 100644 --- a/packages/evmcrispr/src/parsers/script.ts +++ b/core/evmcrispr/src/parsers/script.ts @@ -1,11 +1,11 @@ import { coroutine, setData } from 'arcsecond'; import type { Parser } from 'arcsecond'; +import { Cas11AST } from '../Cas11AST'; +import { ErrorException } from '../errors'; import type { CommandExpressionNode, NodeParserState } from '../types'; import { commandExpressionParser } from './command'; import { createParserState, linesParser } from './utils'; -import { ErrorException } from '../errors'; -import { Cas11AST } from '../Cas11AST'; export const scriptParser: Parser = coroutine(function* () { diff --git a/packages/evmcrispr/src/parsers/utils.ts b/core/evmcrispr/src/parsers/utils.ts similarity index 98% rename from packages/evmcrispr/src/parsers/utils.ts rename to core/evmcrispr/src/parsers/utils.ts index 92eeb7ec..35c00c5b 100644 --- a/packages/evmcrispr/src/parsers/utils.ts +++ b/core/evmcrispr/src/parsers/utils.ts @@ -174,7 +174,7 @@ export const linesParser = ( export const openingCharParser = ( c: string, ): Parser<[string, string | null], string, any> => - sequenceOf([char(c), optionalWhitespace]); + recursiveParser(() => sequenceOf([char(c), optionalWhitespace])); export const closingCharParser = ( c: string, diff --git a/packages/evmcrispr/src/modules/std/Std.ts b/core/evmcrispr/src/std/Std.ts similarity index 72% rename from packages/evmcrispr/src/modules/std/Std.ts rename to core/evmcrispr/src/std/Std.ts index eeb72dff..bdd26eed 100644 --- a/packages/evmcrispr/src/modules/std/Std.ts +++ b/core/evmcrispr/src/std/Std.ts @@ -1,10 +1,9 @@ -import type { BindingsManager } from '../../BindingsManager'; - -import { Module } from '../../Module'; -import type { IPFSResolver } from '../../IPFSResolver'; +import type { BindingsManager } from '../BindingsManager'; +import type { EVMcrispr } from '../EVMcrispr'; +import type { IPFSResolver } from '../IPFSResolver'; +import { Module } from '../Module'; import { commands } from './commands'; import { helpers } from './helpers'; -import type { EVMcrispr } from '../../EVMcrispr'; export class Std extends Module { #modules: Module[]; diff --git a/packages/evmcrispr/src/modules/std/commands/exec.ts b/core/evmcrispr/src/std/commands/exec.ts similarity index 95% rename from packages/evmcrispr/src/modules/std/commands/exec.ts rename to core/evmcrispr/src/std/commands/exec.ts index af21f20f..b6d06a4e 100644 --- a/packages/evmcrispr/src/modules/std/commands/exec.ts +++ b/core/evmcrispr/src/std/commands/exec.ts @@ -2,9 +2,15 @@ import { utils } from 'ethers'; import { Interface } from 'ethers/lib/utils'; -import { BindingsSpace } from '../../../types'; -import type { AbiBinding, Address, ICommand } from '../../../types'; - +import type { + AbiBinding, + Address, + HelperFunctionNode, + ICommand, +} from '../..//types'; +import { erc20ABI } from '../../abis'; +import { ErrorException } from '../../errors'; +import { BindingsSpace } from '../../types'; import { ComparisonType, SIGNATURE_REGEX, @@ -18,12 +24,10 @@ import { interpretNodeSync, isNumberish, tryAndCacheNotFound, -} from '../../../utils'; -import { fetchAbi } from '../../../utils/abis'; +} from '../../utils'; +import { fetchAbi } from '../../utils/abis'; + import type { Std } from '../Std'; -import { ErrorException } from '../../../errors'; -import type { HelperFunctionNode } from '../../..'; -import { erc20ABI } from '../../../../abis'; const { ABI, ADDR } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/std/commands/for.ts b/core/evmcrispr/src/std/commands/for.ts similarity index 89% rename from packages/evmcrispr/src/modules/std/commands/for.ts rename to core/evmcrispr/src/std/commands/for.ts index b1a95314..8f991737 100644 --- a/packages/evmcrispr/src/modules/std/commands/for.ts +++ b/core/evmcrispr/src/std/commands/for.ts @@ -1,9 +1,7 @@ -import { ErrorException } from '../../../errors'; - -import { BindingsSpace, NodeType } from '../../../types'; -import type { Action, ICommand } from '../../../types'; - -import { ComparisonType, checkArgsLength } from '../../../utils'; +import { ErrorException } from '../../errors'; +import { BindingsSpace, NodeType } from '../../types'; +import type { Action, ICommand } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; diff --git a/packages/evmcrispr/src/modules/std/commands/index.ts b/core/evmcrispr/src/std/commands/index.ts similarity index 88% rename from packages/evmcrispr/src/modules/std/commands/index.ts rename to core/evmcrispr/src/std/commands/index.ts index 02843ef4..e135d5a8 100644 --- a/packages/evmcrispr/src/modules/std/commands/index.ts +++ b/core/evmcrispr/src/std/commands/index.ts @@ -1,13 +1,13 @@ -import type { Commands } from '../../../types'; +import type { Commands } from '../../types'; import type { Std } from '../Std'; import { exec } from './exec'; +import { _for } from './for'; import { load } from './load'; +import { print } from './print'; +import { raw } from './raw'; import { set } from './set'; import { _switch } from './switch'; -import { raw } from './raw'; -import { print } from './print'; -import { _for } from './for'; export const commands: Commands = { exec, diff --git a/packages/evmcrispr/src/modules/std/commands/load.ts b/core/evmcrispr/src/std/commands/load.ts similarity index 91% rename from packages/evmcrispr/src/modules/std/commands/load.ts rename to core/evmcrispr/src/std/commands/load.ts index 6cabe765..f6601e9d 100644 --- a/packages/evmcrispr/src/modules/std/commands/load.ts +++ b/core/evmcrispr/src/std/commands/load.ts @@ -1,17 +1,23 @@ -import { ComparisonType, checkArgsLength, insideNode } from '../../../utils'; +import { ErrorException } from '../../errors'; import type { AsExpressionNode, Commands, HelperFunctions, ICommand, -} from '../../../types'; -import { BindingsSpace, NodeType } from '../../../types'; +} from '../../types'; +import { BindingsSpace, NodeType } from '../../types'; +import { ComparisonType, checkArgsLength, insideNode } from '../../utils'; import type { Std } from '../Std'; -import { ErrorException } from '../../../errors'; const { ALIAS, MODULE } = BindingsSpace; const { AsExpression, ProbableIdentifier, StringLiteral } = NodeType; +function buildModulePackageName(name: string): string { + const name_ = name.toLowerCase(); + + return `@1hive/evmcrispr-${name_}-module`; +} + export const load: ICommand = { async run(module, c, { interpretNode }) { checkArgsLength(c, { @@ -53,7 +59,7 @@ export const load: ICommand = { } try { const { ModuleConstructor } = await import( - `../../${moduleName}/index.ts` + buildModulePackageName(moduleName) ); module.modules.push( new ModuleConstructor( @@ -119,7 +125,7 @@ export const load: ICommand = { try { const { commands: moduleCommands, helpers: moduleHelpers } = - await import(`../../${moduleName}/index.ts`); + await import(buildModulePackageName(moduleName)); commands = moduleCommands as Commands; helpers = moduleHelpers as HelperFunctions; } catch (e) { diff --git a/packages/evmcrispr/src/modules/std/commands/print.ts b/core/evmcrispr/src/std/commands/print.ts similarity index 79% rename from packages/evmcrispr/src/modules/std/commands/print.ts rename to core/evmcrispr/src/std/commands/print.ts index bd3eab11..3582c5e4 100644 --- a/packages/evmcrispr/src/modules/std/commands/print.ts +++ b/core/evmcrispr/src/std/commands/print.ts @@ -1,6 +1,6 @@ -import type { ICommand } from '../../../types'; -import { BindingsSpace } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import type { ICommand } from '../../types'; +import { BindingsSpace } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; const { ADDR } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/std/commands/raw.ts b/core/evmcrispr/src/std/commands/raw.ts similarity index 91% rename from packages/evmcrispr/src/modules/std/commands/raw.ts rename to core/evmcrispr/src/std/commands/raw.ts index 361f3782..48c35770 100644 --- a/packages/evmcrispr/src/modules/std/commands/raw.ts +++ b/core/evmcrispr/src/std/commands/raw.ts @@ -1,17 +1,16 @@ import { utils } from 'ethers'; -import { BindingsSpace } from '../../../types'; -import type { ICommand, TransactionAction } from '../../../types'; - +import { ErrorException } from '../../errors'; +import { BindingsSpace } from '../../types'; +import type { ICommand, TransactionAction } from '../../types'; import { ComparisonType, checkArgsLength, checkOpts, getOptValue, isNumberish, -} from '../../../utils'; +} from '../../utils'; import type { Std } from '../Std'; -import { ErrorException } from '../../../errors'; const { ADDR } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/std/commands/set.ts b/core/evmcrispr/src/std/commands/set.ts similarity index 89% rename from packages/evmcrispr/src/modules/std/commands/set.ts rename to core/evmcrispr/src/std/commands/set.ts index 7d3374f6..864c618c 100644 --- a/packages/evmcrispr/src/modules/std/commands/set.ts +++ b/core/evmcrispr/src/std/commands/set.ts @@ -1,11 +1,11 @@ -import { ErrorException } from '../../../errors'; -import { BindingsSpace, NodeType } from '../../../types'; -import type { ICommand } from '../../../types'; +import { ErrorException } from '../../errors'; +import { BindingsSpace, NodeType } from '../../types'; +import type { ICommand } from '../../types'; import { ComparisonType, checkArgsLength, inSameLineThanNode, -} from '../../../utils'; +} from '../../utils'; import type { Std } from '../Std'; const { VariableIdentifier } = NodeType; diff --git a/packages/evmcrispr/src/modules/std/commands/switch.ts b/core/evmcrispr/src/std/commands/switch.ts similarity index 90% rename from packages/evmcrispr/src/modules/std/commands/switch.ts rename to core/evmcrispr/src/std/commands/switch.ts index 50d84dd5..289a8280 100644 --- a/packages/evmcrispr/src/modules/std/commands/switch.ts +++ b/core/evmcrispr/src/std/commands/switch.ts @@ -1,8 +1,8 @@ import { providers } from 'ethers'; -import { ErrorException } from '../../../errors'; -import type { ICommand, ProviderAction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import { ErrorException } from '../../errors'; +import type { ICommand, ProviderAction } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; const nameToChainId = { diff --git a/packages/evmcrispr/src/modules/std/helpers/date.ts b/core/evmcrispr/src/std/helpers/date.ts similarity index 88% rename from packages/evmcrispr/src/modules/std/helpers/date.ts rename to core/evmcrispr/src/std/helpers/date.ts index 829bf950..e1e76b19 100644 --- a/packages/evmcrispr/src/modules/std/helpers/date.ts +++ b/core/evmcrispr/src/std/helpers/date.ts @@ -1,6 +1,6 @@ -import { ErrorInvalid } from '../../../errors'; -import type { HelperFunction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import { ErrorInvalid } from '../../errors'; +import type { HelperFunction } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; const iso8601Regex = diff --git a/packages/evmcrispr/src/modules/std/helpers/get.ts b/core/evmcrispr/src/std/helpers/get.ts similarity index 84% rename from packages/evmcrispr/src/modules/std/helpers/get.ts rename to core/evmcrispr/src/std/helpers/get.ts index 2db85f78..97e2a830 100644 --- a/packages/evmcrispr/src/modules/std/helpers/get.ts +++ b/core/evmcrispr/src/std/helpers/get.ts @@ -1,8 +1,8 @@ import { Contract, utils } from 'ethers'; -import { ErrorException } from '../../../errors'; -import type { HelperFunction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import { ErrorException } from '../../errors'; +import type { HelperFunction } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; export const get: HelperFunction = async ( diff --git a/packages/evmcrispr/src/modules/std/helpers/id.ts b/core/evmcrispr/src/std/helpers/id.ts similarity index 73% rename from packages/evmcrispr/src/modules/std/helpers/id.ts rename to core/evmcrispr/src/std/helpers/id.ts index c4a28bb8..6240da23 100644 --- a/packages/evmcrispr/src/modules/std/helpers/id.ts +++ b/core/evmcrispr/src/std/helpers/id.ts @@ -1,7 +1,7 @@ import { utils } from 'ethers'; -import type { HelperFunction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import type { HelperFunction } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; export const id: HelperFunction = async ( diff --git a/packages/evmcrispr/src/modules/std/helpers/index.ts b/core/evmcrispr/src/std/helpers/index.ts similarity index 87% rename from packages/evmcrispr/src/modules/std/helpers/index.ts rename to core/evmcrispr/src/std/helpers/index.ts index 6eea4de0..3419b784 100644 --- a/packages/evmcrispr/src/modules/std/helpers/index.ts +++ b/core/evmcrispr/src/std/helpers/index.ts @@ -1,4 +1,4 @@ -import type { HelperFunctions } from '../../../types'; +import type { HelperFunctions } from '../../types'; import type { Std } from '../Std'; import { date } from './date'; import { get } from './get'; diff --git a/packages/evmcrispr/src/modules/std/helpers/ipfs.ts b/core/evmcrispr/src/std/helpers/ipfs.ts similarity index 88% rename from packages/evmcrispr/src/modules/std/helpers/ipfs.ts rename to core/evmcrispr/src/std/helpers/ipfs.ts index 510386b4..151080f0 100644 --- a/packages/evmcrispr/src/modules/std/helpers/ipfs.ts +++ b/core/evmcrispr/src/std/helpers/ipfs.ts @@ -1,8 +1,8 @@ import fetch from 'isomorphic-fetch'; -import { ErrorException } from '../../../errors'; -import type { HelperFunction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import { ErrorException } from '../../errors'; +import type { HelperFunction } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; const IPFS_VAR_NAME = 'ipfs.jwt'; diff --git a/packages/evmcrispr/src/modules/std/helpers/me.ts b/core/evmcrispr/src/std/helpers/me.ts similarity index 65% rename from packages/evmcrispr/src/modules/std/helpers/me.ts rename to core/evmcrispr/src/std/helpers/me.ts index 09a0192f..527137b7 100644 --- a/packages/evmcrispr/src/modules/std/helpers/me.ts +++ b/core/evmcrispr/src/std/helpers/me.ts @@ -1,5 +1,5 @@ -import type { HelperFunction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; +import type { HelperFunction } from '../../types'; +import { ComparisonType, checkArgsLength } from '../../utils'; import type { Std } from '../Std'; export const me: HelperFunction = async (module, h) => { diff --git a/packages/evmcrispr/src/modules/std/helpers/token.ts b/core/evmcrispr/src/std/helpers/token.ts similarity index 93% rename from packages/evmcrispr/src/modules/std/helpers/token.ts rename to core/evmcrispr/src/std/helpers/token.ts index f98ed9fa..1e42cd17 100644 --- a/packages/evmcrispr/src/modules/std/helpers/token.ts +++ b/core/evmcrispr/src/std/helpers/token.ts @@ -1,14 +1,13 @@ import { BigNumber, ethers } from 'ethers'; -import fetch from 'isomorphic-fetch'; - import { isAddress } from 'ethers/lib/utils'; +import fetch from 'isomorphic-fetch'; -import { ErrorException } from '../../../errors'; +import type { Module } from '../../Module'; +import { ErrorException } from '../../errors'; -import type { Address, HelperFunction } from '../../../types'; -import { BindingsSpace } from '../../../types'; -import { ComparisonType, checkArgsLength, isNumberish } from '../../../utils'; -import type { Module } from '../../../Module'; +import type { Address, HelperFunction } from '../../types'; +import { BindingsSpace } from '../../types'; +import { ComparisonType, checkArgsLength, isNumberish } from '../../utils'; import type { Std } from '../Std'; const ENV_TOKENLIST = '$token.tokenlist'; diff --git a/packages/evmcrispr/src/modules/std/index.ts b/core/evmcrispr/src/std/index.ts similarity index 100% rename from packages/evmcrispr/src/modules/std/index.ts rename to core/evmcrispr/src/std/index.ts diff --git a/packages/evmcrispr/src/types/actions.ts b/core/evmcrispr/src/types/actions.ts similarity index 100% rename from packages/evmcrispr/src/types/actions.ts rename to core/evmcrispr/src/types/actions.ts diff --git a/packages/evmcrispr/src/types/ast.ts b/core/evmcrispr/src/types/ast.ts similarity index 100% rename from packages/evmcrispr/src/types/ast.ts rename to core/evmcrispr/src/types/ast.ts diff --git a/packages/evmcrispr/src/types/bindings.ts b/core/evmcrispr/src/types/bindings.ts similarity index 100% rename from packages/evmcrispr/src/types/bindings.ts rename to core/evmcrispr/src/types/bindings.ts diff --git a/packages/evmcrispr/src/types/index.ts b/core/evmcrispr/src/types/index.ts similarity index 100% rename from packages/evmcrispr/src/types/index.ts rename to core/evmcrispr/src/types/index.ts diff --git a/packages/evmcrispr/src/types/modules.ts b/core/evmcrispr/src/types/modules.ts similarity index 100% rename from packages/evmcrispr/src/types/modules.ts rename to core/evmcrispr/src/types/modules.ts diff --git a/packages/evmcrispr/src/types/parsers.ts b/core/evmcrispr/src/types/parsers.ts similarity index 100% rename from packages/evmcrispr/src/types/parsers.ts rename to core/evmcrispr/src/types/parsers.ts diff --git a/packages/evmcrispr/src/types/web3.ts b/core/evmcrispr/src/types/web3.ts similarity index 100% rename from packages/evmcrispr/src/types/web3.ts rename to core/evmcrispr/src/types/web3.ts diff --git a/packages/evmcrispr/src/utils/abis.ts b/core/evmcrispr/src/utils/abis.ts similarity index 100% rename from packages/evmcrispr/src/utils/abis.ts rename to core/evmcrispr/src/utils/abis.ts diff --git a/packages/evmcrispr/src/utils/args.ts b/core/evmcrispr/src/utils/args.ts similarity index 100% rename from packages/evmcrispr/src/utils/args.ts rename to core/evmcrispr/src/utils/args.ts diff --git a/packages/evmcrispr/src/utils/ast.ts b/core/evmcrispr/src/utils/ast.ts similarity index 100% rename from packages/evmcrispr/src/utils/ast.ts rename to core/evmcrispr/src/utils/ast.ts diff --git a/packages/evmcrispr/src/utils/encoders.ts b/core/evmcrispr/src/utils/encoders.ts similarity index 100% rename from packages/evmcrispr/src/utils/encoders.ts rename to core/evmcrispr/src/utils/encoders.ts diff --git a/packages/evmcrispr/src/utils/formatters.ts b/core/evmcrispr/src/utils/formatters.ts similarity index 100% rename from packages/evmcrispr/src/utils/formatters.ts rename to core/evmcrispr/src/utils/formatters.ts diff --git a/packages/evmcrispr/src/utils/index.ts b/core/evmcrispr/src/utils/index.ts similarity index 100% rename from packages/evmcrispr/src/utils/index.ts rename to core/evmcrispr/src/utils/index.ts diff --git a/packages/evmcrispr/src/utils/parsers.ts b/core/evmcrispr/src/utils/parsers.ts similarity index 100% rename from packages/evmcrispr/src/utils/parsers.ts rename to core/evmcrispr/src/utils/parsers.ts diff --git a/packages/evmcrispr/src/utils/proxies.ts b/core/evmcrispr/src/utils/proxies.ts similarity index 100% rename from packages/evmcrispr/src/utils/proxies.ts rename to core/evmcrispr/src/utils/proxies.ts diff --git a/packages/evmcrispr/src/utils/requests.ts b/core/evmcrispr/src/utils/requests.ts similarity index 100% rename from packages/evmcrispr/src/utils/requests.ts rename to core/evmcrispr/src/utils/requests.ts diff --git a/packages/evmcrispr/src/utils/time.ts b/core/evmcrispr/src/utils/time.ts similarity index 100% rename from packages/evmcrispr/src/utils/time.ts rename to core/evmcrispr/src/utils/time.ts diff --git a/packages/evmcrispr/src/utils/web3.ts b/core/evmcrispr/src/utils/web3.ts similarity index 100% rename from packages/evmcrispr/src/utils/web3.ts rename to core/evmcrispr/src/utils/web3.ts diff --git a/core/evmcrispr/test/cas11ast/__snapshots__/cas11ast.test.ts.snap b/core/evmcrispr/test/cas11ast/__snapshots__/cas11ast.test.ts.snap new file mode 100644 index 00000000..b7c46209 --- /dev/null +++ b/core/evmcrispr/test/cas11ast/__snapshots__/cas11ast.test.ts.snap @@ -0,0 +1,1510 @@ +// Vitest Snapshot v1 + +exports[`Cas11AST > when fetching a command at a specific line > should fetch it correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 16, + "line": 9, + }, + }, + "type": "ProbableIdentifier", + "value": "vault:new", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 8, + "line": 9, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Cas11AST > when fetching commands until a specific line > should fetch them correctly 1`] = ` +[ + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 17, + "line": 2, + }, + "start": { + "col": 9, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 9, + "line": 2, + }, + }, + "right": { + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 21, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 4, + "line": 2, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 15, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "giveth", + }, + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "right": { + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 19, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "giv", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 4, + "line": 3, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 57, + "line": 5, + }, + "start": { + "col": 15, + "line": 5, + }, + }, + "type": "AddressLiteral", + "value": "0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 23, + "line": 6, + }, + "start": { + "col": 10, + "line": 6, + }, + }, + "type": "VariableIdentifier", + "value": "$dao1Variable", + }, + { + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 24, + "line": 6, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + ], + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 6, + "line": 6, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 56, + "line": 7, + }, + "start": { + "col": 14, + "line": 7, + }, + }, + "type": "AddressLiteral", + "value": "0x8ccbeab14b5ac4a431fffc39f4bec4089020a155", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 8, + }, + "start": { + "col": 12, + "line": 8, + }, + }, + "type": "VariableIdentifier", + "value": "$dao2Variable", + }, + { + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 26, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "vault", + }, + ], + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 8, + "line": 8, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 16, + "line": 9, + }, + }, + "type": "ProbableIdentifier", + "value": "vault:new", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 8, + "line": 9, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 57, + "line": 7, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 6, + "line": 7, + }, + }, + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 11, + }, + "start": { + "col": 58, + "line": 5, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 11, + }, + "start": { + "col": 4, + "line": 5, + }, + }, + "module": "ar", + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, +] +`; + +exports[`Cas11AST > when fetching commands until a specific line > when given a set of global scope command names > should fetch them correctly 1`] = ` +[ + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 17, + "line": 2, + }, + "start": { + "col": 9, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 9, + "line": 2, + }, + }, + "right": { + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 21, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 4, + "line": 2, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 15, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "giveth", + }, + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "right": { + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 19, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "giv", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 4, + "line": 3, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 57, + "line": 5, + }, + "start": { + "col": 15, + "line": 5, + }, + }, + "type": "AddressLiteral", + "value": "0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 23, + "line": 6, + }, + "start": { + "col": 10, + "line": 6, + }, + }, + "type": "VariableIdentifier", + "value": "$dao1Variable", + }, + { + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 24, + "line": 6, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + ], + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 6, + "line": 6, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 56, + "line": 7, + }, + "start": { + "col": 14, + "line": 7, + }, + }, + "type": "AddressLiteral", + "value": "0x8ccbeab14b5ac4a431fffc39f4bec4089020a155", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 8, + }, + "start": { + "col": 12, + "line": 8, + }, + }, + "type": "VariableIdentifier", + "value": "$dao2Variable", + }, + { + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 26, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "vault", + }, + ], + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 8, + "line": 8, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 16, + "line": 9, + }, + }, + "type": "ProbableIdentifier", + "value": "vault:new", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 8, + "line": 9, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 57, + "line": 7, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 6, + "line": 7, + }, + }, + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 11, + }, + "start": { + "col": 58, + "line": 5, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 11, + }, + "start": { + "col": 4, + "line": 5, + }, + }, + "module": "ar", + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 23, + "line": 6, + }, + "start": { + "col": 10, + "line": 6, + }, + }, + "type": "VariableIdentifier", + "value": "$dao1Variable", + }, + { + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 24, + "line": 6, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + ], + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 6, + "line": 6, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 56, + "line": 7, + }, + "start": { + "col": 14, + "line": 7, + }, + }, + "type": "AddressLiteral", + "value": "0x8ccbeab14b5ac4a431fffc39f4bec4089020a155", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 8, + }, + "start": { + "col": 12, + "line": 8, + }, + }, + "type": "VariableIdentifier", + "value": "$dao2Variable", + }, + { + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 26, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "vault", + }, + ], + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 8, + "line": 8, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 16, + "line": 9, + }, + }, + "type": "ProbableIdentifier", + "value": "vault:new", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 8, + "line": 9, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 57, + "line": 7, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 6, + "line": 7, + }, + }, + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 8, + }, + "start": { + "col": 12, + "line": 8, + }, + }, + "type": "VariableIdentifier", + "value": "$dao2Variable", + }, + { + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 26, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "vault", + }, + ], + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 8, + "line": 8, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 16, + "line": 9, + }, + }, + "type": "ProbableIdentifier", + "value": "vault:new", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 8, + "line": 9, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", + }, +] +`; + +exports[`Cas11AST > when fetching commands until a specific line > when given a set of global scope command names > should fetch them correctly when giving a line higher than the maximum script line 1`] = ` +[ + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 17, + "line": 2, + }, + "start": { + "col": 9, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 9, + "line": 2, + }, + }, + "right": { + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 21, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 23, + "line": 2, + }, + "start": { + "col": 4, + "line": 2, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 15, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "giveth", + }, + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "right": { + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 19, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "giv", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 22, + "line": 3, + }, + "start": { + "col": 4, + "line": 3, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 57, + "line": 5, + }, + "start": { + "col": 15, + "line": 5, + }, + }, + "type": "AddressLiteral", + "value": "0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 23, + "line": 6, + }, + "start": { + "col": 10, + "line": 6, + }, + }, + "type": "VariableIdentifier", + "value": "$dao1Variable", + }, + { + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 24, + "line": 6, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + ], + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 6, + "line": 6, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 56, + "line": 7, + }, + "start": { + "col": 14, + "line": 7, + }, + }, + "type": "AddressLiteral", + "value": "0x8ccbeab14b5ac4a431fffc39f4bec4089020a155", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 8, + }, + "start": { + "col": 12, + "line": 8, + }, + }, + "type": "VariableIdentifier", + "value": "$dao2Variable", + }, + { + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 26, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "vault", + }, + ], + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 8, + "line": 8, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 16, + "line": 9, + }, + }, + "type": "ProbableIdentifier", + "value": "vault:new", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 9, + }, + "start": { + "col": 8, + "line": 9, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 57, + "line": 7, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 10, + }, + "start": { + "col": 6, + "line": 7, + }, + }, + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 11, + }, + "start": { + "col": 58, + "line": 5, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 11, + }, + "start": { + "col": 4, + "line": 5, + }, + }, + "module": "ar", + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 23, + "line": 6, + }, + "start": { + "col": 10, + "line": 6, + }, + }, + "type": "VariableIdentifier", + "value": "$dao1Variable", + }, + { + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 24, + "line": 6, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + ], + "loc": { + "end": { + "col": 29, + "line": 6, + }, + "start": { + "col": 6, + "line": 6, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 8, + }, + "start": { + "col": 12, + "line": 8, + }, + }, + "type": "VariableIdentifier", + "value": "$dao2Variable", + }, + { + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 26, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "vault", + }, + ], + "loc": { + "end": { + "col": 31, + "line": 8, + }, + "start": { + "col": 8, + "line": 8, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 19, + "line": 14, + }, + "start": { + "col": 13, + "line": 14, + }, + }, + "type": "ProbableIdentifier", + "value": "voting", + }, + { + "loc": { + "end": { + "col": 33, + "line": 14, + }, + "start": { + "col": 20, + "line": 14, + }, + }, + "type": "ProbableIdentifier", + "value": "token-manager", + }, + { + "loc": { + "end": { + "col": 43, + "line": 14, + }, + "start": { + "col": 34, + "line": 14, + }, + }, + "type": "ProbableIdentifier", + "value": "MINT_ROLE", + }, + ], + "loc": { + "end": { + "col": 43, + "line": 14, + }, + "start": { + "col": 6, + "line": 14, + }, + }, + "name": "revoke", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 15, + }, + "start": { + "col": 31, + "line": 13, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 15, + }, + "start": { + "col": 4, + "line": 13, + }, + }, + "module": "ar", + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 28, + "line": 17, + }, + "start": { + "col": 8, + "line": 17, + }, + }, + "type": "VariableIdentifier", + "value": "$globalScopeVariable", + }, + { + "loc": { + "end": { + "col": 35, + "line": 17, + }, + "start": { + "col": 29, + "line": 17, + }, + }, + "type": "StringLiteral", + "value": "test", + }, + ], + "loc": { + "end": { + "col": 35, + "line": 17, + }, + "start": { + "col": 4, + "line": 17, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, +] +`; diff --git a/core/evmcrispr/test/cas11ast/cas11ast.test.ts b/core/evmcrispr/test/cas11ast/cas11ast.test.ts new file mode 100644 index 00000000..346c3c24 --- /dev/null +++ b/core/evmcrispr/test/cas11ast/cas11ast.test.ts @@ -0,0 +1,73 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import { DAO, DAO2, DAO3 } from '@1hive/evmcrispr-test-common'; + +import type { Cas11AST } from '../../src/Cas11AST'; +import { parseScript } from '../../src/parsers/script'; + +describe.concurrent('Cas11AST', () => { + const script = ` + load aragonos as ar + load giveth as giv + + ar:connect ${DAO.kernel} ( + set $dao1Variable agent + connect ${DAO2.kernel} ( + set $dao2Variable vault + install vault:new + ) + ) + + ar:connect ${DAO3} ( + revoke voting token-manager MINT_ROLE + ) + + set $globalScopeVariable "test" + `; + let ast: Cas11AST; + + beforeEach(() => { + ast = parseScript(script).ast; + }); + + describe.concurrent('when fetching a command at a specific line', () => { + it('should fetch it correctly', () => { + expect(ast.getCommandAtLine(9)).toMatchSnapshot(); + }); + + describe.concurrent.each>([ + { + title: 'a line higher than the maximum script line', + value: 30, + }, + { title: 'an empty line', value: 4 }, + { title: 'a line without a command', value: 10 }, + ])('', ({ title, value }) => { + it(`should return nothing when given ${title}`, () => { + expect(ast.getCommandAtLine(value)).to.be.undefined; + }); + }); + }); + + describe.concurrent('when fetching commands until a specific line', () => { + it('should fetch them correctly', () => { + expect(ast.getCommandsUntilLine(12)).toMatchSnapshot(); + }); + + describe.concurrent( + 'when given a set of global scope command names', + () => { + it('should fetch them correctly', () => { + expect( + ast.getCommandsUntilLine(9, ['load', 'set']), + ).toMatchSnapshot(); + }); + + it('should fetch them correctly when giving a line higher than the maximum script line', () => { + expect( + ast.getCommandsUntilLine(200, ['load', 'set']), + ).toMatchSnapshot(); + }); + }, + ); + }); +}); diff --git a/core/evmcrispr/test/interpreter/arithmetic.test.ts b/core/evmcrispr/test/interpreter/arithmetic.test.ts new file mode 100644 index 00000000..e363b66a --- /dev/null +++ b/core/evmcrispr/test/interpreter/arithmetic.test.ts @@ -0,0 +1,80 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import { + createInterpreter, + preparingExpression, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { BigNumber } from 'ethers'; + +import { toDecimals } from '../../src/utils'; + +describe.concurrent('Interpreter - arithmetics', () => { + let signer: Signer; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + }); + + describe.concurrent.each([ + { + title: '', + value: '(120 - 5e22 * 2 ^ 2 + 500e33)', + expected: BigNumber.from(120) + .sub(toDecimals(20, 22)) + .add(toDecimals(500, 33)), + }, + { + title: 'containing priority parentheses', + value: '((121e18 / 4) * (9 - 2) ^ 2 - 55e18)', + expected: toDecimals('1427.25', 18), + }, + ])('', ({ title, value, expected }) => { + it(`should return the correct result of an arithmetic operation ${title}`, async () => { + const [interpret] = await preparingExpression(value, signer); + const res = await interpret(); + + expect(res).to.eql(expected!); + }); + }); + + it('should fail when one of the operands is not a number', async () => { + const invalidValue = 'a string'; + const leftOperandInterpreter = createInterpreter( + ` + set $var1 "${invalidValue}" + + set $res ($var1 * 2) + `, + signer, + ); + const rightOperandInterpreter = createInterpreter( + ` + set $var1 "${invalidValue}" + + set $res (2 * $var1) + `, + signer, + ); + + await expect( + leftOperandInterpreter.interpret(), + ).rejects.toMatchInlineSnapshot( + '[ArithmeticExpressionError: ArithmeticExpressionError(4:14,4:-4): invalid left operand. Expected a number but got "a string"]', + ); + + await expect( + rightOperandInterpreter.interpret(), + ).rejects.toMatchInlineSnapshot( + '[ArithmeticExpressionError: ArithmeticExpressionError(4:14,4:-4): invalid right operand. Expected a number but got "a string"]', + ); + }); + + it('should fail when trying to perform a division by zero', async () => { + const [interpret] = await preparingExpression('(4 / 0)', signer); + + // TODO: fix end column location which is smaller than start column location + await expect(interpret()).rejects.toMatchInlineSnapshot( + "[ArithmeticExpressionError: ArithmeticExpressionError(5:12,5:9): invalid operation. Can't divide by zero]", + ); + }); +}); diff --git a/core/evmcrispr/test/interpreter/primary.test.ts b/core/evmcrispr/test/interpreter/primary.test.ts new file mode 100644 index 00000000..17af8b10 --- /dev/null +++ b/core/evmcrispr/test/interpreter/primary.test.ts @@ -0,0 +1,197 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import type { BigNumber, Signer } from 'ethers'; +import { constants } from 'ethers'; + +import type { Node } from '../../src'; +import { Cas11AST, EVMcrispr } from '../../src'; + +import type { NumericLiteralNode } from '../../src/types'; +import { NodeType } from '../../src/types'; +import { timeUnits, toDecimals } from '../../src/utils'; + +function numericNode( + value: number, + power?: number, + timeUnit?: string, +): NumericLiteralNode { + const n: NumericLiteralNode = { + type: NodeType.NumberLiteral, + value: String(value), + }; + if (power) n.power = power; + if (timeUnit) n.timeUnit = timeUnit; + + return n; +} + +describe.concurrent('Interpreter - primaries', async () => { + let signer: Signer; + const getSigner = async () => signer; + + async function expectPrimaryInterpretation( + primaryNode: Node, + expectedPrimaryValue: any, + ): Promise { + const interpretFn = new EVMcrispr( + new Cas11AST([]), + getSigner, + ).interpretNode(primaryNode); + + await expect(interpretFn).resolves.toStrictEqual(expectedPrimaryValue); + } + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + }); + + describe.concurrent('when interpreting a literal node', () => { + it('should interpret address node correctly', async () => { + const primaryValue = '0x83E57888cd55C3ea1cfbf0114C963564d81e318d'; + await expectPrimaryInterpretation( + { + type: NodeType.AddressLiteral, + value: primaryValue, + }, + primaryValue, + ); + }); + + describe.each>([ + { + title: '"true"', + value: { type: NodeType.BoolLiteral, value: true }, + expected: true, + }, + { + title: '"false"', + value: { + type: NodeType.BoolLiteral, + value: false, + }, + expected: false, + }, + ])('when interpreting boolean nodes', ({ title, value, expected }) => { + it(`should interpret ${title} value correctly`, async () => { + await expectPrimaryInterpretation(value as Node, expected); + }); + }); + + it('should intepret a bytes node correctly', async () => { + const expectedPrimaryValue = + '0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000'; + await expectPrimaryInterpretation( + { + type: NodeType.BytesLiteral, + value: expectedPrimaryValue, + }, + expectedPrimaryValue, + ); + }); + + describe.each>([ + { title: 'integer', value: numericNode(15), expected: toDecimals(15, 0) }, + { + title: 'integer raised to a power', + value: numericNode(1500, 18), + expected: toDecimals(1500, 18), + }, + { + title: 'decimal raised to power', + value: numericNode(7854.2345, 16), + expected: toDecimals(7854.2345, 16), + }, + { + title: 'zero decimal raised to a power', + value: numericNode(0.000123, 14), + expected: toDecimals(0.000123, 14), + }, + { + title: 'decimal raised to a power followed by time unit', + value: numericNode(1200.12, 18, 'mo'), + expected: toDecimals(1200.12, 18).mul(timeUnits['mo']), + }, + { + title: 'number followed by secondly time unit', + value: numericNode(30, undefined, 's'), + expected: toDecimals(30, 0).mul(timeUnits['s']), + }, + { + title: 'number followed by minutely time unit', + value: numericNode(5, undefined, 'm'), + expected: toDecimals(5, 0).mul(timeUnits['m']), + }, + { + title: 'number followed by hourly time unit', + value: numericNode(35, undefined, 'h'), + expected: toDecimals(35, 0).mul(timeUnits['h']), + }, + { + title: 'number followed by daily time unit', + value: numericNode(463, undefined, 'd'), + expected: toDecimals(463, 0).mul(timeUnits['d']), + }, + { + title: 'number followed by weekly time unit', + value: numericNode(96, undefined, 'w'), + expected: toDecimals(96, 0).mul(timeUnits['w']), + }, + { + title: 'number followed by monthly time unit', + value: numericNode(9, undefined, 'mo'), + expected: toDecimals(9, 0).mul(timeUnits['mo']), + }, + { + title: 'number followed by yearly time unit', + value: numericNode(4.67, undefined, 'y'), + expected: toDecimals(4.67, 0).mul(timeUnits['y']), + }, + ])('when interpreting numeric nodes', ({ title, value, expected }) => { + it(`should interpret a ${title} value correctly`, async () => { + await expectPrimaryInterpretation(value, expected); + }); + }); + + it('should intepret a string node correctly', async () => { + const expectedPrimaryValue = 'This is a string node'; + + await expectPrimaryInterpretation( + { + type: NodeType.StringLiteral, + value: expectedPrimaryValue, + }, + expectedPrimaryValue, + ); + }); + }); + + describe.concurrent.each>([ + { + title: '', + value: { + type: NodeType.ProbableIdentifier, + value: 'token-manager.open#3', + }, + expected: 'token-manager.open#3', + }, + { + title: 'default native token', + value: { + type: NodeType.ProbableIdentifier, + value: 'ETH', + }, + expected: constants.AddressZero, + }, + ])( + 'when interpreting a probable identifier node', + ({ title, value, expected }) => { + it(`should interpret a ${title} identifier correctly`, async () => { + await expectPrimaryInterpretation(value, expected); + }); + }, + ); + + describe.todo('when intepreting a variable node', () => { + it.todo('should interpret a variable correctly'); + it.todo('should fail when intepreting a non-existent variable'); + }); +}); diff --git a/core/evmcrispr/test/parsers/__snapshots__/arithmetic.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/arithmetic.test.ts.snap new file mode 100644 index 00000000..31edd7bc --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/arithmetic.test.ts.snap @@ -0,0 +1,834 @@ +// Vitest Snapshot v1 + +exports[`Parsers - arithmetic > should parse an arithmetic operation correctly 1`] = ` +{ + "left": { + "left": { + "loc": { + "end": { + "col": 2, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "9", + }, + "loc": { + "end": { + "col": 6, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "+", + "right": { + "loc": { + "end": { + "col": 6, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "5", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "-", + "right": { + "left": { + "left": { + "loc": { + "end": { + "col": 10, + "line": 1, + }, + "start": { + "col": 9, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "loc": { + "end": { + "col": 14, + "line": 1, + }, + "start": { + "col": 9, + "line": 1, + }, + }, + "operator": "*", + "right": { + "loc": { + "end": { + "col": 14, + "line": 1, + }, + "start": { + "col": 13, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 9, + "line": 1, + }, + }, + "operator": "/", + "right": { + "left": { + "loc": { + "end": { + "col": 18, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "operator": "^", + "right": { + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 21, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "2", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", +} +`; + +exports[`Parsers - arithmetic > should parse an arithmetic operation containing helper functions and call expressions correctly 1`] = ` +{ + "left": { + "left": { + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "90.45", + }, + "loc": { + "end": { + "col": 82, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "+", + "right": { + "left": { + "left": { + "loc": { + "end": { + "col": 20, + "line": 1, + }, + "start": { + "col": 13, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "5000", + }, + "loc": { + "end": { + "col": 48, + "line": 1, + }, + "start": { + "col": 13, + "line": 1, + }, + }, + "operator": "-", + "right": { + "args": [ + { + "loc": { + "end": { + "col": 42, + "line": 1, + }, + "start": { + "col": 39, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "DAI", + }, + { + "args": [], + "loc": { + "end": { + "col": 47, + "line": 1, + }, + "start": { + "col": 44, + "line": 1, + }, + }, + "name": "me", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 48, + "line": 1, + }, + "start": { + "col": 23, + "line": 1, + }, + }, + "name": "token.balance", + "type": "HelperFunctionExpression", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 82, + "line": 1, + }, + "start": { + "col": 12, + "line": 1, + }, + }, + "operator": "*", + "right": { + "left": { + "args": [], + "loc": { + "end": { + "col": 78, + "line": 1, + }, + "start": { + "col": 53, + "line": 1, + }, + }, + "method": "getAmount", + "target": { + "loc": { + "end": { + "col": 65, + "line": 1, + }, + "start": { + "col": 53, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "someContract", + }, + "type": "CallExpression", + }, + "loc": { + "end": { + "col": 82, + "line": 1, + }, + "start": { + "col": 53, + "line": 1, + }, + }, + "operator": "/", + "right": { + "loc": { + "end": { + "col": 82, + "line": 1, + }, + "start": { + "col": 81, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 104, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "+", + "right": { + "left": { + "loc": { + "end": { + "col": 100, + "line": 1, + }, + "start": { + "col": 86, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$some-Variable", + }, + "loc": { + "end": { + "col": 104, + "line": 1, + }, + "start": { + "col": 86, + "line": 1, + }, + }, + "operator": "^", + "right": { + "loc": { + "end": { + "col": 104, + "line": 1, + }, + "start": { + "col": 103, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "2", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", +} +`; + +exports[`Parsers - arithmetic > should parse an arithmetic operation containing priority parenthenses correctly 1`] = ` +{ + "left": { + "left": { + "loc": { + "end": { + "col": 2, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "9", + }, + "loc": { + "end": { + "col": 5, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "^", + "right": { + "loc": { + "end": { + "col": 5, + "line": 1, + }, + "start": { + "col": 3, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "33", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 24, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "+", + "right": { + "left": { + "left": { + "loc": { + "end": { + "col": 10, + "line": 1, + }, + "start": { + "col": 9, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "5", + }, + "loc": { + "end": { + "col": 14, + "line": 1, + }, + "start": { + "col": 9, + "line": 1, + }, + }, + "operator": "-", + "right": { + "loc": { + "end": { + "col": 14, + "line": 1, + }, + "start": { + "col": 13, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 24, + "line": 1, + }, + "start": { + "col": 8, + "line": 1, + }, + }, + "operator": "*", + "right": { + "left": { + "loc": { + "end": { + "col": 20, + "line": 1, + }, + "start": { + "col": 19, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "loc": { + "end": { + "col": 24, + "line": 1, + }, + "start": { + "col": 19, + "line": 1, + }, + }, + "operator": "/", + "right": { + "loc": { + "end": { + "col": 24, + "line": 1, + }, + "start": { + "col": 23, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", +} +`; + +exports[`Parsers - arithmetic > should parse an arithmetic operation with in-between trailing spaces correctly 1`] = ` +{ + "left": { + "left": { + "loc": { + "end": { + "col": 2, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "9", + }, + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "+", + "right": { + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 8, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "5", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 36, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "operator": "-", + "right": { + "left": { + "left": { + "loc": { + "end": { + "col": 16, + "line": 1, + }, + "start": { + "col": 15, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 15, + "line": 1, + }, + }, + "operator": "*", + "right": { + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 26, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 36, + "line": 1, + }, + "start": { + "col": 15, + "line": 1, + }, + }, + "operator": "/", + "right": { + "loc": { + "end": { + "col": 36, + "line": 1, + }, + "start": { + "col": 35, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", +} +`; + +exports[`Parsers - arithmetic > should parse an arithmetic operation with trailing spaces at both ends correctly 1`] = ` +{ + "left": { + "left": { + "loc": { + "end": { + "col": 5, + "line": 1, + }, + "start": { + "col": 4, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "9", + }, + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 4, + "line": 1, + }, + }, + "operator": "+", + "right": { + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 8, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "5", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 4, + "line": 1, + }, + }, + "operator": "-", + "right": { + "left": { + "loc": { + "end": { + "col": 13, + "line": 1, + }, + "start": { + "col": 12, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 12, + "line": 1, + }, + }, + "operator": "*", + "right": { + "left": { + "left": { + "loc": { + "end": { + "col": 18, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4", + }, + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "operator": "/", + "right": { + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 21, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + "type": "BinaryExpression", + }, + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 16, + "line": 1, + }, + }, + "operator": "^", + "right": { + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 26, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", + }, + "type": "BinaryExpression", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/array.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/array.test.ts.snap new file mode 100644 index 00000000..7ffbda7f --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/array.test.ts.snap @@ -0,0 +1,349 @@ +// Vitest Snapshot v1 + +exports[`Parsers - array > should fail when parsing an array with empty elements 1`] = `"ArrayParserError(1:9): Expecting a valid expression, got ','"`; + +exports[`Parsers - array > should fail when parsing an array with multiple primary values between commas 1`] = `"ArrayParserError(1:12): Expecting character ']', got 'v'"`; + +exports[`Parsers - array > should fail when parsing an array without closing brackets 1`] = `"ArrayParserError(1:16): Expecting character ']', but got end of input."`; + +exports[`Parsers - array > should parse an array correctly 1`] = ` +{ + "elements": [ + { + "loc": { + "end": { + "col": 3, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "12", + }, + { + "loc": { + "end": { + "col": 15, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "a string", + }, + ], + "loc": { + "end": { + "col": 16, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ArrayExpression", +} +`; + +exports[`Parsers - array > should parse an array with nested arrays correctly 1`] = ` +{ + "elements": [ + { + "loc": { + "end": { + "col": 8, + "line": 1, + }, + "start": { + "col": 1, + "line": 1, + }, + }, + "power": 18, + "timeUnit": "y", + "type": "NumberLiteral", + "value": "145", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 20, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "DAI", + }, + ], + "loc": { + "end": { + "col": 21, + "line": 1, + }, + "start": { + "col": 10, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + { + "loc": { + "end": { + "col": 28, + "line": 1, + }, + "start": { + "col": 23, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + { + "elements": [ + { + "loc": { + "end": { + "col": 41, + "line": 1, + }, + "start": { + "col": 31, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "a string", + }, + { + "loc": { + "end": { + "col": 55, + "line": 1, + }, + "start": { + "col": 43, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "anIdentifier", + }, + { + "elements": [ + { + "loc": { + "end": { + "col": 59, + "line": 1, + }, + "start": { + "col": 58, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "1", + }, + { + "loc": { + "end": { + "col": 62, + "line": 1, + }, + "start": { + "col": 61, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "2", + }, + { + "elements": [ + { + "loc": { + "end": { + "col": 89, + "line": 1, + }, + "start": { + "col": 65, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "aDeepDeepIdentifier.open", + }, + ], + "loc": { + "end": { + "col": 90, + "line": 1, + }, + "start": { + "col": 64, + "line": 1, + }, + }, + "type": "ArrayExpression", + }, + ], + "loc": { + "end": { + "col": 91, + "line": 1, + }, + "start": { + "col": 57, + "line": 1, + }, + }, + "type": "ArrayExpression", + }, + { + "loc": { + "end": { + "col": 103, + "line": 1, + }, + "start": { + "col": 94, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$variable", + }, + ], + "loc": { + "end": { + "col": 104, + "line": 1, + }, + "start": { + "col": 30, + "line": 1, + }, + }, + "type": "ArrayExpression", + }, + { + "args": [], + "loc": { + "end": { + "col": 120, + "line": 1, + }, + "start": { + "col": 106, + "line": 1, + }, + }, + "method": "host", + "target": { + "loc": { + "end": { + "col": 112, + "line": 1, + }, + "start": { + "col": 106, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$fDAIx", + }, + "type": "CallExpression", + }, + ], + "loc": { + "end": { + "col": 121, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ArrayExpression", +} +`; + +exports[`Parsers - array > should parse an array with spaces at both ends correctly 1`] = ` +{ + "elements": [ + { + "loc": { + "end": { + "col": 6, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "1", + }, + { + "loc": { + "end": { + "col": 23, + "line": 1, + }, + "start": { + "col": 8, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "a text string", + }, + { + "loc": { + "end": { + "col": 29, + "line": 1, + }, + "start": { + "col": 28, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + ], + "loc": { + "end": { + "col": 34, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ArrayExpression", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/call.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/call.test.ts.snap new file mode 100644 index 00000000..635785ad --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/call.test.ts.snap @@ -0,0 +1,489 @@ +// Vitest Snapshot v1 + +exports[`Parsers - call expression > should parse a call expression containing nested call expression correctly 1`] = ` +{ + "args": [ + { + "args": [ + { + "loc": { + "end": { + "col": 37, + "line": 1, + }, + "start": { + "col": 31, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "DAIx", + }, + ], + "loc": { + "end": { + "col": 38, + "line": 1, + }, + "start": { + "col": 24, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + { + "args": [ + { + "elements": [ + { + "loc": { + "end": { + "col": 58, + "line": 1, + }, + "start": { + "col": 57, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "1", + }, + { + "loc": { + "end": { + "col": 60, + "line": 1, + }, + "start": { + "col": 59, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "2", + }, + { + "loc": { + "end": { + "col": 62, + "line": 1, + }, + "start": { + "col": 61, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "3", + }, + ], + "loc": { + "end": { + "col": 63, + "line": 1, + }, + "start": { + "col": 56, + "line": 1, + }, + }, + "type": "ArrayExpression", + }, + ], + "loc": { + "end": { + "col": 64, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "method": "vault", + "target": { + "loc": { + "end": { + "col": 48, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$finance", + }, + "type": "CallExpression", + }, + { + "args": [], + "loc": { + "end": { + "col": 85, + "line": 1, + }, + "start": { + "col": 66, + "line": 1, + }, + }, + "method": "method", + "target": { + "loc": { + "end": { + "col": 75, + "line": 1, + }, + "start": { + "col": 66, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$contract", + }, + "type": "CallExpression", + }, + { + "loc": { + "end": { + "col": 93, + "line": 1, + }, + "start": { + "col": 87, + "line": 1, + }, + }, + "power": 18, + "timeUnit": "m", + "type": "NumberLiteral", + "value": "10", + }, + { + "loc": { + "end": { + "col": 123, + "line": 1, + }, + "start": { + "col": 95, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "this is a nice description", + }, + ], + "loc": { + "end": { + "col": 124, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "method": "createFlow", + "target": { + "loc": { + "end": { + "col": 11, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$superfluid", + }, + "type": "CallExpression", +} +`; + +exports[`Parsers - call expression > should parse a call expression made from a helper function correctly 1`] = ` +{ + "args": [ + { + "args": [ + { + "loc": { + "end": { + "col": 32, + "line": 1, + }, + "start": { + "col": 29, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "DAI", + }, + ], + "loc": { + "end": { + "col": 33, + "line": 1, + }, + "start": { + "col": 22, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + { + "loc": { + "end": { + "col": 42, + "line": 1, + }, + "start": { + "col": 35, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "1800", + }, + ], + "loc": { + "end": { + "col": 43, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "method": "upgrade", + "target": { + "args": [ + { + "loc": { + "end": { + "col": 11, + "line": 1, + }, + "start": { + "col": 7, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "DAIx", + }, + ], + "loc": { + "end": { + "col": 12, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + "type": "CallExpression", +} +`; + +exports[`Parsers - call expression > should parse a call expression made from a literal address correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 54, + "line": 1, + }, + "start": { + "col": 53, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "0", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 67, + "line": 1, + }, + "start": { + "col": 63, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "WETH", + }, + ], + "loc": { + "end": { + "col": 68, + "line": 1, + }, + "start": { + "col": 56, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 69, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "method": "getEntry", + "target": { + "loc": { + "end": { + "col": 42, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "AddressLiteral", + "value": "0x14FA5C16Af56190239B997485656F5c8b4f86c4b", + }, + "type": "CallExpression", +} +`; + +exports[`Parsers - call expression > should parse a call expression with following chained call expressions correctly 1`] = ` +{ + "args": [], + "loc": { + "end": { + "col": 66, + "line": 1, + }, + "start": { + "col": 57, + "line": 1, + }, + }, + "method": "another", + "target": { + "args": [ + { + "args": [], + "loc": { + "end": { + "col": 43, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "name": "me", + "type": "HelperFunctionExpression", + }, + { + "loc": { + "end": { + "col": 54, + "line": 1, + }, + "start": { + "col": 45, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "560.25", + }, + ], + "loc": { + "end": { + "col": 55, + "line": 1, + }, + "start": { + "col": 32, + "line": 1, + }, + }, + "method": "approve", + "target": { + "args": [ + { + "loc": { + "end": { + "col": 29, + "line": 1, + }, + "start": { + "col": 28, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "1", + }, + ], + "loc": { + "end": { + "col": 30, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "method": "getToken", + "target": { + "loc": { + "end": { + "col": 17, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$registryContract", + }, + "type": "CallExpression", + }, + "type": "CallExpression", + }, + "type": "CallExpression", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/command.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/command.test.ts.snap new file mode 100644 index 00000000..8a084c28 --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/command.test.ts.snap @@ -0,0 +1,1311 @@ +// Vitest Snapshot v1 + +exports[`Parsers - command expression > should fail when parsing an incomplete command name 1`] = `"CommandParserError(1:10): Expecting a valid command name, got ':...'"`; + +exports[`Parsers - command expression > should fail when parsing an invalid command name 1`] = `"CommandParserError(1:14): Expecting a valid command name, got '234...'"`; + +exports[`Parsers - command expression > should fail when parsing an invalid module name 1`] = `"CommandParserError(1:4): Expecting a valid command name, got '2345:...'"`; + +exports[`Parsers - command expression > should fail when parsing an invalid opt name 1`] = `"CommandParserError(1:5): Expecting a valid option name, got '$ asd...'"`; + +exports[`Parsers - command expression > should parse a command followed by block experssions correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 21, + "line": 1, + }, + "start": { + "col": 8, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "token-manager", + }, + { + "loc": { + "end": { + "col": 28, + "line": 1, + }, + "start": { + "col": 22, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "voting", + }, + { + "loc": { + "end": { + "col": 34, + "line": 1, + }, + "start": { + "col": 29, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 16, + "line": 2, + }, + "start": { + "col": 10, + "line": 2, + }, + }, + "type": "VariableIdentifier", + "value": "$agent", + }, + { + "args": [], + "loc": { + "end": { + "col": 34, + "line": 2, + }, + "start": { + "col": 17, + "line": 2, + }, + }, + "method": "vault", + "target": { + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 17, + "line": 2, + }, + }, + "type": "VariableIdentifier", + "value": "$finance", + }, + "type": "CallExpression", + }, + ], + "loc": { + "end": { + "col": 34, + "line": 2, + }, + "start": { + "col": 6, + "line": 2, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 42, + "line": 3, + }, + "start": { + "col": 14, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "wrappable-token-manager.open", + }, + { + "loc": { + "end": { + "col": 65, + "line": 3, + }, + "start": { + "col": 43, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "disputable-voting.open", + }, + { + "loc": { + "end": { + "col": 71, + "line": 3, + }, + "start": { + "col": 66, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + { + "body": [ + { + "args": [ + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 21, + "line": 5, + }, + "start": { + "col": 15, + "line": 5, + }, + }, + "type": "ProbableIdentifier", + "value": "create", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 34, + "line": 5, + }, + "start": { + "col": 29, + "line": 5, + }, + }, + "type": "ProbableIdentifier", + "value": "fDAIx", + }, + ], + "loc": { + "end": { + "col": 35, + "line": 5, + }, + "start": { + "col": 22, + "line": 5, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + { + "loc": { + "end": { + "col": 42, + "line": 5, + }, + "start": { + "col": 36, + "line": 5, + }, + }, + "type": "VariableIdentifier", + "value": "$agent", + }, + { + "loc": { + "end": { + "col": 49, + "line": 5, + }, + "start": { + "col": 43, + "line": 5, + }, + }, + "power": 18, + "timeUnit": "mo", + "type": "NumberLiteral", + "value": "1", + }, + ], + "loc": { + "end": { + "col": 49, + "line": 5, + }, + "start": { + "col": 10, + "line": 5, + }, + }, + "name": "flow", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 9, + "line": 6, + }, + "start": { + "col": 21, + "line": 4, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 9, + "line": 6, + }, + "start": { + "col": 8, + "line": 4, + }, + }, + "module": "sf", + "name": "batchcall", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 7, + }, + "start": { + "col": 72, + "line": 3, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 7, + "line": 7, + }, + "start": { + "col": 6, + "line": 3, + }, + }, + "name": "forward", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 8, + }, + "start": { + "col": 35, + "line": 1, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 8, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "forward", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command load correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 15, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "superfluid", + }, + ], + "loc": { + "end": { + "col": 15, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command set correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 17, + "line": 1, + }, + "start": { + "col": 4, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$new-variable", + }, + { + "loc": { + "end": { + "col": 30, + "line": 1, + }, + "start": { + "col": 18, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "a variable", + }, + ], + "loc": { + "end": { + "col": 30, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command switch correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 13, + "line": 1, + }, + "start": { + "col": 7, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "gnosis", + }, + ], + "loc": { + "end": { + "col": 13, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "switch", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command with as expression correctly 1`] = ` +{ + "args": [ + { + "left": { + "loc": { + "end": { + "col": 13, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 19, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "right": { + "loc": { + "end": { + "col": 19, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 19, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command with helper function and call expression correctly 1`] = ` +{ + "args": [ + { + "args": [ + { + "loc": { + "end": { + "col": 38, + "line": 1, + }, + "start": { + "col": 17, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "upload this to ipfs", + }, + ], + "loc": { + "end": { + "col": 39, + "line": 1, + }, + "start": { + "col": 11, + "line": 1, + }, + }, + "name": "ipfs", + "type": "HelperFunctionExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 66, + "line": 1, + }, + "start": { + "col": 58, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "param1", + }, + { + "loc": { + "end": { + "col": 73, + "line": 1, + }, + "start": { + "col": 68, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + { + "loc": { + "end": { + "col": 88, + "line": 1, + }, + "start": { + "col": 75, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "an-identifier", + }, + { + "args": [], + "loc": { + "end": { + "col": 93, + "line": 1, + }, + "start": { + "col": 90, + "line": 1, + }, + }, + "name": "me", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 94, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "method": "getData", + "target": { + "loc": { + "end": { + "col": 48, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "contract", + }, + "type": "CallExpression", + }, + { + "loc": { + "end": { + "col": 117, + "line": 1, + }, + "start": { + "col": 95, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "anotherIdentifier.open", + }, + ], + "loc": { + "end": { + "col": 117, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "my-command", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command with in-between optional args correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 47, + "line": 1, + }, + "start": { + "col": 5, + "line": 1, + }, + }, + "type": "AddressLiteral", + "value": "0x9C33eaCc2F50E39940D3AfaF2c7B8246B681A374", + }, + { + "loc": { + "end": { + "col": 77, + "line": 1, + }, + "start": { + "col": 73, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "1", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 127, + "line": 1, + }, + "start": { + "col": 124, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "DAI", + }, + { + "loc": { + "end": { + "col": 134, + "line": 1, + }, + "start": { + "col": 129, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "see", + }, + ], + "loc": { + "end": { + "col": 135, + "line": 1, + }, + "start": { + "col": 117, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + { + "body": [ + { + "args": [ + { + "args": [], + "loc": { + "end": { + "col": 24, + "line": 2, + }, + "start": { + "col": 21, + "line": 2, + }, + }, + "name": "me", + "type": "HelperFunctionExpression", + }, + { + "loc": { + "end": { + "col": 44, + "line": 2, + }, + "start": { + "col": 39, + "line": 2, + }, + }, + "power": 16, + "type": "NumberLiteral", + "value": "25", + }, + ], + "loc": { + "end": { + "col": 44, + "line": 2, + }, + "start": { + "col": 6, + "line": 2, + }, + }, + "name": "inside-command", + "opts": [ + { + "loc": { + "end": { + "col": 38, + "line": 2, + }, + "start": { + "col": 25, + "line": 2, + }, + }, + "name": "t", + "type": "CommandOpt", + "value": { + "loc": { + "end": { + "col": 38, + "line": 2, + }, + "start": { + "col": 29, + "line": 2, + }, + }, + "type": "StringLiteral", + "value": "testing", + }, + }, + ], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 32, + "line": 3, + }, + "start": { + "col": 17, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "token-manager:0", + }, + { + "loc": { + "end": { + "col": 50, + "line": 3, + }, + "start": { + "col": 33, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "superfluid.open:3", + }, + ], + "loc": { + "end": { + "col": 65, + "line": 3, + }, + "start": { + "col": 6, + "line": 3, + }, + }, + "name": "another-ne", + "opts": [ + { + "loc": { + "end": { + "col": 65, + "line": 3, + }, + "start": { + "col": 51, + "line": 3, + }, + }, + "name": "default", + "type": "CommandOpt", + "value": { + "loc": { + "end": { + "col": 65, + "line": 3, + }, + "start": { + "col": 61, + "line": 3, + }, + }, + "type": "BoolLiteral", + "value": true, + }, + }, + ], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 5, + "line": 4, + }, + "start": { + "col": 136, + "line": 1, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 21, + "line": 4, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "exec", + "opts": [ + { + "loc": { + "end": { + "col": 72, + "line": 1, + }, + "start": { + "col": 48, + "line": 1, + }, + }, + "name": "inBetween", + "type": "CommandOpt", + "value": { + "args": [], + "loc": { + "end": { + "col": 72, + "line": 1, + }, + "start": { + "col": 60, + "line": 1, + }, + }, + "method": "getInfo", + "target": { + "loc": { + "end": { + "col": 61, + "line": 1, + }, + "start": { + "col": 60, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "a", + }, + "type": "CallExpression", + }, + }, + { + "loc": { + "end": { + "col": 116, + "line": 1, + }, + "start": { + "col": 78, + "line": 1, + }, + }, + "name": "another-one", + "type": "CommandOpt", + "value": { + "args": [ + { + "loc": { + "end": { + "col": 110, + "line": 1, + }, + "start": { + "col": 107, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "GIV", + }, + { + "args": [], + "loc": { + "end": { + "col": 115, + "line": 1, + }, + "start": { + "col": 112, + "line": 1, + }, + }, + "name": "me", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 116, + "line": 1, + }, + "start": { + "col": 92, + "line": 1, + }, + }, + "name": "token.balance", + "type": "HelperFunctionExpression", + }, + }, + { + "loc": { + "end": { + "col": 21, + "line": 4, + }, + "start": { + "col": 6, + "line": 4, + }, + }, + "name": "lastOne", + "type": "CommandOpt", + "value": { + "loc": { + "end": { + "col": 21, + "line": 4, + }, + "start": { + "col": 16, + "line": 4, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + }, + ], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command with in-between trailing whitespaces correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 43, + "line": 1, + }, + "start": { + "col": 15, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "wrapper-hooked-token-manager", + }, + { + "loc": { + "end": { + "col": 86, + "line": 1, + }, + "start": { + "col": 44, + "line": 1, + }, + }, + "type": "AddressLiteral", + "value": "0x83E57888cd55C3ea1cfbf0114C963564d81e318d", + }, + { + "loc": { + "end": { + "col": 92, + "line": 1, + }, + "start": { + "col": 87, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + { + "loc": { + "end": { + "col": 94, + "line": 1, + }, + "start": { + "col": 93, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "0", + }, + ], + "loc": { + "end": { + "col": 94, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command with left trailing whitespaces correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 39, + "line": 1, + }, + "start": { + "col": 11, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "wrapper-hooked-token-manager", + }, + { + "loc": { + "end": { + "col": 82, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "type": "AddressLiteral", + "value": "0x83E57888cd55C3ea1cfbf0114C963564d81e318d", + }, + { + "loc": { + "end": { + "col": 88, + "line": 1, + }, + "start": { + "col": 83, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + { + "loc": { + "end": { + "col": 90, + "line": 1, + }, + "start": { + "col": 89, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "0", + }, + ], + "loc": { + "end": { + "col": 90, + "line": 1, + }, + "start": { + "col": 3, + "line": 1, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command with optional args correctly 1`] = `"CommandParserError(1:0): Expecting a valid command name, got ''exam...'"`; + +exports[`Parsers - command expression > should parse a command with right trailing whitespaces correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 36, + "line": 1, + }, + "start": { + "col": 8, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "wrapper-hooked-token-manager", + }, + { + "loc": { + "end": { + "col": 79, + "line": 1, + }, + "start": { + "col": 37, + "line": 1, + }, + }, + "type": "AddressLiteral", + "value": "0x83E57888cd55C3ea1cfbf0114C963564d81e318d", + }, + { + "loc": { + "end": { + "col": 85, + "line": 1, + }, + "start": { + "col": 80, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + { + "loc": { + "end": { + "col": 87, + "line": 1, + }, + "start": { + "col": 86, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "0", + }, + ], + "loc": { + "end": { + "col": 87, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", +} +`; + +exports[`Parsers - command expression > should parse a command without args correctly 1`] = ` +{ + "args": [], + "loc": { + "end": { + "col": 18, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "module": "mod", + "name": "no-arg-command", + "opts": [], + "type": "CommandExpression", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/comment.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/comment.test.ts.snap new file mode 100644 index 00000000..6a884f16 --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/comment.test.ts.snap @@ -0,0 +1,225 @@ +// Vitest Snapshot v1 + +exports[`Parsers - comment > should parse a inline comment correctly 1`] = ` +Cas11AST { + "body": [ + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 19, + "line": 2, + }, + "start": { + "col": 11, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 11, + "line": 2, + }, + }, + "right": { + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 23, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 6, + "line": 2, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 15, + "line": 3, + }, + "start": { + "col": 10, + "line": 3, + }, + }, + "type": "VariableIdentifier", + "value": "$var1", + }, + { + "loc": { + "end": { + "col": 20, + "line": 3, + }, + "start": { + "col": 16, + "line": 3, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "1", + }, + ], + "loc": { + "end": { + "col": 20, + "line": 3, + }, + "start": { + "col": 6, + "line": 3, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + ], + "type": "Program", +} +`; + +exports[`Parsers - comment > should parse a normal comment correctly 1`] = ` +Cas11AST { + "body": [ + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 17, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 23, + "line": 3, + }, + "start": { + "col": 9, + "line": 3, + }, + }, + "right": { + "loc": { + "end": { + "col": 23, + "line": 3, + }, + "start": { + "col": 21, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 23, + "line": 3, + }, + "start": { + "col": 4, + "line": 3, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 13, + "line": 6, + }, + "start": { + "col": 8, + "line": 6, + }, + }, + "type": "VariableIdentifier", + "value": "$var1", + }, + { + "loc": { + "end": { + "col": 18, + "line": 6, + }, + "start": { + "col": 14, + "line": 6, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "1", + }, + ], + "loc": { + "end": { + "col": 18, + "line": 6, + }, + "start": { + "col": 4, + "line": 6, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + ], + "type": "Program", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/helper.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/helper.test.ts.snap new file mode 100644 index 00000000..64e716fd --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/helper.test.ts.snap @@ -0,0 +1,230 @@ +// Vitest Snapshot v1 + +exports[`Parsers - helper functions > should fail when parsing a helper with an invalid name 1`] = `"HelperParserError(1:4): Expecting a helper name, got '&$6...'"`; + +exports[`Parsers - helper functions > should fail when parsing a helper with empty arguments 1`] = `"HelperParserError(1:20): Expecting a valid expression, got ','"`; + +exports[`Parsers - helper functions > should fail when parsing a helper with no closing parenthesis 1`] = `"HelperParserError(1:17): Expecting character ')', but got end of input."`; + +exports[`Parsers - helper functions > should fail when parsing a helper with no opening parenthesis 1`] = `"HelperParserError(1:10): Expecting a helper name, got '1, 1e...'"`; + +exports[`Parsers - helper functions > should parse helper correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 11, + "line": 1, + }, + "start": { + "col": 7, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "WETH", + }, + ], + "loc": { + "end": { + "col": 12, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", +} +`; + +exports[`Parsers - helper functions > should parse helper with call expression correctly 1`] = ` +{ + "args": [ + { + "args": [], + "loc": { + "end": { + "col": 38, + "line": 1, + }, + "start": { + "col": 16, + "line": 1, + }, + }, + "method": "symbol", + "target": { + "loc": { + "end": { + "col": 28, + "line": 1, + }, + "start": { + "col": 16, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "anotherToken", + }, + "type": "CallExpression", + }, + { + "loc": { + "end": { + "col": 64, + "line": 1, + }, + "start": { + "col": 40, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "this is a string param", + }, + { + "loc": { + "end": { + "col": 71, + "line": 1, + }, + "start": { + "col": 66, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "10", + }, + ], + "loc": { + "end": { + "col": 72, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "helperFunction", + "type": "HelperFunctionExpression", +} +`; + +exports[`Parsers - helper functions > should parse helper with nested helpers correctly 1`] = ` +{ + "args": [ + { + "loc": { + "end": { + "col": 12, + "line": 1, + }, + "start": { + "col": 7, + "line": 1, + }, + }, + "type": "StringLiteral", + "value": "DAI", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 20, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "34", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 41, + "line": 1, + }, + "start": { + "col": 37, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": true, + }, + ], + "loc": { + "end": { + "col": 42, + "line": 1, + }, + "start": { + "col": 24, + "line": 1, + }, + }, + "name": "innerHelper", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 43, + "line": 1, + }, + "start": { + "col": 14, + "line": 1, + }, + }, + "name": "calc", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 44, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", +} +`; + +exports[`Parsers - helper functions > should parse helper with no arguments correctly 1`] = ` +{ + "args": [], + "loc": { + "end": { + "col": 4, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "name": "now", + "type": "HelperFunctionExpression", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/primary.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/primary.test.ts.snap new file mode 100644 index 00000000..c4a7eff6 --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/primary.test.ts.snap @@ -0,0 +1,557 @@ +// Vitest Snapshot v1 + +exports[`Parsers - primaries > when parsing literal values > should fail when parsing an invalid string 1`] = `"StringParserError(1:12): Expecting a quoted string, got end of input."`; + +exports[`Parsers - primaries > when parsing literal values > when parsing address values > should fail when parsing an invalid one 1`] = `"AddressParserError(1:0): Expecting an address, got '0xasd...'"`; + +exports[`Parsers - primaries > when parsing literal values > when parsing address values > should parse them correctly 1`] = ` +{ + "loc": { + "end": { + "col": 42, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "AddressLiteral", + "value": "0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing boolean values > should fail when parsing an invalid value 1`] = `"BooleanParserError(1:0): Expecting \\"true\\" or \\"false\\", got 'fals...'"`; + +exports[`Parsers - primaries > when parsing literal values > when parsing boolean values > should parse "true" value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 4, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": true, +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing boolean values > should parse "value" value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 5, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "BoolLiteral", + "value": false, +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing hexadecimal values > should fail when parsing an invalid value 1`] = `"HexadecimalParserError(1:3): Expecting a hexadecimal value, got 'sdadq...'"`; + +exports[`Parsers - primaries > when parsing literal values > when parsing hexadecimal values > should parse a long value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 202, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "BytesLiteral", + "value": "0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing hexadecimal values > should parse a value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 15, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "BytesLiteral", + "value": "0xa3432da4567be", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should fail when parsing an incomplete decimal 1`] = `"NumberParserError(1:4): Invalid decimal. Expecting digits"`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should fail when parsing an incomplete exponent 1`] = `"NumberParserError(1:6): Invalid exponent. Expecting digits"`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should fail when parsing an invalid time unit 1`] = `"NumberParserError(1:10): Invalid time unit. Expected \\"s\\", \\"m\\", \\"h\\", \\"d\\", \\"w\\", \\"mo\\" or \\"y\\", got '34...'"`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a exponent value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 7, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "9200", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a integer value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 2, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "15", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with a decimal and exponent correctly 1`] = ` +{ + "loc": { + "end": { + "col": 6, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "power": 14, + "type": "NumberLiteral", + "value": "0.5", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with a decimal correctly 1`] = ` +{ + "loc": { + "end": { + "col": 7, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "NumberLiteral", + "value": "4500.32", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with a decimal, exponent and temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 12, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "power": 18, + "timeUnit": "mo", + "type": "NumberLiteral", + "value": "20.3245", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with a minutely temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 2, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "m", + "type": "NumberLiteral", + "value": "5", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with a secondly temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 3, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "s", + "type": "NumberLiteral", + "value": "50", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with an daily temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 4, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "d", + "type": "NumberLiteral", + "value": "365", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with an hourly temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 3, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "h", + "type": "NumberLiteral", + "value": "35", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with an monthly temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 5, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "mo", + "type": "NumberLiteral", + "value": "6.5", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with an weekly temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 3, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "w", + "type": "NumberLiteral", + "value": "72", +} +`; + +exports[`Parsers - primaries > when parsing literal values > when parsing numeric values > should parse a value with an yearly temporal unit correctly 1`] = ` +{ + "loc": { + "end": { + "col": 4, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "timeUnit": "y", + "type": "NumberLiteral", + "value": "2.5", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > fail when parsing an invalid identifier 1`] = `"IdentifierParserError(1:3): Expecting an identifier, got '([[))...'"`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 3, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "new", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a camel case value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "aNewAgent", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a date-like value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 10, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "2015-20-09", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a dots and numbers value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 12, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "agent.open.0", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a kebab case value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 11, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "create-flow", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a kebab case with colon value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 28, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "superfluid-app.other-open:20", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a kebab case with dot value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 15, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "my-ens-name.eth", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a long kebab case value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 27, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "create-super-flow-xtreme-aa", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a no-params-signature-like value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 18, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "noParamSignature()", +} +`; + +exports[`Parsers - primaries > when parsing probable identifiers > should parse a signature-like value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 28, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "ProbableIdentifier", + "value": "aSIgnature(with,some,params)", +} +`; + +exports[`Parsers - primaries > when parsing variable identifiers > should fail when parsing invalid variables 1`] = `"VariableParserError(1:5): Expecting a variable, got '()...'"`; + +exports[`Parsers - primaries > when parsing variable identifiers > when parsing variable values > should parse a value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 9, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$variable", +} +`; + +exports[`Parsers - primaries > when parsing variable identifiers > when parsing variable values > should parse a camel case value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 19, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$aCamelCaseVariable", +} +`; + +exports[`Parsers - primaries > when parsing variable identifiers > when parsing variable values > should parse a snake case value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 22, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$a-snake-case-variable", +} +`; + +exports[`Parsers - primaries > when parsing variable identifiers > when parsing variable values > should parse a snake case with colon and number value correctly 1`] = ` +{ + "loc": { + "end": { + "col": 21, + "line": 1, + }, + "start": { + "col": 0, + "line": 1, + }, + }, + "type": "VariableIdentifier", + "value": "$token-manager.open:0", +} +`; diff --git a/core/evmcrispr/test/parsers/__snapshots__/script.test.ts.snap b/core/evmcrispr/test/parsers/__snapshots__/script.test.ts.snap new file mode 100644 index 00000000..7c109ee8 --- /dev/null +++ b/core/evmcrispr/test/parsers/__snapshots__/script.test.ts.snap @@ -0,0 +1,895 @@ +// Vitest Snapshot v1 + +exports[`Parsers - script > should parse an script correctly 1`] = ` +Cas11AST { + "body": [ + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 19, + "line": 2, + }, + "start": { + "col": 11, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "aragonos", + }, + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 11, + "line": 2, + }, + }, + "right": { + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 23, + "line": 2, + }, + }, + "type": "ProbableIdentifier", + "value": "ar", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 25, + "line": 2, + }, + "start": { + "col": 6, + "line": 2, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "left": { + "loc": { + "end": { + "col": 21, + "line": 3, + }, + "start": { + "col": 11, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "superfluid", + }, + "loc": { + "end": { + "col": 27, + "line": 3, + }, + "start": { + "col": 11, + "line": 3, + }, + }, + "right": { + "loc": { + "end": { + "col": 27, + "line": 3, + }, + "start": { + "col": 25, + "line": 3, + }, + }, + "type": "ProbableIdentifier", + "value": "sf", + }, + "type": "AsExpression", + }, + ], + "loc": { + "end": { + "col": 27, + "line": 3, + }, + "start": { + "col": 6, + "line": 3, + }, + }, + "name": "load", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 27, + "line": 6, + }, + "start": { + "col": 17, + "line": 6, + }, + }, + "type": "ProbableIdentifier", + "value": "my-dao-ens", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 29, + "line": 7, + }, + "start": { + "col": 16, + "line": 7, + }, + }, + "type": "ProbableIdentifier", + "value": "token-manager", + }, + { + "loc": { + "end": { + "col": 36, + "line": 7, + }, + "start": { + "col": 30, + "line": 7, + }, + }, + "type": "ProbableIdentifier", + "value": "voting", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 51, + "line": 8, + }, + "start": { + "col": 18, + "line": 8, + }, + }, + "type": "ProbableIdentifier", + "value": "wrapper-hooked-token-manager.open", + }, + { + "loc": { + "end": { + "col": 94, + "line": 8, + }, + "start": { + "col": 52, + "line": 8, + }, + }, + "type": "AddressLiteral", + "value": "0x83E57888cd55C3ea1cfbf0114C963564d81e318d", + }, + { + "loc": { + "end": { + "col": 100, + "line": 8, + }, + "start": { + "col": 95, + "line": 8, + }, + }, + "type": "BoolLiteral", + "value": false, + }, + { + "loc": { + "end": { + "col": 102, + "line": 8, + }, + "start": { + "col": 101, + "line": 8, + }, + }, + "type": "NumberLiteral", + "value": "0", + }, + ], + "loc": { + "end": { + "col": 102, + "line": 8, + }, + "start": { + "col": 10, + "line": 8, + }, + }, + "name": "install", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 9, + "line": 11, + }, + "start": { + "col": 42, + "line": 7, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 9, + "line": 11, + }, + "start": { + "col": 8, + "line": 7, + }, + }, + "name": "forward", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 29, + "line": 16, + }, + "start": { + "col": 16, + "line": 16, + }, + }, + "type": "ProbableIdentifier", + "value": "token-manager", + }, + { + "loc": { + "end": { + "col": 36, + "line": 16, + }, + "start": { + "col": 30, + "line": 16, + }, + }, + "type": "ProbableIdentifier", + "value": "voting", + }, + { + "loc": { + "end": { + "col": 42, + "line": 16, + }, + "start": { + "col": 37, + "line": 16, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 20, + "line": 18, + }, + "start": { + "col": 14, + "line": 18, + }, + }, + "type": "VariableIdentifier", + "value": "$agent", + }, + { + "args": [], + "loc": { + "end": { + "col": 37, + "line": 18, + }, + "start": { + "col": 21, + "line": 18, + }, + }, + "method": "vault", + "target": { + "loc": { + "end": { + "col": 28, + "line": 18, + }, + "start": { + "col": 21, + "line": 18, + }, + }, + "type": "ProbableIdentifier", + "value": "finance", + }, + "type": "CallExpression", + }, + ], + "loc": { + "end": { + "col": 37, + "line": 18, + }, + "start": { + "col": 10, + "line": 18, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 46, + "line": 20, + }, + "start": { + "col": 18, + "line": 20, + }, + }, + "type": "ProbableIdentifier", + "value": "wrappable-token-manager.open", + }, + { + "loc": { + "end": { + "col": 69, + "line": 20, + }, + "start": { + "col": 47, + "line": 20, + }, + }, + "type": "ProbableIdentifier", + "value": "disputable-voting.open", + }, + { + "loc": { + "end": { + "col": 75, + "line": 20, + }, + "start": { + "col": 70, + "line": 20, + }, + }, + "type": "ProbableIdentifier", + "value": "agent", + }, + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 21, + "line": 21, + }, + "start": { + "col": 16, + "line": 21, + }, + }, + "type": "VariableIdentifier", + "value": "$daix", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 36, + "line": 21, + }, + "start": { + "col": 29, + "line": 21, + }, + }, + "type": "StringLiteral", + "value": "fDAIx", + }, + ], + "loc": { + "end": { + "col": 37, + "line": 21, + }, + "start": { + "col": 22, + "line": 21, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 37, + "line": 21, + }, + "start": { + "col": 12, + "line": 21, + }, + }, + "name": "set", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 28, + "line": 30, + }, + "start": { + "col": 21, + "line": 30, + }, + }, + "type": "ProbableIdentifier", + "value": "approve", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 41, + "line": 30, + }, + "start": { + "col": 36, + "line": 30, + }, + }, + "type": "StringLiteral", + "value": "DAI", + }, + ], + "loc": { + "end": { + "col": 42, + "line": 30, + }, + "start": { + "col": 29, + "line": 30, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + { + "args": [], + "loc": { + "end": { + "col": 46, + "line": 30, + }, + "start": { + "col": 43, + "line": 30, + }, + }, + "name": "me", + "type": "HelperFunctionExpression", + }, + { + "loc": { + "end": { + "col": 55, + "line": 30, + }, + "start": { + "col": 47, + "line": 30, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "15.45", + }, + ], + "loc": { + "end": { + "col": 55, + "line": 30, + }, + "start": { + "col": 12, + "line": 30, + }, + }, + "module": "sf", + "name": "token", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "body": [ + { + "args": [ + { + "loc": { + "end": { + "col": 27, + "line": 34, + }, + "start": { + "col": 20, + "line": 34, + }, + }, + "type": "ProbableIdentifier", + "value": "upgrade", + }, + { + "loc": { + "end": { + "col": 33, + "line": 34, + }, + "start": { + "col": 28, + "line": 34, + }, + }, + "type": "VariableIdentifier", + "value": "$daix", + }, + { + "loc": { + "end": { + "col": 44, + "line": 34, + }, + "start": { + "col": 34, + "line": 34, + }, + }, + "power": 18, + "type": "NumberLiteral", + "value": "4500.43", + }, + ], + "loc": { + "end": { + "col": 44, + "line": 34, + }, + "start": { + "col": 14, + "line": 34, + }, + }, + "name": "token", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 25, + "line": 35, + }, + "start": { + "col": 19, + "line": 35, + }, + }, + "type": "ProbableIdentifier", + "value": "create", + }, + { + "loc": { + "end": { + "col": 31, + "line": 35, + }, + "start": { + "col": 26, + "line": 35, + }, + }, + "type": "VariableIdentifier", + "value": "$daix", + }, + { + "loc": { + "end": { + "col": 38, + "line": 35, + }, + "start": { + "col": 32, + "line": 35, + }, + }, + "type": "VariableIdentifier", + "value": "$agent", + }, + { + "loc": { + "end": { + "col": 45, + "line": 35, + }, + "start": { + "col": 39, + "line": 35, + }, + }, + "power": 18, + "timeUnit": "mo", + "type": "NumberLiteral", + "value": "1", + }, + ], + "loc": { + "end": { + "col": 45, + "line": 35, + }, + "start": { + "col": 14, + "line": 35, + }, + }, + "name": "flow", + "opts": [], + "type": "CommandExpression", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 29, + "line": 36, + }, + "start": { + "col": 20, + "line": 36, + }, + }, + "type": "ProbableIdentifier", + "value": "downgrade", + }, + { + "args": [ + { + "loc": { + "end": { + "col": 44, + "line": 36, + }, + "start": { + "col": 37, + "line": 36, + }, + }, + "type": "StringLiteral", + "value": "USDCx", + }, + ], + "loc": { + "end": { + "col": 45, + "line": 36, + }, + "start": { + "col": 30, + "line": 36, + }, + }, + "name": "token", + "type": "HelperFunctionExpression", + }, + ], + "loc": { + "end": { + "col": 45, + "line": 36, + }, + "start": { + "col": 14, + "line": 36, + }, + }, + "name": "token", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 13, + "line": 37, + }, + "start": { + "col": 25, + "line": 33, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 13, + "line": 37, + }, + "start": { + "col": 12, + "line": 33, + }, + }, + "module": "sf", + "name": "batchcall", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 11, + "line": 40, + }, + "start": { + "col": 76, + "line": 20, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 11, + "line": 40, + }, + "start": { + "col": 10, + "line": 20, + }, + }, + "name": "forward", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 9, + "line": 43, + }, + "start": { + "col": 43, + "line": 16, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 9, + "line": 43, + }, + "start": { + "col": 8, + "line": 16, + }, + }, + "name": "forward", + "opts": [], + "type": "CommandExpression", + }, + ], + "loc": { + "end": { + "col": 27, + "line": 46, + }, + "start": { + "col": 28, + "line": 6, + }, + }, + "type": "BlockExpression", + }, + ], + "loc": { + "end": { + "col": 27, + "line": 46, + }, + "start": { + "col": 6, + "line": 6, + }, + }, + "module": "ar", + "name": "connect", + "opts": [], + "type": "CommandExpression", + }, + ], + "type": "Program", +} +`; diff --git a/core/evmcrispr/test/parsers/arithmetic.test.ts b/core/evmcrispr/test/parsers/arithmetic.test.ts new file mode 100644 index 00000000..8ecd015a --- /dev/null +++ b/core/evmcrispr/test/parsers/arithmetic.test.ts @@ -0,0 +1,33 @@ +import { runParser } from '@1hive/evmcrispr-test-common'; +import type { Case } from '@1hive/evmcrispr-test-common'; + +import { arithmeticParser } from '../../src/parsers/arithmetic'; + +describe.concurrent('Parsers - arithmetic', () => { + describe.each([ + { title: '', value: '(9 + 5 - 4 * 4 / 3 ^ 2)' }, + { + title: 'with trailing spaces at both ends', + value: '( 9 + 5 - 4 * (4 / 3) ^ 3 )', + }, + { + title: 'with in-between trailing spaces', + value: '(9 + 5 - 4 * 4 / 3)', + }, + { + title: 'containing priority parenthenses', + value: '(9^33 + (5 - 4) * (4 / 3))', + }, + { + title: 'containing helper functions and call expressions', + value: + '(90.45e18 + (5000e18 - @token.balance( DAI, @me)) * (someContract::getAmount() / 3) + $some-Variable ^ 2)', + }, + ])('', ({ title, value }) => { + it(`should parse an arithmetic operation ${title} correctly`, () => { + const parsedValue = runParser(arithmeticParser, value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); +}); diff --git a/core/evmcrispr/test/parsers/array.test.ts b/core/evmcrispr/test/parsers/array.test.ts new file mode 100644 index 00000000..7f80dbd8 --- /dev/null +++ b/core/evmcrispr/test/parsers/array.test.ts @@ -0,0 +1,40 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import { runParser, runParserError } from '@1hive/evmcrispr-test-common'; + +import { arrayExpressionParser } from '../../src/parsers/array'; + +describe.concurrent('Parsers - array', () => { + describe.concurrent.each([ + { title: '', value: '[12, "a string"]' }, + { + title: 'with spaces at both ends', + value: '[ 1, "a text string", 3 ]', + }, + { + title: 'with nested arrays', + value: + '[145e18y, @token(DAI), false, ["a string", anIdentifier, [1, 2, [aDeepDeepIdentifier.open]], $variable], $fDAIx::host()]', + }, + ])('', ({ title, value }) => { + it(`should parse an array ${title} correctly`, () => { + const parsedValue = runParser(arrayExpressionParser, value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + describe.concurrent.each([ + { + title: 'with multiple primary values between commas', + value: '[1,multiple values between commas, false]', + }, + { title: 'with empty elements', value: '[12e14w, ,,]' }, + { title: 'without closing brackets', value: '[12e14w, "asdas"' }, + ])('', ({ title, value }) => { + it(`should fail when parsing an array ${title}`, () => { + const error = runParserError(arrayExpressionParser, value); + + expect(error).toMatchSnapshot(); + }); + }); +}); diff --git a/core/evmcrispr/test/parsers/call.test.ts b/core/evmcrispr/test/parsers/call.test.ts new file mode 100644 index 00000000..f1c00104 --- /dev/null +++ b/core/evmcrispr/test/parsers/call.test.ts @@ -0,0 +1,31 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import { runParser } from '@1hive/evmcrispr-test-common'; + +import { callExpressionParser } from '../../src/parsers/call'; + +describe('Parsers - call expression', () => { + describe.concurrent.each([ + { + title: 'made from a literal address', + value: `0x14FA5C16Af56190239B997485656F5c8b4f86c4b::getEntry(0, @token(WETH))`, + }, + { + title: 'containing nested call expression', + value: `$superfluid::createFlow(@token("DAIx"), $finance::vault([1,2,3]), $contract::method(), 10e18m, 'this is a nice description')`, + }, + { + title: 'made from a helper function', + value: `@token(DAIx)::upgrade(@token(DAI), 1800e18)`, + }, + { + title: 'with following chained call expressions', + value: `$registryContract::getToken(1)::approve(@me, 560.25e18)::another()`, + }, + ])('', ({ title, value }) => { + it(`should parse a call expression ${title} correctly`, () => { + const parsedValue = runParser(callExpressionParser, value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); +}); diff --git a/core/evmcrispr/test/parsers/command.test.ts b/core/evmcrispr/test/parsers/command.test.ts new file mode 100644 index 00000000..3782d5bf --- /dev/null +++ b/core/evmcrispr/test/parsers/command.test.ts @@ -0,0 +1,88 @@ +import { runParser, runParserError } from '@1hive/evmcrispr-test-common'; +import type { Case } from '@1hive/evmcrispr-test-common'; + +import { + commandExpressionParser, + commandOptParser, +} from '../../src/parsers/command'; + +describe.concurrent('Parsers - command expression', () => { + const trailingWhitspacesCommand = `install wrapper-hooked-token-manager 0x83E57888cd55C3ea1cfbf0114C963564d81e318d false 0`; + + describe.concurrent.each([ + { + title: 'with helper function and call expression', + value: + 'my-command @ipfs("upload this to ipfs") contract::getData("param1", false, an-identifier, @me) anotherIdentifier.open', + }, + { title: 'load', value: 'load superfluid' }, + { title: 'with as expression', value: 'load aragonos as ar' }, + { title: 'switch', value: 'switch gnosis' }, + { title: 'set', value: `set $new-variable 'a variable'` }, + { title: 'without args', value: `mod:no-arg-command` }, + { + title: 'with optional args', + value: `'example-command myArg1 125.23e18 @aHelper(contract::getSomething(), false) "text" --option1 optionValue --something-else @token(DAI) --anotherOne 1e18'`, + }, + { + title: 'with in-between optional args', + value: `exec 0x9C33eaCc2F50E39940D3AfaF2c7B8246B681A374 --inBetween a::getInfo() 1e18 --another-one @token.balance(GIV, @me) @token(DAI, "see") ( + inside-command @me --t "testing" 25e16 + another-ne token-manager:0 superfluid.open:3 --default true + ) --lastOne false`, + }, + { + title: 'with right trailing whitespaces', + value: `${trailingWhitspacesCommand} `, + }, + { + title: 'with left trailing whitespaces', + value: ` ${trailingWhitspacesCommand}`, + }, + { + title: 'with in-between trailing whitespaces', + value: `${trailingWhitspacesCommand.slice( + 0, + 7, + )} ${trailingWhitspacesCommand.slice( + 7, + trailingWhitspacesCommand.length, + )}`, + }, + { + title: 'followed by block experssions', + value: `forward token-manager voting agent ( + set $agent $finance::vault() + forward wrappable-token-manager.open disputable-voting.open agent ( + sf:batchcall ( + flow create @token(fDAIx) $agent 1e18mo + ) + ) + )`, + }, + ])('', ({ title, value }) => { + it(`should parse a command ${title} correctly`, () => { + const parsedValue = runParser(commandExpressionParser, value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + describe.concurrent.each([ + { title: 'invalid module name', value: 'asda2345:asd' }, + { title: 'invalid command name', value: 'my-command:wer234' }, + { title: 'incomplete command name', value: 'my-command:' }, + ])('', ({ title, value }) => { + it(`should fail when parsing an ${title}`, () => { + const error = runParserError(commandExpressionParser, value); + + expect(error).toMatchSnapshot(); + }); + }); + + it('should fail when parsing an invalid opt name', () => { + const error = runParserError(commandOptParser, '--asd$ asd'); + + expect(error).toMatchSnapshot(); + }); +}); diff --git a/core/evmcrispr/test/parsers/comment.test.ts b/core/evmcrispr/test/parsers/comment.test.ts new file mode 100644 index 00000000..78395784 --- /dev/null +++ b/core/evmcrispr/test/parsers/comment.test.ts @@ -0,0 +1,34 @@ +import { runParser } from '@1hive/evmcrispr-test-common'; +import type { Case } from '@1hive/evmcrispr-test-common'; + +import { scriptParser } from '../../src'; + +describe('Parsers - comment', () => { + describe.concurrent.each([ + { + title: 'normal', + value: ` + # a comment here + load aragonos as ar + + #another one here + set $var1 1e18 + + #one at the end + `, + }, + { + title: 'inline', + value: ` + load aragonos as ar # this is an inline comment + set $var1 1e18 #another one + `, + }, + ])('', ({ title, value }) => { + it(`should parse a ${title} comment correctly`, () => { + const parsedValue = runParser(scriptParser, value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); +}); diff --git a/core/evmcrispr/test/parsers/helper.test.ts b/core/evmcrispr/test/parsers/helper.test.ts new file mode 100644 index 00000000..61234960 --- /dev/null +++ b/core/evmcrispr/test/parsers/helper.test.ts @@ -0,0 +1,45 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import { runParser, runParserError } from '@1hive/evmcrispr-test-common'; + +import { helperFunctionParser } from '../../src/parsers/helper'; + +describe.concurrent('Parsers - helper functions', () => { + describe.each([ + { + title: '', + value: '@token(WETH)', + }, + { + title: 'with call expression', + value: + '@helperFunction(anotherToken::symbol(), "this is a string param", 10e18)', + }, + { + title: 'with no arguments', + value: '@now', + }, + { + title: 'with nested helpers', + value: `@token('DAI', @calc(34, @innerHelper(true)))`, + }, + ])('', ({ title, value }) => { + it(`should parse helper ${title} correctly`, () => { + const parsedValue = runParser(helperFunctionParser, value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + describe.each([ + { title: 'an invalid name', value: '@asd&$6' }, + { title: 'no closing parenthesis', value: '@helper(asda,1e18' }, + { title: 'no opening parenthesis', value: '@helperarg1, 1e18, ,)' }, + { title: 'empty arguments', value: '@helper(arg1, 1e18, ,)' }, + ])('', ({ title, value }) => { + it(`should fail when parsing a helper with ${title}`, () => { + const error = runParserError(helperFunctionParser, value); + + expect(error).toMatchSnapshot(); + }); + }); +}); diff --git a/core/evmcrispr/test/parsers/primary.test.ts b/core/evmcrispr/test/parsers/primary.test.ts new file mode 100644 index 00000000..6b007421 --- /dev/null +++ b/core/evmcrispr/test/parsers/primary.test.ts @@ -0,0 +1,201 @@ +import type { Case } from '@1hive/evmcrispr-test-common'; +import { runParser, runParserError } from '@1hive/evmcrispr-test-common'; + +import { + addressParser, + booleanParser, + hexadecimalParser, + numberParser, + probableIdentifierParser, + stringParser, + variableIdentifierParser, +} from '../../src/parsers/primaries'; + +describe.concurrent('Parsers - primaries', () => { + describe('when parsing literal values', () => { + describe('when parsing address values', () => { + it('should parse them correctly', () => { + expect( + runParser( + addressParser(), + '0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3', + ), + ).to.toMatchSnapshot(); + }); + + it('should fail when parsing an invalid one', () => { + const error = runParserError( + addressParser(), + '0xasdabmtbrtbrtgsdfsvbrty', + ); + + expect(error).toMatchSnapshot(); + }); + }); + + describe('when parsing hexadecimal values', () => { + describe.each([ + { + title: 'value', + value: '0xa3432da4567be', + }, + { + title: 'long value', + value: + '0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000', + }, + ])('', ({ title, value }) => { + it(`should parse a ${title} correctly`, () => { + const parsedValue = runParser(hexadecimalParser(), value); + expect(parsedValue).to.matchSnapshot(); + }); + }); + + it('should fail when parsing an invalid value', () => { + const error = runParserError( + hexadecimalParser(), + '0xasdadqlkerrtrtnrn', + ); + + expect(error).toMatchSnapshot(); + }); + }); + + describe('when parsing boolean values', () => { + describe.each([ + { title: '"true" value', value: 'true' }, + { title: '"value" value', value: 'false' }, + ])('', ({ title, value }) => { + it(`should parse ${title} correctly`, () => { + const parsedValue = runParser(booleanParser(), value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + it('should fail when parsing an invalid value', () => { + const error = runParserError(booleanParser(), 'fals'); + + expect(error).toMatchSnapshot(); + }); + }); + + describe('when parsing numeric values', () => { + describe.each([ + { title: 'integer value', value: '15' }, + { title: 'exponent value', value: '9200e18' }, + { title: 'value with a decimal', value: '4500.32' }, + { title: 'value with a decimal and exponent', value: '0.5e14' }, + { + title: 'value with a decimal, exponent and temporal unit', + value: '20.3245e18mo', + }, + { title: 'value with a secondly temporal unit', value: '50s' }, + { title: 'value with a minutely temporal unit', value: '5m' }, + { title: 'value with an hourly temporal unit', value: '35h' }, + { title: 'value with an daily temporal unit', value: '365d' }, + { title: 'value with an weekly temporal unit', value: '72w' }, + { title: 'value with an monthly temporal unit', value: '6.5mo' }, + { title: 'value with an yearly temporal unit', value: '2.5y' }, + ])('', ({ title, value }) => { + it(`should parse a ${title} correctly`, () => { + const parsedValue = runParser(numberParser(), value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + describe.each([ + { title: 'incomplete decimal', value: '123.e18' }, + { title: 'incomplete exponent', value: '123.2ew' }, + { title: 'invalid time unit', value: '123.45e13w34' }, + ])('', ({ title, value }) => { + it(`should fail when parsing an ${title}`, () => { + const error = runParserError(numberParser(), value); + + expect(error).toMatchSnapshot(); + }); + }); + }); + + describe('when parsing string values', () => { + describe.each([ + { + title: 'a single quote value', + value: `'a test single quote string'`, + }, + { + title: 'a double quote value', + value: `"a test double quote string"`, + }, + { + title: 'a value with special characters', + value: `'alpha (with beta) ? --'`, + }, + ])('', ({ title, value }) => { + it(`should parse a ${title} correctly`, () => { + const parsedValue = runParser(stringParser(), value); + + expect(parsedValue).toMatchSnapshot; + }); + }); + }); + + it('should fail when parsing an invalid string', () => { + const error = runParserError(stringParser(), '"asdadasdasd'); + + expect(error).toMatchSnapshot(); + }); + }); + + describe('when parsing probable identifiers', () => { + describe.each([ + { title: '', value: 'new' }, + { title: 'camel case', value: 'aNewAgent' }, + { title: 'kebab case ', value: 'create-flow' }, + { title: 'long kebab case', value: 'create-super-flow-xtreme-aa' }, + { title: 'kebab case with dot', value: 'my-ens-name.eth' }, + { title: 'dots and numbers', value: 'agent.open.0' }, + { title: 'kebab case with colon', value: 'superfluid-app.other-open:20' }, + { title: 'date-like', value: '2015-20-09' }, + { title: 'signature-like', value: 'aSIgnature(with,some,params)' }, + { title: 'no-params-signature-like', value: 'noParamSignature()' }, + ])('', ({ title, value }) => { + it(`should parse a ${title} value correctly`, () => { + const parsedValue = runParser(probableIdentifierParser(), value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + it('fail when parsing an invalid identifier', () => { + const error = runParserError(probableIdentifierParser(), 'asd([[))'); + + expect(error).toMatchSnapshot(); + }); + }); + + describe('when parsing variable identifiers', () => { + describe.each([ + { title: '', value: '$variable' }, + { title: 'camel case', value: '$aCamelCaseVariable' }, + { title: 'snake case', value: '$a-snake-case-variable' }, + { + title: 'snake case with colon and number', + value: '$token-manager.open:0', + }, + ])('when parsing variable values', ({ title, value }) => { + it(`should parse a ${title} value correctly`, () => { + const parsedValue = runParser(variableIdentifierParser(), value); + + expect(parsedValue).toMatchSnapshot(); + }); + }); + + it('should fail when parsing invalid variables', () => { + const error = runParserError(variableIdentifierParser(), '$asd/()'); + + expect(error).toMatchSnapshot(); + }); + }); +}); diff --git a/core/evmcrispr/test/parsers/script.test.ts b/core/evmcrispr/test/parsers/script.test.ts new file mode 100644 index 00000000..1ea1bc98 --- /dev/null +++ b/core/evmcrispr/test/parsers/script.test.ts @@ -0,0 +1,60 @@ +import { runParser } from '@1hive/evmcrispr-test-common'; + +import { scriptParser } from '../../src/parsers/script'; + +describe('Parsers - script', () => { + it('should parse an script correctly', () => { + const script = ` + load aragonos as ar + load superfluid as sf\r\n + + ar:connect my-dao-ens ( + forward token-manager voting ( + install wrapper-hooked-token-manager.open 0x83E57888cd55C3ea1cfbf0114C963564d81e318d false 0 + + + ) + + + + + forward token-manager voting agent ( + + set $agent finance::vault() + + forward wrappable-token-manager.open disputable-voting.open agent ( + set $daix @token("fDAIx") + + + + + + + + + sf:token approve @token('DAI') @me 15.45e18 + + + sf:batchcall ( + token upgrade $daix 4500.43e18 + flow create $daix $agent 1e18mo + token downgrade @token('USDCx') + ) + + + ) + + + ) + + + ) + + + + `; + const parsedScript = runParser(scriptParser, script); + + expect(parsedScript).to.matchSnapshot(); + }); +}); diff --git a/packages/evmcrispr/test/modules/std/commands/exec.test.ts b/core/evmcrispr/test/std/commands/exec.test.ts similarity index 92% rename from packages/evmcrispr/test/modules/std/commands/exec.test.ts rename to core/evmcrispr/test/std/commands/exec.test.ts index 4790d2e6..f2318c28 100644 --- a/packages/evmcrispr/test/modules/std/commands/exec.test.ts +++ b/core/evmcrispr/test/std/commands/exec.test.ts @@ -1,27 +1,24 @@ -import { expect } from 'chai'; +import { + createInterpreter, + expectThrowAsync, + itChecksNonDefinedIdentifier, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; import { utils } from 'ethers'; -import { ethers } from 'hardhat'; -import type { Action } from '../../../../src/types'; -import { encodeActCall } from '../../../../src/modules/aragonos/utils'; -import { CommandError } from '../../../../src/errors'; +import { CommandError } from '../../../src/errors'; +import type { Action } from '../../../src/types'; -import { toDecimals } from '../../../../src/utils'; -import { - createInterpreter, - itChecksNonDefinedIdentifier, -} from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; -import { findStdCommandNode } from '../../../test-helpers/std'; +import { toDecimals } from '../../../src/utils'; +import { encodeActCall, findStdCommandNode } from '../utils'; const ETHERSCAN_API = process.env.ETHERSCAN_API; describe('Std > commands > exec [<...params>] [--from ]', () => { let signer: Signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); const target = '0x44fA8E6f47987339850636F88629646662444217'; // DAI @@ -209,13 +206,13 @@ describe('Std > commands > exec [<...params>] [--from interpreter.interpret(), error); }); - it( + it.todo( "should fail when providing a method's name whose contract ABI isn't found", ); - it("should fail when providing an ABI duplicated method's name"); + it.todo("should fail when providing an ABI duplicated method's name"); - it( + it.todo( "should fail when providing a method's name of a contract which isn't verified", ); diff --git a/packages/evmcrispr/test/modules/std/commands/load.test.ts b/core/evmcrispr/test/std/commands/load.test.ts similarity index 79% rename from packages/evmcrispr/test/modules/std/commands/load.test.ts rename to core/evmcrispr/test/std/commands/load.test.ts index 1efa6ea8..2b8bf6c0 100644 --- a/packages/evmcrispr/test/modules/std/commands/load.test.ts +++ b/core/evmcrispr/test/std/commands/load.test.ts @@ -1,21 +1,19 @@ -import { expect } from 'chai'; +import { ModuleConstructor as AragonOS } from '@1hive/evmcrispr-aragonos-module'; +import { + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; -import { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; -import type { CommandExpressionNode } from '../../../../src/types'; - -import { CommandError } from '../../../../src/errors'; - -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; -import { findStdCommandNode } from '../../../test-helpers/std'; +import { CommandError } from '../../../src/errors'; +import type { CommandExpressionNode } from '../../../src/types'; +import { findStdCommandNode } from '../utils'; describe('Std > commands > load [as ]', () => { let signer: Signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should load a module correctly', async () => { diff --git a/packages/evmcrispr/test/modules/std/commands/raw.test.ts b/core/evmcrispr/test/std/commands/raw.test.ts similarity index 91% rename from packages/evmcrispr/test/modules/std/commands/raw.test.ts rename to core/evmcrispr/test/std/commands/raw.test.ts index 3e5a9c6c..4d4556e4 100644 --- a/packages/evmcrispr/test/modules/std/commands/raw.test.ts +++ b/core/evmcrispr/test/std/commands/raw.test.ts @@ -1,13 +1,13 @@ -import { expect } from 'chai'; +import { + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; -import type { Action } from '../../../../src/types'; -import { CommandError } from '../../../../src/errors'; +import { CommandError } from '../../../src/errors'; +import type { Action } from '../../../src/types'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; -import { findStdCommandNode } from '../../../test-helpers/std'; +import { findStdCommandNode } from '../utils'; describe('Std > commands > raw [value] [--from ]', () => { let signer: Signer; @@ -19,8 +19,8 @@ describe('Std > commands > raw [value] [--from ]', () => const parsedValue = '1000000000000000000'; const from = '0x8790B75CF2bd36A2502a3e48A24338D8288f2F15'; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should return a correct raw action', async () => { diff --git a/packages/evmcrispr/test/modules/std/commands/set.test.ts b/core/evmcrispr/test/std/commands/set.test.ts similarity index 69% rename from packages/evmcrispr/test/modules/std/commands/set.test.ts rename to core/evmcrispr/test/std/commands/set.test.ts index 8b78f68c..eea69c4f 100644 --- a/packages/evmcrispr/test/modules/std/commands/set.test.ts +++ b/core/evmcrispr/test/std/commands/set.test.ts @@ -1,19 +1,20 @@ -import { expect } from 'chai'; +import { + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; -import { BindingsSpace } from '../../../../src/types'; -import { CommandError } from '../../../../src/errors'; -import { toDecimals } from '../../../../src/utils'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; -import { findStdCommandNode } from '../../../test-helpers/std'; +import { CommandError } from '../../../src/errors'; +import { BindingsSpace } from '../../../src/types'; +import { toDecimals } from '../../../src/utils'; + +import { findStdCommandNode } from '../utils'; describe('Std > commands > set ', () => { let signer: Signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should set an user variable correctly', async () => { @@ -21,7 +22,7 @@ describe('Std > commands > set ', () => { await interpreter.interpret(); - expect(interpreter.getBinding('$var', BindingsSpace.USER)).to.be.equal( + expect(interpreter.getBinding('$var', BindingsSpace.USER)).to.be.deep.equal( toDecimals(1, 18), ); }); diff --git a/packages/evmcrispr/test/modules/std/helpers/date.test.ts b/core/evmcrispr/test/std/helpers/date.test.ts similarity index 94% rename from packages/evmcrispr/test/modules/std/helpers/date.test.ts rename to core/evmcrispr/test/std/helpers/date.test.ts index ee4d4126..35e7c35d 100644 --- a/packages/evmcrispr/test/modules/std/helpers/date.test.ts +++ b/core/evmcrispr/test/std/helpers/date.test.ts @@ -1,13 +1,11 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; import { itChecksInvalidArgsLength, preparingExpression, -} from '../../../test-helpers/cas11'; +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; + +import { NodeType } from '../../../src/types'; +import { ComparisonType } from '../../../src/utils'; const toTimestamp = (date?: string): number => (date ? new Date(date) : new Date()).valueOf() / 1000; @@ -20,8 +18,8 @@ describe('Std > helpers > @date(date, offset?)', () => { return preparingExpression(helper, signer); }; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should interpret it correctly', async () => { diff --git a/packages/evmcrispr/test/modules/std/helpers/get.test.ts b/core/evmcrispr/test/std/helpers/get.test.ts similarity index 63% rename from packages/evmcrispr/test/modules/std/helpers/get.test.ts rename to core/evmcrispr/test/std/helpers/get.test.ts index 44023291..c5c39828 100644 --- a/packages/evmcrispr/test/modules/std/helpers/get.test.ts +++ b/core/evmcrispr/test/std/helpers/get.test.ts @@ -1,25 +1,22 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; - import { itChecksInvalidArgsLength, preparingExpression, -} from '../../../test-helpers/cas11'; +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; + +import { NodeType } from '../../../src/types'; +import { ComparisonType } from '../../../src/utils'; describe('Std > helpers > @get(contractAddress, method, params?)', () => { let signer: Signer; const lazySigner = () => signer; const targetAddress = '0x44fA8E6f47987339850636F88629646662444217'; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); - it('should interpret it correctly', async () => { + it('should get a single value from a non-param-receiving function correctly', async () => { const [interpret] = await preparingExpression( `@get(${targetAddress}, name():(string))`, signer, @@ -28,23 +25,23 @@ describe('Std > helpers > @get(contractAddress, method, params?)', () => { expect(await interpret()).to.eq('Dai Stablecoin on xDai'); }); - it.skip('should interpret it correctly', async () => { - const sushiFarm = '0x44fA8E6f47987339850636F88629646662444217'; + it('should get a single value from param-receiving function correctly', async () => { const [interpret] = await preparingExpression( - `@get(${sushiFarm},"poolInfo(uint256):(uint128,uint64,uint64):1",1)`, + `@get(${targetAddress}, balanceOf(address):(uint), ${targetAddress})`, signer, ); - expect(await interpret()).to.be.greaterThanOrEqual('1671364630'); + expect(await interpret()).not.to.be.eq('0'); }); - it('should interpret it correctly', async () => { + it('should get a collection of values from a function correctly', async () => { + const sushiFarm = '0xdDCbf776dF3dE60163066A5ddDF2277cB445E0F3'; const [interpret] = await preparingExpression( - `@get(${targetAddress}, balanceOf(address):(uint), ${targetAddress})`, + `@get(${sushiFarm},"poolInfo(uint256):(uint128,uint64,uint64):1",1)`, signer, ); - expect(await interpret()).not.to.be.eq('0'); + expect((await interpret()).toNumber()).to.be.greaterThanOrEqual(1672406185); }); itChecksInvalidArgsLength( diff --git a/packages/evmcrispr/test/modules/std/helpers/id.test.ts b/core/evmcrispr/test/std/helpers/id.test.ts similarity index 70% rename from packages/evmcrispr/test/modules/std/helpers/id.test.ts rename to core/evmcrispr/test/std/helpers/id.test.ts index 8347d743..aa03ece1 100644 --- a/packages/evmcrispr/test/modules/std/helpers/id.test.ts +++ b/core/evmcrispr/test/std/helpers/id.test.ts @@ -1,22 +1,19 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; - import { itChecksInvalidArgsLength, preparingExpression, -} from '../../../test-helpers/cas11'; +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { utils } from 'ethers'; + +import { NodeType } from '../../../src/types'; +import { ComparisonType } from '../../../src/utils'; describe('Std > helpers > @id(value)', () => { let signer: Signer; const lazySigner = () => signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('return the hashed value', async () => { diff --git a/packages/evmcrispr/test/modules/std/helpers/ipfs.test.ts b/core/evmcrispr/test/std/helpers/ipfs.test.ts similarity index 81% rename from packages/evmcrispr/test/modules/std/helpers/ipfs.test.ts rename to core/evmcrispr/test/std/helpers/ipfs.test.ts index 60b9eb6e..b1b817ee 100644 --- a/packages/evmcrispr/test/modules/std/helpers/ipfs.test.ts +++ b/core/evmcrispr/test/std/helpers/ipfs.test.ts @@ -1,22 +1,20 @@ -import { expect } from 'chai'; +import { + createInterpreter, + expectThrowAsync, + itChecksInvalidArgsLength, + preparingExpression, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; +import { HelperFunctionError } from '../../../src/errors'; import type { CommandExpressionNode, HelperFunctionNode, -} from '../../../../src/types'; -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; -import { HelperFunctionError } from '../../../../src/errors'; -import { - createInterpreter, - itChecksInvalidArgsLength, - preparingExpression, -} from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; +} from '../../../src/types'; +import { NodeType } from '../../../src/types'; +import { ComparisonType } from '../../../src/utils'; -const PINATA_JWT = process.env.VITE_PINATA_JWT; +const PINATA_JWT = 'test_pinata_jwt'; const JWT_VAR_NAME = 'ipfs.jwt'; @@ -29,8 +27,8 @@ describe('Std > helpers > @ipfs(text)', () => { const lazySigner = () => signer; const ipfsData = 'This should be pinned in IPFS'; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should upload text to IPFS and return hash', async () => { diff --git a/packages/evmcrispr/test/modules/std/helpers/me.test.ts b/core/evmcrispr/test/std/helpers/me.test.ts similarity index 67% rename from packages/evmcrispr/test/modules/std/helpers/me.test.ts rename to core/evmcrispr/test/std/helpers/me.test.ts index 58c52119..916b91a3 100644 --- a/packages/evmcrispr/test/modules/std/helpers/me.test.ts +++ b/core/evmcrispr/test/std/helpers/me.test.ts @@ -1,20 +1,18 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; import { itChecksInvalidArgsLength, preparingExpression, -} from '../../../test-helpers/cas11'; +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; + +import { NodeType } from '../../../src/types'; +import { ComparisonType } from '../../../src/utils'; describe('Std > helpers > @me', () => { let signer: Signer; const lazySigner = () => signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should return the current connected account', async () => { diff --git a/core/evmcrispr/test/std/helpers/token.test.ts b/core/evmcrispr/test/std/helpers/token.test.ts new file mode 100644 index 00000000..d7fd64b8 --- /dev/null +++ b/core/evmcrispr/test/std/helpers/token.test.ts @@ -0,0 +1,87 @@ +import { + itChecksInvalidArgsLength, + preparingExpression, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; + +import { NodeType } from '../../../src/types'; +import { ComparisonType } from '../../../src/utils'; + +describe.concurrent('@token', () => { + let signer: Signer; + const lazySigner = () => signer; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + }); + + describe.concurrent('Std > helpers > @token(tokenSymbol)', () => { + it('should interpret it correctly', async () => { + const [interpret] = await preparingExpression('@token(DAI)', signer); + + expect(await interpret()).to.equals( + '0x44fA8E6f47987339850636F88629646662444217', + ); + }); + + itChecksInvalidArgsLength( + NodeType.HelperFunctionExpression, + '@token', + ['DAI'], + { + type: ComparisonType.Equal, + minValue: 1, + }, + lazySigner, + ); + }); + + describe.concurrent( + 'Std > helpers > @token.balance(tokenSymbol, account)', + () => { + it('should interpret it correctly', async () => { + const [interpret] = await preparingExpression( + '@token.balance(DAI,@token(DAI))', + signer, + ); + + expect(await interpret()).to.be.eq( + '12100000000000000000', // DAI balance in block 24730000, may change for other blocks + ); + }); + + itChecksInvalidArgsLength( + NodeType.HelperFunctionExpression, + '@token.balance', + ['DAI', '@token(DAI)'], + { + type: ComparisonType.Equal, + minValue: 2, + }, + lazySigner, + ); + }, + ); + + describe('Std > helpers > @token.amount(tokenSymbol, amount)', () => { + it('should interpret it correctly', async () => { + const [interpret] = await preparingExpression( + '@token.amount(DAI, 1)', + signer, + ); + + expect(await interpret()).to.equals(String(1e18)); + }); + + itChecksInvalidArgsLength( + NodeType.HelperFunctionExpression, + '@token.amount', + ['DAI', '1'], + { + type: ComparisonType.Equal, + minValue: 2, + }, + lazySigner, + ); + }); +}); diff --git a/core/evmcrispr/test/std/utils.ts b/core/evmcrispr/test/std/utils.ts new file mode 100644 index 00000000..9a00231f --- /dev/null +++ b/core/evmcrispr/test/std/utils.ts @@ -0,0 +1,33 @@ +import { utils } from 'ethers'; + +import type { AST, CommandExpressionNode } from '../../src/types'; + +export function findStdCommandNode( + ast: AST, + commandName: string, +): CommandExpressionNode | undefined { + const commandNode = ast.body.find( + (n) => (n as CommandExpressionNode).name === commandName, + ) as CommandExpressionNode; + + return commandNode; +} + +/** + * Encode a function call + * @param {string} signature Function signature + * @param {any[]} params + */ +export function encodeActCall(signature: string, params: any[] = []): string { + const sigBytes = utils.hexDataSlice(utils.id(signature), 0, 4); + const types = signature.replace(')', '').split('(')[1]; + + // No params, return signature directly + if (types === '') { + return sigBytes; + } + + const paramBytes = new utils.AbiCoder().encode(types.split(','), params); + + return `${sigBytes}${paramBytes.slice(2)}`; +} diff --git a/core/evmcrispr/tsconfig.json b/core/evmcrispr/tsconfig.json new file mode 100644 index 00000000..9e69f6ee --- /dev/null +++ b/core/evmcrispr/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "tsconfig-evmcrispr/base.json", + "compilerOptions": { + "lib": ["es2019", "es2017", "dom"] + } +} diff --git a/core/evmcrispr/tsup.config.ts b/core/evmcrispr/tsup.config.ts new file mode 100644 index 00000000..9067c354 --- /dev/null +++ b/core/evmcrispr/tsup.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'tsup'; + +import { getConfig } from '../../scripts/tsup'; + +export default defineConfig(getConfig({ entry: ['src/index.ts'] })); diff --git a/packages/evmcrispr/typedoc.json b/core/evmcrispr/typedoc.json similarity index 100% rename from packages/evmcrispr/typedoc.json rename to core/evmcrispr/typedoc.json diff --git a/core/evmcrispr/vite.config.ts b/core/evmcrispr/vite.config.ts new file mode 100644 index 00000000..3cc0987f --- /dev/null +++ b/core/evmcrispr/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vitest/config'; + +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKERS_LENGTH = parseInt(process.env.WORKERS_LENGTH ?? '4'); + +export default defineConfig({ + test: { + coverage: { + reporter: ['lcov'], + }, + globals: true, + environment: 'node', + setupFiles: ['setup.ts'], + globalSetup: ['global-setup.ts'], + maxThreads: WORKERS_LENGTH, + minThreads: WORKERS_LENGTH, + testTimeout: 60000, + hookTimeout: 60000, + }, +}); diff --git a/modules/aragonos/.eslintrc b/modules/aragonos/.eslintrc new file mode 100644 index 00000000..5b77555d --- /dev/null +++ b/modules/aragonos/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["evmcrispr"] +} diff --git a/modules/aragonos/global-setup.ts b/modules/aragonos/global-setup.ts new file mode 100644 index 00000000..7f40fc4c --- /dev/null +++ b/modules/aragonos/global-setup.ts @@ -0,0 +1,12 @@ +import { + setup as _setup, + teardown as _teardown, +} from '@1hive/evmcrispr-test-common/setups/global'; + +export function setup(): Promise { + return _setup(8001); +} + +export function teardown(): void { + _teardown(); +} diff --git a/modules/aragonos/hardhat.config.ts b/modules/aragonos/hardhat.config.ts new file mode 100644 index 00000000..84dcc969 --- /dev/null +++ b/modules/aragonos/hardhat.config.ts @@ -0,0 +1 @@ +export { config as default } from '@1hive/evmcrispr-test-common/hardhat.config'; diff --git a/modules/aragonos/package.json b/modules/aragonos/package.json new file mode 100644 index 00000000..68a59b93 --- /dev/null +++ b/modules/aragonos/package.json @@ -0,0 +1,41 @@ +{ + "name": "@1hive/evmcrispr-aragonos-module", + "version": "0.9.0", + "license": "GPL-3.0", + "description": "An EVMcrispr module to interact with the AragonOS framework", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "devDependencies": { + "@1hive/evmcrispr": "workspace:0.9.0", + "eslint-config-evmcrispr": "workspace:*", + "@1hive/evmcrispr-test-common": "workspace:*", + "tsconfig-evmcrispr": "workspace:*", + "@types/isomorphi8-fetch": "^0.0.36", + "@types/lodash.clonedeep": "^4.5.7" + }, + "peerDependencies": { + "@1hive/evmcrispr": "workspace:^0.9.0", + "ethers": "^5.7.2" + }, + "dependencies": { + "arcsecond": "^4.1.0", + "is-ipfs": "^6.0.2", + "isomorphic-fetch": "^3.0.0", + "lodash.clonedeep": "^4.5.0" + }, + "scripts": { + "dotenv": "dotenv -e ../../.env --", + "preinstall": "npx only-allow pnpm", + "build": "tsup", + "clean": "hardhat clean", + "lint": "tsc --noEmit && eslint", + "test": "pnpm dotenv vitest run", + "test:coverage": "pnpm dotenv vitest run --coverage", + "test:ui": "pnpm dotenv vitest --ui", + "test:watch": "pnpm dotenv vitest" + } +} diff --git a/modules/aragonos/setup.ts b/modules/aragonos/setup.ts new file mode 100644 index 00000000..83508b77 --- /dev/null +++ b/modules/aragonos/setup.ts @@ -0,0 +1,3 @@ +import { runSetup } from '@1hive/evmcrispr-test-common/setups/file'; + +runSetup({ chainManagerPort: 8001 }); diff --git a/packages/evmcrispr/src/modules/aragonos/AddressMap.ts b/modules/aragonos/src/AddressMap.ts similarity index 87% rename from packages/evmcrispr/src/modules/aragonos/AddressMap.ts rename to modules/aragonos/src/AddressMap.ts index a587607a..c013ec13 100644 --- a/packages/evmcrispr/src/modules/aragonos/AddressMap.ts +++ b/modules/aragonos/src/AddressMap.ts @@ -1,4 +1,4 @@ -import type { Address } from '../../types'; +import type { Address } from '@1hive/evmcrispr'; export class AddressMap extends Map { constructor() { diff --git a/packages/evmcrispr/src/modules/aragonos/AddressSet.ts b/modules/aragonos/src/AddressSet.ts similarity index 89% rename from packages/evmcrispr/src/modules/aragonos/AddressSet.ts rename to modules/aragonos/src/AddressSet.ts index 7168c5f0..d44e105c 100644 --- a/packages/evmcrispr/src/modules/aragonos/AddressSet.ts +++ b/modules/aragonos/src/AddressSet.ts @@ -1,4 +1,4 @@ -import type { Address } from '../../types'; +import type { Address } from '@1hive/evmcrispr'; export class AddressSet extends Set
{ constructor(iterable?: Iterable
| null | undefined) { diff --git a/packages/evmcrispr/src/modules/aragonos/AragonDAO.ts b/modules/aragonos/src/AragonDAO.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/AragonDAO.ts rename to modules/aragonos/src/AragonDAO.ts index 5e4582ab..d1d04eda 100644 --- a/packages/evmcrispr/src/modules/aragonos/AragonDAO.ts +++ b/modules/aragonos/src/AragonDAO.ts @@ -1,8 +1,11 @@ +import type { Address, IDataProvider, IPFSResolver } from '@1hive/evmcrispr'; +import { calculateNewProxyAddress } from '@1hive/evmcrispr'; import type { providers } from 'ethers'; import { Contract, utils } from 'ethers'; import cloneDeep from 'lodash.clonedeep'; -import type { Address, IDataProvider } from '../../types'; +import { AddressMap } from './AddressMap'; +import { Connector } from './Connector'; import type { App, AppArtifactCache, @@ -13,8 +16,7 @@ import type { PermissionMap, Role, } from './types'; -import type { IPFSResolver } from '../../IPFSResolver'; -import { calculateNewProxyAddress } from '../../utils'; + import { INITIAL_APP_INDEX, buildApp, @@ -24,8 +26,6 @@ import { normalizeRole, resolveIdentifier, } from './utils'; -import { AddressMap } from './AddressMap'; -import { Connector } from './Connector'; export const DATA_PROVIDER_TYPE = 'ARAGONOS_DAO'; diff --git a/packages/evmcrispr/src/modules/aragonos/AragonOS.ts b/modules/aragonos/src/AragonOS.ts similarity index 83% rename from packages/evmcrispr/src/modules/aragonos/AragonOS.ts rename to modules/aragonos/src/AragonOS.ts index 2a3580a5..ddb000d6 100644 --- a/packages/evmcrispr/src/modules/aragonos/AragonOS.ts +++ b/modules/aragonos/src/AragonOS.ts @@ -1,18 +1,21 @@ -import type { BindingsManager } from '../../BindingsManager'; -import { ErrorNotFound } from '../../errors'; -import type { IPFSResolver } from '../../IPFSResolver'; -import { BindingsSpace } from '../../types'; -import type { Address } from '../../types'; +import type { + Address, + BindingsManager, + EVMcrispr, + IPFSResolver, +} from '@1hive/evmcrispr'; import { + BindingsSpace, + ErrorNotFound, + Module, addressesEqual, buildNonceForAddress, calculateNewProxyAddress, -} from '../../utils'; -import { Module } from '../../Module'; +} from '@1hive/evmcrispr'; + import type { AragonDAO } from './AragonDAO'; import { commands } from './commands'; import { helpers } from './helpers'; -import type { EVMcrispr } from '../../EVMcrispr'; export class AragonOS extends Module { #connectedDAOs: AragonDAO[]; diff --git a/packages/evmcrispr/src/modules/aragonos/Connector.ts b/modules/aragonos/src/Connector.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/Connector.ts rename to modules/aragonos/src/Connector.ts index a7a98770..532c0120 100644 --- a/packages/evmcrispr/src/modules/aragonos/Connector.ts +++ b/modules/aragonos/src/Connector.ts @@ -1,11 +1,11 @@ -import fetch from 'isomorphic-fetch'; +import { ErrorException, ErrorNotFound } from '@1hive/evmcrispr'; +import type { Address } from '@1hive/evmcrispr'; import type { providers } from 'ethers'; +import fetch from 'isomorphic-fetch'; -import { ErrorException, ErrorNotFound } from '../../errors'; +import type { ParsedApp, Repo } from './types'; import type { GraphQLBody, QueryConfig } from './utils'; import { ORGANIZATION_APPS, REPO, parseApp, parseRepo } from './utils'; -import type { ParsedApp, Repo } from './types'; -import type { Address } from '../../types'; export function subgraphUrlFromChainId(chainId: number): string | never { switch (chainId) { diff --git a/packages/evmcrispr/src/modules/aragonos/commands/act.ts b/modules/aragonos/src/commands/act.ts similarity index 95% rename from packages/evmcrispr/src/modules/aragonos/commands/act.ts rename to modules/aragonos/src/commands/act.ts index a9e9ab53..fdcdd5c8 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/act.ts +++ b/modules/aragonos/src/commands/act.ts @@ -1,11 +1,8 @@ -import { utils } from 'ethers'; - -import type { AbiBinding, ICommand } from '../../../types'; -import { BindingsSpace } from '../../../types'; -import { batchForwarderActions } from '../utils/forwarders'; -import { ErrorException } from '../../../errors'; +import type { AbiBinding, ICommand } from '@1hive/evmcrispr'; import { + BindingsSpace, ComparisonType, + ErrorException, SIGNATURE_REGEX, addressesEqual, beforeOrEqualNode, @@ -15,9 +12,12 @@ import { insideNodeLine, interpretNodeSync, tryAndCacheNotFound, -} from '../../../utils'; +} from '@1hive/evmcrispr'; +import { utils } from 'ethers'; + import type { AragonOS } from '../AragonOS'; import { getDAOAppIdentifiers } from '../utils'; +import { batchForwarderActions } from '../utils/forwarders'; const { ABI, ADDR } = BindingsSpace; export const act: ICommand = { diff --git a/packages/evmcrispr/src/modules/aragonos/commands/connect.ts b/modules/aragonos/src/commands/connect.ts similarity index 96% rename from packages/evmcrispr/src/modules/aragonos/commands/connect.ts rename to modules/aragonos/src/commands/connect.ts index 5f6e8d38..6f0528d4 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/connect.ts +++ b/modules/aragonos/src/commands/connect.ts @@ -1,32 +1,22 @@ -import type { providers } from 'ethers'; -import { utils } from 'ethers'; - -import { ErrorException, ErrorNotFound } from '../../../errors'; import type { AbiBinding, Action, Address, AddressBinding, Binding, + BindingsManager, DataProviderBinding, ICommand, + IPFSResolver, Nullable, TransactionAction, -} from '../../../types'; -import { BindingsSpace, NodeType, isSwitchAction } from '../../../types'; -import { AragonDAO, isAragonDAO } from '../AragonDAO'; -import type { AragonOS } from '../AragonOS'; -import { - ANY_ENTITY, - BURN_ENTITY, - INITIAL_APP_INDEX, - NO_ENTITY, - createDaoPrefixedIdentifier, - formatAppIdentifier, - getDAOAppIdentifiers, -} from '../utils'; +} from '@1hive/evmcrispr'; import { + BindingsSpace, ComparisonType, + ErrorException, + ErrorNotFound, + NodeType, addressesEqual, beforeOrEqualNode, checkArgsLength, @@ -34,13 +24,26 @@ import { getOptValue, interpretNodeSync, isAddressNodishType, + isSwitchAction, tryAndCacheNotFound, -} from '../../../utils'; -import { batchForwarderActions } from '../utils/forwarders'; +} from '@1hive/evmcrispr'; +import type { providers } from 'ethers'; +import { utils } from 'ethers'; + +import { AragonDAO, isAragonDAO } from '../AragonDAO'; +import type { AragonOS } from '../AragonOS'; import { _aragonEns } from '../helpers/aragonEns'; import type { App, AppIdentifier } from '../types'; -import type { BindingsManager } from '../../../BindingsManager'; -import type { IPFSResolver } from '../../../IPFSResolver'; +import { + ANY_ENTITY, + BURN_ENTITY, + INITIAL_APP_INDEX, + NO_ENTITY, + batchForwarderActions, + createDaoPrefixedIdentifier, + formatAppIdentifier, + getDAOAppIdentifiers, +} from '../utils'; const { ABI, ADDR, DATA_PROVIDER, USER } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/aragonos/commands/forward.ts b/modules/aragonos/src/commands/forward.ts similarity index 89% rename from packages/evmcrispr/src/modules/aragonos/commands/forward.ts rename to modules/aragonos/src/commands/forward.ts index 7229f219..3c83a95e 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/forward.ts +++ b/modules/aragonos/src/commands/forward.ts @@ -1,19 +1,19 @@ -import { utils } from 'ethers'; - -import { ErrorException } from '../../../errors'; -import type { Action, ICommand, TransactionAction } from '../../../types'; -import { isProviderAction } from '../../../types'; - -import { batchForwarderActions } from '../utils/forwarders'; import { ComparisonType, + ErrorException, checkArgsLength, checkOpts, commaListItems, getOptValue, -} from '../../../utils'; + isProviderAction, +} from '@1hive/evmcrispr'; +import type { Action, ICommand, TransactionAction } from '@1hive/evmcrispr'; + +import { utils } from 'ethers'; + import type { AragonOS } from '../AragonOS'; import { getDAOAppIdentifiers } from '../utils'; +import { batchForwarderActions } from '../utils/forwarders'; export const forward: ICommand = { async run(module, c, { interpretNode, interpretNodes }) { diff --git a/packages/evmcrispr/src/modules/aragonos/commands/grant.ts b/modules/aragonos/src/commands/grant.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/commands/grant.ts rename to modules/aragonos/src/commands/grant.ts index 4a2c16a4..bac3cdef 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/grant.ts +++ b/modules/aragonos/src/commands/grant.ts @@ -1,26 +1,26 @@ -import { constants, utils } from 'ethers'; - -import { ErrorException } from '../../../errors'; -import { BindingsSpace } from '../../../types'; -import type { Action, ICommand, InterpretOptions } from '../../../types'; +import type { Action, ICommand, InterpretOptions } from '@1hive/evmcrispr'; import { + BindingsSpace, ComparisonType, + ErrorException, checkArgsLength, checkOpts, getOptValue, interpretNodeSync, -} from '../../../utils'; +} from '@1hive/evmcrispr'; +import { constants, utils } from 'ethers'; + +import { AddressSet } from '../AddressSet'; +import type { AragonDAO } from '../AragonDAO'; import type { AragonOS } from '../AragonOS'; -import { getDAO, isPermission } from '../utils/commands'; +import type { CompletePermission, Params } from '../types'; import { getAppRoles, getDAOAppIdentifiers, normalizeRole, oracle, } from '../utils'; -import type { CompletePermission, Params } from '../types'; -import type { AragonDAO } from '../AragonDAO'; -import { AddressSet } from '../AddressSet'; +import { getDAO, isPermission } from '../utils/commands'; const _grant = (dao: AragonDAO, permission: CompletePermission): Action[] => { const [granteeAddress, appAddress, role, permissionManager, params = []] = diff --git a/packages/evmcrispr/src/modules/aragonos/commands/index.ts b/modules/aragonos/src/commands/index.ts similarity index 91% rename from packages/evmcrispr/src/modules/aragonos/commands/index.ts rename to modules/aragonos/src/commands/index.ts index a9617cad..66f84cb7 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/index.ts +++ b/modules/aragonos/src/commands/index.ts @@ -1,9 +1,10 @@ -import type { Commands } from '../../../types'; +import type { Commands } from '@1hive/evmcrispr'; + import type { AragonOS } from '../AragonOS'; import { act } from './act'; import { connect } from './connect'; -import { grant } from './grant'; import { forward } from './forward'; +import { grant } from './grant'; import { install } from './install'; import { newDAO } from './new-dao'; import { newToken } from './new-token'; diff --git a/packages/evmcrispr/src/modules/aragonos/commands/install.ts b/modules/aragonos/src/commands/install.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/commands/install.ts rename to modules/aragonos/src/commands/install.ts index a0a03e32..5b7347b6 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/install.ts +++ b/modules/aragonos/src/commands/install.ts @@ -1,9 +1,13 @@ -import type { providers } from 'ethers'; -import { utils } from 'ethers'; - -import { ErrorException } from '../../../errors'; +import type { + Address, + BindingsManager, + ICommand, + Nullable, +} from '@1hive/evmcrispr'; import { + BindingsSpace, ComparisonType, + ErrorException, checkArgsLength, checkOpts, encodeCalldata, @@ -12,11 +16,14 @@ import { inSameLineThanNode, interpretNodeSync, tryAndCacheNotFound, -} from '../../../utils'; -import type { Address, ICommand, Nullable } from '../../../types'; -import { BindingsSpace } from '../../../types'; +} from '@1hive/evmcrispr'; +import type { providers } from 'ethers'; +import { utils } from 'ethers'; + +import type { AragonDAO } from '../AragonDAO'; import type { AragonOS } from '../AragonOS'; import { _aragonEns } from '../helpers/aragonEns'; +import type { App, AppArtifact } from '../types'; import { SEMANTIC_VERSION_REGEX, buildAppArtifact, @@ -29,9 +36,6 @@ import { parseLabeledAppIdentifier, } from '../utils'; import { DAO_OPT_NAME, getDAOByOption } from '../utils/commands'; -import type { App, AppArtifact } from '../types'; -import type { AragonDAO } from '../AragonDAO'; -import type { BindingsManager } from '../../../BindingsManager'; const { ABI, ADDR, OTHER } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/aragonos/commands/new-dao.ts b/modules/aragonos/src/commands/new-dao.ts similarity index 93% rename from packages/evmcrispr/src/modules/aragonos/commands/new-dao.ts rename to modules/aragonos/src/commands/new-dao.ts index 4aae62fa..4a878495 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/new-dao.ts +++ b/modules/aragonos/src/commands/new-dao.ts @@ -1,14 +1,14 @@ -import { Contract, utils } from 'ethers'; - -import { ErrorException } from '../../../errors'; import { + BindingsSpace, ComparisonType, + ErrorException, buildNonceForAddress, calculateNewProxyAddress, checkArgsLength, -} from '../../../utils'; -import type { Action, ICommand } from '../../../types'; -import { BindingsSpace } from '../../../types'; +} from '@1hive/evmcrispr'; +import type { Action, ICommand } from '@1hive/evmcrispr'; +import { Contract, utils } from 'ethers'; + import type { AragonOS } from '../AragonOS'; import { _aragonEns } from '../helpers/aragonEns'; import { diff --git a/packages/evmcrispr/src/modules/aragonos/commands/new-token.ts b/modules/aragonos/src/commands/new-token.ts similarity index 94% rename from packages/evmcrispr/src/modules/aragonos/commands/new-token.ts rename to modules/aragonos/src/commands/new-token.ts index 4b69c05a..9659a0a9 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/new-token.ts +++ b/modules/aragonos/src/commands/new-token.ts @@ -1,15 +1,15 @@ -import { constants, utils } from 'ethers'; - import { + BindingsSpace, ComparisonType, + ErrorException, buildNonceForAddress, calculateNewProxyAddress, checkArgsLength, isNumberish, -} from '../../../utils'; -import { ErrorException } from '../../../errors'; -import type { Address, ICommand } from '../../../types'; -import { BindingsSpace } from '../../../types'; +} from '@1hive/evmcrispr'; +import type { Address, ICommand } from '@1hive/evmcrispr'; +import { constants, utils } from 'ethers'; + import type { AragonOS } from '../AragonOS'; import { CONTROLLED_INTERFACE, diff --git a/packages/evmcrispr/src/modules/aragonos/commands/revoke.ts b/modules/aragonos/src/commands/revoke.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/commands/revoke.ts rename to modules/aragonos/src/commands/revoke.ts index b69c6e40..aa1573ae 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/revoke.ts +++ b/modules/aragonos/src/commands/revoke.ts @@ -1,30 +1,30 @@ -import { utils } from 'ethers'; - -import { ErrorException } from '../../../errors'; +import { + BindingsSpace, + ComparisonType, + ErrorException, + addressesEqual, + checkArgsLength, + interpretNodeSync, +} from '@1hive/evmcrispr'; import type { Action, AddressBinding, ICommand, InterpretOptions, NoNullableBinding, -} from '../../../types'; -import { BindingsSpace } from '../../../types'; -import { - ComparisonType, - addressesEqual, - checkArgsLength, - interpretNodeSync, -} from '../../../utils'; +} from '@1hive/evmcrispr'; +import { utils } from 'ethers'; + +import { AddressSet } from '../AddressSet'; +import type { AragonDAO } from '../AragonDAO'; import type { AragonOS } from '../AragonOS'; -import { getDAO, isPermission } from '../utils/commands'; import { formatAppIdentifier, getAppRoles, getDAOs, normalizeRole, } from '../utils'; -import { AddressSet } from '../AddressSet'; -import type { AragonDAO } from '../AragonDAO'; +import { getDAO, isPermission } from '../utils/commands'; const _revoke = (dao: AragonDAO, resolvedArgs: any[]): Action[] => { const permission = resolvedArgs.slice(0, 3); diff --git a/packages/evmcrispr/src/modules/aragonos/commands/upgrade.ts b/modules/aragonos/src/commands/upgrade.ts similarity index 96% rename from packages/evmcrispr/src/modules/aragonos/commands/upgrade.ts rename to modules/aragonos/src/commands/upgrade.ts index 91daaf2a..f14998de 100644 --- a/packages/evmcrispr/src/modules/aragonos/commands/upgrade.ts +++ b/modules/aragonos/src/commands/upgrade.ts @@ -1,12 +1,13 @@ -import { constants, utils } from 'ethers'; -import { isAddress } from 'ethers/lib/utils'; - +import type { ICommand } from '@1hive/evmcrispr'; import { ComparisonType, + ErrorException, addressesEqual, checkArgsLength, -} from '../../../utils'; -import type { ICommand } from '../../../types'; +} from '@1hive/evmcrispr'; +import { constants, utils } from 'ethers'; +import { isAddress } from 'ethers/lib/utils'; + import type { AragonOS } from '../AragonOS'; import { _aragonEns } from '../helpers/aragonEns'; import { @@ -15,7 +16,6 @@ import { getRepoContract, } from '../utils'; import { daoPrefixedIdentifierParser, getDAO } from '../utils/commands'; -import { ErrorException } from '../../../errors'; export const upgrade: ICommand = { async run(module, c, { interpretNode }) { diff --git a/packages/evmcrispr/src/modules/aragonos/helpers/aragonEns.ts b/modules/aragonos/src/helpers/aragonEns.ts similarity index 85% rename from packages/evmcrispr/src/modules/aragonos/helpers/aragonEns.ts rename to modules/aragonos/src/helpers/aragonEns.ts index 12eddb89..935a9ba0 100644 --- a/packages/evmcrispr/src/modules/aragonos/helpers/aragonEns.ts +++ b/modules/aragonos/src/helpers/aragonEns.ts @@ -1,10 +1,14 @@ +import type { HelperFunction, Nullable } from '@1hive/evmcrispr'; +import { + ComparisonType, + ErrorException, + checkArgsLength, +} from '@1hive/evmcrispr'; import type { ethers } from 'ethers'; -import { ComparisonType, checkArgsLength } from '../../../utils'; import type { AragonOS } from '../AragonOS'; -import type { HelperFunction, Nullable } from '../../../types'; + import { getAragonEnsResolver, resolveName } from '../utils'; -import { ErrorException } from '../../../errors'; export const _aragonEns = async ( ensName: string, diff --git a/packages/evmcrispr/src/modules/aragonos/helpers/index.ts b/modules/aragonos/src/helpers/index.ts similarity index 72% rename from packages/evmcrispr/src/modules/aragonos/helpers/index.ts rename to modules/aragonos/src/helpers/index.ts index 8762553b..3e0f73ac 100644 --- a/packages/evmcrispr/src/modules/aragonos/helpers/index.ts +++ b/modules/aragonos/src/helpers/index.ts @@ -1,4 +1,5 @@ -import type { HelperFunctions } from '../../../types'; +import type { HelperFunctions } from '@1hive/evmcrispr'; + import type { AragonOS } from '../AragonOS'; import { aragonEns } from './aragonEns'; diff --git a/packages/evmcrispr/src/modules/aragonos/index.ts b/modules/aragonos/src/index.ts similarity index 91% rename from packages/evmcrispr/src/modules/aragonos/index.ts rename to modules/aragonos/src/index.ts index 583fde53..deb6cc7d 100644 --- a/packages/evmcrispr/src/modules/aragonos/index.ts +++ b/modules/aragonos/src/index.ts @@ -1,4 +1,5 @@ -import type { IModuleConstructor } from '../../types'; +import type { IModuleConstructor } from '@1hive/evmcrispr'; + import { AragonOS } from './AragonOS'; export { AragonDAO } from './AragonDAO'; export { Connector } from './Connector'; diff --git a/packages/evmcrispr/src/modules/aragonos/system-artifacts/ACL.json b/modules/aragonos/src/system-artifacts/ACL.json similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/system-artifacts/ACL.json rename to modules/aragonos/src/system-artifacts/ACL.json diff --git a/packages/evmcrispr/src/modules/aragonos/system-artifacts/EVMScriptRegistry.json b/modules/aragonos/src/system-artifacts/EVMScriptRegistry.json similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/system-artifacts/EVMScriptRegistry.json rename to modules/aragonos/src/system-artifacts/EVMScriptRegistry.json diff --git a/packages/evmcrispr/src/modules/aragonos/system-artifacts/Kernel.json b/modules/aragonos/src/system-artifacts/Kernel.json similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/system-artifacts/Kernel.json rename to modules/aragonos/src/system-artifacts/Kernel.json diff --git a/packages/evmcrispr/src/modules/aragonos/types/app.ts b/modules/aragonos/src/types/app.ts similarity index 98% rename from packages/evmcrispr/src/modules/aragonos/types/app.ts rename to modules/aragonos/src/types/app.ts index 73180056..2ca1a080 100644 --- a/packages/evmcrispr/src/modules/aragonos/types/app.ts +++ b/modules/aragonos/src/types/app.ts @@ -1,6 +1,6 @@ +import type { Address } from '@1hive/evmcrispr'; import type { utils } from 'ethers'; -import type { Address } from '../../../types'; import type { PermissionMap } from './permission'; /** diff --git a/packages/evmcrispr/src/modules/aragonos/types/connector.ts b/modules/aragonos/src/types/connector.ts similarity index 95% rename from packages/evmcrispr/src/modules/aragonos/types/connector.ts rename to modules/aragonos/src/types/connector.ts index fbfc1638..4da389d0 100644 --- a/packages/evmcrispr/src/modules/aragonos/types/connector.ts +++ b/modules/aragonos/src/types/connector.ts @@ -1,4 +1,5 @@ -import type { Address } from '../../../types'; +import type { Address } from '@1hive/evmcrispr'; + import type { AragonArtifact } from './app'; /** diff --git a/packages/evmcrispr/src/modules/aragonos/types/dao.ts b/modules/aragonos/src/types/dao.ts similarity index 87% rename from packages/evmcrispr/src/modules/aragonos/types/dao.ts rename to modules/aragonos/src/types/dao.ts index f60bfef9..f5e3b5a8 100644 --- a/packages/evmcrispr/src/modules/aragonos/types/dao.ts +++ b/modules/aragonos/src/types/dao.ts @@ -1,4 +1,5 @@ -import type { Address } from '../../../types'; +import type { Address } from '@1hive/evmcrispr'; + import type { App, AppArtifact, diff --git a/packages/evmcrispr/src/modules/aragonos/types/index.ts b/modules/aragonos/src/types/index.ts similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/types/index.ts rename to modules/aragonos/src/types/index.ts diff --git a/packages/evmcrispr/src/modules/aragonos/types/permission.ts b/modules/aragonos/src/types/permission.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/types/permission.ts rename to modules/aragonos/src/types/permission.ts index 485ba336..2826368c 100644 --- a/packages/evmcrispr/src/modules/aragonos/types/permission.ts +++ b/modules/aragonos/src/types/permission.ts @@ -1,4 +1,5 @@ -import type { Address } from '../../../types'; +import type { Address } from '@1hive/evmcrispr'; + import type { AddressSet } from '../AddressSet'; import type { AppIdentifier, LabeledAppIdentifier } from './app'; diff --git a/packages/evmcrispr/src/modules/aragonos/types/script.ts b/modules/aragonos/src/types/script.ts similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/types/script.ts rename to modules/aragonos/src/types/script.ts diff --git a/packages/evmcrispr/src/modules/aragonos/utils/acl.ts b/modules/aragonos/src/utils/acl.ts similarity index 98% rename from packages/evmcrispr/src/modules/aragonos/utils/acl.ts rename to modules/aragonos/src/utils/acl.ts index 5583da06..b9f04719 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/acl.ts +++ b/modules/aragonos/src/utils/acl.ts @@ -1,8 +1,7 @@ +import { ErrorException } from '@1hive/evmcrispr'; +import type { Address } from '@1hive/evmcrispr'; import { BigNumber, utils } from 'ethers'; -import { ErrorException } from '../../../errors'; - -import type { Address } from '../../../types'; import type { Params } from '../types/permission'; /** diff --git a/packages/evmcrispr/src/modules/aragonos/utils/apps.ts b/modules/aragonos/src/utils/apps.ts similarity index 98% rename from packages/evmcrispr/src/modules/aragonos/utils/apps.ts rename to modules/aragonos/src/utils/apps.ts index 313c579a..65e3544d 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/apps.ts +++ b/modules/aragonos/src/utils/apps.ts @@ -1,6 +1,6 @@ +import type { Address } from '@1hive/evmcrispr'; import { utils } from 'ethers'; -import type { Address } from '../../../types'; import { AddressSet } from '../AddressSet'; import type { App, diff --git a/packages/evmcrispr/src/modules/aragonos/utils/commands.ts b/modules/aragonos/src/utils/commands.ts similarity index 92% rename from packages/evmcrispr/src/modules/aragonos/utils/commands.ts rename to modules/aragonos/src/utils/commands.ts index 2b506f7f..617c1388 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/commands.ts +++ b/modules/aragonos/src/utils/commands.ts @@ -1,19 +1,23 @@ -import type { Parser } from 'arcsecond'; -import { char, possibly, regex, sequenceOf } from 'arcsecond'; -import { utils } from 'ethers'; - -import { BindingsSpace, NodeType } from '../../../types'; import type { + BindingsManager, CommandExpressionNode, Node, NodeInterpreter, -} from '../../../types'; +} from '@1hive/evmcrispr'; +import { + BindingsSpace, + ErrorException, + NodeType, + getOptValue, + listItems, +} from '@1hive/evmcrispr'; +import type { Parser } from 'arcsecond'; +import { char, possibly, regex, sequenceOf } from 'arcsecond'; +import { utils } from 'ethers'; + import type { AragonDAO } from '../AragonDAO'; import type { CompletePermission } from '../types'; import { optionalLabeledAppIdentifierRegex } from './identifiers'; -import { getOptValue, listItems } from '../../../utils'; -import { ErrorException } from '../../../errors'; -import type { BindingsManager } from '../../../BindingsManager'; const { DATA_PROVIDER } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/aragonos/utils/completion.ts b/modules/aragonos/src/utils/completion.ts similarity index 91% rename from packages/evmcrispr/src/modules/aragonos/utils/completion.ts rename to modules/aragonos/src/utils/completion.ts index 94dcf77a..bbffdb58 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/completion.ts +++ b/modules/aragonos/src/utils/completion.ts @@ -1,6 +1,6 @@ -import type { BindingsManager } from '../../../BindingsManager'; -import type { DataProviderBinding } from '../../../types'; -import { BindingsSpace } from '../../../types'; +import { BindingsSpace } from '@1hive/evmcrispr'; +import type { BindingsManager, DataProviderBinding } from '@1hive/evmcrispr'; + import type { AragonDAO } from '../AragonDAO'; import type { AppIdentifier } from '../types'; import { diff --git a/packages/evmcrispr/src/modules/aragonos/utils/evmscripts.ts b/modules/aragonos/src/utils/evmscripts.ts similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/utils/evmscripts.ts rename to modules/aragonos/src/utils/evmscripts.ts diff --git a/packages/evmcrispr/src/modules/aragonos/utils/factories.ts b/modules/aragonos/src/utils/factories.ts similarity index 96% rename from packages/evmcrispr/src/modules/aragonos/utils/factories.ts rename to modules/aragonos/src/utils/factories.ts index 617fc7e8..9e183f25 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/factories.ts +++ b/modules/aragonos/src/utils/factories.ts @@ -1,8 +1,7 @@ +import { ErrorException } from '@1hive/evmcrispr'; import type { providers } from 'ethers'; import { Contract, utils } from 'ethers'; -import { ErrorException } from '../../../errors'; - export const MINIME_TOKEN_FACTORIES = new Map([ [1, '0xA29EF584c389c67178aE9152aC9C543f9156E2B3'], [4, '0xad991658443c56b3dE2D7d7f5d8C68F339aEef29'], diff --git a/packages/evmcrispr/src/modules/aragonos/utils/forwarders.ts b/modules/aragonos/src/utils/forwarders.ts similarity index 94% rename from packages/evmcrispr/src/modules/aragonos/utils/forwarders.ts rename to modules/aragonos/src/utils/forwarders.ts index 32aaea98..cbc1918c 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/forwarders.ts +++ b/modules/aragonos/src/utils/forwarders.ts @@ -1,11 +1,10 @@ -import type { BigNumber } from 'ethers'; +import { ErrorInvalid, erc20ABI } from '@1hive/evmcrispr'; +import type { Action, Module, TransactionAction } from '@1hive/evmcrispr'; + import { Contract, constants, utils } from 'ethers'; +import type { BigNumber } from 'ethers'; -import { erc20ABI } from '../../../../abis'; -import { ErrorInvalid } from '../../../errors'; -import type { Action, TransactionAction } from '../../../types'; import { encodeActCall, encodeCallScript } from './evmscripts'; -import type { Module } from '../../..'; export const FORWARDER_TYPES = { NOT_IMPLEMENTED: 0, diff --git a/packages/evmcrispr/src/modules/aragonos/utils/identifiers.ts b/modules/aragonos/src/utils/identifiers.ts similarity index 96% rename from packages/evmcrispr/src/modules/aragonos/utils/identifiers.ts rename to modules/aragonos/src/utils/identifiers.ts index 34b87777..1b223f48 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/identifiers.ts +++ b/modules/aragonos/src/utils/identifiers.ts @@ -1,9 +1,8 @@ +import { BindingsSpace, ErrorInvalid } from '@1hive/evmcrispr'; +import type { BindingsManager } from '@1hive/evmcrispr'; import { isAddress } from 'ethers/lib/utils'; -import { ErrorInvalid } from '../../../errors'; import type { App, AppIdentifier, LabeledAppIdentifier } from '../types'; -import { BindingsSpace } from '../../../types'; -import type { BindingsManager } from '../../../BindingsManager'; const DEFAULT_REGISTRY = 'aragonpm.eth'; diff --git a/packages/evmcrispr/src/modules/aragonos/utils/index.ts b/modules/aragonos/src/utils/index.ts similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/utils/index.ts rename to modules/aragonos/src/utils/index.ts diff --git a/packages/evmcrispr/src/modules/aragonos/utils/interfaces.ts b/modules/aragonos/src/utils/interfaces.ts similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/utils/interfaces.ts rename to modules/aragonos/src/utils/interfaces.ts index b64178ba..8313bac7 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/interfaces.ts +++ b/modules/aragonos/src/utils/interfaces.ts @@ -1,6 +1,6 @@ -import artifactKernel from '../system-artifacts/Kernel.json'; import artifactACL from '../system-artifacts/ACL.json'; import artifactEVMScriptRegistry from '../system-artifacts/EVMScriptRegistry.json'; +import artifactKernel from '../system-artifacts/Kernel.json'; // acl.aragonpm.eth const ACL_APP_ID = diff --git a/packages/evmcrispr/src/modules/aragonos/utils/ipfs.ts b/modules/aragonos/src/utils/ipfs.ts similarity index 83% rename from packages/evmcrispr/src/modules/aragonos/utils/ipfs.ts rename to modules/aragonos/src/utils/ipfs.ts index 2a8fecc1..b332fb08 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/ipfs.ts +++ b/modules/aragonos/src/utils/ipfs.ts @@ -1,4 +1,4 @@ -import type { IPFSResolver } from '../../../IPFSResolver'; +import type { IPFSResolver } from '@1hive/evmcrispr'; export const parseContentUri = (contentUri: string): string => { return contentUri.split(':').pop()!; diff --git a/packages/evmcrispr/src/modules/aragonos/utils/normalizers.ts b/modules/aragonos/src/utils/normalizers.ts similarity index 86% rename from packages/evmcrispr/src/modules/aragonos/utils/normalizers.ts rename to modules/aragonos/src/utils/normalizers.ts index 453de6ec..1448612d 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/normalizers.ts +++ b/modules/aragonos/src/utils/normalizers.ts @@ -1,7 +1,6 @@ +import { ErrorInvalid } from '@1hive/evmcrispr'; import { utils } from 'ethers'; -import { ErrorInvalid } from '../../../errors'; - export const normalizeRole = (role: string): string => { if (role.startsWith('0x')) { if (role.length !== 66) { diff --git a/packages/evmcrispr/src/modules/aragonos/utils/parsers.ts b/modules/aragonos/src/utils/parsers.ts similarity index 97% rename from packages/evmcrispr/src/modules/aragonos/utils/parsers.ts rename to modules/aragonos/src/utils/parsers.ts index 14d035ca..455b0e2b 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/parsers.ts +++ b/modules/aragonos/src/utils/parsers.ts @@ -1,7 +1,7 @@ +import type { Address } from '@1hive/evmcrispr'; import type { providers } from 'ethers'; import { Contract } from 'ethers'; -import type { Address } from '../../../types'; import type { ParsedApp, Repo } from '../types'; import { getSystemApp, isSystemApp } from './interfaces'; diff --git a/packages/evmcrispr/src/modules/aragonos/utils/queries.ts b/modules/aragonos/src/utils/queries.ts similarity index 100% rename from packages/evmcrispr/src/modules/aragonos/utils/queries.ts rename to modules/aragonos/src/utils/queries.ts diff --git a/packages/evmcrispr/src/modules/aragonos/utils/registrars.ts b/modules/aragonos/src/utils/registrars.ts similarity index 94% rename from packages/evmcrispr/src/modules/aragonos/utils/registrars.ts rename to modules/aragonos/src/utils/registrars.ts index 3a08d4d7..66d2096c 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/registrars.ts +++ b/modules/aragonos/src/utils/registrars.ts @@ -1,8 +1,7 @@ +import { ErrorException } from '@1hive/evmcrispr'; import type { providers } from 'ethers'; import { Contract } from 'ethers'; -import { ErrorException } from '../../../errors'; - export const ARAGON_REGISTRARS = new Map([ [1, '0x546aa2eae2514494eeadb7bbb35243348983c59d'], [4, '0x3665e7bfd4d3254ae7796779800f5b603c43c60d'], diff --git a/packages/evmcrispr/src/modules/aragonos/utils/repos.ts b/modules/aragonos/src/utils/repos.ts similarity index 94% rename from packages/evmcrispr/src/modules/aragonos/utils/repos.ts rename to modules/aragonos/src/utils/repos.ts index ec696857..1b7d1958 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/repos.ts +++ b/modules/aragonos/src/utils/repos.ts @@ -1,8 +1,7 @@ +import type { Address } from '@1hive/evmcrispr'; import { Contract } from 'ethers'; import type { Signer, providers } from 'ethers'; -import type { Address } from '../../../types'; - export const SEMANTIC_VERSION_REGEX = /^([0-9]+)\.([0-9]+)\.([0-9]+)$/; export const getRepoContract = ( diff --git a/packages/evmcrispr/src/modules/aragonos/utils/resolvers.ts b/modules/aragonos/src/utils/resolvers.ts similarity index 93% rename from packages/evmcrispr/src/modules/aragonos/utils/resolvers.ts rename to modules/aragonos/src/utils/resolvers.ts index 3edb7960..87b82577 100644 --- a/packages/evmcrispr/src/modules/aragonos/utils/resolvers.ts +++ b/modules/aragonos/src/utils/resolvers.ts @@ -1,10 +1,8 @@ +import { ErrorException } from '@1hive/evmcrispr'; +import type { Address } from '@1hive/evmcrispr'; import type { providers } from 'ethers'; import { Contract, ethers, utils } from 'ethers'; -import { ErrorException } from '../../../errors'; - -import type { Address } from '../../../types'; - export function getAragonEnsResolver(chainId: number): string | never { switch (chainId) { case 1: diff --git a/packages/evmcrispr/test/modules/aragonos/acl-utils.test.ts b/modules/aragonos/test/acl-utils.test.ts similarity index 95% rename from packages/evmcrispr/test/modules/aragonos/acl-utils.test.ts rename to modules/aragonos/test/acl-utils.test.ts index a7837bf4..bcde3db0 100644 --- a/packages/evmcrispr/test/modules/aragonos/acl-utils.test.ts +++ b/modules/aragonos/test/acl-utils.test.ts @@ -1,7 +1,4 @@ -import { expect } from 'chai'; - -import type { Params } from '../../../src/modules/aragonos/types'; - +import type { Params } from '../src/types'; import { and, arg, @@ -15,7 +12,7 @@ import { paramValue, timestamp, xor, -} from '../../../src/modules/aragonos/utils/acl'; +} from '../src/utils/acl'; function onlyParam(param: Params): string { const _param = param(0); @@ -36,7 +33,7 @@ function checkArg(arg: any, argId: string) { expect(onlyParam(arg.ret(0)).slice(0, 6)).eql(`0x${argId}07`); } -describe('AragonOS > ACL utils', () => { +describe.concurrent('AragonOS > ACL utils', () => { it('encodes arguments properly', () => { expect(onlyParam(arg(0).eq(6)).startsWith('0x00')).to.be.true; expect(onlyParam(arg(88).eq(6)).startsWith('0x58')).to.be.true; diff --git a/modules/aragonos/test/commands/act.test.ts b/modules/aragonos/test/commands/act.test.ts new file mode 100644 index 00000000..2dc1eb48 --- /dev/null +++ b/modules/aragonos/test/commands/act.test.ts @@ -0,0 +1,202 @@ +import { CommandError } from '@1hive/evmcrispr'; +import { + DAO, + expectThrowAsync, + itChecksNonDefinedIdentifier, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { utils } from 'ethers'; + +import { + createAragonScriptInterpreter as _createAragonScriptInterpreter, + createTestScriptEncodedAction, + findAragonOSCommandNode, +} from '../utils'; + +describe.concurrent( + 'AragonOS > commands > act [...params]', + () => { + let signer: Signer; + + let createAragonScriptInterpreter: ReturnType< + typeof _createAragonScriptInterpreter + >; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + + createAragonScriptInterpreter = _createAragonScriptInterpreter( + signer, + DAO.kernel, + ); + }); + + it('should return a correct act action', async () => { + const interpreter = createAragonScriptInterpreter([ + `act agent:1 agent:2 "deposit(uint256,uint256[][])" 1 [[2,3],[4,5]]`, + ]); + + const actActions = await interpreter.interpret(); + + const fnABI = new utils.Interface([ + 'function deposit(uint256,uint256[][])', + ]); + + const expectedActActions = [ + createTestScriptEncodedAction( + [ + { + to: DAO['agent:2'], + data: fnABI.encodeFunctionData('deposit', [ + 1, + [ + [2, 3], + [4, 5], + ], + ]), + }, + ], + ['agent:1'], + DAO, + ), + ]; + + expect(actActions).to.be.eql(expectedActActions); + }); + + it('should return a correct act action when having to implicitly convert any string parameter to bytes when expecting one', async () => { + const targetAddress = '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; + const params = [ + ['0x02732126661d25c59fd1cc2308ac883b422597fc3103f285f382c95d51cbe667'], + 'QmTik4Zd7T5ALWv5tdMG8m2cLiHmqtTor5QmnCSGLUjLU2', + ]; + const interpreter = createAragonScriptInterpreter([ + `act agent ${targetAddress} addBatches(bytes32[],bytes) [${params[0].toString()}] ${ + params[1] + }`, + ]); + const fnABI = new utils.Interface([ + 'function addBatches(bytes32[],bytes)', + ]); + + const actActions = await interpreter.interpret(); + + const expectedActActions = [ + createTestScriptEncodedAction( + [ + { + to: targetAddress, + data: fnABI.encodeFunctionData('addBatches', [ + params[0], + utils.hexlify( + utils.toUtf8Bytes( + 'QmTik4Zd7T5ALWv5tdMG8m2cLiHmqtTor5QmnCSGLUjLU2', + ), + ), + ]), + }, + ], + ['agent'], + DAO, + ), + ]; + expect(actActions).to.be.eql(expectedActActions); + }); + + itChecksNonDefinedIdentifier( + 'should fail when receiving a non-defined agent identifier', + (nonDefinedIdentifier) => + createAragonScriptInterpreter([ + `act ${nonDefinedIdentifier} vault "deposit()"`, + ]), + 'act', + 0, + true, + ); + + itChecksNonDefinedIdentifier( + 'should fail when receiving a non-defined target identifier', + (nonDefinedIdentifier) => + createAragonScriptInterpreter([ + `act agent ${nonDefinedIdentifier} "deposit()"`, + ]), + 'act', + 1, + true, + ); + + it('should fail when receiving an invalid agent address', async () => { + const invalidAgentAddress = 'false'; + const interpreter = createAragonScriptInterpreter([ + `act ${invalidAgentAddress} agent "deposit()"`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'act')!; + const error = new CommandError( + c, + `expected a valid agent address, but got ${invalidAgentAddress}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when receiving an invalid target address', async () => { + const invalidTargetAddress = '2.22e18'; + const interpreter = createAragonScriptInterpreter([ + `act agent ${invalidTargetAddress} "deposit()"`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'act')!; + const error = new CommandError( + c, + `expected a valid target address, but got 2220000000000000000`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when receiving an invalid signature', async () => { + const cases = [ + ['mint', 'no parenthesis'], + ['mint(', 'left parenthesis'], + ['mint)', 'right parenthesis'], + ['mint(uint,)', 'right comma'], + ['mint(,uint)', 'left comma'], + ]; + + await Promise.all( + cases.map(([invalidSignature, msg]) => { + const interpreter = createAragonScriptInterpreter([ + `act agent agent:2 "${invalidSignature}"`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'act')!; + const error = new CommandError( + c, + `expected a valid signature, but got ${invalidSignature}`, + ); + + return expectThrowAsync( + () => interpreter.interpret(), + error, + `${msg} signature error mismatch`, + ); + }), + ); + }); + + it('should fail when receiving invalid function params', async () => { + const paramsErrors = [ + '-param 0 of type address: invalid address. Got 1000000000000000000', + '-param 1 of type uint256: invalid BigNumber value. Got none', + ]; + const interpreter = createAragonScriptInterpreter([ + `act agent agent:2 "deposit(address,uint256)" 1e18`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'act')!; + const error = new CommandError( + c, + `error when encoding deposit call:\n${paramsErrors.join('\n')}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }, +); diff --git a/modules/aragonos/test/commands/connect.test.ts b/modules/aragonos/test/commands/connect.test.ts new file mode 100644 index 00000000..8fbc7d9c --- /dev/null +++ b/modules/aragonos/test/commands/connect.test.ts @@ -0,0 +1,311 @@ +import { + CommandError, + ComparisonType, + buildArgsLengthErrorMsg, + buildNonceForAddress, + calculateNewProxyAddress, + encodeCalldata, + toDecimals, +} from '@1hive/evmcrispr'; +import { + APP, + COMPLETE_FORWARDER_PATH, + DAO, + DAO2, + DAO3, + FEE_AMOUNT, + FEE_FORWARDER, + FEE_TOKEN_ADDRESS, + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { constants, utils } from 'ethers'; + +import type { AragonOS } from '../../src/AragonOS'; +import { MINIME_TOKEN_FACTORIES } from '../../src/utils'; + +import { + createAragonScriptInterpreter as createAragonScriptInterpreter_, + createTestAction, + createTestPreTxAction, + createTestScriptEncodedAction, + findAragonOSCommandNode, +} from '../utils'; + +const DAOs = [DAO, DAO2, DAO3]; + +describe.concurrent( + 'AragonOS > commands > connect [...appsPath] [--context ]', + () => { + let signer: Signer; + + let createAragonScriptInterpreter: ReturnType< + typeof createAragonScriptInterpreter_ + >; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + + createAragonScriptInterpreter = createAragonScriptInterpreter_( + signer, + DAO.kernel, + ); + }); + + it('should return the correct actions when defining a complete forwarding path compose of a fee, normal and context forwarder', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO3.kernel} ${COMPLETE_FORWARDER_PATH.join(' ')} ( + grant @me agent TRANSFER_ROLE + grant dandelion-voting.1hive token-manager ISSUE_ROLE dandelion-voting.1hive + revoke dandelion-voting.1hive tollgate.1hive CHANGE_AMOUNT_ROLE true + new-token "Other Token" OT token-manager:new + install token-manager:new token:OT true 0 + act agent agent:1 "transfer(address,address,uint256)" @token(DAI) @me 10.50e18 + ) + `, + signer, + ); + + const forwardingAction = await interpreter.interpret(); + + const me = await signer.getAddress(); + const chainId = await signer.getChainId(); + const { appId, codeAddress, initializeSignature } = APP; + const tokenFactoryAddress = MINIME_TOKEN_FACTORIES.get(chainId)!; + const newTokenAddress = calculateNewProxyAddress( + tokenFactoryAddress, + await buildNonceForAddress(tokenFactoryAddress, 0, signer.provider!), + ); + + const expectedForwardingActions = [ + createTestPreTxAction('approve', FEE_TOKEN_ADDRESS, [ + DAO3[FEE_FORWARDER], + FEE_AMOUNT, + ]), + createTestScriptEncodedAction( + [ + createTestAction('grantPermission', DAO3.acl, [ + me, + DAO3.agent, + utils.id('TRANSFER_ROLE'), + ]), + createTestAction('grantPermission', DAO3.acl, [ + DAO3['dandelion-voting.1hive'], + DAO3['token-manager'], + utils.id('ISSUE_ROLE'), + ]), + createTestAction('revokePermission', DAO3.acl, [ + DAO3['dandelion-voting.1hive'], + DAO3['tollgate.1hive'], + utils.id('CHANGE_AMOUNT_ROLE'), + ]), + createTestAction('removePermissionManager', DAO3.acl, [ + DAO3['tollgate.1hive'], + utils.id('CHANGE_AMOUNT_ROLE'), + ]), + createTestAction( + 'createCloneToken', + MINIME_TOKEN_FACTORIES.get(chainId)!, + [constants.AddressZero, 0, 'Other Token', 18, 'OT', true], + ), + createTestAction('changeController', newTokenAddress, [ + calculateNewProxyAddress( + DAO3.kernel, + await buildNonceForAddress(DAO3.kernel, 0, signer.provider!), + ), + ]), + createTestAction('newAppInstance', DAO3.kernel, [ + appId, + codeAddress, + encodeCalldata( + new utils.Interface([`function ${initializeSignature}`]), + [newTokenAddress, true, 0], + ), + false, + ]), + createTestScriptEncodedAction( + [ + { + to: DAO3['agent:1'], + data: new utils.Interface([ + 'function transfer(address,address,uint256)', + ]).encodeFunctionData('transfer', [ + '0x44fA8E6f47987339850636F88629646662444217', + me, + toDecimals('10.50'), + ]), + }, + ], + ['agent'], + DAO3, + ), + ], + COMPLETE_FORWARDER_PATH, + DAO3, + ), + ]; + + expect(forwardingAction).to.deep.equal(expectedForwardingActions); + }); + + it('should set connected DAO variable', async () => { + const interpreter = createAragonScriptInterpreter(); + await interpreter.interpret(); + const aragonos = interpreter.getModule('aragonos') as AragonOS; + const dao = aragonos.getConnectedDAO(DAO.kernel); + + expect(dao).to.not.be.null; + expect(dao!.nestingIndex, 'DAO nested index mismatch').to.equals(1); + Object.entries(DAO).forEach(([appIdentifier, appAddress]) => { + expect( + dao!.resolveApp(appIdentifier)!.address, + `${appIdentifier} binding mismatch`, + ).equals(appAddress); + }); + }); + + describe.concurrent('when having nested connect commands', () => { + it('should set all the connected DAOs properly', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + std:set $var1 1 + connect ${DAO3.kernel} ( + std:set $var2 token-manager + ) + ) + ) + `, + signer, + ); + + await interpreter.interpret(); + + const aragonos = interpreter.getModule('aragonos') as AragonOS; + const daos = aragonos.connectedDAOs; + + expect(daos, 'connected DAOs length mismatch').to.be.lengthOf(3); + + let i = 0; + for (const dao of daos) { + expect(dao.nestingIndex, `DAO ${i} nesting index mismatch`).to.equals( + i + 1, + ); + Object.entries(DAOs[i]).forEach(([appIdentifier, appAddress]) => { + expect( + dao!.resolveApp(appIdentifier)!.address, + `DAO ${i} ${appIdentifier} binding mismatch`, + ).equals(appAddress); + }); + i++; + } + }); + + it('should return the correct actions when using app identifiers from different DAOs', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + grant disputable-voting.open _${DAO.kernel}:agent TRANSFER_ROLE + connect ${DAO3.kernel} ( + grant _${DAO.kernel}:disputable-voting.open _${DAO2.kernel}:acl CREATE_PERMISSIONS_ROLE + ) + ) + + ) + `, + signer, + ); + + const nestedActions = await interpreter.interpret(); + + const expectedNestedActions = [ + createTestAction('grantPermission', DAO.acl, [ + DAO2['disputable-voting.open'], + DAO.agent, + utils.id('TRANSFER_ROLE'), + ]), + createTestAction('grantPermission', DAO2.acl, [ + DAO['disputable-voting.open'], + DAO2['acl'], + utils.id('CREATE_PERMISSIONS_ROLE'), + ]), + ]; + + expect(nestedActions).to.eql(expectedNestedActions); + }); + + it('should fail when trying to connect to an already connected DAO', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO.kernel} ( + connect ${DAO.kernel} ( + + ) + ) + `, + signer, + ); + + const connectNode = findAragonOSCommandNode( + interpreter.ast, + 'connect', + 1, + )!; + const error = new CommandError( + connectNode, + `trying to connect to an already connected DAO (${DAO.kernel})`, + ); + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }); + + it('should fail when forwarding a set of actions through a context forwarder without defining a context', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO2.kernel} disputable-voting.open ( + grant kernel acl CREATE_PERMISSIONS_ROLE + ) + `, + signer, + ); + const c = findAragonOSCommandNode(interpreter.ast, 'connect')!; + const error = new CommandError(c, `context option missing`); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when not passing a commands block', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + ar:connect ${DAO.kernel} + `, + signer, + ); + const c = findAragonOSCommandNode(interpreter.ast, 'connect')!; + const error = new CommandError( + c, + buildArgsLengthErrorMsg(1, { + type: ComparisonType.Greater, + minValue: 2, + }), + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }, +); diff --git a/modules/aragonos/test/commands/forward.test.ts b/modules/aragonos/test/commands/forward.test.ts new file mode 100644 index 00000000..bf452c7d --- /dev/null +++ b/modules/aragonos/test/commands/forward.test.ts @@ -0,0 +1,127 @@ +import { CommandError, commaListItems } from '@1hive/evmcrispr'; +import { + DAO, + createInterpreter, + expectThrowAsync, + itChecksNonDefinedIdentifier, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { utils } from 'ethers'; + +import { ANY_ENTITY } from '../../src/utils'; +import { + createAragonScriptInterpreter as createAragonScriptInterpreter_, + createTestAction, + createTestScriptEncodedAction, + findAragonOSCommandNode, +} from '../utils'; + +describe.concurrent( + 'AragonOS > commands > forward <...path> ', + () => { + let signer: Signer; + + let createAragonScriptInterpreter: ReturnType< + typeof createAragonScriptInterpreter_ + >; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + + createAragonScriptInterpreter = createAragonScriptInterpreter_( + signer, + DAO.kernel, + ); + }); + + it('should return a correct forward action', async () => { + const interpreter = createAragonScriptInterpreter([ + ` + forward disputable-voting.open ( + grant disputable-voting.open disputable-conviction-voting.open PAUSE_CONTRACT_ROLE disputable-voting.open + revoke ANY_ENTITY disputable-conviction-voting.open CREATE_PROPOSALS_ROLE true + ) --context "test" + `, + ]); + + const forwardActions = await interpreter.interpret(); + + const expectedActions = [ + createTestScriptEncodedAction( + [ + createTestAction('createPermission', DAO.acl, [ + DAO['disputable-voting.open'], + DAO['disputable-conviction-voting.open'], + utils.id('PAUSE_CONTRACT_ROLE'), + DAO['disputable-voting.open'], + ]), + createTestAction('revokePermission', DAO.acl, [ + ANY_ENTITY, + DAO['disputable-conviction-voting.open'], + utils.id('CREATE_PROPOSALS_ROLE'), + ]), + createTestAction('removePermissionManager', DAO.acl, [ + DAO['disputable-conviction-voting.open'], + utils.id('CREATE_PROPOSALS_ROLE'), + ]), + ], + ['disputable-voting.open'], + DAO, + 'test', + ), + ]; + + expect(forwardActions).to.eql(expectedActions); + }); + + itChecksNonDefinedIdentifier( + 'should fail when receiving non-defined forwarder identifiers', + (nonDefinedIdentifier) => + createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO.kernel} ( + forward ${nonDefinedIdentifier} ( + grant tollgate.open finance CREATE_PAYMENTS_ROLE + ) + ) + `, + signer, + ), + 'forward', + 0, + true, + ); + + it('should fail when forwarding actions through invalid forwarder addresses', async () => { + const invalidAddresses = [ + 'false', + '0xab123cd1231255ab45323de234223422a12312321abaceff', + ]; + const interpreter = createAragonScriptInterpreter([ + `forward ${invalidAddresses.join(' ')} ( + grant tollgate.open finance CREATE_PAYMENTS_ROLE + )`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'forward')!; + const error = new CommandError( + c, + `${commaListItems(invalidAddresses)} are not valid forwarder address`, + ); + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when forwarding actions through non-forwarder entities', async () => { + const interpreter = createAragonScriptInterpreter([ + `forward acl ( + grant disputable-voting.open disputable-conviction-voting.open PAUSE_CONTRACT_ROLE disputable-voting.open + )`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'forward')!; + const error = new CommandError(c, `app ${DAO.acl} is not a forwarder`); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }, +); diff --git a/modules/aragonos/test/commands/grant.test.ts b/modules/aragonos/test/commands/grant.test.ts new file mode 100644 index 00000000..32bafec4 --- /dev/null +++ b/modules/aragonos/test/commands/grant.test.ts @@ -0,0 +1,242 @@ +import type { Action } from '@1hive/evmcrispr'; +import { CommandError } from '@1hive/evmcrispr'; +import { + DAO, + DAO2, + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { utils } from 'ethers'; + +import type { AragonOS } from '../../src/AragonOS'; +import { oracle } from '../../src/utils'; +import { + createAragonScriptInterpreter as createAragonScriptInterpreter_, + createTestAction, + findAragonOSCommandNode, + itChecksBadPermission, +} from '../utils'; + +describe.concurrent( + 'AragonOS > commands > grant [permissionManager] [--params | --oracle ]', + () => { + let signer: Signer; + + let createAragonScriptInterpreter: ReturnType< + typeof createAragonScriptInterpreter_ + >; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + createAragonScriptInterpreter = createAragonScriptInterpreter_( + signer, + DAO.kernel, + ); + }); + + it('should return a correct grant permission action', async () => { + const interpreter = createAragonScriptInterpreter([ + `grant @me agent TRANSFER_ROLE`, + ]); + + const granteeActions = await interpreter.interpret(); + + const expectedGranteeActions = [ + createTestAction('grantPermission', DAO.acl, [ + await signer.getAddress(), + DAO.agent, + utils.id('TRANSFER_ROLE'), + ]), + ]; + const aragonos = interpreter.getModule('aragonos') as AragonOS; + const dao = aragonos.getConnectedDAO(DAO.kernel); + const app = dao?.resolveApp('agent'); + const grantees = app?.permissions?.get( + utils.id('TRANSFER_ROLE'), + )?.grantees; + + expect(granteeActions, 'Returned actions mismatch').to.eqls( + expectedGranteeActions, + ); + expect( + grantees, + "Grantee wasn't found on DAO app's permissions", + ).to.include(await signer.getAddress()); + }); + + it('should return a correct create permission action', async () => { + const interpreter = createAragonScriptInterpreter([ + `grant disputable-voting.open wrappable-hooked-token-manager.open WRAP_TOKEN_ROLE @me`, + ]); + + const createPermissionAction = await interpreter.interpret(); + + const expectedPermissionManager = await signer.getAddress(); + const expectedCreatePermissionActions = [ + createTestAction('createPermission', DAO.acl, [ + DAO['disputable-voting.open'], + DAO['wrappable-hooked-token-manager.open'], + utils.id('WRAP_TOKEN_ROLE'), + expectedPermissionManager, + ]), + ]; + const aragonos = interpreter.getModule('aragonos') as AragonOS; + const dao = aragonos.getConnectedDAO(DAO.kernel); + const app = dao?.resolveApp('wrappable-hooked-token-manager.open'); + const permission = app?.permissions?.get(utils.id('WRAP_TOKEN_ROLE')); + + expect(createPermissionAction, 'Returned actions mismatch').to.eql( + expectedCreatePermissionActions, + ); + expect( + permission?.grantees, + "Grantee wasn't found on DAO app's permission", + ).to.have.key(DAO['disputable-voting.open']); + expect( + permission?.manager, + "DAO app's permission manager mismatch", + ).to.equals(expectedPermissionManager); + }); + + it('should return a correct parametric permission action when receiving an oracle option', async () => { + const interpreter = createAragonScriptInterpreter([ + 'grant disputable-voting.open wrappable-hooked-token-manager.open WRAP_TOKEN_ROLE disputable-voting.open --oracle wrappable-hooked-token-manager.open', + ]); + + const grantPActions = await interpreter.interpret(); + + const expectedActions: Action[] = [ + createTestAction('createPermission', DAO.acl, [ + DAO['disputable-voting.open'], + DAO['wrappable-hooked-token-manager.open'], + utils.id('WRAP_TOKEN_ROLE'), + DAO['disputable-voting.open'], + ]), + createTestAction('grantPermissionP', DAO.acl, [ + DAO['disputable-voting.open'], + DAO['wrappable-hooked-token-manager.open'], + utils.id('WRAP_TOKEN_ROLE'), + oracle(DAO['wrappable-hooked-token-manager.open'])(), + ]), + ]; + + expect(grantPActions).to.eql(expectedActions); + }); + + it(`should return a correct grant permission action from a different DAO app`, async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + grant disputable-voting.open _${DAO.kernel}:disputable-voting.open CREATE_VOTES_ROLE + ) + ) + `, + signer, + ); + + const grantActions = await interpreter.interpret(); + + const expectedGrantActions = [ + createTestAction('grantPermission', DAO.acl, [ + DAO2['disputable-voting.open'], + DAO['disputable-voting.open'], + utils.id('CREATE_VOTES_ROLE'), + ]), + ]; + + expect(grantActions).to.eql(expectedGrantActions); + }); + + itChecksBadPermission('grant', (badPermission) => + createAragonScriptInterpreter([`grant ${badPermission.join(' ')}`]), + ); + + it('should fail when passing an invalid app DAO prefix', async () => { + const invalidDAOPrefix = `invalid-dao-prefix`; + const appIdentifier = `_${invalidDAOPrefix}:token-manager`; + const interpreter = createInterpreter( + ` + load aragonos as ar + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + grant _${DAO.kernel}:disputable-voting.open ${appIdentifier} SOME_ROLE + ) + ) + `, + signer, + ); + const c = findAragonOSCommandNode(interpreter.ast, 'grant', 1)!; + const error = new CommandError( + c, + `couldn't found a DAO for ${invalidDAOPrefix} on given identifier ${appIdentifier}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when providing an invalid oracle option', async () => { + const invalidOracle = 'invalid-oracle'; + const interpreter = createAragonScriptInterpreter([ + `grant disputable-voting.open wrappable-hooked-token-manager.open REVOKE_VESTINGS_ROLE disputable-voting.open --oracle ${invalidOracle}`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'grant')!; + const error = new CommandError( + c, + `invalid --oracle option. Expected an address, but got ${invalidOracle}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when granting a parametric permission to an existent grantee', async () => { + const interpreter = createAragonScriptInterpreter([ + `grant augmented-bonding-curve.open wrappable-hooked-token-manager.open MINT_ROLE --oracle wrappable-hooked-token-manager.open`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'grant')!; + const error = new CommandError( + c, + `grantee ${DAO['augmented-bonding-curve.open']} already has given permission on app wrappable-hooked-token-manager`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when executing it outside a "connect" command', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:grant 0xc59d4acea08cf51974dfeb422964e6c2d7eb906f 0x1c06257469514574c0868fdcb83c5509b5513870 TRANSFER_ROLE + `, + signer, + ); + const c = interpreter.ast.body[1]; + const error = new CommandError( + c, + 'must be used within a "connect" command', + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('when granting a permission to an address that already has it', async () => { + const app = 'wrappable-hooked-token-manager.open'; + const interpreter = createAragonScriptInterpreter([ + `grant augmented-bonding-curve.open ${app} MINT_ROLE`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'grant')!; + const error = new CommandError( + c, + `grantee already has given permission on app ${app.slice( + 0, + app.indexOf('.'), + )}`, + ); + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }, +); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/install.test.ts b/modules/aragonos/test/commands/install.test.ts similarity index 89% rename from packages/evmcrispr/test/modules/aragonos/commands/install.test.ts rename to modules/aragonos/test/commands/install.test.ts index 82ad0d6d..9a058571 100644 --- a/packages/evmcrispr/test/modules/aragonos/commands/install.test.ts +++ b/modules/aragonos/test/commands/install.test.ts @@ -1,24 +1,23 @@ -import { expect } from 'chai'; +import type { Action } from '@1hive/evmcrispr'; +import { CommandError, addressesEqual } from '@1hive/evmcrispr'; +import { + APP, + DAO, + DAO2, + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import type { Action } from '../../../../src/types'; -import { encodeActCall } from '../../../../src/modules/aragonos/utils'; -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; -import { CommandError } from '../../../../src/errors'; -import { addressesEqual } from '../../../../src/utils'; -import { APP, DAO } from '../../../fixtures'; -import { DAO as DAO2 } from '../../../fixtures/mock-dao-2'; -import { createTestAction } from '../../../test-helpers/actions'; +import type { AragonOS } from '../../src/AragonOS'; +import { encodeActCall } from '../../src/utils'; import { createAragonScriptInterpreter as createAragonScriptInterpreter_, + createTestAction, findAragonOSCommandNode, -} from '../../../test-helpers/aragonos'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; +} from '../utils'; -describe('AragonOS > commands > install [initParams]', () => { +describe.concurrent('AragonOS > commands > install [initParams]', () => { const { appId, appIdentifier, @@ -35,8 +34,8 @@ describe('AragonOS > commands > install [initParams]', () => { typeof createAragonScriptInterpreter_ >; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); createAragonScriptInterpreter = createAragonScriptInterpreter_( signer, diff --git a/packages/evmcrispr/test/modules/aragonos/commands/new-dao.test.ts b/modules/aragonos/test/commands/new-dao.test.ts similarity index 70% rename from packages/evmcrispr/test/modules/aragonos/commands/new-dao.test.ts rename to modules/aragonos/test/commands/new-dao.test.ts index b03c3b97..c749e2f1 100644 --- a/packages/evmcrispr/test/modules/aragonos/commands/new-dao.test.ts +++ b/modules/aragonos/test/commands/new-dao.test.ts @@ -1,20 +1,16 @@ -import { expect } from 'chai'; +import type { TransactionAction } from '@1hive/evmcrispr'; +import { BindingsSpace, addressesEqual } from '@1hive/evmcrispr'; +import { createInterpreter } from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; import { defaultAbiCoder } from 'ethers/lib/utils'; -import { ethers } from 'hardhat'; -import { BindingsSpace } from '../../../../src/types'; -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; -import type { TransactionAction } from '../../../../src/types'; -import { addressesEqual } from '../../../../src/utils'; - -import { createInterpreter } from '../../../test-helpers/cas11'; +import type { AragonOS } from '../../src/AragonOS'; describe('AragonOS > commands > new-dao ', () => { let signer: Signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should create a new dao correctly', async () => { diff --git a/packages/evmcrispr/test/modules/aragonos/commands/new-token.test.ts b/modules/aragonos/test/commands/new-token.test.ts similarity index 68% rename from packages/evmcrispr/test/modules/aragonos/commands/new-token.test.ts rename to modules/aragonos/test/commands/new-token.test.ts index f394b4a0..bcb71afa 100644 --- a/packages/evmcrispr/test/modules/aragonos/commands/new-token.test.ts +++ b/modules/aragonos/test/commands/new-token.test.ts @@ -1,25 +1,26 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { Contract } from 'ethers'; -import { ethers } from 'hardhat'; - -import { CommandError } from '../../../../src/errors'; +import type { TransactionAction } from '@1hive/evmcrispr'; import { + BindingsSpace, + CommandError, addressesEqual, buildNonceForAddress, calculateNewProxyAddress, -} from '../../../../src/utils'; -import { DAO } from '../../../fixtures'; -import { DAO as DAO2 } from '../../../fixtures/mock-dao-2'; +} from '@1hive/evmcrispr'; +import { + DAO, + DAO2, + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { Contract } from 'ethers'; + +import type { AragonOS } from '../../src/AragonOS'; + import { createAragonScriptInterpreter as createAragonScriptInterpreter_, findAragonOSCommandNode, -} from '../../../test-helpers/aragonos'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; -import type { TransactionAction } from '../../../../src/types'; -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; -import { BindingsSpace } from '../../../../src/types'; +} from '../utils'; describe('AragonOS > commands > new-token [decimals = 18] [transferable = true]', () => { let signer: Signer; @@ -28,8 +29,8 @@ describe('AragonOS > commands > new-token [decimals typeof createAragonScriptInterpreter_ >; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); createAragonScriptInterpreter = createAragonScriptInterpreter_( signer, @@ -188,39 +189,45 @@ describe('AragonOS > commands > new-token [decimals expect(addressesEqual(await token.controller(), params[2])).to.be.true; }); - it('should fail when executing it using a conterfactual app outside a "connect" command', async () => { - const interpreter = createInterpreter( - ` + it.concurrent( + 'should fail when executing it using a conterfactual app outside a "connect" command', + async () => { + const interpreter = createInterpreter( + ` load aragonos as ar ar:new-token "a new token" ANT token-manager.open:counter-factual-tm `, - signer, - ); - const c = interpreter.ast.body[1]; - const error = new CommandError( - c, - 'invalid controller. Expected a labeled app identifier witin a connect command for token-manager.open:counter-factual-tm', - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when passing an invalid token decimals value', async () => { - const invalidDecimals = 'invalidDecimals'; - const interpreter = createAragonScriptInterpreter([ - `new-token "a new token" ANT token-manager.open:counter-factual-tm ${invalidDecimals}`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'new-token')!; - const error = new CommandError( - c, - `invalid decimals. Expected an integer number, but got ${invalidDecimals}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when passing an invalid controller', async () => { + signer, + ); + const c = interpreter.ast.body[1]; + const error = new CommandError( + c, + 'invalid controller. Expected a labeled app identifier witin a connect command for token-manager.open:counter-factual-tm', + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }, + ); + + it.concurrent( + 'should fail when passing an invalid token decimals value', + async () => { + const invalidDecimals = 'invalidDecimals'; + const interpreter = createAragonScriptInterpreter([ + `new-token "a new token" ANT token-manager.open:counter-factual-tm ${invalidDecimals}`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'new-token')!; + const error = new CommandError( + c, + `invalid decimals. Expected an integer number, but got ${invalidDecimals}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }, + ); + + it.concurrent('should fail when passing an invalid controller', async () => { const invalidController = 'asd:123-asd&45'; const interpreter = createAragonScriptInterpreter([ `new-token "a new token" ANT ${invalidController}`, @@ -234,17 +241,20 @@ describe('AragonOS > commands > new-token [decimals await expectThrowAsync(() => interpreter.interpret(), error); }); - it('should fail when passing an invalid transferable flag', async () => { - const invalidTransferable = 'an-invalid-value'; - const interpreter = createAragonScriptInterpreter([ - `new-token "a new token" ANT token-manager.open:counter-factual-tm 18 ${invalidTransferable}`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'new-token')!; - const error = new CommandError( - c, - `invalid transferable flag. Expected a boolean, but got ${invalidTransferable}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); + it.concurrent( + 'should fail when passing an invalid transferable flag', + async () => { + const invalidTransferable = 'an-invalid-value'; + const interpreter = createAragonScriptInterpreter([ + `new-token "a new token" ANT token-manager.open:counter-factual-tm 18 ${invalidTransferable}`, + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'new-token')!; + const error = new CommandError( + c, + `invalid transferable flag. Expected a boolean, but got ${invalidTransferable}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }, + ); }); diff --git a/modules/aragonos/test/commands/revoke.test.ts b/modules/aragonos/test/commands/revoke.test.ts new file mode 100644 index 00000000..2bbb8c1d --- /dev/null +++ b/modules/aragonos/test/commands/revoke.test.ts @@ -0,0 +1,235 @@ +import { CommandError, toDecimals } from '@1hive/evmcrispr'; +import type { CommandExpressionNode, EVMcrispr } from '@1hive/evmcrispr'; +import { + DAO, + DAO2, + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { utils } from 'ethers'; + +import type { AragonOS } from '../../src/AragonOS'; +import { + createAragonScriptInterpreter as createAragonScriptInterpreter_, + createTestAction, + findAragonOSCommandNode, + itChecksBadPermission, +} from '../utils'; + +describe.concurrent( + 'AragonOS > commands > revoke [removeManager]', + () => { + let signer: Signer; + + let createAragonScriptInterpreter: ReturnType< + typeof createAragonScriptInterpreter_ + >; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + + createAragonScriptInterpreter = createAragonScriptInterpreter_( + signer, + DAO.kernel, + ); + }); + + it('should return a correct revoke permission action', async () => { + const interpeter = createAragonScriptInterpreter([ + 'revoke disputable-voting.open:0 acl:0 CREATE_PERMISSIONS_ROLE', + ]); + + const revokePermissionActions = await interpeter.interpret(); + + const role = utils.id('CREATE_PERMISSIONS_ROLE'); + const expectedRevokePermissionActions = [ + createTestAction('revokePermission', DAO.acl, [ + DAO['disputable-voting.open'], + DAO.acl, + role, + ]), + ]; + + const aragonos = interpeter.getModule('aragonos') as AragonOS; + const dao = aragonos.getConnectedDAO(DAO.kernel); + const app = dao?.resolveApp('acl'); + const appPermission = app?.permissions.get(role); + + expect( + appPermission?.grantees, + "Grantee still exists on DAO app's permission", + ).to.not.have.key(DAO['disputable-voting.open']); + expect(revokePermissionActions, 'Returned actions mismatch').to.eql( + expectedRevokePermissionActions, + ); + }); + + it('should return a correct revoke and revoke manager action', async () => { + const rawRole = 'CREATE_PERMISSIONS_ROLE'; + const interpreter = createAragonScriptInterpreter([ + `revoke disputable-voting.open:0 acl:0 ${rawRole} true`, + ]); + + const revokePermissionActions = await interpreter.interpret(); + + const role = utils.id(rawRole); + const expectedRevokePermissionActions = [ + createTestAction('revokePermission', DAO.acl, [ + DAO['disputable-voting.open'], + DAO.acl, + role, + ]), + createTestAction('removePermissionManager', DAO.acl, [DAO.acl, role]), + ]; + + const aragonos = interpreter.getModule('aragonos') as AragonOS; + const dao = aragonos.getConnectedDAO(DAO.kernel); + const app = dao?.resolveApp(DAO['acl']); + const appPermission = app?.permissions.get(role); + + expect( + appPermission?.grantees, + "Grantee still exists on DAO app's permission", + ).to.not.have.key(DAO['disputable-voting.open']); + expect( + appPermission?.manager, + "Permission manager still exists on DAO app's permission", + ).to.not.exist; + expect(revokePermissionActions, 'Returned actions mismatch').to.eql( + expectedRevokePermissionActions, + ); + }); + + it('should return a correct revoke permission action from a different DAO app', async () => { + const interpreter = await createInterpreter( + ` + load aragonos as ar + + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + revoke _${DAO.kernel}:disputable-voting.open _${DAO.kernel}:acl CREATE_PERMISSIONS_ROLE + ) + ) + `, + signer, + ); + + const revokeActions = await interpreter.interpret(); + + const expectedRevokeActions = [ + createTestAction('revokePermission', DAO.acl, [ + DAO['disputable-voting.open'], + DAO.acl, + utils.id('CREATE_PERMISSIONS_ROLE'), + ]), + ]; + + expect(revokeActions).to.eql(expectedRevokeActions); + }); + + itChecksBadPermission('revoke', (badPermission) => + createAragonScriptInterpreter([`revoke ${badPermission.join(' ')}`]), + ); + + it('should fail when passing an invalid DAO prefix', async () => { + const invalidDAOPrefix = `invalid-dao-prefix`; + const appIdentifier = `_${invalidDAOPrefix}:token-manager`; + const interpreter = createInterpreter( + ` + load aragonos as ar + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + revoke _1:voting ${appIdentifier} SOME_ROLE + ) + ) + `, + signer, + ); + const c = findAragonOSCommandNode(interpreter.ast, 'revoke', 1)!; + + const error = new CommandError( + c, + `couldn't found a DAO for ${invalidDAOPrefix} on given identifier ${appIdentifier}`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when executing it outside a "connect" command', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + ar:revoke voting token-manager MINT_ROLE`, + signer, + ); + const c = interpreter.ast.body[1]; + const error = new CommandError( + c, + 'must be used within a "connect" command', + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when passing an invalid remove manager flag', async () => { + const interpreter = createAragonScriptInterpreter([ + 'revoke disputable-voting.open acl CREATE_PERMISSIONS_ROLE 1e18', + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; + const error = new CommandError( + c, + `invalid remove manager flag. Expected boolean but got ${typeof toDecimals( + 1, + 18, + )}`, + ); + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when revoking a permission from a non-app entity', async () => { + let interpreter: EVMcrispr; + let c: CommandExpressionNode; + const nonAppAddress = await signer.getAddress(); + + interpreter = createAragonScriptInterpreter([ + `revoke disputable-voting.open ${nonAppAddress} A_ROLE`, + ]); + c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; + let error = new CommandError(c, `${nonAppAddress} is not a DAO's app`); + + await expectThrowAsync( + () => interpreter.interpret(), + error, + `Unknown identifier didn't fail properly`, + ); + + interpreter = createAragonScriptInterpreter([ + `revoke disputable-voting.open ${nonAppAddress} MY_ROLE`, + ]); + c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; + + error = new CommandError(c, `${nonAppAddress} is not a DAO's app`); + + await expectThrowAsync( + () => + createAragonScriptInterpreter([ + `revoke disputable-voting.open ${nonAppAddress} MY_ROLE`, + ]).interpret(), + error, + ); + }); + + it("should fail when revoking a permission from an entity that doesn't have it", async () => { + const interpreter = createAragonScriptInterpreter([ + 'revoke kernel acl CREATE_PERMISSIONS_ROLE', + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; + const error = new CommandError( + c, + `grantee ${DAO.kernel} doesn't have the given permission`, + ); + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }, +); diff --git a/modules/aragonos/test/commands/upgrade.test.ts b/modules/aragonos/test/commands/upgrade.test.ts new file mode 100644 index 00000000..f6bd739e --- /dev/null +++ b/modules/aragonos/test/commands/upgrade.test.ts @@ -0,0 +1,181 @@ +import { CommandError } from '@1hive/evmcrispr'; +import { + DAO, + DAO2, + DAO3, + createInterpreter, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; +import { utils } from 'ethers'; + +import type { AragonOS } from '../../src/AragonOS'; +import { getRepoContract } from '../../src/utils'; +import { + _aragonEns, + createAragonScriptInterpreter as createAragonScriptInterpreter_, + createTestAction, + findAragonOSCommandNode, +} from '../utils'; + +describe.concurrent( + 'AragonOS > commands > upgrade [newAppImplementationAddress]', + () => { + let signer: Signer; + + let createAragonScriptInterpreter: ReturnType< + typeof createAragonScriptInterpreter_ + >; + + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + + createAragonScriptInterpreter = createAragonScriptInterpreter_( + signer, + DAO2.kernel, + ); + }); + + it("should return a correct upgrade action to the latest app's version", async () => { + const interpreter = createAragonScriptInterpreter([ + `upgrade disputable-conviction-voting.open`, + ]); + + const upgradeActions = await interpreter.interpret(); + + const repoAddress = await _aragonEns( + 'disputable-conviction-voting.open.aragonpm.eth', + interpreter.getModule('aragonos') as AragonOS, + ); + const repo = getRepoContract(repoAddress!, signer); + const [, latestImplementationAddress] = await repo.getLatest(); + const expectedUpgradeActions = [ + createTestAction('setApp', DAO2.kernel, [ + utils.id('base'), + utils.namehash('disputable-conviction-voting.open.aragonpm.eth'), + latestImplementationAddress, + ]), + ]; + + expect(upgradeActions).to.eql(expectedUpgradeActions); + }); + + it('should return a correct upgrade action given a specific version', async () => { + const interpreter = createAragonScriptInterpreter([ + `upgrade disputable-conviction-voting.open 2.0.0`, + ]); + + const upgradeActions = await interpreter.interpret(); + + const repoAddress = await _aragonEns( + 'disputable-conviction-voting.open.aragonpm.eth', + interpreter.getModule('aragonos') as AragonOS, + ); + const repo = getRepoContract(repoAddress!, signer); + const [, newAppImplementation] = await repo.getBySemanticVersion([ + '2', + '0', + '0', + ]); + const expectedUpgradeActions = [ + createTestAction('setApp', DAO2.kernel, [ + utils.id('base'), + utils.namehash('disputable-conviction-voting.open.aragonpm.eth'), + newAppImplementation, + ]), + ]; + + expect(upgradeActions).to.eql(expectedUpgradeActions); + }); + + it('should return a correct upgrade action given a different DAO', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + ar:connect ${DAO.kernel} ( + connect ${DAO2.kernel} ( + connect ${DAO3.kernel} ( + upgrade _${DAO2.kernel}:disputable-conviction-voting.open + ) + ) + ) + `, + signer, + ); + + const upgradeActions = await interpreter.interpret(); + + const repoAddress = await _aragonEns( + 'disputable-conviction-voting.open.aragonpm.eth', + interpreter.getModule('aragonos') as AragonOS, + ); + const repo = getRepoContract(repoAddress!, signer); + const [, latestImplementationAddress] = await repo.getLatest(); + const expectedUpgradeActions = [ + createTestAction('setApp', DAO2.kernel, [ + utils.id('base'), + utils.namehash('disputable-conviction-voting.open.aragonpm.eth'), + latestImplementationAddress, + ]), + ]; + + expect(upgradeActions).to.eql(expectedUpgradeActions); + }); + + it('should fail when executing it outside a "connect" command', async () => { + const interpreter = createInterpreter( + ` + load aragonos as ar + + ar:upgrade voting + `, + signer, + ); + const c = interpreter.ast.body[1]; + const error = new CommandError( + c, + 'must be used within a "connect" command', + ); + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when upgrading a non-existent app', async () => { + const apmRepo = 'superfluid.open'; + const interpreter = createAragonScriptInterpreter([`upgrade ${apmRepo}`]); + const c = findAragonOSCommandNode(interpreter.ast, 'upgrade')!; + const error = new CommandError( + c, + `${apmRepo}.aragonpm.eth not installed on current DAO.`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when providing an invalid second parameter', async () => { + const interpreter = createAragonScriptInterpreter([ + 'upgrade disputable-conviction-voting.open 1e18', + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'upgrade')!; + + const error = new CommandError( + c, + 'second upgrade parameter must be a semantic version, an address, or nothing', + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + + it('should fail when upgrading an app to the same version', async () => { + const interpreter = createAragonScriptInterpreter([ + 'upgrade disputable-conviction-voting.open 1.0.0', + ]); + const c = findAragonOSCommandNode(interpreter.ast, 'upgrade')!; + const error = new CommandError( + c, + `trying to upgrade app to its current version`, + ); + + await expectThrowAsync(() => interpreter.interpret(), error); + }); + }, +); diff --git a/packages/evmcrispr/test/modules/aragonos/connector.test.ts b/modules/aragonos/test/connector.test.ts similarity index 71% rename from packages/evmcrispr/test/modules/aragonos/connector.test.ts rename to modules/aragonos/test/connector.test.ts index 3b26fa5a..09e97038 100644 --- a/packages/evmcrispr/test/modules/aragonos/connector.test.ts +++ b/modules/aragonos/test/connector.test.ts @@ -1,50 +1,42 @@ -import { expect } from 'chai'; +import { ErrorException, ErrorNotFound } from '@1hive/evmcrispr'; +import { + DAO, + EOA_ADDRESS, + expectThrowAsync, +} from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; import { utils } from 'ethers'; -import hre, { ethers } from 'hardhat'; import { multihash } from 'is-ipfs'; -import { ErrorException, ErrorNotFound } from '../../../src/errors'; -import { Connector } from '../../../src/modules/aragonos/Connector'; -import { parseContentUri } from '../../../src/modules/aragonos/utils'; -import type { ParsedApp } from '../../../src/modules/aragonos/types'; - -import { DAO, EOA_ADDRESS } from '../../fixtures'; -import { - expectThrowAsync, - isValidArtifact, - isValidParsedApp, -} from '../../test-helpers/expects'; - -const { - network: { - config: { chainId }, - }, -} = hre; +import { Connector } from '../src/Connector'; +import type { ParsedApp } from '../src/types'; +import { parseContentUri } from '../src/utils'; +import { isValidArtifact, isValidParsedApp } from './utils'; const GOERLI_DAO_ADDRESS = '0xd8765273da3a7f7a4dc184e8a9f8a894e4dfb4c4'; -describe('AragonOS > Connector', () => { +describe.concurrent('AragonOS > Connector', () => { let connector: Connector; let goerliConnector: Connector; let signer: Signer; - before(async () => { - signer = (await ethers.getSigners())[0]; + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); + const chainId = await signer.getChainId(); const provider = signer.provider!; - connector = new Connector(chainId || 4, provider); + connector = new Connector(chainId, provider); goerliConnector = new Connector(5, provider); }); it('should fail when creating a connector with an unknown chain id', () => { expectThrowAsync( () => new Connector(999, signer.provider!), - new ErrorException(), + new ErrorException('No subgraph found for chain id 999'), ); }); - describe('repo()', () => { + describe.concurrent('repo()', () => { it('should find a valid repo', async () => { const { codeAddress, contentUri, artifact } = await connector.repo( 'token-manager', @@ -72,11 +64,11 @@ describe('AragonOS > Connector', () => { }); }); - describe('organizationApps()', () => { + describe.concurrent('organizationApps()', () => { let daoApps: ParsedApp[]; let goerliDaoApps: ParsedApp[]; - before(async () => { + beforeAll(async () => { daoApps = await connector.organizationApps(DAO.kernel); goerliDaoApps = await goerliConnector.organizationApps( GOERLI_DAO_ADDRESS, @@ -93,12 +85,12 @@ describe('AragonOS > Connector', () => { }); }); - describe("when fetching apps from a goerli's dao", () => { + describe.concurrent("when fetching apps from a goerli's dao", () => { it('should find the apps', () => { expect(goerliDaoApps.length).to.be.greaterThan(0); }); - it('shole return valid parsed apps', () => { + it('should return valid parsed apps', () => { goerliDaoApps.forEach((app) => isValidParsedApp(app)); }); }); diff --git a/packages/evmcrispr/test/modules/aragonos/helpers/aragonEns.test.ts b/modules/aragonos/test/helpers/aragonEns.test.ts similarity index 75% rename from packages/evmcrispr/test/modules/aragonos/helpers/aragonEns.test.ts rename to modules/aragonos/test/helpers/aragonEns.test.ts index 9d3665aa..23870eab 100644 --- a/packages/evmcrispr/test/modules/aragonos/helpers/aragonEns.test.ts +++ b/modules/aragonos/test/helpers/aragonEns.test.ts @@ -1,20 +1,16 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; +import { ComparisonType, NodeType } from '@1hive/evmcrispr'; import { itChecksInvalidArgsLength, preparingExpression, -} from '../../../test-helpers/cas11'; +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; -describe('AragonOS > helpers > @aragonEns()', () => { +describe.concurrent('AragonOS > helpers > @aragonEns()', () => { let signer: Signer; const lazySigner = () => signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should interpret it correctly', async () => { diff --git a/packages/evmcrispr/test/test-helpers/actions.ts b/modules/aragonos/test/utils/actions.ts similarity index 94% rename from packages/evmcrispr/test/test-helpers/actions.ts rename to modules/aragonos/test/utils/actions.ts index ba3b2d0f..aecd038e 100644 --- a/packages/evmcrispr/test/test-helpers/actions.ts +++ b/modules/aragonos/test/utils/actions.ts @@ -1,15 +1,12 @@ +import type { Action, Address, TransactionAction } from '@1hive/evmcrispr'; import { utils } from 'ethers'; -import type { Action, Address, TransactionAction } from '../../src/types'; +import { encodeActCall, encodeCallScript } from '../../src/utils'; import { CONTEXT_FORWARDER_TYPE, FORWARDER_TYPE, getAppForwarderType, } from './forwarders'; -import { - encodeActCall, - encodeCallScript, -} from '../../src/modules/aragonos/utils'; export const createTestPreTxAction = ( operation: string, diff --git a/packages/evmcrispr/test/test-helpers/aragonos.ts b/modules/aragonos/test/utils/aragonos.ts similarity index 90% rename from packages/evmcrispr/test/test-helpers/aragonos.ts rename to modules/aragonos/test/utils/aragonos.ts index 74e7ada3..8e3b8bb5 100644 --- a/packages/evmcrispr/test/test-helpers/aragonos.ts +++ b/modules/aragonos/test/utils/aragonos.ts @@ -1,28 +1,21 @@ -import type { Signer } from 'ethers'; - -import type { Address } from '../../src'; - -import type { EVMcrispr } from '../../src/EVMcrispr'; - -import type { AragonOS } from '../../src/modules/aragonos/AragonOS'; -import { NodeType } from '../../src/types'; +import { CommandError, NodeType, listItems } from '@1hive/evmcrispr'; import type { AST, + Address, BlockExpressionNode, CommandExpressionNode, -} from '../../src/types'; -import { listItems } from '../../src/utils'; -import { CommandError } from '../../src/errors'; -import { createInterpreter, itChecksNonDefinedIdentifier } from './cas11'; -import { expectThrowAsync } from './expects'; + EVMcrispr, +} from '@1hive/evmcrispr'; import { - getAragonEnsResolver, - resolveName, -} from '../../src/modules/aragonos/utils'; -import type { - FullPermission, - Permission, -} from '../../src/modules/aragonos/types'; + createInterpreter, + expectThrowAsync, + itChecksNonDefinedIdentifier, +} from '@1hive/evmcrispr-test-common'; +import type { Signer } from 'ethers'; + +import type { AragonOS } from '../../src/AragonOS'; +import type { FullPermission, Permission } from '../../src/types'; +import { getAragonEnsResolver, resolveName } from '../../src/utils'; export const _aragonEns = async ( ensName: string, diff --git a/modules/aragonos/test/utils/expects.ts b/modules/aragonos/test/utils/expects.ts new file mode 100644 index 00000000..d52c80a1 --- /dev/null +++ b/modules/aragonos/test/utils/expects.ts @@ -0,0 +1,55 @@ +import { expectHash } from '@1hive/evmcrispr-test-common'; +import { isAddress } from 'ethers/lib/utils'; +import { multihash } from 'is-ipfs'; + +import type { AragonArtifact, ParsedApp } from '../../src/types'; +import { parseContentUri } from '../../src/utils'; + +export const isValidArtifact = (artifact: AragonArtifact): void => { + const { appName, abi, roles } = artifact; + + expect(appName, 'Artifact name not found').to.not.be.null; + + expect(abi.length, 'Artifact ABI not found').to.be.greaterThan(0); + + roles.forEach(({ bytes, id, name }) => { + expectHash(bytes, 'Invalid artifact role hash'); + expect(id, 'Artifact role id not found').to.not.be.empty; + expect(name, 'Artifact role name not found').to.not.be.empty; + }); +}; + +export const isValidParsedApp = (app: ParsedApp): void => { + const { address, appId, artifact, codeAddress, contentUri, name, roles } = + app; + + expect(isAddress(address), 'Invalid app address').to.be.true; + + expectHash(appId, 'Invalid appId'); + + expect(isAddress(codeAddress), 'Invalid app code address').to.be.true; + + if (contentUri) { + expect(multihash(parseContentUri(contentUri)), 'Invalid contentUri').to.be + .true; + } + + expect(name, 'App name missing').to.not.be.empty; + + expect(app).has.property('artifact'); + + if (artifact) { + isValidArtifact(artifact); + } + + roles.forEach(({ manager, grantees, roleHash }) => { + expect(isAddress(manager), 'Invalid app role manager').to.be.true; + + grantees.forEach(({ granteeAddress }) => { + expect(isAddress(granteeAddress), 'Invalid app role grantee address').to + .be.true; + }); + + expectHash(roleHash, 'Invalid app role hash'); + }); +}; diff --git a/packages/evmcrispr/test/test-helpers/forwarders.ts b/modules/aragonos/test/utils/forwarders.ts similarity index 100% rename from packages/evmcrispr/test/test-helpers/forwarders.ts rename to modules/aragonos/test/utils/forwarders.ts diff --git a/modules/aragonos/test/utils/index.ts b/modules/aragonos/test/utils/index.ts new file mode 100644 index 00000000..e0b1ed49 --- /dev/null +++ b/modules/aragonos/test/utils/index.ts @@ -0,0 +1,4 @@ +export * from './actions'; +export * from './expects'; +export * from './forwarders'; +export * from './aragonos'; diff --git a/modules/aragonos/tsconfig.json b/modules/aragonos/tsconfig.json new file mode 100644 index 00000000..9e69f6ee --- /dev/null +++ b/modules/aragonos/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "tsconfig-evmcrispr/base.json", + "compilerOptions": { + "lib": ["es2019", "es2017", "dom"] + } +} diff --git a/modules/aragonos/tsup.config.ts b/modules/aragonos/tsup.config.ts new file mode 100644 index 00000000..9067c354 --- /dev/null +++ b/modules/aragonos/tsup.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'tsup'; + +import { getConfig } from '../../scripts/tsup'; + +export default defineConfig(getConfig({ entry: ['src/index.ts'] })); diff --git a/modules/aragonos/vite.config.ts b/modules/aragonos/vite.config.ts new file mode 100644 index 00000000..3cc0987f --- /dev/null +++ b/modules/aragonos/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vitest/config'; + +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKERS_LENGTH = parseInt(process.env.WORKERS_LENGTH ?? '4'); + +export default defineConfig({ + test: { + coverage: { + reporter: ['lcov'], + }, + globals: true, + environment: 'node', + setupFiles: ['setup.ts'], + globalSetup: ['global-setup.ts'], + maxThreads: WORKERS_LENGTH, + minThreads: WORKERS_LENGTH, + testTimeout: 60000, + hookTimeout: 60000, + }, +}); diff --git a/modules/giveth/.eslintrc b/modules/giveth/.eslintrc new file mode 100644 index 00000000..5b77555d --- /dev/null +++ b/modules/giveth/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["evmcrispr"] +} diff --git a/modules/giveth/global-setup.ts b/modules/giveth/global-setup.ts new file mode 100644 index 00000000..efef5847 --- /dev/null +++ b/modules/giveth/global-setup.ts @@ -0,0 +1,12 @@ +import { + setup as _setup, + teardown as _teardown, +} from '@1hive/evmcrispr-test-common/setups/global'; + +export function setup(): Promise { + return _setup(8002); +} + +export function teardown(): void { + _teardown(); +} diff --git a/modules/giveth/hardhat.config.ts b/modules/giveth/hardhat.config.ts new file mode 100644 index 00000000..84dcc969 --- /dev/null +++ b/modules/giveth/hardhat.config.ts @@ -0,0 +1 @@ +export { config as default } from '@1hive/evmcrispr-test-common/hardhat.config'; diff --git a/modules/giveth/package.json b/modules/giveth/package.json new file mode 100644 index 00000000..04fe8ef3 --- /dev/null +++ b/modules/giveth/package.json @@ -0,0 +1,37 @@ +{ + "name": "@1hive/evmcrispr-giveth-module", + "version": "0.9.0", + "license": "GPL-3.0", + "description": "An EVMcrispr module to interact with Giveth's smart contracts", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "devDependencies": { + "@1hive/evmcrispr": "workspace:0.9.0", + "eslint-config-evmcrispr": "workspace:*", + "@1hive/evmcrispr-test-common": "workspace:*", + "tsconfig-evmcrispr": "workspace:*", + "@types/isomorphic-fetch": "^0.0.36", + "vitest": "^0.26.2" + }, + "peerDependencies": { + "@1hive/evmcrispr": "workspace:0.9.0" + }, + "scripts": { + "dotenv": "dotenv -e ../../.env --", + "preinstall": "npx only-allow pnpm", + "build": "tsup", + "clean": "hardhat clean", + "lint": "tsc --noEmit && eslint", + "test": "pnpm run dotenv vitest run", + "test:coverage": "pnpm run dotenv vitest run --coverage", + "test:ui": "pnpm run dotenv vitest --ui", + "test:watch": "pnpm run dotenv vitest" + }, + "dependencies": { + "isomorphic-fetch": "^3.0.0" + } +} diff --git a/modules/giveth/setup.ts b/modules/giveth/setup.ts new file mode 100644 index 00000000..a8f52152 --- /dev/null +++ b/modules/giveth/setup.ts @@ -0,0 +1,40 @@ +import { runSetup } from '@1hive/evmcrispr-test-common/setups/file'; +import { graphql } from 'msw'; + +type Project = { + id: string; + addresses: { address: string; networkId: number }[]; +}; + +const PROJECTS: Record = { + evmcrispr: { + id: '1350', + addresses: [ + { address: '0xeafFF6dB1965886348657E79195EB6f1A84657eB', networkId: 1 }, + { address: '0xeafFF6dB1965886348657E79195EB6f1A84657eB', networkId: 100 }, + ], + }, +}; + +const givethGraphqlHandlers = [ + graphql.query, { slug: string }>( + 'GetLearnWithJasonEpisodes', + (req, res, ctx) => { + const slug = req.variables.slug; + + const selectdProject = PROJECTS[slug]; + + return res( + ctx.status(200), + ctx.data({ + projectBySlug: selectdProject ?? null, + }), + ); + }, + ), +]; + +runSetup({ + customServerHandlers: givethGraphqlHandlers, + chainManagerPort: 8002, +}); diff --git a/packages/evmcrispr/src/modules/giveth/Giveth.ts b/modules/giveth/src/Giveth.ts similarity index 68% rename from packages/evmcrispr/src/modules/giveth/Giveth.ts rename to modules/giveth/src/Giveth.ts index a0741201..bbff967e 100644 --- a/packages/evmcrispr/src/modules/giveth/Giveth.ts +++ b/modules/giveth/src/Giveth.ts @@ -1,11 +1,12 @@ -import type { BindingsManager } from '../../BindingsManager'; +import type { + BindingsManager, + EVMcrispr, + IPFSResolver, +} from '@1hive/evmcrispr'; +import { Module } from '@1hive/evmcrispr'; -import { Module } from '../../Module'; -import type { IPFSResolver } from '../../IPFSResolver'; import { commands } from './commands'; import { helpers } from './helpers'; -import type { EVMcrispr } from '../../EVMcrispr'; - export class Giveth extends Module { constructor( bindingsManager: BindingsManager, diff --git a/packages/evmcrispr/src/modules/giveth/commands/donate.ts b/modules/giveth/src/commands/donate.ts similarity index 73% rename from packages/evmcrispr/src/modules/giveth/commands/donate.ts rename to modules/giveth/src/commands/donate.ts index 80be8312..a3c3d429 100644 --- a/packages/evmcrispr/src/modules/giveth/commands/donate.ts +++ b/modules/giveth/src/commands/donate.ts @@ -1,23 +1,16 @@ -import { isAddress } from 'ethers/lib/utils'; - -import { ErrorException } from '../../../errors'; - -import type { ICommand } from '../../../types'; - import { ComparisonType, + ErrorException, checkArgsLength, encodeAction, isNumberish, -} from '../../../utils'; +} from '@1hive/evmcrispr'; +import type { ICommand } from '@1hive/evmcrispr'; +import { isAddress } from 'ethers/lib/utils'; import type { Giveth } from '../Giveth'; import { _projectAddr } from '../helpers/projectAddr'; - -export const givethDonationRelayer = new Map([ - [1, '0x01A5529F4b03059470785D7Bfbf25B180bE6f796'], - [100, '0x01A5529F4b03059470785D7Bfbf25B180bE6f796'], -]); +import { GIVETH_DONATION_RELAYER } from '../utils'; export const donate: ICommand = { async run(module, c, { interpretNodes }) { @@ -37,17 +30,17 @@ export const donate: ICommand = { const chainId = await module.getChainId(); - if (!givethDonationRelayer.has(chainId)) { + if (!GIVETH_DONATION_RELAYER.has(chainId)) { throw new ErrorException('network not supported by giveth'); } return [ encodeAction(tokenAddr, 'approve(address,uint256)', [ - givethDonationRelayer.get(chainId)!, + GIVETH_DONATION_RELAYER.get(chainId)!, amount, ]), encodeAction( - givethDonationRelayer.get(chainId)!, + GIVETH_DONATION_RELAYER.get(chainId)!, 'sendDonation(address,address,uint256,uint256)', [tokenAddr, projAddr, amount, projectId], ), diff --git a/packages/evmcrispr/src/modules/giveth/commands/finalize-givbacks.ts b/modules/giveth/src/commands/finalize-givbacks.ts similarity index 67% rename from packages/evmcrispr/src/modules/giveth/commands/finalize-givbacks.ts rename to modules/giveth/src/commands/finalize-givbacks.ts index 9d9f619c..c8d450b0 100644 --- a/packages/evmcrispr/src/modules/giveth/commands/finalize-givbacks.ts +++ b/modules/giveth/src/commands/finalize-givbacks.ts @@ -1,16 +1,15 @@ -import type { ICommand } from '../../../types'; - import { ComparisonType, + IPFS_GATEWAY, checkArgsLength, checkOpts, encodeAction, getOptValue, -} from '../../../utils'; +} from '@1hive/evmcrispr'; +import type { ICommand } from '@1hive/evmcrispr'; import type { Giveth } from '../Giveth'; - -const defaultRelayerAddr = '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; +import { DEFAULT_GIVBACKS_RELAYER } from '../utils'; export const finalizeGivbacks: ICommand = { async run(_, c, { interpretNode, interpretNodes }) { @@ -19,11 +18,12 @@ export const finalizeGivbacks: ICommand = { const [hash] = await interpretNodes(c.args); const relayerAddr = - (await getOptValue(c, 'relayer', interpretNode)) || defaultRelayerAddr; + (await getOptValue(c, 'relayer', interpretNode)) || + DEFAULT_GIVBACKS_RELAYER; - const batches = await fetch( - 'https://ipfs.blossom.software/ipfs/' + hash, - ).then((data) => data.json()); + const batches = await fetch(IPFS_GATEWAY + hash).then((data) => + data.json(), + ); return batches.map((batch: any) => encodeAction(relayerAddr, 'executeBatch(uint256,address[],uint256[])', [ batch.nonce, diff --git a/packages/evmcrispr/src/modules/giveth/commands/index.ts b/modules/giveth/src/commands/index.ts similarity index 86% rename from packages/evmcrispr/src/modules/giveth/commands/index.ts rename to modules/giveth/src/commands/index.ts index 2fda91ec..8b00f8a1 100644 --- a/packages/evmcrispr/src/modules/giveth/commands/index.ts +++ b/modules/giveth/src/commands/index.ts @@ -1,4 +1,5 @@ -import type { Commands } from '../../../types'; +import type { Commands } from '@1hive/evmcrispr'; + import type { Giveth } from '../Giveth'; import { donate } from './donate'; diff --git a/packages/evmcrispr/src/modules/giveth/commands/initiate-givbacks.ts b/modules/giveth/src/commands/initiate-givbacks.ts similarity index 64% rename from packages/evmcrispr/src/modules/giveth/commands/initiate-givbacks.ts rename to modules/giveth/src/commands/initiate-givbacks.ts index efbd2a90..973e3e3b 100644 --- a/packages/evmcrispr/src/modules/giveth/commands/initiate-givbacks.ts +++ b/modules/giveth/src/commands/initiate-givbacks.ts @@ -1,22 +1,22 @@ -import { Contract } from 'ethers'; - -import type { ICommand } from '../../../types'; +import type { ICommand } from '@1hive/evmcrispr'; import { ComparisonType, + IPFS_GATEWAY, checkArgsLength, checkOpts, encodeAction, getOptValue, -} from '../../../utils'; -import { batchForwarderActions } from '../../aragonos/utils'; +} from '@1hive/evmcrispr'; +import { Contract } from 'ethers'; import type { Giveth } from '../Giveth'; +import { batchForwarderActions } from '../utils'; +import { DEFAULT_GIVBACKS_RELAYER } from '../utils/giveth'; -const defaultRelayerAddr = '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; -const tokenManager = '0x3efac97efa6f237e67b4f8c616a194fd0583d99a'; -const voting = '0x30c9aa17fc30e4c23a65680a35b33e8f3b4198a2'; -const agent = '0x2fa20fa7fc404d35748497c0f28f8fb2f8731336'; +const ARAGON_DAO_TOKEN_MANAGER = '0x3efac97efa6f237e67b4f8c616a194fd0583d99a'; +const ARAGON_DAO_VOTING = '0x30c9aa17fc30e4c23a65680a35b33e8f3b4198a2'; +const ARAGON_DAO_AGENT = '0x2fa20fa7fc404d35748497c0f28f8fb2f8731336'; export const initiateGivbacks: ICommand = { async run(module, c, { interpretNode, interpretNodes }) { @@ -25,11 +25,10 @@ export const initiateGivbacks: ICommand = { const [hash] = await interpretNodes(c.args); const relayerAddr = - (await getOptValue(c, 'relayer', interpretNode)) || defaultRelayerAddr; + (await getOptValue(c, 'relayer', interpretNode)) || + DEFAULT_GIVBACKS_RELAYER; - const data = await fetch('https://ipfs.blossom.software/ipfs/' + hash).then( - (data) => data.json(), - ); + const data = await fetch(IPFS_GATEWAY + hash).then((data) => data.json()); const relayer = new Contract( relayerAddr, @@ -53,7 +52,7 @@ export const initiateGivbacks: ICommand = { hash, ]), ], - [agent, voting, tokenManager], + [ARAGON_DAO_AGENT, ARAGON_DAO_VOTING, ARAGON_DAO_TOKEN_MANAGER], ); return actions; }, diff --git a/packages/evmcrispr/src/modules/giveth/helpers/index.ts b/modules/giveth/src/helpers/index.ts similarity index 72% rename from packages/evmcrispr/src/modules/giveth/helpers/index.ts rename to modules/giveth/src/helpers/index.ts index f1284123..1e397db6 100644 --- a/packages/evmcrispr/src/modules/giveth/helpers/index.ts +++ b/modules/giveth/src/helpers/index.ts @@ -1,4 +1,5 @@ -import type { HelperFunctions } from '../../../types'; +import type { HelperFunctions } from '@1hive/evmcrispr'; + import type { Giveth } from '../Giveth'; import { projectAddr } from './projectAddr'; diff --git a/packages/evmcrispr/src/modules/giveth/helpers/projectAddr.ts b/modules/giveth/src/helpers/projectAddr.ts similarity index 88% rename from packages/evmcrispr/src/modules/giveth/helpers/projectAddr.ts rename to modules/giveth/src/helpers/projectAddr.ts index c08164fb..5404dd6e 100644 --- a/packages/evmcrispr/src/modules/giveth/helpers/projectAddr.ts +++ b/modules/giveth/src/helpers/projectAddr.ts @@ -1,9 +1,8 @@ +import { ComparisonType, checkArgsLength } from '@1hive/evmcrispr'; +import type { HelperFunction, Module } from '@1hive/evmcrispr'; import fetch from 'isomorphic-fetch'; import type { Giveth } from '../Giveth'; -import type { HelperFunction } from '../../../types'; -import { ComparisonType, checkArgsLength } from '../../../utils'; -import type { Module } from '../../..'; export const _projectAddr = async ( module: Module, diff --git a/packages/evmcrispr/src/modules/giveth/index.ts b/modules/giveth/src/index.ts similarity index 100% rename from packages/evmcrispr/src/modules/giveth/index.ts rename to modules/giveth/src/index.ts diff --git a/modules/giveth/src/utils/aragonos-evmcrispts.ts b/modules/giveth/src/utils/aragonos-evmcrispts.ts new file mode 100644 index 00000000..736ed1ac --- /dev/null +++ b/modules/giveth/src/utils/aragonos-evmcrispts.ts @@ -0,0 +1,141 @@ +import { ErrorInvalid, erc20ABI } from '@1hive/evmcrispr'; +import type { Action, Module, TransactionAction } from '@1hive/evmcrispr'; + +import { Contract, constants, utils } from 'ethers'; +import type { BigNumber } from 'ethers'; + +import { encodeActCall, encodeCallScript } from './aragonos-forwaders'; + +export const FORWARDER_TYPES = { + NOT_IMPLEMENTED: 0, + NO_CONTEXT: 1, + WITH_CONTEXT: 2, +}; + +export const isForwarder = async (forwarder: Contract): Promise => { + try { + return await forwarder.isForwarder(); + } catch (err) { + return false; + } +}; + +export const getForwarderFee = async ( + forwarder: Contract, +): Promise<[string, BigNumber] | undefined> => { + // If it fails we assume app is not a payable forwarder + try { + return await forwarder.forwardFee(); + } catch (err) { + return; + } +}; + +export const getForwarderType = async ( + forwarder: Contract, +): Promise => { + // If it fails then we assume app implements an aragonos older version forwarder + try { + return await forwarder.forwarderType(); + } catch (err) { + return FORWARDER_TYPES.NO_CONTEXT; + } +}; + +export const forwarderABI = [ + 'function forward(bytes evmCallScript) public', + 'function isForwarder() external pure returns (bool)', + 'function canForward(address sender, bytes evmCallScript) public view returns (bool)', + 'function forwardFee() external view returns (address, uint256)', + 'function forwarderType() external pure returns (uint8)', +]; + +export const batchForwarderActions = async ( + module: Module, + forwarderActions: TransactionAction[], + forwarders: string[], + context?: string, +): Promise => { + let script: string; + let value: string | number = 0; + const actions: Action[] = []; + + for (const forwarderAddress of forwarders) { + script = encodeCallScript(forwarderActions); + const forwarder = new Contract( + forwarderAddress, + forwarderABI, + await module.getProvider(), + ); + + if (!(await isForwarder(forwarder))) { + throw new ErrorInvalid(`app ${forwarder.address} is not a forwarder`); + } + + const fee = await getForwarderFee(forwarder); + + if (fee) { + const [feeTokenAddress, feeAmount] = fee; + + // Check if fees are in ETH + if (feeTokenAddress === constants.AddressZero) { + value = feeAmount.toNumber(); + } else { + const feeToken = new Contract( + feeTokenAddress, + erc20ABI, + await module.getProvider(), + ); + const allowance = (await feeToken.allowance( + await module.getConnectedAccount(), + forwarderAddress, + )) as BigNumber; + + if (allowance.gt(0) && allowance.lt(feeAmount)) { + actions.push({ + to: feeTokenAddress, + data: feeToken.interface.encodeFunctionData('approve', [ + forwarderAddress, + 0, + ]), + }); + } + if (allowance.eq(0)) { + actions.push({ + to: feeTokenAddress, + data: feeToken.interface.encodeFunctionData('approve', [ + forwarderAddress, + feeAmount, + ]), + }); + } + } + } + + if ((await getForwarderType(forwarder)) === FORWARDER_TYPES.WITH_CONTEXT) { + if (!context) { + throw new ErrorInvalid(`context option missing`); + } + forwarderActions = [ + { + to: forwarderAddress, + data: encodeActCall('forward(bytes,bytes)', [ + script, + utils.hexlify(utils.toUtf8Bytes(context)), + ]), + }, + ]; + } else { + forwarderActions = [ + { + to: forwarderAddress, + data: encodeActCall('forward(bytes)', [script]), + }, + ]; + } + } + if (value) { + forwarderActions[forwarderActions.length - 1].value = value; + } + return [...actions, ...forwarderActions]; +}; diff --git a/modules/giveth/src/utils/aragonos-forwaders.ts b/modules/giveth/src/utils/aragonos-forwaders.ts new file mode 100644 index 00000000..0fe7a8a2 --- /dev/null +++ b/modules/giveth/src/utils/aragonos-forwaders.ts @@ -0,0 +1,68 @@ +import { utils } from 'ethers'; + +const CALLSCRIPT_ID = '0x00000001'; + +/** + * A call script. + */ +export interface CallScriptAction { + /** + * The action's target. + */ + to: string; + /** + * The action's calldata. + */ + data: string; +} + +/** + * Encode ACT function call + * @param {string} signature Function signature + * @param {any[]} params + */ +export function encodeActCall(signature: string, params: any[] = []): string { + const sigBytes = utils.hexDataSlice(utils.id(signature), 0, 4); + const types = signature.replace(')', '').split('(')[1]; + + // No params, return signature directly + if (types === '') { + return sigBytes; + } + + const paramBytes = new utils.AbiCoder().encode(types.split(','), params); + + return `${sigBytes}${paramBytes.slice(2)}`; +} + +/** + * Encode a call script + * + * Example: + * + * input: + * [ + * { to: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, data: 0x11111111 }, + * { to: 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, data: 0x2222222222 } + * ] + * + * output: + * 0x00000001 + * aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0000000411111111 + * bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb000000052222222222 + * + * + * @param {Array} actions + * @returns {string} + */ +export function encodeCallScript(actions: CallScriptAction[]): string { + return actions.reduce((script: string, { to, data }) => { + const address = utils.defaultAbiCoder.encode(['address'], [to]); + const dataLength = utils.defaultAbiCoder.encode( + ['uint256'], + [(data.length - 2) / 2], + ); + + return script + address.slice(26) + dataLength.slice(58) + data.slice(2); + }, CALLSCRIPT_ID); +} diff --git a/modules/giveth/src/utils/giveth.ts b/modules/giveth/src/utils/giveth.ts new file mode 100644 index 00000000..e5ed111d --- /dev/null +++ b/modules/giveth/src/utils/giveth.ts @@ -0,0 +1,7 @@ +export const DEFAULT_GIVBACKS_RELAYER = + '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; + +export const GIVETH_DONATION_RELAYER = new Map([ + [1, '0x01A5529F4b03059470785D7Bfbf25B180bE6f796'], + [100, '0x01A5529F4b03059470785D7Bfbf25B180bE6f796'], +]); diff --git a/modules/giveth/src/utils/index.ts b/modules/giveth/src/utils/index.ts new file mode 100644 index 00000000..481c0146 --- /dev/null +++ b/modules/giveth/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './aragonos-evmcrispts'; +export * from './aragonos-forwaders'; +export * from './giveth'; diff --git a/packages/evmcrispr/test/modules/giveth/commands/donate.test.ts b/modules/giveth/test/commands/donate.test.ts similarity index 68% rename from packages/evmcrispr/test/modules/giveth/commands/donate.test.ts rename to modules/giveth/test/commands/donate.test.ts index c0d778af..f0948d74 100644 --- a/packages/evmcrispr/test/modules/giveth/commands/donate.test.ts +++ b/modules/giveth/test/commands/donate.test.ts @@ -1,16 +1,13 @@ -import { expect } from 'chai'; +import { createInterpreter } from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; -import { givethDonationRelayer } from '../../../../src/modules/giveth/commands/donate'; - -import { createInterpreter } from '../../../test-helpers/cas11'; +import { GIVETH_DONATION_RELAYER } from '../../src/utils'; describe('Giveth > commands > donate ', () => { let signer: Signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('should return a correct donate action', async () => { @@ -24,10 +21,10 @@ describe('Giveth > commands > donate ', () => { const interpreter2 = createInterpreter( `set $token.tokenlist https://tokens.honeyswap.org - exec @token(HNY) approve(address,uint) ${givethDonationRelayer.get( + exec @token(HNY) approve(address,uint) ${GIVETH_DONATION_RELAYER.get( 100, )} 1e18 - exec ${givethDonationRelayer.get( + exec ${GIVETH_DONATION_RELAYER.get( 100, )} sendDonation(address,address,uint256,uint256) @token(HNY) 0xeafFF6dB1965886348657E79195EB6f1A84657eB 1e18 1350`, signer, diff --git a/packages/evmcrispr/test/modules/giveth/commands/finalize-givbacks.test.ts b/modules/giveth/test/commands/finalize-givbacks.test.ts similarity index 72% rename from packages/evmcrispr/test/modules/giveth/commands/finalize-givbacks.test.ts rename to modules/giveth/test/commands/finalize-givbacks.test.ts index 7c2e66d3..42c5a2e7 100644 --- a/packages/evmcrispr/test/modules/giveth/commands/finalize-givbacks.test.ts +++ b/modules/giveth/test/commands/finalize-givbacks.test.ts @@ -1,24 +1,23 @@ -import { expect } from 'chai'; +import { IPFS_GATEWAY } from '@1hive/evmcrispr'; +import { createInterpreter } from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; -import { createInterpreter } from '../../../test-helpers/cas11'; +import { DEFAULT_GIVBACKS_RELAYER } from '../../src/utils'; describe('Giveth > commands > finalize-givbacks [--relayer ]', () => { let signer: Signer; - const defaultRelayerAddr = '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); const testInitiateGivbacks = - (relayerAddr: string = defaultRelayerAddr) => + (relayerAddr: string = DEFAULT_GIVBACKS_RELAYER) => async () => { const ipfsHash = 'QmdERB7Mu5e7TPzDpmNtY12rtvj9PB89pXUGkssoH7pvyr'; const interpreter = createInterpreter( - relayerAddr === defaultRelayerAddr + relayerAddr === DEFAULT_GIVBACKS_RELAYER ? ` load giveth giveth:finalize-givbacks ${ipfsHash}` @@ -28,9 +27,9 @@ describe('Giveth > commands > finalize-givbacks [--relayer ] signer, ); - const batches = await fetch( - 'https://ipfs.blossom.software/ipfs/' + ipfsHash, - ).then((data) => data.json()); + const batches = await fetch(IPFS_GATEWAY + ipfsHash).then((data) => + data.json(), + ); const interpreter2 = createInterpreter( batches diff --git a/packages/evmcrispr/test/modules/giveth/commands/initiate-givbacks.test.ts b/modules/giveth/test/commands/initiate-givbacks.test.ts similarity index 90% rename from packages/evmcrispr/test/modules/giveth/commands/initiate-givbacks.test.ts rename to modules/giveth/test/commands/initiate-givbacks.test.ts index f67c0733..4adfbdce 100644 --- a/packages/evmcrispr/test/modules/giveth/commands/initiate-givbacks.test.ts +++ b/modules/giveth/test/commands/initiate-givbacks.test.ts @@ -1,15 +1,12 @@ -import { expect } from 'chai'; +import { createInterpreter } from '@1hive/evmcrispr-test-common'; import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { createInterpreter } from '../../../test-helpers/cas11'; describe('Giveth > commands > initiate-givbacks [--relayer ]', () => { let signer: Signer; const defaultRelayerAddr = '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); const testInitiateGivbacks = diff --git a/packages/evmcrispr/test/modules/giveth/helpers/projectAddr.test.ts b/modules/giveth/test/helpers/projectAddr.test.ts similarity index 72% rename from packages/evmcrispr/test/modules/giveth/helpers/projectAddr.test.ts rename to modules/giveth/test/helpers/projectAddr.test.ts index 4d3792d5..7e2df5c8 100644 --- a/packages/evmcrispr/test/modules/giveth/helpers/projectAddr.test.ts +++ b/modules/giveth/test/helpers/projectAddr.test.ts @@ -1,20 +1,17 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; +import { ComparisonType, NodeType } from '@1hive/evmcrispr'; import { itChecksInvalidArgsLength, preparingExpression, -} from '../../../test-helpers/cas11'; +} from '@1hive/evmcrispr-test-common'; + +import type { Signer } from 'ethers'; describe('Giveth > helpers > @projectAddr(slug)', () => { let signer: Signer; const lazySigner = () => signer; - before(async () => { - [signer] = await ethers.getSigners(); + beforeAll(async (ctx) => { + [signer] = await ctx.file!.utils.getWallets(); }); it('return the hashed value', async () => { diff --git a/modules/giveth/tsconfig.json b/modules/giveth/tsconfig.json new file mode 100644 index 00000000..9e69f6ee --- /dev/null +++ b/modules/giveth/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "tsconfig-evmcrispr/base.json", + "compilerOptions": { + "lib": ["es2019", "es2017", "dom"] + } +} diff --git a/modules/giveth/tsup.config.ts b/modules/giveth/tsup.config.ts new file mode 100644 index 00000000..9067c354 --- /dev/null +++ b/modules/giveth/tsup.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'tsup'; + +import { getConfig } from '../../scripts/tsup'; + +export default defineConfig(getConfig({ entry: ['src/index.ts'] })); diff --git a/modules/giveth/vite.config.ts b/modules/giveth/vite.config.ts new file mode 100644 index 00000000..5035cebe --- /dev/null +++ b/modules/giveth/vite.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'vitest/config'; + +// eslint-disable-next-line turbo/no-undeclared-env-vars +const WORKERS_LENGTH = parseInt(process.env.WORKERS_LENGTH ?? '8'); + +export default defineConfig({ + test: { + coverage: { + reporter: ['lcov'], + }, + globals: true, + environment: 'node', + setupFiles: ['setup.ts'], + globalSetup: ['global-setup.ts'], + maxThreads: WORKERS_LENGTH, + minThreads: WORKERS_LENGTH, + testTimeout: 60000, + hookTimeout: 60000, + }, +}); diff --git a/modules/tenderly/.eslintrc b/modules/tenderly/.eslintrc new file mode 100644 index 00000000..5b77555d --- /dev/null +++ b/modules/tenderly/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["evmcrispr"] +} diff --git a/modules/tenderly/hardhat.config.ts b/modules/tenderly/hardhat.config.ts new file mode 100644 index 00000000..84dcc969 --- /dev/null +++ b/modules/tenderly/hardhat.config.ts @@ -0,0 +1 @@ +export { config as default } from '@1hive/evmcrispr-test-common/hardhat.config'; diff --git a/modules/tenderly/package.json b/modules/tenderly/package.json new file mode 100644 index 00000000..e39a3b30 --- /dev/null +++ b/modules/tenderly/package.json @@ -0,0 +1,28 @@ +{ + "name": "@1hive/evmcrispr-tenderly-module", + "version": "0.9.0", + "license": "GPL-3.0", + "description": "An EVMcrispr module to interact with Tenderly", + "main": "dist/index.js", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "devDependencies": { + "@1hive/evmcrispr": "workspace:0.9.0", + "eslint-config-evmcrispr": "workspace:*", + "@1hive/evmcrispr-test-common": "workspace:*", + "tsconfig-evmcrispr": "workspace:*" + }, + "peerDependencies": { + "@1hive/evmcrispr": "workspace:^0.9.0", + "ethers": "^5.7.2" + }, + "scripts": { + "dotenv": "dotenv -e ../../.env --", + "preinstall": "npx only-allow pnpm", + "build": "tsup", + "lint": "tsc --noEmit && eslint" + } +} diff --git a/packages/evmcrispr/src/modules/tenderly/Tenderly.ts b/modules/tenderly/src/Tenderly.ts similarity index 68% rename from packages/evmcrispr/src/modules/tenderly/Tenderly.ts rename to modules/tenderly/src/Tenderly.ts index 1dda236d..10f3f15a 100644 --- a/packages/evmcrispr/src/modules/tenderly/Tenderly.ts +++ b/modules/tenderly/src/Tenderly.ts @@ -1,10 +1,12 @@ -import type { BindingsManager } from '../../BindingsManager'; +import type { + BindingsManager, + EVMcrispr, + IPFSResolver, +} from '@1hive/evmcrispr'; +import { Module } from '@1hive/evmcrispr'; -import { Module } from '../../Module'; -import type { IPFSResolver } from '../../IPFSResolver'; import { commands } from './commands'; import { helpers } from './helpers'; -import type { EVMcrispr } from '../../EVMcrispr'; export class Tenderly extends Module { constructor( diff --git a/packages/evmcrispr/src/modules/tenderly/commands/expect.ts b/modules/tenderly/src/commands/expect.ts similarity index 91% rename from packages/evmcrispr/src/modules/tenderly/commands/expect.ts rename to modules/tenderly/src/commands/expect.ts index f11b5d89..c407ad55 100644 --- a/packages/evmcrispr/src/modules/tenderly/commands/expect.ts +++ b/modules/tenderly/src/commands/expect.ts @@ -1,12 +1,13 @@ +import { + BindingsSpace, + ComparisonType, + ErrorException, + checkArgsLength, + isNumberish, +} from '@1hive/evmcrispr'; +import type { ICommand } from '@1hive/evmcrispr'; import { BigNumber } from 'ethers'; -import { ErrorException } from '../../../errors'; - -import type { ICommand } from '../../../types'; -import { BindingsSpace } from '../../../types'; - -import { ComparisonType, checkArgsLength, isNumberish } from '../../../utils'; - import type { Tenderly } from '../Tenderly'; const { USER } = BindingsSpace; diff --git a/packages/evmcrispr/src/modules/tenderly/commands/fork.ts b/modules/tenderly/src/commands/fork.ts similarity index 95% rename from packages/evmcrispr/src/modules/tenderly/commands/fork.ts rename to modules/tenderly/src/commands/fork.ts index d2fc82b8..1557b0c3 100644 --- a/packages/evmcrispr/src/modules/tenderly/commands/fork.ts +++ b/modules/tenderly/src/commands/fork.ts @@ -1,21 +1,16 @@ -import { BigNumber, providers, utils } from 'ethers'; - -import { ErrorException } from '../../../errors'; - -import type { Action, ICommand } from '../../../types'; import { BindingsSpace, - NodeType, - isProviderAction, - isSwitchAction, -} from '../../../types'; - -import { ComparisonType, + ErrorException, + NodeType, checkArgsLength, checkOpts, getOptValue, -} from '../../../utils'; + isProviderAction, + isSwitchAction, +} from '@1hive/evmcrispr'; +import type { Action, ICommand } from '@1hive/evmcrispr'; +import { BigNumber, providers, utils } from 'ethers'; import type { Tenderly } from '../Tenderly'; diff --git a/packages/evmcrispr/src/modules/tenderly/commands/index.ts b/modules/tenderly/src/commands/index.ts similarity index 81% rename from packages/evmcrispr/src/modules/tenderly/commands/index.ts rename to modules/tenderly/src/commands/index.ts index aff1a72d..3d368f44 100644 --- a/packages/evmcrispr/src/modules/tenderly/commands/index.ts +++ b/modules/tenderly/src/commands/index.ts @@ -1,9 +1,9 @@ -import type { Commands } from '../../../types'; -import type { Tenderly } from '../Tenderly'; +import type { Commands } from '@1hive/evmcrispr'; +import type { Tenderly } from '../Tenderly'; +import { expect } from './expect'; import { fork } from './fork'; import { wait } from './wait'; -import { expect } from './expect'; export const commands: Commands = { fork, diff --git a/packages/evmcrispr/src/modules/tenderly/commands/wait.ts b/modules/tenderly/src/commands/wait.ts similarity index 83% rename from packages/evmcrispr/src/modules/tenderly/commands/wait.ts rename to modules/tenderly/src/commands/wait.ts index 3b9339a8..bf5818a0 100644 --- a/packages/evmcrispr/src/modules/tenderly/commands/wait.ts +++ b/modules/tenderly/src/commands/wait.ts @@ -1,11 +1,12 @@ +import { + ComparisonType, + ErrorException, + checkArgsLength, + isNumberish, +} from '@1hive/evmcrispr'; +import type { ICommand } from '@1hive/evmcrispr'; import { BigNumber, utils } from 'ethers'; -import { ErrorException } from '../../../errors'; - -import type { ICommand } from '../../../types'; - -import { ComparisonType, checkArgsLength, isNumberish } from '../../../utils'; - import type { Tenderly } from '../Tenderly'; export const wait: ICommand = { diff --git a/packages/evmcrispr/src/modules/tenderly/helpers/index.ts b/modules/tenderly/src/helpers/index.ts similarity index 63% rename from packages/evmcrispr/src/modules/tenderly/helpers/index.ts rename to modules/tenderly/src/helpers/index.ts index 0ad7f677..15c02ca4 100644 --- a/packages/evmcrispr/src/modules/tenderly/helpers/index.ts +++ b/modules/tenderly/src/helpers/index.ts @@ -1,4 +1,5 @@ -import type { HelperFunctions } from '../../../types'; +import type { HelperFunctions } from '@1hive/evmcrispr'; + import type { Tenderly } from '../Tenderly'; export const helpers: HelperFunctions = {}; diff --git a/packages/evmcrispr/src/modules/tenderly/index.ts b/modules/tenderly/src/index.ts similarity index 99% rename from packages/evmcrispr/src/modules/tenderly/index.ts rename to modules/tenderly/src/index.ts index 1c274113..99466197 100644 --- a/packages/evmcrispr/src/modules/tenderly/index.ts +++ b/modules/tenderly/src/index.ts @@ -2,4 +2,5 @@ import { Tenderly } from './Tenderly'; export { commands } from './commands'; export { helpers } from './helpers'; + export const ModuleConstructor = Tenderly; diff --git a/modules/tenderly/tsconfig.json b/modules/tenderly/tsconfig.json new file mode 100644 index 00000000..9e69f6ee --- /dev/null +++ b/modules/tenderly/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "tsconfig-evmcrispr/base.json", + "compilerOptions": { + "lib": ["es2019", "es2017", "dom"] + } +} diff --git a/modules/tenderly/tsup.config.ts b/modules/tenderly/tsup.config.ts new file mode 100644 index 00000000..9067c354 --- /dev/null +++ b/modules/tenderly/tsup.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'tsup'; + +import { getConfig } from '../../scripts/tsup'; + +export default defineConfig(getConfig({ entry: ['src/index.ts'] })); diff --git a/package.json b/package.json index 223ddcd5..6c5c8a84 100644 --- a/package.json +++ b/package.json @@ -2,23 +2,21 @@ "name": "evmcrispr-monorepo", "private": true, "scripts": { - "build": "preconstruct build", + "build": "turbo run build --filter=!./packages/evmcrispr-terminal", + "clean": "turbo run clean", + "dev": "dotenv -- turbo run dev --filter=./core/evmcrispr", + "lint": "turbo run lint", + "test": "turbo run test --filter=!./packages/evmcrispr-terminal --filter=!./modules/tenderly", + "test:watch": "turbo run test:watch", + "test:coverage": "turbo run test --filter=!./packages/evmcrispr-terminal --filter=!./modules/tenderly -- --coverage", "build:terminal": "pnpm --filter \"./packages/evmcrispr-terminal\" build", "changeset:release": "pnpm build && changeset publish", "changeset:version": "changeset version && pnpm install --lockfile-only", - "dev": "preconstruct dev", - "docs:evmcrispr": "pnpm --filter \"./packages/evmcrispr\" create-docs", - "lint": "eslint --cache", - "lint:fix": "pnpm lint --fix", - "lint:format": "prettier --write", - "lint:evmcrispr:types": "pnpm --filter \"./packages/evmcrispr\" lint:types", + "docs:evmcrispr": "pnpm --filter \"./core/evmcrispr\" create-docs", "size": "bundlewatch --config .config/bundlewatch.config.js", "start": "pnpm dev && pnpm start:terminal", "start:terminal": "pnpm --filter \"./packages/evmcrispr-terminal\" dev", - "test:evmcrispr": "pnpm --filter \"./packages/evmcrispr\" test", - "test:coverage": "pnpm --filter \"./packages/evmcrispr\" test:coverage", - "test:size": "pnpm build && pnpm size", - "postinstall": "pnpm install --ignore-scripts && husky install .config/husky && pnpm dev" + "test:size": "pnpm build && pnpm size" }, "repository": { "type": "git", @@ -30,55 +28,35 @@ "url": "https://github.com/1Hive/EVMcrispr/issues" }, "homepage": "https://github.com/1Hive/EVMcrispr#readme", - "lint-staged": { - "*.{js,ts,tsx}": [ - "pnpm lint:fix" - ], - "*.{json,md,mdx,yml}": [ - "pnpm lint:format" - ] - }, - "preconstruct": { - "packages": [ - "packages/evmcrispr" - ] - }, "devDependencies": { - "@babel/core": "^7.17.10", - "@babel/preset-env": "^7.17.10", - "@babel/preset-react": "^7.16.7", - "@babel/preset-typescript": "^7.16.7", + "@1hive/evmcrispr": "workspace:^0.9.0", + "@1hive/evmcrispr-aragonos-module": "workspace:^0.9.0", + "@1hive/evmcrispr-giveth-module": "workspace:^0.9.0", + "@1hive/evmcrispr-tenderly-module": "workspace:^0.9.0", + "@1hive/evmcrispr-test-common": "workspace:*", "@changesets/cli": "^2.22.0", - "@nomiclabs/hardhat-ethers": "^2.0.6", - "@nomiclabs/hardhat-waffle": "^2.0.3", - "@preconstruct/cli": "^2.1.5", - "@types/chai": "^4.3.1", "@types/eslint": "^8.4.2", - "@types/mocha": "^8.2.3", "@types/node": "^14.18.16", "@types/prettier": "^2.6.0", - "@typescript-eslint/eslint-plugin": "^4.33.0", - "@typescript-eslint/parser": "^4.33.0", + "@vitest/coverage-c8": "^0.27.0", + "@vitest/ui": "^0.27.0", "bundlewatch": "^0.3.3", - "chai": "^4.3.6", - "coveralls": "^3.1.1", - "dotenv": "^16.0.1", + "dotenv-cli": "^6.0.0", "eslint": "^7.32.0", - "eslint-config-prettier": "^8.5.0", - "eslint-import-resolver-typescript": "^2.7.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.5.0", - "ethereum-waffle": "^3.4.4", + "eslint-config-evmcrispr": "workspace:*", + "eslint-plugin-turbo": "^0.0.7", "ethers": "^5.6.6", - "hardhat": "^2.9.5", - "husky": "^7.0.4", - "lint-staged": "^12.4.1", + "execa": "^6.1.0", + "hardhat": "^2.12.5", + "msw": "^0.47.3", "pnpm": "^7.0.1", "prettier": "^2.6.2", "ts-node": "^10.7.0", + "tsconfig-evmcrispr": "workspace:*", + "tsup": "^6.5.0", + "turbo": "^1.6.3", "typedoc": "^0.22.15", - "typescript": "~4.7.4" + "typescript": "~4.7.4", + "vitest": "^0.26.2" } } diff --git a/packages/evmcrispr-terminal/vite.config.ts b/packages/evmcrispr-terminal/vite.config.ts index e24d8d74..70bc5edf 100644 --- a/packages/evmcrispr-terminal/vite.config.ts +++ b/packages/evmcrispr-terminal/vite.config.ts @@ -1,5 +1,5 @@ -import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; +import { defineConfig } from 'vite'; export default defineConfig({ define: { diff --git a/packages/evmcrispr/hardhat.config.ts b/packages/evmcrispr/hardhat.config.ts deleted file mode 100644 index 42bf95c5..00000000 --- a/packages/evmcrispr/hardhat.config.ts +++ /dev/null @@ -1,66 +0,0 @@ -import 'dotenv/config'; -import '@nomiclabs/hardhat-ethers'; -import '@nomiclabs/hardhat-waffle'; - -import type { HardhatUserConfig } from 'hardhat/config'; - -import { server } from './test/fixtures/server'; - -const ARCHIVE_NODE_ENDPOINT = process.env.ARCHIVE_NODE_ENDPOINT; - -if (!ARCHIVE_NODE_ENDPOINT) { - throw new Error('Archive node not provided.'); -} - -const config: HardhatUserConfig = { - defaultNetwork: 'hardhat', - solidity: { - compilers: [ - { - version: '0.4.24', - }, - { - version: '0.7.6', - settings: { - optimizer: { - enabled: true, - runs: 200, - }, - }, - }, - ], - }, - mocha: { - reporterOptions: { - maxDiffSize: 120000, - }, - timeout: 0, - rootHooks: { - beforeAll: () => { - server.listen({ - onUnhandledRequest: (req) => { - if (req.url.origin === 'http://localhost:8545/') { - return 'bypass'; - } - - return 'warn'; - }, - }); - }, - afterAll: () => { - server.close(); - }, - }, - }, - networks: { - hardhat: { - chainId: 100, - forking: { - url: ARCHIVE_NODE_ENDPOINT, - blockNumber: 24_730_000, - }, - }, - }, -}; - -export default config; diff --git a/packages/evmcrispr/helpers/configuration.ts b/packages/evmcrispr/helpers/configuration.ts deleted file mode 100644 index 23679b17..00000000 --- a/packages/evmcrispr/helpers/configuration.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { eEthereumNetwork, eXDaiNetwork } from './types'; - -export const Config = { - Bases: { - [eXDaiNetwork.xdai]: { - AragonID: '0x0b3b17f9705783bb51ae8272f3245d6414229b36', - DAOFactory: '0x4037f97fcc94287257e50bd14c7da9cb4df18250', - ENS: '0xaafca6b0c89521752e559650206d7c925fd0e530', - MiniMeFactory: '0xf7d36d4d46cda364edc85e5561450183469484c5', - }, - [eEthereumNetwork.rinkeby]: { - AragonID: '0x3665e7bFd4D3254AE7796779800f5b603c43C60D', - DAOFactory: '0xad4d106b43b480faa3ef7f98464ffc27fc1faa96', - ENS: '0x98Df287B6C145399Aaa709692c8D308357bC085D', - MiniMeFactory: '0x6ffeb4038f7f077c4d20eaf1706980caec31e2bf', - }, - }, -}; - -export default Config; diff --git a/packages/evmcrispr/helpers/rpc.ts b/packages/evmcrispr/helpers/rpc.ts deleted file mode 100644 index 5faeff1c..00000000 --- a/packages/evmcrispr/helpers/rpc.ts +++ /dev/null @@ -1,88 +0,0 @@ -import type { BigNumber, providers } from 'ethers'; -import hre, { ethers } from 'hardhat'; - -export const duration: any = { - seconds: function (val: string | BigNumber) { - return ethers.BigNumber.from(val); - }, - minutes: function (val: string | BigNumber) { - return ethers.BigNumber.from(val).mul(this.seconds('60')); - }, - hours: function (val: string | BigNumber) { - return ethers.BigNumber.from(val).mul(this.minutes('60')); - }, - days: function (val: string | BigNumber) { - return ethers.BigNumber.from(val).mul(this.hours('24')); - }, - weeks: function (val: string | BigNumber) { - return ethers.BigNumber.from(val).mul(this.days('7')); - }, - years: function (val: string | BigNumber) { - return ethers.BigNumber.from(val).mul(this.days('365')); - }, -}; - -export const setBalance = async ( - account: string, - balance: string, -): Promise => { - await hre.network.provider.send('hardhat_setBalance', [account, balance]); -}; - -export const impersonateAddress = async ( - address: string, - setInitialBalance = true, -): Promise => { - await hre.network.provider.request({ - method: 'hardhat_impersonateAccount', - params: [address], - }); - - const signer = await ethers.provider.getSigner(address); - - /** - * Set balance in case the impersonating account doesn't have - * gas to pay for transactions - */ - if (setInitialBalance) { - await setBalance( - address, - ethers.utils.hexStripZeros( - ethers.constants.WeiPerEther.mul(50).toHexString(), - ), - ); - } - return signer; -}; - -export const takeSnapshot = async (): Promise => { - return (await hre.network.provider.request({ - method: 'evm_snapshot', - params: [], - })) as Promise; -}; - -export const restoreSnapshot = async (id: string): Promise => { - await hre.network.provider.request({ - method: 'evm_revert', - params: [id], - }); -}; - -export const increase = async (duration: string | BigNumber): Promise => { - if (!ethers.BigNumber.isBigNumber(duration)) { - duration = ethers.BigNumber.from(duration); - } - - if (duration.isNegative()) - throw Error(`Cannot increase time by a negative amount (${duration})`); - - await hre.network.provider.request({ - method: 'evm_increaseTime', - params: [duration.toNumber()], - }); - - await hre.network.provider.request({ - method: 'evm_mine', - }); -}; diff --git a/packages/evmcrispr/helpers/types.ts b/packages/evmcrispr/helpers/types.ts deleted file mode 100644 index 20b9a165..00000000 --- a/packages/evmcrispr/helpers/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -export type eNetwork = eEthereumNetwork | eXDaiNetwork; - -export enum eEthereumNetwork { - rinkeby = 'rinkeby', - main = 'main', - coverage = 'coverage', - hardhat = 'hardhat', -} - -export enum eXDaiNetwork { - xdai = 'xdai', -} - -export enum EthereumNetworkNames { - rinkeby = 'rinkeby', - main = 'main', - xdai = 'xdai', -} diff --git a/packages/evmcrispr/scripts/examples/dao-vote.ts b/packages/evmcrispr/scripts/examples/dao-vote.ts deleted file mode 100644 index 9630f17e..00000000 --- a/packages/evmcrispr/scripts/examples/dao-vote.ts +++ /dev/null @@ -1,87 +0,0 @@ -// TODO: update to cas11 evmcrispr -// import type { providers } from 'ethers'; -// import { utils } from 'ethers'; - -// import { EVMcrispr, evmcl } from '../../'; -// import { impersonateAddress, increase } from '../../helpers/rpc'; - -// const CHAIN_ID = 137; - -// // Bee accounts -// const BEE_ADDRESS_0 = '0x625236038836cecc532664915bd0399647e7826b'; -// const BEE_ADDRESS_1 = '0xdf8f53b9f83e611e1154402992c6f6cb7daf246c'; -// const BEE_ADDRESS_2 = '0x60a9372862bd752cd02d9ae482f94cd2fe92a0bf'; - -// const RECIPIENT_ADDRESS = '0x5b0F8D8f47E3fDF7eE1c337AbCA19dBba98524e6'; - -// const PAYMENT_REFERENCE = 'migrate 1hive funds'; - -// const main = async () => { -// const beeSigner0 = await impersonateAddress(BEE_ADDRESS_0); - -// beeSigner0.getChainId = async () => CHAIN_ID; - -// const evmcrispr = await EVMcrispr.create(beeSigner0); - -// const [txReceipt] = await evmcl` -// connect 1hivellc token-manager voting ( -// set $recipient ${RECIPIENT_ADDRESS} -// set $reference "${PAYMENT_REFERENCE}" -// exec finance newImmediatePayment @token(DAI) $recipient @token.balance(DAI,agent:0) $reference -// exec finance newImmediatePayment @token(USDC) $recipient @token.balance(USDC,agent:0) $reference -// exec finance newImmediatePayment @token(WETH) $recipient @token.balance(WETH,agent:0) $reference -// ) -// `.forward(beeSigner0); - -// await processVote(txReceipt, evmcrispr); -// }; - -// const processVote = async ( -// txReceipt: providers.TransactionReceipt, -// evmcrispr: EVMcrispr, -// ) => { -// const beeSigner1 = await impersonateAddress(BEE_ADDRESS_1); -// const beeSigner2 = await impersonateAddress(BEE_ADDRESS_2); - -// const hashedStartVoteEvent = utils.id('StartVote(uint256,address,string)'); -// const [startVoteLog] = txReceipt.logs.filter( -// (log) => log.topics[0] === hashedStartVoteEvent, -// ); -// const voteId = startVoteLog.topics[1]; - -// const votingApp = (await evmcrispr.aragon.dao('1hivellc')).app('voting:0')!; -// const voteTime = await votingApp.voteTime(); - -// await votingApp.vote(voteId, true, true); -// await votingApp.connect(beeSigner1).vote(voteId, true, true); -// await votingApp.connect(beeSigner2).vote(voteId, true, true); - -// await increase(voteTime); - -// console.log('BALANCES BEFORE VOTE'); -// await checkAccountBalances(RECIPIENT_ADDRESS, evmcrispr); -// await (await votingApp.executeVote(voteId)).wait(); - -// console.log('BALANCES AFTER VOTE'); -// await checkAccountBalances(RECIPIENT_ADDRESS, evmcrispr); -// }; - -// const checkAccountBalances = async (account: string, evm: EVMcrispr) => { -// const tokenNames = ['DAI', 'USDC', 'WETH']; - -// for (const token of tokenNames) { -// const balance = await evm.helpers['token.balance'](token, account)(); -// console.log('----------------------------------'); -// console.log(`${token}: ${Number(balance) / 1e18} (${balance.toString()})`); -// console.log('----------------------------------'); -// } -// }; - -// main() -// .then(() => process.exit(0)) -// .catch((err) => { -// console.error(err); -// process.exit(1); -// }); - -export {}; diff --git a/packages/evmcrispr/scripts/examples/wrap.ts b/packages/evmcrispr/scripts/examples/wrap.ts deleted file mode 100644 index 4243f753..00000000 --- a/packages/evmcrispr/scripts/examples/wrap.ts +++ /dev/null @@ -1,40 +0,0 @@ -// TODO: update to cas11 evmcrispr -// import { Contract } from 'ethers'; - -// import { EVMcrispr } from '../../src'; -// import { impersonateAddress } from '../../helpers/rpc'; - -// const CHAIN_ID = 100; - -// const DAO = '0x2050eabe84409e480ad1062001fdb6dfbc836192'; - -// const ADDRESS = '0x4355a2cdec902C372F404007114bbCf2C65A3eb0'; - -// const main = async () => { -// const signer = await impersonateAddress(ADDRESS); - -// signer.getChainId = async () => CHAIN_ID; - -// const evmcrispr = await EVMcrispr.create(signer); -// const dao = await evmcrispr.aragon.dao(DAO); - -// const tokenManagerApp = dao.app('wrappable-hooked-token-manager.open:0')!; -// const tokenManager = new Contract( -// tokenManagerApp.address, -// tokenManagerApp.abiInterface, -// signer, -// ); - -// const txRecipt = await tokenManager.wrap('50000000000000000000'); - -// console.log(JSON.stringify(txRecipt)); -// }; - -// main() -// .then(() => process.exit(0)) -// .catch((err) => { -// console.error(err); -// process.exit(1); -// }); - -export {}; diff --git a/packages/evmcrispr/src/parsers/comment.ts b/packages/evmcrispr/src/parsers/comment.ts deleted file mode 100644 index 3acecf7d..00000000 --- a/packages/evmcrispr/src/parsers/comment.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { - char, - choice, - endOfInput, - everythingUntil, - sequenceOf, -} from 'arcsecond'; - -import { endLine, optionalWhitespace } from './utils'; - -const commentInitializerChar = char('#'); - -export const commentParser = sequenceOf([ - optionalWhitespace, - commentInitializerChar, - everythingUntil(choice([endOfInput, endLine])), -]); diff --git a/packages/evmcrispr/test/cas11ast.test.ts b/packages/evmcrispr/test/cas11ast.test.ts deleted file mode 100644 index 970cc31e..00000000 --- a/packages/evmcrispr/test/cas11ast.test.ts +++ /dev/null @@ -1,826 +0,0 @@ -import { expect } from 'chai'; - -import type { Cas11AST } from '../src/Cas11AST'; -import { parseScript } from '../src/parsers/script'; - -import { DAO, DAO2, DAO3 } from './fixtures'; - -describe('Cas11AST', () => { - const script = ` - load aragonos as ar - load giveth as giv - - ar:connect ${DAO.kernel} ( - set $dao1Variable agent - connect ${DAO2.kernel} ( - set $dao2Variable vault - install vault:new - ) - ) - - ar:connect ${DAO3} ( - revoke voting token-manager MINT_ROLE - ) - - set $globalScopeVariable "test" - `; - let ast: Cas11AST; - - beforeEach(() => { - ast = parseScript(script).ast; - }); - - describe('when fetching a command at a specific line', () => { - it('should fetch it correctly', () => { - expect(ast.getCommandAtLine(9)).to.eql({ - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'vault:new', - loc: { start: { line: 9, col: 16 }, end: { line: 9, col: 25 } }, - }, - ], - opts: [], - loc: { start: { line: 9, col: 8 }, end: { line: 9, col: 25 } }, - }); - }); - - it('should return nothing when given a line higher than the maximum script line', () => { - expect(ast.getCommandAtLine(30)).to.be.undefined; - }); - - it('should return nothing when given an empty line', () => { - expect(ast.getCommandAtLine(4)).to.be.undefined; - }); - - it('should return nothing when given a line without a command', () => { - expect(ast.getCommandAtLine(10)).to.be.undefined; - }); - }); - - describe('when fetching commands until a specific line', () => { - it('should fetch them correctly', () => { - expect(ast.getCommandsUntilLine(12)).to.eql([ - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { start: { line: 2, col: 9 }, end: { line: 2, col: 17 } }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { start: { line: 2, col: 21 }, end: { line: 2, col: 23 } }, - }, - loc: { start: { line: 2, col: 9 }, end: { line: 2, col: 23 } }, - }, - ], - opts: [], - loc: { start: { line: 2, col: 4 }, end: { line: 2, col: 23 } }, - }, - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'giveth', - loc: { start: { line: 3, col: 9 }, end: { line: 3, col: 15 } }, - }, - right: { - type: 'ProbableIdentifier', - value: 'giv', - loc: { start: { line: 3, col: 19 }, end: { line: 3, col: 22 } }, - }, - loc: { start: { line: 3, col: 9 }, end: { line: 3, col: 22 } }, - }, - ], - opts: [], - loc: { start: { line: 3, col: 4 }, end: { line: 3, col: 22 } }, - }, - { - type: 'CommandExpression', - module: 'ar', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8', - loc: { start: { line: 5, col: 15 }, end: { line: 5, col: 57 } }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao1Variable', - loc: { - start: { line: 6, col: 10 }, - end: { line: 6, col: 23 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { - start: { line: 6, col: 24 }, - end: { line: 6, col: 29 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 6, col: 6 }, - end: { line: 6, col: 29 }, - }, - }, - { - type: 'CommandExpression', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x8ccbeab14b5ac4a431fffc39f4bec4089020a155', - loc: { - start: { line: 7, col: 14 }, - end: { line: 7, col: 56 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao2Variable', - loc: { - start: { line: 8, col: 12 }, - end: { line: 8, col: 25 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'vault', - loc: { - start: { line: 8, col: 26 }, - end: { line: 8, col: 31 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 8, col: 8 }, - end: { line: 8, col: 31 }, - }, - }, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'vault:new', - loc: { - start: { line: 9, col: 16 }, - end: { line: 9, col: 25 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 9, col: 8 }, - end: { line: 9, col: 25 }, - }, - }, - ], - loc: { - start: { line: 7, col: 57 }, - end: { line: 10, col: 7 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 7, col: 6 }, - end: { line: 10, col: 7 }, - }, - }, - ], - loc: { start: { line: 5, col: 58 }, end: { line: 11, col: 5 } }, - }, - ], - opts: [], - loc: { start: { line: 5, col: 4 }, end: { line: 11, col: 5 } }, - }, - ]); - }); - describe('when given a set of global scope command names', () => { - it('should fetch them correctly', () => { - expect(ast.getCommandsUntilLine(9, ['load', 'set'])).to.eql([ - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { - start: { line: 2, col: 9 }, - end: { line: 2, col: 17 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { - start: { line: 2, col: 21 }, - end: { line: 2, col: 23 }, - }, - }, - loc: { start: { line: 2, col: 9 }, end: { line: 2, col: 23 } }, - }, - ], - opts: [], - loc: { start: { line: 2, col: 4 }, end: { line: 2, col: 23 } }, - }, - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'giveth', - loc: { - start: { line: 3, col: 9 }, - end: { line: 3, col: 15 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'giv', - loc: { - start: { line: 3, col: 19 }, - end: { line: 3, col: 22 }, - }, - }, - loc: { start: { line: 3, col: 9 }, end: { line: 3, col: 22 } }, - }, - ], - opts: [], - loc: { start: { line: 3, col: 4 }, end: { line: 3, col: 22 } }, - }, - { - type: 'CommandExpression', - module: 'ar', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8', - loc: { start: { line: 5, col: 15 }, end: { line: 5, col: 57 } }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao1Variable', - loc: { - start: { line: 6, col: 10 }, - end: { line: 6, col: 23 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { - start: { line: 6, col: 24 }, - end: { line: 6, col: 29 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 6, col: 6 }, - end: { line: 6, col: 29 }, - }, - }, - { - type: 'CommandExpression', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x8ccbeab14b5ac4a431fffc39f4bec4089020a155', - loc: { - start: { line: 7, col: 14 }, - end: { line: 7, col: 56 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao2Variable', - loc: { - start: { line: 8, col: 12 }, - end: { line: 8, col: 25 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'vault', - loc: { - start: { line: 8, col: 26 }, - end: { line: 8, col: 31 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 8, col: 8 }, - end: { line: 8, col: 31 }, - }, - }, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'vault:new', - loc: { - start: { line: 9, col: 16 }, - end: { line: 9, col: 25 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 9, col: 8 }, - end: { line: 9, col: 25 }, - }, - }, - ], - loc: { - start: { line: 7, col: 57 }, - end: { line: 10, col: 7 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 7, col: 6 }, - end: { line: 10, col: 7 }, - }, - }, - ], - loc: { start: { line: 5, col: 58 }, end: { line: 11, col: 5 } }, - }, - ], - opts: [], - loc: { start: { line: 5, col: 4 }, end: { line: 11, col: 5 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao1Variable', - loc: { start: { line: 6, col: 10 }, end: { line: 6, col: 23 } }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { start: { line: 6, col: 24 }, end: { line: 6, col: 29 } }, - }, - ], - opts: [], - loc: { start: { line: 6, col: 6 }, end: { line: 6, col: 29 } }, - }, - { - type: 'CommandExpression', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x8ccbeab14b5ac4a431fffc39f4bec4089020a155', - loc: { start: { line: 7, col: 14 }, end: { line: 7, col: 56 } }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao2Variable', - loc: { - start: { line: 8, col: 12 }, - end: { line: 8, col: 25 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'vault', - loc: { - start: { line: 8, col: 26 }, - end: { line: 8, col: 31 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 8, col: 8 }, - end: { line: 8, col: 31 }, - }, - }, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'vault:new', - loc: { - start: { line: 9, col: 16 }, - end: { line: 9, col: 25 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 9, col: 8 }, - end: { line: 9, col: 25 }, - }, - }, - ], - loc: { start: { line: 7, col: 57 }, end: { line: 10, col: 7 } }, - }, - ], - opts: [], - loc: { start: { line: 7, col: 6 }, end: { line: 10, col: 7 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao2Variable', - loc: { start: { line: 8, col: 12 }, end: { line: 8, col: 25 } }, - }, - { - type: 'ProbableIdentifier', - value: 'vault', - loc: { start: { line: 8, col: 26 }, end: { line: 8, col: 31 } }, - }, - ], - opts: [], - loc: { start: { line: 8, col: 8 }, end: { line: 8, col: 31 } }, - }, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'vault:new', - loc: { start: { line: 9, col: 16 }, end: { line: 9, col: 25 } }, - }, - ], - opts: [], - loc: { start: { line: 9, col: 8 }, end: { line: 9, col: 25 } }, - }, - ]); - }); - - it('should fetch them correctly when giving a line higher than the maximum script line', () => { - expect(ast.getCommandsUntilLine(200, ['load', 'set'])).to.eql([ - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { - start: { line: 2, col: 9 }, - end: { line: 2, col: 17 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { - start: { line: 2, col: 21 }, - end: { line: 2, col: 23 }, - }, - }, - loc: { start: { line: 2, col: 9 }, end: { line: 2, col: 23 } }, - }, - ], - opts: [], - loc: { start: { line: 2, col: 4 }, end: { line: 2, col: 23 } }, - }, - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'giveth', - loc: { - start: { line: 3, col: 9 }, - end: { line: 3, col: 15 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'giv', - loc: { - start: { line: 3, col: 19 }, - end: { line: 3, col: 22 }, - }, - }, - loc: { start: { line: 3, col: 9 }, end: { line: 3, col: 22 } }, - }, - ], - opts: [], - loc: { start: { line: 3, col: 4 }, end: { line: 3, col: 22 } }, - }, - { - type: 'CommandExpression', - module: 'ar', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x1fc7e8d8e4bbbef77a4d035aec189373b52125a8', - loc: { start: { line: 5, col: 15 }, end: { line: 5, col: 57 } }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao1Variable', - loc: { - start: { line: 6, col: 10 }, - end: { line: 6, col: 23 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { - start: { line: 6, col: 24 }, - end: { line: 6, col: 29 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 6, col: 6 }, - end: { line: 6, col: 29 }, - }, - }, - { - type: 'CommandExpression', - name: 'connect', - args: [ - { - type: 'AddressLiteral', - value: '0x8ccbeab14b5ac4a431fffc39f4bec4089020a155', - loc: { - start: { line: 7, col: 14 }, - end: { line: 7, col: 56 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao2Variable', - loc: { - start: { line: 8, col: 12 }, - end: { line: 8, col: 25 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'vault', - loc: { - start: { line: 8, col: 26 }, - end: { line: 8, col: 31 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 8, col: 8 }, - end: { line: 8, col: 31 }, - }, - }, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'vault:new', - loc: { - start: { line: 9, col: 16 }, - end: { line: 9, col: 25 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 9, col: 8 }, - end: { line: 9, col: 25 }, - }, - }, - ], - loc: { - start: { line: 7, col: 57 }, - end: { line: 10, col: 7 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 7, col: 6 }, - end: { line: 10, col: 7 }, - }, - }, - ], - loc: { start: { line: 5, col: 58 }, end: { line: 11, col: 5 } }, - }, - ], - opts: [], - loc: { start: { line: 5, col: 4 }, end: { line: 11, col: 5 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao1Variable', - loc: { start: { line: 6, col: 10 }, end: { line: 6, col: 23 } }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { start: { line: 6, col: 24 }, end: { line: 6, col: 29 } }, - }, - ], - opts: [], - loc: { start: { line: 6, col: 6 }, end: { line: 6, col: 29 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$dao2Variable', - loc: { start: { line: 8, col: 12 }, end: { line: 8, col: 25 } }, - }, - { - type: 'ProbableIdentifier', - value: 'vault', - loc: { start: { line: 8, col: 26 }, end: { line: 8, col: 31 } }, - }, - ], - opts: [], - loc: { start: { line: 8, col: 8 }, end: { line: 8, col: 31 } }, - }, - { - type: 'CommandExpression', - module: 'ar', - name: 'connect', - args: [ - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'revoke', - args: [ - { - type: 'ProbableIdentifier', - value: 'voting', - loc: { - start: { line: 14, col: 13 }, - end: { line: 14, col: 19 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'token-manager', - loc: { - start: { line: 14, col: 20 }, - end: { line: 14, col: 33 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'MINT_ROLE', - loc: { - start: { line: 14, col: 34 }, - end: { line: 14, col: 43 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 14, col: 6 }, - end: { line: 14, col: 43 }, - }, - }, - ], - loc: { - start: { line: 13, col: 31 }, - end: { line: 15, col: 5 }, - }, - }, - ], - opts: [], - loc: { start: { line: 13, col: 4 }, end: { line: 15, col: 5 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$globalScopeVariable', - loc: { - start: { line: 17, col: 8 }, - end: { line: 17, col: 28 }, - }, - }, - { - type: 'StringLiteral', - value: 'test', - loc: { - start: { line: 17, col: 29 }, - end: { line: 17, col: 35 }, - }, - }, - ], - opts: [], - loc: { start: { line: 17, col: 4 }, end: { line: 17, col: 35 } }, - }, - ]); - }); - }); - }); -}); diff --git a/packages/evmcrispr/test/interpreter/arithmetic.test.ts b/packages/evmcrispr/test/interpreter/arithmetic.test.ts deleted file mode 100644 index f103ceae..00000000 --- a/packages/evmcrispr/test/interpreter/arithmetic.test.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { BigNumber } from 'ethers'; -import { ethers } from 'hardhat'; - -import { ExpressionError } from '../../src/errors'; - -import { toDecimals } from '../../src/utils'; - -import { createInterpreter, preparingExpression } from '../test-helpers/cas11'; -import { expectThrowAsync } from '../test-helpers/expects'; - -describe('Interpreter - arithmetics', () => { - const name = 'ArithmeticExpressionError'; - let signer: Signer; - - before(async () => { - [signer] = await ethers.getSigners(); - }); - - it('should return the correct result of an arithmetic operation', async () => { - const [interpret] = await preparingExpression( - '(120 - 5e22 * 2 ^ 2 + 500e33)', - signer, - ); - const res = await interpret(); - - expect(res).to.eql( - BigNumber.from(120).sub(toDecimals(20, 22)).add(toDecimals(500, 33)), - ); - }); - - it('should return the correct result of an arithmetic operation containing priority parenthesis', async () => { - const [interpret] = await preparingExpression( - '((121e18 / 4) * (9 - 2) ^ 2 - 55e18)', - signer, - ); - const res = await interpret(); - - expect(res).to.eql(toDecimals('1427.25', 18)); - }); - - it('should fail when one of the operands is not a number', async () => { - const invalidValue = 'a string'; - const leftOperandInterpreter = createInterpreter( - ` - set $var1 "${invalidValue}" - - set $res ($var1 * 2) - `, - signer, - ); - const leftOperandNode = leftOperandInterpreter.ast.body[1].args[1]; - const leftOperandErr = new ExpressionError( - leftOperandNode, - `invalid left operand. Expected a number but got "${invalidValue}"`, - { name }, - ); - - const rightOperandInterpreter = createInterpreter( - ` - set $var1 "${invalidValue}" - - set $res (2 * $var1) - `, - signer, - ); - const rightOperandNode = rightOperandInterpreter.ast.body[1].args[1]; - const rightOperandErr = new ExpressionError( - rightOperandNode, - `invalid right operand. Expected a number but got "${invalidValue}"`, - { name }, - ); - - await expectThrowAsync( - () => leftOperandInterpreter.interpret(), - leftOperandErr, - 'invalid left operand error', - ); - - await expectThrowAsync( - () => rightOperandInterpreter.interpret(), - rightOperandErr, - 'invalid right operand error', - ); - }); - - it('should fail when trying to perform a division by zero', async () => { - const [interpret, n] = await preparingExpression('(4 / 0)', signer); - const err = new ExpressionError( - n, - `invalid operation. Can't divide by zero`, - { name }, - ); - - await expectThrowAsync(() => interpret(), err); - }); -}); diff --git a/packages/evmcrispr/test/interpreter/primary.test.ts b/packages/evmcrispr/test/interpreter/primary.test.ts deleted file mode 100644 index 46c2bfe6..00000000 --- a/packages/evmcrispr/test/interpreter/primary.test.ts +++ /dev/null @@ -1,178 +0,0 @@ -import type { Signer } from 'ethers'; -import { constants } from 'ethers'; -import { ethers } from 'hardhat'; - -import type { NumericLiteralNode } from '../../src/types'; -import { NodeType } from '../../src/types'; -import { timeUnits, toDecimals } from '../../src/utils'; -import type { InterpreterCase } from '../test-helpers/cas11'; -import { runInterpreterCases } from '../test-helpers/cas11'; - -describe('Interpreter - primaries', async () => { - let signer: Signer; - const getSigner = async () => signer; - - before(async () => { - [signer] = await ethers.getSigners(); - }); - describe('when interpreting a literal node', () => { - it('should interpret address node correctly', async () => { - const c: InterpreterCase = [ - { - type: NodeType.AddressLiteral, - value: '0x83E57888cd55C3ea1cfbf0114C963564d81e318d', - }, - '0x83E57888cd55C3ea1cfbf0114C963564d81e318d', - ]; - - await runInterpreterCases(c, getSigner); - }); - - it('should interpret a boolean node correctly', async () => { - const cases: InterpreterCase[] = [ - [ - { - type: NodeType.BoolLiteral, - value: false, - }, - false, - ], - [{ type: NodeType.BoolLiteral, value: true }, true], - ]; - - await runInterpreterCases(cases, getSigner); - }); - - it('should intepret a bytes node correctly', async () => { - const cases: InterpreterCase[] = [ - [ - { - type: NodeType.BytesLiteral, - value: - '0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000', - }, - '0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000', - ], - ]; - - await runInterpreterCases(cases, getSigner); - }); - - it('should intepret a numeric node correctly', async () => { - const node = ( - value: number, - power?: number, - timeUnit?: string, - ): NumericLiteralNode => { - const n: NumericLiteralNode = { - type: NodeType.NumberLiteral, - value: String(value), - }; - if (power) n.power = power; - if (timeUnit) n.timeUnit = timeUnit; - - return n; - }; - - const cases: InterpreterCase[] = [ - [node(15), toDecimals(15, 0), 'Invalid integer number match'], - [ - node(1500, 18), - toDecimals(1500, 18), - 'Invalid integer number raised to a power match', - ], - [ - node(7854.2345), - toDecimals(7854.2345, 0), - 'Invalid decimal number raised to a power match', - ], - [ - node(0.000123, 14), - toDecimals(0.000123, 14), - 'Invalid zero decimal number raised to a power match ', - ], - [ - node(1200.12, 18, 'mo'), - toDecimals(1200.12, 18).mul(timeUnits['mo']), - 'Invalid decimal number raised to a power followed by time unit match', - ], - [ - node(30, undefined, 's'), - toDecimals(30, 0).mul(timeUnits['s']), - 'Invalid number followed by second time unit match', - ], - [ - node(5, undefined, 'm'), - toDecimals(5, 0).mul(timeUnits['m']), - 'Invalid number followed by minute time unit match', - ], - [ - node(35, undefined, 'h'), - toDecimals(35, 0).mul(timeUnits['h']), - 'Invalid number followed by hour time unit match', - ], - [ - node(463, undefined, 'd'), - toDecimals(463, 0).mul(timeUnits['d']), - 'Invalid number followed by day time unit match', - ], - [ - node(96, undefined, 'w'), - toDecimals(96, 0).mul(timeUnits['w']), - 'Invalid number followed by week time unit match', - ], - [ - node(9, undefined, 'mo'), - toDecimals(9, 0).mul(timeUnits['mo']), - 'Invalid number followed by month time unit match', - ], - [ - node(4.67, undefined, 'y'), - toDecimals(4.67, 0).mul(timeUnits['y']), - 'Invalid number followed by year time unit match', - ], - ]; - - await runInterpreterCases(cases, getSigner); - }); - - it('should intepret a string node correctly', async () => { - const cases: InterpreterCase[] = [ - [ - { - type: NodeType.StringLiteral, - value: 'This is a string node', - }, - 'This is a string node', - ], - ]; - - await runInterpreterCases(cases, getSigner); - }); - }); - - describe('when intepreting an identifier node', () => { - it('should intepret a probable identifier correctly', async () => { - const cases: InterpreterCase[] = [ - [ - { - type: NodeType.ProbableIdentifier, - value: 'token-manager.open#3', - }, - 'token-manager.open#3', - ], - [ - { - type: NodeType.ProbableIdentifier, - value: 'ETH', - }, - constants.AddressZero, - ], - ]; - - await runInterpreterCases(cases, getSigner); - }); - it('should interpret a variable correctly'); - it('should fail when intepreting a non-existent variable'); - }); -}); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/act.test.ts b/packages/evmcrispr/test/modules/aragonos/commands/act.test.ts deleted file mode 100644 index 9629dca5..00000000 --- a/packages/evmcrispr/test/modules/aragonos/commands/act.test.ts +++ /dev/null @@ -1,197 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import { CommandError } from '../../../../src/errors'; -import { DAO } from '../../../fixtures'; -import { createTestScriptEncodedAction } from '../../../test-helpers/actions'; -import { - createAragonScriptInterpreter as _createAragonScriptInterpreter, - findAragonOSCommandNode, -} from '../../../test-helpers/aragonos'; -import { itChecksNonDefinedIdentifier } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; - -describe('AragonOS > commands > act [...params]', () => { - let signer: Signer; - - let createAragonScriptInterpreter: ReturnType< - typeof _createAragonScriptInterpreter - >; - - before(async () => { - [signer] = await ethers.getSigners(); - - createAragonScriptInterpreter = _createAragonScriptInterpreter( - signer, - DAO.kernel, - ); - }); - - it('should return a correct act action', async () => { - const interpreter = createAragonScriptInterpreter([ - `act agent:1 agent:2 "deposit(uint256,uint256[][])" 1 [[2,3],[4,5]]`, - ]); - - const actActions = await interpreter.interpret(); - - const fnABI = new utils.Interface([ - 'function deposit(uint256,uint256[][])', - ]); - - const expectedActActions = [ - createTestScriptEncodedAction( - [ - { - to: DAO['agent:2'], - data: fnABI.encodeFunctionData('deposit', [ - 1, - [ - [2, 3], - [4, 5], - ], - ]), - }, - ], - ['agent:1'], - DAO, - ), - ]; - - expect(actActions).to.be.eql(expectedActActions); - }); - - it('should return a correct act action when having to implicitly convert any string parameter to bytes when expecting one', async () => { - const targetAddress = '0xd0e81E3EE863318D0121501ff48C6C3e3Fd6cbc7'; - const params = [ - ['0x02732126661d25c59fd1cc2308ac883b422597fc3103f285f382c95d51cbe667'], - 'QmTik4Zd7T5ALWv5tdMG8m2cLiHmqtTor5QmnCSGLUjLU2', - ]; - const interpreter = createAragonScriptInterpreter([ - `act agent ${targetAddress} addBatches(bytes32[],bytes) [${params[0].toString()}] ${ - params[1] - }`, - ]); - const fnABI = new utils.Interface(['function addBatches(bytes32[],bytes)']); - - const actActions = await interpreter.interpret(); - - const expectedActActions = [ - createTestScriptEncodedAction( - [ - { - to: targetAddress, - data: fnABI.encodeFunctionData('addBatches', [ - params[0], - utils.hexlify( - utils.toUtf8Bytes( - 'QmTik4Zd7T5ALWv5tdMG8m2cLiHmqtTor5QmnCSGLUjLU2', - ), - ), - ]), - }, - ], - ['agent'], - DAO, - ), - ]; - expect(actActions).to.be.eql(expectedActActions); - }); - - itChecksNonDefinedIdentifier( - 'should fail when receiving a non-defined agent identifier', - (nonDefinedIdentifier) => - createAragonScriptInterpreter([ - `act ${nonDefinedIdentifier} vault "deposit()"`, - ]), - 'act', - 0, - true, - ); - - itChecksNonDefinedIdentifier( - 'should fail when receiving a non-defined target identifier', - (nonDefinedIdentifier) => - createAragonScriptInterpreter([ - `act agent ${nonDefinedIdentifier} "deposit()"`, - ]), - 'act', - 1, - true, - ); - - it('should fail when receiving an invalid agent address', async () => { - const invalidAgentAddress = 'false'; - const interpreter = createAragonScriptInterpreter([ - `act ${invalidAgentAddress} agent "deposit()"`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'act')!; - const error = new CommandError( - c, - `expected a valid agent address, but got ${invalidAgentAddress}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when receiving an invalid target address', async () => { - const invalidTargetAddress = '2.22e18'; - const interpreter = createAragonScriptInterpreter([ - `act agent ${invalidTargetAddress} "deposit()"`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'act')!; - const error = new CommandError( - c, - `expected a valid target address, but got 2220000000000000000`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when receiving an invalid signature', async () => { - const cases = [ - ['mint', 'no parenthesis'], - ['mint(', 'left parenthesis'], - ['mint)', 'right parenthesis'], - ['mint(uint,)', 'right comma'], - ['mint(,uint)', 'left comma'], - ]; - - await Promise.all( - cases.map(([invalidSignature, msg]) => { - const interpreter = createAragonScriptInterpreter([ - `act agent agent:2 "${invalidSignature}"`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'act')!; - const error = new CommandError( - c, - `expected a valid signature, but got ${invalidSignature}`, - ); - - return expectThrowAsync( - () => interpreter.interpret(), - error, - `${msg} signature error mismatch`, - ); - }), - ); - }); - - it('should fail when receiving invalid function params', async () => { - const paramsErrors = [ - '-param 0 of type address: invalid address. Got 1000000000000000000', - '-param 1 of type uint256: invalid BigNumber value. Got none', - ]; - const interpreter = createAragonScriptInterpreter([ - `act agent agent:2 "deposit(address,uint256)" 1e18`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'act')!; - const error = new CommandError( - c, - `error when encoding deposit call:\n${paramsErrors.join('\n')}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); -}); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/connect.test.ts b/packages/evmcrispr/test/modules/aragonos/commands/connect.test.ts deleted file mode 100644 index 69c0c74d..00000000 --- a/packages/evmcrispr/test/modules/aragonos/commands/connect.test.ts +++ /dev/null @@ -1,314 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { constants, utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; - -import { MINIME_TOKEN_FACTORIES } from '../../../../src/modules/aragonos/utils'; -import { - ComparisonType, - buildArgsLengthErrorMsg, - buildNonceForAddress, - calculateNewProxyAddress, - encodeCalldata, - toDecimals, -} from '../../../../src/utils'; -import { CommandError } from '../../../../src/errors'; - -import { - APP, - COMPLETE_FORWARDER_PATH, - DAO, - FEE_AMOUNT, - FEE_FORWARDER, - FEE_TOKEN_ADDRESS, -} from '../../../fixtures'; -import { DAO as DAO2 } from '../../../fixtures/mock-dao-2'; -import { DAO as DAO3 } from '../../../fixtures/mock-dao-3'; -import { - createTestAction, - createTestPreTxAction, - createTestScriptEncodedAction, -} from '../../../test-helpers/actions'; -import { - createAragonScriptInterpreter as createAragonScriptInterpreter_, - findAragonOSCommandNode, -} from '../../../test-helpers/aragonos'; - -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; - -const DAOs = [DAO, DAO2, DAO3]; - -describe('AragonOS > commands > connect [...appsPath] [--context ]', () => { - let signer: Signer; - - let createAragonScriptInterpreter: ReturnType< - typeof createAragonScriptInterpreter_ - >; - - before(async () => { - [signer] = await ethers.getSigners(); - - createAragonScriptInterpreter = createAragonScriptInterpreter_( - signer, - DAO.kernel, - ); - }); - - it('should return the correct actions when defining a complete forwarding path compose of a fee, normal and context forwarder', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO3.kernel} ${COMPLETE_FORWARDER_PATH.join(' ')} ( - grant @me agent TRANSFER_ROLE - grant dandelion-voting.1hive token-manager ISSUE_ROLE dandelion-voting.1hive - revoke dandelion-voting.1hive tollgate.1hive CHANGE_AMOUNT_ROLE true - new-token "Other Token" OT token-manager:new - install token-manager:new token:OT true 0 - act agent agent:1 "transfer(address,address,uint256)" @token(DAI) @me 10.50e18 - ) - `, - signer, - ); - - const forwardingAction = await interpreter.interpret(); - - const me = await signer.getAddress(); - const chainId = await signer.getChainId(); - const { appId, codeAddress, initializeSignature } = APP; - const tokenFactoryAddress = MINIME_TOKEN_FACTORIES.get(chainId)!; - const newTokenAddress = calculateNewProxyAddress( - tokenFactoryAddress, - await buildNonceForAddress(tokenFactoryAddress, 0, signer.provider!), - ); - - const expectedForwardingActions = [ - createTestPreTxAction('approve', FEE_TOKEN_ADDRESS, [ - DAO3[FEE_FORWARDER], - FEE_AMOUNT, - ]), - createTestScriptEncodedAction( - [ - createTestAction('grantPermission', DAO3.acl, [ - me, - DAO3.agent, - utils.id('TRANSFER_ROLE'), - ]), - createTestAction('grantPermission', DAO3.acl, [ - DAO3['dandelion-voting.1hive'], - DAO3['token-manager'], - utils.id('ISSUE_ROLE'), - ]), - createTestAction('revokePermission', DAO3.acl, [ - DAO3['dandelion-voting.1hive'], - DAO3['tollgate.1hive'], - utils.id('CHANGE_AMOUNT_ROLE'), - ]), - createTestAction('removePermissionManager', DAO3.acl, [ - DAO3['tollgate.1hive'], - utils.id('CHANGE_AMOUNT_ROLE'), - ]), - createTestAction( - 'createCloneToken', - MINIME_TOKEN_FACTORIES.get(chainId)!, - [constants.AddressZero, 0, 'Other Token', 18, 'OT', true], - ), - createTestAction('changeController', newTokenAddress, [ - calculateNewProxyAddress( - DAO3.kernel, - await buildNonceForAddress(DAO3.kernel, 0, signer.provider!), - ), - ]), - createTestAction('newAppInstance', DAO3.kernel, [ - appId, - codeAddress, - encodeCalldata( - new utils.Interface([`function ${initializeSignature}`]), - [newTokenAddress, true, 0], - ), - false, - ]), - createTestScriptEncodedAction( - [ - { - to: DAO3['agent:1'], - data: new utils.Interface([ - 'function transfer(address,address,uint256)', - ]).encodeFunctionData('transfer', [ - '0x44fA8E6f47987339850636F88629646662444217', - me, - toDecimals('10.50'), - ]), - }, - ], - ['agent'], - DAO3, - ), - ], - COMPLETE_FORWARDER_PATH, - DAO3, - ), - ]; - - expect(forwardingAction).to.eqls(expectedForwardingActions); - }); - - it('should set connected DAO variable', async () => { - const interpreter = createAragonScriptInterpreter(); - await interpreter.interpret(); - const aragonos = interpreter.getModule('aragonos') as AragonOS; - const dao = aragonos.getConnectedDAO(DAO.kernel); - - expect(dao).to.not.be.null; - expect(dao!.nestingIndex, 'DAO nested index mismatch').to.equals(1); - Object.entries(DAO).forEach(([appIdentifier, appAddress]) => { - expect( - dao!.resolveApp(appIdentifier)!.address, - `${appIdentifier} binding mismatch`, - ).equals(appAddress); - }); - }); - - describe('when having nested connect commands', () => { - it('should set all the connected DAOs properly', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - std:set $var1 1 - connect ${DAO3.kernel} ( - std:set $var2 token-manager - ) - ) - ) - `, - signer, - ); - - await interpreter.interpret(); - - const aragonos = interpreter.getModule('aragonos') as AragonOS; - const daos = aragonos.connectedDAOs; - - expect(daos, 'connected DAOs length mismatch').to.be.lengthOf(3); - - let i = 0; - for (const dao of daos) { - expect(dao.nestingIndex, `DAO ${i} nesting index mismatch`).to.equals( - i + 1, - ); - Object.entries(DAOs[i]).forEach(([appIdentifier, appAddress]) => { - expect( - dao!.resolveApp(appIdentifier)!.address, - `DAO ${i} ${appIdentifier} binding mismatch`, - ).equals(appAddress); - }); - i++; - } - }); - - it('should return the correct actions when using app identifiers from different DAOs', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - grant disputable-voting.open _${DAO.kernel}:agent TRANSFER_ROLE - connect ${DAO3.kernel} ( - grant _${DAO.kernel}:disputable-voting.open _${DAO2.kernel}:acl CREATE_PERMISSIONS_ROLE - ) - ) - - ) - `, - signer, - ); - - const nestedActions = await interpreter.interpret(); - - const expectedNestedActions = [ - createTestAction('grantPermission', DAO.acl, [ - DAO2['disputable-voting.open'], - DAO.agent, - utils.id('TRANSFER_ROLE'), - ]), - createTestAction('grantPermission', DAO2.acl, [ - DAO['disputable-voting.open'], - DAO2['acl'], - utils.id('CREATE_PERMISSIONS_ROLE'), - ]), - ]; - - expect(nestedActions).to.eql(expectedNestedActions); - }); - - it('should fail when trying to connect to an already connected DAO', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO.kernel} ( - connect ${DAO.kernel} ( - - ) - ) - `, - signer, - ); - - const connectNode = findAragonOSCommandNode( - interpreter.ast, - 'connect', - 1, - )!; - const error = new CommandError( - connectNode, - `trying to connect to an already connected DAO (${DAO.kernel})`, - ); - await expectThrowAsync(() => interpreter.interpret(), error); - }); - }); - - it('should fail when forwarding a set of actions through a context forwarder without defining a context', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO2.kernel} disputable-voting.open ( - grant kernel acl CREATE_PERMISSIONS_ROLE - ) - `, - signer, - ); - const c = findAragonOSCommandNode(interpreter.ast, 'connect')!; - const error = new CommandError(c, `context option missing`); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when not passing a commands block', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - ar:connect ${DAO.kernel} - `, - signer, - ); - const c = findAragonOSCommandNode(interpreter.ast, 'connect')!; - const error = new CommandError( - c, - buildArgsLengthErrorMsg(1, { - type: ComparisonType.Greater, - minValue: 2, - }), - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); -}); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/forward.test.ts b/packages/evmcrispr/test/modules/aragonos/commands/forward.test.ts deleted file mode 100644 index 31c5ddb3..00000000 --- a/packages/evmcrispr/test/modules/aragonos/commands/forward.test.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import { commaListItems } from '../../../../src/utils'; -import { CommandError } from '../../../../src/errors'; - -import { DAO } from '../../../fixtures'; -import { - createTestAction, - createTestScriptEncodedAction, -} from '../../../test-helpers/actions'; -import { - createAragonScriptInterpreter as createAragonScriptInterpreter_, - findAragonOSCommandNode, -} from '../../../test-helpers/aragonos'; -import { - createInterpreter, - itChecksNonDefinedIdentifier, -} from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; -import { ANY_ENTITY } from '../../../../src/modules/aragonos/utils'; - -describe('AragonOS > commands > forward <...path> ', () => { - let signer: Signer; - - let createAragonScriptInterpreter: ReturnType< - typeof createAragonScriptInterpreter_ - >; - - before(async () => { - [signer] = await ethers.getSigners(); - - createAragonScriptInterpreter = createAragonScriptInterpreter_( - signer, - DAO.kernel, - ); - }); - - it('should return a correct forward action', async () => { - const interpreter = createAragonScriptInterpreter([ - ` - forward disputable-voting.open ( - grant disputable-voting.open disputable-conviction-voting.open PAUSE_CONTRACT_ROLE disputable-voting.open - revoke ANY_ENTITY disputable-conviction-voting.open CREATE_PROPOSALS_ROLE true - ) --context "test" - `, - ]); - - const forwardActions = await interpreter.interpret(); - - const expectedActions = [ - createTestScriptEncodedAction( - [ - createTestAction('createPermission', DAO.acl, [ - DAO['disputable-voting.open'], - DAO['disputable-conviction-voting.open'], - utils.id('PAUSE_CONTRACT_ROLE'), - DAO['disputable-voting.open'], - ]), - createTestAction('revokePermission', DAO.acl, [ - ANY_ENTITY, - DAO['disputable-conviction-voting.open'], - utils.id('CREATE_PROPOSALS_ROLE'), - ]), - createTestAction('removePermissionManager', DAO.acl, [ - DAO['disputable-conviction-voting.open'], - utils.id('CREATE_PROPOSALS_ROLE'), - ]), - ], - ['disputable-voting.open'], - DAO, - 'test', - ), - ]; - - expect(forwardActions).to.eql(expectedActions); - }); - - itChecksNonDefinedIdentifier( - 'should fail when receiving non-defined forwarder identifiers', - (nonDefinedIdentifier) => - createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO.kernel} ( - forward ${nonDefinedIdentifier} ( - grant tollgate.open finance CREATE_PAYMENTS_ROLE - ) - ) - `, - signer, - ), - 'forward', - 0, - true, - ); - - it('should fail when forwarding actions through invalid forwarder addresses', async () => { - const invalidAddresses = [ - 'false', - '0xab123cd1231255ab45323de234223422a12312321abaceff', - ]; - const interpreter = createAragonScriptInterpreter([ - `forward ${invalidAddresses.join(' ')} ( - grant tollgate.open finance CREATE_PAYMENTS_ROLE - )`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'forward')!; - const error = new CommandError( - c, - `${commaListItems(invalidAddresses)} are not valid forwarder address`, - ); - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when forwarding actions through non-forwarder entities', async () => { - const interpreter = createAragonScriptInterpreter([ - `forward acl ( - grant disputable-voting.open disputable-conviction-voting.open PAUSE_CONTRACT_ROLE disputable-voting.open - )`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'forward')!; - const error = new CommandError(c, `app ${DAO.acl} is not a forwarder`); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); -}); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/grant.test.ts b/packages/evmcrispr/test/modules/aragonos/commands/grant.test.ts deleted file mode 100644 index e2f55daf..00000000 --- a/packages/evmcrispr/test/modules/aragonos/commands/grant.test.ts +++ /dev/null @@ -1,241 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import type { Action } from '../../../../src/types'; -import { oracle } from '../../../../src/modules/aragonos/utils'; - -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; - -import { CommandError } from '../../../../src/errors'; - -import { DAO } from '../../../fixtures'; -import { DAO as DAO2 } from '../../../fixtures/mock-dao-2'; -import { createTestAction } from '../../../test-helpers/actions'; -import { - createAragonScriptInterpreter as createAragonScriptInterpreter_, - findAragonOSCommandNode, - itChecksBadPermission, -} from '../../../test-helpers/aragonos'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; - -describe('AragonOS > commands > grant [permissionManager] [--params | --oracle ]', () => { - let signer: Signer; - - let createAragonScriptInterpreter: ReturnType< - typeof createAragonScriptInterpreter_ - >; - - before(async () => { - [signer] = await ethers.getSigners(); - - createAragonScriptInterpreter = createAragonScriptInterpreter_( - signer, - DAO.kernel, - ); - }); - - it('should return a correct grant permission action', async () => { - const interpreter = createAragonScriptInterpreter([ - `grant @me agent TRANSFER_ROLE`, - ]); - - const granteeActions = await interpreter.interpret(); - - const expectedGranteeActions = [ - createTestAction('grantPermission', DAO.acl, [ - await signer.getAddress(), - DAO.agent, - utils.id('TRANSFER_ROLE'), - ]), - ]; - const aragonos = interpreter.getModule('aragonos') as AragonOS; - const dao = aragonos.getConnectedDAO(DAO.kernel); - const app = dao?.resolveApp('agent'); - const grantees = app?.permissions?.get(utils.id('TRANSFER_ROLE'))?.grantees; - - expect(granteeActions, 'Returned actions mismatch').to.eqls( - expectedGranteeActions, - ); - expect( - grantees, - "Grantee wasn't found on DAO app's permissions", - ).to.include(await signer.getAddress()); - }); - - it('should return a correct create permission action', async () => { - const interpreter = createAragonScriptInterpreter([ - `grant disputable-voting.open wrappable-hooked-token-manager.open WRAP_TOKEN_ROLE @me`, - ]); - - const createPermissionAction = await interpreter.interpret(); - - const expectedPermissionManager = await signer.getAddress(); - const expectedCreatePermissionActions = [ - createTestAction('createPermission', DAO.acl, [ - DAO['disputable-voting.open'], - DAO['wrappable-hooked-token-manager.open'], - utils.id('WRAP_TOKEN_ROLE'), - expectedPermissionManager, - ]), - ]; - const aragonos = interpreter.getModule('aragonos') as AragonOS; - const dao = aragonos.getConnectedDAO(DAO.kernel); - const app = dao?.resolveApp('wrappable-hooked-token-manager.open'); - const permission = app?.permissions?.get(utils.id('WRAP_TOKEN_ROLE')); - - expect(createPermissionAction, 'Returned actions mismatch').to.eql( - expectedCreatePermissionActions, - ); - expect( - permission?.grantees, - "Grantee wasn't found on DAO app's permission", - ).to.have.key(DAO['disputable-voting.open']); - expect( - permission?.manager, - "DAO app's permission manager mismatch", - ).to.equals(expectedPermissionManager); - }); - - it('should return a correct parametric permission action when receiving an oracle option', async () => { - const interpreter = createAragonScriptInterpreter([ - 'grant disputable-voting.open wrappable-hooked-token-manager.open WRAP_TOKEN_ROLE disputable-voting.open --oracle wrappable-hooked-token-manager.open', - ]); - - const grantPActions = await interpreter.interpret(); - - const expectedActions: Action[] = [ - createTestAction('createPermission', DAO.acl, [ - DAO['disputable-voting.open'], - DAO['wrappable-hooked-token-manager.open'], - utils.id('WRAP_TOKEN_ROLE'), - DAO['disputable-voting.open'], - ]), - createTestAction('grantPermissionP', DAO.acl, [ - DAO['disputable-voting.open'], - DAO['wrappable-hooked-token-manager.open'], - utils.id('WRAP_TOKEN_ROLE'), - oracle(DAO['wrappable-hooked-token-manager.open'])(), - ]), - ]; - - expect(grantPActions).to.eql(expectedActions); - }); - - it(`should return a correct grant permission action from a different DAO app`, async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - grant disputable-voting.open _${DAO.kernel}:disputable-voting.open CREATE_VOTES_ROLE - ) - ) - `, - signer, - ); - - const grantActions = await interpreter.interpret(); - - const expectedGrantActions = [ - createTestAction('grantPermission', DAO.acl, [ - DAO2['disputable-voting.open'], - DAO['disputable-voting.open'], - utils.id('CREATE_VOTES_ROLE'), - ]), - ]; - - expect(grantActions).to.eql(expectedGrantActions); - }); - - itChecksBadPermission('grant', (badPermission) => - createAragonScriptInterpreter([`grant ${badPermission.join(' ')}`]), - ); - - it('should fail when passing an invalid app DAO prefix', async () => { - const invalidDAOPrefix = `invalid-dao-prefix`; - const appIdentifier = `_${invalidDAOPrefix}:token-manager`; - const interpreter = createInterpreter( - ` - load aragonos as ar - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - grant _${DAO.kernel}:disputable-voting.open ${appIdentifier} SOME_ROLE - ) - ) - `, - signer, - ); - const c = findAragonOSCommandNode(interpreter.ast, 'grant', 1)!; - const error = new CommandError( - c, - `couldn't found a DAO for ${invalidDAOPrefix} on given identifier ${appIdentifier}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when providing an invalid oracle option', async () => { - const invalidOracle = 'invalid-oracle'; - const interpreter = createAragonScriptInterpreter([ - `grant disputable-voting.open wrappable-hooked-token-manager.open REVOKE_VESTINGS_ROLE disputable-voting.open --oracle ${invalidOracle}`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'grant')!; - const error = new CommandError( - c, - `invalid --oracle option. Expected an address, but got ${invalidOracle}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when granting a parametric permission to an existent grantee', async () => { - const interpreter = createAragonScriptInterpreter([ - `grant augmented-bonding-curve.open wrappable-hooked-token-manager.open MINT_ROLE --oracle wrappable-hooked-token-manager.open`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'grant')!; - const error = new CommandError( - c, - `grantee ${DAO['augmented-bonding-curve.open']} already has given permission on app wrappable-hooked-token-manager`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when executing it outside a "connect" command', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:grant 0xc59d4acea08cf51974dfeb422964e6c2d7eb906f 0x1c06257469514574c0868fdcb83c5509b5513870 TRANSFER_ROLE - `, - signer, - ); - const c = interpreter.ast.body[1]; - const error = new CommandError( - c, - 'must be used within a "connect" command', - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when granting a permission to an address that already has it', async () => { - const app = 'wrappable-hooked-token-manager.open'; - const interpreter = createAragonScriptInterpreter([ - `grant augmented-bonding-curve.open ${app} MINT_ROLE`, - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'grant')!; - const error = new CommandError( - c, - `grantee already has given permission on app ${app.slice( - 0, - app.indexOf('.'), - )}`, - ); - await expectThrowAsync(() => interpreter.interpret(), error); - }); -}); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/revoke.test.ts b/packages/evmcrispr/test/modules/aragonos/commands/revoke.test.ts deleted file mode 100644 index 2189486a..00000000 --- a/packages/evmcrispr/test/modules/aragonos/commands/revoke.test.ts +++ /dev/null @@ -1,237 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import type { EVMcrispr } from '../../../../src/EVMcrispr'; - -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; -import type { CommandExpressionNode } from '../../../../src/types'; -import { CommandError } from '../../../../src/errors'; -import { toDecimals } from '../../../../src/utils'; - -import { DAO } from '../../../fixtures'; -import { DAO as DAO2 } from '../../../fixtures/mock-dao-2'; -import { createTestAction } from '../../../test-helpers/actions'; - -import { - createAragonScriptInterpreter as createAragonScriptInterpreter_, - findAragonOSCommandNode, - itChecksBadPermission, -} from '../../../test-helpers/aragonos'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; - -describe('AragonOS > commands > revoke [removeManager]', () => { - let signer: Signer; - - let createAragonScriptInterpreter: ReturnType< - typeof createAragonScriptInterpreter_ - >; - - before(async () => { - [signer] = await ethers.getSigners(); - - createAragonScriptInterpreter = createAragonScriptInterpreter_( - signer, - DAO.kernel, - ); - }); - - it('should return a correct revoke permission action', async () => { - const interpeter = createAragonScriptInterpreter([ - 'revoke disputable-voting.open:0 acl:0 CREATE_PERMISSIONS_ROLE', - ]); - - const revokePermissionActions = await interpeter.interpret(); - - const role = utils.id('CREATE_PERMISSIONS_ROLE'); - const expectedRevokePermissionActions = [ - createTestAction('revokePermission', DAO.acl, [ - DAO['disputable-voting.open'], - DAO.acl, - role, - ]), - ]; - - const aragonos = interpeter.getModule('aragonos') as AragonOS; - const dao = aragonos.getConnectedDAO(DAO.kernel); - const app = dao?.resolveApp('acl'); - const appPermission = app?.permissions.get(role); - - expect( - appPermission?.grantees, - "Grantee still exists on DAO app's permission", - ).to.not.have.key(DAO['disputable-voting.open']); - expect(revokePermissionActions, 'Returned actions mismatch').to.eql( - expectedRevokePermissionActions, - ); - }); - - it('should return a correct revoke and revoke manager action', async () => { - const rawRole = 'CREATE_PERMISSIONS_ROLE'; - const interpreter = createAragonScriptInterpreter([ - `revoke disputable-voting.open:0 acl:0 ${rawRole} true`, - ]); - - const revokePermissionActions = await interpreter.interpret(); - - const role = utils.id(rawRole); - const expectedRevokePermissionActions = [ - createTestAction('revokePermission', DAO.acl, [ - DAO['disputable-voting.open'], - DAO.acl, - role, - ]), - createTestAction('removePermissionManager', DAO.acl, [DAO.acl, role]), - ]; - - const aragonos = interpreter.getModule('aragonos') as AragonOS; - const dao = aragonos.getConnectedDAO(DAO.kernel); - const app = dao?.resolveApp(DAO['acl']); - const appPermission = app?.permissions.get(role); - - expect( - appPermission?.grantees, - "Grantee still exists on DAO app's permission", - ).to.not.have.key(DAO['disputable-voting.open']); - expect( - appPermission?.manager, - "Permission manager still exists on DAO app's permission", - ).to.not.exist; - expect(revokePermissionActions, 'Returned actions mismatch').to.eql( - expectedRevokePermissionActions, - ); - }); - - it('should return a correct revoke permission action from a different DAO app', async () => { - const interpreter = await createInterpreter( - ` - load aragonos as ar - - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - revoke _${DAO.kernel}:disputable-voting.open _${DAO.kernel}:acl CREATE_PERMISSIONS_ROLE - ) - ) - `, - signer, - ); - - const revokeActions = await interpreter.interpret(); - - const expectedRevokeActions = [ - createTestAction('revokePermission', DAO.acl, [ - DAO['disputable-voting.open'], - DAO.acl, - utils.id('CREATE_PERMISSIONS_ROLE'), - ]), - ]; - - expect(revokeActions).to.eql(expectedRevokeActions); - }); - - itChecksBadPermission('revoke', (badPermission) => - createAragonScriptInterpreter([`revoke ${badPermission.join(' ')}`]), - ); - - it('should fail when passing an invalid DAO prefix', async () => { - const invalidDAOPrefix = `invalid-dao-prefix`; - const appIdentifier = `_${invalidDAOPrefix}:token-manager`; - const interpreter = createInterpreter( - ` - load aragonos as ar - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - revoke _1:voting ${appIdentifier} SOME_ROLE - ) - ) - `, - signer, - ); - const c = findAragonOSCommandNode(interpreter.ast, 'revoke', 1)!; - - const error = new CommandError( - c, - `couldn't found a DAO for ${invalidDAOPrefix} on given identifier ${appIdentifier}`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when executing it outside a "connect" command', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - ar:revoke voting token-manager MINT_ROLE`, - signer, - ); - const c = interpreter.ast.body[1]; - const error = new CommandError( - c, - 'must be used within a "connect" command', - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when passing an invalid remove manager flag', async () => { - const interpreter = createAragonScriptInterpreter([ - 'revoke disputable-voting.open acl CREATE_PERMISSIONS_ROLE 1e18', - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; - const error = new CommandError( - c, - `invalid remove manager flag. Expected boolean but got ${typeof toDecimals( - 1, - 18, - )}`, - ); - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when revoking a permission from a non-app entity', async () => { - let interpreter: EVMcrispr; - let c: CommandExpressionNode; - const nonAppAddress = await signer.getAddress(); - - interpreter = createAragonScriptInterpreter([ - `revoke disputable-voting.open ${nonAppAddress} A_ROLE`, - ]); - c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; - let error = new CommandError(c, `${nonAppAddress} is not a DAO's app`); - - await expectThrowAsync( - () => interpreter.interpret(), - error, - `Unknown identifier didn't fail properly`, - ); - - interpreter = createAragonScriptInterpreter([ - `revoke disputable-voting.open ${nonAppAddress} MY_ROLE`, - ]); - c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; - - error = new CommandError(c, `${nonAppAddress} is not a DAO's app`); - - await expectThrowAsync( - () => - createAragonScriptInterpreter([ - `revoke disputable-voting.open ${nonAppAddress} MY_ROLE`, - ]).interpret(), - error, - ); - }); - - it("should fail when revoking a permission from an entity that doesn't have it", async () => { - const interpreter = createAragonScriptInterpreter([ - 'revoke kernel acl CREATE_PERMISSIONS_ROLE', - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'revoke')!; - const error = new CommandError( - c, - `grantee ${DAO.kernel} doesn't have the given permission`, - ); - await expectThrowAsync(() => interpreter.interpret(), error); - }); -}); diff --git a/packages/evmcrispr/test/modules/aragonos/commands/upgrade.test.ts b/packages/evmcrispr/test/modules/aragonos/commands/upgrade.test.ts deleted file mode 100644 index 8346d8b0..00000000 --- a/packages/evmcrispr/test/modules/aragonos/commands/upgrade.test.ts +++ /dev/null @@ -1,179 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { utils } from 'ethers'; -import { ethers } from 'hardhat'; - -import type { AragonOS } from '../../../../src/modules/aragonos/AragonOS'; -import { getRepoContract } from '../../../../src/modules/aragonos/utils'; - -import { CommandError } from '../../../../src/errors'; -import { DAO } from '../../../fixtures'; -import { DAO as DAO2 } from '../../../fixtures/mock-dao-2'; -import { DAO as DAO3 } from '../../../fixtures/mock-dao-3'; -import { createTestAction } from '../../../test-helpers/actions'; -import { - _aragonEns, - createAragonScriptInterpreter as createAragonScriptInterpreter_, - findAragonOSCommandNode, -} from '../../../test-helpers/aragonos'; -import { createInterpreter } from '../../../test-helpers/cas11'; -import { expectThrowAsync } from '../../../test-helpers/expects'; - -describe('AragonOS > commands > upgrade [newAppImplementationAddress]', () => { - let signer: Signer; - - let createAragonScriptInterpreter: ReturnType< - typeof createAragonScriptInterpreter_ - >; - - before(async () => { - [signer] = await ethers.getSigners(); - - createAragonScriptInterpreter = createAragonScriptInterpreter_( - signer, - DAO2.kernel, - ); - }); - - it("should return a correct upgrade action to the latest app's version", async () => { - const interpreter = createAragonScriptInterpreter([ - `upgrade disputable-conviction-voting.open`, - ]); - - const upgradeActions = await interpreter.interpret(); - - const repoAddress = await _aragonEns( - 'disputable-conviction-voting.open.aragonpm.eth', - interpreter.getModule('aragonos') as AragonOS, - ); - const repo = getRepoContract(repoAddress!, signer); - const [, latestImplementationAddress] = await repo.getLatest(); - const expectedUpgradeActions = [ - createTestAction('setApp', DAO2.kernel, [ - utils.id('base'), - utils.namehash('disputable-conviction-voting.open.aragonpm.eth'), - latestImplementationAddress, - ]), - ]; - - expect(upgradeActions).to.eql(expectedUpgradeActions); - }); - - it('should return a correct upgrade action given a specific version', async () => { - const interpreter = createAragonScriptInterpreter([ - `upgrade disputable-conviction-voting.open 2.0.0`, - ]); - - const upgradeActions = await interpreter.interpret(); - - const repoAddress = await _aragonEns( - 'disputable-conviction-voting.open.aragonpm.eth', - interpreter.getModule('aragonos') as AragonOS, - ); - const repo = getRepoContract(repoAddress!, signer); - const [, newAppImplementation] = await repo.getBySemanticVersion([ - '2', - '0', - '0', - ]); - const expectedUpgradeActions = [ - createTestAction('setApp', DAO2.kernel, [ - utils.id('base'), - utils.namehash('disputable-conviction-voting.open.aragonpm.eth'), - newAppImplementation, - ]), - ]; - - expect(upgradeActions).to.eql(expectedUpgradeActions); - }); - - it('should return a correct upgrade action given a different DAO', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - ar:connect ${DAO.kernel} ( - connect ${DAO2.kernel} ( - connect ${DAO3.kernel} ( - upgrade _${DAO2.kernel}:disputable-conviction-voting.open - ) - ) - ) - `, - signer, - ); - - const upgradeActions = await interpreter.interpret(); - - const repoAddress = await _aragonEns( - 'disputable-conviction-voting.open.aragonpm.eth', - interpreter.getModule('aragonos') as AragonOS, - ); - const repo = getRepoContract(repoAddress!, signer); - const [, latestImplementationAddress] = await repo.getLatest(); - const expectedUpgradeActions = [ - createTestAction('setApp', DAO2.kernel, [ - utils.id('base'), - utils.namehash('disputable-conviction-voting.open.aragonpm.eth'), - latestImplementationAddress, - ]), - ]; - - expect(upgradeActions).to.eql(expectedUpgradeActions); - }); - - it('should fail when executing it outside a "connect" command', async () => { - const interpreter = createInterpreter( - ` - load aragonos as ar - - ar:upgrade voting - `, - signer, - ); - const c = interpreter.ast.body[1]; - const error = new CommandError( - c, - 'must be used within a "connect" command', - ); - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when upgrading a non-existent app', async () => { - const apmRepo = 'superfluid.open'; - const interpreter = createAragonScriptInterpreter([`upgrade ${apmRepo}`]); - const c = findAragonOSCommandNode(interpreter.ast, 'upgrade')!; - const error = new CommandError( - c, - `${apmRepo}.aragonpm.eth not installed on current DAO.`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when providing an invalid second parameter', async () => { - const interpreter = createAragonScriptInterpreter([ - 'upgrade disputable-conviction-voting.open 1e18', - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'upgrade')!; - - const error = new CommandError( - c, - 'second upgrade parameter must be a semantic version, an address, or nothing', - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); - - it('should fail when upgrading an app to the same version', async () => { - const interpreter = createAragonScriptInterpreter([ - 'upgrade disputable-conviction-voting.open 1.0.0', - ]); - const c = findAragonOSCommandNode(interpreter.ast, 'upgrade')!; - const error = new CommandError( - c, - `trying to upgrade app to its current version`, - ); - - await expectThrowAsync(() => interpreter.interpret(), error); - }); -}); diff --git a/packages/evmcrispr/test/modules/std/helpers/token.test.ts b/packages/evmcrispr/test/modules/std/helpers/token.test.ts deleted file mode 100644 index fb42615c..00000000 --- a/packages/evmcrispr/test/modules/std/helpers/token.test.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { expect } from 'chai'; -import type { Signer } from 'ethers'; -import { ethers } from 'hardhat'; - -import { NodeType } from '../../../../src/types'; -import { ComparisonType } from '../../../../src/utils'; - -import { - itChecksInvalidArgsLength, - preparingExpression, -} from '../../../test-helpers/cas11'; - -describe('Std > helpers > @token(tokenSymbol)', () => { - let signer: Signer; - const lazySigner = () => signer; - - before(async () => { - [signer] = await ethers.getSigners(); - }); - - it('should interpret it correctly', async () => { - const [interpret] = await preparingExpression('@token(DAI)', signer); - - expect(await interpret()).to.equals( - '0x44fA8E6f47987339850636F88629646662444217', - ); - }); - - itChecksInvalidArgsLength( - NodeType.HelperFunctionExpression, - '@token', - ['DAI'], - { - type: ComparisonType.Equal, - minValue: 1, - }, - lazySigner, - ); -}); - -describe('Std > helpers > @token.balance(tokenSymbol, account)', () => { - let signer: Signer; - const lazySigner = () => signer; - - before(async () => { - [signer] = await ethers.getSigners(); - }); - - it('should interpret it correctly', async () => { - const [interpret] = await preparingExpression( - '@token.balance(DAI,@token(DAI))', - signer, - ); - - expect(await interpret()).to.be.eq( - '12100000000000000000', // DAI balance in block 24730000, may change for other blocks - ); - }); - - itChecksInvalidArgsLength( - NodeType.HelperFunctionExpression, - '@token.balance', - ['DAI', '@token(DAI)'], - { - type: ComparisonType.Equal, - minValue: 2, - }, - lazySigner, - ); -}); - -describe('Std > helpers > @token.amount(tokenSymbol, amount)', () => { - let signer: Signer; - const lazySigner = () => signer; - - before(async () => { - [signer] = await ethers.getSigners(); - }); - - it('should interpret it correctly', async () => { - const [interpret] = await preparingExpression( - '@token.amount(DAI, 1)', - signer, - ); - - expect(await interpret()).to.equals(String(1e18)); - }); - - itChecksInvalidArgsLength( - NodeType.HelperFunctionExpression, - '@token.amount', - ['DAI', '1'], - { - type: ComparisonType.Equal, - minValue: 2, - }, - lazySigner, - ); -}); diff --git a/packages/evmcrispr/test/parsers/arithmetic.test.ts b/packages/evmcrispr/test/parsers/arithmetic.test.ts deleted file mode 100644 index d7baeaba..00000000 --- a/packages/evmcrispr/test/parsers/arithmetic.test.ts +++ /dev/null @@ -1,787 +0,0 @@ -import { arithmeticParser } from '../../src/parsers/arithmetic'; -import type { Case } from '../test-helpers/cas11'; -import { runCases } from '../test-helpers/cas11'; - -describe('Parsers - arithmetic', () => { - it('should parse an arithmetic operation correctly', () => { - const c: Case = [ - '(9 + 5 - 4 * 4 / 3 ^ 2)', - { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'NumberLiteral', - value: '9', - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 2, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '5', - loc: { - start: { - line: 1, - col: 5, - }, - end: { - line: 1, - col: 6, - }, - }, - }, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 6, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { - line: 1, - col: 9, - }, - end: { - line: 1, - col: 10, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { - line: 1, - col: 13, - }, - end: { - line: 1, - col: 14, - }, - }, - }, - loc: { - start: { - line: 1, - col: 9, - }, - end: { - line: 1, - col: 14, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'NumberLiteral', - value: '3', - loc: { - start: { - line: 1, - col: 17, - }, - end: { - line: 1, - col: 18, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '2', - loc: { - start: { - line: 1, - col: 21, - }, - end: { - line: 1, - col: 22, - }, - }, - }, - loc: { - start: { - line: 1, - col: 17, - }, - end: { - line: 1, - col: 22, - }, - }, - }, - loc: { - start: { - line: 1, - col: 9, - }, - end: { - line: 1, - col: 22, - }, - }, - }, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 22, - }, - }, - }, - ]; - - runCases(c, arithmeticParser); - }); - - it('should parse an arithmetic operation with trailing spaces correctly', () => { - const cases: Case[] = [ - [ - '( 9 + 5 - 4 * (4 / 3) ^ 3 )', - { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'NumberLiteral', - value: '9', - loc: { - start: { - line: 1, - col: 4, - }, - end: { - line: 1, - col: 5, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '5', - loc: { - start: { - line: 1, - col: 8, - }, - end: { - line: 1, - col: 9, - }, - }, - }, - loc: { - start: { - line: 1, - col: 4, - }, - end: { - line: 1, - col: 9, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { - line: 1, - col: 12, - }, - end: { - line: 1, - col: 13, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { - line: 1, - col: 17, - }, - end: { - line: 1, - col: 18, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '3', - loc: { - start: { - line: 1, - col: 21, - }, - end: { - line: 1, - col: 22, - }, - }, - }, - loc: { - start: { - line: 1, - col: 17, - }, - end: { - line: 1, - col: 22, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '3', - loc: { - start: { - line: 1, - col: 26, - }, - end: { - line: 1, - col: 27, - }, - }, - }, - loc: { - start: { - line: 1, - col: 16, - }, - end: { - line: 1, - col: 27, - }, - }, - }, - loc: { - start: { - line: 1, - col: 12, - }, - end: { - line: 1, - col: 27, - }, - }, - }, - loc: { - start: { - line: 1, - col: 4, - }, - end: { - line: 1, - col: 27, - }, - }, - }, - 'inner left and right trailing spaces mismatch', - ], - [ - '(9 + 5 - 4 * 4 / 3)', - { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'NumberLiteral', - value: '9', - loc: { start: { line: 1, col: 1 }, end: { line: 1, col: 2 } }, - }, - right: { - type: 'NumberLiteral', - value: '5', - loc: { start: { line: 1, col: 8 }, end: { line: 1, col: 9 } }, - }, - loc: { start: { line: 1, col: 1 }, end: { line: 1, col: 9 } }, - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { line: 1, col: 15 }, - end: { line: 1, col: 16 }, - }, - }, - right: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { line: 1, col: 26 }, - end: { line: 1, col: 27 }, - }, - }, - loc: { start: { line: 1, col: 15 }, end: { line: 1, col: 27 } }, - }, - right: { - type: 'NumberLiteral', - value: '3', - loc: { start: { line: 1, col: 35 }, end: { line: 1, col: 36 } }, - }, - loc: { start: { line: 1, col: 15 }, end: { line: 1, col: 36 } }, - }, - loc: { start: { line: 1, col: 1 }, end: { line: 1, col: 36 } }, - }, - 'in-between trailing spaces mismatch ', - ], - ]; - - runCases(cases, arithmeticParser); - }); - - it('should parse an arithmetic operation containing priority parentheses correctly', () => { - const c: Case = [ - '(9^33 + (5 - 4) * (4 / 3))', - { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'NumberLiteral', - value: '9', - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 2, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '33', - loc: { - start: { - line: 1, - col: 3, - }, - end: { - line: 1, - col: 5, - }, - }, - }, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 5, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'NumberLiteral', - value: '5', - loc: { - start: { - line: 1, - col: 9, - }, - end: { - line: 1, - col: 10, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { - line: 1, - col: 13, - }, - end: { - line: 1, - col: 14, - }, - }, - }, - loc: { - start: { - line: 1, - col: 9, - }, - end: { - line: 1, - col: 14, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'NumberLiteral', - value: '4', - loc: { - start: { - line: 1, - col: 19, - }, - end: { - line: 1, - col: 20, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '3', - loc: { - start: { - line: 1, - col: 23, - }, - end: { - line: 1, - col: 24, - }, - }, - }, - loc: { - start: { - line: 1, - col: 19, - }, - end: { - line: 1, - col: 24, - }, - }, - }, - loc: { - start: { - line: 1, - col: 8, - }, - end: { - line: 1, - col: 24, - }, - }, - }, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 24, - }, - }, - }, - ]; - - runCases(c, arithmeticParser); - }); - - it('should parse an arithmetic operation containing variable helpers and call expressions correctly', () => { - const c: Case = [ - '(90.45e18 + (5000e18 - @token.balance( DAI, @me)) * (someContract::getAmount() / 3) + $some-Variable ^ 2)', - { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'BinaryExpression', - operator: '+', - left: { - type: 'NumberLiteral', - value: '90.45', - power: 18, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 9, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '*', - left: { - type: 'BinaryExpression', - operator: '-', - left: { - type: 'NumberLiteral', - value: '5000', - power: 18, - loc: { - start: { - line: 1, - col: 13, - }, - end: { - line: 1, - col: 20, - }, - }, - }, - right: { - type: 'HelperFunctionExpression', - name: 'token.balance', - args: [ - { - type: 'ProbableIdentifier', - value: 'DAI', - loc: { - start: { - line: 1, - col: 39, - }, - end: { - line: 1, - col: 42, - }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'me', - args: [], - loc: { - start: { - line: 1, - col: 44, - }, - end: { - line: 1, - col: 47, - }, - }, - }, - ], - loc: { - start: { - line: 1, - col: 23, - }, - end: { - line: 1, - col: 48, - }, - }, - }, - loc: { - start: { - line: 1, - col: 13, - }, - end: { - line: 1, - col: 48, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '/', - left: { - type: 'CallExpression', - target: { - type: 'ProbableIdentifier', - value: 'someContract', - loc: { - start: { - line: 1, - col: 53, - }, - end: { - line: 1, - col: 65, - }, - }, - }, - method: 'getAmount', - args: [], - loc: { - start: { - line: 1, - col: 53, - }, - end: { - line: 1, - col: 78, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '3', - loc: { - start: { - line: 1, - col: 81, - }, - end: { - line: 1, - col: 82, - }, - }, - }, - loc: { - start: { - line: 1, - col: 53, - }, - end: { - line: 1, - col: 82, - }, - }, - }, - loc: { - start: { - line: 1, - col: 12, - }, - end: { - line: 1, - col: 82, - }, - }, - }, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 82, - }, - }, - }, - right: { - type: 'BinaryExpression', - operator: '^', - left: { - type: 'VariableIdentifier', - value: '$some-Variable', - loc: { - start: { - line: 1, - col: 86, - }, - end: { - line: 1, - col: 100, - }, - }, - }, - right: { - type: 'NumberLiteral', - value: '2', - loc: { - start: { - line: 1, - col: 103, - }, - end: { - line: 1, - col: 104, - }, - }, - }, - loc: { - start: { - line: 1, - col: 86, - }, - end: { - line: 1, - col: 104, - }, - }, - }, - loc: { - start: { - line: 1, - col: 1, - }, - end: { - line: 1, - col: 104, - }, - }, - }, - ]; - - runCases(c, arithmeticParser); - }); -}); diff --git a/packages/evmcrispr/test/parsers/array.test.ts b/packages/evmcrispr/test/parsers/array.test.ts deleted file mode 100644 index c147cd6c..00000000 --- a/packages/evmcrispr/test/parsers/array.test.ts +++ /dev/null @@ -1,204 +0,0 @@ -import type { Err } from 'arcsecond'; -import { withData } from 'arcsecond'; -import { expect } from 'chai'; - -import { - ARRAY_PARSER_ERROR, - arrayExpressionParser, -} from '../../src/parsers/array'; -import { createParserState } from '../../src/parsers/utils'; -import type { ArrayExpressionNode, NodeParserState } from '../../src/types'; -import type { Case } from '../test-helpers/cas11'; -import { runCases, runErrorCase } from '../test-helpers/cas11'; - -describe('Parsers - array', () => { - it('should parse an array correctly', () => { - const cases: Case[] = [ - [ - '[ 1, "a text string", 3 ]', - { - type: 'ArrayExpression', - elements: [ - { - type: 'NumberLiteral', - value: '1', - loc: { start: { line: 1, col: 5 }, end: { line: 1, col: 6 } }, - }, - { - type: 'StringLiteral', - value: 'a text string', - loc: { start: { line: 1, col: 8 }, end: { line: 1, col: 23 } }, - }, - { - type: 'NumberLiteral', - value: '3', - loc: { start: { line: 1, col: 28 }, end: { line: 1, col: 29 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 34 } }, - }, - 'Invalid array match', - ], - [ - '[145e18y, @token(DAI), false, ["a string", anIdentifier, [1, 2, [aDeepDeepIdentifier.open]], $variable], $fDAIx::host()]', - { - type: 'ArrayExpression', - elements: [ - { - type: 'NumberLiteral', - value: '145', - power: 18, - timeUnit: 'y', - loc: { start: { line: 1, col: 1 }, end: { line: 1, col: 8 } }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'DAI', - loc: { - start: { line: 1, col: 17 }, - end: { line: 1, col: 20 }, - }, - }, - ], - loc: { start: { line: 1, col: 10 }, end: { line: 1, col: 21 } }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { start: { line: 1, col: 23 }, end: { line: 1, col: 28 } }, - }, - { - type: 'ArrayExpression', - elements: [ - { - type: 'StringLiteral', - value: 'a string', - loc: { - start: { line: 1, col: 31 }, - end: { line: 1, col: 41 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'anIdentifier', - loc: { - start: { line: 1, col: 43 }, - end: { line: 1, col: 55 }, - }, - }, - { - type: 'ArrayExpression', - elements: [ - { - type: 'NumberLiteral', - value: '1', - loc: { - start: { line: 1, col: 58 }, - end: { line: 1, col: 59 }, - }, - }, - { - type: 'NumberLiteral', - value: '2', - loc: { - start: { line: 1, col: 61 }, - end: { line: 1, col: 62 }, - }, - }, - { - type: 'ArrayExpression', - elements: [ - { - type: 'ProbableIdentifier', - value: 'aDeepDeepIdentifier.open', - loc: { - start: { line: 1, col: 65 }, - end: { line: 1, col: 89 }, - }, - }, - ], - loc: { - start: { line: 1, col: 64 }, - end: { line: 1, col: 90 }, - }, - }, - ], - loc: { - start: { line: 1, col: 57 }, - end: { line: 1, col: 91 }, - }, - }, - { - type: 'VariableIdentifier', - value: '$variable', - loc: { - start: { line: 1, col: 94 }, - end: { line: 1, col: 103 }, - }, - }, - ], - loc: { - start: { line: 1, col: 30 }, - end: { line: 1, col: 104 }, - }, - }, - { - type: 'CallExpression', - target: { - type: 'VariableIdentifier', - value: '$fDAIx', - loc: { - start: { line: 1, col: 106 }, - end: { line: 1, col: 112 }, - }, - }, - method: 'host', - args: [], - loc: { - start: { line: 1, col: 106 }, - end: { line: 1, col: 120 }, - }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 121 } }, - }, - 'Invalid nested array match', - ], - ]; - - runCases(cases, arrayExpressionParser); - }); - - it('should fail when parsing an array with multiple primary values between commas', () => { - runErrorCase( - arrayExpressionParser, - '[1,multiple values between commas, false]', - ARRAY_PARSER_ERROR, - `Expecting character ']'`, - ); - }); - - it('should fail when parsing an array with empty elements', () => { - runErrorCase( - arrayExpressionParser, - '[12e14w, ,,]', - ARRAY_PARSER_ERROR, - 'Expecting a valid expression', - ); - }); - - it('should fail when parsing an array without closing bracket', () => { - const res = withData( - arrayExpressionParser, - )(createParserState()).run('[12e14w, "asdas"'); - - expect(res.isError).to.be.true; - expect((res as Err).error).to.equals( - `ArrayParserError(1:16): Expecting character ']', but got end of input.`, - ); - }); -}); diff --git a/packages/evmcrispr/test/parsers/call.test.ts b/packages/evmcrispr/test/parsers/call.test.ts deleted file mode 100644 index a1837614..00000000 --- a/packages/evmcrispr/test/parsers/call.test.ts +++ /dev/null @@ -1,261 +0,0 @@ -import { callExpressionParser } from '../../src/parsers/call'; -import type { Case } from '../test-helpers/cas11'; -import { runCases } from '../test-helpers/cas11'; - -export const callParserDescribe = (): Mocha.Suite => - describe('Parsers - call expression', () => { - it('should parse call expressions correctly', () => { - const cases: Case[] = [ - [ - `0x14FA5C16Af56190239B997485656F5c8b4f86c4b::getEntry(0, @token(WETH))`, - { - type: 'CallExpression', - target: { - type: 'AddressLiteral', - value: '0x14FA5C16Af56190239B997485656F5c8b4f86c4b', - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 42 } }, - }, - method: 'getEntry', - args: [ - { - type: 'NumberLiteral', - value: '0', - loc: { start: { line: 1, col: 53 }, end: { line: 1, col: 54 } }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'WETH', - loc: { - start: { line: 1, col: 63 }, - end: { line: 1, col: 67 }, - }, - }, - ], - loc: { start: { line: 1, col: 56 }, end: { line: 1, col: 68 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 69 } }, - }, - ], - [ - `$superfluid::createFlow(@token("DAIx"), $finance::vault([1,2,3]), $contract::method(), 10e18m, 'this is a nice description')`, - { - type: 'CallExpression', - target: { - type: 'VariableIdentifier', - value: '$superfluid', - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 11 } }, - }, - method: 'createFlow', - args: [ - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'StringLiteral', - value: 'DAIx', - loc: { - start: { line: 1, col: 31 }, - end: { line: 1, col: 37 }, - }, - }, - ], - loc: { start: { line: 1, col: 24 }, end: { line: 1, col: 38 } }, - }, - { - type: 'CallExpression', - target: { - type: 'VariableIdentifier', - value: '$finance', - loc: { - start: { line: 1, col: 40 }, - end: { line: 1, col: 48 }, - }, - }, - method: 'vault', - args: [ - { - type: 'ArrayExpression', - elements: [ - { - type: 'NumberLiteral', - value: '1', - loc: { - start: { line: 1, col: 57 }, - end: { line: 1, col: 58 }, - }, - }, - { - type: 'NumberLiteral', - value: '2', - loc: { - start: { line: 1, col: 59 }, - end: { line: 1, col: 60 }, - }, - }, - { - type: 'NumberLiteral', - value: '3', - loc: { - start: { line: 1, col: 61 }, - end: { line: 1, col: 62 }, - }, - }, - ], - loc: { - start: { line: 1, col: 56 }, - end: { line: 1, col: 63 }, - }, - }, - ], - loc: { start: { line: 1, col: 40 }, end: { line: 1, col: 64 } }, - }, - { - type: 'CallExpression', - target: { - type: 'VariableIdentifier', - value: '$contract', - loc: { - start: { line: 1, col: 66 }, - end: { line: 1, col: 75 }, - }, - }, - method: 'method', - args: [], - loc: { start: { line: 1, col: 66 }, end: { line: 1, col: 85 } }, - }, - { - type: 'NumberLiteral', - value: '10', - power: 18, - timeUnit: 'm', - loc: { start: { line: 1, col: 87 }, end: { line: 1, col: 93 } }, - }, - { - type: 'StringLiteral', - value: 'this is a nice description', - loc: { - start: { line: 1, col: 95 }, - end: { line: 1, col: 123 }, - }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 124 } }, - }, - 'invalid nested call expression', - ], - [ - `@token(DAIx)::upgrade(@token(DAI), 1800e18)`, - { - type: 'CallExpression', - target: { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'DAIx', - loc: { - start: { line: 1, col: 7 }, - end: { line: 1, col: 11 }, - }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 12 } }, - }, - method: 'upgrade', - args: [ - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'DAI', - loc: { - start: { line: 1, col: 29 }, - end: { line: 1, col: 32 }, - }, - }, - ], - loc: { start: { line: 1, col: 22 }, end: { line: 1, col: 33 } }, - }, - { - type: 'NumberLiteral', - value: '1800', - power: 18, - loc: { start: { line: 1, col: 35 }, end: { line: 1, col: 42 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 43 } }, - }, - 'invalid helper call expression', - ], - [ - `$registryContract::getToken(1)::approve(@me, 560.25e18)::another()`, - { - type: 'CallExpression', - target: { - type: 'CallExpression', - target: { - type: 'CallExpression', - target: { - type: 'VariableIdentifier', - value: '$registryContract', - loc: { - start: { line: 1, col: 0 }, - end: { line: 1, col: 17 }, - }, - }, - method: 'getToken', - args: [ - { - type: 'NumberLiteral', - value: '1', - loc: { - start: { line: 1, col: 28 }, - end: { line: 1, col: 29 }, - }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 30 } }, - }, - method: 'approve', - args: [ - { - type: 'HelperFunctionExpression', - name: 'me', - args: [], - loc: { - start: { line: 1, col: 40 }, - end: { line: 1, col: 43 }, - }, - }, - { - type: 'NumberLiteral', - value: '560.25', - power: 18, - loc: { - start: { line: 1, col: 45 }, - end: { line: 1, col: 54 }, - }, - }, - ], - loc: { start: { line: 1, col: 32 }, end: { line: 1, col: 55 } }, - }, - method: 'another', - args: [], - loc: { start: { line: 1, col: 57 }, end: { line: 1, col: 66 } }, - }, - 'invalid recursive call expression', - ], - ]; - - runCases(cases, callExpressionParser); - }); - }); diff --git a/packages/evmcrispr/test/parsers/command.test.ts b/packages/evmcrispr/test/parsers/command.test.ts deleted file mode 100644 index 435d90ba..00000000 --- a/packages/evmcrispr/test/parsers/command.test.ts +++ /dev/null @@ -1,859 +0,0 @@ -import { - COMMAND_PARSER_ERROR, - commandExpressionParser, - commandOptParser, -} from '../../src/parsers/command'; -import type { Case } from '../test-helpers/cas11'; -import { runCases, runErrorCase } from '../test-helpers/cas11'; - -describe('Parsers - command expression', () => { - it('should parse a command correctly', () => { - const cases: Case[] = [ - [ - 'my-command @ipfs("upload this to ipfs") contract::getData("param1", false, an-identifier, @me) anotherIdentifier.open', - { - type: 'CommandExpression', - name: 'my-command', - args: [ - { - type: 'HelperFunctionExpression', - name: 'ipfs', - args: [ - { - type: 'StringLiteral', - value: 'upload this to ipfs', - loc: { - start: { line: 1, col: 17 }, - end: { line: 1, col: 38 }, - }, - }, - ], - loc: { start: { line: 1, col: 11 }, end: { line: 1, col: 39 } }, - }, - { - type: 'CallExpression', - target: { - type: 'ProbableIdentifier', - value: 'contract', - loc: { - start: { line: 1, col: 40 }, - end: { line: 1, col: 48 }, - }, - }, - method: 'getData', - args: [ - { - type: 'StringLiteral', - value: 'param1', - loc: { - start: { line: 1, col: 58 }, - end: { line: 1, col: 66 }, - }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { - start: { line: 1, col: 68 }, - end: { line: 1, col: 73 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'an-identifier', - loc: { - start: { line: 1, col: 75 }, - end: { line: 1, col: 88 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'me', - args: [], - loc: { - start: { line: 1, col: 90 }, - end: { line: 1, col: 93 }, - }, - }, - ], - loc: { start: { line: 1, col: 40 }, end: { line: 1, col: 94 } }, - }, - { - type: 'ProbableIdentifier', - value: 'anotherIdentifier.open', - loc: { - start: { line: 1, col: 95 }, - end: { line: 1, col: 117 }, - }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 117 } }, - }, - ], - [ - 'load superfluid', - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'ProbableIdentifier', - value: 'superfluid', - loc: { start: { line: 1, col: 5 }, end: { line: 1, col: 15 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 15 } }, - }, - 'invalid `load` command match', - ], - [ - 'load aragonos as ar', - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { - start: { line: 1, col: 5 }, - end: { line: 1, col: 13 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { - start: { line: 1, col: 17 }, - end: { line: 1, col: 19 }, - }, - }, - loc: { start: { line: 1, col: 5 }, end: { line: 1, col: 19 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 19 } }, - }, - ], - [ - `switch gnosis`, - { - type: 'CommandExpression', - name: 'switch', - args: [ - { - type: 'ProbableIdentifier', - value: 'gnosis', - loc: { start: { line: 1, col: 7 }, end: { line: 1, col: 13 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 13 } }, - }, - 'invalid `switch` command match', - ], - [ - `set $new-variable 'a variable'`, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$new-variable', - loc: { start: { line: 1, col: 4 }, end: { line: 1, col: 17 } }, - }, - { - type: 'StringLiteral', - value: 'a variable', - loc: { start: { line: 1, col: 18 }, end: { line: 1, col: 30 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 30 } }, - }, - 'invalid `set` command match', - ], - [ - `mod:no-arg-command`, - { - type: 'CommandExpression', - module: 'mod', - name: 'no-arg-command', - args: [], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 18 } }, - }, - 'invalid command without args match', - ], - ]; - - runCases(cases, commandExpressionParser); - }); - - it('should parse a command with opt args correctly', async () => { - const c: Case = [ - 'example-command myArg1 125.23e18 @aHelper(contract::getSomething(), false) "text" --option1 optionValue --something-else @token(DAI) --anotherOne 1e18', - { - type: 'CommandExpression', - name: 'example-command', - args: [ - { - type: 'ProbableIdentifier', - value: 'myArg1', - loc: { start: { line: 1, col: 16 }, end: { line: 1, col: 22 } }, - }, - { - type: 'NumberLiteral', - value: '125.23', - power: 18, - loc: { start: { line: 1, col: 23 }, end: { line: 1, col: 32 } }, - }, - { - type: 'HelperFunctionExpression', - name: 'aHelper', - args: [ - { - type: 'CallExpression', - target: { - type: 'ProbableIdentifier', - value: 'contract', - loc: { - start: { line: 1, col: 42 }, - end: { line: 1, col: 50 }, - }, - }, - method: 'getSomething', - args: [], - loc: { - start: { line: 1, col: 42 }, - end: { line: 1, col: 66 }, - }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { - start: { line: 1, col: 68 }, - end: { line: 1, col: 73 }, - }, - }, - ], - loc: { start: { line: 1, col: 33 }, end: { line: 1, col: 74 } }, - }, - { - type: 'StringLiteral', - value: 'text', - loc: { start: { line: 1, col: 75 }, end: { line: 1, col: 81 } }, - }, - ], - opts: [ - { - type: 'CommandOpt', - name: 'option1', - value: { - type: 'ProbableIdentifier', - value: 'optionValue', - loc: { - start: { line: 1, col: 92 }, - end: { line: 1, col: 103 }, - }, - }, - loc: { start: { line: 1, col: 82 }, end: { line: 1, col: 103 } }, - }, - { - type: 'CommandOpt', - name: 'something-else', - value: { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'DAI', - loc: { - start: { line: 1, col: 128 }, - end: { line: 1, col: 131 }, - }, - }, - ], - loc: { - start: { line: 1, col: 121 }, - end: { line: 1, col: 132 }, - }, - }, - loc: { start: { line: 1, col: 104 }, end: { line: 1, col: 132 } }, - }, - { - type: 'CommandOpt', - name: 'anotherOne', - value: { - type: 'NumberLiteral', - value: '1', - power: 18, - loc: { - start: { line: 1, col: 146 }, - end: { line: 1, col: 150 }, - }, - }, - loc: { start: { line: 1, col: 133 }, end: { line: 1, col: 150 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 150 } }, - }, - ]; - - runCases(c, commandExpressionParser); - }); - - it('should parse a command with in-between opt args', () => { - const c: Case = [ - `exec 0x9C33eaCc2F50E39940D3AfaF2c7B8246B681A374 --inBetween a::getInfo() 1e18 --another-one @token.balance(GIV, @me) @token(DAI, "see") ( - inside-command @me --t "testing" 25e16 - another-ne token-manager:0 superfluid.open:3 --default true - ) --lastOne false`, - { - type: 'CommandExpression', - name: 'exec', - args: [ - { - type: 'AddressLiteral', - value: '0x9C33eaCc2F50E39940D3AfaF2c7B8246B681A374', - loc: { start: { line: 1, col: 5 }, end: { line: 1, col: 47 } }, - }, - { - type: 'NumberLiteral', - value: '1', - power: 18, - loc: { start: { line: 1, col: 73 }, end: { line: 1, col: 77 } }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'DAI', - loc: { - start: { line: 1, col: 124 }, - end: { line: 1, col: 127 }, - }, - }, - { - type: 'StringLiteral', - value: 'see', - loc: { - start: { line: 1, col: 129 }, - end: { line: 1, col: 134 }, - }, - }, - ], - loc: { start: { line: 1, col: 117 }, end: { line: 1, col: 135 } }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'inside-command', - args: [ - { - type: 'HelperFunctionExpression', - name: 'me', - args: [], - loc: { - start: { line: 2, col: 25 }, - end: { line: 2, col: 28 }, - }, - }, - { - type: 'NumberLiteral', - value: '25', - power: 16, - loc: { - start: { line: 2, col: 43 }, - end: { line: 2, col: 48 }, - }, - }, - ], - opts: [ - { - type: 'CommandOpt', - name: 't', - value: { - type: 'StringLiteral', - value: 'testing', - loc: { - start: { line: 2, col: 33 }, - end: { line: 2, col: 42 }, - }, - }, - loc: { - start: { line: 2, col: 29 }, - end: { line: 2, col: 42 }, - }, - }, - ], - loc: { - start: { line: 2, col: 10 }, - end: { line: 2, col: 48 }, - }, - }, - { - type: 'CommandExpression', - name: 'another-ne', - args: [ - { - type: 'ProbableIdentifier', - value: 'token-manager:0', - loc: { - start: { line: 3, col: 21 }, - end: { line: 3, col: 36 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'superfluid.open:3', - loc: { - start: { line: 3, col: 37 }, - end: { line: 3, col: 54 }, - }, - }, - ], - opts: [ - { - type: 'CommandOpt', - name: 'default', - value: { - type: 'BoolLiteral', - value: true, - loc: { - start: { line: 3, col: 65 }, - end: { line: 3, col: 69 }, - }, - }, - loc: { - start: { line: 3, col: 55 }, - end: { line: 3, col: 69 }, - }, - }, - ], - loc: { - start: { line: 3, col: 10 }, - end: { line: 3, col: 69 }, - }, - }, - ], - loc: { start: { line: 1, col: 136 }, end: { line: 4, col: 9 } }, - }, - ], - opts: [ - { - type: 'CommandOpt', - name: 'inBetween', - value: { - type: 'CallExpression', - target: { - type: 'ProbableIdentifier', - value: 'a', - loc: { - start: { line: 1, col: 60 }, - end: { line: 1, col: 61 }, - }, - }, - method: 'getInfo', - args: [], - loc: { start: { line: 1, col: 60 }, end: { line: 1, col: 72 } }, - }, - loc: { start: { line: 1, col: 48 }, end: { line: 1, col: 72 } }, - }, - { - type: 'CommandOpt', - name: 'another-one', - value: { - type: 'HelperFunctionExpression', - name: 'token.balance', - args: [ - { - type: 'ProbableIdentifier', - value: 'GIV', - loc: { - start: { line: 1, col: 107 }, - end: { line: 1, col: 110 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'me', - args: [], - loc: { - start: { line: 1, col: 112 }, - end: { line: 1, col: 115 }, - }, - }, - ], - loc: { - start: { line: 1, col: 92 }, - end: { line: 1, col: 116 }, - }, - }, - loc: { start: { line: 1, col: 78 }, end: { line: 1, col: 116 } }, - }, - { - type: 'CommandOpt', - name: 'lastOne', - value: { - type: 'BoolLiteral', - value: false, - loc: { start: { line: 4, col: 20 }, end: { line: 4, col: 25 } }, - }, - loc: { start: { line: 4, col: 10 }, end: { line: 4, col: 25 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 4, col: 25 } }, - }, - ]; - - runCases(c, commandExpressionParser); - }); - - it('should parse a command with trailing whitespaces', () => { - const command = `install wrapper-hooked-token-manager 0x83E57888cd55C3ea1cfbf0114C963564d81e318d false 0`; - - const cases: Case[] = [ - [ - `${command} `, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'wrapper-hooked-token-manager', - loc: { start: { line: 1, col: 8 }, end: { line: 1, col: 36 } }, - }, - { - type: 'AddressLiteral', - value: '0x83E57888cd55C3ea1cfbf0114C963564d81e318d', - loc: { start: { line: 1, col: 37 }, end: { line: 1, col: 79 } }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { start: { line: 1, col: 80 }, end: { line: 1, col: 85 } }, - }, - { - type: 'NumberLiteral', - value: '0', - loc: { start: { line: 1, col: 86 }, end: { line: 1, col: 87 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 87 } }, - }, - 'invalid command match with right whitespaces', - ], - [ - ` ${command}`, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'wrapper-hooked-token-manager', - loc: { start: { line: 1, col: 11 }, end: { line: 1, col: 39 } }, - }, - { - type: 'AddressLiteral', - value: '0x83E57888cd55C3ea1cfbf0114C963564d81e318d', - loc: { start: { line: 1, col: 40 }, end: { line: 1, col: 82 } }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { start: { line: 1, col: 83 }, end: { line: 1, col: 88 } }, - }, - { - type: 'NumberLiteral', - value: '0', - loc: { start: { line: 1, col: 89 }, end: { line: 1, col: 90 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 3 }, end: { line: 1, col: 90 } }, - }, - 'invalid command match with left whitespaces', - ], - [ - `${command.slice(0, 7)} ${command.slice(7, command.length)}`, - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'wrapper-hooked-token-manager', - loc: { start: { line: 1, col: 15 }, end: { line: 1, col: 43 } }, - }, - { - type: 'AddressLiteral', - value: '0x83E57888cd55C3ea1cfbf0114C963564d81e318d', - loc: { start: { line: 1, col: 44 }, end: { line: 1, col: 86 } }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { start: { line: 1, col: 87 }, end: { line: 1, col: 92 } }, - }, - { - type: 'NumberLiteral', - value: '0', - loc: { start: { line: 1, col: 93 }, end: { line: 1, col: 94 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 94 } }, - }, - 'invalid command match with in-between whitespaces', - ], - ]; - - runCases(cases, commandExpressionParser); - }); - - it('should parse commands followed by block expressions', () => { - const c: Case = [ - `forward token-manager voting agent ( - set $agent $finance::vault() - forward wrappable-token-manager.open disputable-voting.open agent ( - sf:batchcall ( - flow create @token(fDAIx) $agent 1e18mo - ) - ) - )`, - { - type: 'CommandExpression', - name: 'forward', - args: [ - { - type: 'ProbableIdentifier', - value: 'token-manager', - loc: { start: { line: 1, col: 8 }, end: { line: 1, col: 21 } }, - }, - { - type: 'ProbableIdentifier', - value: 'voting', - loc: { start: { line: 1, col: 22 }, end: { line: 1, col: 28 } }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { start: { line: 1, col: 29 }, end: { line: 1, col: 34 } }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$agent', - loc: { - start: { line: 2, col: 14 }, - end: { line: 2, col: 20 }, - }, - }, - { - type: 'CallExpression', - target: { - type: 'VariableIdentifier', - value: '$finance', - loc: { - start: { line: 2, col: 21 }, - end: { line: 2, col: 29 }, - }, - }, - method: 'vault', - args: [], - loc: { - start: { line: 2, col: 21 }, - end: { line: 2, col: 38 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 2, col: 10 }, - end: { line: 2, col: 38 }, - }, - }, - { - type: 'CommandExpression', - name: 'forward', - args: [ - { - type: 'ProbableIdentifier', - value: 'wrappable-token-manager.open', - loc: { - start: { line: 3, col: 18 }, - end: { line: 3, col: 46 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'disputable-voting.open', - loc: { - start: { line: 3, col: 47 }, - end: { line: 3, col: 69 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { - start: { line: 3, col: 70 }, - end: { line: 3, col: 75 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - module: 'sf', - name: 'batchcall', - args: [ - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'flow', - args: [ - { - type: 'ProbableIdentifier', - value: 'create', - loc: { - start: { line: 5, col: 19 }, - end: { line: 5, col: 25 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'fDAIx', - loc: { - start: { line: 5, col: 33 }, - end: { line: 5, col: 38 }, - }, - }, - ], - loc: { - start: { line: 5, col: 26 }, - end: { line: 5, col: 39 }, - }, - }, - { - type: 'VariableIdentifier', - value: '$agent', - loc: { - start: { line: 5, col: 40 }, - end: { line: 5, col: 46 }, - }, - }, - { - type: 'NumberLiteral', - value: '1', - power: 18, - timeUnit: 'mo', - loc: { - start: { line: 5, col: 47 }, - end: { line: 5, col: 53 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 5, col: 14 }, - end: { line: 5, col: 53 }, - }, - }, - ], - loc: { - start: { line: 4, col: 25 }, - end: { line: 6, col: 13 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 4, col: 12 }, - end: { line: 6, col: 13 }, - }, - }, - ], - loc: { - start: { line: 3, col: 76 }, - end: { line: 7, col: 11 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 3, col: 10 }, - end: { line: 7, col: 11 }, - }, - }, - ], - loc: { start: { line: 1, col: 35 }, end: { line: 8, col: 9 } }, - }, - ], - opts: [], - loc: { start: { line: 1, col: 0 }, end: { line: 8, col: 9 } }, - }, - ]; - - runCases(c, commandExpressionParser); - }); - - it('should fail when parsing an invalid module name', () => { - runErrorCase(commandExpressionParser, 'asda2345:asd', COMMAND_PARSER_ERROR); - }); - - it('should fail when parsing an incomplete command name', () => { - runErrorCase( - commandExpressionParser, - 'my-command:', - COMMAND_PARSER_ERROR, - 'Expecting a valid command name', - ); - }); - - it('should fail when parsing an invalid command name', () => { - runErrorCase( - commandExpressionParser, - 'my-command:wer234', - COMMAND_PARSER_ERROR, - 'Expecting a valid command name', - ); - }); - - it('should fail when parsing an invalid opt name', () => { - runErrorCase( - commandOptParser, - '--asd$ asd', - COMMAND_PARSER_ERROR, - 'Expecting a valid option name', - ); - }); -}); diff --git a/packages/evmcrispr/test/parsers/comment.test.ts b/packages/evmcrispr/test/parsers/comment.test.ts deleted file mode 100644 index 2f668872..00000000 --- a/packages/evmcrispr/test/parsers/comment.test.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { scriptParser } from '../../src'; - -import type { Case } from '../test-helpers/cas11'; -import { runCases } from '../test-helpers/cas11'; - -describe('Parsers - comment', () => { - it('should parse a comment correctly', () => { - const c: Case = [ - ` - # a comment here - load aragonos as ar - - #another one here - set $var1 1e18 - - #one at the end - `, - { - type: 'Program', - body: [ - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { - start: { line: 3, col: 13 }, - end: { line: 3, col: 21 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { - start: { line: 3, col: 25 }, - end: { line: 3, col: 27 }, - }, - }, - loc: { - start: { line: 3, col: 13 }, - end: { line: 3, col: 27 }, - }, - }, - ], - opts: [], - loc: { start: { line: 3, col: 8 }, end: { line: 3, col: 27 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$var1', - loc: { - start: { line: 6, col: 12 }, - end: { line: 6, col: 17 }, - }, - }, - { - type: 'NumberLiteral', - value: '1', - power: 18, - loc: { - start: { line: 6, col: 18 }, - end: { line: 6, col: 22 }, - }, - }, - ], - opts: [], - loc: { start: { line: 6, col: 8 }, end: { line: 6, col: 22 } }, - }, - ], - }, - ]; - - runCases(c, scriptParser); - }); - - it('should parse an inline comment', () => { - const c: Case = [ - ` - load aragonos as ar # this is an inline comment - set $var1 1e18 #another one - `, - { - type: 'Program', - body: [ - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { - start: { line: 2, col: 15 }, - end: { line: 2, col: 23 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { - start: { line: 2, col: 27 }, - end: { line: 2, col: 29 }, - }, - }, - loc: { - start: { line: 2, col: 15 }, - end: { line: 2, col: 29 }, - }, - }, - ], - opts: [], - loc: { start: { line: 2, col: 10 }, end: { line: 2, col: 29 } }, - }, - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$var1', - loc: { - start: { line: 3, col: 14 }, - end: { line: 3, col: 19 }, - }, - }, - { - type: 'NumberLiteral', - value: '1', - power: 18, - loc: { - start: { line: 3, col: 20 }, - end: { line: 3, col: 24 }, - }, - }, - ], - opts: [], - loc: { start: { line: 3, col: 10 }, end: { line: 3, col: 24 } }, - }, - ], - }, - ]; - - runCases(c, scriptParser); - }); -}); diff --git a/packages/evmcrispr/test/parsers/helper.test.ts b/packages/evmcrispr/test/parsers/helper.test.ts deleted file mode 100644 index 2b7c4169..00000000 --- a/packages/evmcrispr/test/parsers/helper.test.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { - HELPER_PARSER_ERROR, - helperFunctionParser, -} from '../../src/parsers/helper'; -import { runCases, runErrorCase } from '../test-helpers/cas11'; - -export const helperParserDescribe = (): Mocha.Suite => - describe('Parsers - helper function', () => { - it('should parse helpers correctly', () => { - const cases: [string, any, string?][] = [ - [ - '@helperFunction(anotherToken::symbol(), "this is a string param", 10e18)', - { - type: 'HelperFunctionExpression', - name: 'helperFunction', - args: [ - { - type: 'CallExpression', - target: { - type: 'ProbableIdentifier', - value: 'anotherToken', - loc: { - start: { line: 1, col: 16 }, - end: { line: 1, col: 28 }, - }, - }, - method: 'symbol', - args: [], - loc: { start: { line: 1, col: 16 }, end: { line: 1, col: 38 } }, - }, - { - type: 'StringLiteral', - value: 'this is a string param', - loc: { start: { line: 1, col: 40 }, end: { line: 1, col: 64 } }, - }, - { - type: 'NumberLiteral', - value: '10', - power: 18, - loc: { start: { line: 1, col: 66 }, end: { line: 1, col: 71 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 72 } }, - }, - 'invalid helper with call expression match', - ], - [ - `@token(WETH)`, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'WETH', - loc: { start: { line: 1, col: 7 }, end: { line: 1, col: 11 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 12 } }, - }, - 'invalid helper match', - ], - [ - `@now`, - { - type: 'HelperFunctionExpression', - name: 'now', - args: [], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 4 } }, - }, - 'invalid helper without args match', - ], - [ - `@token('DAI', @calc(34, @innerHelper(true)))`, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'StringLiteral', - value: 'DAI', - loc: { start: { line: 1, col: 7 }, end: { line: 1, col: 12 } }, - }, - { - type: 'HelperFunctionExpression', - name: 'calc', - args: [ - { - type: 'NumberLiteral', - value: '34', - loc: { - start: { line: 1, col: 20 }, - end: { line: 1, col: 22 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'innerHelper', - args: [ - { - type: 'BoolLiteral', - value: true, - loc: { - start: { line: 1, col: 37 }, - end: { line: 1, col: 41 }, - }, - }, - ], - loc: { - start: { line: 1, col: 24 }, - end: { line: 1, col: 42 }, - }, - }, - ], - loc: { start: { line: 1, col: 14 }, end: { line: 1, col: 43 } }, - }, - ], - loc: { start: { line: 1, col: 0 }, end: { line: 1, col: 44 } }, - }, - 'invalid nested helper match', - ], - ]; - - runCases(cases, helperFunctionParser); - }); - - it('should fail when parsing a helper with an invalid name', () => { - runErrorCase( - helperFunctionParser, - '@asd&$6', - HELPER_PARSER_ERROR, - 'Expecting a helper name', - ); - }); - - it('should fail when parsing a helper without a closing parenthesis', () => { - runErrorCase( - helperFunctionParser, - '@helper(asda,1e18', - HELPER_PARSER_ERROR, - ); - }); - - it('should fail when parsing a helper with empty arguments', () => { - runErrorCase( - helperFunctionParser, - '@helper(arg1, 1e18, ,)', - HELPER_PARSER_ERROR, - 'Expecting a valid expression', - ); - }); - }); diff --git a/packages/evmcrispr/test/parsers/primary.test.ts b/packages/evmcrispr/test/parsers/primary.test.ts deleted file mode 100644 index 8ca7649f..00000000 --- a/packages/evmcrispr/test/parsers/primary.test.ts +++ /dev/null @@ -1,310 +0,0 @@ -import { expect } from 'chai'; - -import { - ADDRESS_PARSER_ERROR, - BOOLEAN_PARSER_ERROR, - PROBABLE_IDENTIFIER_PARSER_ERROR, - STRING_PARSER_ERROR, - VARIABLE_PARSER_ERROR, - addressParser, - booleanParser, - hexadecimalParser, - numberParser, - probableIdentifierParser, - stringParser, - variableIdentifierParser, -} from '../../src/parsers/primaries'; -import { HEXADECIMAL_PARSER_ERROR } from '../../src/parsers/primaries/literals/hexadecimal'; -import type { - BooleanLiteralNode, - BytesLiteralNode, - Location, - NumericLiteralNode, - ProbableIdentifierNode, - StringLiteralNode, - VariableIdentifierNode, -} from '../../src/types'; -import { NodeType } from '../../src/types'; - -import type { Case } from '../test-helpers/cas11'; -import { runCases, runErrorCase, runParser } from '../test-helpers/cas11'; - -const buildLocation = (value: string): Location => ({ - start: { - line: 1, - col: 0, - }, - end: { - line: 1, - col: value.length, - }, -}); - -describe('Parsers - primary', () => { - describe('when parsing literal values', () => { - describe('when parsing address values', () => { - it('should parse them correctly', () => { - expect( - runParser( - addressParser(), - '0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3', - ), - ).to.deep.equal({ - type: 'AddressLiteral', - value: '0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3', - loc: buildLocation('0x3aD736904E9e65189c3000c7DD2c8AC8bB7cD4e3'), - }); - }); - - it('should fail when parsing an invalid one', () => { - runErrorCase( - addressParser(), - '0xasdabmtbrtbrtgsdfsvbrty', - ADDRESS_PARSER_ERROR, - 'Expecting an address', - ); - }); - }); - - describe('when parsing hexadecimal values', () => { - const n = (value: string): BytesLiteralNode => ({ - type: NodeType.BytesLiteral, - value, - loc: buildLocation(value), - }); - it('should parse them correctly', () => { - const cases: Case[] = [ - ['0xa3432da4567be', n('0xa3432da4567be')], - [ - '0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000', - n( - '0x0e80f0b30000000000000000000000008e6cd950ad6ba651f6dd608dc70e5886b1aa6b240000000000000000000000002f00df4f995451e0df337b91744006eb8892bfb10000000000000000000000000000000000000000000000004563918244f40000', - ), - ], - ]; - - runCases(cases, hexadecimalParser()); - }); - - it('should fail when parsing an invalid one', () => { - runErrorCase( - hexadecimalParser(), - '0xasdadqlkerrtrtnrn', - HEXADECIMAL_PARSER_ERROR, - 'Expecting a hexadecimal value', - ); - }); - }); - - describe('when parsing boolean values', () => { - it('should parse them correctly', () => { - const n = (value: boolean): BooleanLiteralNode => ({ - type: NodeType.BoolLiteral, - value, - loc: buildLocation(value ? 'true' : 'false'), - }); - - const cases: Case[] = [ - ['true', n(true)], - ['false', n(false)], - ]; - - runCases(cases, booleanParser()); - }); - - it('should fail when parsing an invalid one', () => { - runErrorCase( - booleanParser(), - 'fals', - BOOLEAN_PARSER_ERROR, - 'Expecting "true" or "false"', - ); - }); - }); - - describe('when parsing numeric values', () => { - const errorType = 'NumberParserError'; - - it('should parse them correctly', () => { - const node = ( - value: number, - power?: number, - timeUnit?: string, - ): NumericLiteralNode => { - const n: NumericLiteralNode = { - type: NodeType.NumberLiteral, - value: String(value), - loc: buildLocation( - value.toString() + - (power ? power?.toString() + 'e' : '') + - (timeUnit ?? ''), - ), - }; - if (power) n.power = power; - if (timeUnit) n.timeUnit = timeUnit; - - return n; - }; - const cases: Case[] = [ - ['15', node(15)], - ['9200e18', node(9200, 18)], - ['4500.32', node(4500.32)], - ['0.5e14', node(0.5, 14)], - ['20.3245e18mo', node(20.3245, 18, 'mo')], - ['50s', node(50, undefined, 's')], - ['5m', node(5, undefined, 'm')], - ['35h', node(35, undefined, 'h')], - ['365d', node(365, undefined, 'd')], - ['72w', node(72, undefined, 'w')], - ['6.5mo', node(6.5, undefined, 'mo')], - ['2.5y', node(2.5, undefined, 'y')], - ]; - - runCases(cases, numberParser()); - }); - - it('should fail when parsing an incomplete decimal', () => { - runErrorCase( - numberParser(), - '123.e18', - errorType, - 'Invalid decimal. Expecting digits', - ); - }); - - it('should fail when parsing an incomplete exponent', () => { - () => { - runErrorCase( - numberParser(), - '123.2ew', - errorType, - 'Invalid exponent. Expecting digits', - ); - }; - }); - - it('should fail when parsing an invalid time unit', () => { - runErrorCase( - numberParser(), - '123.45e13w34', - errorType, - `Invalid time unit. Expected "s", "m", "h", "d", "w", "mo" or "y"`, - ); - }); - }); - - describe('when parsing string values', () => { - it('should parse quoted strings', () => { - const node = (value: string): StringLiteralNode => { - const n: StringLiteralNode = { - type: NodeType.StringLiteral, - value, - loc: { - start: { - line: 1, - col: 0, - }, - end: { - line: 1, - col: value.length + 2, - }, - }, - }; - return n; - }; - - const cases: Case[] = [ - [`'a test single quote string'`, node('a test single quote string')], - [`"a test double quote string"`, node('a test double quote string')], - [`'alpha (with beta) ? --'`, node('alpha (with beta) ? --')], - ]; - - runCases(cases, stringParser()); - }); - }); - - it('should fail when parsing an invalid string', () => { - runErrorCase( - stringParser(), - '"asdadasdasd', - STRING_PARSER_ERROR, - 'Expecting a quoted string', - ); - }); - }); - - describe('when parsing identifiers', () => { - it('should parse probable identifier values', () => { - const node = (value: string): ProbableIdentifierNode => { - const n: ProbableIdentifierNode = { - type: NodeType.ProbableIdentifier, - value, - loc: { - start: { - line: 1, - col: 0, - }, - end: { - line: 1, - col: value.length, - }, - }, - }; - - return n; - }; - - [ - 'new', - 'install', - 'aNewAgent', - 'create-flow', - 'create-super-flow-xtreme-aa', - 'my-ens-name.eth', - 'agent.open.0', - 'superfluid-app.other-open:20', - '2015-20-09', - 'aSIgnature(with,some,params)', - 'noParamSignature()', - ].forEach((value) => - expect(runParser(probableIdentifierParser(), value)).to.eql( - node(value), - ), - ); - }); - - it('fail when parsing an invalid identifier', () => { - runErrorCase( - probableIdentifierParser(), - 'asd([[))', - PROBABLE_IDENTIFIER_PARSER_ERROR, - 'Expecting an identifier', - ); - }); - - it('should parse variable values', () => { - const n = (value: string): VariableIdentifierNode => ({ - type: NodeType.VariableIdentifier, - value, - loc: buildLocation(value), - }); - const cases: Case[] = [ - ['$variable', n('$variable')], - ['$aCamelCaseVariable', n('$aCamelCaseVariable')], - ['$a-snake-case-variable', n('$a-snake-case-variable')], - ['$token-manager.open:0', n('$token-manager.open:0')], - ]; - - runCases(cases, variableIdentifierParser()); - }); - - it('should fail when parsing invalid variables', () => { - runErrorCase( - variableIdentifierParser(), - '$asd/()', - VARIABLE_PARSER_ERROR, - 'Expecting a variable', - ); - }); - }); -}); diff --git a/packages/evmcrispr/test/parsers/script.test.ts b/packages/evmcrispr/test/parsers/script.test.ts deleted file mode 100644 index bdc292ba..00000000 --- a/packages/evmcrispr/test/parsers/script.test.ts +++ /dev/null @@ -1,624 +0,0 @@ -import { scriptParser } from '../../src/parsers/script'; -import type { Case } from '../test-helpers/cas11'; -import { runCases } from '../test-helpers/cas11'; - -describe('Parsers - script', () => { - it('should parse an script correctly', () => { - const script = ` - load aragonos as ar - load superfluid as sf\r\n - - ar:connect my-dao-ens ( - forward token-manager voting ( - install wrapper-hooked-token-manager.open 0x83E57888cd55C3ea1cfbf0114C963564d81e318d false 0 - - - ) - - - - - forward token-manager voting agent ( - - set $agent finance::vault() - - forward wrappable-token-manager.open disputable-voting.open agent ( - set $daix @token("fDAIx") - - - - - - - - - sf:token approve @token('DAI') @me 15.45e18 - - - sf:batchcall ( - token upgrade $daix 4500.43e18 - flow create $daix $agent 1e18mo - token downgrade @token('USDCx') - ) - - - ) - - - ) - - - ) - - - - `; - - const c: Case = [ - script, - { - type: 'Program', - body: [ - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'aragonos', - loc: { - start: { line: 2, col: 11 }, - end: { line: 2, col: 19 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'ar', - loc: { - start: { line: 2, col: 23 }, - end: { line: 2, col: 25 }, - }, - }, - loc: { - start: { line: 2, col: 11 }, - end: { line: 2, col: 25 }, - }, - }, - ], - opts: [], - loc: { start: { line: 2, col: 6 }, end: { line: 2, col: 25 } }, - }, - { - type: 'CommandExpression', - name: 'load', - args: [ - { - type: 'AsExpression', - left: { - type: 'ProbableIdentifier', - value: 'superfluid', - loc: { - start: { line: 3, col: 11 }, - end: { line: 3, col: 21 }, - }, - }, - right: { - type: 'ProbableIdentifier', - value: 'sf', - loc: { - start: { line: 3, col: 25 }, - end: { line: 3, col: 27 }, - }, - }, - loc: { - start: { line: 3, col: 11 }, - end: { line: 3, col: 27 }, - }, - }, - ], - opts: [], - loc: { start: { line: 3, col: 6 }, end: { line: 3, col: 27 } }, - }, - { - type: 'CommandExpression', - module: 'ar', - name: 'connect', - args: [ - { - type: 'ProbableIdentifier', - value: 'my-dao-ens', - loc: { - start: { line: 6, col: 17 }, - end: { line: 6, col: 27 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'forward', - args: [ - { - type: 'ProbableIdentifier', - value: 'token-manager', - loc: { - start: { line: 7, col: 16 }, - end: { line: 7, col: 29 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'voting', - loc: { - start: { line: 7, col: 30 }, - end: { line: 7, col: 36 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'install', - args: [ - { - type: 'ProbableIdentifier', - value: 'wrapper-hooked-token-manager.open', - loc: { - start: { line: 8, col: 18 }, - end: { line: 8, col: 51 }, - }, - }, - { - type: 'AddressLiteral', - value: - '0x83E57888cd55C3ea1cfbf0114C963564d81e318d', - loc: { - start: { line: 8, col: 52 }, - end: { line: 8, col: 94 }, - }, - }, - { - type: 'BoolLiteral', - value: false, - loc: { - start: { line: 8, col: 95 }, - end: { line: 8, col: 100 }, - }, - }, - { - type: 'NumberLiteral', - value: '0', - loc: { - start: { line: 8, col: 101 }, - end: { line: 8, col: 102 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 8, col: 10 }, - end: { line: 8, col: 102 }, - }, - }, - ], - loc: { - start: { line: 7, col: 42 }, - end: { line: 11, col: 9 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 7, col: 8 }, - end: { line: 11, col: 9 }, - }, - }, - { - type: 'CommandExpression', - name: 'forward', - args: [ - { - type: 'ProbableIdentifier', - value: 'token-manager', - loc: { - start: { line: 16, col: 16 }, - end: { line: 16, col: 29 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'voting', - loc: { - start: { line: 16, col: 30 }, - end: { line: 16, col: 36 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { - start: { line: 16, col: 37 }, - end: { line: 16, col: 42 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$agent', - loc: { - start: { line: 18, col: 14 }, - end: { line: 18, col: 20 }, - }, - }, - { - type: 'CallExpression', - target: { - type: 'ProbableIdentifier', - value: 'finance', - loc: { - start: { line: 18, col: 21 }, - end: { line: 18, col: 28 }, - }, - }, - method: 'vault', - args: [], - loc: { - start: { line: 18, col: 21 }, - end: { line: 18, col: 37 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 18, col: 10 }, - end: { line: 18, col: 37 }, - }, - }, - { - type: 'CommandExpression', - name: 'forward', - args: [ - { - type: 'ProbableIdentifier', - value: 'wrappable-token-manager.open', - loc: { - start: { line: 20, col: 18 }, - end: { line: 20, col: 46 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'disputable-voting.open', - loc: { - start: { line: 20, col: 47 }, - end: { line: 20, col: 69 }, - }, - }, - { - type: 'ProbableIdentifier', - value: 'agent', - loc: { - start: { line: 20, col: 70 }, - end: { line: 20, col: 75 }, - }, - }, - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'set', - args: [ - { - type: 'VariableIdentifier', - value: '$daix', - loc: { - start: { line: 21, col: 16 }, - end: { line: 21, col: 21 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'StringLiteral', - value: 'fDAIx', - loc: { - start: { line: 21, col: 29 }, - end: { line: 21, col: 36 }, - }, - }, - ], - loc: { - start: { line: 21, col: 22 }, - end: { line: 21, col: 37 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 21, col: 12 }, - end: { line: 21, col: 37 }, - }, - }, - { - type: 'CommandExpression', - module: 'sf', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'approve', - loc: { - start: { line: 30, col: 21 }, - end: { line: 30, col: 28 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'StringLiteral', - value: 'DAI', - loc: { - start: { line: 30, col: 36 }, - end: { line: 30, col: 41 }, - }, - }, - ], - loc: { - start: { line: 30, col: 29 }, - end: { line: 30, col: 42 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'me', - args: [], - loc: { - start: { line: 30, col: 43 }, - end: { line: 30, col: 46 }, - }, - }, - { - type: 'NumberLiteral', - value: '15.45', - power: 18, - loc: { - start: { line: 30, col: 47 }, - end: { line: 30, col: 55 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 30, col: 12 }, - end: { line: 30, col: 55 }, - }, - }, - { - type: 'CommandExpression', - module: 'sf', - name: 'batchcall', - args: [ - { - type: 'BlockExpression', - body: [ - { - type: 'CommandExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'upgrade', - loc: { - start: { - line: 34, - col: 20, - }, - end: { line: 34, col: 27 }, - }, - }, - { - type: 'VariableIdentifier', - value: '$daix', - loc: { - start: { - line: 34, - col: 28, - }, - end: { line: 34, col: 33 }, - }, - }, - { - type: 'NumberLiteral', - value: '4500.43', - power: 18, - loc: { - start: { - line: 34, - col: 34, - }, - end: { line: 34, col: 44 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 34, col: 14 }, - end: { line: 34, col: 44 }, - }, - }, - { - type: 'CommandExpression', - name: 'flow', - args: [ - { - type: 'ProbableIdentifier', - value: 'create', - loc: { - start: { - line: 35, - col: 19, - }, - end: { line: 35, col: 25 }, - }, - }, - { - type: 'VariableIdentifier', - value: '$daix', - loc: { - start: { - line: 35, - col: 26, - }, - end: { line: 35, col: 31 }, - }, - }, - { - type: 'VariableIdentifier', - value: '$agent', - loc: { - start: { - line: 35, - col: 32, - }, - end: { line: 35, col: 38 }, - }, - }, - { - type: 'NumberLiteral', - value: '1', - power: 18, - timeUnit: 'mo', - loc: { - start: { - line: 35, - col: 39, - }, - end: { line: 35, col: 45 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 35, col: 14 }, - end: { line: 35, col: 45 }, - }, - }, - { - type: 'CommandExpression', - name: 'token', - args: [ - { - type: 'ProbableIdentifier', - value: 'downgrade', - loc: { - start: { - line: 36, - col: 20, - }, - end: { line: 36, col: 29 }, - }, - }, - { - type: 'HelperFunctionExpression', - name: 'token', - args: [ - { - type: 'StringLiteral', - value: 'USDCx', - loc: { - start: { - line: 36, - col: 37, - }, - end: { - line: 36, - col: 44, - }, - }, - }, - ], - loc: { - start: { - line: 36, - col: 30, - }, - end: { line: 36, col: 45 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 36, col: 14 }, - end: { line: 36, col: 45 }, - }, - }, - ], - loc: { - start: { line: 33, col: 25 }, - end: { line: 37, col: 13 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 33, col: 12 }, - end: { line: 37, col: 13 }, - }, - }, - ], - loc: { - start: { line: 20, col: 76 }, - end: { line: 40, col: 11 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 20, col: 10 }, - end: { line: 40, col: 11 }, - }, - }, - ], - loc: { - start: { line: 16, col: 43 }, - end: { line: 43, col: 9 }, - }, - }, - ], - opts: [], - loc: { - start: { line: 16, col: 8 }, - end: { line: 43, col: 9 }, - }, - }, - ], - loc: { - start: { line: 6, col: 28 }, - end: { line: 46, col: 27 }, - }, - }, - ], - opts: [], - loc: { start: { line: 6, col: 6 }, end: { line: 46, col: 27 } }, - }, - ], - }, - ]; - runCases(c, scriptParser); - }); -}); diff --git a/packages/evmcrispr/test/test-helpers/dao.ts b/packages/evmcrispr/test/test-helpers/dao.ts deleted file mode 100644 index 86f913f6..00000000 --- a/packages/evmcrispr/test/test-helpers/dao.ts +++ /dev/null @@ -1,27 +0,0 @@ -import type { Contract } from 'ethers'; - -export const getEventArgument = async ( - selectedFilter: string, - arg: string, - contract: Contract, - transactionHash: string, -): Promise => { - return new Promise((resolve, reject) => { - const filter = contract.filters[selectedFilter](); - - contract - .queryFilter(filter) - .then((events) => { - const filteredEvents = events.filter( - (event) => event.transactionHash === transactionHash, - ); - const filteredEvent = filteredEvents[0]; - if (filteredEvent && filteredEvent.args) { - resolve(filteredEvent.args[arg]); - } else { - resolve(null); - } - }) - .catch((err) => reject(err)); - }); -}; diff --git a/packages/evmcrispr/test/test-helpers/std.ts b/packages/evmcrispr/test/test-helpers/std.ts deleted file mode 100644 index 5434d2ed..00000000 --- a/packages/evmcrispr/test/test-helpers/std.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { AST, CommandExpressionNode } from '../../src/types'; - -export const findStdCommandNode = ( - ast: AST, - commandName: string, -): CommandExpressionNode | undefined => { - const commandNode = ast.body.find( - (n) => (n as CommandExpressionNode).name === commandName, - ) as CommandExpressionNode; - - return commandNode; -}; diff --git a/packages/evmcrispr/tsconfig.json b/packages/evmcrispr/tsconfig.json deleted file mode 100644 index 079ee16a..00000000 --- a/packages/evmcrispr/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "allowJs": false, - "lib": ["es2019", "es2017", "dom"], - "module": "commonjs", - "moduleResolution": "node", - "target": "es2021" - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1304a8bc..e8f28166 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,93 +4,134 @@ importers: .: specifiers: - '@babel/core': ^7.17.10 - '@babel/preset-env': ^7.17.10 - '@babel/preset-react': ^7.16.7 - '@babel/preset-typescript': ^7.16.7 + '@1hive/evmcrispr': workspace:^0.9.0 + '@1hive/evmcrispr-aragonos-module': workspace:^0.9.0 + '@1hive/evmcrispr-giveth-module': workspace:^0.9.0 + '@1hive/evmcrispr-tenderly-module': workspace:^0.9.0 + '@1hive/evmcrispr-test-common': workspace:* '@changesets/cli': ^2.22.0 - '@nomiclabs/hardhat-ethers': ^2.0.6 - '@nomiclabs/hardhat-waffle': ^2.0.3 - '@preconstruct/cli': ^2.1.5 - '@types/chai': ^4.3.1 '@types/eslint': ^8.4.2 - '@types/mocha': ^8.2.3 '@types/node': ^14.18.16 '@types/prettier': ^2.6.0 - '@typescript-eslint/eslint-plugin': ^4.33.0 - '@typescript-eslint/parser': ^4.33.0 + '@vitest/coverage-c8': ^0.27.0 + '@vitest/ui': ^0.27.0 bundlewatch: ^0.3.3 - chai: ^4.3.6 - coveralls: ^3.1.1 - dotenv: ^16.0.1 + dotenv-cli: ^6.0.0 eslint: ^7.32.0 - eslint-config-prettier: ^8.5.0 - eslint-import-resolver-typescript: ^2.7.1 - eslint-plugin-import: ^2.26.0 - eslint-plugin-prettier: ^4.0.0 - eslint-plugin-react: ^7.29.4 - eslint-plugin-react-hooks: ^4.5.0 - ethereum-waffle: ^3.4.4 + eslint-config-evmcrispr: workspace:* + eslint-plugin-turbo: ^0.0.7 ethers: ^5.6.6 - hardhat: ^2.9.5 - husky: ^7.0.4 - lint-staged: ^12.4.1 + execa: ^6.1.0 + hardhat: ^2.12.5 + msw: ^0.47.3 pnpm: ^7.0.1 prettier: ^2.6.2 ts-node: ^10.7.0 + tsconfig-evmcrispr: workspace:* + tsup: ^6.5.0 + turbo: ^1.6.3 typedoc: ^0.22.15 typescript: ~4.7.4 + vitest: ^0.26.2 devDependencies: - '@babel/core': 7.19.1 - '@babel/preset-env': 7.19.4_@babel+core@7.19.1 - '@babel/preset-react': 7.18.6_@babel+core@7.19.1 - '@babel/preset-typescript': 7.18.6_@babel+core@7.19.1 + '@1hive/evmcrispr': link:core/evmcrispr + '@1hive/evmcrispr-aragonos-module': link:modules/aragonos + '@1hive/evmcrispr-giveth-module': link:modules/giveth + '@1hive/evmcrispr-tenderly-module': link:modules/tenderly + '@1hive/evmcrispr-test-common': link:common/test '@changesets/cli': 2.25.0 - '@nomiclabs/hardhat-ethers': 2.2.0_h4qtpcxkfvtpy6ldthi4lq2o6i - '@nomiclabs/hardhat-waffle': 2.0.3_q2f2pwtp6ggkbc2ubxxtaelloq - '@preconstruct/cli': 2.2.2 - '@types/chai': 4.3.3 '@types/eslint': 8.4.8 - '@types/mocha': 8.2.3 '@types/node': 14.18.32 '@types/prettier': 2.7.1 + '@vitest/coverage-c8': 0.27.0_@vitest+ui@0.27.0 + '@vitest/ui': 0.27.0 + bundlewatch: 0.3.3 + dotenv-cli: 6.0.0 + eslint: 7.32.0 + eslint-config-evmcrispr: link:common/eslint-config-evmcrispr + eslint-plugin-turbo: 0.0.7_eslint@7.32.0 + ethers: 5.7.1 + execa: 6.1.0 + hardhat: 2.12.5_6oasmw356qmm23djlsjgkwvrtm + msw: 0.47.4_typescript@4.7.4 + pnpm: 7.14.0 + prettier: 2.7.1 + ts-node: 10.9.1_fzm5qe273vszdnq5coqmdn2kqi + tsconfig-evmcrispr: link:common/tsconfig + tsup: 6.5.0_6oasmw356qmm23djlsjgkwvrtm + turbo: 1.6.3 + typedoc: 0.22.18_typescript@4.7.4 + typescript: 4.7.4 + vitest: 0.26.2_@vitest+ui@0.27.0 + + common/eslint-config-evmcrispr: + specifiers: + '@typescript-eslint/eslint-plugin': ^4.33.0 + '@typescript-eslint/parser': ^4.33.0 + eslint: ^7.32.0 + eslint-config-prettier: ^8.5.0 + eslint-config-turbo: ^0.0.7 + eslint-import-resolver-typescript: ^2.7.1 + eslint-plugin-import: ^2.26.0 + eslint-plugin-prettier: ^4.0.0 + eslint-plugin-react: ^7.29.4 + eslint-plugin-react-hooks: ^4.5.0 + eslint-plugin-turbo: ^0.0.7 + prettier: ^2.6.2 + typescript: 4.7.4 + devDependencies: '@typescript-eslint/eslint-plugin': 4.33.0_3ekaj7j3owlolnuhj3ykrb7u7i '@typescript-eslint/parser': 4.33.0_hxadhbs2xogijvk7vq4t2azzbu - bundlewatch: 0.3.3 - chai: 4.3.6 - coveralls: 3.1.1 - dotenv: 16.0.3 eslint: 7.32.0 eslint-config-prettier: 8.5.0_eslint@7.32.0 + eslint-config-turbo: 0.0.7_eslint@7.32.0 eslint-import-resolver-typescript: 2.7.1_hpmu7kn6tcn2vnxpfzvv33bxmy eslint-plugin-import: 2.26.0_k2fj7mtd2vnwiotnzv3dk5dwma eslint-plugin-prettier: 4.2.1_7gsvg5lgwpfdww3i7smtqxamuy eslint-plugin-react: 7.31.10_eslint@7.32.0 eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 - ethereum-waffle: 3.4.4_typescript@4.7.4 - ethers: 5.7.1 - hardhat: 2.12.0_6oasmw356qmm23djlsjgkwvrtm - husky: 7.0.4 - lint-staged: 12.5.0 - pnpm: 7.14.0 + eslint-plugin-turbo: 0.0.7_eslint@7.32.0 prettier: 2.7.1 - ts-node: 10.9.1_fzm5qe273vszdnq5coqmdn2kqi - typedoc: 0.22.18_typescript@4.7.4 typescript: 4.7.4 - packages/evmcrispr: + common/test: + specifiers: + '@1hive/evmcrispr': workspace:^0.9.0 + '@types/express': ^4.17.15 + arcsecond: ^4.1.0 + eslint-config-evmcrispr: workspace:* + express: ^4.18.2 + is-port-reachable: ^4.0.0 + isomorphic-fetch: ^3.0.0 + msw: ^0.47.3 + ora: ^6.1.2 + tsconfig-evmcrispr: workspace:* + winston: ^3.8.2 + devDependencies: + '@1hive/evmcrispr': link:../../core/evmcrispr + '@types/express': 4.17.15 + arcsecond: 4.1.0 + eslint-config-evmcrispr: link:../eslint-config-evmcrispr + express: 4.18.2 + is-port-reachable: 4.0.0 + isomorphic-fetch: 3.0.0 + msw: 0.47.4 + ora: 6.1.2 + tsconfig-evmcrispr: link:../tsconfig + winston: 3.8.2 + + common/tsconfig: + specifiers: {} + + core/evmcrispr: specifiers: '@types/isomorphic-fetch': ^0.0.36 '@types/lodash.clonedeep': ^4.5.7 arcsecond: ^4.1.0 - is-ipfs: ^6.0.2 isomorphic-fetch: ^3.0.0 jsymbol: ^0.3.5 lodash.clonedeep: ^4.5.0 - msw: ^0.47.3 - node-fetch: ^3.2.4 nyc: ^15.1.0 - ora: ^5.4.0 dependencies: arcsecond: 4.1.0 isomorphic-fetch: 3.0.0 @@ -99,11 +140,63 @@ importers: devDependencies: '@types/isomorphic-fetch': 0.0.36 '@types/lodash.clonedeep': 4.5.7 - is-ipfs: 6.0.2_node-fetch@3.2.10 - msw: 0.47.4 - node-fetch: 3.2.10 nyc: 15.1.0 - ora: 5.4.1 + + modules/aragonos: + specifiers: + '@1hive/evmcrispr': workspace:0.9.0 + '@1hive/evmcrispr-test-common': workspace:* + '@types/isomorphic-fetch': ^0.0.36 + '@types/lodash.clonedeep': ^4.5.7 + arcsecond: ^4.1.0 + eslint-config-evmcrispr: workspace:* + is-ipfs: ^6.0.2 + isomorphic-fetch: ^3.0.0 + lodash.clonedeep: ^4.5.0 + tsconfig-evmcrispr: workspace:* + dependencies: + arcsecond: 4.1.0 + is-ipfs: 6.0.2 + isomorphic-fetch: 3.0.0 + lodash.clonedeep: 4.5.0 + devDependencies: + '@1hive/evmcrispr': link:../../core/evmcrispr + '@1hive/evmcrispr-test-common': link:../../common/test + '@types/isomorphic-fetch': 0.0.36 + '@types/lodash.clonedeep': 4.5.7 + eslint-config-evmcrispr: link:../../common/eslint-config-evmcrispr + tsconfig-evmcrispr: link:../../common/tsconfig + + modules/giveth: + specifiers: + '@1hive/evmcrispr': workspace:0.9.0 + '@1hive/evmcrispr-test-common': workspace:* + '@types/isomorphic-fetch': ^0.0.36 + eslint-config-evmcrispr: workspace:* + isomorphic-fetch: ^3.0.0 + tsconfig-evmcrispr: workspace:* + vitest: ^0.26.2 + dependencies: + isomorphic-fetch: 3.0.0 + devDependencies: + '@1hive/evmcrispr': link:../../core/evmcrispr + '@1hive/evmcrispr-test-common': link:../../common/test + '@types/isomorphic-fetch': 0.0.36 + eslint-config-evmcrispr: link:../../common/eslint-config-evmcrispr + tsconfig-evmcrispr: link:../../common/tsconfig + vitest: 0.26.2 + + modules/tenderly: + specifiers: + '@1hive/evmcrispr': workspace:0.9.0 + '@1hive/evmcrispr-test-common': workspace:* + eslint-config-evmcrispr: workspace:* + tsconfig-evmcrispr: workspace:* + devDependencies: + '@1hive/evmcrispr': link:../../core/evmcrispr + '@1hive/evmcrispr-test-common': link:../../common/test + eslint-config-evmcrispr: link:../../common/eslint-config-evmcrispr + tsconfig-evmcrispr: link:../../common/tsconfig packages/evmcrispr-terminal: specifiers: @@ -154,7 +247,7 @@ importers: web-vitals: ^1.0.1 zustand: ^4.1.1 dependencies: - '@1hive/evmcrispr': link:../evmcrispr + '@1hive/evmcrispr': link:../../core/evmcrispr '@chakra-ui/anatomy': 2.1.0 '@chakra-ui/icons': 2.0.14_react@18.2.0 '@chakra-ui/react': 2.4.4_przcunyodmsiq2duiyjrphchze @@ -228,11 +321,6 @@ packages: resolution: {integrity: sha512-72a9ghR0gnESIa7jBN53U32FOVCEoztyIlKaNoU05zRhEecduGK9L9c3ww7Mp06JiR+0ls0GBPFJQwwtjn9ksg==} engines: {node: '>=6.9.0'} - /@babel/compat-data/7.19.4: - resolution: {integrity: sha512-CHIGpJcUQ5lU9KrPHTjBMhVwQG6CQjxfg36fGXl3qk/Gik1WwWachaXFuo0uCWJT/mStOKtcbFJCaVLihC1CMw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/core/7.19.1: resolution: {integrity: sha512-1H8VgqXme4UXCRv7/Wa1bq7RVymKOzC7znjyFM8KiEzwFqcKUKYNoQef4GhdklgNvoBXyW4gYhuBNCM5o1zImw==} engines: {node: '>=6.9.0'} @@ -246,7 +334,7 @@ packages: '@babel/parser': 7.19.1 '@babel/template': 7.18.10 '@babel/traverse': 7.19.1 - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 convert-source-map: 1.8.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -260,32 +348,15 @@ packages: resolution: {integrity: sha512-S1ahxf1gZ2dpoiFgA+ohK9DIpz50bJ0CWs7Zlzb54Z4sG8qmdIrGrVqmy1sAtTVRb+9CU6U8VqT9L0Zj7hxHVg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - - /@babel/generator/7.19.6: - resolution: {integrity: sha512-oHGRUQeoX1QrKeJIKVe0hwjGqNnVYsM5Nep5zo0uE0m42sLH+Fsd2pStJ5sRM1bNyTUUoz0pe2lTeMJrb/taTA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.4 + '@babel/types': 7.19.3 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 - dev: true /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 - - /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: - resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.19.4 - dev: true + '@babel/types': 7.19.3 /@babel/helper-compilation-targets/7.19.1: resolution: {integrity: sha512-LlLkkqhCMyz2lkQPvJNdIYU7O5YjWRgC2R4omjCTpZd8u8KMQzZvX4qce+/BluN1rcQiV7BoGUpmQ0LeHerbhg==} @@ -312,48 +383,6 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.1: - resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.19.4 - '@babel/core': 7.19.1 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 - dev: true - - /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.1: - resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-create-regexp-features-plugin/7.19.0_@babel+core@7.19.1: - resolution: {integrity: sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.1 - dev: true - /@babel/helper-define-polyfill-provider/0.3.3: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: @@ -369,58 +398,28 @@ packages: - supports-color dev: false - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.19.1: - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.1_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} - /@babel/helper-explode-assignable-expression/7.18.6: - resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.4 - dev: true - /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.10 - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 - - /@babel/helper-member-expression-to-functions/7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.4 - dev: true + '@babel/types': 7.19.3 /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-module-transforms/7.19.0: resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} @@ -438,61 +437,10 @@ packages: - supports-color dev: true - /@babel/helper-module-transforms/7.19.6: - resolution: {integrity: sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.19.4 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.6 - '@babel/types': 7.19.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-optimise-call-expression/7.18.6: - resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.4 - dev: true - /@babel/helper-plugin-utils/7.19.0: resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-wrap-function': 7.19.0 - '@babel/types': 7.19.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-replace-supers/7.19.1: - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.19.1 - '@babel/types': 7.19.4 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-simple-access/7.18.6: resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} engines: {node: '>=6.9.0'} @@ -500,35 +448,16 @@ packages: '@babel/types': 7.19.3 dev: true - /@babel/helper-simple-access/7.19.4: - resolution: {integrity: sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.4 - dev: true - - /@babel/helper-skip-transparent-expression-wrappers/7.18.9: - resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.19.4 - dev: true - /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.19.0 + '@babel/types': 7.19.3 /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} - engines: {node: '>=6.9.0'} - dev: true - /@babel/helper-validator-identifier/7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} @@ -537,18 +466,6 @@ packages: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} - /@babel/helper-wrap-function/7.19.0: - resolution: {integrity: sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.19.6 - '@babel/types': 7.19.4 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helpers/7.19.0: resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} engines: {node: '>=6.9.0'} @@ -573,5661 +490,3911 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.19.0 - - /@babel/parser/7.19.6: - resolution: {integrity: sha512-h1IUp81s2JYJ3mRkdxJgs4UvmSsRvDrx5ICSJbPvtWYv5i1nTBGcBpnog+89rAFMwvvru6E5NUHdBe01UeSzYA==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.19.4 - dev: true + '@babel/types': 7.19.3 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + /@babel/plugin-syntax-jsx/7.18.6: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 '@babel/helper-plugin-utils': 7.19.0 - dev: true + dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.1: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.13.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.1 '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 dev: true - /@babel/plugin-proposal-async-generator-functions/7.19.1_@babel+core@7.19.1: - resolution: {integrity: sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==} + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.1: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.1 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.1: + resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.19.1: + resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.12.0 + '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.1: + resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.19.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.1 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.1 + '@babel/types': 7.19.0 dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + /@babel/plugin-transform-runtime/7.19.1: + resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 + '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.1 - dev: true + babel-plugin-polyfill-corejs2: 0.3.3 + babel-plugin-polyfill-corejs3: 0.6.0 + babel-plugin-polyfill-regenerator: 0.4.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + /@babel/runtime/7.19.0: + resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.1 - dev: true + regenerator-runtime: 0.13.9 - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + /@babel/template/7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.1 - dev: true + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.19.1 + '@babel/types': 7.19.3 - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + /@babel/traverse/7.19.1: + resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.1 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.19.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.19.1 + '@babel/types': 7.19.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + /@babel/traverse/7.19.1_supports-color@5.5.0: + resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.1 - dev: true + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.19.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.19.1 + '@babel/types': 7.19.0 + debug: 4.3.4_supports-color@5.5.0 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-proposal-object-rest-spread/7.19.4_@babel+core@7.19.1: - resolution: {integrity: sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==} + /@babel/types/7.19.0: + resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.19.4 - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.1 - dev: true + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + /@babel/types/7.19.3: + resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.1 - dev: true + '@babel/helper-string-parser': 7.18.10 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.1 + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/accordion/2.1.4_v3e3sxd2uk3a5ht2jlbmshfate: + resolution: {integrity: sha512-PQFW6kr+Bdru0DjKA8akC4BAz1VAJisLgo4TsJwjPO2gTS0zr99C+3bBs9uoDnjSJAf18/Q5zdXv11adA8n2XA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false - /@babel/plugin-proposal-private-property-in-object/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/alert/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-7LqPv6EUBte4XM/Q2qBFIT5o4BC0dSlni9BHOH2BgAc5B1NF+pBAMDTUH7JNBiN7RHTV7EHAIWDziiX/NK28+Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + /@chakra-ui/anatomy/2.1.0: + resolution: {integrity: sha512-E3jMPGqKuGTbt7mKtc8g/MOOenw2c4wqRC1vOypyFgmC8wsewdY+DJJNENF3atXAK7p5VMBKQfZ7ipNlHnDAwA==} + dev: false - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.19.1: - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + /@chakra-ui/avatar/2.2.1_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-sgiogfLM8vas8QJTt7AJI4XxNXYdViCWj+xYJwyOwUN93dWKImqqx3O2ihCXoXTIqQWg1rcEgoJ5CxCg6rQaQQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/image': 2.0.12_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.19.1: - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + /@chakra-ui/breadcrumb/2.1.1_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-OSa+F9qJ1xmF0zVxC1GU46OWbbhGf0kurHioSB729d+tRw/OMzmqrrfCJ7KVUUN8NEnTZXT5FIgokMvHGEt+Hg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.19.1: - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/breakpoint-utils/2.0.5: + resolution: {integrity: sha512-8uhrckMwoR/powlAhxiFZPM0s8vn0B2yEyEaRcwpy5NmRAJSTEotC2WkSyQl/Cjysx9scredumB5g+fBX7IqGQ==} + dev: false + + /@chakra-ui/button/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-T9W/zHpHZVcbx/BMg0JIXCgRycut/eYoTYee/E+eBxyPCH45n308AsYU2bZ8TgZxUwbYNRgMp4qRL/KHUQDv5g==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + /@chakra-ui/card/2.1.3_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-8ET6ZOo6HtJutetqHJVOz+VpZvrWMGFAELfHsCuA/7orp7QZyUyXqfA79cZqZXCd3C4zn2G8H0bkiQFvzxQgOw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + /@chakra-ui/checkbox/2.2.5_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-7fNH+Q2nB2uMSnYAPtYxnuwZ1MOJqblZHa/ScfZ/fjiPDyEae1m068ZP/l9yJ5zlawYMTkp83m/JVcu5QFYurA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/visually-hidden': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@zag-js/focus-visible': 0.1.0 + react: 18.2.0 + dev: false - /@babel/plugin-syntax-import-assertions/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/clickable/2.0.11_react@18.2.0: + resolution: {integrity: sha512-5Y2dl5cxNgOxHbjxyxsL6Vdze4wUUvwsMCCW3kXwgz2OUI2y5UsBZNcvhNJx3RchJEd0fylMKiKoKmnZMHN2aw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + /@chakra-ui/close-button/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-ZI/3p84FPlW0xoDCZYqsnIvR6bTc2d/TlhwyTHsDDxq9ZOWp9c2JicVn6WTdWGdshk8itnZZdG50IcnizGnimA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-jsx/7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} + /@chakra-ui/color-mode/2.1.10_react@18.2.0: + resolution: {integrity: sha512-aUPouOUPn7IPm1v00/9AIkRuNrkCwJlbjVL1kJzLzxijYjbHvEHPxntITt+JWjtXPT8xdOq6mexLYCOGA67JwQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/helper-plugin-utils': 7.19.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + react: 18.2.0 dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} + /@chakra-ui/control-box/2.0.11_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-UJb4vqq+/FPuwTCuaPeHa2lwtk6u7eFvLuwDCST2e/sBWGJC1R+1/Il5pHccnWs09FWxyZ9v/Oxkg/CG3jZR4Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.19.1: - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + /@chakra-ui/counter/2.0.11_react@18.2.0: + resolution: {integrity: sha512-1YRt/jom+m3iWw9J9trcM6rAHDvD4lwThiO9raxUK7BRsYUhnPZvsMpcXU1Moax218C4rRpbI9KfPLaig0m1xQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/number-utils': 2.0.5 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + /@chakra-ui/css-reset/2.0.10_hp5f5nkljdiwilp4rgxyefcplu: + resolution: {integrity: sha512-FwHOfw2P4ckbpSahDZef2KoxcvHPUg09jlicWdp24/MjdsOO5PAB/apm2UBvQflY4WAJyOqYaOdnXFlR6nF4cQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/react': '>=10.0.35' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 + react: 18.2.0 + dev: false - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.19.1: - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + /@chakra-ui/descendant/3.0.11_react@18.2.0: + resolution: {integrity: sha512-sNLI6NS6uUgrvYS6Imhoc1YlI6bck6pfxMBJcnXVSfdIjD6XjCmeY2YgzrtDS+o+J8bB3YJeIAG/vsVy5USE5Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + /@chakra-ui/dom-utils/2.0.4: + resolution: {integrity: sha512-P936+WKinz5fgHzfwiUQjE/t7NC8bU89Tceim4tbn8CIm/9b+CsHX64eNw4vyJqRwt78TXQK7aGBIbS18R0q5Q==} + dev: false - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + /@chakra-ui/editable/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-kIFPufzIlViNv7qi2PxxWWBvjLb+3IP5hUGmqOA9qcYz5TAdqblQqDClm0iajlIDNUFWnS4h056o8jKsQ42a5A==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-focus-on-pointer-down': 2.0.4_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.19.1: - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + /@chakra-ui/event-utils/2.0.6: + resolution: {integrity: sha512-ZIoqUbgJ5TcCbZRchMv4n7rOl1JL04doMebED88LO5mux36iVP9er/nnOY4Oke1bANKKURMrQf5VTT9hoYeA7A==} + dev: false - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.19.1: - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/focus-lock/2.0.13_kzbn2opkn2327fwg5yzwzya5o4: + resolution: {integrity: sha512-AVSJt+3Ukia/m9TCZZgyWvTY7pw88jArivWVJ2gySGYYIs6z/FJMnlwbCVldV2afS0g3cYaii7aARb/WrlG34Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/dom-utils': 2.0.4 + react: 18.2.0 + react-focus-lock: 2.9.2_kzbn2opkn2327fwg5yzwzya5o4 + transitivePeerDependencies: + - '@types/react' + dev: false - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.19.1: - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/form-control/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-J964JlgrxP+LP3kYmLk1ttbl73u6ghT+JQDjEjkEUc8lSS9Iv4u9XkRDQHuz2t2y0KHjQdH12PUfUfBqcITbYw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/hooks/2.1.2_react@18.2.0: + resolution: {integrity: sha512-/vDBOqqnho9q++lay0ZcvnH8VuE0wT2OkZj+qDwFwjiHAtGPVxHCSpu9KC8BIHME5TlWjyO6riVyUCb2e2ip6w==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-utils': 2.0.9_react@18.2.0 + '@chakra-ui/utils': 2.0.12 + compute-scroll-into-view: 1.0.14 + copy-to-clipboard: 3.3.1 + react: 18.2.0 + dev: false - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/icon/3.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-RaDLC4psd8qyInY2RX4AlYRfpLBNw3VsMih17BFf8EESVhBXNJcYy7Q9eMV/K4NvZfZT42vuVqGVNFmkG89lBQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} - engines: {node: '>=6.9.0'} + /@chakra-ui/icon/3.0.13_react@18.2.0: + resolution: {integrity: sha512-RaDLC4psd8qyInY2RX4AlYRfpLBNw3VsMih17BFf8EESVhBXNJcYy7Q9eMV/K4NvZfZT42vuVqGVNFmkG89lBQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/shared-utils': 2.0.3 + react: 18.2.0 + dev: false - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/icons/2.0.14_react@18.2.0: + resolution: {integrity: sha512-ZHjZ+ekDoW27MTDKqmKasBDEeSJB+dZXn2GubCPLVIzzXdL54TfwMrKOzLBJ2Q68YqFr7+OBbhlsLvKUKPSreA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/icon': 3.0.13_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-block-scoping/7.19.4_@babel+core@7.19.1: - resolution: {integrity: sha512-934S2VLLlt2hRJwPf4MczaOr4hYF0z+VKPwqTNxyKX7NthTiPfhuKFWQZHXRM0vh/wo/VyXB3s4bZUNA08l+tQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/image/2.0.12_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-uclFhs0+wq2qujGu8Wk4eEWITA3iZZQTitGiFSEkO9Ws5VUH+Gqtn3mUilH0orubrI5srJsXAmjVTuVwge1KJQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-classes/7.19.0_@babel+core@7.19.1: - resolution: {integrity: sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==} - engines: {node: '>=6.9.0'} + /@chakra-ui/input/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-CkSrUJeKWogOSt2pUf2vVv5s0bUVcAi4/XGj1JVCCfyIX6a6h1m8R69MShTPxPiQ0Mdebq5ATrW/aZQQXZzRGQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.1 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 - '@babel/helper-split-export-declaration': 7.18.6 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/object-utils': 2.0.5 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/layout/2.1.11_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-UP19V8EeI/DEODbWrZlqC0sg248bpFaWpMiM/+g9Bsxs9aof3yexpMD/7gb0yrfbIrkdvSBrcQeqxXGzbfoopw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/breakpoint-utils': 2.0.5 + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/object-utils': 2.0.5 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-destructuring/7.19.4_@babel+core@7.19.1: - resolution: {integrity: sha512-t0j0Hgidqf0aM86dF8U+vXYReUgJnlv4bZLsyoPnwZNrGY+7/38o8YjaELrvHeVfTZao15kjR0PVv0nju2iduA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + /@chakra-ui/lazy-utils/2.0.3: + resolution: {integrity: sha512-SQ5I5rJrcHpVUcEftHLOh8UyeY+06R8Gv3k2RjcpvM6mb2Gktlz/4xl2GcUh3LWydgGQDW/7Rse5rQhKWgzmcg==} + dev: false - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/live-region/2.0.11_react@18.2.0: + resolution: {integrity: sha512-ltObaKQekP75GCCbN+vt1/mGABSCaRdQELmotHTBc5AioA3iyCDHH69ev+frzEwLvKFqo+RomAdAAgqBIMJ02Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/media-query/3.2.8_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-djmEg/eJ5Qrjn7SArTqjsvlwF6mNeMuiawrTwnU+0EKq9Pq/wVSb7VaIhxdQYJLA/DbRhE/KPMogw1LNVKa4Rw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/breakpoint-utils': 2.0.5 + '@chakra-ui/react-env': 2.0.11_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/menu/2.1.5_v3e3sxd2uk3a5ht2jlbmshfate: + resolution: {integrity: sha512-2UusrQtxHcqcO9n/0YobNN3RJC8yAZU6oJbRPuvsQ9IL89scEWCTIxXEYrnIjeh/5zikcSEDGo9zM9Udg/XcsA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/clickable': 2.0.11_react@18.2.0 + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/lazy-utils': 2.0.3 + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-animation-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-focus-effect': 2.0.7_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-outside-click': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.19.1: - resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/modal/2.2.5_fqc5h3y4b43vkv2gsskahlcs7e: + resolution: {integrity: sha512-QIoN89bT5wnR71wxZFHt7vsS65yF9WCfIwDtFk8ifxJORPi/UkLMwBpjTV2Jfsxd22W6Oo2VOpRR0a5WFeK+jA==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' + react-dom: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/focus-lock': 2.0.13_kzbn2opkn2327fwg5yzwzya5o4 + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq + aria-hidden: 1.2.1_kzbn2opkn2327fwg5yzwzya5o4 + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-remove-scroll: 2.5.5_kzbn2opkn2327fwg5yzwzya5o4 + transitivePeerDependencies: + - '@types/react' + dev: false - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/number-input/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-IARUAbP4pn1gP5fY2dK4wtbR3ONjzHgTjH4Zj3ErZvdu/yTURLaZmlb6UGHwgqjWLyioactZ/+n4Njj5CRjs8w==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.1 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/counter': 2.0.11_react@18.2.0 + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-interval': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/number-utils/2.0.5: + resolution: {integrity: sha512-Thhohnlqze0i5HBJO9xkfOPq1rv3ji/hNPf2xh1fh4hxrNzdm3HCkz0c6lyRQwGuVoeltEHysYZLH/uWLFTCSQ==} + dev: false + + /@chakra-ui/object-utils/2.0.5: + resolution: {integrity: sha512-/rIMoYI3c2uLtFIrnTFOPRAI8StUuu335WszqKM0KAW1lwG9H6uSbxqlpZT1Pxi/VQqZKfheGiMQOx5lfTmM/A==} + dev: false + + /@chakra-ui/pin-input/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-51cioNYpBSgi9/jq6CrzoDvo8fpMwFXu3SaFRbKO47s9Dz/OAW0MpjyabTfSpwOv0xKZE+ayrYGJopCzZSWXPg==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/popover/2.1.4_v3e3sxd2uk3a5ht2jlbmshfate: + resolution: {integrity: sha512-NXVtyMxYzDKzzQph/+GFRSM3tEj3gNvlCX/xGRsCOt9I446zJ1InCd/boXQKAc813coEN9McSOjNWgo+NCBD+Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/lazy-utils': 2.0.3 + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-animation-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-focus-effect': 2.0.7_react@18.2.0 + '@chakra-ui/react-use-focus-on-pointer-down': 2.0.4_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + dev: false - /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.19.1: - resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/popper/3.0.10_react@18.2.0: + resolution: {integrity: sha512-6LacbBGX0piHWY/DYxOGCTTFAoRGRHpGIRzTgfNy8jxw4f+rukaVudd4Pc2fwjCTdobJKM8nGNYIYNv9/Dmq9Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-module-transforms': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@popperjs/core': 2.11.6 + react: 18.2.0 + dev: false - /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.19.1: - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/portal/2.0.12_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-8D/1fFUdbJtzyGL5sCBIb4oyTnPG2v6rx/L/qbG43FcXDrongmzLj0+tJ//PbJr+5hxjXAWFUjpPvyx10pTN6Q==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' + react-dom: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-module-transforms': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-simple-access': 7.19.4 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false - /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.19.1: - resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/progress/2.1.2_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-ofhMWTqCxnm1NiP/zH4SV7EvOLogfX15MSMTNfGqZv6t8eSSeTn6oRRzsTSllJfSqDey7oZNCRbP7vDhvx9HtQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.19.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-identifier': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + react: 18.2.0 + dev: false - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/provider/2.0.26_5rzy53przelm5jchjmb5vr6dxy: + resolution: {integrity: sha512-ln5c3zSFvN1WrkPkX/KOWp+CPg6y8opASlZvWvM+1lTpNX82FkXyPiQYjaemGGbKuooqdRMylseWBStoFwjxOw==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + react: '>=18' + react-dom: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-module-transforms': 7.19.0 - '@babel/helper-plugin-utils': 7.19.0 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/css-reset': 2.0.10_hp5f5nkljdiwilp4rgxyefcplu + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-env': 2.0.11_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/utils': 2.0.12 + '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 + '@emotion/styled': 11.10.5_qvatmowesywn4ye42qoh247szu + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false - /@babel/plugin-transform-named-capturing-groups-regex/7.19.1_@babel+core@7.19.1: - resolution: {integrity: sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/radio/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-e/hY1g92Xdu5d5A27NFfa1+ccE2q/A5H7sc/M7p0fId6KO33Dst25Hy+HThtqnYN0Y3Om58fiXEKo5SsdtvSfA==} peerDependencies: - '@babel/core': ^7.0.0 + '@chakra-ui/system': '>=2.0.0' + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@zag-js/focus-visible': 0.1.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-children-utils/2.0.4_react@18.2.0: + resolution: {integrity: sha512-qsKUEfK/AhDbMexWo5JhmdlkxLg5WEw2dFh4XorvU1/dTYsRfP6cjFfO8zE+X3F0ZFNsgKz6rbN5oU349GLEFw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-context/2.0.5_react@18.2.0: + resolution: {integrity: sha512-WYS0VBl5Q3/kNShQ26BP+Q0OGMeTQWco3hSiJWvO2wYLY7N1BLq6dKs8vyKHZfpwKh2YL2bQeAObi+vSkXp6tQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-replace-supers': 7.19.1 - transitivePeerDependencies: - - supports-color - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-parameters/7.18.8_@babel+core@7.19.1: - resolution: {integrity: sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-env/2.0.11_react@18.2.0: + resolution: {integrity: sha512-rPwUHReSWh7rbCw0HePa8Pvc+Q82fUFvVjHTIbXKnE6d+01cCE7j4f1NLeRD9pStKPI6sIZm9xTGvOCzl8F8iw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-types/2.0.5_react@18.2.0: + resolution: {integrity: sha512-GApp+R/VjS1UV5ms5irrij5LOIgUM0dqSVHagyEFEz88LRKkqMD9RuO577ZsVd4Gn0ULsacVJCUA0HtNUBJNzA==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true - - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - dev: true - - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-animation-state/2.0.6_react@18.2.0: + resolution: {integrity: sha512-M2kUzZkSBgDpfvnffh3kTsMIM3Dvn+CTMqy9zfY97NL4P3LAWL1MuFtKdlKfQ8hs/QpwS/ew8CTmCtaywn4sKg==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/dom-utils': 2.0.4 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-callback-ref/2.0.5_react@18.2.0: + resolution: {integrity: sha512-vKnXleD2PzB0nGabY35fRtklMid4z7cecbMG0fkasNNsgWmrQcXJOuEKUUVCynL6FBU6gBnpKFi5Aqj6x+K4tw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.1: - resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-controllable-state/2.0.6_react@18.2.0: + resolution: {integrity: sha512-7WuKrhQkpSRoiI5PKBvuIsO46IIP0wsRQgXtStSaIXv+FIvIJl9cxQXTbmZ5q1Ds641QdAUKx4+6v0K/zoZEHg==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.1 - '@babel/types': 7.19.0 - dev: true + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-disclosure/2.0.6_react@18.2.0: + resolution: {integrity: sha512-4UPePL+OcCY37KZ585iLjg8i6J0sjpLm7iZG3PUwmb97oKHVHq6DpmWIM0VfSjcT6AbSqyGcd5BXZQBgwt8HWQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-regenerator/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-event-listener/2.0.5_react@18.2.0: + resolution: {integrity: sha512-etLBphMigxy/cm7Yg22y29gQ8u/K3PniR5ADZX7WVX61Cgsa8ciCqjTE9sTtlJQWAQySbWxt9+mjlT5zaf+6Zw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - regenerator-transform: 0.15.0 - dev: true + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-focus-effect/2.0.7_react@18.2.0: + resolution: {integrity: sha512-wI8OUNwfbkusajLac8QtjfSyNmsNu1D5pANmnSHIntHhui6Jwv75Pxx7RgmBEnfBEpleBndhR9E75iCjPLhZ/A==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/dom-utils': 2.0.4 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-runtime/7.19.1: - resolution: {integrity: sha512-2nJjTUFIzBMP/f/miLxEK9vxwW/KUXsdvN4sR//TmuDhe6yU2h57WmIOE12Gng3MDP/xpjUV/ToZRdcf8Yj4fA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-focus-on-pointer-down/2.0.4_react@18.2.0: + resolution: {integrity: sha512-L3YKouIi77QbXH9mSLGEFzJbJDhyrPlcRcuu+TSC7mYaK9E+3Ap+RVSAVxj+CfQz7hCWpikPecKDuspIPWlyuA==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-plugin-utils': 7.19.0 - babel-plugin-polyfill-corejs2: 0.3.3 - babel-plugin-polyfill-corejs3: 0.6.0 - babel-plugin-polyfill-regenerator: 0.4.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + react: 18.2.0 dev: false - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-interval/2.0.3_react@18.2.0: + resolution: {integrity: sha512-Orbij5c5QkL4NuFyU4mfY/nyRckNBgoGe9ic8574VVNJIXfassevZk0WB+lvqBn5XZeLf2Tj+OGJrg4j4H9wzw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.19.1: - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-latest-ref/2.0.3_react@18.2.0: + resolution: {integrity: sha512-exNSQD4rPclDSmNwtcChUCJ4NuC2UJ4amyNGBqwSjyaK5jNHk2kkM7rZ6I0I8ul+26lvrXlSuhyv6c2PFwbFQQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.18.9 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-merge-refs/2.0.5_react@18.2.0: + resolution: {integrity: sha512-uc+MozBZ8asaUpO8SWcK6D4svRPACN63jv5uosUkXJR+05jQJkUofkfQbf2HeGVbrWCr0XZsftLIm4Mt/QMoVw==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-outside-click/2.0.5_react@18.2.0: + resolution: {integrity: sha512-WmtXUeVaMtxP9aUGGG+GQaDeUn/Bvf8TI3EU5mE1+TtqLHxyA9wtvQurynrogvpilLaBADwn/JeBeqs2wHpvqA==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.19.1: - resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-pan-event/2.0.6_react@18.2.0: + resolution: {integrity: sha512-Vtgl3c+Mj4hdehFRFIgruQVXctwnG1590Ein1FiU8sVnlqO6bpug6Z+B14xBa+F+X0aK+DxnhkJFyWI93Pks2g==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@chakra-ui/event-utils': 2.0.6 + '@chakra-ui/react-use-latest-ref': 2.0.3_react@18.2.0 + framesync: 5.3.0 + react: 18.2.0 + dev: false - /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.1: - resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-previous/2.0.3_react@18.2.0: + resolution: {integrity: sha512-A2ODOa0rm2HM4aqXfxxI0zPLcn5Q7iBEjRyfIQhb+EH+d2OFuj3L2slVoIpp6e/km3Xzv2d+u/WbjgTzdQ3d0w==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.19.1: - resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-safe-layout-effect/2.0.3_react@18.2.0: + resolution: {integrity: sha512-dlTvQURzmdfyBbNdydgO4Wy2/HV8aJN8LszTtyb5vRZsyaslDM/ftcxo8E8QjHwRLD/V1Epb/A8731QfimfVaQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + react: 18.2.0 + dev: false - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-size/2.0.5_react@18.2.0: + resolution: {integrity: sha512-4arAApdiXk5uv5ZeFKltEUCs5h3yD9dp6gTIaXbAdq+/ENK3jMWTwlqzNbJtCyhwoOFrblLSdBrssBMIsNQfZQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-create-regexp-features-plugin': 7.19.0_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - dev: true + '@zag-js/element-size': 0.1.0 + react: 18.2.0 + dev: false - /@babel/preset-env/7.19.4_@babel+core@7.19.1: - resolution: {integrity: sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-use-timeout/2.0.3_react@18.2.0: + resolution: {integrity: sha512-rBBUkZSQq3nJQ8fuMkgZNY2Sgg4vKiKNp05GxAwlT7TitOfVZyoTriqQpqz296bWlmkICTZxlqCWfE5fWpsTsg==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/compat-data': 7.19.4 - '@babel/core': 7.19.1 - '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-async-generator-functions': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-object-rest-spread': 7.19.4_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-private-property-in-object': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.19.1 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.19.1 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-import-assertions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.19.1 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.19.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.19.1 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.19.1 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-block-scoping': 7.19.4_@babel+core@7.19.1 - '@babel/plugin-transform-classes': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-destructuring': 7.19.4_@babel+core@7.19.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.19.1 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-named-capturing-groups-regex': 7.19.1_@babel+core@7.19.1 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-parameters': 7.18.8_@babel+core@7.19.1 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-regenerator': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.19.1 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.19.1 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.19.1 - '@babel/preset-modules': 0.1.5_@babel+core@7.19.1 - '@babel/types': 7.19.4 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.19.1 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.19.1 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.19.1 - core-js-compat: 3.25.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + react: 18.2.0 + dev: false - /@babel/preset-modules/0.1.5_@babel+core@7.19.1: - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + /@chakra-ui/react-use-update-effect/2.0.5_react@18.2.0: + resolution: {integrity: sha512-y9tCMr1yuDl8ATYdh64Gv8kge5xE1DMykqPDZw++OoBsTaWr3rx40wblA8NIWuSyJe5ErtKP2OeglvJkYhryJQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.19.1 - '@babel/types': 7.19.4 - esutils: 2.0.3 - dev: true + react: 18.2.0 + dev: false - /@babel/preset-react/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react-utils/2.0.9_react@18.2.0: + resolution: {integrity: sha512-nlwPBVlQmcl1PiLzZWyrT3FSnt3vKSkBMzQ0EF4SJWA/nOIqTvmffb5DCzCqPzgQaE/Da1Xgus+JufFGM8GLCQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + react: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.19.1 - dev: true + '@chakra-ui/utils': 2.0.12 + react: 18.2.0 + dev: false - /@babel/preset-typescript/7.18.6_@babel+core@7.19.1: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} + /@chakra-ui/react/2.4.4_przcunyodmsiq2duiyjrphchze: + resolution: {integrity: sha512-mA0Js3qpRBTmhPuBlBw85OG9ot7uh7+4IjsASmkzbpJVB1Kz9Z+7RBOpjHfK/03zEsRp+XYrb1ps0DYl8ih5bQ==} peerDependencies: - '@babel/core': ^7.0.0-0 + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 + framer-motion: '>=4.0.0' + react: '>=18' + react-dom: '>=18' dependencies: - '@babel/core': 7.19.1 - '@babel/helper-plugin-utils': 7.19.0 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/runtime/7.19.0: - resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.9 - - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 - - /@babel/traverse/7.19.1: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/traverse/7.19.1_supports-color@5.5.0: - resolution: {integrity: sha512-0j/ZfZMxKukDaag2PtOPDbwuELqIar6lLskVPPJDjXMXjfLb1Obo/1yjxIGqqAJrmfaTIY3z2wFLAQ7qSkLsuA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.0 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.1 - '@babel/types': 7.19.0 - debug: 4.3.4_supports-color@5.5.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@babel/traverse/7.19.6: - resolution: {integrity: sha512-6l5HrUCzFM04mfbG09AagtYyR2P0B71B1wN7PfSPiksDPz2k5H9CBC1tcZpz2M8OxbKTPccByoOJ22rUKbpmQQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.19.6 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.19.6 - '@babel/types': 7.19.4 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types/7.19.0: - resolution: {integrity: sha512-YuGopBq3ke25BVSiS6fgF49Ul9gH1x70Bcr6bqRLjWCkcX8Hre1/5+z+IiWOIerRMSSEfGZVB9z9kyq7wVs9YA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - - /@babel/types/7.19.3: - resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types/7.19.4: - resolution: {integrity: sha512-M5LK7nAeS6+9j7hAq+b3fQs+pNfUtTGq+yFFfHnauFA8zQtLRfmuipmsKDKKLuyG+wC8ABW43A153YNawNTEtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 - to-fast-properties: 2.0.0 - dev: true - - /@chakra-ui/accordion/2.1.4_v3e3sxd2uk3a5ht2jlbmshfate: - resolution: {integrity: sha512-PQFW6kr+Bdru0DjKA8akC4BAz1VAJisLgo4TsJwjPO2gTS0zr99C+3bBs9uoDnjSJAf18/Q5zdXv11adA8n2XA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/accordion': 2.1.4_v3e3sxd2uk3a5ht2jlbmshfate + '@chakra-ui/alert': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/avatar': 2.2.1_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/breadcrumb': 2.1.1_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/card': 2.1.3_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/checkbox': 2.2.5_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/control-box': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/counter': 2.0.11_react@18.2.0 + '@chakra-ui/css-reset': 2.0.10_hp5f5nkljdiwilp4rgxyefcplu + '@chakra-ui/editable': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/hooks': 2.1.2_react@18.2.0 '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/image': 2.0.12_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/input': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/layout': 2.1.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/live-region': 2.0.11_react@18.2.0 + '@chakra-ui/media-query': 3.2.8_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/menu': 2.1.5_v3e3sxd2uk3a5ht2jlbmshfate + '@chakra-ui/modal': 2.2.5_fqc5h3y4b43vkv2gsskahlcs7e + '@chakra-ui/number-input': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/pin-input': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/popover': 2.1.4_v3e3sxd2uk3a5ht2jlbmshfate + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/progress': 2.1.2_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/provider': 2.0.26_5rzy53przelm5jchjmb5vr6dxy + '@chakra-ui/radio': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-env': 2.0.11_react@18.2.0 + '@chakra-ui/select': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/skeleton': 2.0.20_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/slider': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/stat': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/switch': 2.0.17_v3e3sxd2uk3a5ht2jlbmshfate '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/table': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/tabs': 2.1.5_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/tag': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/textarea': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi + '@chakra-ui/theme-utils': 2.0.6 + '@chakra-ui/toast': 4.0.6_jot6j767hrghrt7s4rrdwbs5jm + '@chakra-ui/tooltip': 2.2.3_jot6j767hrghrt7s4rrdwbs5jm '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq + '@chakra-ui/utils': 2.0.12 + '@chakra-ui/visually-hidden': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 + '@emotion/styled': 11.10.5_qvatmowesywn4ye42qoh247szu framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - '@types/react' dev: false - /@chakra-ui/alert/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-7LqPv6EUBte4XM/Q2qBFIT5o4BC0dSlni9BHOH2BgAc5B1NF+pBAMDTUH7JNBiN7RHTV7EHAIWDziiX/NK28+Q==} + /@chakra-ui/select/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-fvVGxAtLaIXGOMicrzSa6imMw5h26S1ar3xyNmXgR40dbpTPHmtQJkbHBf9FwwQXgSgKWgBzsztw5iDHCpPVzA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/anatomy/2.1.0: - resolution: {integrity: sha512-E3jMPGqKuGTbt7mKtc8g/MOOenw2c4wqRC1vOypyFgmC8wsewdY+DJJNENF3atXAK7p5VMBKQfZ7ipNlHnDAwA==} + /@chakra-ui/shared-utils/2.0.3: + resolution: {integrity: sha512-pCU+SUGdXzjAuUiUT8mriekL3tJVfNdwSTIaNeip7k/SWDzivrKGMwAFBxd3XVTDevtVusndkO4GJuQ3yILzDg==} dev: false - /@chakra-ui/avatar/2.2.1_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-sgiogfLM8vas8QJTt7AJI4XxNXYdViCWj+xYJwyOwUN93dWKImqqx3O2ihCXoXTIqQWg1rcEgoJ5CxCg6rQaQQ==} + /@chakra-ui/skeleton/2.0.20_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-PEjjAHT/X8XEHTzXlN0kL883m1Z4Yo4A/ztv4VOvBTnXhHl2wFrrwucxj8TS3eWoCJ65dY9b0ZySP9ARTUe1ng==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/image': 2.0.12_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/media-query': 3.2.8_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-use-previous': 2.0.3_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/breadcrumb/2.1.1_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-OSa+F9qJ1xmF0zVxC1GU46OWbbhGf0kurHioSB729d+tRw/OMzmqrrfCJ7KVUUN8NEnTZXT5FIgokMvHGEt+Hg==} + /@chakra-ui/slider/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-0nEu9+OAPv4yzMrTH6SkNNMiXbLRe7lXYv1gWbpDGOsNgpGDFYmA7qpzsiiJEJoynqcJZqmDPArqWWPNYeY6Sw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 + '@chakra-ui/number-utils': 2.0.5 '@chakra-ui/react-context': 2.0.5_react@18.2.0 + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-latest-ref': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-pan-event': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-size': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/breakpoint-utils/2.0.5: - resolution: {integrity: sha512-8uhrckMwoR/powlAhxiFZPM0s8vn0B2yEyEaRcwpy5NmRAJSTEotC2WkSyQl/Cjysx9scredumB5g+fBX7IqGQ==} - dev: false - - /@chakra-ui/button/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-T9W/zHpHZVcbx/BMg0JIXCgRycut/eYoTYee/E+eBxyPCH45n308AsYU2bZ8TgZxUwbYNRgMp4qRL/KHUQDv5g==} + /@chakra-ui/spinner/2.0.11_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-piO2ghWdJzQy/+89mDza7xLhPnW7pA+ADNbgCb1vmriInWedS41IBKe+pSPz4IidjCbFu7xwKE0AerFIbrocCA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/card/2.1.3_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-8ET6ZOo6HtJutetqHJVOz+VpZvrWMGFAELfHsCuA/7orp7QZyUyXqfA79cZqZXCd3C4zn2G8H0bkiQFvzxQgOw==} + /@chakra-ui/stat/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-6XeuE/7w0BjyCHSxMbsf6/rNOOs8BSit1NS7g7+Jd/40Pc/SKlNWLd3kxXPid4eT3RwyNIdMPtm30OActr9nqQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: + '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/checkbox/2.2.5_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-7fNH+Q2nB2uMSnYAPtYxnuwZ1MOJqblZHa/ScfZ/fjiPDyEae1m068ZP/l9yJ5zlawYMTkp83m/JVcu5QFYurA==} + /@chakra-ui/styled-system/2.5.0: + resolution: {integrity: sha512-xbvD9MTSXqsPbunCCxfebqslokU53zUefPDQJhgXNKKeMq0NGEgNdGOFXC8oFDP1S/I1GgohKcrSbrSXXLw8yg==} + dependencies: + csstype: 3.1.1 + lodash.mergewith: 4.6.2 + dev: false + + /@chakra-ui/switch/2.0.17_v3e3sxd2uk3a5ht2jlbmshfate: + resolution: {integrity: sha512-BQabfC6qYi5xBJvEFPzKq0yl6fTtTNNEHTid5r7h0PWcCnAiHwQJTpQRpxp+AjK569LMLtTXReTZvNBrzEwOrA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' react: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/checkbox': 2.2.5_iuckyjetixsa6e5uo5ymtjguvq '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@chakra-ui/visually-hidden': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@zag-js/focus-visible': 0.1.0 + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 dev: false - /@chakra-ui/clickable/2.0.11_react@18.2.0: - resolution: {integrity: sha512-5Y2dl5cxNgOxHbjxyxsL6Vdze4wUUvwsMCCW3kXwgz2OUI2y5UsBZNcvhNJx3RchJEd0fylMKiKoKmnZMHN2aw==} + /@chakra-ui/system/2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm: + resolution: {integrity: sha512-x7S7pNKQtFk7/qsn3aHlbZfhcacvaGXBKlnQvHKrbmDVxgLCjGExdi/8Vs7rSYzIyXHx3lItpwd2qHsqqcNvaQ==} peerDependencies: + '@emotion/react': ^11.0.0 + '@emotion/styled': ^11.0.0 react: '>=18' dependencies: - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 + '@chakra-ui/color-mode': 2.1.10_react@18.2.0 + '@chakra-ui/react-utils': 2.0.9_react@18.2.0 + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/theme-utils': 2.0.6 + '@chakra-ui/utils': 2.0.12 + '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 + '@emotion/styled': 11.10.5_qvatmowesywn4ye42qoh247szu react: 18.2.0 + react-fast-compare: 3.2.0 dev: false - /@chakra-ui/close-button/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-ZI/3p84FPlW0xoDCZYqsnIvR6bTc2d/TlhwyTHsDDxq9ZOWp9c2JicVn6WTdWGdshk8itnZZdG50IcnizGnimA==} + /@chakra-ui/table/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-miQUBJ07L7RzVoFAD6C9I9gaaABeivFRjbr9hf3vyTCsUTV/HDIBHROr6V1sIcQS3asU5nrgbDzRm90mvFOTiw==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/react-context': 2.0.5_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/color-mode/2.1.10_react@18.2.0: - resolution: {integrity: sha512-aUPouOUPn7IPm1v00/9AIkRuNrkCwJlbjVL1kJzLzxijYjbHvEHPxntITt+JWjtXPT8xdOq6mexLYCOGA67JwQ==} + /@chakra-ui/tabs/2.1.5_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-XmnKDclAJe0FoW4tdC8AlnZpPN5fcj92l4r2sqiL9WyYVEM71hDxZueETIph/GTtfMelG7Z8e5vBHP4rh1RT5g==} peerDependencies: + '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/control-box/2.0.11_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-UJb4vqq+/FPuwTCuaPeHa2lwtk6u7eFvLuwDCST2e/sBWGJC1R+1/Il5pHccnWs09FWxyZ9v/Oxkg/CG3jZR4Q==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/counter/2.0.11_react@18.2.0: - resolution: {integrity: sha512-1YRt/jom+m3iWw9J9trcM6rAHDvD4lwThiO9raxUK7BRsYUhnPZvsMpcXU1Moax218C4rRpbI9KfPLaig0m1xQ==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/number-utils': 2.0.5 - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/css-reset/2.0.10_hp5f5nkljdiwilp4rgxyefcplu: - resolution: {integrity: sha512-FwHOfw2P4ckbpSahDZef2KoxcvHPUg09jlicWdp24/MjdsOO5PAB/apm2UBvQflY4WAJyOqYaOdnXFlR6nF4cQ==} - peerDependencies: - '@emotion/react': '>=10.0.35' - react: '>=18' - dependencies: - '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 - react: 18.2.0 - dev: false - - /@chakra-ui/descendant/3.0.11_react@18.2.0: - resolution: {integrity: sha512-sNLI6NS6uUgrvYS6Imhoc1YlI6bck6pfxMBJcnXVSfdIjD6XjCmeY2YgzrtDS+o+J8bB3YJeIAG/vsVy5USE5Q==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/dom-utils/2.0.4: - resolution: {integrity: sha512-P936+WKinz5fgHzfwiUQjE/t7NC8bU89Tceim4tbn8CIm/9b+CsHX64eNw4vyJqRwt78TXQK7aGBIbS18R0q5Q==} - dev: false - - /@chakra-ui/editable/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-kIFPufzIlViNv7qi2PxxWWBvjLb+3IP5hUGmqOA9qcYz5TAdqblQqDClm0iajlIDNUFWnS4h056o8jKsQ42a5A==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: + '@chakra-ui/clickable': 2.0.11_react@18.2.0 + '@chakra-ui/descendant': 3.0.11_react@18.2.0 + '@chakra-ui/lazy-utils': 2.0.3 + '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-focus-on-pointer-down': 2.0.4_react@18.2.0 '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 - '@chakra-ui/shared-utils': 2.0.3 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/event-utils/2.0.6: - resolution: {integrity: sha512-ZIoqUbgJ5TcCbZRchMv4n7rOl1JL04doMebED88LO5mux36iVP9er/nnOY4Oke1bANKKURMrQf5VTT9hoYeA7A==} - dev: false - - /@chakra-ui/focus-lock/2.0.13_kzbn2opkn2327fwg5yzwzya5o4: - resolution: {integrity: sha512-AVSJt+3Ukia/m9TCZZgyWvTY7pw88jArivWVJ2gySGYYIs6z/FJMnlwbCVldV2afS0g3cYaii7aARb/WrlG34Q==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/dom-utils': 2.0.4 - react: 18.2.0 - react-focus-lock: 2.9.2_kzbn2opkn2327fwg5yzwzya5o4 - transitivePeerDependencies: - - '@types/react' - dev: false - - /@chakra-ui/form-control/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-J964JlgrxP+LP3kYmLk1ttbl73u6ghT+JQDjEjkEUc8lSS9Iv4u9XkRDQHuz2t2y0KHjQdH12PUfUfBqcITbYw==} + /@chakra-ui/tag/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-W1urf+tvGMt6J3cc31HudybYSl+B5jYUP5DJxzXM9p+n3JrvXWAo4D6LmpLBHY5zT2mNne14JF1rVeRcG4Rtdg==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/hooks/2.1.2_react@18.2.0: - resolution: {integrity: sha512-/vDBOqqnho9q++lay0ZcvnH8VuE0wT2OkZj+qDwFwjiHAtGPVxHCSpu9KC8BIHME5TlWjyO6riVyUCb2e2ip6w==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-utils': 2.0.9_react@18.2.0 - '@chakra-ui/utils': 2.0.12 - compute-scroll-into-view: 1.0.14 - copy-to-clipboard: 3.3.1 - react: 18.2.0 - dev: false - - /@chakra-ui/icon/3.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-RaDLC4psd8qyInY2RX4AlYRfpLBNw3VsMih17BFf8EESVhBXNJcYy7Q9eMV/K4NvZfZT42vuVqGVNFmkG89lBQ==} + /@chakra-ui/textarea/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-r8hF1rCi+GseLtY/IGeVWXFN0Uve2b820UQumRj4qxj7PsPqw1hFg7Cecbbb9zwF38K/m+D3IdwFeJzI1MtgRA==} peerDependencies: '@chakra-ui/system': '>=2.0.0' react: '>=18' dependencies: - '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm react: 18.2.0 dev: false - /@chakra-ui/icon/3.0.13_react@18.2.0: - resolution: {integrity: sha512-RaDLC4psd8qyInY2RX4AlYRfpLBNw3VsMih17BFf8EESVhBXNJcYy7Q9eMV/K4NvZfZT42vuVqGVNFmkG89lBQ==} + /@chakra-ui/theme-tools/2.0.14_egcizgpwtsioofm7hx34ab4iqi: + resolution: {integrity: sha512-lVcDmq5pyU0QbsIFKjt/iVUFDap7di2QHvPvGChA1YSjtg1PtuUi+BxEXWzp3Nfgw/N4rMvlBs+S0ynJypdwbg==} peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' + '@chakra-ui/styled-system': '>=2.0.0' dependencies: - '@chakra-ui/shared-utils': 2.0.3 - react: 18.2.0 + '@chakra-ui/anatomy': 2.1.0 + '@chakra-ui/styled-system': 2.5.0 + color2k: 2.0.0 dev: false - /@chakra-ui/icons/2.0.14_react@18.2.0: - resolution: {integrity: sha512-ZHjZ+ekDoW27MTDKqmKasBDEeSJB+dZXn2GubCPLVIzzXdL54TfwMrKOzLBJ2Q68YqFr7+OBbhlsLvKUKPSreA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' + /@chakra-ui/theme-utils/2.0.6: + resolution: {integrity: sha512-kUm3jaz3sQ/bhBEZ6RWPs1xptQNdSWh/krv9p92rvSkEfjCBDHM5dx7dYk/8KamyUZ6DmK+M31dPyOdOROkBFQ==} dependencies: - '@chakra-ui/icon': 3.0.13_react@18.2.0 - react: 18.2.0 + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi + lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/image/2.0.12_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-uclFhs0+wq2qujGu8Wk4eEWITA3iZZQTitGiFSEkO9Ws5VUH+Gqtn3mUilH0orubrI5srJsXAmjVTuVwge1KJQ==} + /@chakra-ui/theme/2.2.2_egcizgpwtsioofm7hx34ab4iqi: + resolution: {integrity: sha512-7DlOQiXmnaqYyqXwqmfFSCWGkUonuqmNC5mmUCwxI435KgHNCaE2bIm6DI7N2NcIcuVcfc8Vn0UqrDoGU3zJBg==} peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' + '@chakra-ui/styled-system': '>=2.0.0' dependencies: - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 + '@chakra-ui/anatomy': 2.1.0 + '@chakra-ui/styled-system': 2.5.0 + '@chakra-ui/theme-tools': 2.0.14_egcizgpwtsioofm7hx34ab4iqi dev: false - /@chakra-ui/input/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-CkSrUJeKWogOSt2pUf2vVv5s0bUVcAi4/XGj1JVCCfyIX6a6h1m8R69MShTPxPiQ0Mdebq5ATrW/aZQQXZzRGQ==} + /@chakra-ui/toast/4.0.6_jot6j767hrghrt7s4rrdwbs5jm: + resolution: {integrity: sha512-LatqPM7Vhj22qCyOYXDuhretohp5lJWcXpI9QwpDjd/CEeChy4kYeIJbaLBMzl2WTfIZ+rfHRBhFTpp33aGyqA==} peerDependencies: - '@chakra-ui/system': '>=2.0.0' + '@chakra-ui/system': 2.3.5 + framer-motion: '>=4.0.0' react: '>=18' + react-dom: '>=18' dependencies: - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/object-utils': 2.0.5 - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/alert': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-use-timeout': 2.0.3_react@18.2.0 + '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 + '@chakra-ui/styled-system': 2.5.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /@chakra-ui/layout/2.1.11_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-UP19V8EeI/DEODbWrZlqC0sg248bpFaWpMiM/+g9Bsxs9aof3yexpMD/7gb0yrfbIrkdvSBrcQeqxXGzbfoopw==} + /@chakra-ui/tooltip/2.2.3_jot6j767hrghrt7s4rrdwbs5jm: + resolution: {integrity: sha512-yOne9ofFYfW2XHsbCEPWgLUTnHKm5z21f/cPjwEqtmvCS7aTCOLFiwz2ckRS8yJbIAy+mw0UG6jQsblYKgXj4A==} peerDependencies: '@chakra-ui/system': '>=2.0.0' + framer-motion: '>=4.0.0' react: '>=18' + react-dom: '>=18' dependencies: - '@chakra-ui/breakpoint-utils': 2.0.5 - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/object-utils': 2.0.5 - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/shared-utils': 2.0.3 + '@chakra-ui/popper': 3.0.10_react@18.2.0 + '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y + '@chakra-ui/react-types': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 + '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 + '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /@chakra-ui/lazy-utils/2.0.3: - resolution: {integrity: sha512-SQ5I5rJrcHpVUcEftHLOh8UyeY+06R8Gv3k2RjcpvM6mb2Gktlz/4xl2GcUh3LWydgGQDW/7Rse5rQhKWgzmcg==} - dev: false - - /@chakra-ui/live-region/2.0.11_react@18.2.0: - resolution: {integrity: sha512-ltObaKQekP75GCCbN+vt1/mGABSCaRdQELmotHTBc5AioA3iyCDHH69ev+frzEwLvKFqo+RomAdAAgqBIMJ02Q==} + /@chakra-ui/transition/2.0.12_ivdgx52fx5cgmohyjyqlnibwaq: + resolution: {integrity: sha512-ff6eU+m08ccYfCkk0hKfY/XlmGxCrfbBgsKgV4mirZ4SKUL1GVye8CYuHwWQlBJo+8s0yIpsTNxAuX4n/cW9/w==} peerDependencies: + framer-motion: '>=4.0.0' react: '>=18' dependencies: + framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 dev: false - /@chakra-ui/media-query/3.2.8_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-djmEg/eJ5Qrjn7SArTqjsvlwF6mNeMuiawrTwnU+0EKq9Pq/wVSb7VaIhxdQYJLA/DbRhE/KPMogw1LNVKa4Rw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' + /@chakra-ui/utils/2.0.12: + resolution: {integrity: sha512-1Z1MgsrfMQhNejSdrPJk8v5J4gCefHo+1wBmPPHTz5bGEbAAbZ13aXAfXy8w0eFy0Nvnawn0EHW7Oynp/MdH+Q==} dependencies: - '@chakra-ui/breakpoint-utils': 2.0.5 - '@chakra-ui/react-env': 2.0.11_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 + '@types/lodash.mergewith': 4.6.6 + css-box-model: 1.2.1 + framesync: 5.3.0 + lodash.mergewith: 4.6.2 dev: false - /@chakra-ui/menu/2.1.5_v3e3sxd2uk3a5ht2jlbmshfate: - resolution: {integrity: sha512-2UusrQtxHcqcO9n/0YobNN3RJC8yAZU6oJbRPuvsQ9IL89scEWCTIxXEYrnIjeh/5zikcSEDGo9zM9Udg/XcsA==} + /@chakra-ui/visually-hidden/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: + resolution: {integrity: sha512-sDEeeEjLfID333EC46NdCbhK2HyMXlpl5HzcJjuwWIpyVz4E1gKQ9hlwpq6grijvmzeSywQ5D3tTwUrvZck4KQ==} peerDependencies: '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' react: '>=18' dependencies: - '@chakra-ui/clickable': 2.0.11_react@18.2.0 - '@chakra-ui/descendant': 3.0.11_react@18.2.0 - '@chakra-ui/lazy-utils': 2.0.3 - '@chakra-ui/popper': 3.0.10_react@18.2.0 - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-animation-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-focus-effect': 2.0.7_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-outside-click': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 dev: false - /@chakra-ui/modal/2.2.5_fqc5h3y4b43vkv2gsskahlcs7e: - resolution: {integrity: sha512-QIoN89bT5wnR71wxZFHt7vsS65yF9WCfIwDtFk8ifxJORPi/UkLMwBpjTV2Jfsxd22W6Oo2VOpRR0a5WFeK+jA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' + /@changesets/apply-release-plan/6.1.1: + resolution: {integrity: sha512-LaQiP/Wf0zMVR0HNrLQAjz3rsNsr0d/RlnP6Ef4oi8VafOwnY1EoWdK4kssuUJGgNgDyHpomS50dm8CU3D7k7g==} dependencies: - '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/focus-lock': 2.0.13_kzbn2opkn2327fwg5yzwzya5o4 - '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq - aria-hidden: 1.2.1_kzbn2opkn2327fwg5yzwzya5o4 - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - react-remove-scroll: 2.5.5_kzbn2opkn2327fwg5yzwzya5o4 - transitivePeerDependencies: - - '@types/react' - dev: false - - /@chakra-ui/number-input/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-IARUAbP4pn1gP5fY2dK4wtbR3ONjzHgTjH4Zj3ErZvdu/yTURLaZmlb6UGHwgqjWLyioactZ/+n4Njj5CRjs8w==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/counter': 2.0.11_react@18.2.0 - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-interval': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/number-utils/2.0.5: - resolution: {integrity: sha512-Thhohnlqze0i5HBJO9xkfOPq1rv3ji/hNPf2xh1fh4hxrNzdm3HCkz0c6lyRQwGuVoeltEHysYZLH/uWLFTCSQ==} - dev: false - - /@chakra-ui/object-utils/2.0.5: - resolution: {integrity: sha512-/rIMoYI3c2uLtFIrnTFOPRAI8StUuu335WszqKM0KAW1lwG9H6uSbxqlpZT1Pxi/VQqZKfheGiMQOx5lfTmM/A==} - dev: false - - /@chakra-ui/pin-input/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-51cioNYpBSgi9/jq6CrzoDvo8fpMwFXu3SaFRbKO47s9Dz/OAW0MpjyabTfSpwOv0xKZE+ayrYGJopCzZSWXPg==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/descendant': 3.0.11_react@18.2.0 - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/popover/2.1.4_v3e3sxd2uk3a5ht2jlbmshfate: - resolution: {integrity: sha512-NXVtyMxYzDKzzQph/+GFRSM3tEj3gNvlCX/xGRsCOt9I446zJ1InCd/boXQKAc813coEN9McSOjNWgo+NCBD+Q==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/lazy-utils': 2.0.3 - '@chakra-ui/popper': 3.0.10_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-animation-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-focus-effect': 2.0.7_react@18.2.0 - '@chakra-ui/react-use-focus-on-pointer-down': 2.0.4_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/popper/3.0.10_react@18.2.0: - resolution: {integrity: sha512-6LacbBGX0piHWY/DYxOGCTTFAoRGRHpGIRzTgfNy8jxw4f+rukaVudd4Pc2fwjCTdobJKM8nGNYIYNv9/Dmq9Q==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@popperjs/core': 2.11.6 - react: 18.2.0 - dev: false - - /@chakra-ui/portal/2.0.12_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-8D/1fFUdbJtzyGL5sCBIb4oyTnPG2v6rx/L/qbG43FcXDrongmzLj0+tJ//PbJr+5hxjXAWFUjpPvyx10pTN6Q==} - peerDependencies: - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/progress/2.1.2_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-ofhMWTqCxnm1NiP/zH4SV7EvOLogfX15MSMTNfGqZv6t8eSSeTn6oRRzsTSllJfSqDey7oZNCRbP7vDhvx9HtQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/provider/2.0.26_5rzy53przelm5jchjmb5vr6dxy: - resolution: {integrity: sha512-ln5c3zSFvN1WrkPkX/KOWp+CPg6y8opASlZvWvM+1lTpNX82FkXyPiQYjaemGGbKuooqdRMylseWBStoFwjxOw==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/css-reset': 2.0.10_hp5f5nkljdiwilp4rgxyefcplu - '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-env': 2.0.11_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@chakra-ui/utils': 2.0.12 - '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 - '@emotion/styled': 11.10.5_qvatmowesywn4ye42qoh247szu - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/radio/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-e/hY1g92Xdu5d5A27NFfa1+ccE2q/A5H7sc/M7p0fId6KO33Dst25Hy+HThtqnYN0Y3Om58fiXEKo5SsdtvSfA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@zag-js/focus-visible': 0.1.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-children-utils/2.0.4_react@18.2.0: - resolution: {integrity: sha512-qsKUEfK/AhDbMexWo5JhmdlkxLg5WEw2dFh4XorvU1/dTYsRfP6cjFfO8zE+X3F0ZFNsgKz6rbN5oU349GLEFw==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-context/2.0.5_react@18.2.0: - resolution: {integrity: sha512-WYS0VBl5Q3/kNShQ26BP+Q0OGMeTQWco3hSiJWvO2wYLY7N1BLq6dKs8vyKHZfpwKh2YL2bQeAObi+vSkXp6tQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-env/2.0.11_react@18.2.0: - resolution: {integrity: sha512-rPwUHReSWh7rbCw0HePa8Pvc+Q82fUFvVjHTIbXKnE6d+01cCE7j4f1NLeRD9pStKPI6sIZm9xTGvOCzl8F8iw==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-types/2.0.5_react@18.2.0: - resolution: {integrity: sha512-GApp+R/VjS1UV5ms5irrij5LOIgUM0dqSVHagyEFEz88LRKkqMD9RuO577ZsVd4Gn0ULsacVJCUA0HtNUBJNzA==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-animation-state/2.0.6_react@18.2.0: - resolution: {integrity: sha512-M2kUzZkSBgDpfvnffh3kTsMIM3Dvn+CTMqy9zfY97NL4P3LAWL1MuFtKdlKfQ8hs/QpwS/ew8CTmCtaywn4sKg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/dom-utils': 2.0.4 - '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-callback-ref/2.0.5_react@18.2.0: - resolution: {integrity: sha512-vKnXleD2PzB0nGabY35fRtklMid4z7cecbMG0fkasNNsgWmrQcXJOuEKUUVCynL6FBU6gBnpKFi5Aqj6x+K4tw==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-controllable-state/2.0.6_react@18.2.0: - resolution: {integrity: sha512-7WuKrhQkpSRoiI5PKBvuIsO46IIP0wsRQgXtStSaIXv+FIvIJl9cxQXTbmZ5q1Ds641QdAUKx4+6v0K/zoZEHg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-disclosure/2.0.6_react@18.2.0: - resolution: {integrity: sha512-4UPePL+OcCY37KZ585iLjg8i6J0sjpLm7iZG3PUwmb97oKHVHq6DpmWIM0VfSjcT6AbSqyGcd5BXZQBgwt8HWQ==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-event-listener/2.0.5_react@18.2.0: - resolution: {integrity: sha512-etLBphMigxy/cm7Yg22y29gQ8u/K3PniR5ADZX7WVX61Cgsa8ciCqjTE9sTtlJQWAQySbWxt9+mjlT5zaf+6Zw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-focus-effect/2.0.7_react@18.2.0: - resolution: {integrity: sha512-wI8OUNwfbkusajLac8QtjfSyNmsNu1D5pANmnSHIntHhui6Jwv75Pxx7RgmBEnfBEpleBndhR9E75iCjPLhZ/A==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/dom-utils': 2.0.4 - '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-focus-on-pointer-down/2.0.4_react@18.2.0: - resolution: {integrity: sha512-L3YKouIi77QbXH9mSLGEFzJbJDhyrPlcRcuu+TSC7mYaK9E+3Ap+RVSAVxj+CfQz7hCWpikPecKDuspIPWlyuA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-interval/2.0.3_react@18.2.0: - resolution: {integrity: sha512-Orbij5c5QkL4NuFyU4mfY/nyRckNBgoGe9ic8574VVNJIXfassevZk0WB+lvqBn5XZeLf2Tj+OGJrg4j4H9wzw==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-latest-ref/2.0.3_react@18.2.0: - resolution: {integrity: sha512-exNSQD4rPclDSmNwtcChUCJ4NuC2UJ4amyNGBqwSjyaK5jNHk2kkM7rZ6I0I8ul+26lvrXlSuhyv6c2PFwbFQQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-merge-refs/2.0.5_react@18.2.0: - resolution: {integrity: sha512-uc+MozBZ8asaUpO8SWcK6D4svRPACN63jv5uosUkXJR+05jQJkUofkfQbf2HeGVbrWCr0XZsftLIm4Mt/QMoVw==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-outside-click/2.0.5_react@18.2.0: - resolution: {integrity: sha512-WmtXUeVaMtxP9aUGGG+GQaDeUn/Bvf8TI3EU5mE1+TtqLHxyA9wtvQurynrogvpilLaBADwn/JeBeqs2wHpvqA==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-pan-event/2.0.6_react@18.2.0: - resolution: {integrity: sha512-Vtgl3c+Mj4hdehFRFIgruQVXctwnG1590Ein1FiU8sVnlqO6bpug6Z+B14xBa+F+X0aK+DxnhkJFyWI93Pks2g==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/event-utils': 2.0.6 - '@chakra-ui/react-use-latest-ref': 2.0.3_react@18.2.0 - framesync: 5.3.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-previous/2.0.3_react@18.2.0: - resolution: {integrity: sha512-A2ODOa0rm2HM4aqXfxxI0zPLcn5Q7iBEjRyfIQhb+EH+d2OFuj3L2slVoIpp6e/km3Xzv2d+u/WbjgTzdQ3d0w==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-safe-layout-effect/2.0.3_react@18.2.0: - resolution: {integrity: sha512-dlTvQURzmdfyBbNdydgO4Wy2/HV8aJN8LszTtyb5vRZsyaslDM/ftcxo8E8QjHwRLD/V1Epb/A8731QfimfVaQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-size/2.0.5_react@18.2.0: - resolution: {integrity: sha512-4arAApdiXk5uv5ZeFKltEUCs5h3yD9dp6gTIaXbAdq+/ENK3jMWTwlqzNbJtCyhwoOFrblLSdBrssBMIsNQfZQ==} - peerDependencies: - react: '>=18' - dependencies: - '@zag-js/element-size': 0.1.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-timeout/2.0.3_react@18.2.0: - resolution: {integrity: sha512-rBBUkZSQq3nJQ8fuMkgZNY2Sgg4vKiKNp05GxAwlT7TitOfVZyoTriqQpqz296bWlmkICTZxlqCWfE5fWpsTsg==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - react: 18.2.0 - dev: false - - /@chakra-ui/react-use-update-effect/2.0.5_react@18.2.0: - resolution: {integrity: sha512-y9tCMr1yuDl8ATYdh64Gv8kge5xE1DMykqPDZw++OoBsTaWr3rx40wblA8NIWuSyJe5ErtKP2OeglvJkYhryJQ==} - peerDependencies: - react: '>=18' - dependencies: - react: 18.2.0 - dev: false - - /@chakra-ui/react-utils/2.0.9_react@18.2.0: - resolution: {integrity: sha512-nlwPBVlQmcl1PiLzZWyrT3FSnt3vKSkBMzQ0EF4SJWA/nOIqTvmffb5DCzCqPzgQaE/Da1Xgus+JufFGM8GLCQ==} - peerDependencies: - react: '>=18' - dependencies: - '@chakra-ui/utils': 2.0.12 - react: 18.2.0 - dev: false - - /@chakra-ui/react/2.4.4_przcunyodmsiq2duiyjrphchze: - resolution: {integrity: sha512-mA0Js3qpRBTmhPuBlBw85OG9ot7uh7+4IjsASmkzbpJVB1Kz9Z+7RBOpjHfK/03zEsRp+XYrb1ps0DYl8ih5bQ==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/accordion': 2.1.4_v3e3sxd2uk3a5ht2jlbmshfate - '@chakra-ui/alert': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/avatar': 2.2.1_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/breadcrumb': 2.1.1_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/card': 2.1.3_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/checkbox': 2.2.5_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/control-box': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/counter': 2.0.11_react@18.2.0 - '@chakra-ui/css-reset': 2.0.10_hp5f5nkljdiwilp4rgxyefcplu - '@chakra-ui/editable': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/hooks': 2.1.2_react@18.2.0 - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/image': 2.0.12_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/input': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/layout': 2.1.11_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/live-region': 2.0.11_react@18.2.0 - '@chakra-ui/media-query': 3.2.8_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/menu': 2.1.5_v3e3sxd2uk3a5ht2jlbmshfate - '@chakra-ui/modal': 2.2.5_fqc5h3y4b43vkv2gsskahlcs7e - '@chakra-ui/number-input': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/pin-input': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/popover': 2.1.4_v3e3sxd2uk3a5ht2jlbmshfate - '@chakra-ui/popper': 3.0.10_react@18.2.0 - '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/progress': 2.1.2_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/provider': 2.0.26_5rzy53przelm5jchjmb5vr6dxy - '@chakra-ui/radio': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-env': 2.0.11_react@18.2.0 - '@chakra-ui/select': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/skeleton': 2.0.20_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/slider': 2.0.16_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/spinner': 2.0.11_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/stat': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/styled-system': 2.5.0 - '@chakra-ui/switch': 2.0.17_v3e3sxd2uk3a5ht2jlbmshfate - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@chakra-ui/table': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/tabs': 2.1.5_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/tag': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/textarea': 2.0.14_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi - '@chakra-ui/theme-utils': 2.0.6 - '@chakra-ui/toast': 4.0.6_jot6j767hrghrt7s4rrdwbs5jm - '@chakra-ui/tooltip': 2.2.3_jot6j767hrghrt7s4rrdwbs5jm - '@chakra-ui/transition': 2.0.12_ivdgx52fx5cgmohyjyqlnibwaq - '@chakra-ui/utils': 2.0.12 - '@chakra-ui/visually-hidden': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 - '@emotion/styled': 11.10.5_qvatmowesywn4ye42qoh247szu - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - transitivePeerDependencies: - - '@types/react' - dev: false - - /@chakra-ui/select/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-fvVGxAtLaIXGOMicrzSa6imMw5h26S1ar3xyNmXgR40dbpTPHmtQJkbHBf9FwwQXgSgKWgBzsztw5iDHCpPVzA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/shared-utils/2.0.3: - resolution: {integrity: sha512-pCU+SUGdXzjAuUiUT8mriekL3tJVfNdwSTIaNeip7k/SWDzivrKGMwAFBxd3XVTDevtVusndkO4GJuQ3yILzDg==} - dev: false - - /@chakra-ui/skeleton/2.0.20_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-PEjjAHT/X8XEHTzXlN0kL883m1Z4Yo4A/ztv4VOvBTnXhHl2wFrrwucxj8TS3eWoCJ65dY9b0ZySP9ARTUe1ng==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/media-query': 3.2.8_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-use-previous': 2.0.3_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/slider/2.0.16_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-0nEu9+OAPv4yzMrTH6SkNNMiXbLRe7lXYv1gWbpDGOsNgpGDFYmA7qpzsiiJEJoynqcJZqmDPArqWWPNYeY6Sw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/number-utils': 2.0.5 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-callback-ref': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-latest-ref': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-pan-event': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-size': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/spinner/2.0.11_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-piO2ghWdJzQy/+89mDza7xLhPnW7pA+ADNbgCb1vmriInWedS41IBKe+pSPz4IidjCbFu7xwKE0AerFIbrocCA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/stat/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-6XeuE/7w0BjyCHSxMbsf6/rNOOs8BSit1NS7g7+Jd/40Pc/SKlNWLd3kxXPid4eT3RwyNIdMPtm30OActr9nqQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/styled-system/2.5.0: - resolution: {integrity: sha512-xbvD9MTSXqsPbunCCxfebqslokU53zUefPDQJhgXNKKeMq0NGEgNdGOFXC8oFDP1S/I1GgohKcrSbrSXXLw8yg==} - dependencies: - csstype: 3.1.1 - lodash.mergewith: 4.6.2 - dev: false - - /@chakra-ui/switch/2.0.17_v3e3sxd2uk3a5ht2jlbmshfate: - resolution: {integrity: sha512-BQabfC6qYi5xBJvEFPzKq0yl6fTtTNNEHTid5r7h0PWcCnAiHwQJTpQRpxp+AjK569LMLtTXReTZvNBrzEwOrA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - '@chakra-ui/checkbox': 2.2.5_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/system/2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm: - resolution: {integrity: sha512-x7S7pNKQtFk7/qsn3aHlbZfhcacvaGXBKlnQvHKrbmDVxgLCjGExdi/8Vs7rSYzIyXHx3lItpwd2qHsqqcNvaQ==} - peerDependencies: - '@emotion/react': ^11.0.0 - '@emotion/styled': ^11.0.0 - react: '>=18' - dependencies: - '@chakra-ui/color-mode': 2.1.10_react@18.2.0 - '@chakra-ui/react-utils': 2.0.9_react@18.2.0 - '@chakra-ui/styled-system': 2.5.0 - '@chakra-ui/theme-utils': 2.0.6 - '@chakra-ui/utils': 2.0.12 - '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 - '@emotion/styled': 11.10.5_qvatmowesywn4ye42qoh247szu - react: 18.2.0 - react-fast-compare: 3.2.0 - dev: false - - /@chakra-ui/table/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-miQUBJ07L7RzVoFAD6C9I9gaaABeivFRjbr9hf3vyTCsUTV/HDIBHROr6V1sIcQS3asU5nrgbDzRm90mvFOTiw==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/tabs/2.1.5_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-XmnKDclAJe0FoW4tdC8AlnZpPN5fcj92l4r2sqiL9WyYVEM71hDxZueETIph/GTtfMelG7Z8e5vBHP4rh1RT5g==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/clickable': 2.0.11_react@18.2.0 - '@chakra-ui/descendant': 3.0.11_react@18.2.0 - '@chakra-ui/lazy-utils': 2.0.3 - '@chakra-ui/react-children-utils': 2.0.4_react@18.2.0 - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-controllable-state': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-safe-layout-effect': 2.0.3_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/tag/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-W1urf+tvGMt6J3cc31HudybYSl+B5jYUP5DJxzXM9p+n3JrvXWAo4D6LmpLBHY5zT2mNne14JF1rVeRcG4Rtdg==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/icon': 3.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/react-context': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/textarea/2.0.14_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-r8hF1rCi+GseLtY/IGeVWXFN0Uve2b820UQumRj4qxj7PsPqw1hFg7Cecbbb9zwF38K/m+D3IdwFeJzI1MtgRA==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/form-control': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@chakra-ui/theme-tools/2.0.14_egcizgpwtsioofm7hx34ab4iqi: - resolution: {integrity: sha512-lVcDmq5pyU0QbsIFKjt/iVUFDap7di2QHvPvGChA1YSjtg1PtuUi+BxEXWzp3Nfgw/N4rMvlBs+S0ynJypdwbg==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.1.0 - '@chakra-ui/styled-system': 2.5.0 - color2k: 2.0.0 - dev: false - - /@chakra-ui/theme-utils/2.0.6: - resolution: {integrity: sha512-kUm3jaz3sQ/bhBEZ6RWPs1xptQNdSWh/krv9p92rvSkEfjCBDHM5dx7dYk/8KamyUZ6DmK+M31dPyOdOROkBFQ==} - dependencies: - '@chakra-ui/styled-system': 2.5.0 - '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi - lodash.mergewith: 4.6.2 - dev: false - - /@chakra-ui/theme/2.2.2_egcizgpwtsioofm7hx34ab4iqi: - resolution: {integrity: sha512-7DlOQiXmnaqYyqXwqmfFSCWGkUonuqmNC5mmUCwxI435KgHNCaE2bIm6DI7N2NcIcuVcfc8Vn0UqrDoGU3zJBg==} - peerDependencies: - '@chakra-ui/styled-system': '>=2.0.0' - dependencies: - '@chakra-ui/anatomy': 2.1.0 - '@chakra-ui/styled-system': 2.5.0 - '@chakra-ui/theme-tools': 2.0.14_egcizgpwtsioofm7hx34ab4iqi - dev: false - - /@chakra-ui/toast/4.0.6_jot6j767hrghrt7s4rrdwbs5jm: - resolution: {integrity: sha512-LatqPM7Vhj22qCyOYXDuhretohp5lJWcXpI9QwpDjd/CEeChy4kYeIJbaLBMzl2WTfIZ+rfHRBhFTpp33aGyqA==} - peerDependencies: - '@chakra-ui/system': 2.3.5 - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/alert': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/close-button': 2.0.13_iuckyjetixsa6e5uo5ymtjguvq - '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-use-timeout': 2.0.3_react@18.2.0 - '@chakra-ui/react-use-update-effect': 2.0.5_react@18.2.0 - '@chakra-ui/styled-system': 2.5.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - '@chakra-ui/theme': 2.2.2_egcizgpwtsioofm7hx34ab4iqi - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/tooltip/2.2.3_jot6j767hrghrt7s4rrdwbs5jm: - resolution: {integrity: sha512-yOne9ofFYfW2XHsbCEPWgLUTnHKm5z21f/cPjwEqtmvCS7aTCOLFiwz2ckRS8yJbIAy+mw0UG6jQsblYKgXj4A==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - framer-motion: '>=4.0.0' - react: '>=18' - react-dom: '>=18' - dependencies: - '@chakra-ui/popper': 3.0.10_react@18.2.0 - '@chakra-ui/portal': 2.0.12_biqbaboplfbrettd7655fr4n2y - '@chakra-ui/react-types': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-disclosure': 2.0.6_react@18.2.0 - '@chakra-ui/react-use-event-listener': 2.0.5_react@18.2.0 - '@chakra-ui/react-use-merge-refs': 2.0.5_react@18.2.0 - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false - - /@chakra-ui/transition/2.0.12_ivdgx52fx5cgmohyjyqlnibwaq: - resolution: {integrity: sha512-ff6eU+m08ccYfCkk0hKfY/XlmGxCrfbBgsKgV4mirZ4SKUL1GVye8CYuHwWQlBJo+8s0yIpsTNxAuX4n/cW9/w==} - peerDependencies: - framer-motion: '>=4.0.0' - react: '>=18' - dependencies: - framer-motion: 7.10.2_biqbaboplfbrettd7655fr4n2y - react: 18.2.0 - dev: false - - /@chakra-ui/utils/2.0.12: - resolution: {integrity: sha512-1Z1MgsrfMQhNejSdrPJk8v5J4gCefHo+1wBmPPHTz5bGEbAAbZ13aXAfXy8w0eFy0Nvnawn0EHW7Oynp/MdH+Q==} - dependencies: - '@types/lodash.mergewith': 4.6.6 - css-box-model: 1.2.1 - framesync: 5.3.0 - lodash.mergewith: 4.6.2 - dev: false - - /@chakra-ui/visually-hidden/2.0.13_iuckyjetixsa6e5uo5ymtjguvq: - resolution: {integrity: sha512-sDEeeEjLfID333EC46NdCbhK2HyMXlpl5HzcJjuwWIpyVz4E1gKQ9hlwpq6grijvmzeSywQ5D3tTwUrvZck4KQ==} - peerDependencies: - '@chakra-ui/system': '>=2.0.0' - react: '>=18' - dependencies: - '@chakra-ui/system': 2.3.5_dovxhg2tvkkxkdnqyoum6wzcxm - react: 18.2.0 - dev: false - - /@changesets/apply-release-plan/6.1.1: - resolution: {integrity: sha512-LaQiP/Wf0zMVR0HNrLQAjz3rsNsr0d/RlnP6Ef4oi8VafOwnY1EoWdK4kssuUJGgNgDyHpomS50dm8CU3D7k7g==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/config': 2.2.0 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 1.5.0 - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.7.1 - resolve-from: 5.0.0 - semver: 5.7.1 - dev: true - - /@changesets/assemble-release-plan/5.2.2: - resolution: {integrity: sha512-B1qxErQd85AeZgZFZw2bDKyOfdXHhG+X5S+W3Da2yCem8l/pRy4G/S7iOpEcMwg6lH8q2ZhgbZZwZ817D+aLuQ==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.4 - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - semver: 5.7.1 - dev: true - - /@changesets/changelog-git/0.1.13: - resolution: {integrity: sha512-zvJ50Q+EUALzeawAxax6nF2WIcSsC5PwbuLeWkckS8ulWnuPYx8Fn/Sjd3rF46OzeKA8t30loYYV6TIzp4DIdg==} - dependencies: - '@changesets/types': 5.2.0 - dev: true - - /@changesets/cli/2.25.0: - resolution: {integrity: sha512-Svu5KD2enurVHGEEzCRlaojrHjVYgF9srmMP9VQSy9c1TspX6C9lDPpulsSNIjYY9BuU/oiWpjBgR7RI9eQiAA==} - hasBin: true - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/apply-release-plan': 6.1.1 - '@changesets/assemble-release-plan': 5.2.2 - '@changesets/changelog-git': 0.1.13 - '@changesets/config': 2.2.0 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.4 - '@changesets/get-release-plan': 3.0.15 - '@changesets/git': 1.5.0 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.13 - '@changesets/read': 0.5.8 - '@changesets/types': 5.2.0 - '@changesets/write': 0.2.1 - '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.0 - '@types/semver': 6.2.3 - ansi-colors: 4.1.3 - chalk: 2.4.2 - enquirer: 2.3.6 - external-editor: 3.1.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - is-ci: 3.0.1 - meow: 6.1.1 - outdent: 0.5.0 - p-limit: 2.3.0 - preferred-pm: 3.0.3 - resolve-from: 5.0.0 - semver: 5.7.1 - spawndamnit: 2.0.0 - term-size: 2.2.1 - tty-table: 4.1.6 - dev: true - - /@changesets/config/2.2.0: - resolution: {integrity: sha512-GGaokp3nm5FEDk/Fv2PCRcQCOxGKKPRZ7prcMqxEr7VSsG75MnChQE8plaW1k6V8L2bJE+jZWiRm19LbnproOw==} - dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.4 - '@changesets/logger': 0.0.5 - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.5 - dev: true - - /@changesets/errors/0.1.4: - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} - dependencies: - extendable-error: 0.1.7 - dev: true - - /@changesets/get-dependents-graph/1.3.4: - resolution: {integrity: sha512-+C4AOrrFY146ydrgKOo5vTZfj7vetNu1tWshOID+UjPUU9afYGDXI8yLnAeib1ffeBXV3TuGVcyphKpJ3cKe+A==} - dependencies: - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 5.7.1 - dev: true - - /@changesets/get-release-plan/3.0.15: - resolution: {integrity: sha512-W1tFwxE178/en+zSj/Nqbc3mvz88mcdqUMJhRzN1jDYqN3QI4ifVaRF9mcWUU+KI0gyYEtYR65tour690PqTcA==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/assemble-release-plan': 5.2.2 - '@changesets/config': 2.2.0 - '@changesets/pre': 1.0.13 - '@changesets/read': 0.5.8 - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - dev: true - - /@changesets/get-version-range-type/0.3.2: - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} - dev: true - - /@changesets/git/1.5.0: - resolution: {integrity: sha512-Xo8AT2G7rQJSwV87c8PwMm6BAc98BnufRMsML7m7Iw8Or18WFvFmxqG5aOL5PBvhgq9KrKvaeIBNIymracSuHg==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - spawndamnit: 2.0.0 - dev: true - - /@changesets/logger/0.0.5: - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} - dependencies: - chalk: 2.4.2 - dev: true - - /@changesets/parse/0.3.15: - resolution: {integrity: sha512-3eDVqVuBtp63i+BxEWHPFj2P1s3syk0PTrk2d94W9JD30iG+OER0Y6n65TeLlY8T2yB9Fvj6Ev5Gg0+cKe/ZUA==} - dependencies: - '@changesets/types': 5.2.0 - js-yaml: 3.14.1 - dev: true - - /@changesets/pre/1.0.13: - resolution: {integrity: sha512-jrZc766+kGZHDukjKhpBXhBJjVQMied4Fu076y9guY1D3H622NOw8AQaLV3oQsDtKBTrT2AUFjt9Z2Y9Qx+GfA==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - dev: true - - /@changesets/read/0.5.8: - resolution: {integrity: sha512-eYaNfxemgX7f7ELC58e7yqQICW5FB7V+bd1lKt7g57mxUrTveYME+JPaBPpYx02nP53XI6CQp6YxnR9NfmFPKw==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/git': 1.5.0 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.15 - '@changesets/types': 5.2.0 - chalk: 2.4.2 - fs-extra: 7.0.1 - p-filter: 2.1.0 - dev: true - - /@changesets/types/4.1.0: - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - dev: true - - /@changesets/types/5.2.0: - resolution: {integrity: sha512-km/66KOqJC+eicZXsm2oq8A8bVTSpkZJ60iPV/Nl5Z5c7p9kk8xxh6XGRTlnludHldxOOfudhnDN2qPxtHmXzA==} - dev: true - - /@changesets/write/0.2.1: - resolution: {integrity: sha512-KUd49nt2fnYdGixIqTi1yVE1nAoZYUMdtB3jBfp77IMqjZ65hrmZE5HdccDlTeClZN0420ffpnfET3zzeY8pdw==} - dependencies: - '@babel/runtime': 7.19.0 - '@changesets/types': 5.2.0 - fs-extra: 7.0.1 - human-id: 1.0.2 - prettier: 2.7.1 - dev: true - - /@coinbase/wallet-sdk/3.5.3: - resolution: {integrity: sha512-kaGMk9KyiSLPm1+BvCQSc99ku9gn0j+M1+2Beii+4gx/lRVhutlzmn6l+5zTB/n3xri25iTr+SxjMZLlMfW8Hg==} - engines: {node: '>= 10.0.0'} - dependencies: - '@metamask/safe-event-emitter': 2.0.0 - '@solana/web3.js': 1.52.0 - bind-decorator: 1.0.11 - bn.js: 5.2.1 - buffer: 6.0.3 - clsx: 1.2.1 - eth-block-tracker: 4.4.3 - eth-json-rpc-filters: 4.2.2 - eth-rpc-errors: 4.0.2 - json-rpc-engine: 6.1.0 - keccak: 3.0.2 - preact: 10.11.0 - qs: 6.11.0 - rxjs: 6.6.7 - sha.js: 2.4.11 - stream-browserify: 3.0.0 - util: 0.12.4 - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - encoding - - react-native - - supports-color - - utf-8-validate - dev: false - - /@cspotcode/source-map-support/0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - dev: true - - /@emotion/babel-plugin/11.10.5: - resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/runtime': 7.19.0 - '@emotion/hash': 0.9.0 - '@emotion/memoize': 0.8.0 - '@emotion/serialize': 1.1.1 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.8.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.1.3 - dev: false - - /@emotion/cache/11.10.5: - resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} - dependencies: - '@emotion/memoize': 0.8.0 - '@emotion/sheet': 1.2.1 - '@emotion/utils': 1.2.0 - '@emotion/weak-memoize': 0.3.0 - stylis: 4.1.3 - dev: false - - /@emotion/hash/0.9.0: - resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} - dev: false - - /@emotion/is-prop-valid/0.8.8: - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - dependencies: - '@emotion/memoize': 0.7.4 - dev: false - - /@emotion/is-prop-valid/1.2.0: - resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} - dependencies: - '@emotion/memoize': 0.8.0 - dev: false - - /@emotion/memoize/0.7.4: - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - dev: false - - /@emotion/memoize/0.8.0: - resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} - dev: false - - /@emotion/react/11.10.5_kzbn2opkn2327fwg5yzwzya5o4: - resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} - peerDependencies: - '@babel/core': ^7.0.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.19.0 - '@emotion/babel-plugin': 11.10.5 - '@emotion/cache': 11.10.5 - '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 - '@emotion/utils': 1.2.0 - '@emotion/weak-memoize': 0.3.0 - '@types/react': 18.0.26 - hoist-non-react-statics: 3.3.2 - react: 18.2.0 - dev: false - - /@emotion/serialize/1.1.1: - resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} - dependencies: - '@emotion/hash': 0.9.0 - '@emotion/memoize': 0.8.0 - '@emotion/unitless': 0.8.0 - '@emotion/utils': 1.2.0 - csstype: 3.1.1 - dev: false - - /@emotion/sheet/1.2.1: - resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} - dev: false - - /@emotion/styled/11.10.5_qvatmowesywn4ye42qoh247szu: - resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} - peerDependencies: - '@babel/core': ^7.0.0 - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.19.0 - '@emotion/babel-plugin': 11.10.5 - '@emotion/is-prop-valid': 1.2.0 - '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 - '@emotion/serialize': 1.1.1 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 - '@emotion/utils': 1.2.0 - '@types/react': 18.0.26 - react: 18.2.0 - dev: false - - /@emotion/stylis/0.8.5: - resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} - dev: false - - /@emotion/unitless/0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - dev: false - - /@emotion/unitless/0.8.0: - resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} - dev: false - - /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: - resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.2.0 - dev: false - - /@emotion/utils/1.2.0: - resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} - dev: false - - /@emotion/weak-memoize/0.3.0: - resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} - dev: false - - /@ensdomains/ens/0.4.5: - resolution: {integrity: sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==} - deprecated: Please use @ensdomains/ens-contracts - dependencies: - bluebird: 3.7.2 - eth-ens-namehash: 2.0.8 - solc: 0.4.26 - testrpc: 0.0.1 - web3-utils: 1.8.0 - dev: true - - /@ensdomains/resolver/0.2.4: - resolution: {integrity: sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==} - deprecated: Please use @ensdomains/ens-contracts - dev: true - - /@esbuild-plugins/node-globals-polyfill/0.1.1: - resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==} - peerDependencies: - esbuild: '*' - dev: false - - /@esbuild/linux-loong64/0.14.54: - resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@eslint/eslintrc/0.4.3: - resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} - engines: {node: ^10.12.0 || >=12.0.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 7.3.1 - globals: 13.17.0 - ignore: 4.0.6 - import-fresh: 3.3.0 - js-yaml: 3.14.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@ethereum-waffle/chai/3.4.4: - resolution: {integrity: sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g==} - engines: {node: '>=10.0'} - dependencies: - '@ethereum-waffle/provider': 3.4.4 - ethers: 5.7.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - - /@ethereum-waffle/compiler/3.4.4_typescript@4.7.4: - resolution: {integrity: sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ==} - engines: {node: '>=10.0'} - dependencies: - '@resolver-engine/imports': 0.3.3 - '@resolver-engine/imports-fs': 0.3.3 - '@typechain/ethers-v5': 2.0.0_hvhmgvgv65f7ns5nchpmx3azgq - '@types/mkdirp': 0.5.2 - '@types/node-fetch': 2.6.2 - ethers: 5.7.1 - mkdirp: 0.5.6 - node-fetch: 2.6.7 - solc: 0.6.12 - ts-generator: 0.1.1 - typechain: 3.0.0_typescript@4.7.4 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - dev: true - - /@ethereum-waffle/ens/3.4.4: - resolution: {integrity: sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg==} - engines: {node: '>=10.0'} - dependencies: - '@ensdomains/ens': 0.4.5 - '@ensdomains/resolver': 0.2.4 - ethers: 5.7.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - - /@ethereum-waffle/mock-contract/3.4.4: - resolution: {integrity: sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA==} - engines: {node: '>=10.0'} - dependencies: - '@ethersproject/abi': 5.7.0 - ethers: 5.7.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: true - - /@ethereum-waffle/provider/3.4.4: - resolution: {integrity: sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g==} - engines: {node: '>=10.0'} - dependencies: - '@ethereum-waffle/ens': 3.4.4 - ethers: 5.7.1 - ganache-core: 2.13.2 - patch-package: 6.5.0 - postinstall-postinstall: 2.1.0 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - - /@ethersproject/abi/5.0.0-beta.153: - resolution: {integrity: sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: true - optional: true - - /@ethersproject/abi/5.7.0: - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@ethersproject/abstract-provider/5.7.0: - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - - /@ethersproject/abstract-signer/5.7.0: - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - - /@ethersproject/address/5.7.0: - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - - /@ethersproject/base64/5.7.0: - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 - - /@ethersproject/basex/5.7.0: - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - /@ethersproject/bignumber/5.7.0: - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - - /@ethersproject/bytes/5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - dependencies: - '@ethersproject/logger': 5.7.0 - - /@ethersproject/constants/5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - - /@ethersproject/contracts/5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - - /@ethersproject/hash/5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@ethersproject/hdnode/5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - /@ethersproject/json-wallets/5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 - - /@ethersproject/keccak256/5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - - /@ethersproject/logger/5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - /@ethersproject/networks/5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - dependencies: - '@ethersproject/logger': 5.7.0 - - /@ethersproject/pbkdf2/5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 - - /@ethersproject/properties/5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - dependencies: - '@ethersproject/logger': 5.7.0 - - /@ethersproject/providers/5.7.1: - resolution: {integrity: sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - /@ethersproject/random/5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - /@ethersproject/rlp/5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - /@ethersproject/sha2/5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - /@ethersproject/signing-key/5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - - /@ethersproject/solidity/5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@ethersproject/strings/5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - /@ethersproject/transactions/5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - - /@ethersproject/units/5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - /@ethersproject/wallet/5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - - /@ethersproject/web/5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@ethersproject/wordlists/5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@fontsource/ubuntu-mono/4.5.11: - resolution: {integrity: sha512-IqqJKgp9Xc8tFeCIHPQuFbiKZC8tBU2hdIllwX2pryYfkl8/w4DuScFq9fPMfy1Mp4raFVcJALvOMOfRXkLp/w==} - dev: false - - /@heroicons/react/2.0.13_react@18.2.0: - resolution: {integrity: sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==} - peerDependencies: - react: '>= 16' - dependencies: - react: 18.2.0 - dev: false + '@babel/runtime': 7.19.0 + '@changesets/config': 2.2.0 + '@changesets/get-version-range-type': 0.3.2 + '@changesets/git': 1.5.0 + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.7.1 + resolve-from: 5.0.0 + semver: 5.7.1 + dev: true - /@humanwhocodes/config-array/0.5.0: - resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} - engines: {node: '>=10.10.0'} + /@changesets/assemble-release-plan/5.2.2: + resolution: {integrity: sha512-B1qxErQd85AeZgZFZw2bDKyOfdXHhG+X5S+W3Da2yCem8l/pRy4G/S7iOpEcMwg6lH8q2ZhgbZZwZ817D+aLuQ==} dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@babel/runtime': 7.19.0 + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.4 + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 + semver: 5.7.1 dev: true - /@humanwhocodes/object-schema/1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@changesets/changelog-git/0.1.13: + resolution: {integrity: sha512-zvJ50Q+EUALzeawAxax6nF2WIcSsC5PwbuLeWkckS8ulWnuPYx8Fn/Sjd3rF46OzeKA8t30loYYV6TIzp4DIdg==} + dependencies: + '@changesets/types': 5.2.0 dev: true - /@istanbuljs/load-nyc-config/1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + /@changesets/cli/2.25.0: + resolution: {integrity: sha512-Svu5KD2enurVHGEEzCRlaojrHjVYgF9srmMP9VQSy9c1TspX6C9lDPpulsSNIjYY9BuU/oiWpjBgR7RI9eQiAA==} + hasBin: true dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 + '@babel/runtime': 7.19.0 + '@changesets/apply-release-plan': 6.1.1 + '@changesets/assemble-release-plan': 5.2.2 + '@changesets/changelog-git': 0.1.13 + '@changesets/config': 2.2.0 + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.4 + '@changesets/get-release-plan': 3.0.15 + '@changesets/git': 1.5.0 + '@changesets/logger': 0.0.5 + '@changesets/pre': 1.0.13 + '@changesets/read': 0.5.8 + '@changesets/types': 5.2.0 + '@changesets/write': 0.2.1 + '@manypkg/get-packages': 1.1.3 + '@types/is-ci': 3.0.0 + '@types/semver': 6.2.3 + ansi-colors: 4.1.3 + chalk: 2.4.2 + enquirer: 2.3.6 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + is-ci: 3.0.1 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.0.3 resolve-from: 5.0.0 + semver: 5.7.1 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.1.6 dev: true - /@istanbuljs/schema/0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} + /@changesets/config/2.2.0: + resolution: {integrity: sha512-GGaokp3nm5FEDk/Fv2PCRcQCOxGKKPRZ7prcMqxEr7VSsG75MnChQE8plaW1k6V8L2bJE+jZWiRm19LbnproOw==} + dependencies: + '@changesets/errors': 0.1.4 + '@changesets/get-dependents-graph': 1.3.4 + '@changesets/logger': 0.0.5 + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 dev: true - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} + /@changesets/errors/0.1.4: + resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + extendable-error: 0.1.7 dev: true - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} + /@changesets/get-dependents-graph/1.3.4: + resolution: {integrity: sha512-+C4AOrrFY146ydrgKOo5vTZfj7vetNu1tWshOID+UjPUU9afYGDXI8yLnAeib1ffeBXV3TuGVcyphKpJ3cKe+A==} dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.15 - - /@jridgewell/resolve-uri/3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array/1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 5.7.1 + dev: true - /@jridgewell/source-map/0.3.2: - resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + /@changesets/get-release-plan/3.0.15: + resolution: {integrity: sha512-W1tFwxE178/en+zSj/Nqbc3mvz88mcdqUMJhRzN1jDYqN3QI4ifVaRF9mcWUU+KI0gyYEtYR65tour690PqTcA==} dependencies: - '@jridgewell/gen-mapping': 0.3.2 - '@jridgewell/trace-mapping': 0.3.15 + '@babel/runtime': 7.19.0 + '@changesets/assemble-release-plan': 5.2.2 + '@changesets/config': 2.2.0 + '@changesets/pre': 1.0.13 + '@changesets/read': 0.5.8 + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 dev: true - /@jridgewell/sourcemap-codec/1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + /@changesets/get-version-range-type/0.3.2: + resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + dev: true - /@jridgewell/trace-mapping/0.3.15: - resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} + /@changesets/git/1.5.0: + resolution: {integrity: sha512-Xo8AT2G7rQJSwV87c8PwMm6BAc98BnufRMsML7m7Iw8Or18WFvFmxqG5aOL5PBvhgq9KrKvaeIBNIymracSuHg==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@babel/runtime': 7.19.0 + '@changesets/errors': 0.1.4 + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + spawndamnit: 2.0.0 + dev: true - /@jridgewell/trace-mapping/0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + /@changesets/logger/0.0.5: + resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + chalk: 2.4.2 dev: true - /@json-rpc-tools/provider/1.7.6: - resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} + /@changesets/parse/0.3.15: + resolution: {integrity: sha512-3eDVqVuBtp63i+BxEWHPFj2P1s3syk0PTrk2d94W9JD30iG+OER0Y6n65TeLlY8T2yB9Fvj6Ev5Gg0+cKe/ZUA==} dependencies: - '@json-rpc-tools/utils': 1.7.6 - axios: 0.21.4 - safe-json-utils: 1.1.1 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - debug - - utf-8-validate - dev: false + '@changesets/types': 5.2.0 + js-yaml: 3.14.1 + dev: true - /@json-rpc-tools/types/1.7.6: - resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} + /@changesets/pre/1.0.13: + resolution: {integrity: sha512-jrZc766+kGZHDukjKhpBXhBJjVQMied4Fu076y9guY1D3H622NOw8AQaLV3oQsDtKBTrT2AUFjt9Z2Y9Qx+GfA==} dependencies: - keyvaluestorage-interface: 1.0.0 - dev: false + '@babel/runtime': 7.19.0 + '@changesets/errors': 0.1.4 + '@changesets/types': 5.2.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + dev: true - /@json-rpc-tools/utils/1.7.6: - resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} + /@changesets/read/0.5.8: + resolution: {integrity: sha512-eYaNfxemgX7f7ELC58e7yqQICW5FB7V+bd1lKt7g57mxUrTveYME+JPaBPpYx02nP53XI6CQp6YxnR9NfmFPKw==} dependencies: - '@json-rpc-tools/types': 1.7.6 - '@pedrouid/environment': 1.0.1 - dev: false + '@babel/runtime': 7.19.0 + '@changesets/git': 1.5.0 + '@changesets/logger': 0.0.5 + '@changesets/parse': 0.3.15 + '@changesets/types': 5.2.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + dev: true - /@manypkg/find-root/1.1.0: - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + /@changesets/types/4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: true + + /@changesets/types/5.2.0: + resolution: {integrity: sha512-km/66KOqJC+eicZXsm2oq8A8bVTSpkZJ60iPV/Nl5Z5c7p9kk8xxh6XGRTlnludHldxOOfudhnDN2qPxtHmXzA==} + dev: true + + /@changesets/write/0.2.1: + resolution: {integrity: sha512-KUd49nt2fnYdGixIqTi1yVE1nAoZYUMdtB3jBfp77IMqjZ65hrmZE5HdccDlTeClZN0420ffpnfET3zzeY8pdw==} dependencies: '@babel/runtime': 7.19.0 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 + '@changesets/types': 5.2.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.7.1 dev: true - /@manypkg/get-packages/1.1.3: - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + /@coinbase/wallet-sdk/3.5.3: + resolution: {integrity: sha512-kaGMk9KyiSLPm1+BvCQSc99ku9gn0j+M1+2Beii+4gx/lRVhutlzmn6l+5zTB/n3xri25iTr+SxjMZLlMfW8Hg==} + engines: {node: '>= 10.0.0'} dependencies: - '@babel/runtime': 7.19.0 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 + '@metamask/safe-event-emitter': 2.0.0 + '@solana/web3.js': 1.52.0 + bind-decorator: 1.0.11 + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 4.4.3 + eth-json-rpc-filters: 4.2.2 + eth-rpc-errors: 4.0.2 + json-rpc-engine: 6.1.0 + keccak: 3.0.2 + preact: 10.11.0 + qs: 6.11.0 + rxjs: 6.6.7 + sha.js: 2.4.11 + stream-browserify: 3.0.0 + util: 0.12.4 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - react-native + - supports-color + - utf-8-validate + dev: false + + /@colors/colors/1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} dev: true - /@metamask/eth-sig-util/4.0.1: - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} 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 + '@jridgewell/trace-mapping': 0.3.9 dev: true - /@metamask/safe-event-emitter/2.0.0: - resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - dev: false - - /@monaco-editor/loader/1.3.2_monaco-editor@0.33.0: - resolution: {integrity: sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g==} - peerDependencies: - monaco-editor: '>= 0.21.0 < 1' + /@dabh/diagnostics/2.0.3: + resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==} dependencies: - monaco-editor: 0.33.0 - state-local: 1.0.7 - dev: false + colorspace: 1.1.4 + enabled: 2.0.0 + kuler: 2.0.0 + dev: true - /@monaco-editor/react/4.4.6_jywyd5ymizla4bkdnod6po6m6y: - resolution: {integrity: sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA==} + /@emotion/babel-plugin/11.10.5: + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} peerDependencies: - monaco-editor: '>= 0.25.0 < 1' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + '@babel/core': ^7.0.0 dependencies: - '@monaco-editor/loader': 1.3.2_monaco-editor@0.33.0 - monaco-editor: 0.33.0 - prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6 + '@babel/runtime': 7.19.0 + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/serialize': 1.1.1 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.8.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.1.3 dev: false - /@motionone/animation/10.15.1: - resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} + /@emotion/cache/11.10.5: + resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} dependencies: - '@motionone/easing': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - tslib: 2.4.0 + '@emotion/memoize': 0.8.0 + '@emotion/sheet': 1.2.1 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + stylis: 4.1.3 dev: false - /@motionone/dom/10.15.3: - resolution: {integrity: sha512-FQ7a2zMBXc1UeU8CG9G3yDpst55fbb0+C9A0VGfwOITitBCzigKZnXRgsRSWWR+FW57GSc13eGQxtYB0lKG0Ng==} - dependencies: - '@motionone/animation': 10.15.1 - '@motionone/generators': 10.15.1 - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - hey-listen: 1.0.8 - tslib: 2.4.0 + /@emotion/hash/0.9.0: + resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} dev: false - /@motionone/easing/10.15.1: - resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} + /@emotion/is-prop-valid/0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} dependencies: - '@motionone/utils': 10.15.1 - tslib: 2.4.0 + '@emotion/memoize': 0.7.4 dev: false - /@motionone/generators/10.15.1: - resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} + /@emotion/is-prop-valid/1.2.0: + resolution: {integrity: sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==} dependencies: - '@motionone/types': 10.15.1 - '@motionone/utils': 10.15.1 - tslib: 2.4.0 + '@emotion/memoize': 0.8.0 dev: false - /@motionone/types/10.15.1: - resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + /@emotion/memoize/0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} dev: false - /@motionone/utils/10.15.1: - resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} - dependencies: - '@motionone/types': 10.15.1 - hey-listen: 1.0.8 - tslib: 2.4.0 + /@emotion/memoize/0.8.0: + resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} dev: false - /@mswjs/cookies/0.2.2: - resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} - engines: {node: '>=14'} - dependencies: - '@types/set-cookie-parser': 2.4.2 - set-cookie-parser: 2.5.1 - dev: true - - /@mswjs/interceptors/0.17.6: - resolution: {integrity: sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==} - engines: {node: '>=14'} + /@emotion/react/11.10.5_kzbn2opkn2327fwg5yzwzya5o4: + resolution: {integrity: sha512-TZs6235tCJ/7iF6/rvTaOH4oxQg2gMAcdHemjwLKIjKz4rRuYe1HJ2TQJKnAcRAfOUDdU8XoDadCe1rl72iv8A==} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true dependencies: - '@open-draft/until': 1.0.3 - '@types/debug': 4.1.7 - '@xmldom/xmldom': 0.8.3 - debug: 4.3.4 - headers-polyfill: 3.1.2 - outvariant: 1.3.0 - strict-event-emitter: 0.2.8 - web-encoding: 1.1.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@multiformats/base-x/4.0.1: - resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} + '@babel/runtime': 7.19.0 + '@emotion/babel-plugin': 11.10.5 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + '@types/react': 18.0.26 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 dev: false - /@noble/hashes/1.1.2: - resolution: {integrity: sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==} - dev: true - - /@noble/secp256k1/1.6.3: - resolution: {integrity: sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==} - dev: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: true - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 - dev: true - - /@nomicfoundation/ethereumjs-block/4.0.0: - resolution: {integrity: sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-common': 3.0.0 - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-trie': 5.0.0 - '@nomicfoundation/ethereumjs-tx': 4.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - ethereum-cryptography: 0.1.3 - dev: true - - /@nomicfoundation/ethereumjs-blockchain/6.0.0: - resolution: {integrity: sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==} - engines: {node: '>=14'} + /@emotion/serialize/1.1.1: + resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} dependencies: - '@nomicfoundation/ethereumjs-block': 4.0.0 - '@nomicfoundation/ethereumjs-common': 3.0.0 - '@nomicfoundation/ethereumjs-ethash': 2.0.0 - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-trie': 5.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - abstract-level: 1.0.3 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - level: 8.0.0 - lru-cache: 5.1.1 - memory-level: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: true + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/unitless': 0.8.0 + '@emotion/utils': 1.2.0 + csstype: 3.1.1 + dev: false - /@nomicfoundation/ethereumjs-common/3.0.0: - resolution: {integrity: sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==} - dependencies: - '@nomicfoundation/ethereumjs-util': 8.0.0 - crc-32: 1.2.2 - dev: true + /@emotion/sheet/1.2.1: + resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} + dev: false - /@nomicfoundation/ethereumjs-ethash/2.0.0: - resolution: {integrity: sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==} - engines: {node: '>=14'} + /@emotion/styled/11.10.5_qvatmowesywn4ye42qoh247szu: + resolution: {integrity: sha512-8EP6dD7dMkdku2foLoruPCNkRevzdcBaY6q0l0OsbyJK+x8D9HWjX27ARiSIKNF634hY9Zdoedh8bJCiva8yZw==} + peerDependencies: + '@babel/core': ^7.0.0 + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@babel/core': + optional: true + '@types/react': + optional: true dependencies: - '@nomicfoundation/ethereumjs-block': 4.0.0 - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - abstract-level: 1.0.3 - bigint-crypto-utils: 3.1.7 - ethereum-cryptography: 0.1.3 - dev: true + '@babel/runtime': 7.19.0 + '@emotion/babel-plugin': 11.10.5 + '@emotion/is-prop-valid': 1.2.0 + '@emotion/react': 11.10.5_kzbn2opkn2327fwg5yzwzya5o4 + '@emotion/serialize': 1.1.1 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.0_react@18.2.0 + '@emotion/utils': 1.2.0 + '@types/react': 18.0.26 + react: 18.2.0 + dev: false - /@nomicfoundation/ethereumjs-evm/1.0.0: - resolution: {integrity: sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-common': 3.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - '@types/async-eventemitter': 0.2.1 - async-eventemitter: 0.2.4 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true + /@emotion/stylis/0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: false - /@nomicfoundation/ethereumjs-rlp/4.0.0: - resolution: {integrity: sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==} - engines: {node: '>=14'} - hasBin: true - dev: true + /@emotion/unitless/0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + dev: false - /@nomicfoundation/ethereumjs-statemanager/1.0.0: - resolution: {integrity: sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==} - dependencies: - '@nomicfoundation/ethereumjs-common': 3.0.0 - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-trie': 5.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - functional-red-black-tree: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: true + /@emotion/unitless/0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: false - /@nomicfoundation/ethereumjs-trie/5.0.0: - resolution: {integrity: sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==} - engines: {node: '>=14'} + /@emotion/use-insertion-effect-with-fallbacks/1.0.0_react@18.2.0: + resolution: {integrity: sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==} + peerDependencies: + react: '>=16.8.0' dependencies: - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - ethereum-cryptography: 0.1.3 - readable-stream: 3.6.0 - dev: true + react: 18.2.0 + dev: false - /@nomicfoundation/ethereumjs-tx/4.0.0: - resolution: {integrity: sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-common': 3.0.0 - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - ethereum-cryptography: 0.1.3 - dev: true + /@emotion/utils/1.2.0: + resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} + dev: false - /@nomicfoundation/ethereumjs-util/8.0.0: - resolution: {integrity: sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - ethereum-cryptography: 0.1.3 + /@emotion/weak-memoize/0.3.0: + resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} + dev: false + + /@esbuild-plugins/node-globals-polyfill/0.1.1: + resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==} + peerDependencies: + esbuild: '*' + dev: false + + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@nomicfoundation/ethereumjs-vm/6.0.0: - resolution: {integrity: sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-block': 4.0.0 - '@nomicfoundation/ethereumjs-blockchain': 6.0.0 - '@nomicfoundation/ethereumjs-common': 3.0.0 - '@nomicfoundation/ethereumjs-evm': 1.0.0 - '@nomicfoundation/ethereumjs-rlp': 4.0.0 - '@nomicfoundation/ethereumjs-statemanager': 1.0.0 - '@nomicfoundation/ethereumjs-trie': 5.0.0 - '@nomicfoundation/ethereumjs-tx': 4.0.0 - '@nomicfoundation/ethereumjs-util': 8.0.0 - '@types/async-eventemitter': 0.2.1 - async-eventemitter: 0.2.4 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - functional-red-black-tree: 1.0.1 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 - transitivePeerDependencies: - - supports-color + /@esbuild/android-arm/0.16.12: + resolution: {integrity: sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@nomicfoundation/solidity-analyzer-darwin-arm64/0.1.0: - resolution: {integrity: sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw==} - engines: {node: '>= 10'} + /@esbuild/android-arm64/0.16.12: + resolution: {integrity: sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==} + engines: {node: '>=12'} cpu: [arm64] - os: [darwin] + os: [android] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-darwin-x64/0.1.0: - resolution: {integrity: sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==} - engines: {node: '>= 10'} + /@esbuild/android-x64/0.16.12: + resolution: {integrity: sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==} + engines: {node: '>=12'} cpu: [x64] - os: [darwin] + os: [android] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-freebsd-x64/0.1.0: - resolution: {integrity: sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] + /@esbuild/darwin-arm64/0.16.12: + resolution: {integrity: sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-linux-arm64-gnu/0.1.0: - resolution: {integrity: sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] + /@esbuild/darwin-x64/0.16.12: + resolution: {integrity: sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-linux-arm64-musl/0.1.0: - resolution: {integrity: sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w==} - engines: {node: '>= 10'} + /@esbuild/freebsd-arm64/0.16.12: + resolution: {integrity: sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==} + engines: {node: '>=12'} cpu: [arm64] - os: [linux] + os: [freebsd] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-linux-x64-gnu/0.1.0: - resolution: {integrity: sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw==} - engines: {node: '>= 10'} + /@esbuild/freebsd-x64/0.16.12: + resolution: {integrity: sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==} + engines: {node: '>=12'} cpu: [x64] - os: [linux] + os: [freebsd] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-linux-x64-musl/0.1.0: - resolution: {integrity: sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg==} - engines: {node: '>= 10'} - cpu: [x64] + /@esbuild/linux-arm/0.16.12: + resolution: {integrity: sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==} + engines: {node: '>=12'} + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-win32-arm64-msvc/0.1.0: - resolution: {integrity: sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw==} - engines: {node: '>= 10'} + /@esbuild/linux-arm64/0.16.12: + resolution: {integrity: sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==} + engines: {node: '>=12'} cpu: [arm64] - os: [win32] + os: [linux] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-win32-ia32-msvc/0.1.0: - resolution: {integrity: sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw==} - engines: {node: '>= 10'} + /@esbuild/linux-ia32/0.16.12: + resolution: {integrity: sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==} + engines: {node: '>=12'} cpu: [ia32] - os: [win32] + os: [linux] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer-win32-x64-msvc/0.1.0: - resolution: {integrity: sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] + /@esbuild/linux-loong64/0.14.54: + resolution: {integrity: sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] requiresBuild: true dev: true optional: true - /@nomicfoundation/solidity-analyzer/0.1.0: - resolution: {integrity: sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==} - engines: {node: '>= 12'} - optionalDependencies: - '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.0 - '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.0 - '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.0 - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.0 - '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.0 - '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.0 - '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.0 - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.0 - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.0 - '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.0 - dev: true - - /@nomiclabs/hardhat-ethers/2.2.0_h4qtpcxkfvtpy6ldthi4lq2o6i: - resolution: {integrity: sha512-kKCW7xawuD/lw69Yr1yqUUrF0IKmnLNGf+pTVbJ/ctHaRcPrwKI0EPkO1RNXBHlOOZkv6v4DK2PPvq0lL2ykig==} - peerDependencies: - ethers: ^5.0.0 - hardhat: ^2.0.0 - dependencies: - ethers: 5.7.1 - hardhat: 2.12.0_6oasmw356qmm23djlsjgkwvrtm - dev: true - - /@nomiclabs/hardhat-waffle/2.0.3_q2f2pwtp6ggkbc2ubxxtaelloq: - resolution: {integrity: sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg==} - peerDependencies: - '@nomiclabs/hardhat-ethers': ^2.0.0 - ethereum-waffle: ^3.2.0 - ethers: ^5.0.0 - hardhat: ^2.0.0 - dependencies: - '@nomiclabs/hardhat-ethers': 2.2.0_h4qtpcxkfvtpy6ldthi4lq2o6i - '@types/sinon-chai': 3.2.8 - '@types/web3': 1.0.19 - ethereum-waffle: 3.4.4_typescript@4.7.4 - ethers: 5.7.1 - hardhat: 2.12.0_6oasmw356qmm23djlsjgkwvrtm - dev: true - - /@open-draft/until/1.0.3: - resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + /@esbuild/linux-loong64/0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@pedrouid/environment/1.0.1: - resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} - dev: false - - /@popperjs/core/2.11.6: - resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} - dev: false - - /@preconstruct/cli/2.2.2: - resolution: {integrity: sha512-7Zk8g/G+SPusoL1Ir3oslj19QDoFuAKeQO8B6fnNkRRgvIntxnylGZyC4wdKVX/eeDHwca1LNLT/GyjXx1f1nA==} - hasBin: true - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/core': 7.19.1 - '@babel/helper-module-imports': 7.18.6 - '@babel/runtime': 7.19.0 - '@preconstruct/hook': 0.4.0 - '@rollup/plugin-alias': 3.1.9_rollup@2.77.3 - '@rollup/plugin-commonjs': 15.1.0_rollup@2.77.3 - '@rollup/plugin-json': 4.1.0_rollup@2.77.3 - '@rollup/plugin-node-resolve': 11.2.1_rollup@2.77.3 - '@rollup/plugin-replace': 2.4.2_rollup@2.77.3 - builtin-modules: 3.3.0 - chalk: 4.1.2 - dataloader: 2.1.0 - detect-indent: 6.1.0 - enquirer: 2.3.6 - estree-walker: 2.0.2 - fast-deep-equal: 2.0.1 - fast-glob: 3.2.12 - fs-extra: 9.1.0 - is-ci: 2.0.0 - is-reference: 1.2.1 - jest-worker: 26.6.2 - magic-string: 0.25.9 - meow: 7.1.1 - ms: 2.1.2 - normalize-path: 3.0.0 - npm-packlist: 2.2.2 - p-limit: 3.1.0 - parse-glob: 3.0.4 - parse-json: 5.2.0 - quick-lru: 5.1.1 - resolve: 1.22.1 - resolve-from: 5.0.0 - rollup: 2.77.3 - semver: 7.3.7 - terser: 5.15.1 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color + /@esbuild/linux-loong64/0.16.12: + resolution: {integrity: sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@preconstruct/hook/0.4.0: - resolution: {integrity: sha512-a7mrlPTM3tAFJyz43qb4pPVpUx8j8TzZBFsNFqcKcE/sEakNXRlQAuCT4RGZRf9dQiiUnBahzSIWawU4rENl+Q==} - dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.19.1 - pirates: 4.0.5 - source-map-support: 0.5.21 - transitivePeerDependencies: - - supports-color + /@esbuild/linux-mips64el/0.16.12: + resolution: {integrity: sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /@react-spring/animated/9.5.4_react@18.2.0: - resolution: {integrity: sha512-gYd+xWwcNxEGA9EdORz/xsGsuQmz46FCu7OLIGOZK00fiSkjEM8yTwBQ9i8SUslRAdxTW+POL5OctDpCA6A7xw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@react-spring/shared': 9.5.4_react@18.2.0 - '@react-spring/types': 9.5.4 - react: 18.2.0 - dev: false - - /@react-spring/core/9.5.4_react@18.2.0: - resolution: {integrity: sha512-ZQxS5+5i6dVWL8mnRbrUMdkT7TfWhdIYYe2ze3my2SNAKC14JjxHxeknX57ywRyudskR1Z9CQjiC8aXX6QBl7w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@react-spring/animated': 9.5.4_react@18.2.0 - '@react-spring/rafz': 9.5.4 - '@react-spring/shared': 9.5.4_react@18.2.0 - '@react-spring/types': 9.5.4 - react: 18.2.0 - dev: false + /@esbuild/linux-ppc64/0.16.12: + resolution: {integrity: sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@react-spring/rafz/9.5.4: - resolution: {integrity: sha512-Tmev2j7sq2FW3ISUClnNS0PhkCsBfPPpkHVMxz8mkIKzMGXWskd0GblOoPVJiWvhbccaX/NYd+ykJqJ1gY0v9g==} - dev: false + /@esbuild/linux-riscv64/0.16.12: + resolution: {integrity: sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@react-spring/shared/9.5.4_react@18.2.0: - resolution: {integrity: sha512-22IYmNOzDRP9e5BaQk6T/P2aRxne9uTzGDYuBQCbJpChZypB98xWBMKlVTKdSRG7K4v+F97KFPAKBQzS/k7p5Q==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@react-spring/rafz': 9.5.4 - '@react-spring/types': 9.5.4 - react: 18.2.0 - dev: false + /@esbuild/linux-s390x/0.16.12: + resolution: {integrity: sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@react-spring/types/9.5.4: - resolution: {integrity: sha512-dzcGxqL1kPKociXK+pcq5ley77cWDWiphfv8OREv8dAZS1dKDTJq1zVy7ZD5ocyMtKMZw/7AcOdIJ1H80Dp56g==} - dev: false + /@esbuild/linux-x64/0.16.12: + resolution: {integrity: sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@react-spring/web/9.5.4_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-HoypE3kL/ZUBB81hThE1hB9jYBgJmfeluEOPYoI/wGHyF1q8O0AYpWClvdAbiK3FTESHYZi2m60jwitF7VYUlQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@react-spring/animated': 9.5.4_react@18.2.0 - '@react-spring/core': 9.5.4_react@18.2.0 - '@react-spring/shared': 9.5.4_react@18.2.0 - '@react-spring/types': 9.5.4 - react: 18.2.0 - react-dom: 18.2.0_react@18.2.0 - dev: false + /@esbuild/netbsd-x64/0.16.12: + resolution: {integrity: sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true - /@remix-run/router/1.0.3: - resolution: {integrity: sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q==} - engines: {node: '>=14'} - dev: false + /@esbuild/openbsd-x64/0.16.12: + resolution: {integrity: sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true - /@resolver-engine/core/0.3.3: - resolution: {integrity: sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==} - dependencies: - debug: 3.2.7 - is-url: 1.2.4 - request: 2.88.2 - transitivePeerDependencies: - - supports-color + /@esbuild/sunos-x64/0.16.12: + resolution: {integrity: sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true dev: true + optional: true - /@resolver-engine/fs/0.3.3: - resolution: {integrity: sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==} - dependencies: - '@resolver-engine/core': 0.3.3 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color + /@esbuild/win32-arm64/0.16.12: + resolution: {integrity: sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@resolver-engine/imports-fs/0.3.3: - resolution: {integrity: sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==} - dependencies: - '@resolver-engine/fs': 0.3.3 - '@resolver-engine/imports': 0.3.3 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color + /@esbuild/win32-ia32/0.16.12: + resolution: {integrity: sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.16.12: + resolution: {integrity: sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@resolver-engine/imports/0.3.3: - resolution: {integrity: sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==} + /@eslint/eslintrc/0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - '@resolver-engine/core': 0.3.3 - debug: 3.2.7 - hosted-git-info: 2.8.9 - path-browserify: 1.0.1 - url: 0.11.0 + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.17.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /@rollup/plugin-alias/3.1.9_rollup@2.77.3: - resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} - engines: {node: '>=8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + /@ethersproject/abi/5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: - rollup: 2.77.3 - slash: 3.0.0 - dev: true + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@rollup/plugin-commonjs/15.1.0_rollup@2.77.3: - resolution: {integrity: sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^2.22.0 + /@ethersproject/abstract-provider/5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.3 - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 7.2.3 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.1 - rollup: 2.77.3 - dev: true + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 - /@rollup/plugin-json/4.1.0_rollup@2.77.3: - resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + /@ethersproject/abstract-signer/5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.3 - rollup: 2.77.3 - dev: true + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 - /@rollup/plugin-node-resolve/11.2.1_rollup@2.77.3: - resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + /@ethersproject/address/5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.3 - '@types/resolve': 1.17.1 - builtin-modules: 3.3.0 - deepmerge: 4.2.2 - is-module: 1.0.0 - resolve: 1.22.1 - rollup: 2.77.3 - dev: true + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 - /@rollup/plugin-replace/2.4.2_rollup@2.77.3: - resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + /@ethersproject/base64/5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} dependencies: - '@rollup/pluginutils': 3.1.0_rollup@2.77.3 - magic-string: 0.25.9 - rollup: 2.77.3 - dev: true + '@ethersproject/bytes': 5.7.0 - /@rollup/pluginutils/3.1.0_rollup@2.77.3: - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 + /@ethersproject/basex/5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.77.3 - dev: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 - /@rollup/pluginutils/4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + /@ethersproject/bignumber/5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - - /@scure/base/1.1.1: - resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} - dev: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 - /@scure/bip32/1.1.0: - resolution: {integrity: sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==} + /@ethersproject/bytes/5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} dependencies: - '@noble/hashes': 1.1.2 - '@noble/secp256k1': 1.6.3 - '@scure/base': 1.1.1 - dev: true + '@ethersproject/logger': 5.7.0 - /@scure/bip39/1.1.0: - resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + /@ethersproject/constants/5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} dependencies: - '@noble/hashes': 1.1.2 - '@scure/base': 1.1.1 - dev: true + '@ethersproject/bignumber': 5.7.0 - /@sentry/core/5.30.0: - resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} - engines: {node: '>=6'} + /@ethersproject/contracts/5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - dev: true + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 - /@sentry/hub/5.30.0: - resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} - engines: {node: '>=6'} + /@ethersproject/hash/5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} dependencies: - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - dev: true + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@sentry/minimal/5.30.0: - resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} - engines: {node: '>=6'} + /@ethersproject/hdnode/5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} dependencies: - '@sentry/hub': 5.30.0 - '@sentry/types': 5.30.0 - tslib: 1.14.1 - dev: true + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 - /@sentry/node/5.30.0: - resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} - engines: {node: '>=6'} + /@ethersproject/json-wallets/5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} 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.2 - https-proxy-agent: 5.0.1 - lru_map: 0.3.3 - tslib: 1.14.1 - transitivePeerDependencies: - - supports-color - dev: true + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 - /@sentry/tracing/5.30.0: - resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} - engines: {node: '>=6'} + /@ethersproject/keccak256/5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - dev: true + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 - /@sentry/types/5.30.0: - resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} - engines: {node: '>=6'} - dev: true + /@ethersproject/logger/5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - /@sentry/utils/5.30.0: - resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} - engines: {node: '>=6'} + /@ethersproject/networks/5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} dependencies: - '@sentry/types': 5.30.0 - tslib: 1.14.1 - dev: true - - /@sindresorhus/is/0.14.0: - resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} - engines: {node: '>=6'} - dev: true - optional: true + '@ethersproject/logger': 5.7.0 - /@sindresorhus/is/4.6.0: - resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} - engines: {node: '>=10'} - dev: true - optional: true + /@ethersproject/pbkdf2/5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 - /@solana/buffer-layout/4.0.0: - resolution: {integrity: sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==} - engines: {node: '>=5.10'} + /@ethersproject/properties/5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} dependencies: - buffer: 6.0.3 - dev: false + '@ethersproject/logger': 5.7.0 - /@solana/web3.js/1.52.0: - resolution: {integrity: sha512-oG1+BX4nVYZ0OBzmk6DRrY8oBYMsbXVQEf9N9JOfKm+wXSmjxVEEo8v3IPV8mKwR0JvUWuE8lOn3IUDiMlRLgg==} - engines: {node: '>=12.20.0'} + /@ethersproject/providers/5.7.1: + resolution: {integrity: sha512-vZveG/DLyo+wk4Ga1yx6jSEHrLPgmTt+dFv0dv8URpVCRf0jVhalps1jq/emN/oXnMRsC7cQgAF32DcXLL7BPQ==} dependencies: - '@babel/runtime': 7.19.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.7.0 - '@solana/buffer-layout': 4.0.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.1 - fast-stable-stringify: 1.0.0 - jayson: 3.7.0 - js-sha3: 0.8.0 - node-fetch: 2.6.7 - react-native-url-polyfill: 1.3.0 - rpc-websockets: 7.5.0 - secp256k1: 4.0.3 - superstruct: 0.14.2 - tweetnacl: 1.0.3 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 transitivePeerDependencies: - bufferutil - - encoding - - react-native - utf-8-validate - dev: false - /@szmarczak/http-timer/1.1.2: - resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} - engines: {node: '>=6'} + /@ethersproject/random/5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} dependencies: - defer-to-connect: 1.1.3 - dev: true - optional: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 - /@szmarczak/http-timer/4.0.6: - resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} - engines: {node: '>=10'} + /@ethersproject/rlp/5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} dependencies: - defer-to-connect: 2.0.1 - dev: true - optional: true - - /@tsconfig/node10/1.0.9: - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} - dev: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 - /@tsconfig/node12/1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + /@ethersproject/sha2/5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 - /@tsconfig/node14/1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + /@ethersproject/signing-key/5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 - /@tsconfig/node16/1.0.3: - resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - dev: true + /@ethersproject/solidity/5.7.0: + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@typechain/ethers-v5/2.0.0_hvhmgvgv65f7ns5nchpmx3azgq: - resolution: {integrity: sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==} - peerDependencies: - ethers: ^5.0.0 - typechain: ^3.0.0 + /@ethersproject/strings/5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} dependencies: - ethers: 5.7.1 - typechain: 3.0.0_typescript@4.7.4 - dev: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 - /@types/async-eventemitter/0.2.1: - resolution: {integrity: sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==} - dev: true + /@ethersproject/transactions/5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 - /@types/bn.js/4.11.6: - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + /@ethersproject/units/5.7.0: + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} dependencies: - '@types/node': 18.7.21 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 - /@types/bn.js/5.1.1: - resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} + /@ethersproject/wallet/5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} dependencies: - '@types/node': 18.7.21 - dev: true + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 - /@types/cacheable-request/6.0.2: - resolution: {integrity: sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==} + /@ethersproject/web/5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} dependencies: - '@types/http-cache-semantics': 4.0.1 - '@types/keyv': 4.2.0 - '@types/node': 18.7.21 - '@types/responselike': 1.0.0 - dev: true - optional: true - - /@types/chai/4.3.3: - resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} - dev: true + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@types/connect/3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + /@ethersproject/wordlists/5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} dependencies: - '@types/node': 18.7.21 - dev: false + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@types/cookie/0.4.1: - resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} - dev: true + /@fontsource/ubuntu-mono/4.5.11: + resolution: {integrity: sha512-IqqJKgp9Xc8tFeCIHPQuFbiKZC8tBU2hdIllwX2pryYfkl8/w4DuScFq9fPMfy1Mp4raFVcJALvOMOfRXkLp/w==} + dev: false - /@types/debug/4.1.7: - resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} + /@heroicons/react/2.0.13_react@18.2.0: + resolution: {integrity: sha512-iSN5XwmagrnirWlYEWNPdCDj9aRYVD/lnK3JlsC9/+fqGF80k8C7rl+1HCvBX0dBoagKqOFBs6fMhJJ1hOg1EQ==} + peerDependencies: + react: '>= 16' dependencies: - '@types/ms': 0.7.31 + react: 18.2.0 + dev: false - /@types/eslint/8.4.8: - resolution: {integrity: sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==} + /@humanwhocodes/config-array/0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} dependencies: - '@types/estree': 1.0.0 - '@types/json-schema': 7.0.11 - dev: true - - /@types/estree/0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color dev: true - /@types/estree/1.0.0: - resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@types/hast/2.3.4: - resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + /@istanbuljs/load-nyc-config/1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} dependencies: - '@types/unist': 2.0.6 - dev: false - - /@types/http-cache-semantics/4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 dev: true - optional: true - /@types/is-ci/3.0.0: - resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} - dependencies: - ci-info: 3.5.0 + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} dev: true - /@types/isomorphic-fetch/0.0.36: - resolution: {integrity: sha512-ulw4d+vW1HKn4oErSmNN2HYEcHGq0N1C5exlrMM0CRqX1UUpFhGb5lwiom5j9KN3LBJJDLRmYIZz1ghm7FIzZw==} + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@types/js-levenshtein/1.1.1: - resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} - dev: true + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.15 - /@types/json-schema/7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} - /@types/json5/0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} - /@types/keyv/3.1.4: - resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - dependencies: - '@types/node': 18.7.21 - dev: true - optional: true + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@types/keyv/4.2.0: - resolution: {integrity: sha512-xoBtGl5R9jeKUhc8ZqeYaRDx04qqJ10yhhXYGmJ4Jr8qKpvMsDQQrNUvF/wUJ4klOtmJeJM+p2Xo3zp9uaC3tw==} - deprecated: This is a stub types definition. keyv provides its own type definitions, so you do not need this installed. + /@jridgewell/trace-mapping/0.3.15: + resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} dependencies: - keyv: 4.5.0 - dev: true - optional: true + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 - /@types/lodash.clonedeep/4.5.7: - resolution: {integrity: sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==} + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: - '@types/lodash': 4.14.185 + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@types/lodash.mergewith/4.6.6: - resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} + /@json-rpc-tools/provider/1.7.6: + resolution: {integrity: sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA==} dependencies: - '@types/lodash': 4.14.185 + '@json-rpc-tools/utils': 1.7.6 + axios: 0.21.4 + safe-json-utils: 1.1.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate dev: false - /@types/lodash/4.14.185: - resolution: {integrity: sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==} - - /@types/lru-cache/5.1.1: - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} - dev: true - - /@types/mdast/3.0.10: - resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + /@json-rpc-tools/types/1.7.6: + resolution: {integrity: sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ==} dependencies: - '@types/unist': 2.0.6 + keyvaluestorage-interface: 1.0.0 dev: false - /@types/minimist/1.2.2: - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} - dev: true - - /@types/mkdirp/0.5.2: - resolution: {integrity: sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==} - dependencies: - '@types/node': 18.7.21 - dev: true - - /@types/mocha/8.2.3: - resolution: {integrity: sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==} - dev: true - - /@types/ms/0.7.31: - resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} - - /@types/node-fetch/2.6.2: - resolution: {integrity: sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==} + /@json-rpc-tools/utils/1.7.6: + resolution: {integrity: sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw==} dependencies: - '@types/node': 18.7.21 - form-data: 3.0.1 - dev: true - - /@types/node/12.20.55: - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - /@types/node/14.18.32: - resolution: {integrity: sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==} - dev: true - - /@types/node/18.7.21: - resolution: {integrity: sha512-rLFzK5bhM0YPyCoTC8bolBjMk7bwnZ8qeZUBslBfjZQou2ssJdWslx9CZ8DGM+Dx7QXQiiTVZ/6QO6kwtHkZCA==} - - /@types/normalize-package-data/2.4.1: - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} - dev: true - - /@types/parse-json/4.0.0: - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + '@json-rpc-tools/types': 1.7.6 + '@pedrouid/environment': 1.0.1 dev: false - /@types/pbkdf2/3.1.0: - resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} + /@manypkg/find-root/1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@types/node': 18.7.21 - - /@types/prettier/2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + '@babel/runtime': 7.19.0 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 dev: true - /@types/prop-types/15.7.5: - resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - - /@types/react-blockies/1.4.1: - resolution: {integrity: sha512-aDX0g0hwzdodkGLSDNUQr6gXxwclGjnhS8jhsR8uQhAfe/7i3GZD/NDcSlQ2SiQiLhfRxX3NlY+nvBwf5Y0tTg==} + /@manypkg/get-packages/1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@types/react': 18.0.26 + '@babel/runtime': 7.19.0 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 dev: true - /@types/react-dom/18.0.9: - resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + /@metamask/eth-sig-util/4.0.1: + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} dependencies: - '@types/react': 18.0.26 + ethereumjs-abi: 0.6.8 + ethereumjs-util: 6.2.1 + ethjs-util: 0.1.6 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 dev: true - /@types/react-transition-group/4.4.5: - resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} + /@metamask/safe-event-emitter/2.0.0: + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + dev: false + + /@monaco-editor/loader/1.3.2_monaco-editor@0.33.0: + resolution: {integrity: sha512-BTDbpHl3e47r3AAtpfVFTlAi7WXv4UQ/xZmz8atKl4q7epQV5e7+JbigFDViWF71VBi4IIBdcWP57Hj+OWuc9g==} + peerDependencies: + monaco-editor: '>= 0.21.0 < 1' dependencies: - '@types/react': 18.0.26 - dev: true + monaco-editor: 0.33.0 + state-local: 1.0.7 + dev: false - /@types/react/18.0.26: - resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} + /@monaco-editor/react/4.4.6_jywyd5ymizla4bkdnod6po6m6y: + resolution: {integrity: sha512-Gr3uz3LYf33wlFE3eRnta4RxP5FSNxiIV9ENn2D2/rN8KgGAD8ecvcITRtsbbyuOuNkwbuHYxfeaz2Vr+CtyFA==} + peerDependencies: + monaco-editor: '>= 0.25.0 < 1' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@types/prop-types': 15.7.5 - '@types/scheduler': 0.16.2 - csstype: 3.1.1 + '@monaco-editor/loader': 1.3.2_monaco-editor@0.33.0 + monaco-editor: 0.33.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: false - /@types/resolve/0.0.8: - resolution: {integrity: sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==} + /@motionone/animation/10.15.1: + resolution: {integrity: sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==} dependencies: - '@types/node': 18.7.21 - dev: true + '@motionone/easing': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.4.0 + dev: false - /@types/resolve/1.17.1: - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + /@motionone/dom/10.15.3: + resolution: {integrity: sha512-FQ7a2zMBXc1UeU8CG9G3yDpst55fbb0+C9A0VGfwOITitBCzigKZnXRgsRSWWR+FW57GSc13eGQxtYB0lKG0Ng==} dependencies: - '@types/node': 18.7.21 - dev: true + '@motionone/animation': 10.15.1 + '@motionone/generators': 10.15.1 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false - /@types/responselike/1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + /@motionone/easing/10.15.1: + resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: - '@types/node': 18.7.21 - dev: true - optional: true - - /@types/scheduler/0.16.2: - resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + '@motionone/utils': 10.15.1 + tslib: 2.4.0 + dev: false - /@types/secp256k1/4.0.3: - resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} + /@motionone/generators/10.15.1: + resolution: {integrity: sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==} dependencies: - '@types/node': 18.7.21 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + tslib: 2.4.0 + dev: false - /@types/semver/6.2.3: - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} - dev: true + /@motionone/types/10.15.1: + resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} + dev: false - /@types/set-cookie-parser/2.4.2: - resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} + /@motionone/utils/10.15.1: + resolution: {integrity: sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==} dependencies: - '@types/node': 18.7.21 - dev: true + '@motionone/types': 10.15.1 + hey-listen: 1.0.8 + tslib: 2.4.0 + dev: false - /@types/sinon-chai/3.2.8: - resolution: {integrity: sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==} + /@mswjs/cookies/0.2.2: + resolution: {integrity: sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==} + engines: {node: '>=14'} dependencies: - '@types/chai': 4.3.3 - '@types/sinon': 10.0.13 + '@types/set-cookie-parser': 2.4.2 + set-cookie-parser: 2.5.1 dev: true - /@types/sinon/10.0.13: - resolution: {integrity: sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==} + /@mswjs/interceptors/0.17.6: + resolution: {integrity: sha512-201pBIWehTURb6q8Gheu4Zhvd3Ox1U4BJq5KiOQsYzkWyfiOG4pwcz5hPZIEryztgrf8/sdwABpvY757xMmfrQ==} + engines: {node: '>=14'} dependencies: - '@types/sinonjs__fake-timers': 8.1.2 - dev: true - - /@types/sinonjs__fake-timers/8.1.2: - resolution: {integrity: sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==} - dev: true - - /@types/underscore/1.11.4: - resolution: {integrity: sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==} + '@open-draft/until': 1.0.3 + '@types/debug': 4.1.7 + '@xmldom/xmldom': 0.8.3 + debug: 4.3.4 + headers-polyfill: 3.1.2 + outvariant: 1.3.0 + strict-event-emitter: 0.2.8 + web-encoding: 1.1.5 + transitivePeerDependencies: + - supports-color dev: true - /@types/unist/2.0.6: - resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + /@multiformats/base-x/4.0.1: + resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} dev: false - /@types/use-persisted-state/0.3.1: - resolution: {integrity: sha512-GZtzdCPeR+KZfrzKrVLnbpRcHSCVDHaFCJ0QtkXDAmh5M+eUJqGquFtN+eUOvAMIjwLgTZ2zKq0/JL+e1/gf8g==} - dependencies: - '@types/react': 18.0.26 + /@noble/hashes/1.1.2: + resolution: {integrity: sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==} dev: true - /@types/use-sync-external-store/0.0.3: - resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} - dev: false + /@noble/secp256k1/1.6.3: + resolution: {integrity: sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==} + dev: true - /@types/web3/1.0.19: - resolution: {integrity: sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==} + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} dependencies: - '@types/bn.js': 4.11.6 - '@types/underscore': 1.11.4 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 dev: true - /@types/ws/7.4.7: - resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} - dependencies: - '@types/node': 18.7.21 - dev: false + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true - /@typescript-eslint/eslint-plugin/4.33.0_3ekaj7j3owlolnuhj3ykrb7u7i: - resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - '@typescript-eslint/parser': ^4.0.0 - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - '@typescript-eslint/experimental-utils': 4.33.0_hxadhbs2xogijvk7vq4t2azzbu - '@typescript-eslint/parser': 4.33.0_hxadhbs2xogijvk7vq4t2azzbu - '@typescript-eslint/scope-manager': 4.33.0 - debug: 4.3.4 - eslint: 7.32.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.0 - regexpp: 3.2.0 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.4 - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.13.0 dev: true - /@typescript-eslint/experimental-utils/4.33.0_hxadhbs2xogijvk7vq4t2azzbu: - resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: '*' + /@nomicfoundation/ethereumjs-block/4.0.0: + resolution: {integrity: sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==} + engines: {node: '>=14'} dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.7.4 - eslint: 7.32.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@7.32.0 - transitivePeerDependencies: - - supports-color - - typescript + '@nomicfoundation/ethereumjs-common': 3.0.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-trie': 5.0.0 + '@nomicfoundation/ethereumjs-tx': 4.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + ethereum-cryptography: 0.1.3 dev: true - /@typescript-eslint/parser/4.33.0_hxadhbs2xogijvk7vq4t2azzbu: - resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + /@nomicfoundation/ethereumjs-blockchain/6.0.0: + resolution: {integrity: sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==} + engines: {node: '>=14'} dependencies: - '@typescript-eslint/scope-manager': 4.33.0 - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.7.4 + '@nomicfoundation/ethereumjs-block': 4.0.0 + '@nomicfoundation/ethereumjs-common': 3.0.0 + '@nomicfoundation/ethereumjs-ethash': 2.0.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-trie': 5.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + abstract-level: 1.0.3 debug: 4.3.4 - eslint: 7.32.0 - typescript: 4.7.4 + ethereum-cryptography: 0.1.3 + level: 8.0.0 + lru-cache: 5.1.1 + memory-level: 1.0.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager/4.33.0: - resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - dev: true - - /@typescript-eslint/scope-manager/5.38.0: - resolution: {integrity: sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@nomicfoundation/ethereumjs-common/3.0.0: + resolution: {integrity: sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==} dependencies: - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/visitor-keys': 5.38.0 - dev: true - - /@typescript-eslint/types/4.33.0: - resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dev: true - - /@typescript-eslint/types/5.38.0: - resolution: {integrity: sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@nomicfoundation/ethereumjs-util': 8.0.0 + crc-32: 1.2.2 dev: true - /@typescript-eslint/typescript-estree/4.33.0_typescript@4.7.4: - resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + /@nomicfoundation/ethereumjs-ethash/2.0.0: + resolution: {integrity: sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==} + engines: {node: '>=14'} dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.7 - tsutils: 3.21.0_typescript@4.7.4 - typescript: 4.7.4 - transitivePeerDependencies: - - supports-color + '@nomicfoundation/ethereumjs-block': 4.0.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + abstract-level: 1.0.3 + bigint-crypto-utils: 3.1.8 + ethereum-cryptography: 0.1.3 dev: true - /@typescript-eslint/typescript-estree/5.38.0: - resolution: {integrity: sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + /@nomicfoundation/ethereumjs-evm/1.0.0: + resolution: {integrity: sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==} + engines: {node: '>=14'} dependencies: - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/visitor-keys': 5.38.0 + '@nomicfoundation/ethereumjs-common': 3.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + '@types/async-eventemitter': 0.2.1 + async-eventemitter: 0.2.4 debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.7 - tsutils: 3.21.0 + ethereum-cryptography: 0.1.3 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.38.0: - resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + /@nomicfoundation/ethereumjs-rlp/4.0.0: + resolution: {integrity: sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /@nomicfoundation/ethereumjs-statemanager/1.0.0: + resolution: {integrity: sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==} dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.38.0 - '@typescript-eslint/types': 5.38.0 - '@typescript-eslint/typescript-estree': 5.38.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0 + '@nomicfoundation/ethereumjs-common': 3.0.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-trie': 5.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + debug: 4.3.4 + ethereum-cryptography: 0.1.3 + functional-red-black-tree: 1.0.1 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/visitor-keys/4.33.0: - resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + /@nomicfoundation/ethereumjs-trie/5.0.0: + resolution: {integrity: sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==} + engines: {node: '>=14'} dependencies: - '@typescript-eslint/types': 4.33.0 - eslint-visitor-keys: 2.1.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + ethereum-cryptography: 0.1.3 + readable-stream: 3.6.0 dev: true - /@typescript-eslint/visitor-keys/5.38.0: - resolution: {integrity: sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@nomicfoundation/ethereumjs-tx/4.0.0: + resolution: {integrity: sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==} + engines: {node: '>=14'} dependencies: - '@typescript-eslint/types': 5.38.0 - eslint-visitor-keys: 3.3.0 + '@nomicfoundation/ethereumjs-common': 3.0.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + ethereum-cryptography: 0.1.3 dev: true - /@udecode/zustood/1.1.3_bkryeu6ugzmw7tq33zvqhlnwda: - resolution: {integrity: sha512-f3mxHDaOF+q2XvDh/mMvLhCNs0LfCLhIBl8jGmvZT/i3WWq7YujzGXgnbK8mxIkun9irfe6wlPhg9sTIB9Gnug==} - peerDependencies: - zustand: '>=3.5.10' + /@nomicfoundation/ethereumjs-util/8.0.0: + resolution: {integrity: sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==} + engines: {node: '>=14'} dependencies: - immer: 9.0.15 - react-tracked: 1.7.10_biqbaboplfbrettd7655fr4n2y - zustand: 4.1.1_react@18.2.0 - transitivePeerDependencies: - - react - - react-dom - - react-native - - scheduler - dev: false + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + ethereum-cryptography: 0.1.3 + dev: true - /@vitejs/plugin-react/1.3.2: - resolution: {integrity: sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==} - engines: {node: '>=12.0.0'} + /@nomicfoundation/ethereumjs-vm/6.0.0: + resolution: {integrity: sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==} + engines: {node: '>=14'} dependencies: - '@babel/core': 7.19.1 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.1 - '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.1 - '@rollup/pluginutils': 4.2.1 - react-refresh: 0.13.0 - resolve: 1.22.1 + '@nomicfoundation/ethereumjs-block': 4.0.0 + '@nomicfoundation/ethereumjs-blockchain': 6.0.0 + '@nomicfoundation/ethereumjs-common': 3.0.0 + '@nomicfoundation/ethereumjs-evm': 1.0.0 + '@nomicfoundation/ethereumjs-rlp': 4.0.0 + '@nomicfoundation/ethereumjs-statemanager': 1.0.0 + '@nomicfoundation/ethereumjs-trie': 5.0.0 + '@nomicfoundation/ethereumjs-tx': 4.0.0 + '@nomicfoundation/ethereumjs-util': 8.0.0 + '@types/async-eventemitter': 0.2.1 + async-eventemitter: 0.2.4 + debug: 4.3.4 + ethereum-cryptography: 0.1.3 + functional-red-black-tree: 1.0.1 + mcl-wasm: 0.7.9 + rustbn.js: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /@wagmi/core/0.2.5_wt6vrvf5rrl2muwnzsdwokau4y: - resolution: {integrity: sha512-4l7fA9RsKxMDaILUP8eUxDcudOi5gB5Hyfwox9pDzZNdzt8QShwOsfm0gbtLcfpHpZPzRDt1D0VY1UtP1NMicQ==} - peerDependencies: - '@coinbase/wallet-sdk': '>=3.0.6' - '@walletconnect/ethereum-provider': '>=1.7.5' - ethers: '>=5.5.1' - peerDependenciesMeta: - '@coinbase/wallet-sdk': - optional: true - '@walletconnect/ethereum-provider': - optional: true - dependencies: - '@coinbase/wallet-sdk': 3.5.3 - '@walletconnect/ethereum-provider': 1.8.0 - ethers: 5.7.1 - eventemitter3: 4.0.7 - zustand: 4.1.1_react@18.2.0 - transitivePeerDependencies: - - immer - - react - dev: false + /@nomicfoundation/solidity-analyzer-darwin-arm64/0.1.0: + resolution: {integrity: sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true - /@walletconnect/browser-utils/1.8.0: - resolution: {integrity: sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==} - dependencies: - '@walletconnect/safe-json': 1.0.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/window-getters': 1.0.0 - '@walletconnect/window-metadata': 1.0.0 - detect-browser: 5.2.0 - dev: false + /@nomicfoundation/solidity-analyzer-darwin-x64/0.1.0: + resolution: {integrity: sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true - /@walletconnect/client/1.8.0: - resolution: {integrity: sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==} - dependencies: - '@walletconnect/core': 1.8.0 - '@walletconnect/iso-crypto': 1.8.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + /@nomicfoundation/solidity-analyzer-freebsd-x64/0.1.0: + resolution: {integrity: sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-gnu/0.1.0: + resolution: {integrity: sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-arm64-musl/0.1.0: + resolution: {integrity: sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-gnu/0.1.0: + resolution: {integrity: sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-linux-x64-musl/0.1.0: + resolution: {integrity: sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-arm64-msvc/0.1.0: + resolution: {integrity: sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-ia32-msvc/0.1.0: + resolution: {integrity: sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer-win32-x64-msvc/0.1.0: + resolution: {integrity: sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@nomicfoundation/solidity-analyzer/0.1.0: + resolution: {integrity: sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==} + engines: {node: '>= 12'} + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.0 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.0 + '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.0 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.0 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.0 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.0 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.0 + '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.0 + '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.0 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.0 + dev: true + + /@open-draft/until/1.0.3: + resolution: {integrity: sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==} + dev: true + + /@pedrouid/environment/1.0.1: + resolution: {integrity: sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug==} dev: false - /@walletconnect/core/1.8.0: - resolution: {integrity: sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==} - dependencies: - '@walletconnect/socket-transport': 1.8.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + /@polka/url/1.0.0-next.21: + resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} + dev: true + + /@popperjs/core/2.11.6: + resolution: {integrity: sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==} dev: false - /@walletconnect/crypto/1.0.2: - resolution: {integrity: sha512-+OlNtwieUqVcOpFTvLBvH+9J9pntEqH5evpINHfVxff1XIgwV55PpbdvkHu6r9Ib4WQDOFiD8OeeXs1vHw7xKQ==} + /@react-spring/animated/9.5.4_react@18.2.0: + resolution: {integrity: sha512-gYd+xWwcNxEGA9EdORz/xsGsuQmz46FCu7OLIGOZK00fiSkjEM8yTwBQ9i8SUslRAdxTW+POL5OctDpCA6A7xw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@walletconnect/encoding': 1.0.1 - '@walletconnect/environment': 1.0.0 - '@walletconnect/randombytes': 1.0.2 - aes-js: 3.1.2 - hash.js: 1.1.7 + '@react-spring/shared': 9.5.4_react@18.2.0 + '@react-spring/types': 9.5.4 + react: 18.2.0 dev: false - /@walletconnect/encoding/1.0.1: - resolution: {integrity: sha512-8opL2rs6N6E3tJfsqwS82aZQDL3gmupWUgmvuZ3CGU7z/InZs3R9jkzH8wmYtpbq0sFK3WkJkQRZFFk4BkrmFA==} + /@react-spring/core/9.5.4_react@18.2.0: + resolution: {integrity: sha512-ZQxS5+5i6dVWL8mnRbrUMdkT7TfWhdIYYe2ze3my2SNAKC14JjxHxeknX57ywRyudskR1Z9CQjiC8aXX6QBl7w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - is-typedarray: 1.0.0 - typedarray-to-buffer: 3.1.5 + '@react-spring/animated': 9.5.4_react@18.2.0 + '@react-spring/rafz': 9.5.4 + '@react-spring/shared': 9.5.4_react@18.2.0 + '@react-spring/types': 9.5.4 + react: 18.2.0 dev: false - /@walletconnect/environment/1.0.0: - resolution: {integrity: sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ==} + /@react-spring/rafz/9.5.4: + resolution: {integrity: sha512-Tmev2j7sq2FW3ISUClnNS0PhkCsBfPPpkHVMxz8mkIKzMGXWskd0GblOoPVJiWvhbccaX/NYd+ykJqJ1gY0v9g==} dev: false - /@walletconnect/ethereum-provider/1.8.0: - resolution: {integrity: sha512-Nq9m+oo5P0F+njsROHw9KMWdoc/8iGHYzQdkjJN/1C7DtsqFRg5k5a3hd9rzCLpbPsOC1q8Z5lRs6JQgDvPm6Q==} + /@react-spring/shared/9.5.4_react@18.2.0: + resolution: {integrity: sha512-22IYmNOzDRP9e5BaQk6T/P2aRxne9uTzGDYuBQCbJpChZypB98xWBMKlVTKdSRG7K4v+F97KFPAKBQzS/k7p5Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@walletconnect/client': 1.8.0 - '@walletconnect/jsonrpc-http-connection': 1.0.3 - '@walletconnect/jsonrpc-provider': 1.0.5 - '@walletconnect/signer-connection': 1.8.0 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - eip1193-provider: 1.0.1 - eventemitter3: 4.0.7 - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - utf-8-validate + '@react-spring/rafz': 9.5.4 + '@react-spring/types': 9.5.4 + react: 18.2.0 dev: false - /@walletconnect/iso-crypto/1.8.0: - resolution: {integrity: sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==} - dependencies: - '@walletconnect/crypto': 1.0.2 - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 + /@react-spring/types/9.5.4: + resolution: {integrity: sha512-dzcGxqL1kPKociXK+pcq5ley77cWDWiphfv8OREv8dAZS1dKDTJq1zVy7ZD5ocyMtKMZw/7AcOdIJ1H80Dp56g==} dev: false - /@walletconnect/jsonrpc-http-connection/1.0.3: - resolution: {integrity: sha512-npPvDG2JxyxoqOphDiyjp5pPeASRBrlfQS39wHESPHlFIjBuvNt9lV9teh53MK9Ncbyxh4y2qEKMfPgcUulTRg==} + /@react-spring/web/9.5.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-HoypE3kL/ZUBB81hThE1hB9jYBgJmfeluEOPYoI/wGHyF1q8O0AYpWClvdAbiK3FTESHYZi2m60jwitF7VYUlQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: - '@walletconnect/jsonrpc-utils': 1.0.3 - '@walletconnect/safe-json': 1.0.0 - cross-fetch: 3.1.5 - transitivePeerDependencies: - - encoding + '@react-spring/animated': 9.5.4_react@18.2.0 + '@react-spring/core': 9.5.4_react@18.2.0 + '@react-spring/shared': 9.5.4_react@18.2.0 + '@react-spring/types': 9.5.4 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 dev: false - /@walletconnect/jsonrpc-provider/1.0.5: - resolution: {integrity: sha512-v61u4ZIV8+p9uIHS2Kl2YRj/2idrQiHcrbrJXw3McQkEJtj9mkCofr1Hu/n419wSRM5uiNK8Z4WRS9zGTTAhWQ==} - dependencies: - '@walletconnect/jsonrpc-utils': 1.0.3 - '@walletconnect/safe-json': 1.0.0 + /@remix-run/router/1.0.3: + resolution: {integrity: sha512-ceuyTSs7PZ/tQqi19YZNBc5X7kj1f8p+4DIyrcIYFY9h+hd1OKm4RqtiWldR9eGEvIiJfsqwM4BsuCtRIuEw6Q==} + engines: {node: '>=14'} dev: false - /@walletconnect/jsonrpc-types/1.0.1: - resolution: {integrity: sha512-+6coTtOuChCqM+AoYyi4Q83p9l/laI6NvuM2/AHaZFuf0gT0NjW7IX2+86qGyizn7Ptq4AYZmfxurAxTnhefuw==} + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} dependencies: - keyvaluestorage-interface: 1.0.0 - dev: false + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true - /@walletconnect/jsonrpc-utils/1.0.3: - resolution: {integrity: sha512-3yb49bPk16MNLk6uIIHPSHQCpD6UAo1OMOx1rM8cW/MPEAYAzrSW5hkhG7NEUwX9SokRIgnZK3QuQkiyNzBMhQ==} + /@scure/base/1.1.1: + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + dev: true + + /@scure/bip32/1.1.0: + resolution: {integrity: sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==} dependencies: - '@walletconnect/environment': 1.0.0 - '@walletconnect/jsonrpc-types': 1.0.1 - dev: false + '@noble/hashes': 1.1.2 + '@noble/secp256k1': 1.6.3 + '@scure/base': 1.1.1 + dev: true - /@walletconnect/mobile-registry/1.4.0: - resolution: {integrity: sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==} - deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' - dev: false + /@scure/bip39/1.1.0: + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + dependencies: + '@noble/hashes': 1.1.2 + '@scure/base': 1.1.1 + dev: true - /@walletconnect/qrcode-modal/1.8.0: - resolution: {integrity: sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==} + /@sentry/core/5.30.0: + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} dependencies: - '@walletconnect/browser-utils': 1.8.0 - '@walletconnect/mobile-registry': 1.4.0 - '@walletconnect/types': 1.8.0 - copy-to-clipboard: 3.3.2 - preact: 10.4.1 - qrcode: 1.4.4 - dev: false + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true - /@walletconnect/randombytes/1.0.2: - resolution: {integrity: sha512-ivgOtAyqQnN0rLQmOFPemsgYGysd/ooLfaDA/ACQ3cyqlca56t3rZc7pXfqJOIETx/wSyoF5XbwL+BqYodw27A==} + /@sentry/hub/5.30.0: + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} dependencies: - '@walletconnect/encoding': 1.0.1 - '@walletconnect/environment': 1.0.0 - randombytes: 2.1.0 - dev: false + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true - /@walletconnect/safe-json/1.0.0: - resolution: {integrity: sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==} - dev: false + /@sentry/minimal/5.30.0: + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true - /@walletconnect/signer-connection/1.8.0: - resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} + /@sentry/node/5.30.0: + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} dependencies: - '@walletconnect/client': 1.8.0 - '@walletconnect/jsonrpc-types': 1.0.1 - '@walletconnect/jsonrpc-utils': 1.0.3 - '@walletconnect/qrcode-modal': 1.8.0 - '@walletconnect/types': 1.8.0 - eventemitter3: 4.0.7 + '@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.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false + - supports-color + dev: true - /@walletconnect/socket-transport/1.8.0: - resolution: {integrity: sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==} + /@sentry/tracing/5.30.0: + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} dependencies: - '@walletconnect/types': 1.8.0 - '@walletconnect/utils': 1.8.0 - ws: 7.5.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + dev: true - /@walletconnect/types/1.8.0: - resolution: {integrity: sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==} - dev: false + /@sentry/types/5.30.0: + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + dev: true - /@walletconnect/utils/1.8.0: - resolution: {integrity: sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==} + /@sentry/utils/5.30.0: + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} dependencies: - '@walletconnect/browser-utils': 1.8.0 - '@walletconnect/encoding': 1.0.1 - '@walletconnect/jsonrpc-utils': 1.0.3 - '@walletconnect/types': 1.8.0 - bn.js: 4.11.8 - js-sha3: 0.8.0 - query-string: 6.13.5 - dev: false + '@sentry/types': 5.30.0 + tslib: 1.14.1 + dev: true - /@walletconnect/window-getters/1.0.0: - resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} + /@solana/buffer-layout/4.0.0: + resolution: {integrity: sha512-lR0EMP2HC3+Mxwd4YcnZb0smnaDw7Bl2IQWZiTevRH5ZZBZn6VRWn3/92E3qdU4SSImJkA6IDHawOHAnx/qUvQ==} + engines: {node: '>=5.10'} + dependencies: + buffer: 6.0.3 dev: false - /@walletconnect/window-metadata/1.0.0: - resolution: {integrity: sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==} + /@solana/web3.js/1.52.0: + resolution: {integrity: sha512-oG1+BX4nVYZ0OBzmk6DRrY8oBYMsbXVQEf9N9JOfKm+wXSmjxVEEo8v3IPV8mKwR0JvUWuE8lOn3IUDiMlRLgg==} + engines: {node: '>=12.20.0'} dependencies: - '@walletconnect/window-getters': 1.0.0 + '@babel/runtime': 7.19.0 + '@ethersproject/sha2': 5.7.0 + '@solana/buffer-layout': 4.0.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.1 + fast-stable-stringify: 1.0.0 + jayson: 3.7.0 + js-sha3: 0.8.0 + node-fetch: 2.6.7 + react-native-url-polyfill: 1.3.0 + rpc-websockets: 7.5.0 + secp256k1: 4.0.3 + superstruct: 0.14.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - react-native + - utf-8-validate dev: false - /@xmldom/xmldom/0.8.3: - resolution: {integrity: sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ==} - engines: {node: '>=10.0.0'} + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true - /@yarnpkg/lockfile/1.1.0: - resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} dev: true - /@zag-js/element-size/0.1.0: - resolution: {integrity: sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==} - dev: false + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true - /@zag-js/focus-visible/0.1.0: - resolution: {integrity: sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==} - dev: false + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true - /@zxing/text-encoding/0.9.0: - resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} - requiresBuild: true + /@types/async-eventemitter/0.2.1: + resolution: {integrity: sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==} dev: true - optional: true - /JSONStream/1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true + /@types/bn.js/4.11.6: + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - dev: false + '@types/node': 18.7.21 - /abort-controller/3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + /@types/bn.js/5.1.1: + resolution: {integrity: sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==} dependencies: - event-target-shim: 5.0.1 + '@types/node': 18.7.21 dev: true - /abstract-level/1.0.3: - resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} - engines: {node: '>=12'} + /@types/body-parser/1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: - buffer: 6.0.3 - catering: 2.1.1 - is-buffer: 2.0.5 - level-supports: 4.0.1 - level-transcoder: 1.0.1 - module-error: 1.0.2 - queue-microtask: 1.2.3 + '@types/connect': 3.4.35 + '@types/node': 18.7.21 dev: true - /abstract-leveldown/2.6.3: - resolution: {integrity: sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==} + /@types/chai-subset/1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: - xtend: 4.0.2 + '@types/chai': 4.3.4 dev: true - /abstract-leveldown/2.7.2: - resolution: {integrity: sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==} - dependencies: - xtend: 4.0.2 + /@types/chai/4.3.4: + resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true - /abstract-leveldown/3.0.0: - resolution: {integrity: sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==} - engines: {node: '>=4'} + /@types/connect/3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - xtend: 4.0.2 + '@types/node': 18.7.21 + + /@types/cookie/0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} dev: true - /abstract-leveldown/5.0.0: - resolution: {integrity: sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==} - engines: {node: '>=6'} + /@types/debug/4.1.7: + resolution: {integrity: sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==} dependencies: - xtend: 4.0.2 + '@types/ms': 0.7.31 + + /@types/eslint/8.4.8: + resolution: {integrity: sha512-zUCKQI1bUCTi+0kQs5ZQzQ/XILWRLIlh15FXWNykJ+NG3TMKMVvwwC6GP3DR1Ylga15fB7iAExSzc4PNlR5i3w==} + dependencies: + '@types/estree': 1.0.0 + '@types/json-schema': 7.0.11 dev: true - /accepts/1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + + /@types/express-serve-static-core/4.17.32: + resolution: {integrity: sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==} dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 + '@types/node': 18.7.21 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 dev: true - optional: true - /acorn-jsx/5.3.2_acorn@7.4.1: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + /@types/express/4.17.15: + resolution: {integrity: sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==} dependencies: - acorn: 7.4.1 + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.32 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.0 dev: true - /acorn-walk/8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} + /@types/hast/2.3.4: + resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} + dependencies: + '@types/unist': 2.0.6 + dev: false + + /@types/is-ci/3.0.0: + resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + dependencies: + ci-info: 3.5.0 dev: true - /acorn/7.4.1: - resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} - engines: {node: '>=0.4.0'} - hasBin: true + /@types/isomorphic-fetch/0.0.36: + resolution: {integrity: sha512-ulw4d+vW1HKn4oErSmNN2HYEcHGq0N1C5exlrMM0CRqX1UUpFhGb5lwiom5j9KN3LBJJDLRmYIZz1ghm7FIzZw==} dev: true - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} - engines: {node: '>=0.4.0'} - hasBin: true + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /adm-zip/0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} + /@types/js-levenshtein/1.1.1: + resolution: {integrity: sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==} dev: true - /aes-js/3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true - /aes-js/3.1.2: - resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + /@types/json5/0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + /@types/lodash.clonedeep/4.5.7: + resolution: {integrity: sha512-ccNqkPptFIXrpVqUECi60/DFxjNKsfoQxSQsgcBJCX/fuX1wgyQieojkcWH/KpE3xzLoWN/2k+ZeGqIN3paSvw==} dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + '@types/lodash': 4.14.185 dev: true - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + /@types/lodash.mergewith/4.6.6: + resolution: {integrity: sha512-RY/8IaVENjG19rxTZu9Nukqh0W2UrYgmBj5sdns4hWRZaV8PqR7wIKHFKzvOTjo4zVRV7sVI+yFhAJql12Kfqg==} dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 + '@types/lodash': 4.14.185 + dev: false + + /@types/lodash/4.14.185: + resolution: {integrity: sha512-evMDG1bC4rgQg4ku9tKpuMh5iBNEwNa3tf9zRHdP1qlv+1WUg44xat4IxCE14gIpZRGUUWAx2VhItCZc25NfMA==} + + /@types/lru-cache/5.1.1: + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} dev: true - /ajv/6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 + '@types/unist': 2.0.6 + dev: false + + /@types/mime/3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} dev: true - /ajv/8.11.0: - resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /ansi-colors/4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} + /@types/ms/0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + + /@types/node/12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + /@types/node/14.18.32: + resolution: {integrity: sha512-Y6S38pFr04yb13qqHf8uk1nHE3lXgQ30WZbv1mLliV9pt0NjvqdWttLcrOYLnXbOafknVYRHZGoMSpR9UwfYow==} dev: true - /ansi-colors/4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} + /@types/node/18.7.21: + resolution: {integrity: sha512-rLFzK5bhM0YPyCoTC8bolBjMk7bwnZ8qeZUBslBfjZQou2ssJdWslx9CZ8DGM+Dx7QXQiiTVZ/6QO6kwtHkZCA==} + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + dev: false + + /@types/pbkdf2/3.1.0: + resolution: {integrity: sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==} dependencies: - type-fest: 0.21.3 - dev: true + '@types/node': 18.7.21 - /ansi-regex/2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} + /@types/prettier/2.7.1: + resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} dev: true - /ansi-regex/4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} - /ansi-regex/5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true - /ansi-regex/6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} + /@types/range-parser/1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: true + + /@types/react-blockies/1.4.1: + resolution: {integrity: sha512-aDX0g0hwzdodkGLSDNUQr6gXxwclGjnhS8jhsR8uQhAfe/7i3GZD/NDcSlQ2SiQiLhfRxX3NlY+nvBwf5Y0tTg==} + dependencies: + '@types/react': 18.0.26 + dev: true + + /@types/react-dom/18.0.9: + resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + dependencies: + '@types/react': 18.0.26 dev: true - /ansi-styles/2.2.1: - resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} - engines: {node: '>=0.10.0'} + /@types/react-transition-group/4.4.5: + resolution: {integrity: sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==} + dependencies: + '@types/react': 18.0.26 dev: true - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + /@types/react/18.0.26: + resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} dependencies: - color-convert: 1.9.3 + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + + /@types/secp256k1/4.0.3: + resolution: {integrity: sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==} dependencies: - color-convert: 2.0.1 - dev: true + '@types/node': 18.7.21 - /ansi-styles/6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + /@types/semver/6.2.3: + resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} dev: true - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} + /@types/serve-static/1.15.0: + resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 + '@types/mime': 3.0.1 + '@types/node': 18.7.21 dev: true - /append-transform/2.0.0: - resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} - engines: {node: '>=8'} + /@types/set-cookie-parser/2.4.2: + resolution: {integrity: sha512-fBZgytwhYAUkj/jC/FAV4RQ5EerRup1YQsXQCh8rZfiHkc4UahC192oH0smGwsXol3cL3A5oETuAHeQHmhXM4w==} dependencies: - default-require-extensions: 3.0.1 + '@types/node': 18.7.21 dev: true - /archy/1.0.0: - resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: false + + /@types/use-persisted-state/0.3.1: + resolution: {integrity: sha512-GZtzdCPeR+KZfrzKrVLnbpRcHSCVDHaFCJ0QtkXDAmh5M+eUJqGquFtN+eUOvAMIjwLgTZ2zKq0/JL+e1/gf8g==} + dependencies: + '@types/react': 18.0.26 dev: true - /arcsecond/4.1.0: - resolution: {integrity: sha512-tmZZWu7YvI6y/Fx9RhBk4zH0jwpO8kFIiavPSDryyUmgKc0FjyOxLnMT0nGe2ZjMA4DJDQpIqrCU+IRt0gwErw==} + /@types/use-sync-external-store/0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} dev: false - /arg/4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + /@types/ws/7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 18.7.21 + dev: false - /argparse/1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + /@typescript-eslint/eslint-plugin/4.33.0_3ekaj7j3owlolnuhj3ykrb7u7i: + resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + '@typescript-eslint/parser': ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - sprintf-js: 1.0.3 + '@typescript-eslint/experimental-utils': 4.33.0_hxadhbs2xogijvk7vq4t2azzbu + '@typescript-eslint/parser': 4.33.0_hxadhbs2xogijvk7vq4t2azzbu + '@typescript-eslint/scope-manager': 4.33.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color dev: true - /argparse/2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + /@typescript-eslint/experimental-utils/4.33.0_hxadhbs2xogijvk7vq4t2azzbu: + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.7.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript dev: true - /aria-hidden/1.2.1_kzbn2opkn2327fwg5yzwzya5o4: - resolution: {integrity: sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==} - engines: {node: '>=10'} + /@typescript-eslint/parser/4.33.0_hxadhbs2xogijvk7vq4t2azzbu: + resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} + engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.9.0 || ^17.0.0 || ^18.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + typescript: '*' peerDependenciesMeta: - '@types/react': + typescript: optional: true dependencies: - '@types/react': 18.0.26 - react: 18.2.0 - tslib: 2.4.0 - dev: false + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.7.4 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + dev: true - /arr-diff/4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} + /@typescript-eslint/scope-manager/4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 dev: true - /arr-flatten/1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} + /@typescript-eslint/scope-manager/5.38.0: + resolution: {integrity: sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/visitor-keys': 5.38.0 dev: true - /arr-union/3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} + /@typescript-eslint/types/4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /array-back/1.0.4: - resolution: {integrity: sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==} - engines: {node: '>=0.12.0'} - dependencies: - typical: 2.6.1 + /@typescript-eslint/types/5.38.0: + resolution: {integrity: sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /array-back/2.0.0: - resolution: {integrity: sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==} - engines: {node: '>=4'} + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.7.4: + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - typical: 2.6.1 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0_typescript@4.7.4 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color dev: true - /array-flatten/1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + /@typescript-eslint/typescript-estree/5.38.0: + resolution: {integrity: sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/visitor-keys': 5.38.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color dev: true - optional: true - /array-includes/3.1.5: - resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} - engines: {node: '>= 0.4'} + /@typescript-eslint/utils/5.38.0: + resolution: {integrity: sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.3 - get-intrinsic: 1.1.3 - is-string: 1.0.7 + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.38.0 + '@typescript-eslint/types': 5.38.0 + '@typescript-eslint/typescript-estree': 5.38.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0 + transitivePeerDependencies: + - supports-color + - typescript dev: true - /array-union/2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} + /@typescript-eslint/visitor-keys/4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 dev: true - /array-unique/0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} + /@typescript-eslint/visitor-keys/5.38.0: + resolution: {integrity: sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.38.0 + eslint-visitor-keys: 3.3.0 dev: true - /array.prototype.flat/1.3.0: - resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} - engines: {node: '>= 0.4'} + /@udecode/zustood/1.1.3_bkryeu6ugzmw7tq33zvqhlnwda: + resolution: {integrity: sha512-f3mxHDaOF+q2XvDh/mMvLhCNs0LfCLhIBl8jGmvZT/i3WWq7YujzGXgnbK8mxIkun9irfe6wlPhg9sTIB9Gnug==} + peerDependencies: + zustand: '>=3.5.10' dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.3 - es-shim-unscopables: 1.0.0 - dev: true + immer: 9.0.15 + react-tracked: 1.7.10_biqbaboplfbrettd7655fr4n2y + zustand: 4.1.1_react@18.2.0 + transitivePeerDependencies: + - react + - react-dom + - react-native + - scheduler + dev: false - /array.prototype.flatmap/1.3.0: - resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} - engines: {node: '>= 0.4'} + /@vitejs/plugin-react/1.3.2: + resolution: {integrity: sha512-aurBNmMo0kz1O4qRoY+FM4epSA39y3ShWGuqfLRA/3z0oEJAdtoSfgA3aO98/PCCHAqMaduLxIxErWrVKIFzXA==} + engines: {node: '>=12.0.0'} dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.3 - es-shim-unscopables: 1.0.0 + '@babel/core': 7.19.1 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.1 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.1 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.1 + '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.1 + '@rollup/pluginutils': 4.2.1 + react-refresh: 0.13.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color dev: true - /array.prototype.reduce/1.0.4: - resolution: {integrity: sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==} - engines: {node: '>= 0.4'} + /@vitest/coverage-c8/0.27.0_@vitest+ui@0.27.0: + resolution: {integrity: sha512-jO/TAz/qUP1ssfIj6Gg1FxTRkOD5tJBiP3mwKayaqGunMsknCmxWVuFrgF1XH+FGZWLnFzR2InTjYxlyGNSgzQ==} dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.3 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: true - - /arrify/1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} + c8: 7.12.0 + vitest: 0.27.0_@vitest+ui@0.27.0 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@vitest/browser' + - '@vitest/ui' + - happy-dom + - jsdom + - less + - sass + - stylus + - sugarss + - supports-color + - terser dev: true - /asn1.js/5.4.1: - resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + /@vitest/ui/0.27.0: + resolution: {integrity: sha512-eQmDfnNBB1c42eVqFSxvkNa+6OWA6O8QRQAp9oK0fdEicqToB+bts95+TrCsO2eXC0N9Q8GplFqRMqPLoJuVlA==} dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - safer-buffer: 2.1.2 + fast-glob: 3.2.12 + flatted: 3.2.7 + sirv: 2.0.2 dev: true - optional: true - /asn1/0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + /@wagmi/core/0.2.5_wt6vrvf5rrl2muwnzsdwokau4y: + resolution: {integrity: sha512-4l7fA9RsKxMDaILUP8eUxDcudOi5gB5Hyfwox9pDzZNdzt8QShwOsfm0gbtLcfpHpZPzRDt1D0VY1UtP1NMicQ==} + peerDependencies: + '@coinbase/wallet-sdk': '>=3.0.6' + '@walletconnect/ethereum-provider': '>=1.7.5' + ethers: '>=5.5.1' + peerDependenciesMeta: + '@coinbase/wallet-sdk': + optional: true + '@walletconnect/ethereum-provider': + optional: true dependencies: - safer-buffer: 2.1.2 - dev: true + '@coinbase/wallet-sdk': 3.5.3 + '@walletconnect/ethereum-provider': 1.8.0 + ethers: 5.7.1 + eventemitter3: 4.0.7 + zustand: 4.1.1_react@18.2.0 + transitivePeerDependencies: + - immer + - react + dev: false - /assert-plus/1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: true + /@walletconnect/browser-utils/1.8.0: + resolution: {integrity: sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==} + dependencies: + '@walletconnect/safe-json': 1.0.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/window-getters': 1.0.0 + '@walletconnect/window-metadata': 1.0.0 + detect-browser: 5.2.0 + dev: false - /assertion-error/1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true + /@walletconnect/client/1.8.0: + resolution: {integrity: sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ==} + dependencies: + '@walletconnect/core': 1.8.0 + '@walletconnect/iso-crypto': 1.8.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false - /assign-symbols/1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: true + /@walletconnect/core/1.8.0: + resolution: {integrity: sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw==} + dependencies: + '@walletconnect/socket-transport': 1.8.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false - /astral-regex/2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true + /@walletconnect/crypto/1.0.2: + resolution: {integrity: sha512-+OlNtwieUqVcOpFTvLBvH+9J9pntEqH5evpINHfVxff1XIgwV55PpbdvkHu6r9Ib4WQDOFiD8OeeXs1vHw7xKQ==} + dependencies: + '@walletconnect/encoding': 1.0.1 + '@walletconnect/environment': 1.0.0 + '@walletconnect/randombytes': 1.0.2 + aes-js: 3.1.2 + hash.js: 1.1.7 + dev: false - /async-eventemitter/0.2.4: - resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==} + /@walletconnect/encoding/1.0.1: + resolution: {integrity: sha512-8opL2rs6N6E3tJfsqwS82aZQDL3gmupWUgmvuZ3CGU7z/InZs3R9jkzH8wmYtpbq0sFK3WkJkQRZFFk4BkrmFA==} dependencies: - async: 2.6.4 - dev: true + is-typedarray: 1.0.0 + typedarray-to-buffer: 3.1.5 + dev: false - /async-limiter/1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: true + /@walletconnect/environment/1.0.0: + resolution: {integrity: sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ==} + dev: false - /async-mutex/0.2.6: - resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + /@walletconnect/ethereum-provider/1.8.0: + resolution: {integrity: sha512-Nq9m+oo5P0F+njsROHw9KMWdoc/8iGHYzQdkjJN/1C7DtsqFRg5k5a3hd9rzCLpbPsOC1q8Z5lRs6JQgDvPm6Q==} dependencies: - tslib: 2.4.0 + '@walletconnect/client': 1.8.0 + '@walletconnect/jsonrpc-http-connection': 1.0.3 + '@walletconnect/jsonrpc-provider': 1.0.5 + '@walletconnect/signer-connection': 1.8.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + eip1193-provider: 1.0.1 + eventemitter3: 4.0.7 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate dev: false - /async/1.5.2: - resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} - dev: true + /@walletconnect/iso-crypto/1.8.0: + resolution: {integrity: sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ==} + dependencies: + '@walletconnect/crypto': 1.0.2 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + dev: false - /async/2.6.2: - resolution: {integrity: sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==} + /@walletconnect/jsonrpc-http-connection/1.0.3: + resolution: {integrity: sha512-npPvDG2JxyxoqOphDiyjp5pPeASRBrlfQS39wHESPHlFIjBuvNt9lV9teh53MK9Ncbyxh4y2qEKMfPgcUulTRg==} dependencies: - lodash: 4.17.21 - dev: true + '@walletconnect/jsonrpc-utils': 1.0.3 + '@walletconnect/safe-json': 1.0.0 + cross-fetch: 3.1.5 + transitivePeerDependencies: + - encoding + dev: false - /async/2.6.4: - resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + /@walletconnect/jsonrpc-provider/1.0.5: + resolution: {integrity: sha512-v61u4ZIV8+p9uIHS2Kl2YRj/2idrQiHcrbrJXw3McQkEJtj9mkCofr1Hu/n419wSRM5uiNK8Z4WRS9zGTTAhWQ==} dependencies: - lodash: 4.17.21 - dev: true + '@walletconnect/jsonrpc-utils': 1.0.3 + '@walletconnect/safe-json': 1.0.0 + dev: false - /asynckit/0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true + /@walletconnect/jsonrpc-types/1.0.1: + resolution: {integrity: sha512-+6coTtOuChCqM+AoYyi4Q83p9l/laI6NvuM2/AHaZFuf0gT0NjW7IX2+86qGyizn7Ptq4AYZmfxurAxTnhefuw==} + dependencies: + keyvaluestorage-interface: 1.0.0 + dev: false - /at-least-node/1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: true + /@walletconnect/jsonrpc-utils/1.0.3: + resolution: {integrity: sha512-3yb49bPk16MNLk6uIIHPSHQCpD6UAo1OMOx1rM8cW/MPEAYAzrSW5hkhG7NEUwX9SokRIgnZK3QuQkiyNzBMhQ==} + dependencies: + '@walletconnect/environment': 1.0.0 + '@walletconnect/jsonrpc-types': 1.0.1 + dev: false - /atob/2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true + /@walletconnect/mobile-registry/1.4.0: + resolution: {integrity: sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==} + deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' + dev: false - /available-typed-arrays/1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} + /@walletconnect/qrcode-modal/1.8.0: + resolution: {integrity: sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==} + dependencies: + '@walletconnect/browser-utils': 1.8.0 + '@walletconnect/mobile-registry': 1.4.0 + '@walletconnect/types': 1.8.0 + copy-to-clipboard: 3.3.2 + preact: 10.4.1 + qrcode: 1.4.4 + dev: false - /aws-sign2/0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true + /@walletconnect/randombytes/1.0.2: + resolution: {integrity: sha512-ivgOtAyqQnN0rLQmOFPemsgYGysd/ooLfaDA/ACQ3cyqlca56t3rZc7pXfqJOIETx/wSyoF5XbwL+BqYodw27A==} + dependencies: + '@walletconnect/encoding': 1.0.1 + '@walletconnect/environment': 1.0.0 + randombytes: 2.1.0 + dev: false - /aws4/1.11.0: - resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} - dev: true + /@walletconnect/safe-json/1.0.0: + resolution: {integrity: sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==} + dev: false - /axios/0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + /@walletconnect/signer-connection/1.8.0: + resolution: {integrity: sha512-+YAaTAP52MWZJ2wWnqKClKCPlPHBo6reURFe0cWidLADh9mi/kPWGALZ5AENK22zpem1bbKV466rF5Rzvu0ehA==} dependencies: - follow-redirects: 1.15.2 + '@walletconnect/client': 1.8.0 + '@walletconnect/jsonrpc-types': 1.0.1 + '@walletconnect/jsonrpc-utils': 1.0.3 + '@walletconnect/qrcode-modal': 1.8.0 + '@walletconnect/types': 1.8.0 + eventemitter3: 4.0.7 transitivePeerDependencies: - - debug + - bufferutil + - utf-8-validate dev: false - /axios/0.24.0: - resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} + /@walletconnect/socket-transport/1.8.0: + resolution: {integrity: sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ==} dependencies: - follow-redirects: 1.15.2_debug@4.3.4 + '@walletconnect/types': 1.8.0 + '@walletconnect/utils': 1.8.0 + ws: 7.5.3 transitivePeerDependencies: - - debug - dev: true + - bufferutil + - utf-8-validate + dev: false - /babel-code-frame/6.26.0: - resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - dev: true - - /babel-core/6.26.3: - resolution: {integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==} - dependencies: - babel-code-frame: 6.26.0 - babel-generator: 6.26.1 - babel-helpers: 6.24.1 - babel-messages: 6.23.0 - babel-register: 6.26.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - convert-source-map: 1.8.0 - debug: 2.6.9 - json5: 0.5.1 - lodash: 4.17.21 - minimatch: 3.1.2 - path-is-absolute: 1.0.1 - private: 0.1.8 - slash: 1.0.0 - source-map: 0.5.7 - transitivePeerDependencies: - - supports-color - dev: true + /@walletconnect/types/1.8.0: + resolution: {integrity: sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==} + dev: false - /babel-generator/6.26.1: - resolution: {integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==} + /@walletconnect/utils/1.8.0: + resolution: {integrity: sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA==} dependencies: - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - detect-indent: 4.0.0 - jsesc: 1.3.0 - lodash: 4.17.21 - source-map: 0.5.7 - trim-right: 1.0.1 - dev: true + '@walletconnect/browser-utils': 1.8.0 + '@walletconnect/encoding': 1.0.1 + '@walletconnect/jsonrpc-utils': 1.0.3 + '@walletconnect/types': 1.8.0 + bn.js: 4.11.8 + js-sha3: 0.8.0 + query-string: 6.13.5 + dev: false - /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: - resolution: {integrity: sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==} - dependencies: - babel-helper-explode-assignable-expression: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true + /@walletconnect/window-getters/1.0.0: + resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} + dev: false - /babel-helper-call-delegate/6.24.1: - resolution: {integrity: sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==} + /@walletconnect/window-metadata/1.0.0: + resolution: {integrity: sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==} dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true + '@walletconnect/window-getters': 1.0.0 + dev: false - /babel-helper-define-map/6.26.0: - resolution: {integrity: sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==} - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color + /@xmldom/xmldom/0.8.3: + resolution: {integrity: sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ==} + engines: {node: '>=10.0.0'} dev: true - /babel-helper-explode-assignable-expression/6.24.1: - resolution: {integrity: sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==} - dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color - dev: true + /@zag-js/element-size/0.1.0: + resolution: {integrity: sha512-QF8wp0+V8++z+FHXiIw93+zudtubYszOtYbNgK39fg3pi+nCZtuSm4L1jC5QZMatNZ83MfOzyNCfgUubapagJQ==} + dev: false - /babel-helper-function-name/6.24.1: - resolution: {integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==} - dependencies: - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + /@zag-js/focus-visible/0.1.0: + resolution: {integrity: sha512-PeaBcTmdZWcFf7n1aM+oiOdZc+sy14qi0emPIeUuGMTjbP0xLGrZu43kdpHnWSXy7/r4Ubp/vlg50MCV8+9Isg==} + dev: false + + /@zxing/text-encoding/0.9.0: + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + requiresBuild: true dev: true + optional: true - /babel-helper-get-function-arity/6.24.1: - resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} + /JSONStream/1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true + jsonparse: 1.3.1 + through: 2.3.8 + dev: false - /babel-helper-hoist-variables/6.24.1: - resolution: {integrity: sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==} + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + event-target-shim: 5.0.1 dev: true - /babel-helper-optimise-call-expression/6.24.1: - resolution: {integrity: sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==} + /abstract-level/1.0.3: + resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} + engines: {node: '>=12'} dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + buffer: 6.0.3 + catering: 2.1.1 + is-buffer: 2.0.5 + level-supports: 4.0.1 + level-transcoder: 1.0.1 + module-error: 1.0.2 + queue-microtask: 1.2.3 dev: true - /babel-helper-regex/6.26.0: - resolution: {integrity: sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==} + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 + mime-types: 2.1.35 + negotiator: 0.6.3 dev: true - /babel-helper-remap-async-to-generator/6.24.1: - resolution: {integrity: sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==} + /acorn-jsx/5.3.2_acorn@7.4.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + acorn: 7.4.1 dev: true - /babel-helper-replace-supers/6.24.1: - resolution: {integrity: sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==} - dependencies: - babel-helper-optimise-call-expression: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} dev: true - /babel-helpers/6.24.1: - resolution: {integrity: sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==} - dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true dev: true - /babel-messages/6.23.0: - resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} - dependencies: - babel-runtime: 6.26.0 + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true dev: true - /babel-plugin-check-es2015-constants/6.22.0: - resolution: {integrity: sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==} - dependencies: - babel-runtime: 6.26.0 + /adm-zip/0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} dev: true - /babel-plugin-macros/3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - dependencies: - '@babel/runtime': 7.19.0 - cosmiconfig: 7.0.1 - resolve: 1.22.1 - dev: false + /aes-js/3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - /babel-plugin-polyfill-corejs2/0.3.3: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color + /aes-js/3.1.2: + resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} dev: false - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.19.1: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} dependencies: - '@babel/compat-data': 7.19.1 - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.1 - semver: 6.3.0 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-define-polyfill-provider': 0.3.3 - core-js-compat: 3.25.3 - transitivePeerDependencies: - - supports-color - dev: false - - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.19.1: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} dependencies: - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.1 - core-js-compat: 3.25.3 - transitivePeerDependencies: - - supports-color + clean-stack: 2.2.0 + indent-string: 4.0.0 dev: true - /babel-plugin-polyfill-regenerator/0.4.1: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: - '@babel/helper-define-polyfill-provider': 0.3.3 - transitivePeerDependencies: - - supports-color - dev: false + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.19.1: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + /ajv/8.11.0: + resolution: {integrity: sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==} dependencies: - '@babel/core': 7.19.1 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.19.1 - transitivePeerDependencies: - - supports-color + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 dev: true - /babel-plugin-styled-components/2.0.7_styled-components@5.2.1: - resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} - peerDependencies: - styled-components: '>= 2' - dependencies: - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.18.6 - babel-plugin-syntax-jsx: 6.18.0 - lodash: 4.17.21 - picomatch: 2.3.1 - styled-components: 5.2.1_vtcxgy2wlmese7djxl6h7ok674 - dev: false + /ansi-colors/4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true - /babel-plugin-syntax-async-functions/6.13.0: - resolution: {integrity: sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==} + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} dev: true - /babel-plugin-syntax-exponentiation-operator/6.13.0: - resolution: {integrity: sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==} + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 dev: true - /babel-plugin-syntax-jsx/6.18.0: - resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + /ansi-regex/4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} dev: false - /babel-plugin-syntax-trailing-function-commas/6.22.0: - resolution: {integrity: sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==} - dev: true - - /babel-plugin-transform-async-to-generator/6.24.1: - resolution: {integrity: sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==} - dependencies: - babel-helper-remap-async-to-generator: 6.24.1 - babel-plugin-syntax-async-functions: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} dev: true - /babel-plugin-transform-es2015-arrow-functions/6.22.0: - resolution: {integrity: sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==} - dependencies: - babel-runtime: 6.26.0 + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} dev: true - /babel-plugin-transform-es2015-block-scoped-functions/6.22.0: - resolution: {integrity: sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==} + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} dependencies: - babel-runtime: 6.26.0 - dev: true + color-convert: 1.9.3 - /babel-plugin-transform-es2015-block-scoping/6.26.0: - resolution: {integrity: sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==} + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.21 - transitivePeerDependencies: - - supports-color + color-convert: 2.0.1 dev: true - /babel-plugin-transform-es2015-classes/6.24.1: - resolution: {integrity: sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==} - dependencies: - babel-helper-define-map: 6.26.0 - babel-helper-function-name: 6.24.1 - babel-helper-optimise-call-expression: 6.24.1 - babel-helper-replace-supers: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + /any-promise/1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /babel-plugin-transform-es2015-computed-properties/6.24.1: - resolution: {integrity: sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==} + /anymatch/3.1.2: + resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + engines: {node: '>= 8'} dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color + normalize-path: 3.0.0 + picomatch: 2.3.1 dev: true - /babel-plugin-transform-es2015-destructuring/6.23.0: - resolution: {integrity: sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==} + /append-transform/2.0.0: + resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + engines: {node: '>=8'} dependencies: - babel-runtime: 6.26.0 + default-require-extensions: 3.0.1 dev: true - /babel-plugin-transform-es2015-duplicate-keys/6.24.1: - resolution: {integrity: sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + /archy/1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true - /babel-plugin-transform-es2015-for-of/6.23.0: - resolution: {integrity: sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==} - dependencies: - babel-runtime: 6.26.0 - dev: true + /arcsecond/4.1.0: + resolution: {integrity: sha512-tmZZWu7YvI6y/Fx9RhBk4zH0jwpO8kFIiavPSDryyUmgKc0FjyOxLnMT0nGe2ZjMA4DJDQpIqrCU+IRt0gwErw==} - /babel-plugin-transform-es2015-function-name/6.24.1: - resolution: {integrity: sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==} - dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} dev: true - /babel-plugin-transform-es2015-literals/6.22.0: - resolution: {integrity: sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==} + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: - babel-runtime: 6.26.0 + sprintf-js: 1.0.3 dev: true - /babel-plugin-transform-es2015-modules-amd/6.24.1: - resolution: {integrity: sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==} - dependencies: - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /babel-plugin-transform-es2015-modules-commonjs/6.26.2: - resolution: {integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==} + /aria-hidden/1.2.1_kzbn2opkn2327fwg5yzwzya5o4: + resolution: {integrity: sha512-PN344VAf9j1EAi+jyVHOJ8XidQdPVssGco39eNcsGdM4wcsILtxrKLkbuiMfLWYROK1FjRQasMWCBttrhjnr6A==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: - babel-plugin-transform-strict-mode: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + '@types/react': 18.0.26 + react: 18.2.0 + tslib: 2.4.0 + dev: false + + /array-flatten/1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} dev: true - /babel-plugin-transform-es2015-modules-systemjs/6.24.1: - resolution: {integrity: sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==} + /array-includes/3.1.5: + resolution: {integrity: sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==} + engines: {node: '>= 0.4'} dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.3 + get-intrinsic: 1.1.3 + is-string: 1.0.7 dev: true - /babel-plugin-transform-es2015-modules-umd/6.24.1: - resolution: {integrity: sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==} - dependencies: - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - transitivePeerDependencies: - - supports-color + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} dev: true - /babel-plugin-transform-es2015-object-super/6.24.1: - resolution: {integrity: sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==} + /array.prototype.flat/1.3.0: + resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} + engines: {node: '>= 0.4'} dependencies: - babel-helper-replace-supers: 6.24.1 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.3 + es-shim-unscopables: 1.0.0 dev: true - /babel-plugin-transform-es2015-parameters/6.24.1: - resolution: {integrity: sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==} + /array.prototype.flatmap/1.3.0: + resolution: {integrity: sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==} + engines: {node: '>= 0.4'} dependencies: - babel-helper-call-delegate: 6.24.1 - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - transitivePeerDependencies: - - supports-color + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.3 + es-shim-unscopables: 1.0.0 dev: true - /babel-plugin-transform-es2015-shorthand-properties/6.24.1: - resolution: {integrity: sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} dev: true - /babel-plugin-transform-es2015-spread/6.22.0: - resolution: {integrity: sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==} - dependencies: - babel-runtime: 6.26.0 + /assertion-error/1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /babel-plugin-transform-es2015-sticky-regex/6.24.1: - resolution: {integrity: sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==} - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} dev: true - /babel-plugin-transform-es2015-template-literals/6.22.0: - resolution: {integrity: sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==} + /async-eventemitter/0.2.4: + resolution: {integrity: sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==} dependencies: - babel-runtime: 6.26.0 + async: 2.6.4 dev: true - /babel-plugin-transform-es2015-typeof-symbol/6.23.0: - resolution: {integrity: sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==} + /async-mutex/0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - babel-runtime: 6.26.0 - dev: true + tslib: 2.4.0 + dev: false - /babel-plugin-transform-es2015-unicode-regex/6.24.1: - resolution: {integrity: sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==} + /async/2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - regexpu-core: 2.0.0 + lodash: 4.17.21 dev: true - /babel-plugin-transform-exponentiation-operator/6.24.1: - resolution: {integrity: sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==} - dependencies: - babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 - babel-plugin-syntax-exponentiation-operator: 6.13.0 - babel-runtime: 6.26.0 - transitivePeerDependencies: - - supports-color + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true - /babel-plugin-transform-regenerator/6.26.0: - resolution: {integrity: sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==} - dependencies: - regenerator-transform: 0.10.1 - dev: true - - /babel-plugin-transform-strict-mode/6.24.1: - resolution: {integrity: sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - dev: true - - /babel-preset-env/1.7.0: - resolution: {integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==} - dependencies: - babel-plugin-check-es2015-constants: 6.22.0 - babel-plugin-syntax-trailing-function-commas: 6.22.0 - babel-plugin-transform-async-to-generator: 6.24.1 - babel-plugin-transform-es2015-arrow-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoping: 6.26.0 - babel-plugin-transform-es2015-classes: 6.24.1 - babel-plugin-transform-es2015-computed-properties: 6.24.1 - babel-plugin-transform-es2015-destructuring: 6.23.0 - babel-plugin-transform-es2015-duplicate-keys: 6.24.1 - babel-plugin-transform-es2015-for-of: 6.23.0 - babel-plugin-transform-es2015-function-name: 6.24.1 - babel-plugin-transform-es2015-literals: 6.22.0 - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-plugin-transform-es2015-modules-systemjs: 6.24.1 - babel-plugin-transform-es2015-modules-umd: 6.24.1 - babel-plugin-transform-es2015-object-super: 6.24.1 - babel-plugin-transform-es2015-parameters: 6.24.1 - babel-plugin-transform-es2015-shorthand-properties: 6.24.1 - babel-plugin-transform-es2015-spread: 6.22.0 - babel-plugin-transform-es2015-sticky-regex: 6.24.1 - babel-plugin-transform-es2015-template-literals: 6.22.0 - babel-plugin-transform-es2015-typeof-symbol: 6.23.0 - babel-plugin-transform-es2015-unicode-regex: 6.24.1 - babel-plugin-transform-exponentiation-operator: 6.24.1 - babel-plugin-transform-regenerator: 6.26.0 - browserslist: 3.2.8 - invariant: 2.2.4 - semver: 5.7.1 + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + + /axios/0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.2_debug@4.3.4 transitivePeerDependencies: - - supports-color - dev: true + - debug + dev: false - /babel-register/6.26.0: - resolution: {integrity: sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==} + /axios/0.24.0: + resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} dependencies: - babel-core: 6.26.3 - babel-runtime: 6.26.0 - core-js: 2.6.12 - home-or-tmp: 2.0.0 - lodash: 4.17.21 - mkdirp: 0.5.6 - source-map-support: 0.4.18 + follow-redirects: 1.15.2_debug@4.3.4 transitivePeerDependencies: - - supports-color + - debug dev: true - /babel-runtime/6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + /babel-plugin-macros/3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - dev: true + '@babel/runtime': 7.19.0 + cosmiconfig: 7.0.1 + resolve: 1.22.1 + dev: false - /babel-template/6.26.0: - resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} + /babel-plugin-polyfill-corejs2/0.3.3: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.21 + '@babel/compat-data': 7.19.1 + '@babel/helper-define-polyfill-provider': 0.3.3 + semver: 6.3.0 transitivePeerDependencies: - supports-color - dev: true + dev: false - /babel-traverse/6.26.0: - resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} + /babel-plugin-polyfill-corejs3/0.6.0: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - babel-code-frame: 6.26.0 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - debug: 2.6.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.21 + '@babel/helper-define-polyfill-provider': 0.3.3 + core-js-compat: 3.25.3 transitivePeerDependencies: - supports-color - dev: true - - /babel-types/6.26.0: - resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} - dependencies: - babel-runtime: 6.26.0 - esutils: 2.0.3 - lodash: 4.17.21 - to-fast-properties: 1.0.3 - dev: true + dev: false - /babelify/7.3.0: - resolution: {integrity: sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA==} + /babel-plugin-polyfill-regenerator/0.4.1: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 dependencies: - babel-core: 6.26.3 - object-assign: 4.1.1 + '@babel/helper-define-polyfill-provider': 0.3.3 transitivePeerDependencies: - supports-color - dev: true - - /babylon/6.18.0: - resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} - hasBin: true - dev: true + dev: false - /backoff/2.5.0: - resolution: {integrity: sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==} - engines: {node: '>= 0.6'} + /babel-plugin-styled-components/2.0.7_styled-components@5.2.1: + resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} + peerDependencies: + styled-components: '>= 2' dependencies: - precond: 0.2.3 - dev: true + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.2.1_vtcxgy2wlmese7djxl6h7ok674 + dev: false + + /babel-plugin-syntax-jsx/6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: false /bail/2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -6241,28 +4408,9 @@ packages: dependencies: safe-buffer: 5.2.1 - /base/0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true - /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - /bcrypt-pbkdf/1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - dependencies: - tweetnacl: 0.14.5 - dev: true - /bech32/1.1.4: resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} @@ -6286,8 +4434,8 @@ packages: bindings: 1.5.0 dev: false - /bigint-crypto-utils/3.1.7: - resolution: {integrity: sha512-zpCQpIE2Oy5WIQpjC9iYZf8Uh9QqoS51ZCooAcNvzv1AQ3VWdT52D0ksr1+/faeK8HVIej1bxXcP75YcqH3KPA==} + /bigint-crypto-utils/3.1.8: + resolution: {integrity: sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw==} engines: {node: '>=10.4.0'} dependencies: bigint-mod-arith: 3.1.2 @@ -6298,11 +4446,6 @@ packages: engines: {node: '>=10.4.0'} dev: true - /bignumber.js/9.1.0: - resolution: {integrity: sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A==} - dev: true - optional: true - /binary-extensions/2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -6318,16 +4461,6 @@ packages: file-uri-to-path: 1.0.0 dev: false - /bip39/2.5.0: - resolution: {integrity: sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==} - dependencies: - create-hash: 1.2.0 - pbkdf2: 3.1.2 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - unorm: 1.6.0 - dev: true - /bl/4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: @@ -6336,16 +4469,16 @@ packages: readable-stream: 3.6.0 dev: true - /blakejs/1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - - /bluebird/3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + /bl/5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.0 dev: true - /bn.js/4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - dev: true + /blakejs/1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} /bn.js/4.11.8: resolution: {integrity: sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==} @@ -6376,7 +4509,6 @@ packages: transitivePeerDependencies: - supports-color dev: true - optional: true /borsh/0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} @@ -6398,24 +4530,6 @@ packages: balanced-match: 1.0.2 dev: true - /braces/2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /braces/3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -6462,61 +4576,11 @@ packages: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - /browserify-cipher/1.0.1: - resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - dev: true - optional: true - - /browserify-des/1.0.2: - resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} - dependencies: - cipher-base: 1.0.4 - des.js: 1.0.1 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - optional: true - - /browserify-rsa/4.1.0: - resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - dev: true - optional: true - - /browserify-sign/4.2.1: - resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} - dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.4 - inherits: 2.0.4 - parse-asn1: 5.1.6 - readable-stream: 3.6.0 - safe-buffer: 5.2.1 - dev: true - optional: true - - /browserslist/3.2.8: - resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001410 - electron-to-chromium: 1.4.258 - dev: true + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 /browserslist/4.21.4: resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} @@ -6564,20 +4628,9 @@ packages: /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer-to-arraybuffer/0.0.5: - resolution: {integrity: sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==} - dev: true - optional: true - /buffer-xor/1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - /buffer-xor/2.0.2: - resolution: {integrity: sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /buffer/5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -6603,10 +4656,16 @@ packages: requiresBuild: true dependencies: node-gyp-build: 4.5.0 + dev: false - /builtin-modules/3.3.0: - resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} - engines: {node: '>=6'} + /bundle-require/3.1.2_esbuild@0.15.18: + resolution: {integrity: sha512-Of6l6JBAxiyQ5axFxUM6dYeP/W7X2Sozeo/4EYB9sJhL+dqL7TKjg+shwxp6jlu/6ZSERfsYtIpSJ1/x3XkAEA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.13' + dependencies: + esbuild: 0.15.18 + load-tsconfig: 0.2.3 dev: true /bundlewatch/0.3.3: @@ -6640,73 +4699,28 @@ packages: engines: {node: '>= 0.8'} dev: true - /bytewise-core/1.2.3: - resolution: {integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==} - dependencies: - typewise-core: 1.2.0 - dev: true - - /bytewise/1.1.0: - resolution: {integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==} - dependencies: - bytewise-core: 1.2.3 - typewise: 1.0.3 - dev: true - - /cache-base/1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: true - - /cacheable-lookup/5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: true - optional: true - - /cacheable-request/6.1.0: - resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} - engines: {node: '>=8'} + /c8/7.12.0: + resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==} + engines: {node: '>=10.12.0'} + hasBin: true dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.0 - keyv: 3.1.0 - lowercase-keys: 2.0.0 - normalize-url: 4.5.1 - responselike: 1.0.2 + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 2.0.0 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-report: 3.0.0 + istanbul-reports: 3.1.5 + rimraf: 3.0.2 + test-exclude: 6.0.0 + v8-to-istanbul: 9.0.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 dev: true - optional: true - /cacheable-request/7.0.2: - resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} - dependencies: - clone-response: 1.0.3 - get-stream: 5.2.0 - http-cache-semantics: 4.1.0 - keyv: 4.5.0 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.1 - dev: true - optional: true - - /cachedown/1.0.0: - resolution: {integrity: sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU=} - dependencies: - abstract-leveldown: 2.7.2 - lru-cache: 3.2.0 dev: true /caching-transform/4.0.0: @@ -6738,11 +4752,6 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase/3.0.0: - resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} - engines: {node: '>=0.10.0'} - dev: true - /camelcase/5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} @@ -6759,10 +4768,6 @@ packages: /caniuse-lite/1.0.30001410: resolution: {integrity: sha512-QoblBnuE+rG0lc3Ur9ltP5q47lbguipa/ncNMyyGuqPk44FxbScWAeEO+k5fSQ8WekdAK4mWqNs1rADDAiN5xQ==} - /caseless/0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true - /catering/2.1.1: resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} engines: {node: '>=6'} @@ -6772,15 +4777,15 @@ packages: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false - /chai/4.3.6: - resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} + /chai/4.3.7: + resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.2 - deep-eql: 3.0.1 + deep-eql: 4.1.3 get-func-name: 2.0.0 - loupe: 2.3.4 + loupe: 2.3.6 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -6796,17 +4801,6 @@ packages: react-markdown: 8.0.3_kzbn2opkn2327fwg5yzwzya5o4 dev: false - /chalk/1.1.3: - resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - dev: true - /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -6831,6 +4825,11 @@ packages: supports-color: 7.2.0 dev: true + /chalk/5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + /character-entities/2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} dev: false @@ -6843,12 +4842,6 @@ packages: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true - /checkpoint-store/1.1.0: - resolution: {integrity: sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==} - dependencies: - functional-red-black-tree: 1.0.1 - dev: true - /chokidar/3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -6864,11 +4857,6 @@ packages: fsevents: 2.3.2 dev: true - /chownr/1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - dev: true - optional: true - /ci-env/1.17.0: resolution: {integrity: sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==} dev: true @@ -6881,19 +4869,6 @@ packages: resolution: {integrity: sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==} dev: true - /cids/0.7.5: - resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} - engines: {node: '>=4.0.0', npm: '>=3.0.0'} - deprecated: This module has been superseded by the multiformats module - dependencies: - buffer: 5.7.1 - class-is: 1.1.0 - multibase: 0.6.1 - multicodec: 1.0.4 - multihashes: 0.4.21 - dev: true - optional: true - /cids/1.1.9: resolution: {integrity: sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==} engines: {node: '>=4.0.0', npm: '>=3.0.0'} @@ -6911,21 +4886,6 @@ packages: inherits: 2.0.4 safe-buffer: 5.2.1 - /class-is/1.1.0: - resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} - dev: true - optional: true - - /class-utils/0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: true - /classic-level/1.2.0: resolution: {integrity: sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==} engines: {node: '>=12'} @@ -6950,25 +4910,16 @@ packages: restore-cursor: 3.1.0 dev: true - /cli-spinners/2.7.0: - resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} - engines: {node: '>=6'} - dev: true - - /cli-truncate/2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + /cli-cursor/4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 + restore-cursor: 4.0.0 dev: true - /cli-truncate/3.1.0: - resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - slice-ansi: 5.0.0 - string-width: 5.1.2 + /cli-spinners/2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} dev: true /cli-width/3.0.0: @@ -6976,14 +4927,6 @@ packages: engines: {node: '>= 10'} dev: true - /cliui/3.2.0: - resolution: {integrity: sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==} - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - wrap-ansi: 2.1.0 - dev: true - /cliui/5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} dependencies: @@ -7017,13 +4960,6 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone-response/1.0.3: - resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - dependencies: - mimic-response: 1.0.1 - dev: true - optional: true - /clone/1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} @@ -7032,25 +4968,13 @@ packages: /clone/2.1.2: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} + dev: false /clsx/1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} dev: false - /code-point-at/1.1.0: - resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} - engines: {node: '>=0.10.0'} - dev: true - - /collection-visit/1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true - /color-convert/1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -7070,19 +4994,29 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /color-string/1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: true + + /color/3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: true + /color2k/2.0.0: resolution: {integrity: sha512-DWX9eXOC4fbJNiuvdH4QSHvvfLWyFo9TuFp7V9OzdsbPAdrWAuYc8qvFP2bIQ/LKh4LrAVnJ6vhiQYPvAHdtTg==} dev: false - /colorette/2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} - dev: true - - /combined-stream/1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + /colorspace/1.1.4: + resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==} dependencies: - delayed-stream: 1.0.0 + color: 3.2.1 + text-hex: 1.0.0 dev: true /comma-separated-tokens/2.0.3: @@ -7093,56 +5027,34 @@ packages: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} dev: true - /command-line-args/4.0.7: - resolution: {integrity: sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==} - hasBin: true - dependencies: - array-back: 2.0.0 - find-replace: 1.0.3 - typical: 2.6.1 - dev: true - /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false /commander/3.0.2: resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} dev: true - /commander/5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + /commander/4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} dev: true - /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} - engines: {node: ^12.20.0 || >=14} + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} dev: true /commondir/1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true - /component-emitter/1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true - /compute-scroll-into-view/1.0.14: resolution: {integrity: sha512-mKDjINe3tc6hGelUMNDzuhorIUZ7kS7BwyY0r2wQd2HOH2tRuJykiC06iSEX8y1TuhNzvz4GcJnK16mM2J1NMQ==} dev: false /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - - /concat-stream/1.6.2: - resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} - engines: {'0': node >= 0.8} - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.7 - typedarray: 0.0.6 - dev: true + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} /content-disposition/0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -7150,22 +5062,11 @@ packages: dependencies: safe-buffer: 5.2.1 dev: true - optional: true - - /content-hash/2.5.2: - resolution: {integrity: sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==} - dependencies: - cids: 0.7.5 - multicodec: 0.5.7 - multihashes: 0.4.21 - dev: true - optional: true /content-type/1.0.4: resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} engines: {node: '>= 0.6'} dev: true - optional: true /convert-source-map/1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} @@ -7175,7 +5076,6 @@ packages: /cookie-signature/1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - optional: true /cookie/0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} @@ -7186,17 +5086,6 @@ packages: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} dev: true - optional: true - - /cookiejar/2.1.3: - resolution: {integrity: sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==} - dev: true - optional: true - - /copy-descriptor/0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: true /copy-to-clipboard/3.3.1: resolution: {integrity: sha512-i13qo6kIHTTpCm8/Wup+0b1mVWETvu2kIMzKoK8FpkLkFxlt0znUAHcMzox+T8sPlqtZXq3CulEjQHsYiGFJUw==} @@ -7214,34 +5103,7 @@ packages: resolution: {integrity: sha512-xVtYpJQ5grszDHEUU9O7XbjjcZ0ccX3LgQsyqSvTnjX97ZqEgn9F5srmrwwwMtbKzDllyFPL+O+2OFMl1lU4TQ==} dependencies: browserslist: 4.21.4 - - /core-js-pure/3.26.0: - resolution: {integrity: sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==} - requiresBuild: true - dev: true - - /core-js/2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: true - - /core-util-is/1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true - - /core-util-is/1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /cors/2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - dev: true - optional: true + dev: false /cosmiconfig/7.0.1: resolution: {integrity: sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==} @@ -7254,32 +5116,12 @@ packages: yaml: 1.10.2 dev: false - /coveralls/3.1.1: - resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} - engines: {node: '>=6'} - hasBin: true - dependencies: - js-yaml: 3.14.1 - lcov-parse: 1.0.0 - log-driver: 1.2.7 - minimist: 1.2.7 - request: 2.88.2 - dev: true - /crc-32/1.2.2: resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} engines: {node: '>=0.8'} hasBin: true dev: true - /create-ecdh/4.0.4: - resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - dev: true - optional: true - /create-hash/1.2.0: resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} dependencies: @@ -7303,15 +5145,6 @@ packages: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true - /cross-fetch/2.2.6: - resolution: {integrity: sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA==} - dependencies: - node-fetch: 2.6.7 - whatwg-fetch: 2.0.4 - transitivePeerDependencies: - - encoding - dev: true - /cross-fetch/3.1.5: resolution: {integrity: sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==} dependencies: @@ -7328,17 +5161,6 @@ packages: which: 1.3.1 dev: true - /cross-spawn/6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - dev: true - /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -7348,23 +5170,6 @@ packages: which: 2.0.2 dev: true - /crypto-browserify/3.12.0: - resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.1 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - dev: true - optional: true - /css-box-model/1.2.1: resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} dependencies: @@ -7409,29 +5214,6 @@ packages: stream-transform: 2.1.3 dev: true - /d/1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} - dependencies: - es5-ext: 0.10.62 - type: 1.2.0 - dev: true - - /dashdash/1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} - dependencies: - assert-plus: 1.0.0 - dev: true - - /data-uri-to-buffer/4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} - engines: {node: '>= 12'} - dev: true - - /dataloader/2.1.0: - resolution: {integrity: sha512-qTcEYLen3r7ojZNgVUaRggOI+KM7jrKxXeSHhogh/TWxYMeONEMqY+hmkobiYQozsGIyg9OYVzO4ZIfoB4I0pQ==} - dev: true - /debug/2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -7443,18 +5225,6 @@ packages: ms: 2.0.0 dev: true - /debug/3.2.6: - resolution: {integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==} - deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797) - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - /debug/3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -7503,19 +5273,6 @@ packages: supports-color: 8.1.1 dev: true - /debug/4.3.4_supports-color@9.2.3: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 9.2.3 - dev: true - /decamelize-keys/1.1.0: resolution: {integrity: sha512-ocLWuYzRPoS9bfiSdDd3cxvrzovVMZnRDVEzAs+hWIVXGDbHxWMECij2OBuyB/An0FFW/nLuq6Kv1i/YC5Qfzg==} engines: {node: '>=0.10.0'} @@ -7542,39 +5299,13 @@ packages: /decode-uri-component/0.2.0: resolution: {integrity: sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==} engines: {node: '>=0.10'} + dev: false - /decompress-response/3.3.0: - resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} - engines: {node: '>=4'} - dependencies: - mimic-response: 1.0.1 - dev: true - optional: true - - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: true - optional: true - - /deep-eql/3.0.1: - resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} - engines: {node: '>=0.12'} - dependencies: - type-detect: 4.0.8 - dev: true - - /deep-equal/1.1.1: - resolution: {integrity: sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==} + /deep-eql/4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} dependencies: - is-arguments: 1.1.1 - is-date-object: 1.0.5 - is-regex: 1.1.4 - object-is: 1.1.5 - object-keys: 1.1.1 - regexp.prototype.flags: 1.4.3 + type-detect: 4.0.8 dev: true /deep-is/0.1.4: @@ -7584,6 +5315,7 @@ packages: /deepmerge/4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} + dev: false /default-require-extensions/3.0.1: resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} @@ -7598,31 +5330,6 @@ packages: clone: 1.0.4 dev: true - /defer-to-connect/1.1.3: - resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - dev: true - optional: true - - /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: true - optional: true - - /deferred-leveldown/1.2.2: - resolution: {integrity: sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==} - dependencies: - abstract-leveldown: 2.6.3 - dev: true - - /deferred-leveldown/4.0.2: - resolution: {integrity: sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==} - engines: {node: '>=6'} - dependencies: - abstract-leveldown: 5.0.0 - inherits: 2.0.4 - dev: true - /define-properties/1.1.4: resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} engines: {node: '>= 0.4'} @@ -7630,42 +5337,11 @@ packages: has-property-descriptors: 1.0.0 object-keys: 1.1.1 - /define-property/0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: true - - /define-property/1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: true - - /define-property/2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: true - - /defined/1.0.1: - resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - dev: true - /delay/5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} dev: false - /delayed-stream/1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true - /depd/2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -7676,31 +5352,15 @@ packages: engines: {node: '>=6'} dev: false - /des.js/1.0.1: - resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - dev: true - optional: true - /destroy/1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dev: true - optional: true /detect-browser/5.2.0: resolution: {integrity: sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==} dev: false - /detect-indent/4.0.0: - resolution: {integrity: sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==} - engines: {node: '>=0.10.0'} - dependencies: - repeating: 2.0.1 - dev: true - /detect-indent/6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -7723,15 +5383,6 @@ packages: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} - /diffie-hellman/5.0.3: - resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - dev: true - optional: true - /dijkstrajs/1.0.2: resolution: {integrity: sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==} dev: false @@ -7743,16 +5394,16 @@ packages: path-type: 4.0.0 dev: true - /dns-over-http-resolver/1.2.3_node-fetch@3.2.10: + /dns-over-http-resolver/1.2.3: resolution: {integrity: sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==} dependencies: debug: 4.3.4 - native-fetch: 3.0.0_node-fetch@3.2.10 + native-fetch: 3.0.0 receptacle: 1.3.2 transitivePeerDependencies: - node-fetch - supports-color - dev: true + dev: false /doctrine/2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} @@ -7775,46 +5426,33 @@ packages: csstype: 3.1.1 dev: false - /dom-walk/0.1.2: - resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + /dotenv-cli/6.0.0: + resolution: {integrity: sha512-qXlCOi3UMDhCWFKe0yq5sg3X+pJAz+RQDiFN38AMSbUrnY3uZshSfDJUAge951OS7J9gwLZGfsBlWRSOYz/TRg==} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dotenv: 16.0.3 + dotenv-expand: 8.0.3 + minimist: 1.2.7 dev: true - /dotenv/16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + /dotenv-expand/8.0.3: + resolution: {integrity: sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg==} engines: {node: '>=12'} dev: true - /dotignore/0.1.2: - resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} - hasBin: true - dependencies: - minimatch: 3.1.2 + /dotenv/16.0.3: + resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + engines: {node: '>=12'} dev: true /duplexer/0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true - /duplexer3/0.1.5: - resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} - dev: true - optional: true - - /eastasianwidth/0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - - /ecc-jsbn/0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - dependencies: - jsbn: 0.1.1 - safer-buffer: 2.1.2 - dev: true - /ee-first/1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - optional: true /eip1193-provider/1.0.1: resolution: {integrity: sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g==} @@ -7848,38 +5486,14 @@ packages: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /emoji-regex/9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + /enabled/2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} dev: true /encodeurl/1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} dev: true - optional: true - - /encoding-down/5.0.4: - resolution: {integrity: sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==} - engines: {node: '>=6'} - dependencies: - abstract-leveldown: 5.0.0 - inherits: 2.0.4 - level-codec: 9.0.2 - level-errors: 2.0.1 - xtend: 4.0.2 - dev: true - - /encoding/0.1.13: - resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} - dependencies: - iconv-lite: 0.6.3 - dev: true - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true /enquirer/2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} @@ -7895,14 +5509,7 @@ packages: /err-code/3.0.1: resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} - dev: true - - /errno/0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true + dev: false /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -7938,10 +5545,6 @@ packages: string.prototype.trimstart: 1.0.5 unbox-primitive: 1.0.2 - /es-array-method-boxes-properly/1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: true - /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: @@ -7956,28 +5559,10 @@ packages: is-date-object: 1.0.5 is-symbol: 1.0.4 - /es5-ext/0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} - engines: {node: '>=0.10'} - requiresBuild: true - dependencies: - es6-iterator: 2.0.3 - es6-symbol: 3.1.3 - next-tick: 1.1.0 - dev: true - /es6-error/4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} dev: true - /es6-iterator/2.0.3: - resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} - dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 - dev: true - /es6-promise/4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} dev: false @@ -7988,13 +5573,6 @@ packages: es6-promise: 4.2.8 dev: false - /es6-symbol/3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} - dependencies: - d: 1.0.1 - ext: 1.7.0 - dev: true - /esbuild-android-64/0.14.54: resolution: {integrity: sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==} engines: {node: '>=12'} @@ -8004,6 +5582,15 @@ packages: dev: true optional: true + /esbuild-android-64/0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-android-arm64/0.14.54: resolution: {integrity: sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==} engines: {node: '>=12'} @@ -8013,6 +5600,15 @@ packages: dev: true optional: true + /esbuild-android-arm64/0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-64/0.14.54: resolution: {integrity: sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==} engines: {node: '>=12'} @@ -8022,6 +5618,15 @@ packages: dev: true optional: true + /esbuild-darwin-64/0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-darwin-arm64/0.14.54: resolution: {integrity: sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==} engines: {node: '>=12'} @@ -8031,6 +5636,15 @@ packages: dev: true optional: true + /esbuild-darwin-arm64/0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-64/0.14.54: resolution: {integrity: sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==} engines: {node: '>=12'} @@ -8040,6 +5654,15 @@ packages: dev: true optional: true + /esbuild-freebsd-64/0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-freebsd-arm64/0.14.54: resolution: {integrity: sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==} engines: {node: '>=12'} @@ -8049,6 +5672,15 @@ packages: dev: true optional: true + /esbuild-freebsd-arm64/0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-32/0.14.54: resolution: {integrity: sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==} engines: {node: '>=12'} @@ -8058,6 +5690,15 @@ packages: dev: true optional: true + /esbuild-linux-32/0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-64/0.14.54: resolution: {integrity: sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==} engines: {node: '>=12'} @@ -8067,6 +5708,15 @@ packages: dev: true optional: true + /esbuild-linux-64/0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm/0.14.54: resolution: {integrity: sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==} engines: {node: '>=12'} @@ -8076,6 +5726,15 @@ packages: dev: true optional: true + /esbuild-linux-arm/0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-arm64/0.14.54: resolution: {integrity: sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==} engines: {node: '>=12'} @@ -8085,6 +5744,15 @@ packages: dev: true optional: true + /esbuild-linux-arm64/0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-mips64le/0.14.54: resolution: {integrity: sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==} engines: {node: '>=12'} @@ -8094,6 +5762,15 @@ packages: dev: true optional: true + /esbuild-linux-mips64le/0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-ppc64le/0.14.54: resolution: {integrity: sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==} engines: {node: '>=12'} @@ -8103,6 +5780,15 @@ packages: dev: true optional: true + /esbuild-linux-ppc64le/0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-riscv64/0.14.54: resolution: {integrity: sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==} engines: {node: '>=12'} @@ -8112,6 +5798,15 @@ packages: dev: true optional: true + /esbuild-linux-riscv64/0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-linux-s390x/0.14.54: resolution: {integrity: sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==} engines: {node: '>=12'} @@ -8121,6 +5816,15 @@ packages: dev: true optional: true + /esbuild-linux-s390x/0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /esbuild-netbsd-64/0.14.54: resolution: {integrity: sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==} engines: {node: '>=12'} @@ -8130,6 +5834,15 @@ packages: dev: true optional: true + /esbuild-netbsd-64/0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-openbsd-64/0.14.54: resolution: {integrity: sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==} engines: {node: '>=12'} @@ -8139,6 +5852,15 @@ packages: dev: true optional: true + /esbuild-openbsd-64/0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /esbuild-sunos-64/0.14.54: resolution: {integrity: sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==} engines: {node: '>=12'} @@ -8148,6 +5870,15 @@ packages: dev: true optional: true + /esbuild-sunos-64/0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-32/0.14.54: resolution: {integrity: sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==} engines: {node: '>=12'} @@ -8157,6 +5888,15 @@ packages: dev: true optional: true + /esbuild-windows-32/0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-64/0.14.54: resolution: {integrity: sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==} engines: {node: '>=12'} @@ -8166,6 +5906,15 @@ packages: dev: true optional: true + /esbuild-windows-64/0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild-windows-arm64/0.14.54: resolution: {integrity: sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==} engines: {node: '>=12'} @@ -8175,6 +5924,15 @@ packages: dev: true optional: true + /esbuild-windows-arm64/0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /esbuild/0.14.54: resolution: {integrity: sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==} engines: {node: '>=12'} @@ -8204,6 +5962,66 @@ packages: esbuild-windows-arm64: 0.14.54 dev: true + /esbuild/0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /esbuild/0.16.12: + resolution: {integrity: sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.16.12 + '@esbuild/android-arm64': 0.16.12 + '@esbuild/android-x64': 0.16.12 + '@esbuild/darwin-arm64': 0.16.12 + '@esbuild/darwin-x64': 0.16.12 + '@esbuild/freebsd-arm64': 0.16.12 + '@esbuild/freebsd-x64': 0.16.12 + '@esbuild/linux-arm': 0.16.12 + '@esbuild/linux-arm64': 0.16.12 + '@esbuild/linux-ia32': 0.16.12 + '@esbuild/linux-loong64': 0.16.12 + '@esbuild/linux-mips64el': 0.16.12 + '@esbuild/linux-ppc64': 0.16.12 + '@esbuild/linux-riscv64': 0.16.12 + '@esbuild/linux-s390x': 0.16.12 + '@esbuild/linux-x64': 0.16.12 + '@esbuild/netbsd-x64': 0.16.12 + '@esbuild/openbsd-x64': 0.16.12 + '@esbuild/sunos-x64': 0.16.12 + '@esbuild/win32-arm64': 0.16.12 + '@esbuild/win32-ia32': 0.16.12 + '@esbuild/win32-x64': 0.16.12 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -8211,7 +6029,6 @@ packages: /escape-html/1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} dev: true - optional: true /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -8235,6 +6052,15 @@ packages: eslint: 7.32.0 dev: true + /eslint-config-turbo/0.0.7_eslint@7.32.0: + resolution: {integrity: sha512-WbrGlyfs94rOXrhombi1wjIAYGdV2iosgJRndOZtmDQeq5GLTzYmBUCJQZWtLBEBUPCj96RxZ2OL7Cn+xv/Azg==} + peerDependencies: + eslint: '>6.6.0' + dependencies: + eslint: 7.32.0 + eslint-plugin-turbo: 0.0.7_eslint@7.32.0 + dev: true + /eslint-import-resolver-node/0.3.6: resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} dependencies: @@ -8391,6 +6217,14 @@ packages: - typescript dev: true + /eslint-plugin-turbo/0.0.7_eslint@7.32.0: + resolution: {integrity: sha512-iajOH8eD4jha3duztGVBD1BEmvNrQBaA/y3HFHf91vMDRYRwH7BpHSDFtxydDpk5ghlhRxG299SFxz7D6z4MBQ==} + peerDependencies: + eslint: '>6.6.0' + dependencies: + eslint: 7.32.0 + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -8528,10 +6362,6 @@ packages: engines: {node: '>=4.0'} dev: true - /estree-walker/1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} - dev: true - /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true @@ -8545,21 +6375,6 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} dev: true - optional: true - - /eth-block-tracker/3.0.1: - resolution: {integrity: sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug==} - dependencies: - eth-query: 2.1.2 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethjs-util: 0.1.6 - json-rpc-engine: 3.8.0 - pify: 2.3.0 - tape: 4.16.1 - transitivePeerDependencies: - - supports-color - dev: true /eth-block-tracker/4.4.3: resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} @@ -8575,13 +6390,6 @@ packages: - supports-color dev: false - /eth-ens-namehash/2.0.8: - resolution: {integrity: sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==} - dependencies: - idna-uts46-hx: 2.3.1 - js-sha3: 0.5.7 - dev: true - /eth-json-rpc-filters/4.2.2: resolution: {integrity: sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw==} dependencies: @@ -8595,38 +6403,6 @@ packages: - encoding dev: false - /eth-json-rpc-infura/3.2.1: - resolution: {integrity: sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==} - dependencies: - cross-fetch: 2.2.6 - eth-json-rpc-middleware: 1.6.0 - json-rpc-engine: 3.8.0 - json-rpc-error: 2.0.0 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /eth-json-rpc-middleware/1.6.0: - resolution: {integrity: sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==} - dependencies: - async: 2.6.2 - eth-query: 2.1.2 - eth-tx-summary: 3.2.4 - ethereumjs-block: 1.7.1 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethereumjs-vm: 2.6.0 - fetch-ponyfill: 4.1.0 - json-rpc-engine: 3.8.0 - json-rpc-error: 2.0.0 - json-stable-stringify: 1.0.1 - promise-to-callback: 1.0.0 - tape: 4.16.1 - transitivePeerDependencies: - - supports-color - dev: true - /eth-json-rpc-middleware/6.0.0: resolution: {integrity: sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ==} dependencies: @@ -8645,36 +6421,12 @@ packages: - encoding dev: false - /eth-lib/0.1.29: - resolution: {integrity: sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - nano-json-stream-parser: 0.1.2 - servify: 0.1.12 - ws: 3.3.3 - xhr-request-promise: 0.1.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - optional: true - - /eth-lib/0.2.8: - resolution: {integrity: sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==} - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.4 - xhr-request-promise: 0.1.3 - dev: true - optional: true - /eth-query/2.1.2: resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 + dev: false /eth-rpc-errors/3.0.0: resolution: {integrity: sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==} @@ -8694,57 +6446,7 @@ packages: dependencies: ethereumjs-abi: github.com/ethereumjs/ethereumjs-abi/ee3994657fa7a427238e6ba92a84d0b529bbcde0 ethereumjs-util: 5.2.1 - - /eth-sig-util/3.0.0: - resolution: {integrity: sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ==} - deprecated: Deprecated in favor of '@metamask/eth-sig-util' - dependencies: - buffer: 5.7.1 - elliptic: 6.5.4 - ethereumjs-abi: 0.6.5 - ethereumjs-util: 5.2.1 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - dev: true - - /eth-tx-summary/3.2.4: - resolution: {integrity: sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==} - dependencies: - async: 2.6.2 - clone: 2.1.2 - concat-stream: 1.6.2 - end-of-stream: 1.4.4 - eth-query: 2.1.2 - ethereumjs-block: 1.7.1 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethereumjs-vm: 2.6.0 - through2: 2.0.5 - dev: true - - /ethashjs/0.0.8: - resolution: {integrity: sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==} - deprecated: 'New package name format for new versions: @ethereumjs/ethash. Please update.' - dependencies: - async: 2.6.2 - buffer-xor: 2.0.2 - ethereumjs-util: 7.1.5 - miller-rabin: 4.0.1 - dev: true - - /ethereum-bloom-filters/1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} - dependencies: - js-sha3: 0.8.0 - dev: true - - /ethereum-common/0.0.18: - resolution: {integrity: sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==} - dev: true - - /ethereum-common/0.2.0: - resolution: {integrity: sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==} - dev: true + dev: false /ethereum-cryptography/0.1.3: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} @@ -8774,31 +6476,6 @@ packages: '@scure/bip39': 1.1.0 dev: true - /ethereum-waffle/3.4.4_typescript@4.7.4: - resolution: {integrity: sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q==} - engines: {node: '>=10.0'} - hasBin: true - dependencies: - '@ethereum-waffle/chai': 3.4.4 - '@ethereum-waffle/compiler': 3.4.4_typescript@4.7.4 - '@ethereum-waffle/mock-contract': 3.4.4 - '@ethereum-waffle/provider': 3.4.4 - ethers: 5.7.1 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - typescript - - utf-8-validate - dev: true - - /ethereumjs-abi/0.6.5: - resolution: {integrity: sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g==} - dependencies: - bn.js: 4.12.0 - ethereumjs-util: 4.5.1 - dev: true - /ethereumjs-abi/0.6.8: resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} dependencies: @@ -8806,92 +6483,6 @@ packages: ethereumjs-util: 6.2.1 dev: true - /ethereumjs-account/2.0.5: - resolution: {integrity: sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==} - dependencies: - ethereumjs-util: 5.2.1 - rlp: 2.2.7 - safe-buffer: 5.2.1 - dev: true - - /ethereumjs-account/3.0.0: - resolution: {integrity: sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==} - deprecated: Please use Util.Account class found on package ethereumjs-util@^7.0.6 https://github.com/ethereumjs/ethereumjs-util/releases/tag/v7.0.6 - dependencies: - ethereumjs-util: 6.2.1 - rlp: 2.2.7 - safe-buffer: 5.2.1 - dev: true - - /ethereumjs-block/1.7.1: - resolution: {integrity: sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==} - deprecated: 'New package name format for new versions: @ethereumjs/block. Please update.' - dependencies: - async: 2.6.2 - ethereum-common: 0.2.0 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - merkle-patricia-tree: 2.3.2 - dev: true - - /ethereumjs-block/2.2.2: - resolution: {integrity: sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==} - deprecated: 'New package name format for new versions: @ethereumjs/block. Please update.' - dependencies: - async: 2.6.2 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - ethereumjs-util: 5.2.1 - merkle-patricia-tree: 2.3.2 - dev: true - - /ethereumjs-blockchain/4.0.4: - resolution: {integrity: sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ==} - deprecated: 'New package name format for new versions: @ethereumjs/blockchain. Please update.' - dependencies: - async: 2.6.2 - ethashjs: 0.0.8 - ethereumjs-block: 2.2.2 - ethereumjs-common: 1.5.0 - ethereumjs-util: 6.2.1 - flow-stoplight: 1.0.0 - level-mem: 3.0.1 - lru-cache: 5.1.1 - rlp: 2.2.7 - semaphore: 1.1.0 - dev: true - - /ethereumjs-common/1.5.0: - resolution: {integrity: sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==} - deprecated: 'New package name format for new versions: @ethereumjs/common. Please update.' - dev: true - - /ethereumjs-tx/1.3.7: - resolution: {integrity: sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==} - deprecated: 'New package name format for new versions: @ethereumjs/tx. Please update.' - dependencies: - ethereum-common: 0.0.18 - ethereumjs-util: 5.2.1 - dev: true - - /ethereumjs-tx/2.1.2: - resolution: {integrity: sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==} - deprecated: 'New package name format for new versions: @ethereumjs/tx. Please update.' - dependencies: - ethereumjs-common: 1.5.0 - ethereumjs-util: 6.2.1 - dev: true - - /ethereumjs-util/4.5.1: - resolution: {integrity: sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w==} - dependencies: - bn.js: 4.12.0 - create-hash: 1.2.0 - elliptic: 6.5.4 - ethereum-cryptography: 0.1.3 - rlp: 2.2.7 - dev: true - /ethereumjs-util/5.2.1: resolution: {integrity: sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==} dependencies: @@ -8902,6 +6493,7 @@ packages: ethjs-util: 0.1.6 rlp: 2.2.7 safe-buffer: 5.2.1 + dev: false /ethereumjs-util/6.2.1: resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} @@ -8914,71 +6506,6 @@ packages: ethjs-util: 0.1.6 rlp: 2.2.7 - /ethereumjs-util/7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} - dependencies: - '@types/bn.js': 5.1.1 - bn.js: 5.2.1 - create-hash: 1.2.0 - ethereum-cryptography: 0.1.3 - rlp: 2.2.7 - dev: true - - /ethereumjs-vm/2.6.0: - resolution: {integrity: sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==} - deprecated: 'New package name format for new versions: @ethereumjs/vm. Please update.' - dependencies: - async: 2.6.2 - async-eventemitter: 0.2.4 - ethereumjs-account: 2.0.5 - ethereumjs-block: 2.2.2 - ethereumjs-common: 1.5.0 - ethereumjs-util: 6.2.1 - fake-merkle-patricia-tree: 1.0.1 - functional-red-black-tree: 1.0.1 - merkle-patricia-tree: 2.3.2 - rustbn.js: 0.2.0 - safe-buffer: 5.2.1 - dev: true - - /ethereumjs-vm/4.2.0: - resolution: {integrity: sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA==} - deprecated: 'New package name format for new versions: @ethereumjs/vm. Please update.' - dependencies: - async: 2.6.2 - async-eventemitter: 0.2.4 - core-js-pure: 3.26.0 - ethereumjs-account: 3.0.0 - ethereumjs-block: 2.2.2 - ethereumjs-blockchain: 4.0.4 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - ethereumjs-util: 6.2.1 - fake-merkle-patricia-tree: 1.0.1 - functional-red-black-tree: 1.0.1 - merkle-patricia-tree: 2.3.2 - rustbn.js: 0.2.0 - safe-buffer: 5.2.1 - util.promisify: 1.1.1 - dev: true - - /ethereumjs-wallet/0.6.5: - resolution: {integrity: sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA==} - requiresBuild: true - dependencies: - aes-js: 3.1.2 - bs58check: 2.1.2 - ethereum-cryptography: 0.1.3 - ethereumjs-util: 6.2.1 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - scryptsy: 1.2.1 - utf8: 3.0.0 - uuid: 3.4.0 - dev: true - optional: true - /ethers/5.7.1: resolution: {integrity: sha512-5krze4dRLITX7FpU8J4WscXqADiKmyeNlylmmDLbS95DaZpBhDe2YSwRQwKXWNyXcox7a3gBgm/MkGXV1O1S/Q==} dependencies: @@ -9016,14 +6543,6 @@ packages: - bufferutil - utf-8-validate - /ethjs-unit/0.1.6: - resolution: {integrity: sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=} - engines: {node: '>=6.5.0', npm: '>=3'} - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - dev: true - /ethjs-util/0.1.6: resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -9036,11 +6555,6 @@ packages: engines: {node: '>=6'} dev: true - /eventemitter3/4.0.4: - resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} - dev: true - optional: true - /eventemitter3/4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false @@ -9070,19 +6584,19 @@ packages: strip-final-newline: 2.0.0 dev: true - /expand-brackets/2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} + /execa/6.1.0: + resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 3.0.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 dev: true /express/4.18.2: @@ -9123,31 +6637,10 @@ packages: transitivePeerDependencies: - supports-color dev: true - optional: true - - /ext/1.7.0: - resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} - dependencies: - type: 2.7.2 - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend-shallow/3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true /extend/3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false /extendable-error/0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -9162,42 +6655,11 @@ packages: tmp: 0.0.33 dev: true - /extglob/2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /extsprintf/1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: true - /eyes/0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} dev: false - /fake-merkle-patricia-tree/1.0.1: - resolution: {integrity: sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==} - dependencies: - checkpoint-store: 1.1.0 - dev: true - - /fast-deep-equal/2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - dev: true - /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -9239,18 +6701,8 @@ packages: reusify: 1.0.4 dev: true - /fetch-blob/3.2.0: - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} - engines: {node: ^12.20 || >= 14.13} - dependencies: - node-domexception: 1.0.0 - web-streams-polyfill: 3.2.1 - dev: true - - /fetch-ponyfill/4.1.0: - resolution: {integrity: sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==} - dependencies: - node-fetch: 1.7.3 + /fecha/4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} dev: true /figures/3.2.0: @@ -9271,16 +6723,6 @@ packages: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} dev: false - /fill-range/4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true - /fill-range/7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -9302,7 +6744,6 @@ packages: transitivePeerDependencies: - supports-color dev: true - optional: true /find-cache-dir/3.3.2: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} @@ -9313,26 +6754,10 @@ packages: pkg-dir: 4.2.0 dev: true - /find-replace/1.0.3: - resolution: {integrity: sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==} - engines: {node: '>=4.0.0'} - dependencies: - array-back: 1.0.4 - test-value: 2.1.0 - dev: true - /find-root/1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} dev: false - /find-up/1.1.2: - resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} - engines: {node: '>=0.10.0'} - dependencies: - path-exists: 2.1.0 - pinkie-promise: 2.0.1 - dev: true - /find-up/2.1.0: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} @@ -9351,31 +6776,16 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /find-up/5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - dev: true - - /find-yarn-workspace-root/1.2.1: - resolution: {integrity: sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==} - dependencies: - fs-extra: 4.0.3 - micromatch: 3.1.10 - transitivePeerDependencies: - - supports-color + locate-path: 5.0.0 + path-exists: 4.0.0 dev: true - /find-yarn-workspace-root/2.0.0: - resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} dependencies: - micromatch: 4.0.5 + locate-path: 6.0.0 + path-exists: 4.0.0 dev: true /find-yarn-workspace-root2/1.2.16: @@ -9402,8 +6812,8 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /flow-stoplight/1.0.0: - resolution: {integrity: sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA==} + /fn.name/1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} dev: true /focus-lock/0.11.4: @@ -9413,16 +6823,6 @@ packages: tslib: 2.4.0 dev: false - /follow-redirects/1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - /follow-redirects/1.15.2_debug@4.3.4: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -9433,18 +6833,12 @@ packages: optional: true dependencies: debug: 4.3.4 - dev: true /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 - /for-in/1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: true - /foreground-child/2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} @@ -9453,52 +6847,15 @@ packages: signal-exit: 3.0.7 dev: true - /forever-agent/0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true - - /form-data/2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /form-data/3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - - /formdata-polyfill/4.0.10: - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} - engines: {node: '>=12.20.0'} - dependencies: - fetch-blob: 3.2.0 - dev: true - /forwarded/0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} dev: true - optional: true /fp-ts/1.19.3: resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} dev: true - /fragment-cache/0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: true - /framer-motion/7.10.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-2OAII9hjpMNz2Nbl2w09uKo7A0bD6xRtGnCZbPzuGGueucWgmSBLjAwzPhXwzCQWMpL3LU8jmXHjxAwIyjslxg==} peerDependencies: @@ -9521,10 +6878,9 @@ packages: dev: false /fresh/0.5.2: - resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} dev: true - optional: true /fromentries/1.3.2: resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} @@ -9540,14 +6896,6 @@ packages: rimraf: 2.7.1 dev: true - /fs-extra/4.0.3: - resolution: {integrity: sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra/7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -9566,23 +6914,6 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} - dependencies: - at-least-node: 1.0.0 - graceful-fs: 4.2.10 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: true - - /fs-minipass/1.2.7: - resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} - dependencies: - minipass: 2.9.0 - dev: true - optional: true - /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -9613,59 +6944,11 @@ packages: /functions-have-names/1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - /ganache-core/2.13.2: - resolution: {integrity: sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw==} - engines: {node: '>=8.9.0'} - deprecated: ganache-core is now ganache; visit https://trfl.io/g7 for details - dependencies: - abstract-leveldown: 3.0.0 - async: 2.6.2 - bip39: 2.5.0 - cachedown: 1.0.0 - clone: 2.1.2 - debug: 3.2.6 - encoding-down: 5.0.4 - eth-sig-util: 3.0.0 - ethereumjs-abi: 0.6.8 - ethereumjs-account: 3.0.0 - ethereumjs-block: 2.2.2 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - ethereumjs-util: 6.2.1 - ethereumjs-vm: 4.2.0 - heap: 0.2.6 - level-sublevel: 6.6.4 - levelup: 3.1.1 - lodash: 4.17.20 - lru-cache: 5.1.1 - merkle-patricia-tree: 3.0.0 - patch-package: 6.2.2 - seedrandom: 3.0.1 - source-map-support: 0.5.12 - tmp: 0.1.0 - web3-provider-engine: 14.2.1 - websocket: 1.0.32 - optionalDependencies: - ethereumjs-wallet: 0.6.5 - web3: 1.2.11 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate - dev: true - bundledDependencies: - - keccak - /gensync/1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/1.0.3: - resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} - dev: true - /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -9691,22 +6974,6 @@ packages: engines: {node: '>=8.0.0'} dev: true - /get-stream/4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: true - optional: true - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: true - optional: true - /get-stream/6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -9719,31 +6986,6 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.1.3 - /get-value/2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: true - - /getpass/0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} - dependencies: - assert-plus: 1.0.0 - dev: true - - /glob-base/0.3.0: - resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} - engines: {node: '>=0.10.0'} - dependencies: - glob-parent: 2.0.0 - is-glob: 2.0.1 - dev: true - - /glob-parent/2.0.0: - resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} - dependencies: - is-glob: 2.0.1 - dev: true - /glob-parent/5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -9751,6 +6993,17 @@ packages: is-glob: 4.0.3 dev: true + /glob/7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob/7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: @@ -9783,13 +7036,6 @@ packages: once: 1.4.0 dev: true - /global/4.4.0: - resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} - dependencies: - min-document: 2.19.0 - process: 0.11.10 - dev: true - /globals/11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -9801,11 +7047,6 @@ packages: type-fest: 0.20.2 dev: true - /globals/9.18.0: - resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} - engines: {node: '>=0.10.0'} - dev: true - /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -9818,44 +7059,6 @@ packages: slash: 3.0.0 dev: true - /got/11.8.5: - resolution: {integrity: sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==} - engines: {node: '>=10.19.0'} - dependencies: - '@sindresorhus/is': 4.6.0 - '@szmarczak/http-timer': 4.0.6 - '@types/cacheable-request': 6.0.2 - '@types/responselike': 1.0.0 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.2 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.1 - dev: true - optional: true - - /got/9.6.0: - resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} - engines: {node: '>=8.6'} - dependencies: - '@sindresorhus/is': 0.14.0 - '@szmarczak/http-timer': 1.1.2 - '@types/keyv': 3.1.4 - '@types/responselike': 1.0.0 - cacheable-request: 6.1.0 - decompress-response: 3.3.0 - duplexer3: 0.1.5 - get-stream: 4.1.0 - lowercase-keys: 1.0.1 - mimic-response: 1.0.1 - p-cancelable: 1.1.0 - to-readable-stream: 1.0.0 - url-parse-lax: 3.0.0 - dev: true - optional: true - /graceful-fs/4.2.10: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true @@ -9876,27 +7079,13 @@ packages: duplexer: 0.1.2 dev: true - /har-schema/2.0.0: - resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} - engines: {node: '>=4'} - dev: true - - /har-validator/5.1.5: - resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} - engines: {node: '>=6'} - deprecated: this library is no longer supported - dependencies: - ajv: 6.12.6 - har-schema: 2.0.0 - dev: true - /hard-rejection/2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /hardhat/2.12.0_6oasmw356qmm23djlsjgkwvrtm: - resolution: {integrity: sha512-mNJFbVG479HwOzxiaLxobyvED2M1aEAuPPYhEo1+88yicMDSTrU2JIS7vV+V0GSNQKaDoiHCmV6bcKjiljT/dQ==} + /hardhat/2.12.5_6oasmw356qmm23djlsjgkwvrtm: + resolution: {integrity: sha512-f/t7+hLlhsnQZ6LDXyV+8rHGRZFZY1sgFvgrwr9fBjMdGp1Bu6hHq1KXS4/VFZfZcVdL1DAWWEkryinZhqce+A==} engines: {node: ^14.0.0 || ^16.0.0 || ^18.0.0} hasBin: true peerDependencies: @@ -9940,12 +7129,12 @@ packages: fp-ts: 1.19.3 fs-extra: 7.0.1 glob: 7.2.0 - immutable: 4.1.0 + immutable: 4.2.1 io-ts: 1.10.4 keccak: 3.0.2 lodash: 4.17.21 mnemonist: 0.38.5 - mocha: 10.1.0 + mocha: 10.2.0 p-map: 4.0.0 qs: 6.11.0 raw-body: 2.5.1 @@ -9957,7 +7146,7 @@ packages: ts-node: 10.9.1_fzm5qe273vszdnq5coqmdn2kqi tsort: 0.0.1 typescript: 4.7.4 - undici: 5.11.0 + undici: 5.14.0 uuid: 8.3.2 ws: 7.5.9 transitivePeerDependencies: @@ -9966,13 +7155,6 @@ packages: - utf-8-validate dev: true - /has-ansi/2.0.0: - resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - /has-bigints/1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -10000,37 +7182,6 @@ packages: dependencies: has-symbols: 1.0.3 - /has-value/0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-value/1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true - - /has-values/0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: true - - /has-values/1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true - /has/1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -10072,10 +7223,6 @@ packages: resolution: {integrity: sha512-tWCK4biJ6hcLqTviLXVR9DTRfYGQMXEIUj3gwJ2rZ5wO/at3XtkI4g8mCvFdUF9l1KMBNCfmNAdnahm1cgavQA==} dev: true - /heap/0.2.6: - resolution: {integrity: sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=} - dev: true - /hey-listen/1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} dev: false @@ -10093,14 +7240,6 @@ packages: react-is: 16.13.1 dev: false - /home-or-tmp/2.0.0: - resolution: {integrity: sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==} - engines: {node: '>=0.10.0'} - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: true - /hosted-git-info/2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true @@ -10109,11 +7248,6 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-cache-semantics/4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} - dev: true - optional: true - /http-errors/2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -10125,29 +7259,6 @@ packages: toidentifier: 1.0.1 dev: true - /http-https/1.0.0: - resolution: {integrity: sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==} - dev: true - optional: true - - /http-signature/1.2.0: - resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} - engines: {node: '>=0.8', npm: '>=1.3.7'} - dependencies: - assert-plus: 1.0.0 - jsprim: 1.4.2 - sshpk: 1.17.0 - dev: true - - /http2-wrapper/1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.2.1 - dev: true - optional: true - /https-proxy-agent/5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -10167,10 +7278,9 @@ packages: engines: {node: '>=10.17.0'} dev: true - /husky/7.0.4: - resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} - engines: {node: '>=12'} - hasBin: true + /human-signals/3.0.1: + resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} + engines: {node: '>=12.20.0'} dev: true /iconv-lite/0.4.24: @@ -10180,29 +7290,9 @@ packages: safer-buffer: 2.1.2 dev: true - /iconv-lite/0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: true - - /idna-uts46-hx/2.3.1: - resolution: {integrity: sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==} - engines: {node: '>=4.0.0'} - dependencies: - punycode: 2.1.0 - dev: true - /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - /ignore-walk/3.0.4: - resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==} - dependencies: - minimatch: 3.1.2 - dev: true - /ignore/4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} @@ -10213,20 +7303,12 @@ packages: engines: {node: '>= 4'} dev: true - /immediate/3.2.3: - resolution: {integrity: sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==} - dev: true - - /immediate/3.3.0: - resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - dev: true - /immer/9.0.15: resolution: {integrity: sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==} dev: false - /immutable/4.1.0: - resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} + /immutable/4.2.1: + resolution: {integrity: sha512-7WYV7Q5BTs0nlQm7tl92rDYYoyELLKHoDMBKhrxEoiV4mrfVdRz8hzPiYOzH7yWjzoVEamxRuAqhxL2PLRwZYQ==} dev: true /import-fresh/3.3.0: @@ -10292,11 +7374,7 @@ packages: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: loose-envify: 1.4.0 - - /invert-kv/1.0.0: - resolution: {integrity: sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==} - engines: {node: '>=0.10.0'} - dev: true + dev: false /io-ts/1.10.4: resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} @@ -10307,27 +7385,12 @@ packages: /ip-regex/4.3.0: resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==} engines: {node: '>=8'} - dev: true + dev: false /ipaddr.js/1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} dev: true - optional: true - - /is-accessor-descriptor/0.1.6: - resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-accessor-descriptor/1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true /is-arguments/1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} @@ -10339,6 +7402,10 @@ packages: /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + /is-arrayish/0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: true + /is-bigint/1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: @@ -10358,10 +7425,6 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - /is-buffer/2.0.5: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} @@ -10370,113 +7433,29 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - /is-ci/2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: true - /is-ci/3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - dependencies: - ci-info: 3.5.0 - dev: true - - /is-core-module/2.10.0: - resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} - dependencies: - has: 1.0.3 - - /is-data-descriptor/0.1.4: - resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-data-descriptor/1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-date-object/1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - - /is-descriptor/0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: true - - /is-descriptor/1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: true - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-dotfile/1.0.3: - resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable/0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.5.0 dev: true - /is-extendable/1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} + /is-core-module/2.10.0: + resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} dependencies: - is-plain-object: 2.0.4 - dev: true + has: 1.0.3 - /is-extglob/1.0.0: - resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} - engines: {node: '>=0.10.0'} - dev: true + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-finite/1.1.0: - resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fn/1.0.0: - resolution: {integrity: sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==} - engines: {node: '>=0.10.0'} - dev: true - - /is-fullwidth-code-point/1.0.0: - resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==} - engines: {node: '>=0.10.0'} - dependencies: - number-is-nan: 1.0.1 - dev: true - /is-fullwidth-code-point/2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} engines: {node: '>=4'} @@ -10487,28 +7466,12 @@ packages: engines: {node: '>=8'} dev: true - /is-fullwidth-code-point/4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - dev: true - - /is-function/1.0.2: - resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} - dev: true - /is-generator-function/1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-glob/2.0.1: - resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 1.0.0 - dev: true - /is-glob/4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -10525,30 +7488,31 @@ packages: engines: {node: '>=8'} dev: true + /is-interactive/2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + dev: true + /is-ip/3.1.0: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} dependencies: ip-regex: 4.3.0 - dev: true + dev: false - /is-ipfs/6.0.2_node-fetch@3.2.10: + /is-ipfs/6.0.2: resolution: {integrity: sha512-RinUnsggL4hlLoHlZcvs2+92OE46Uflg/YVU1m5fXhyDBS/zh3bq+i6Aw7IbzJZ9oZXJx26TgxpqCuCr+LH/DA==} engines: {node: '>=14.0.0', npm: '>=6.0.0'} dependencies: iso-url: 1.2.1 - mafmt: 10.0.0_node-fetch@3.2.10 - multiaddr: 10.0.1_node-fetch@3.2.10 + mafmt: 10.0.0 + multiaddr: 10.0.1 multiformats: 9.9.0 uint8arrays: 3.1.1 transitivePeerDependencies: - node-fetch - supports-color - dev: true - - /is-module/1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - dev: true + dev: false /is-negative-zero/2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} @@ -10564,13 +7528,6 @@ packages: dependencies: has-tostringtag: 1.0.0 - /is-number/3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - /is-number/7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -10591,17 +7548,9 @@ packages: engines: {node: '>=12'} dev: false - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-reference/1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - dependencies: - '@types/estree': 1.0.0 + /is-port-reachable/4.0.0: + resolution: {integrity: sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /is-regex/1.1.4: @@ -10616,16 +7565,16 @@ packages: dependencies: call-bind: 1.0.2 - /is-stream/1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true - /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true + /is-stream/3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /is-string/1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -10663,12 +7612,9 @@ packages: engines: {node: '>=10'} dev: true - /is-url/1.2.4: - resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} - dev: true - - /is-utf8/0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + /is-unicode-supported/1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} dev: true /is-weakref/1.0.2: @@ -10681,21 +7627,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isarray/0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: true - - /isarray/1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - /isarray/2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: false @@ -10707,19 +7638,7 @@ packages: /iso-url/1.2.1: resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} engines: {node: '>=12'} - dev: true - - /isobject/2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - - /isobject/3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true + dev: false /isomorphic-fetch/3.0.0: resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} @@ -10728,7 +7647,6 @@ packages: whatwg-fetch: 3.6.2 transitivePeerDependencies: - encoding - dev: false /isomorphic-ws/4.0.1_ws@7.5.9: resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} @@ -10738,10 +7656,6 @@ packages: ws: 7.5.9 dev: false - /isstream/0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true - /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} @@ -10829,13 +7743,9 @@ packages: - utf-8-validate dev: false - /jest-worker/26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.7.21 - merge-stream: 2.0.0 - supports-color: 7.2.0 + /joycon/3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} dev: true /js-levenshtein/1.1.6: @@ -10843,17 +7753,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /js-sha3/0.5.7: - resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} - dev: true - /js-sha3/0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - /js-tokens/3.0.2: - resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} - dev: true - /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -10872,51 +7774,14 @@ packages: argparse: 2.0.1 dev: true - /jsbn/0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true - - /jsesc/0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true - dev: true - - /jsesc/1.3.0: - resolution: {integrity: sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==} - hasBin: true - dev: true - /jsesc/2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true - /json-buffer/3.0.0: - resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} - dev: true - optional: true - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true - optional: true - /json-parse-even-better-errors/2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-rpc-engine/3.8.0: - resolution: {integrity: sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==} - dependencies: - async: 2.6.2 - babel-preset-env: 1.7.0 - babelify: 7.3.0 - json-rpc-error: 2.0.0 - promise-to-callback: 1.0.0 - safe-event-emitter: 1.0.1 - transitivePeerDependencies: - - supports-color - dev: true - /json-rpc-engine/5.4.0: resolution: {integrity: sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==} dependencies: @@ -10932,14 +7797,9 @@ packages: eth-rpc-errors: 4.0.2 dev: false - /json-rpc-error/2.0.0: - resolution: {integrity: sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug==} - dependencies: - inherits: 2.0.4 - dev: true - /json-rpc-random-id/1.0.1: resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + dev: false /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -10949,10 +7809,6 @@ packages: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true - /json-schema/0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true - /json-stable-stringify-without-jsonify/1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true @@ -10961,14 +7817,11 @@ packages: resolution: {integrity: sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==} dependencies: jsonify: 0.0.0 + dev: false /json-stringify-safe/5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - - /json5/0.5.1: - resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} - hasBin: true - dev: true + dev: false /json5/1.0.1: resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} @@ -10999,16 +7852,9 @@ packages: graceful-fs: 4.2.10 dev: true - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.10 - dev: true - /jsonify/0.0.0: resolution: {integrity: sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==} + dev: false /jsonpack/1.1.5: resolution: {integrity: sha512-d2vwomK605ks7Q+uCpbwGyoIF5j+UZuJjlYcugISBt3CxM+eBo/W6y63yVPIyIvbYON+pvJYsYZjCYbzqJj/xQ==} @@ -11019,16 +7865,6 @@ packages: engines: {'0': node >= 0.2.0} dev: false - /jsprim/1.4.2: - resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} - engines: {node: '>=0.6.0'} - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - dev: true - /jsx-ast-utils/3.3.3: resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} engines: {node: '>=4.0'} @@ -11050,54 +7886,15 @@ packages: node-gyp-build: 4.5.0 readable-stream: 3.6.0 - /keyv/3.1.0: - resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} - dependencies: - json-buffer: 3.0.0 - dev: true - optional: true - - /keyv/4.5.0: - resolution: {integrity: sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==} - dependencies: - json-buffer: 3.0.1 - dev: true - optional: true - /keyvaluestorage-interface/1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} dev: false - /kind-of/3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: true - /kind-of/6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /klaw-sync/6.0.0: - resolution: {integrity: sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==} - dependencies: - graceful-fs: 4.2.10 - dev: true - /klaw/1.3.1: resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} optionalDependencies: @@ -11108,104 +7905,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - /lcid/1.0.0: - resolution: {integrity: sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==} - engines: {node: '>=0.10.0'} - dependencies: - invert-kv: 1.0.0 - dev: true - - /lcov-parse/1.0.0: - resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} - hasBin: true - dev: true - - /level-codec/7.0.1: - resolution: {integrity: sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==} - dev: true - - /level-codec/9.0.2: - resolution: {integrity: sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==} - engines: {node: '>=6'} - dependencies: - buffer: 5.7.1 - dev: true - - /level-errors/1.0.5: - resolution: {integrity: sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==} - dependencies: - errno: 0.1.8 - dev: true - - /level-errors/2.0.1: - resolution: {integrity: sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==} - engines: {node: '>=6'} - dependencies: - errno: 0.1.8 - dev: true - - /level-iterator-stream/1.3.1: - resolution: {integrity: sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==} - dependencies: - inherits: 2.0.4 - level-errors: 1.0.5 - readable-stream: 1.0.34 - xtend: 4.0.2 - dev: true - - /level-iterator-stream/2.0.3: - resolution: {integrity: sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - xtend: 4.0.2 - dev: true - - /level-iterator-stream/3.0.1: - resolution: {integrity: sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==} - engines: {node: '>=6'} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - xtend: 4.0.2 - dev: true - - /level-mem/3.0.1: - resolution: {integrity: sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==} - engines: {node: '>=6'} - dependencies: - level-packager: 4.0.1 - memdown: 3.0.0 - dev: true - - /level-packager/4.0.1: - resolution: {integrity: sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==} - engines: {node: '>=6'} - dependencies: - encoding-down: 5.0.4 - levelup: 3.1.1 - dev: true - - /level-post/1.0.7: - resolution: {integrity: sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==} - dependencies: - ltgt: 2.1.3 - dev: true - - /level-sublevel/6.6.4: - resolution: {integrity: sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA==} - dependencies: - bytewise: 1.1.0 - level-codec: 9.0.2 - level-errors: 2.0.1 - level-iterator-stream: 2.0.3 - ltgt: 2.1.3 - pull-defer: 0.2.3 - pull-level: 2.0.4 - pull-stream: 3.6.14 - typewiselite: 1.0.0 - xtend: 4.0.2 + /kuler/2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} dev: true /level-supports/4.0.1: @@ -11221,22 +7922,6 @@ packages: module-error: 1.0.2 dev: true - /level-ws/0.0.0: - resolution: {integrity: sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==} - dependencies: - readable-stream: 1.0.34 - xtend: 2.1.2 - dev: true - - /level-ws/1.0.0: - resolution: {integrity: sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==} - engines: {node: '>=6'} - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.7 - xtend: 4.0.2 - dev: true - /level/8.0.0: resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} engines: {node: '>=12'} @@ -11245,28 +7930,6 @@ packages: classic-level: 1.2.0 dev: true - /levelup/1.3.9: - resolution: {integrity: sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==} - dependencies: - deferred-leveldown: 1.2.2 - level-codec: 7.0.1 - level-errors: 1.0.5 - level-iterator-stream: 1.3.1 - prr: 1.0.1 - semver: 5.4.1 - xtend: 4.0.2 - dev: true - - /levelup/3.1.1: - resolution: {integrity: sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==} - engines: {node: '>=6'} - dependencies: - deferred-leveldown: 4.0.2 - level-errors: 2.0.1 - level-iterator-stream: 3.0.1 - xtend: 4.0.2 - dev: true - /levn/0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -11275,65 +7938,17 @@ packages: type-check: 0.4.0 dev: true - /lilconfig/2.0.5: - resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} - engines: {node: '>=10'} - dev: true - - /lines-and-columns/1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - /lint-staged/12.5.0: - resolution: {integrity: sha512-BKLUjWDsKquV/JuIcoQW4MSAI3ggwEImF1+sB4zaKvyVx1wBk3FsG7UK9bpnmBTN1pm7EH2BBcMwINJzCRv12g==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dependencies: - cli-truncate: 3.1.0 - colorette: 2.0.19 - commander: 9.4.1 - debug: 4.3.4_supports-color@9.2.3 - execa: 5.1.1 - lilconfig: 2.0.5 - listr2: 4.0.5 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-inspect: 1.12.2 - pidtree: 0.5.0 - string-argv: 0.3.1 - supports-color: 9.2.3 - yaml: 1.10.2 - transitivePeerDependencies: - - enquirer - dev: true - - /listr2/4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.19 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.3.0 - rxjs: 7.5.7 - through: 2.3.8 - wrap-ansi: 7.0.0 + /lilconfig/2.0.5: + resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==} + engines: {node: '>=10'} dev: true - /load-json-file/1.1.0: - resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} - engines: {node: '>=0.10.0'} - dependencies: - graceful-fs: 4.2.10 - parse-json: 2.2.0 - pify: 2.3.0 - pinkie-promise: 2.0.1 - strip-bom: 2.0.0 + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /load-tsconfig/0.2.3: + resolution: {integrity: sha512-iyT2MXws+dc2Wi6o3grCFtGXpeMvHmJqS27sMPGtV2eUu4PeFnG+33I8BlFK1t1NWMjOpcx9bridn5yxLDX2gQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /load-yaml-file/0.2.0: @@ -11346,6 +7961,11 @@ packages: strip-bom: 3.0.0 dev: true + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + engines: {node: '>=14'} + dev: true + /locate-path/2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -11376,16 +7996,13 @@ packages: p-locate: 5.0.0 dev: true - /lodash.assign/4.2.0: - resolution: {integrity: sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==} - dev: true - /lodash.clonedeep/4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false /lodash.debounce/4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false /lodash.flattendeep/4.4.0: resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} @@ -11399,6 +8016,10 @@ packages: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} dev: false + /lodash.sortby/4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + /lodash.startcase/4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true @@ -11407,18 +8028,9 @@ packages: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true - /lodash/4.17.20: - resolution: {integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==} - dev: true - /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - /log-driver/1.2.7: - resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} - engines: {node: '>=0.8.6'} - dev: true - /log-symbols/4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -11427,58 +8039,40 @@ packages: is-unicode-supported: 0.1.0 dev: true - /log-update/4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + /log-symbols/5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + chalk: 5.2.0 + is-unicode-supported: 1.3.0 + dev: true + + /logform/2.4.2: + resolution: {integrity: sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==} + dependencies: + '@colors/colors': 1.5.0 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.4.2 + triple-beam: 1.3.0 dev: true /longest-streak/3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false - /looper/2.0.0: - resolution: {integrity: sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==} - dev: true - - /looper/3.0.0: - resolution: {integrity: sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==} - dev: true - /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 - /loupe/2.3.4: - resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} + /loupe/2.3.6: + resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} dependencies: get-func-name: 2.0.0 dev: true - /lowercase-keys/1.0.1: - resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} - engines: {node: '>=0.10.0'} - dev: true - optional: true - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: true - optional: true - - /lru-cache/3.2.0: - resolution: {integrity: sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow==} - dependencies: - pseudomap: 1.0.2 - dev: true - /lru-cache/4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: @@ -11503,32 +8097,18 @@ packages: resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} dev: true - /ltgt/2.1.3: - resolution: {integrity: sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw==} - dev: true - - /ltgt/2.2.1: - resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} - dev: true - /lunr/2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /mafmt/10.0.0_node-fetch@3.2.10: + /mafmt/10.0.0: resolution: {integrity: sha512-K1bziJOXcnepfztu+2Xy9FLKVLaFMDuspmiyJIYRxnO0WOxFSV7XKSdMxMrVZxcvg1+YjlTIvSGTImUHU2k4Aw==} dependencies: - multiaddr: 10.0.1_node-fetch@3.2.10 + multiaddr: 10.0.1 transitivePeerDependencies: - node-fetch - supports-color - dev: true - - /magic-string/0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 - dev: true + dev: false /make-dir/3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} @@ -11541,11 +8121,6 @@ packages: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /map-cache/0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: true - /map-obj/1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -11556,13 +8131,6 @@ packages: engines: {node: '>=8'} dev: true - /map-visit/1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: true - /markdown-table/3.0.2: resolution: {integrity: sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==} dev: false @@ -11714,33 +8282,9 @@ packages: dev: false /media-typer/0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: true - optional: true - - /memdown/1.4.1: - resolution: {integrity: sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==} - dependencies: - abstract-leveldown: 2.7.2 - functional-red-black-tree: 1.0.1 - immediate: 3.3.0 - inherits: 2.0.4 - ltgt: 2.2.1 - safe-buffer: 5.1.2 - dev: true - - /memdown/3.0.0: - resolution: {integrity: sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==} - engines: {node: '>=6'} - dependencies: - abstract-leveldown: 5.0.0 - functional-red-black-tree: 1.0.1 - immediate: 3.2.3 - inherits: 2.0.4 - ltgt: 2.2.1 - safe-buffer: 5.1.2 - dev: true /memory-level/1.0.0: resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} @@ -11773,27 +8317,9 @@ packages: yargs-parser: 18.1.3 dev: true - /meow/7.1.1: - resolution: {integrity: sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.0 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - dev: true - /merge-descriptors/1.0.1: - resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} dev: true - optional: true /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -11804,36 +8330,10 @@ packages: engines: {node: '>= 8'} dev: true - /merkle-patricia-tree/2.3.2: - resolution: {integrity: sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==} - dependencies: - async: 1.5.2 - ethereumjs-util: 5.2.1 - level-ws: 0.0.0 - levelup: 1.3.9 - memdown: 1.4.1 - readable-stream: 2.3.7 - rlp: 2.2.7 - semaphore: 1.1.0 - dev: true - - /merkle-patricia-tree/3.0.0: - resolution: {integrity: sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==} - dependencies: - async: 2.6.2 - ethereumjs-util: 5.2.1 - level-mem: 3.0.1 - level-ws: 1.0.0 - readable-stream: 3.6.0 - rlp: 2.2.7 - semaphore: 1.1.0 - dev: true - /methods/1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} dev: true - optional: true /micromark-core-commonmark/1.0.6: resolution: {integrity: sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==} @@ -12084,27 +8584,6 @@ packages: - supports-color dev: false - /micromatch/3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /micromatch/4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -12117,14 +8596,6 @@ packages: resolution: {integrity: sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==} dev: false - /miller-rabin/4.0.1: - resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} - hasBin: true - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - dev: true - /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -12142,29 +8613,15 @@ packages: engines: {node: '>=4'} hasBin: true dev: true - optional: true /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: true - optional: true - - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: true - optional: true - - /min-document/2.19.0: - resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - dependencies: - dom-walk: 0.1.2 + /mimic-fn/4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} dev: true /min-indent/1.0.1: @@ -12210,56 +8667,19 @@ packages: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} dev: true - /minipass/2.9.0: - resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} - dependencies: - safe-buffer: 5.2.1 - yallist: 3.1.1 - dev: true - optional: true - - /minizlib/1.3.3: - resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} - dependencies: - minipass: 2.9.0 - dev: true - optional: true - - /mixin-deep/1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true - /mixme/0.5.4: resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} engines: {node: '>= 8.0.0'} dev: true - /mkdirp-promise/5.0.1: - resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==} - engines: {node: '>=4'} - deprecated: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that. - dependencies: - mkdirp: 1.0.4 - dev: true - optional: true - - /mkdirp/0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + /mlly/1.0.0: + resolution: {integrity: sha512-QL108Hwt+u9bXdWgOI0dhzZfACovn5Aen4Xvc8Jasd9ouRH4NjnrXEiyP3nVvJo91zPlYjVRckta0Nt2zfoR6g==} dependencies: - minimist: 1.2.7 - dev: true - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true + acorn: 8.8.1 + pathe: 1.0.0 + pkg-types: 1.0.1 + ufo: 1.0.1 dev: true - optional: true /mnemonist/0.38.5: resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} @@ -12267,8 +8687,8 @@ packages: obliterator: 2.0.4 dev: true - /mocha/10.1.0: - resolution: {integrity: sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==} + /mocha/10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} engines: {node: '>= 14.0.0'} hasBin: true dependencies: @@ -12295,11 +8715,6 @@ packages: yargs-unparser: 2.0.0 dev: true - /mock-fs/4.14.0: - resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} - dev: true - optional: true - /module-error/1.0.2: resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} engines: {node: '>=10'} @@ -12314,6 +8729,11 @@ packages: engines: {node: '>=4'} dev: false + /mrmime/1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -12323,7 +8743,6 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true /msw/0.47.4: resolution: {integrity: sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw==} @@ -12361,10 +8780,48 @@ packages: - supports-color dev: true - /multiaddr/10.0.1_node-fetch@3.2.10: + /msw/0.47.4_typescript@4.7.4: + resolution: {integrity: sha512-Psftt8Yfl0+l+qqg9OlmKEsxF8S/vtda0CmlR6y8wTaWrMMzuCDa55n2hEGC0ZRDwuV6FFWc/4CjoDsBpATKBw==} + engines: {node: '>=14'} + hasBin: true + requiresBuild: true + peerDependencies: + typescript: '>= 4.2.x <= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@mswjs/cookies': 0.2.2 + '@mswjs/interceptors': 0.17.6 + '@open-draft/until': 1.0.3 + '@types/cookie': 0.4.1 + '@types/js-levenshtein': 1.1.1 + chalk: 4.1.1 + chokidar: 3.5.3 + cookie: 0.4.2 + graphql: 16.6.0 + headers-polyfill: 3.1.2 + inquirer: 8.2.5 + is-node-process: 1.0.1 + js-levenshtein: 1.1.6 + node-fetch: 2.6.7 + outvariant: 1.3.0 + path-to-regexp: 6.2.1 + statuses: 2.0.1 + strict-event-emitter: 0.2.8 + type-fest: 2.19.0 + typescript: 4.7.4 + yargs: 17.6.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + + /multiaddr/10.0.1: resolution: {integrity: sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==} + deprecated: This module is deprecated, please upgrade to @multiformats/multiaddr dependencies: - dns-over-http-resolver: 1.2.3_node-fetch@3.2.10 + dns-over-http-resolver: 1.2.3 err-code: 3.0.1 is-ip: 3.1.0 multiformats: 9.9.0 @@ -12373,25 +8830,7 @@ packages: transitivePeerDependencies: - node-fetch - supports-color - dev: true - - /multibase/0.6.1: - resolution: {integrity: sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==} - deprecated: This module has been superseded by the multiformats module - dependencies: - base-x: 3.0.9 - buffer: 5.7.1 - dev: true - optional: true - - /multibase/0.7.0: - resolution: {integrity: sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==} - deprecated: This module has been superseded by the multiformats module - dependencies: - base-x: 3.0.9 - buffer: 5.7.1 - dev: true - optional: true + dev: false /multibase/4.0.6: resolution: {integrity: sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==} @@ -12401,23 +8840,6 @@ packages: '@multiformats/base-x': 4.0.1 dev: false - /multicodec/0.5.7: - resolution: {integrity: sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==} - deprecated: This module has been superseded by the multiformats module - dependencies: - varint: 5.0.2 - dev: true - optional: true - - /multicodec/1.0.4: - resolution: {integrity: sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==} - deprecated: This module has been superseded by the multiformats module - dependencies: - buffer: 5.7.1 - varint: 5.0.2 - dev: true - optional: true - /multicodec/3.2.1: resolution: {integrity: sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==} deprecated: This module has been superseded by the multiformats module @@ -12428,15 +8850,7 @@ packages: /multiformats/9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - - /multihashes/0.4.21: - resolution: {integrity: sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==} - dependencies: - buffer: 5.7.1 - multibase: 0.7.0 - varint: 5.0.2 - dev: true - optional: true + dev: false /multihashes/4.0.3: resolution: {integrity: sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==} @@ -12451,10 +8865,13 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nano-json-stream-parser/0.1.2: - resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 dev: true - optional: true /nano-time/1.0.0: resolution: {integrity: sha1-sFVPaa2J4i0JB/ehKwmTpdlhN+8=} @@ -12474,36 +8891,15 @@ packages: hasBin: true dev: true - /nanomatch/1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /napi-macros/2.0.0: resolution: {integrity: sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==} dev: true - /native-fetch/3.0.0_node-fetch@3.2.10: + /native-fetch/3.0.0: resolution: {integrity: sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==} peerDependencies: node-fetch: '*' - dependencies: - node-fetch: 3.2.10 - dev: true + dev: false /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -12511,33 +8907,12 @@ packages: /negotiator/0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: true - optional: true - - /next-tick/1.1.0: - resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - dev: true - - /nice-try/1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + engines: {node: '>= 0.6'} dev: true /node-addon-api/2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - /node-domexception/1.0.0: - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} - engines: {node: '>=10.5.0'} - dev: true - - /node-fetch/1.7.3: - resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} - dependencies: - encoding: 0.1.13 - is-stream: 1.1.0 - dev: true - /node-fetch/2.6.7: resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} engines: {node: 4.x || >=6.0.0} @@ -12549,15 +8924,6 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-fetch/3.2.10: - resolution: {integrity: sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - data-uri-to-buffer: 4.0.0 - fetch-blob: 3.2.0 - formdata-polyfill: 4.0.10 - dev: true - /node-gyp-build/4.5.0: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true @@ -12586,39 +8952,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /normalize-url/4.5.1: - resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} - engines: {node: '>=8'} - dev: true - optional: true - - /normalize-url/6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: true - optional: true - - /npm-bundled/1.1.2: - resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} - dependencies: - npm-normalize-package-bin: 1.0.1 - dev: true - - /npm-normalize-package-bin/1.0.1: - resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} - dev: true - - /npm-packlist/2.2.2: - resolution: {integrity: sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - glob: 7.2.3 - ignore-walk: 3.0.4 - npm-bundled: 1.1.2 - npm-normalize-package-bin: 1.0.1 - dev: true - /npm-run-path/4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -12626,17 +8959,11 @@ packages: path-key: 3.1.1 dev: true - /number-is-nan/1.0.1: - resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} - engines: {node: '>=0.10.0'} - dev: true - - /number-to-bn/1.7.0: - resolution: {integrity: sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=} - engines: {node: '>=6.5.0', npm: '>=3'} + /npm-run-path/5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 + path-key: 4.0.0 dev: true /nyc/15.1.0: @@ -12675,49 +9002,17 @@ packages: - supports-color dev: true - /oauth-sign/0.9.0: - resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} - dev: true - /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-copy/0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true - /object-inspect/1.12.2: resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} - /object-is/1.1.5: - resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - dev: true - - /object-keys/0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - dev: true - /object-keys/1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - /object-visit/1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - /object.assign/4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -12745,16 +9040,6 @@ packages: es-abstract: 1.20.3 dev: true - /object.getownpropertydescriptors/2.1.4: - resolution: {integrity: sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==} - engines: {node: '>= 0.8'} - dependencies: - array.prototype.reduce: 1.0.4 - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.3 - dev: true - /object.hasown/1.1.1: resolution: {integrity: sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==} dependencies: @@ -12762,13 +9047,6 @@ packages: es-abstract: 1.20.3 dev: true - /object.pick/1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - /object.values/1.1.5: resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} engines: {node: '>= 0.4'} @@ -12786,26 +9064,24 @@ packages: resolution: {integrity: sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==} dev: false - /oboe/2.1.4: - resolution: {integrity: sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=} - dependencies: - http-https: 1.0.0 - dev: true - optional: true - /on-finished/2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} dependencies: ee-first: 1.1.1 dev: true - optional: true /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + /one-time/1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + dependencies: + fn.name: 1.1.0 + dev: true + /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -12813,12 +9089,11 @@ packages: mimic-fn: 2.1.0 dev: true - /open/7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + /onetime/6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: - is-docker: 2.2.1 - is-wsl: 2.2.0 + mimic-fn: 4.0.0 dev: true /optionator/0.9.1: @@ -12848,16 +9123,19 @@ packages: wcwidth: 1.0.1 dev: true - /os-homedir/1.0.2: - resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} - engines: {node: '>=0.10.0'} - dev: true - - /os-locale/1.4.0: - resolution: {integrity: sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==} - engines: {node: '>=0.10.0'} + /ora/6.1.2: + resolution: {integrity: sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - lcid: 1.0.0 + bl: 5.1.0 + chalk: 5.2.0 + cli-cursor: 4.0.0 + cli-spinners: 2.7.0 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + strip-ansi: 7.0.1 + wcwidth: 1.0.1 dev: true /os-tmpdir/1.0.2: @@ -12873,18 +9151,6 @@ packages: resolution: {integrity: sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==} dev: true - /p-cancelable/1.1.0: - resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} - engines: {node: '>=6'} - dev: true - optional: true - - /p-cancelable/2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: true - optional: true - /p-filter/2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} @@ -12984,38 +9250,6 @@ packages: dependencies: callsites: 3.1.0 - /parse-asn1/5.1.6: - resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} - dependencies: - asn1.js: 5.4.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - dev: true - optional: true - - /parse-glob/3.0.4: - resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==} - engines: {node: '>=0.10.0'} - dependencies: - glob-base: 0.3.0 - is-dotfile: 1.0.3 - is-extglob: 1.0.0 - is-glob: 2.0.1 - dev: true - - /parse-headers/2.0.5: - resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} - dev: true - - /parse-json/2.2.0: - resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} - engines: {node: '>=0.10.0'} - dependencies: - error-ex: 1.3.2 - dev: true - /parse-json/5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -13029,65 +9263,6 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} dev: true - optional: true - - /pascalcase/0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: true - - /patch-package/6.2.2: - resolution: {integrity: sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==} - engines: {npm: '>5'} - hasBin: true - dependencies: - '@yarnpkg/lockfile': 1.1.0 - chalk: 2.4.2 - cross-spawn: 6.0.5 - find-yarn-workspace-root: 1.2.1 - fs-extra: 7.0.1 - is-ci: 2.0.0 - klaw-sync: 6.0.0 - minimist: 1.2.7 - rimraf: 2.7.1 - semver: 5.7.1 - slash: 2.0.0 - tmp: 0.0.33 - transitivePeerDependencies: - - supports-color - dev: true - - /patch-package/6.5.0: - resolution: {integrity: sha512-tC3EqJmo74yKqfsMzELaFwxOAu6FH6t+FzFOsnWAuARm7/n2xB5AOeOueE221eM9gtMuIKMKpF9tBy/X2mNP0Q==} - engines: {node: '>=10', npm: '>5'} - hasBin: true - dependencies: - '@yarnpkg/lockfile': 1.1.0 - chalk: 4.1.2 - cross-spawn: 6.0.5 - find-yarn-workspace-root: 2.0.0 - fs-extra: 7.0.1 - is-ci: 2.0.0 - klaw-sync: 6.0.0 - minimist: 1.2.7 - open: 7.4.2 - rimraf: 2.7.1 - semver: 5.7.1 - slash: 2.0.0 - tmp: 0.0.33 - yaml: 1.10.2 - dev: true - - /path-browserify/1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - dev: true - - /path-exists/2.1.0: - resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie-promise: 2.0.1 - dev: true /path-exists/3.0.0: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} @@ -13102,41 +9277,39 @@ packages: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - /path-key/2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true - /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true + /path-key/4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} /path-to-regexp/0.1.7: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: true - optional: true /path-to-regexp/6.2.1: resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==} dev: true - /path-type/1.1.0: - resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} - engines: {node: '>=0.10.0'} - dependencies: - graceful-fs: 4.2.10 - pify: 2.3.0 - pinkie-promise: 2.0.1 - dev: true - /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + /pathe/0.2.0: + resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} + dev: true + + /pathe/1.0.0: + resolution: {integrity: sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==} + dev: true + /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -13151,10 +9324,6 @@ packages: safe-buffer: 5.2.1 sha.js: 2.4.11 - /performance-now/2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true - /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -13162,17 +9331,6 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pidtree/0.5.0: - resolution: {integrity: sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /pify/2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true - /pify/3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -13188,18 +9346,6 @@ packages: engines: {node: '>=10'} dev: false - /pinkie-promise/2.0.1: - resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} - engines: {node: '>=0.10.0'} - dependencies: - pinkie: 2.0.4 - dev: true - - /pinkie/2.0.4: - resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} - engines: {node: '>=0.10.0'} - dev: true - /pirates/4.0.5: resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} engines: {node: '>= 6'} @@ -13212,6 +9358,14 @@ packages: find-up: 4.1.0 dev: true + /pkg-types/1.0.1: + resolution: {integrity: sha512-jHv9HB+Ho7dj6ItwppRDDl0iZRYBD0jsakHXtFgoLr+cHSF6xC+QL54sJmWxyGxOLYSHm0afhXhXcQDQqH9z8g==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.0.0 + pathe: 1.0.0 + dev: true + /pngjs/3.4.0: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} @@ -13223,9 +9377,21 @@ packages: hasBin: true dev: true - /posix-character-classes/0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} + /postcss-load-config/3.1.4_ts-node@10.9.1: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.0.5 + ts-node: 10.9.1_fzm5qe273vszdnq5coqmdn2kqi + yaml: 1.10.2 dev: true /postcss-value-parser/4.2.0: @@ -13241,9 +9407,13 @@ packages: source-map-js: 1.0.2 dev: true - /postinstall-postinstall/2.1.0: - resolution: {integrity: sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==} - requiresBuild: true + /postcss/8.4.20: + resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: true /preact/10.11.0: @@ -13254,11 +9424,6 @@ packages: resolution: {integrity: sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==} dev: false - /precond/0.2.3: - resolution: {integrity: sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==} - engines: {node: '>= 0.6'} - dev: true - /preferred-pm/3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} @@ -13274,12 +9439,6 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prepend-http/2.0.0: - resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} - engines: {node: '>=4'} - dev: true - optional: true - /prettier-linter-helpers/1.0.0: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} @@ -13293,15 +9452,6 @@ packages: hasBin: true dev: true - /private/0.1.8: - resolution: {integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==} - engines: {node: '>= 0.6'} - dev: true - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - /process-on-spawn/1.0.0: resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} engines: {node: '>=8'} @@ -13312,20 +9462,13 @@ packages: /process/0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + dev: false /progress/2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: true - /promise-to-callback/1.0.0: - resolution: {integrity: sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==} - engines: {node: '>=0.10.0'} - dependencies: - is-fn: 1.0.0 - set-immediate-shim: 1.0.1 - dev: true - /prop-types/15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -13344,94 +9487,15 @@ packages: forwarded: 0.2.0 ipaddr.js: 1.9.1 dev: true - optional: true /proxy-compare/2.3.0: resolution: {integrity: sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ==} dev: false - /prr/1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true - /pseudomap/1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /psl/1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true - - /public-encrypt/4.0.3: - resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} - dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.6 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - optional: true - - /pull-cat/1.1.11: - resolution: {integrity: sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==} - dev: true - - /pull-defer/0.2.3: - resolution: {integrity: sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==} - dev: true - - /pull-level/2.0.4: - resolution: {integrity: sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg==} - dependencies: - level-post: 1.0.7 - pull-cat: 1.1.11 - pull-live: 1.0.1 - pull-pushable: 2.2.0 - pull-stream: 3.6.14 - pull-window: 2.1.4 - stream-to-pull-stream: 1.7.3 - dev: true - - /pull-live/1.0.1: - resolution: {integrity: sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==} - dependencies: - pull-cat: 1.1.11 - pull-stream: 3.6.14 - dev: true - - /pull-pushable/2.2.0: - resolution: {integrity: sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg==} - dev: true - - /pull-stream/3.6.14: - resolution: {integrity: sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew==} - dev: true - - /pull-window/2.1.4: - resolution: {integrity: sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==} - dependencies: - looper: 2.0.0 - dev: true - - /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - optional: true - - /punycode/1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: true - - /punycode/2.1.0: - resolution: {integrity: sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==} - engines: {node: '>=6'} - dev: true - /punycode/2.1.1: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} @@ -13454,22 +9518,7 @@ packages: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} dependencies: - side-channel: 1.0.4 - - /qs/6.5.3: - resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} - engines: {node: '>=0.6'} - dev: true - - /query-string/5.1.1: - resolution: {integrity: sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==} - engines: {node: '>=0.10.0'} - dependencies: - decode-uri-component: 0.2.0 - object-assign: 4.1.1 - strict-uri-encode: 1.1.0 - dev: true - optional: true + side-channel: 1.0.4 /query-string/6.13.5: resolution: {integrity: sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q==} @@ -13480,12 +9529,6 @@ packages: strict-uri-encode: 2.0.0 dev: false - /querystring/0.2.0: - resolution: {integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true - /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -13495,29 +9538,15 @@ packages: engines: {node: '>=8'} dev: true - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: true - /randombytes/2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - /randomfill/1.0.4: - resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - dev: true - optional: true - /range-parser/1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} dev: true - optional: true /raw-body/2.5.1: resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} @@ -13763,14 +9792,6 @@ packages: loose-envify: 1.4.0 dev: false - /read-pkg-up/1.0.1: - resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} - engines: {node: '>=0.10.0'} - dependencies: - find-up: 1.1.2 - read-pkg: 1.1.0 - dev: true - /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -13780,15 +9801,6 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg/1.1.0: - resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} - engines: {node: '>=0.10.0'} - dependencies: - load-json-file: 1.1.0 - normalize-package-data: 2.5.0 - path-type: 1.1.0 - dev: true - /read-pkg/5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -13809,27 +9821,6 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream/1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: true - - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} engines: {node: '>= 6'} @@ -13848,8 +9839,8 @@ packages: /receptacle/1.3.2: resolution: {integrity: sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==} dependencies: - ms: 2.1.2 - dev: true + ms: 2.1.3 + dev: false /redent/3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} @@ -13859,46 +9850,9 @@ packages: strip-indent: 3.0.0 dev: true - /regenerate-unicode-properties/10.1.0: - resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - dev: true - - /regenerate/1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - dev: true - - /regenerator-runtime/0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - dev: true - /regenerator-runtime/0.13.9: resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} - /regenerator-transform/0.10.1: - resolution: {integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==} - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - private: 0.1.8 - dev: true - - /regenerator-transform/0.15.0: - resolution: {integrity: sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==} - dependencies: - '@babel/runtime': 7.19.0 - dev: true - - /regex-not/1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true - /regexp.prototype.flags/1.4.3: resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} engines: {node: '>= 0.4'} @@ -13912,48 +9866,6 @@ packages: engines: {node: '>=8'} dev: true - /regexpu-core/2.0.0: - resolution: {integrity: sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==} - dependencies: - regenerate: 1.4.2 - regjsgen: 0.2.0 - regjsparser: 0.1.5 - dev: true - - /regexpu-core/5.2.1: - resolution: {integrity: sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==} - engines: {node: '>=4'} - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.0 - regjsgen: 0.7.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.0.0 - dev: true - - /regjsgen/0.2.0: - resolution: {integrity: sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==} - dev: true - - /regjsgen/0.7.1: - resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - dev: true - - /regjsparser/0.1.5: - resolution: {integrity: sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - - /regjsparser/0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true - dependencies: - jsesc: 0.5.0 - dev: true - /release-zalgo/1.0.0: resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} engines: {node: '>=4'} @@ -13995,76 +9907,18 @@ packages: resolution: {integrity: sha1-CkPTqq4egNuRngeuJUsoXZ4ce7U=} dev: false - /repeat-element/1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - - /repeat-string/1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: true - - /repeating/2.0.1: - resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} - engines: {node: '>=0.10.0'} - dependencies: - is-finite: 1.1.0 - dev: true - - /request/2.88.2: - resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} - engines: {node: '>= 6'} - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - dependencies: - aws-sign2: 0.7.0 - aws4: 1.11.0 - caseless: 0.12.0 - combined-stream: 1.0.8 - extend: 3.0.2 - forever-agent: 0.6.1 - form-data: 2.3.3 - har-validator: 5.1.5 - http-signature: 1.2.0 - is-typedarray: 1.0.0 - isstream: 0.1.2 - json-stringify-safe: 5.0.1 - mime-types: 2.1.35 - oauth-sign: 0.9.0 - performance-now: 2.1.0 - qs: 6.5.3 - safe-buffer: 5.2.1 - tough-cookie: 2.5.0 - tunnel-agent: 0.6.0 - uuid: 3.4.0 - dev: true - /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - /require-from-string/1.2.1: - resolution: {integrity: sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==} - engines: {node: '>=0.10.0'} - dev: true - /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /require-main-filename/1.0.1: - resolution: {integrity: sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==} - dev: true - /require-main-filename/2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - /resolve-alpn/1.2.1: - resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - dev: true - optional: true - /resolve-from/4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -14074,11 +9928,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve-url/0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true - /resolve/1.17.0: resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} dependencies: @@ -14102,20 +9951,6 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /responselike/1.0.2: - resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} - dependencies: - lowercase-keys: 1.0.1 - dev: true - optional: true - - /responselike/2.0.1: - resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - dependencies: - lowercase-keys: 2.0.0 - dev: true - optional: true - /restore-cursor/3.1.0: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} @@ -14124,15 +9959,12 @@ packages: signal-exit: 3.0.7 dev: true - /resumer/0.0.0: - resolution: {integrity: sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==} + /restore-cursor/4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - through: 2.3.8 - dev: true - - /ret/0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} + onetime: 5.1.2 + signal-exit: 3.0.7 dev: true /reusify/1.0.4: @@ -14140,10 +9972,6 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rfdc/1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true - /rimraf/2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true @@ -14177,6 +10005,14 @@ packages: fsevents: 2.3.2 dev: true + /rollup/3.8.1: + resolution: {integrity: sha512-4yh9eMW7byOroYcN8DlF9P/2jCpu6txVIHjEqquQVSx7DI0RgyCCN3tjrcy4ra6yVtV336aLBB3v2AarYAxePQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /rpc-websockets/7.5.0: resolution: {integrity: sha512-9tIRi1uZGy7YmDjErf1Ax3wtqdSSLIlnmL5OtOzgd5eqPKbsPpwDP5whUDO2LQay3Xp0CcHlcNSGzacNRluBaQ==} dependencies: @@ -14241,6 +10077,7 @@ packages: deprecated: Renamed to @metamask/safe-event-emitter dependencies: events: 3.3.0 + dev: false /safe-json-utils/1.1.1: resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} @@ -14253,10 +10090,9 @@ packages: get-intrinsic: 1.1.3 is-regex: 1.1.4 - /safe-regex/1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 + /safe-stable-stringify/2.4.2: + resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} + engines: {node: '>=10'} dev: true /safer-buffer/2.1.2: @@ -14272,13 +10108,6 @@ packages: /scrypt-js/3.0.1: resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - /scryptsy/1.2.1: - resolution: {integrity: sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw==} - dependencies: - pbkdf2: 3.1.2 - dev: true - optional: true - /secp256k1/4.0.3: resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} engines: {node: '>=10.0.0'} @@ -14288,20 +10117,6 @@ packages: node-addon-api: 2.0.2 node-gyp-build: 4.5.0 - /seedrandom/3.0.1: - resolution: {integrity: sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==} - dev: true - - /semaphore/1.1.0: - resolution: {integrity: sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==} - engines: {node: '>=0.8.0'} - dev: true - - /semver/5.4.1: - resolution: {integrity: sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==} - hasBin: true - dev: true - /semver/5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true @@ -14339,7 +10154,6 @@ packages: transitivePeerDependencies: - supports-color dev: true - optional: true /serialize-javascript/6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} @@ -14358,21 +10172,6 @@ packages: transitivePeerDependencies: - supports-color dev: true - optional: true - - /servify/0.1.12: - resolution: {integrity: sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==} - engines: {node: '>=6'} - dependencies: - body-parser: 1.20.1 - cors: 2.8.5 - express: 4.18.2 - request: 2.88.2 - xhr: 2.6.0 - transitivePeerDependencies: - - supports-color - dev: true - optional: true /set-blocking/2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -14381,21 +10180,6 @@ packages: resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==} dev: true - /set-immediate-shim/1.0.1: - resolution: {integrity: sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==} - engines: {node: '>=0.10.0'} - dev: true - - /set-value/2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true - /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -14457,28 +10241,19 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /simple-concat/1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - dev: true - optional: true - - /simple-get/2.8.2: - resolution: {integrity: sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==} + /simple-swizzle/0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: - decompress-response: 3.3.0 - once: 1.4.0 - simple-concat: 1.0.1 - dev: true - optional: true - - /slash/1.0.0: - resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} - engines: {node: '>=0.10.0'} + is-arrayish: 0.3.2 dev: true - /slash/2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} + /sirv/2.0.2: + resolution: {integrity: sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.21 + mrmime: 1.0.1 + totalist: 3.0.0 dev: true /slash/3.0.0: @@ -14486,15 +10261,6 @@ packages: engines: {node: '>=8'} dev: true - /slice-ansi/3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi/4.0.0: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} @@ -14504,14 +10270,6 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /slice-ansi/5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - /smartwrap/2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} @@ -14525,64 +10283,6 @@ packages: yargs: 15.4.1 dev: true - /snapdragon-node/2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util/3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon/0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /solc/0.4.26: - resolution: {integrity: sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==} - hasBin: true - dependencies: - fs-extra: 0.30.0 - memorystream: 0.3.1 - require-from-string: 1.2.1 - semver: 5.7.1 - yargs: 4.8.1 - dev: true - - /solc/0.6.12: - resolution: {integrity: sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - command-exists: 1.2.9 - commander: 3.0.2 - fs-extra: 0.30.0 - js-sha3: 0.8.0 - memorystream: 0.3.1 - require-from-string: 2.0.2 - semver: 5.7.1 - tmp: 0.0.33 - dev: true - /solc/0.7.3_debug@4.3.4: resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} engines: {node: '>=8.0.0'} @@ -14606,30 +10306,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map-resolve/0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: true - - /source-map-support/0.4.18: - resolution: {integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==} - dependencies: - source-map: 0.5.7 - dev: true - - /source-map-support/0.5.12: - resolution: {integrity: sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} dependencies: @@ -14637,22 +10313,21 @@ packages: source-map: 0.6.1 dev: true - /source-map-url/0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: true - /source-map/0.5.7: resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} engines: {node: '>=0.10.0'} + dev: false /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + /source-map/0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.0 dev: true /space-separated-tokens/2.0.2: @@ -14705,31 +10380,12 @@ packages: engines: {node: '>=6'} dev: false - /split-string/3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: true - /sprintf-js/1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /sshpk/1.17.0: - resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - asn1: 0.2.6 - assert-plus: 1.0.0 - bcrypt-pbkdf: 1.0.2 - dashdash: 1.14.1 - ecc-jsbn: 0.1.2 - getpass: 0.1.7 - jsbn: 0.1.1 - safer-buffer: 2.1.2 - tweetnacl: 0.14.5 + /stack-trace/0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} dev: true /stacktrace-parser/0.1.10: @@ -14740,16 +10396,8 @@ packages: dev: true /state-local/1.0.7: - resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} - dev: false - - /static-extend/0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true + resolution: {integrity: sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==} + dev: false /statuses/2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} @@ -14763,13 +10411,6 @@ packages: readable-stream: 3.6.0 dev: false - /stream-to-pull-stream/1.7.3: - resolution: {integrity: sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==} - dependencies: - looper: 3.0.0 - pull-stream: 3.6.14 - dev: true - /stream-transform/2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: @@ -14787,31 +10428,11 @@ packages: events: 3.3.0 dev: true - /strict-uri-encode/1.1.0: - resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} - engines: {node: '>=0.10.0'} - dev: true - optional: true - /strict-uri-encode/2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} dev: false - /string-argv/0.3.1: - resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} - engines: {node: '>=0.6.19'} - dev: true - - /string-width/1.0.2: - resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} - engines: {node: '>=0.10.0'} - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: true - /string-width/3.1.0: resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} engines: {node: '>=6'} @@ -14830,15 +10451,6 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - dev: true - /string.prototype.matchall/4.0.7: resolution: {integrity: sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==} dependencies: @@ -14852,15 +10464,6 @@ packages: side-channel: 1.0.4 dev: true - /string.prototype.trim/1.2.6: - resolution: {integrity: sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.3 - dev: true - /string.prototype.trimend/1.0.5: resolution: {integrity: sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==} dependencies: @@ -14875,28 +10478,11 @@ packages: define-properties: 1.1.4 es-abstract: 1.20.3 - /string_decoder/0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: true - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /string_decoder/1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} dependencies: safe-buffer: 5.2.1 - /strip-ansi/3.0.1: - resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - /strip-ansi/5.2.0: resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} engines: {node: '>=6'} @@ -14918,13 +10504,6 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom/2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - dependencies: - is-utf8: 0.2.1 - dev: true - /strip-bom/3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -14940,6 +10519,11 @@ packages: engines: {node: '>=6'} dev: true + /strip-final-newline/3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + /strip-hex-prefix/1.0.0: resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -14958,6 +10542,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal/1.0.0: + resolution: {integrity: sha512-5o4LsH1lzBzO9UFH63AJ2ad2/S2AVx6NtjOcaz+VTT2h1RiRvbipW72z8M/lxEhcPHDBQwpDrnTF7sXy/7OwCQ==} + dependencies: + acorn: 8.8.1 + dev: true + /style-to-object/0.3.0: resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} dependencies: @@ -14991,15 +10581,23 @@ packages: resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} dev: false + /sucrase/3.29.0: + resolution: {integrity: sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==} + engines: {node: '>=8'} + hasBin: true + dependencies: + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.5 + ts-interface-checker: 0.1.13 + dev: true + /superstruct/0.14.2: resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} dev: false - /supports-color/2.0.0: - resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} - engines: {node: '>=0.8.0'} - dev: true - /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -15020,36 +10618,10 @@ packages: has-flag: 4.0.0 dev: true - /supports-color/9.2.3: - resolution: {integrity: sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==} - engines: {node: '>=12'} - dev: true - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - /swarm-js/0.1.42: - resolution: {integrity: sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==} - dependencies: - bluebird: 3.7.2 - buffer: 5.7.1 - eth-lib: 0.1.29 - fs-extra: 4.0.3 - got: 11.8.5 - mime-types: 2.1.35 - mkdirp-promise: 5.0.1 - mock-fs: 4.14.0 - setimmediate: 1.0.5 - tar: 4.4.19 - xhr-request: 1.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - optional: true - /swr/1.3.0_react@18.2.0: resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} peerDependencies: @@ -15069,57 +10641,11 @@ packages: strip-ansi: 6.0.1 dev: true - /tape/4.16.1: - resolution: {integrity: sha512-U4DWOikL5gBYUrlzx+J0oaRedm2vKLFbtA/+BRAXboGWpXO7bMP8ddxlq3Cse2bvXFQ0jZMOj6kk3546mvCdFg==} - hasBin: true - dependencies: - call-bind: 1.0.2 - deep-equal: 1.1.1 - defined: 1.0.1 - dotignore: 0.1.2 - for-each: 0.3.3 - glob: 7.2.3 - has: 1.0.3 - inherits: 2.0.4 - is-regex: 1.1.4 - minimist: 1.2.7 - object-inspect: 1.12.2 - resolve: 1.22.1 - resumer: 0.0.0 - string.prototype.trim: 1.2.6 - through: 2.3.8 - dev: true - - /tar/4.4.19: - resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} - engines: {node: '>=4.5'} - dependencies: - chownr: 1.1.4 - fs-minipass: 1.2.7 - minipass: 2.9.0 - minizlib: 1.3.3 - mkdirp: 0.5.6 - safe-buffer: 5.2.1 - yallist: 3.1.1 - dev: true - optional: true - /term-size/2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /terser/5.15.1: - resolution: {integrity: sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - /test-exclude/6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -15129,47 +10655,52 @@ packages: minimatch: 3.1.2 dev: true - /test-value/2.1.0: - resolution: {integrity: sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==} - engines: {node: '>=0.10.0'} - dependencies: - array-back: 1.0.4 - typical: 2.6.1 - dev: true - - /testrpc/0.0.1: - resolution: {integrity: sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==} - deprecated: testrpc has been renamed to ganache-cli, please use this package from now on. - dev: true - /text-encoding-utf-8/1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} dev: false + /text-hex/1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + dev: true + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /through/2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - /through2/2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + /thenify-all/1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} dependencies: - readable-stream: 2.3.7 - xtend: 4.0.2 + thenify: 3.3.1 dev: true - /timed-out/4.0.1: - resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} - engines: {node: '>=0.10.0'} + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 dev: true - optional: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} /tiny-invariant/1.2.0: resolution: {integrity: sha512-1Uhn/aqw5C6RI4KejVeTg6mIS7IqxnLJ8Mv2tV5rTc0qWobay7pDUz6Wi392Cnc8ak1H0F2cjoRzb2/AW4+Fvg==} dev: false + /tinybench/2.3.1: + resolution: {integrity: sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==} + dev: true + + /tinypool/0.3.0: + resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy/1.0.2: + resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} + engines: {node: '>=14.0.0'} + dev: true + /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -15177,43 +10708,10 @@ packages: os-tmpdir: 1.0.2 dev: true - /tmp/0.1.0: - resolution: {integrity: sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==} - engines: {node: '>=6'} - dependencies: - rimraf: 2.7.1 - dev: true - - /to-fast-properties/1.0.3: - resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} - engines: {node: '>=0.10.0'} - dev: true - /to-fast-properties/2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} - /to-object-path/0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /to-readable-stream/1.0.0: - resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} - engines: {node: '>=6'} - dev: true - optional: true - - /to-regex-range/2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: true - /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -15221,16 +10719,6 @@ packages: is-number: 7.0.0 dev: true - /to-regex/3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - /toggle-selection/1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} dev: false @@ -15240,17 +10728,25 @@ packages: engines: {node: '>=0.6'} dev: true - /tough-cookie/2.5.0: - resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} - engines: {node: '>=0.8'} - dependencies: - psl: 1.9.0 - punycode: 2.1.1 + /totalist/3.0.0: + resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} + engines: {node: '>=6'} dev: true /tr46/0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + /tr46/1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.1.1 + dev: true + + /tree-kill/1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + /trim-lines/3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false @@ -15260,40 +10756,16 @@ packages: engines: {node: '>=8'} dev: true - /trim-right/1.0.1: - resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==} - engines: {node: '>=0.10.0'} + /triple-beam/1.3.0: + resolution: {integrity: sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==} dev: true /trough/2.1.0: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: false - /ts-essentials/1.0.4: - resolution: {integrity: sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==} - dev: true - - /ts-essentials/6.0.7_typescript@4.7.4: - resolution: {integrity: sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==} - peerDependencies: - typescript: '>=3.7.0' - dependencies: - typescript: 4.7.4 - dev: true - - /ts-generator/0.1.1: - resolution: {integrity: sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==} - hasBin: true - dependencies: - '@types/mkdirp': 0.5.2 - '@types/prettier': 2.7.1 - '@types/resolve': 0.0.8 - chalk: 2.4.2 - glob: 7.2.3 - mkdirp: 0.5.6 - prettier: 2.7.1 - resolve: 1.22.1 - ts-essentials: 1.0.4 + /ts-interface-checker/0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} dev: true /ts-node/10.9.1_fzm5qe273vszdnq5coqmdn2kqi: @@ -15343,7 +10815,43 @@ packages: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} /tsort/0.0.1: - resolution: {integrity: sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=} + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + dev: true + + /tsup/6.5.0_6oasmw356qmm23djlsjgkwvrtm: + resolution: {integrity: sha512-36u82r7rYqRHFkD15R20Cd4ercPkbYmuvRkz3Q1LCm5BsiFNUgpo36zbjVhCOgvjyxNBWNKHsaD5Rl8SykfzNA==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: ^4.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 3.1.2_esbuild@0.15.18 + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.15.18 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 3.1.4_ts-node@10.9.1 + resolve-from: 5.0.0 + rollup: 3.8.1 + source-map: 0.8.0-beta.0 + sucrase: 3.29.0 + tree-kill: 1.2.2 + typescript: 4.7.4 + transitivePeerDependencies: + - supports-color + - ts-node dev: true /tsutils/3.21.0: @@ -15379,18 +10887,69 @@ packages: yargs: 17.6.0 dev: true - /tunnel-agent/0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - dependencies: - safe-buffer: 5.2.1 + /turbo-darwin-64/1.6.3: + resolution: {integrity: sha512-QmDIX0Yh1wYQl0bUS0gGWwNxpJwrzZU2GIAYt3aOKoirWA2ecnyb3R6ludcS1znfNV2MfunP+l8E3ncxUHwtjA==} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /tweetnacl-util/0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + /turbo-darwin-arm64/1.6.3: + resolution: {integrity: sha512-75DXhFpwE7CinBbtxTxH08EcWrxYSPFow3NaeFwsG8aymkWXF+U2aukYHJA6I12n9/dGqf7yRXzkF0S/9UtdyQ==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-64/1.6.3: + resolution: {integrity: sha512-O9uc6J0yoRPWdPg9THRQi69K6E2iZ98cRHNvus05lZbcPzZTxJYkYGb5iagCmCW/pq6fL4T4oLWAd6evg2LGQA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-arm64/1.6.3: + resolution: {integrity: sha512-dCy667qqEtZIhulsRTe8hhWQNCJO0i20uHXv7KjLHuFZGCeMbWxB8rsneRoY+blf8+QNqGuXQJxak7ayjHLxiA==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-64/1.6.3: + resolution: {integrity: sha512-lKRqwL3mrVF09b9KySSaOwetehmGknV9EcQTF7d2dxngGYYX1WXoQLjFP9YYH8ZV07oPm+RUOAKSCQuDuMNhiA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-arm64/1.6.3: + resolution: {integrity: sha512-BXY1sDPEA1DgPwuENvDCD8B7Hb0toscjus941WpL8CVd10hg9pk/MWn9CNgwDO5Q9ks0mw+liDv2EMnleEjeNA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo/1.6.3: + resolution: {integrity: sha512-FtfhJLmEEtHveGxW4Ye/QuY85AnZ2ZNVgkTBswoap7UMHB1+oI4diHPNyqrQLG4K1UFtCkjOlVoLsllUh/9QRw==} + hasBin: true + requiresBuild: true + optionalDependencies: + turbo-darwin-64: 1.6.3 + turbo-darwin-arm64: 1.6.3 + turbo-linux-64: 1.6.3 + turbo-linux-arm64: 1.6.3 + turbo-windows-64: 1.6.3 + turbo-windows-arm64: 1.6.3 dev: true - /tweetnacl/0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + /tweetnacl-util/0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} dev: true /tweetnacl/1.0.3: @@ -15450,41 +11009,12 @@ packages: media-typer: 0.3.0 mime-types: 2.1.35 dev: true - optional: true - - /type/1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - dev: true - - /type/2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} - dev: true - - /typechain/3.0.0_typescript@4.7.4: - resolution: {integrity: sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==} - hasBin: true - dependencies: - command-line-args: 4.0.7 - debug: 4.3.4 - fs-extra: 7.0.1 - js-sha3: 0.8.0 - lodash: 4.17.21 - ts-essentials: 6.0.7_typescript@4.7.4 - ts-generator: 0.1.1 - transitivePeerDependencies: - - supports-color - - typescript - dev: true /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: is-typedarray: 1.0.0 - /typedarray/0.0.6: - resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - dev: true - /typedoc/0.22.18_typescript@4.7.4: resolution: {integrity: sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==} engines: {node: '>= 12.10.0'} @@ -15506,33 +11036,15 @@ packages: hasBin: true dev: true - /typewise-core/1.2.0: - resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} - dev: true - - /typewise/1.0.3: - resolution: {integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==} - dependencies: - typewise-core: 1.2.0 - dev: true - - /typewiselite/1.0.0: - resolution: {integrity: sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==} - dev: true - - /typical/2.6.1: - resolution: {integrity: sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==} + /ufo/1.0.1: + resolution: {integrity: sha512-boAm74ubXHY7KJQZLlXrtMz52qFvpsbOxDcZOnw/Wf+LS4Mmyu7JxmzD4tDLtUQtmZECypJ0FrCz4QIe6dvKRA==} dev: true /uint8arrays/3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} dependencies: multiformats: 9.9.0 - - /ultron/1.1.1: - resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} - dev: true - optional: true + dev: false /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -15542,41 +11054,13 @@ packages: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - /underscore/1.9.1: - resolution: {integrity: sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==} - dev: true - optional: true - - /undici/5.11.0: - resolution: {integrity: sha512-oWjWJHzFet0Ow4YZBkyiJwiK5vWqEYoH7BINzJAJOLedZ++JpAlCbUktW2GQ2DS2FpKmxD/JMtWUUWl1BtghGw==} + /undici/5.14.0: + resolution: {integrity: sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ==} engines: {node: '>=12.18'} dependencies: busboy: 1.6.0 dev: true - /unicode-canonical-property-names-ecmascript/2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} - dev: true - - /unicode-match-property-ecmascript/2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 - dev: true - - /unicode-match-property-value-ecmascript/2.0.0: - resolution: {integrity: sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==} - engines: {node: '>=4'} - dev: true - - /unicode-property-aliases-ecmascript/2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} - dev: true - /unified/10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -15589,16 +11073,6 @@ packages: vfile: 5.3.6 dev: false - /union-value/1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: true - /unist-builder/3.0.0: resolution: {integrity: sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==} dependencies: @@ -15645,11 +11119,6 @@ packages: engines: {node: '>= 4.0.0'} dev: true - /universalify/2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: true - /unload/2.2.0: resolution: {integrity: sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==} dependencies: @@ -15657,24 +11126,11 @@ packages: detect-node: 2.1.0 dev: false - /unorm/1.6.0: - resolution: {integrity: sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==} - engines: {node: '>= 0.4.0'} - dev: true - /unpipe/1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} dev: true - /unset-value/1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - /update-browserslist-db/1.0.9_browserslist@4.21.4: resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} hasBin: true @@ -15691,31 +11147,6 @@ packages: punycode: 2.1.1 dev: true - /urix/0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - - /url-parse-lax/3.0.0: - resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} - engines: {node: '>=4'} - dependencies: - prepend-http: 2.0.0 - dev: true - optional: true - - /url-set-query/1.0.0: - resolution: {integrity: sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==} - dev: true - optional: true - - /url/0.11.0: - resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true - /use-callback-ref/1.3.0_kzbn2opkn2327fwg5yzwzya5o4: resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} @@ -15772,35 +11203,17 @@ packages: react: 18.2.0 dev: false - /use/3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: true - /utf-8-validate/5.0.9: resolution: {integrity: sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: node-gyp-build: 4.5.0 - - /utf8/3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - dev: true + dev: false /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /util.promisify/1.1.1: - resolution: {integrity: sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - for-each: 0.3.3 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.4 - dev: true - /util/0.12.4: resolution: {integrity: sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==} dependencies: @@ -15812,23 +11225,9 @@ packages: which-typed-array: 1.1.8 /utils-merge/1.0.1: - resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} dev: true - optional: true - - /uuid/3.3.2: - resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: true - optional: true - - /uuid/3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: true /uuid/8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} @@ -15853,6 +11252,15 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.15 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.8.0 + dev: true + /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: @@ -15862,24 +11270,16 @@ packages: /varint/5.0.2: resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + dev: false /varint/6.0.0: resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + dev: false /vary/1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} dev: true - optional: true - - /verror/1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} - engines: {'0': node >=0.6.0} - dependencies: - assert-plus: 1.0.0 - core-util-is: 1.0.2 - extsprintf: 1.3.0 - dev: true /vfile-message/3.1.3: resolution: {integrity: sha512-0yaU+rj2gKAyEk12ffdSbBfjnnj+b1zqTBv3OQCTn8yEB02bsPizwdBPrLJjHnK+cU9EMMcUnNv938XcZIkmdA==} @@ -15897,447 +11297,315 @@ packages: vfile-message: 3.1.3 dev: false - /vite/2.9.15: - resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==} - engines: {node: '>=12.2.0'} + /vite-node/0.26.2_@types+node@18.7.21: + resolution: {integrity: sha512-4M/zlatItZAyvrQG+82zQBhgDjRZRhVJYFW4T9wcAKh7eMmSiPOVSeI5zsV9UzHXgCcIDKX0o0r3s4OxExTHqg==} + engines: {node: '>=v14.16.0'} hasBin: true - peerDependencies: - less: '*' - sass: '*' - stylus: '*' - peerDependenciesMeta: - less: - optional: true - sass: - optional: true - stylus: - optional: true - dependencies: - esbuild: 0.14.54 - postcss: 8.4.16 - resolve: 1.22.1 - rollup: 2.77.3 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /vscode-oniguruma/1.6.2: - resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} - dev: true - - /vscode-textmate/5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: true - - /wagmi/0.3.5_nznuxirfauibn2fjde2ghjonky: - resolution: {integrity: sha512-NZx8vfPBnkW2UTRUjLTAGC+t8VEJyOxydT1VYAA/7+5/2+xr1likVAVqgk+U/tLdfd3rn/iuQKIEuJWfZNu+Ew==} - peerDependencies: - ethers: '>=5.5.1' - react: '>=17.0.0' - dependencies: - '@coinbase/wallet-sdk': 3.5.3 - '@wagmi/core': 0.2.5_wt6vrvf5rrl2muwnzsdwokau4y - '@walletconnect/ethereum-provider': 1.8.0 - ethers: 5.7.1 - react: 18.2.0 - react-query: 4.0.0-beta.9_biqbaboplfbrettd7655fr4n2y - use-sync-external-store: 1.2.0_react@18.2.0 - transitivePeerDependencies: - - '@babel/core' - - bufferutil - - debug - - encoding - - immer - - react-dom - - react-native - - supports-color - - utf-8-validate - dev: false - - /wcwidth/1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - dependencies: - defaults: 1.0.4 - dev: true - - /web-encoding/1.1.5: - resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} - dependencies: - util: 0.12.4 - optionalDependencies: - '@zxing/text-encoding': 0.9.0 - dev: true - - /web-streams-polyfill/3.2.1: - resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} - engines: {node: '>= 8'} - dev: true - - /web-vitals/1.1.2: - resolution: {integrity: sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==} - dev: false - - /web3-bzz/1.2.11: - resolution: {integrity: sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==} - engines: {node: '>=8.0.0'} - dependencies: - '@types/node': 12.20.55 - got: 9.6.0 - swarm-js: 0.1.42 - underscore: 1.9.1 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - optional: true - - /web3-core-helpers/1.2.11: - resolution: {integrity: sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==} - engines: {node: '>=8.0.0'} - dependencies: - underscore: 1.9.1 - web3-eth-iban: 1.2.11 - web3-utils: 1.2.11 - dev: true - optional: true - - /web3-core-method/1.2.11: - resolution: {integrity: sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==} - engines: {node: '>=8.0.0'} - dependencies: - '@ethersproject/transactions': 5.7.0 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - web3-core-promievent: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-utils: 1.2.11 - dev: true - optional: true - - /web3-core-promievent/1.2.11: - resolution: {integrity: sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==} - engines: {node: '>=8.0.0'} - dependencies: - eventemitter3: 4.0.4 - dev: true - optional: true - - /web3-core-requestmanager/1.2.11: - resolution: {integrity: sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==} - engines: {node: '>=8.0.0'} - dependencies: - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - web3-providers-http: 1.2.11 - web3-providers-ipc: 1.2.11 - web3-providers-ws: 1.2.11 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /web3-core-subscriptions/1.2.11: - resolution: {integrity: sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==} - engines: {node: '>=8.0.0'} - dependencies: - eventemitter3: 4.0.4 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - dev: true - optional: true - - /web3-core/1.2.11: - resolution: {integrity: sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==} - engines: {node: '>=8.0.0'} - dependencies: - '@types/bn.js': 4.11.6 - '@types/node': 12.20.55 - bignumber.js: 9.1.0 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-core-requestmanager: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /web3-eth-abi/1.2.11: - resolution: {integrity: sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==} - engines: {node: '>=8.0.0'} - dependencies: - '@ethersproject/abi': 5.0.0-beta.153 - underscore: 1.9.1 - web3-utils: 1.2.11 - dev: true - optional: true - - /web3-eth-accounts/1.2.11: - resolution: {integrity: sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==} - engines: {node: '>=8.0.0'} - dependencies: - crypto-browserify: 3.12.0 - eth-lib: 0.2.8 - ethereumjs-common: 1.5.0 - ethereumjs-tx: 2.1.2 - scrypt-js: 3.0.1 - underscore: 1.9.1 - uuid: 3.3.2 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /web3-eth-contract/1.2.11: - resolution: {integrity: sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==} - engines: {node: '>=8.0.0'} dependencies: - '@types/bn.js': 4.11.6 - underscore: 1.9.1 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-core-promievent: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-eth-abi: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /web3-eth-ens/1.2.11: - resolution: {integrity: sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==} - engines: {node: '>=8.0.0'} - dependencies: - content-hash: 2.5.2 - eth-ens-namehash: 2.0.8 - underscore: 1.9.1 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-promievent: 1.2.11 - web3-eth-abi: 1.2.11 - web3-eth-contract: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /web3-eth-iban/1.2.11: - resolution: {integrity: sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==} - engines: {node: '>=8.0.0'} - dependencies: - bn.js: 4.12.0 - web3-utils: 1.2.11 - dev: true - optional: true - - /web3-eth-personal/1.2.11: - resolution: {integrity: sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==} - engines: {node: '>=8.0.0'} - dependencies: - '@types/node': 12.20.55 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-net: 1.2.11 - web3-utils: 1.2.11 - transitivePeerDependencies: - - supports-color - dev: true - optional: true - - /web3-eth/1.2.11: - resolution: {integrity: sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==} - engines: {node: '>=8.0.0'} - dependencies: - underscore: 1.9.1 - web3-core: 1.2.11 - web3-core-helpers: 1.2.11 - web3-core-method: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-eth-abi: 1.2.11 - web3-eth-accounts: 1.2.11 - web3-eth-contract: 1.2.11 - web3-eth-ens: 1.2.11 - web3-eth-iban: 1.2.11 - web3-eth-personal: 1.2.11 - web3-net: 1.2.11 - web3-utils: 1.2.11 + debug: 4.3.4 + mlly: 1.0.0 + pathe: 0.2.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.0.3_@types+node@18.7.21 transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss - supports-color + - terser dev: true - optional: true - /web3-net/1.2.11: - resolution: {integrity: sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==} - engines: {node: '>=8.0.0'} + /vite-node/0.27.0_@types+node@18.7.21: + resolution: {integrity: sha512-O1o9joT0qCGx5Om6W0VNLr7M00ttrnFlfZX2d+oxt2T9oZ9DvYSv8kDRhNJDVhAgNgUm3Tc0h/+jppNf3mVKbA==} + engines: {node: '>=v14.16.0'} + hasBin: true dependencies: - web3-core: 1.2.11 - web3-core-method: 1.2.11 - web3-utils: 1.2.11 + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.0.0 + pathe: 0.2.0 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.0.3_@types+node@18.7.21 transitivePeerDependencies: + - '@types/node' + - less + - sass + - stylus + - sugarss - supports-color + - terser dev: true - optional: true - /web3-provider-engine/14.2.1: - resolution: {integrity: sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==} + /vite/2.9.15: + resolution: {integrity: sha512-fzMt2jK4vQ3yK56te3Kqpkaeq9DkcZfBbzHwYpobasvgYmP2SoAr6Aic05CsB4CzCZbsDv4sujX3pkEGhLabVQ==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true dependencies: - async: 2.6.2 - backoff: 2.5.0 - clone: 2.1.2 - cross-fetch: 2.2.6 - eth-block-tracker: 3.0.1 - eth-json-rpc-infura: 3.2.1 - eth-sig-util: 1.4.2 - ethereumjs-block: 1.7.1 - ethereumjs-tx: 1.3.7 - ethereumjs-util: 5.2.1 - ethereumjs-vm: 2.6.0 - json-rpc-error: 2.0.0 - json-stable-stringify: 1.0.1 - promise-to-callback: 1.0.0 - readable-stream: 2.3.7 - request: 2.88.2 - semaphore: 1.1.0 - ws: 5.2.3 - xhr: 2.6.0 - xtend: 4.0.2 - transitivePeerDependencies: - - bufferutil - - encoding - - supports-color - - utf-8-validate + esbuild: 0.14.54 + postcss: 8.4.16 + resolve: 1.22.1 + rollup: 2.77.3 + optionalDependencies: + fsevents: 2.3.2 dev: true - /web3-providers-http/1.2.11: - resolution: {integrity: sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==} - engines: {node: '>=8.0.0'} + /vite/4.0.3_@types+node@18.7.21: + resolution: {integrity: sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true dependencies: - web3-core-helpers: 1.2.11 - xhr2-cookies: 1.1.0 + '@types/node': 18.7.21 + esbuild: 0.16.12 + postcss: 8.4.20 + resolve: 1.22.1 + rollup: 3.8.1 + optionalDependencies: + fsevents: 2.3.2 dev: true - optional: true - /web3-providers-ipc/1.2.11: - resolution: {integrity: sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==} - engines: {node: '>=8.0.0'} + /vitest/0.26.2: + resolution: {integrity: sha512-Jvqxh6SDy9SsuslkDjts0iDewDIdq4rveEt69YgDuAb1tVDGV0lDepVaeAFraoySWqneJmOt4TngFFNhlw7GfA==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - oboe: 2.1.4 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.7.21 + acorn: 8.8.1 + acorn-walk: 8.2.0 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.2 + source-map: 0.6.1 + strip-literal: 1.0.0 + tinybench: 2.3.1 + tinypool: 0.3.0 + tinyspy: 1.0.2 + vite: 4.0.3_@types+node@18.7.21 + vite-node: 0.26.2_@types+node@18.7.21 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser dev: true - optional: true - /web3-providers-ws/1.2.11: - resolution: {integrity: sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==} - engines: {node: '>=8.0.0'} + /vitest/0.26.2_@vitest+ui@0.27.0: + resolution: {integrity: sha512-Jvqxh6SDy9SsuslkDjts0iDewDIdq4rveEt69YgDuAb1tVDGV0lDepVaeAFraoySWqneJmOt4TngFFNhlw7GfA==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - eventemitter3: 4.0.4 - underscore: 1.9.1 - web3-core-helpers: 1.2.11 - websocket: 1.0.32 + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.7.21 + '@vitest/ui': 0.27.0 + acorn: 8.8.1 + acorn-walk: 8.2.0 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.2 + source-map: 0.6.1 + strip-literal: 1.0.0 + tinybench: 2.3.1 + tinypool: 0.3.0 + tinyspy: 1.0.2 + vite: 4.0.3_@types+node@18.7.21 + vite-node: 0.26.2_@types+node@18.7.21 transitivePeerDependencies: + - less + - sass + - stylus + - sugarss - supports-color + - terser dev: true - optional: true - /web3-shh/1.2.11: - resolution: {integrity: sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==} - engines: {node: '>=8.0.0'} + /vitest/0.27.0_@vitest+ui@0.27.0: + resolution: {integrity: sha512-BnOa7T6CnXVC6UgcAsvFOZ2Dtvqkt+/Nl6CRgh4qVT70vElf65XwEL6zMRyTF+h2QXJziEkxYdrLo5WCxckMLQ==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true dependencies: - web3-core: 1.2.11 - web3-core-method: 1.2.11 - web3-core-subscriptions: 1.2.11 - web3-net: 1.2.11 + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.7.21 + '@vitest/ui': 0.27.0 + acorn: 8.8.1 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + local-pkg: 0.4.2 + picocolors: 1.0.0 + source-map: 0.6.1 + strip-literal: 1.0.0 + tinybench: 2.3.1 + tinypool: 0.3.0 + tinyspy: 1.0.2 + vite: 4.0.3_@types+node@18.7.21 + vite-node: 0.27.0_@types+node@18.7.21 transitivePeerDependencies: + - less + - sass + - stylus + - sugarss - supports-color + - terser dev: true - optional: true - /web3-utils/1.2.11: - resolution: {integrity: sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==} - engines: {node: '>=8.0.0'} - dependencies: - bn.js: 4.12.0 - eth-lib: 0.2.8 - ethereum-bloom-filters: 1.0.10 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - underscore: 1.9.1 - utf8: 3.0.0 + /vscode-oniguruma/1.6.2: + resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} dev: true - optional: true - /web3-utils/1.8.0: - resolution: {integrity: sha512-7nUIl7UWpLVka2f09CMbKOSEvorvHnaugIabU4mj7zfMvm0tSByLcEu3eyV9qgS11qxxLuOkzBIwCstTflhmpQ==} - engines: {node: '>=8.0.0'} - dependencies: - bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereumjs-util: 7.1.5 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 + /vscode-textmate/5.2.0: + resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: true - /web3/1.2.11: - resolution: {integrity: sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==} - engines: {node: '>=8.0.0'} - requiresBuild: true + /wagmi/0.3.5_nznuxirfauibn2fjde2ghjonky: + resolution: {integrity: sha512-NZx8vfPBnkW2UTRUjLTAGC+t8VEJyOxydT1VYAA/7+5/2+xr1likVAVqgk+U/tLdfd3rn/iuQKIEuJWfZNu+Ew==} + peerDependencies: + ethers: '>=5.5.1' + react: '>=17.0.0' dependencies: - web3-bzz: 1.2.11 - web3-core: 1.2.11 - web3-eth: 1.2.11 - web3-eth-personal: 1.2.11 - web3-net: 1.2.11 - web3-shh: 1.2.11 - web3-utils: 1.2.11 + '@coinbase/wallet-sdk': 3.5.3 + '@wagmi/core': 0.2.5_wt6vrvf5rrl2muwnzsdwokau4y + '@walletconnect/ethereum-provider': 1.8.0 + ethers: 5.7.1 + react: 18.2.0 + react-query: 4.0.0-beta.9_biqbaboplfbrettd7655fr4n2y + use-sync-external-store: 1.2.0_react@18.2.0 transitivePeerDependencies: + - '@babel/core' - bufferutil + - debug + - encoding + - immer + - react-dom + - react-native - supports-color - utf-8-validate + dev: false + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 dev: true - optional: true + + /web-encoding/1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + dependencies: + util: 0.12.4 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + dev: true + + /web-vitals/1.1.2: + resolution: {integrity: sha512-PFMKIY+bRSXlMxVAQ+m2aw9c/ioUYfDgrYot0YUa+/xa0sakubWhSDyxAKwzymvXVdF4CZI71g06W+mqhzu6ig==} + dev: false /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + /webidl-conversions/4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + /webidl-conversions/5.0.0: resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} engines: {node: '>=8'} dev: false - /websocket/1.0.32: - resolution: {integrity: sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==} - engines: {node: '>=4.0.0'} - dependencies: - bufferutil: 4.0.6 - debug: 2.6.9 - es5-ext: 0.10.62 - typedarray-to-buffer: 3.1.5 - utf-8-validate: 5.0.9 - yaeti: 0.0.6 - transitivePeerDependencies: - - supports-color - dev: true - - /whatwg-fetch/2.0.4: - resolution: {integrity: sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==} - dev: true - /whatwg-fetch/3.6.2: resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} - dev: false /whatwg-url-without-unicode/8.0.0-3: resolution: {integrity: sha512-HoKuzZrUlgpz35YO27XgD28uh/WJH4B0+3ttFqRo//lmq+9T/mIOJ6kqmINI9HpUpz1imRC/nR/lxKpJiv0uig==} @@ -16354,6 +11622,14 @@ packages: tr46: 0.0.3 webidl-conversions: 3.0.1 + /whatwg-url/7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + /which-boxed-primitive/1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -16363,10 +11639,6 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 - /which-module/1.0.0: - resolution: {integrity: sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==} - dev: true - /which-module/2.0.0: resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} @@ -16404,10 +11676,30 @@ packages: isexe: 2.0.0 dev: true - /window-size/0.2.0: - resolution: {integrity: sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==} - engines: {node: '>= 0.10.0'} - hasBin: true + /winston-transport/4.5.0: + resolution: {integrity: sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==} + engines: {node: '>= 6.4.0'} + dependencies: + logform: 2.4.2 + readable-stream: 3.6.0 + triple-beam: 1.3.0 + dev: true + + /winston/3.8.2: + resolution: {integrity: sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==} + engines: {node: '>= 12.0.0'} + dependencies: + '@colors/colors': 1.5.0 + '@dabh/diagnostics': 2.0.3 + async: 3.2.4 + is-stream: 2.0.1 + logform: 2.4.2 + one-time: 1.0.0 + readable-stream: 3.6.0 + safe-stable-stringify: 2.4.2 + stack-trace: 0.0.10 + triple-beam: 1.3.0 + winston-transport: 4.5.0 dev: true /word-wrap/1.2.3: @@ -16419,14 +11711,6 @@ packages: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true - /wrap-ansi/2.1.0: - resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} - engines: {node: '>=0.10.0'} - dependencies: - string-width: 1.0.2 - strip-ansi: 3.0.1 - dev: true - /wrap-ansi/5.1.0: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} @@ -16466,37 +11750,6 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /ws/3.3.3: - resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - safe-buffer: 5.1.2 - ultron: 1.1.1 - dev: true - optional: true - - /ws/5.2.3: - resolution: {integrity: sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - dev: true - /ws/7.4.6: resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} engines: {node: '>=8.3.0'} @@ -16550,56 +11803,10 @@ packages: utf-8-validate: 5.0.9 dev: false - /xhr-request-promise/0.1.3: - resolution: {integrity: sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==} - dependencies: - xhr-request: 1.1.0 - dev: true - optional: true - - /xhr-request/1.1.0: - resolution: {integrity: sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==} - dependencies: - buffer-to-arraybuffer: 0.0.5 - object-assign: 4.1.1 - query-string: 5.1.1 - simple-get: 2.8.2 - timed-out: 4.0.1 - url-set-query: 1.0.0 - xhr: 2.6.0 - dev: true - optional: true - - /xhr/2.6.0: - resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} - dependencies: - global: 4.4.0 - is-function: 1.0.2 - parse-headers: 2.0.5 - xtend: 4.0.2 - dev: true - - /xhr2-cookies/1.1.0: - resolution: {integrity: sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=} - dependencies: - cookiejar: 2.1.3 - dev: true - optional: true - - /xtend/2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} - dependencies: - object-keys: 0.4.0 - dev: true - /xtend/4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - - /y18n/3.2.2: - resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - dev: true + dev: false /y18n/4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} @@ -16609,11 +11816,6 @@ packages: engines: {node: '>=10'} dev: true - /yaeti/0.0.6: - resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} - engines: {node: '>=0.10.32'} - dev: true - /yallist/2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true @@ -16645,18 +11847,16 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser/2.4.1: - resolution: {integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==} - dependencies: - camelcase: 3.0.0 - lodash.assign: 4.2.0 - dev: true - /yargs-parser/20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} dev: true + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -16730,25 +11930,6 @@ packages: yargs-parser: 21.1.1 dev: true - /yargs/4.8.1: - resolution: {integrity: sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==} - dependencies: - cliui: 3.2.0 - decamelize: 1.2.0 - get-caller-file: 1.0.3 - lodash.assign: 4.2.0 - os-locale: 1.4.0 - read-pkg-up: 1.0.1 - require-directory: 2.1.1 - require-main-filename: 1.0.1 - set-blocking: 2.0.0 - string-width: 1.0.2 - which-module: 1.0.0 - window-size: 0.2.0 - y18n: 3.2.2 - yargs-parser: 2.4.1 - dev: true - /yn/3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -16786,3 +11967,4 @@ packages: dependencies: bn.js: 4.12.0 ethereumjs-util: 6.2.1 + dev: false diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 4340350e..8c699413 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,5 @@ packages: - - 'packages/*' \ No newline at end of file + - 'common/*' + - 'core/*' + - 'modules/*' + - 'packages/*' diff --git a/scripts/tsup.ts b/scripts/tsup.ts new file mode 100644 index 00000000..b9baf6d8 --- /dev/null +++ b/scripts/tsup.ts @@ -0,0 +1,22 @@ +import type { Options } from 'tsup'; + +type GetConfig = Omit< + Options, + 'bundle' | 'clean' | 'dts' | 'entry' | 'format' +> & { + entry?: string[]; +}; + +export function getConfig(options: GetConfig = {}): Options { + return { + bundle: true, + clean: true, + dts: true, + sourcemap: true, + format: ['esm', 'cjs'], + silent: true, + splitting: true, + target: 'es2021', + ...options, + }; +} diff --git a/tsconfig.json b/tsconfig.json index f1101aaf..6ccdbb8c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,18 +1,3 @@ { - "compilerOptions": { - "allowJs": true, - "downlevelIteration": true, - "esModuleInterop": true, - "incremental": true, - "isolatedModules": true, - "noEmit": true, - "noImplicitAny": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "skipLibCheck": true, - "strict": true, - "moduleResolution": "node", - "resolveJsonModule": true - }, - "exclude": ["node_modules", "**/dist/**"] + "extends": "tsconfig-evmcrispr/base.json" } diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..c85b02d2 --- /dev/null +++ b/turbo.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://turbo.build/schema.json", + "pipeline": { + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**"], + "env": ["ETHERSCAN_API", "VITE_PINATA_JWT"] + }, + "test": { + "dependsOn": ["build"], + "inputs": [ + "src/**/*.tsx", + "src/**/*.ts", + "test/**/*.ts", + "test/**/*.tsx" + ], + "outputs": [], + "env": ["ARCHIVE_NODE_ENDPOINT", "FORK_BLOCK_NUMBER", "FORK_CHAIN_ID"] + }, + "test:watch": { + "cache": false + }, + "lint": { + "outputs": [] + }, + "dev": { + "cache": false + }, + "clean": { + "cache": false + } + } +}