diff --git a/.gitignore b/.gitignore index e834a4c..473cada 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules +dist build types .env diff --git a/examples/1-simple-transfer/package.json b/examples/1-simple-transfer/package.json index 846cffb..74bbcbd 100644 --- a/examples/1-simple-transfer/package.json +++ b/examples/1-simple-transfer/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/1-simple-transfer/tests/task.spec.ts b/examples/1-simple-transfer/tests/task.spec.ts index 9b00076..f8e568b 100644 --- a/examples/1-simple-transfer/tests/task.spec.ts +++ b/examples/1-simple-transfer/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, runTask, Transfer } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -11,10 +12,14 @@ describe('Task', () => { } it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context)) as Transfer[] + const result = await runTask(taskDir, context) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Transfer[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('transfer') + expect(intents[0].op).to.be.equal(OpType.Transfer) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].chainId).to.be.equal(10) diff --git a/examples/11-automated-refunds/.env.sample b/examples/11-automated-refunds/.env.sample new file mode 100644 index 0000000..fa1daaa --- /dev/null +++ b/examples/11-automated-refunds/.env.sample @@ -0,0 +1,2 @@ +PRIVATE_KEY= +TASK_CID= diff --git a/examples/11-automated-refunds/abis/ERC20.json b/examples/11-automated-refunds/abis/ERC20.json new file mode 100644 index 0000000..405d6b3 --- /dev/null +++ b/examples/11-automated-refunds/abis/ERC20.json @@ -0,0 +1,222 @@ +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + } +] diff --git a/examples/11-automated-refunds/eslint.config.mjs b/examples/11-automated-refunds/eslint.config.mjs new file mode 100644 index 0000000..90af2c8 --- /dev/null +++ b/examples/11-automated-refunds/eslint.config.mjs @@ -0,0 +1,89 @@ +import eslintPluginTypeScript from "@typescript-eslint/eslint-plugin" +import eslintParserTypeScript from "@typescript-eslint/parser" +import eslintPluginImport from "eslint-plugin-import" +import eslintPluginSimpleImportSort from "eslint-plugin-simple-import-sort" +import eslintConfigPrettier from "eslint-config-prettier" +import eslintPluginPrettier from "eslint-plugin-prettier" + +export default [ + { + ignores: ["node_modules/**", "**/dist/**", "**/build/**", "**/.prettierrc.*", "./src/types/**"] + }, + { + files: ["**/*.{ts,tsx}"], + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + parser: eslintParserTypeScript, + parserOptions: { + project: "./tsconfig.json" + } + }, + plugins: { + "@typescript-eslint": eslintPluginTypeScript, + prettier: eslintPluginPrettier, + import: eslintPluginImport, + "simple-import-sort": eslintPluginSimpleImportSort + }, + rules: { + ...eslintPluginTypeScript.configs.recommended.rules, + "@typescript-eslint/no-namespace": "off", + "@typescript-eslint/no-unused-vars": ["error"], + "@typescript-eslint/explicit-function-return-type": "error", + "@typescript-eslint/no-explicit-any": "error", + + "prettier/prettier": [ + "error", + { + "semi": false, + "singleQuote": true, + "trailingComma": "es5", + "arrowParens": "always", + "bracketSpacing": true, + "printWidth": 120, + "tabWidth": 2, + "useTabs": false + } + ], + + "simple-import-sort/imports": [ + "error", + { + groups: [ + ["^@?\\w"], + ["^\\.\\.(?!/?$)", "^\\.\\./?$"], + ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"] + ] + } + ], + "simple-import-sort/exports": "error", + + "comma-spacing": ["error", { before: false, after: true }], + "no-multiple-empty-lines": ["error", { max: 1, maxEOF: 1 }] + }, + settings: { + "import/resolver": { + typescript: { + alwaysTryTypes: true, + project: "./tsconfig.json" + } + } + } + }, + // configuration for test files + { + files: ["tests/**/*.{ts,tsx}", "**/*.spec.{ts,tsx}", "**/*.test.{ts,tsx}"], + languageOptions: { + ecmaVersion: "latest", + sourceType: "module", + parser: eslintParserTypeScript, + parserOptions: { + project: "./tests/tsconfig.json" + } + }, + rules: { + "@typescript-eslint/no-unused-expressions": "off" + } + }, + eslintConfigPrettier +] \ No newline at end of file diff --git a/examples/11-automated-refunds/manifest.yaml b/examples/11-automated-refunds/manifest.yaml new file mode 100644 index 0000000..73a18fd --- /dev/null +++ b/examples/11-automated-refunds/manifest.yaml @@ -0,0 +1,9 @@ +version: 1.0.0 +name: Client refunds +description: Refunds clients based on past orders +inputs: + - chainId: uint32 # Example: 42161 for Arbitrum + - token: string # Token contract address + - amount: string # Amount in wei (as string) + - recipient: string # Recipient address + - maxFee: string # Max fee in wei (as string) diff --git a/examples/11-automated-refunds/package.json b/examples/11-automated-refunds/package.json new file mode 100644 index 0000000..d211232 --- /dev/null +++ b/examples/11-automated-refunds/package.json @@ -0,0 +1,37 @@ +{ + "name": "@mimicprotocol/11-automated-refunds", + "version": "0.0.1", + "license": "Unlicensed", + "private": true, + "type": "module", + "scripts": { + "build": "yarn codegen && yarn compile", + "codegen": "mimic codegen", + "compile": "mimic compile", + "test": "mimic test", + "create-config": "tsc -p tsconfig.create-config.json && tsx src/create-config.ts", + "lint": "eslint ." + }, + "dependencies": { + "dotenv": "^17.0.0", + "ethers": "^6.13.5", + "semver": "^7.7.3" + }, + "devDependencies": { + "@mimicprotocol/cli": "latest", + "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", + "@mimicprotocol/test-ts": "latest", + "@types/chai": "^5.2.2", + "@types/mocha": "^10.0.10", + "@types/node": "^22.10.5", + "assemblyscript": "0.27.36", + "chai": "^4.3.7", + "eslint": "^9.10.0", + "json-as": "1.1.7", + "mocha": "^10.2.0", + "tsx": "^4.20.3", + "typescript": "^5.8.3", + "visitor-as": "0.11.4" + } +} \ No newline at end of file diff --git a/examples/11-automated-refunds/src/create-config.ts b/examples/11-automated-refunds/src/create-config.ts new file mode 100644 index 0000000..45a718e --- /dev/null +++ b/examples/11-automated-refunds/src/create-config.ts @@ -0,0 +1,65 @@ +import { config } from 'dotenv' +config() + +import { Client, EthersSigner, getNextCronDate, HOUR, randomEvmAddress, Sort, TriggerType } from '@mimicprotocol/sdk' +import { Wallet } from 'ethers' +import { inc } from 'semver' + +/* eslint-disable @typescript-eslint/explicit-function-return-type */ + +async function main() { + // Create client with signer + if (!process.env.PRIVATE_KEY) throw new Error('Missing PRIVATE_KEY in .env file') + const signer = EthersSigner.fromPrivateKey(process.env.PRIVATE_KEY) + const client = new Client({ signer }) + + // Get task manifest from deployed task + if (!process.env.TASK_CID) throw new Error('Missing TASK_CID in .env file') + const taskCid = process.env.TASK_CID + const manifest = await client.tasks.getManifest(taskCid) + + // Increment config version + const latestConfig = await client.configs.get({ taskCid, sort: Sort.desc, limit: 1 }) + const version = latestConfig.length ? inc(latestConfig[0].version, 'patch') : '0.0.1' + if (!version) throw new Error('Invalid config version') + + // Get inputs and calculate trigger values + const { chainId, token, amount, recipient, maxFee } = getRefundData() + const schedule = '0 0 * * *' // At midnight UTC + const deltaMs = HOUR * 1000 + const endDate = getNextCronDate(schedule).getTime() + deltaMs + 1 // 1 AM UTC + + // Submit the signed task config to Mimic Protocol for one-time execution + await client.configs.signAndCreate({ + description: `Refund execution - ${Date.now()}`, + taskCid, + version, + manifest, + trigger: { + type: TriggerType.Cron, + schedule, + delta: '1h', + endDate, + }, + input: { chainId, token, amount, recipient, maxFee }, + executionFeeLimit: '0', + minValidations: 1, + signer: new Wallet(process.env.PRIVATE_KEY).address, + }) +} + +function getRefundData() { + // TODO: Fetch the refund info from an external service + return { + chainId: 8453, + token: randomEvmAddress(), + amount: '100', + recipient: randomEvmAddress(), + maxFee: '0.3', + } +} + +main().catch((err) => { + console.error(err) + process.exit(1) +}) diff --git a/examples/11-automated-refunds/src/task.ts b/examples/11-automated-refunds/src/task.ts new file mode 100644 index 0000000..3d58c97 --- /dev/null +++ b/examples/11-automated-refunds/src/task.ts @@ -0,0 +1,14 @@ +import { Address, BigInt, ERC20Token, log, TokenAmount, Transfer } from '@mimicprotocol/lib-ts' + +import { inputs } from './types' + +export default function main(): void { + const token = ERC20Token.fromString(inputs.token, inputs.chainId) + const tokenAmount = TokenAmount.fromStringDecimal(token, inputs.amount) + const maxFee = BigInt.fromStringDecimal(inputs.maxFee, token.decimals) + const recipient = Address.fromString(inputs.recipient) + + Transfer.create(token, tokenAmount.amount, recipient, maxFee).send() + + log.info('Created transfer intent of {}', [tokenAmount]) +} diff --git a/examples/11-automated-refunds/tests/task.spec.ts b/examples/11-automated-refunds/tests/task.spec.ts new file mode 100644 index 0000000..64f6aa2 --- /dev/null +++ b/examples/11-automated-refunds/tests/task.spec.ts @@ -0,0 +1,59 @@ +import { Chains, fp, OpType } from '@mimicprotocol/sdk' +import { Context, ContractCallMock, runTask, Transfer } from '@mimicprotocol/test-ts' +import { expect } from 'chai' + +describe('Task', () => { + const taskDir = './build' + + const chainId = Chains.Arbitrum + + const context: Context = { + user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', + settlers: [{ address: '0x609d831c0068844e11ef85a273c7f356212fd6d1', chainId }], + timestamp: Date.now(), + } + + const inputs = { + chainId, + token: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // USDC + amount: '100', // 100 USDC + maxFee: '0.3', // 0.3 USDC + recipient: '0xe35e9842fceaca96570b734083f4a58e8f7c5f2a', + } + + const calls: ContractCallMock[] = [ + { + request: { to: inputs.token, chainId, fnSelector: '0x313ce567' }, // `decimals` + response: { value: '6', abiType: 'uint8' }, + }, + { + request: { to: inputs.token, chainId, fnSelector: '0x95d89b41' }, // `symbol` + response: { value: 'USDC', abiType: 'string' }, + }, + ] + + it('produces the expected intents', async () => { + const result = await runTask(taskDir, context, { inputs, calls }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Transfer[] + expect(intents).to.have.lengthOf(1) + + expect(intents[0].op).to.be.equal(OpType.Transfer) + expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) + expect(intents[0].user).to.be.equal(context.user) + expect(intents[0].chainId).to.be.equal(chainId) + expect(intents[0].maxFees).to.have.lengthOf(1) + expect(intents[0].maxFees[0].token).to.be.equal(inputs.token) + expect(intents[0].maxFees[0].amount).to.be.equal(fp(inputs.maxFee, 6).toString()) + + expect(intents[0].transfers).to.have.lengthOf(1) + expect(intents[0].transfers[0].token).to.be.equal(inputs.token) + expect(intents[0].transfers[0].amount).to.be.equal(fp(inputs.amount, 6).toString()) + expect(intents[0].transfers[0].recipient).to.be.equal(inputs.recipient) + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.be.equal(`[Info] Created transfer intent of ${inputs.amount} USDC`) + }) +}) diff --git a/examples/11-automated-refunds/tests/tsconfig.json b/examples/11-automated-refunds/tests/tsconfig.json new file mode 100644 index 0000000..821e603 --- /dev/null +++ b/examples/11-automated-refunds/tests/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "declaration": true, + "composite": true, + "outDir": "./dist", + "rootDir": "./", + "resolveJsonModule": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "lib": ["ES2020", "DOM"], + "types": ["mocha", "chai", "node"] + }, + "include": ["./**/*.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/examples/11-automated-refunds/tsconfig.create-config.json b/examples/11-automated-refunds/tsconfig.create-config.json new file mode 100644 index 0000000..5e834b9 --- /dev/null +++ b/examples/11-automated-refunds/tsconfig.create-config.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "strict": true, + "target": "es2020", + "rootDir": "src", + "outDir": "dist", + "module": "Node16", + "esModuleInterop": true, + "moduleResolution": "node16", + "sourceMap": true, + "declaration": true, + "resolveJsonModule": true, + "skipLibCheck": true + }, + "include": [ + "src/create-config.ts" + ] +} diff --git a/examples/11-automated-refunds/tsconfig.json b/examples/11-automated-refunds/tsconfig.json new file mode 100644 index 0000000..dd7ad20 --- /dev/null +++ b/examples/11-automated-refunds/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "assemblyscript/std/assembly.json", + "include": ["./src/**/*.ts"], + "exclude": ["tests/**/*"], + "references": [{ "path": "./tests" }] +} diff --git a/examples/2-simple-transfer-with-inputs/package.json b/examples/2-simple-transfer-with-inputs/package.json index 2f91b7f..7b6074c 100644 --- a/examples/2-simple-transfer-with-inputs/package.json +++ b/examples/2-simple-transfer-with-inputs/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/2-simple-transfer-with-inputs/tests/task.spec.ts b/examples/2-simple-transfer-with-inputs/tests/task.spec.ts index 15fdeaf..e7674c7 100644 --- a/examples/2-simple-transfer-with-inputs/tests/task.spec.ts +++ b/examples/2-simple-transfer-with-inputs/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, runTask, Transfer } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -19,10 +20,14 @@ describe('Task', () => { } it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context, { inputs })) as Transfer[] + const result = await runTask(taskDir, context, { inputs }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Transfer[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('transfer') + expect(intents[0].op).to.be.equal(OpType.Transfer) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].chainId).to.be.equal(inputs.chainId) diff --git a/examples/3-transfer-balance-threshold/package.json b/examples/3-transfer-balance-threshold/package.json index 71f1b8b..24da3e9 100644 --- a/examples/3-transfer-balance-threshold/package.json +++ b/examples/3-transfer-balance-threshold/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/3-transfer-balance-threshold/tests/task.spec.ts b/examples/3-transfer-balance-threshold/tests/task.spec.ts index 97e8c91..0d48b4d 100644 --- a/examples/3-transfer-balance-threshold/tests/task.spec.ts +++ b/examples/3-transfer-balance-threshold/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, ContractCallMock, runTask, Transfer } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -24,7 +25,13 @@ describe('Task', () => { request: { to: inputs.token, chainId: inputs.chainId, - data: '0x70a08231', // `balanceOf` fn selector + fnSelector: '0x70a08231', // `balanceOf` + params: [ + { + value: inputs.recipient, + abiType: 'address', + }, + ], }, response: { value: balance, @@ -38,10 +45,14 @@ describe('Task', () => { const calls = buildCalls(balance) it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context, { inputs, calls })) as Transfer[] + const result = await runTask(taskDir, context, { inputs, calls }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Transfer[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('transfer') + expect(intents[0].op).to.be.equal(OpType.Transfer) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].chainId).to.be.equal(inputs.chainId) @@ -61,8 +72,9 @@ describe('Task', () => { const calls = buildCalls(balance) it('does not produce any intent', async () => { - const intents = await runTask(taskDir, context, { inputs, calls }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs, calls }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty }) }) }) diff --git a/examples/4-transfer-balance-threshold-with-oracles/package.json b/examples/4-transfer-balance-threshold-with-oracles/package.json index d3fcdbc..9ac6b77 100644 --- a/examples/4-transfer-balance-threshold-with-oracles/package.json +++ b/examples/4-transfer-balance-threshold-with-oracles/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/4-transfer-balance-threshold-with-oracles/tests/task.spec.ts b/examples/4-transfer-balance-threshold-with-oracles/tests/task.spec.ts index 93456d5..f7b4409 100644 --- a/examples/4-transfer-balance-threshold-with-oracles/tests/task.spec.ts +++ b/examples/4-transfer-balance-threshold-with-oracles/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, ContractCallMock, GetPriceMock, runTask, Transfer } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -34,7 +35,13 @@ describe('Task', () => { request: { to: inputs.token, chainId: inputs.chainId, - data: '0x70a08231', // `balanceOf` fn selector + fnSelector: '0x70a08231', // `balanceOf`, + params: [ + { + value: inputs.recipient, + abiType: 'address', + }, + ], }, response: { value: balance, @@ -45,7 +52,7 @@ describe('Task', () => { request: { to: inputs.token, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '6', @@ -59,10 +66,14 @@ describe('Task', () => { const calls = buildCalls(balance) it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context, { inputs, calls, prices })) as Transfer[] + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Transfer[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('transfer') + expect(intents[0].op).to.be.equal(OpType.Transfer) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].chainId).to.be.equal(inputs.chainId) @@ -74,6 +85,9 @@ describe('Task', () => { expect(intents[0].transfers[0].token).to.be.equal(inputs.token) expect(intents[0].transfers[0].amount).to.be.equal(inputs.amount) expect(intents[0].transfers[0].recipient).to.be.equal(inputs.recipient) + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.be.equal('[Info] Balance in USD: 9') }) }) @@ -82,8 +96,12 @@ describe('Task', () => { const calls = buildCalls(balance) it('does not produce any intent', async () => { - const intents = await runTask(taskDir, context, { inputs, calls, prices }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.be.equal('[Info] Balance in USD: 11') }) }) }) diff --git a/examples/5-invest-aave-idle-balance/package.json b/examples/5-invest-aave-idle-balance/package.json index 46813e4..6dd584d 100644 --- a/examples/5-invest-aave-idle-balance/package.json +++ b/examples/5-invest-aave-idle-balance/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/5-invest-aave-idle-balance/tests/task.spec.ts b/examples/5-invest-aave-idle-balance/tests/task.spec.ts index b39ba6e..04ee7d9 100644 --- a/examples/5-invest-aave-idle-balance/tests/task.spec.ts +++ b/examples/5-invest-aave-idle-balance/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, ContractCallMock, GetPriceMock, runTask, Swap } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -42,7 +43,7 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0xb16a19de', // `UNDERLYING_ASSET_ADDRESS` fn selector + fnSelector: '0xb16a19de', // `UNDERLYING_ASSET_ADDRESS` }, response: { value: underlyingToken, @@ -53,7 +54,7 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '6', @@ -64,7 +65,7 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0x95d89b41', // `symbol` fn selector + fnSelector: '0x95d89b41', // `symbol` }, response: { value: 'aOptUSDC', @@ -76,7 +77,13 @@ describe('Task', () => { request: { to: underlyingToken, chainId: inputs.chainId, - data: '0x70a08231', // `balanceOf` fn selector + fnSelector: '0x70a08231', // `balanceOf` + params: [ + { + value: context.user!, + abiType: 'address', + }, + ], }, response: { value: balance, @@ -87,7 +94,7 @@ describe('Task', () => { request: { to: underlyingToken, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '6', @@ -98,7 +105,7 @@ describe('Task', () => { request: { to: underlyingToken, chainId: inputs.chainId, - data: '0x95d89b41', // `symbol` fn selector + fnSelector: '0x95d89b41', // `symbol` }, response: { value: 'USDC', @@ -112,8 +119,13 @@ describe('Task', () => { const calls = buildCalls(balance) it('does not produce any intent', async () => { - const intents = await runTask(taskDir, context, { inputs, calls, prices }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty + + expect(result.logs).to.have.lengthOf(2) + expect(result.logs[0]).to.be.equal('[Info] Underlying balance in USD: 9') + expect(result.logs[1]).to.be.equal('[Info] Threshold not met') }) }) @@ -122,10 +134,14 @@ describe('Task', () => { const calls = buildCalls(balance) it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context, { inputs, calls, prices })) as Swap[] + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Swap[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('swap') + expect(intents[0].op).to.be.equal(OpType.Swap) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].sourceChain).to.be.equal(inputs.chainId) @@ -139,6 +155,10 @@ describe('Task', () => { expect(intents[0].tokensOut[0].token).to.be.equal(inputs.aToken) expect(intents[0].tokensOut[0].minAmount).to.be.equal('10780000') // balance_in_ausdc * (1 - slippage) = 11 * 0.98 = 10.78 expect(intents[0].tokensOut[0].recipient).to.be.equal(context.user) + + expect(result.logs).to.have.lengthOf(2) + expect(result.logs[0]).to.be.equal('[Info] Underlying balance in USD: 11') + expect(result.logs[1]).to.be.equal('[Info] Min amount out: 10.78 aOptUSDC') }) }) }) diff --git a/examples/6-withdraw-from-aave-balance-threshold/package.json b/examples/6-withdraw-from-aave-balance-threshold/package.json index 50f5ea2..cd50aeb 100644 --- a/examples/6-withdraw-from-aave-balance-threshold/package.json +++ b/examples/6-withdraw-from-aave-balance-threshold/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/6-withdraw-from-aave-balance-threshold/tests/task.spec.ts b/examples/6-withdraw-from-aave-balance-threshold/tests/task.spec.ts index 3a2002b..2f93a0b 100644 --- a/examples/6-withdraw-from-aave-balance-threshold/tests/task.spec.ts +++ b/examples/6-withdraw-from-aave-balance-threshold/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, ContractCallMock, GetPriceMock, runTask, Swap } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -43,7 +44,7 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0xb16a19de', // `UNDERLYING_ASSET_ADDRESS` fn selector + fnSelector: '0xb16a19de', // `UNDERLYING_ASSET_ADDRESS` }, response: { value: underlyingToken, @@ -54,7 +55,13 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0x70a08231', // `balanceOf` fn selector + fnSelector: '0x70a08231', // `balanceOf` + params: [ + { + value: context.user!, + abiType: 'address', + }, + ], }, response: { value: userBalance, @@ -65,7 +72,7 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '6', @@ -76,7 +83,7 @@ describe('Task', () => { request: { to: inputs.aToken, chainId: inputs.chainId, - data: '0x95d89b41', // `symbol` fn selector + fnSelector: '0x95d89b41', // `symbol` }, response: { value: 'aOptUSDC', @@ -88,7 +95,13 @@ describe('Task', () => { request: { to: underlyingToken, chainId: inputs.chainId, - data: '0x70a08231', // `balanceOf` fn selector + fnSelector: '0x70a08231', // `balanceOf` + params: [ + { + value: inputs.recipient, + abiType: 'address', + }, + ], }, response: { value: recipientBalance, @@ -99,7 +112,7 @@ describe('Task', () => { request: { to: underlyingToken, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '6', @@ -110,7 +123,7 @@ describe('Task', () => { request: { to: underlyingToken, chainId: inputs.chainId, - data: '0x95d89b41', // `symbol` fn selector + fnSelector: '0x95d89b41', // `symbol` }, response: { value: 'USDC', @@ -128,10 +141,14 @@ describe('Task', () => { const calls = buildCalls(recipientBalance, userBalance) it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context, { inputs, calls, prices })) as Swap[] + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Swap[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('swap') + expect(intents[0].op).to.be.equal(OpType.Swap) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].sourceChain).to.be.equal(inputs.chainId) @@ -145,6 +162,10 @@ describe('Task', () => { expect(intents[0].tokensOut[0].token).to.be.equal(underlyingToken) expect(intents[0].tokensOut[0].minAmount).to.be.equal('10780000') // balance_in_usdc * (1 - slippage) = 11 * 0.98 = 10.78 expect(intents[0].tokensOut[0].recipient).to.be.equal(inputs.recipient) + + expect(result.logs).to.have.lengthOf(2) + expect(result.logs[0]).to.be.equal('[Info] Recipient underlying balance in USD: 9') + expect(result.logs[1]).to.be.equal('[Info] Min amount out: 10.78 USDC') }) }) @@ -153,8 +174,13 @@ describe('Task', () => { const calls = buildCalls(recipientBalance, userBalance) it('does not produce any intent', async () => { - const intents = await runTask(taskDir, context, { inputs, calls, prices }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty + + expect(result.logs).to.have.lengthOf(2) + expect(result.logs[0]).to.be.equal('[Info] Recipient underlying balance in USD: 9') + expect(result.logs[1]).to.be.equal('[Info] Sender balance not enough') }) }) }) @@ -164,8 +190,13 @@ describe('Task', () => { const calls = buildCalls(recipientBalance, '0') // `userBalance` does not matter it('does not produce any intent', async () => { - const intents = await runTask(taskDir, context, { inputs, calls, prices }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty + + expect(result.logs).to.have.lengthOf(2) + expect(result.logs[0]).to.be.equal('[Info] Recipient underlying balance in USD: 11') + expect(result.logs[1]).to.be.equal('[Info] Recipient threshold not met') }) }) }) diff --git a/examples/7-withdraw-from-aave-swap-and-transfer/package.json b/examples/7-withdraw-from-aave-swap-and-transfer/package.json index 5b4363a..a8a77f7 100644 --- a/examples/7-withdraw-from-aave-swap-and-transfer/package.json +++ b/examples/7-withdraw-from-aave-swap-and-transfer/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/7-withdraw-from-aave-swap-and-transfer/src/task.ts b/examples/7-withdraw-from-aave-swap-and-transfer/src/task.ts index a5da5cf..ee4a3fc 100644 --- a/examples/7-withdraw-from-aave-swap-and-transfer/src/task.ts +++ b/examples/7-withdraw-from-aave-swap-and-transfer/src/task.ts @@ -6,9 +6,9 @@ import { ListType, Optimism, SwapBuilder, + SwapTokenIn, + SwapTokenOut, TokenAmount, - TokenIn, - TokenOut, TransferBuilder, TransferData, USD, @@ -63,8 +63,8 @@ export default function main(): void { // Swap USDC for aUSDC in user EOA const minAmount = usdcUser.amount.times(BigInt.fromI32(97)).div(BigInt.fromI32(100)) SwapBuilder.forChain(chainId) - .addTokenIn(new TokenIn(USDC.address, usdcUser.amount)) - .addTokenOut(new TokenOut(aUSDC.address, minAmount, context.user)) + .addTokenIn(new SwapTokenIn(USDC.address, usdcUser.amount)) + .addTokenOut(new SwapTokenOut(aUSDC.address, minAmount, context.user)) .build() .send() } diff --git a/examples/7-withdraw-from-aave-swap-and-transfer/tests/task.spec.ts b/examples/7-withdraw-from-aave-swap-and-transfer/tests/task.spec.ts index c3504ca..45f5344 100644 --- a/examples/7-withdraw-from-aave-swap-and-transfer/tests/task.spec.ts +++ b/examples/7-withdraw-from-aave-swap-and-transfer/tests/task.spec.ts @@ -1,3 +1,4 @@ +import { Chains, OpType } from '@mimicprotocol/sdk' import { Call, Context, @@ -11,9 +12,9 @@ import { import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' - const chainId = 10 // Optimism + const chainId = Chains.Optimism const tokens = { aUSDC: '0x625e7708f30ca75bfd92586e17077590c60eb4cd', @@ -35,7 +36,7 @@ describe('Task', () => { const calls: ContractCallMock[] = [ { - request: { to: tokens.USDT, chainId, data: '0x313ce567' }, // `decimals` fn selector + request: { to: tokens.USDT, chainId, fnSelector: '0x313ce567' }, // `decimals` response: { value: '6', abiType: 'uint8' }, }, ] @@ -74,7 +75,7 @@ describe('Task', () => { }, response: [ { - timestamp: Date.now(), + timestamp: context.timestamp!, balances: [{ token: { address: tokens.aUSDC, chainId }, balance: aUsdcSmartAccountBalance }], }, ], @@ -92,7 +93,7 @@ describe('Task', () => { }, response: [ { - timestamp: Date.now(), + timestamp: context.timestamp!, balances: [ { token: { address: tokens.USDC, chainId }, balance: usdcUserBalance }, { token: { address: tokens.aUSDC, chainId }, balance: aUsdcUserBalance }, @@ -110,11 +111,11 @@ describe('Task', () => { }) it('produces claim, swap, and transfer', async () => { - const intents = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) + const result = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) - const claimIntent = intents.find((i) => i.type === 'transfer') - const swapIntent = intents.find((i) => i.type === 'swap') - const transferIntent = intents.find((i) => i.type === 'call') + const claimIntent = result.intents.find((i) => i.op === OpType.EvmCall) + const swapIntent = result.intents.find((i) => i.op === OpType.Swap) + const transferIntent = result.intents.find((i) => i.op === OpType.Transfer) expect(claimIntent).to.exist expect(swapIntent).to.exist @@ -131,10 +132,14 @@ describe('Task', () => { }) it('only produces a claim intent', async () => { - const intents = (await runTask(taskDir, context, { inputs, relevantTokens, prices, calls })) as Call[] + const result = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Call[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.equal('call') + expect(intents[0].op).to.equal(OpType.EvmCall) expect(intents[0].user).to.equal(inputs.smartAccount) }) }) @@ -148,10 +153,14 @@ describe('Task', () => { }) it('only produces a swap intent', async () => { - const intents = (await runTask(taskDir, context, { inputs, relevantTokens, prices, calls })) as Swap[] + const result = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Swap[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.equal('swap') + expect(intents[0].op).to.equal(OpType.Swap) expect(intents[0].user).to.equal(context.user) expect(intents[0].tokensIn[0].token).to.equal(tokens.USDC) expect(intents[0].tokensIn[0].amount).to.equal(amount) @@ -168,10 +177,14 @@ describe('Task', () => { }) it('only produces a transfer intent', async () => { - const intents = (await runTask(taskDir, context, { inputs, prices, relevantTokens, calls })) as Transfer[] + const result = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Transfer[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.equal('transfer') + expect(intents[0].op).to.equal(OpType.Transfer) expect(intents[0].transfers[0].recipient).to.equal(inputs.smartAccount) expect(intents[0].transfers[0].amount).to.equal(amount) expect(intents[0].user).to.equal(context.user) @@ -186,8 +199,9 @@ describe('Task', () => { }) it('does not produce any intents', async () => { - const intents = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs, relevantTokens, prices, calls }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty }) }) }) diff --git a/examples/8-rebalancing-tokens/package.json b/examples/8-rebalancing-tokens/package.json index 0b1d4c1..f3f50d6 100644 --- a/examples/8-rebalancing-tokens/package.json +++ b/examples/8-rebalancing-tokens/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/8-rebalancing-tokens/tests/task.spec.ts b/examples/8-rebalancing-tokens/tests/task.spec.ts index 06b3b31..935b12a 100644 --- a/examples/8-rebalancing-tokens/tests/task.spec.ts +++ b/examples/8-rebalancing-tokens/tests/task.spec.ts @@ -1,8 +1,9 @@ -import { ContractCall, runTask, Swap } from '@mimicprotocol/test-ts' +import { OpType } from '@mimicprotocol/sdk' +import { ContractCallMock, runTask, Swap } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -25,16 +26,40 @@ describe('Task', () => { slippageBps: 50, // 0.50% } - const buildErc20Calls = (balanceWBTC: string, balanceWETH: string, balanceDAI: string): ContractCall[] => [ + const buildErc20Calls = (balanceWBTC: string, balanceWETH: string, balanceDAI: string): ContractCallMock[] => [ // WBTC - { request: { to: WBTC, chainId: 10, data: '0x70a08231' }, response: { value: balanceWBTC, abiType: 'uint256' } }, // balanceOf(user) - { request: { to: WBTC, chainId: 10, data: '0x313ce567' }, response: { value: '8', abiType: 'uint8' } }, // decimals + { + request: { + to: WBTC, + chainId: 10, + fnSelector: '0x70a08231', // balanceOf + params: [{ value: context.user, abiType: 'address' }], + }, + response: { value: balanceWBTC, abiType: 'uint256' }, + }, + { request: { to: WBTC, chainId: 10, fnSelector: '0x313ce567' }, response: { value: '8', abiType: 'uint8' } }, // decimals // WETH - { request: { to: WETH, chainId: 10, data: '0x70a08231' }, response: { value: balanceWETH, abiType: 'uint256' } }, - { request: { to: WETH, chainId: 10, data: '0x313ce567' }, response: { value: '18', abiType: 'uint8' } }, + { + request: { + to: WETH, + chainId: 10, + fnSelector: '0x70a08231', + params: [{ value: context.user, abiType: 'address' }], + }, + response: { value: balanceWETH, abiType: 'uint256' }, + }, + { request: { to: WETH, chainId: 10, fnSelector: '0x313ce567' }, response: { value: '18', abiType: 'uint8' } }, // DAI - { request: { to: DAI, chainId: 10, data: '0x70a08231' }, response: { value: balanceDAI, abiType: 'uint256' } }, - { request: { to: DAI, chainId: 10, data: '0x313ce567' }, response: { value: '18', abiType: 'uint8' } }, + { + request: { + to: DAI, + chainId: 10, + fnSelector: '0x70a08231', + params: [{ value: context.user, abiType: 'address' }], + }, + response: { value: balanceDAI, abiType: 'uint256' }, + }, + { request: { to: DAI, chainId: 10, fnSelector: '0x313ce567' }, response: { value: '18', abiType: 'uint8' } }, ] describe('when there are some balances', () => { @@ -62,12 +87,16 @@ describe('Task', () => { ) it('emits two swap intents with correct legs and slippage protections', async () => { - const intents = (await runTask(taskDir, context, { inputs, calls, prices })) as Swap[] + const result = await runTask(taskDir, context, { inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Swap[] expect(intents).to.have.lengthOf(2) // ---- First swap: ETH -> BTC ($8,500) ---- const firstSwap = intents[0] - expect(firstSwap.type).to.equal('swap') + expect(firstSwap.op).to.equal(OpType.Swap) expect(firstSwap.settler).to.equal(context.settlers[0].address) expect(firstSwap.user).to.equal(context.user) expect(firstSwap.sourceChain).to.equal(inputs.chainId) @@ -84,7 +113,7 @@ describe('Task', () => { // ---- Second swap: ETH -> DAI ($17,600) ---- const secondSwap = intents[1] - expect(secondSwap.type).to.equal('swap') + expect(secondSwap.op).to.equal(OpType.Swap) expect(secondSwap.settler).to.equal(context.settlers[0].address) expect(secondSwap.user).to.equal(context.user) expect(secondSwap.sourceChain).to.equal(inputs.chainId) @@ -98,6 +127,9 @@ describe('Task', () => { expect(secondSwap.tokensOut[0].token).to.equal(DAI) expect(secondSwap.tokensOut[0].minAmount).to.equal('17512000000000000000000') // 17,512 DAI (18d) expect(secondSwap.tokensOut[0].recipient).to.equal(context.user) + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.be.equal('[Info] Rebalance executed') }) }) @@ -114,8 +146,12 @@ describe('Task', () => { ) it('does not produce any intents', async () => { - const intents = await runTask(taskDir, context, { inputs: inputs, calls, prices }) - expect(intents).to.be.empty + const result = await runTask(taskDir, context, { inputs: inputs, calls, prices }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.be.equal('[Info] No rebalance needed (target ratios matched)') }) }) }) @@ -124,8 +160,12 @@ describe('Task', () => { const calls = buildErc20Calls('0', '0', '0') it('does not produce any intents', async () => { - const intents = await runTask(taskDir, context, { inputs: inputs, calls: calls, prices: [] }) - expect(intents).to.be.an('array').that.is.empty + const result = await runTask(taskDir, context, { inputs: inputs, calls: calls, prices: [] }) + expect(result.success).to.be.true + expect(result.intents).to.be.empty + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.be.equal('[Info] No rebalance needed (total USD is zero)') }) }) }) diff --git a/examples/9-subgraph-query/package.json b/examples/9-subgraph-query/package.json index 269c0c8..f54f36c 100644 --- a/examples/9-subgraph-query/package.json +++ b/examples/9-subgraph-query/package.json @@ -14,6 +14,7 @@ "devDependencies": { "@mimicprotocol/cli": "latest", "@mimicprotocol/lib-ts": "latest", + "@mimicprotocol/sdk": "latest", "@mimicprotocol/test-ts": "latest", "@types/chai": "^5.2.2", "@types/mocha": "^10.0.10", diff --git a/examples/9-subgraph-query/tests/task.spec.ts b/examples/9-subgraph-query/tests/task.spec.ts index 030d34b..549bda6 100644 --- a/examples/9-subgraph-query/tests/task.spec.ts +++ b/examples/9-subgraph-query/tests/task.spec.ts @@ -1,8 +1,9 @@ +import { OpType } from '@mimicprotocol/sdk' import { Context, ContractCallMock, runTask, SubgraphQueryMock, Swap } from '@mimicprotocol/test-ts' import { expect } from 'chai' describe('Task', () => { - const taskDir = './' + const taskDir = './build' const context: Context = { user: '0x756f45e3fa69347a9a973a725e3c98bc4db0b5a0', @@ -21,6 +22,7 @@ describe('Task', () => { const subgraphQueries: SubgraphQueryMock[] = [ { request: { + timestamp: context.timestamp!, chainId: inputs.chainId, subgraphId: inputs.subgraphId, query: ` @@ -43,7 +45,8 @@ describe('Task', () => { request: { to: inputs.tokenIn, chainId: inputs.chainId, - data: '0x70a08231', // `balanceOf` fn selector + fnSelector: '0x70a08231', // `balanceOf` + params: [{ value: context.user!, abiType: 'address' }], }, response: { value: balance, @@ -54,7 +57,7 @@ describe('Task', () => { request: { to: inputs.tokenIn, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '6', @@ -65,7 +68,7 @@ describe('Task', () => { request: { to: inputs.tokenOut, chainId: inputs.chainId, - data: '0x313ce567', // `decimals` fn selector + fnSelector: '0x313ce567', // `decimals` }, response: { value: '18', @@ -79,10 +82,14 @@ describe('Task', () => { const calls = buildCalls(balance) it('produces the expected intents', async () => { - const intents = (await runTask(taskDir, context, { inputs, calls, subgraphQueries })) as Swap[] + const result = await runTask(taskDir, context, { inputs, calls, subgraphQueries }) + expect(result.success).to.be.true + expect(result.timestamp).to.be.equal(context.timestamp) + + const intents = result.intents as Swap[] expect(intents).to.have.lengthOf(1) - expect(intents[0].type).to.be.equal('swap') + expect(intents[0].op).to.equal(OpType.Swap) expect(intents[0].settler).to.be.equal(context.settlers?.[0].address) expect(intents[0].user).to.be.equal(context.user) expect(intents[0].sourceChain).to.be.equal(inputs.chainId) @@ -103,13 +110,12 @@ describe('Task', () => { const balance = '0' const calls = buildCalls(balance) - it('does not produce any intent', async () => { - try { - await runTask(taskDir, context, { inputs, calls, subgraphQueries }) - fail() - } catch (error) { - expect(error.message).to.include('No amount in to swap') - } + it('throws an error', async () => { + const result = await runTask(taskDir, context, { inputs, calls, subgraphQueries }) + expect(result.success).to.be.false + + expect(result.logs).to.have.lengthOf(1) + expect(result.logs[0]).to.include('No amount in to swap') }) }) }) diff --git a/yarn.lock b/yarn.lock index 2a2da55..fbc6712 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,166 +7,173 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== -"@esbuild/aix-ppc64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz#a1414903bb38027382f85f03dda6065056757727" - integrity sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA== - -"@esbuild/android-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz#c859994089e9767224269884061f89dae6fb51c6" - integrity sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w== - -"@esbuild/android-arm@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.8.tgz#96a8f2ca91c6cd29ea90b1af79d83761c8ba0059" - integrity sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw== - -"@esbuild/android-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.8.tgz#a3a626c4fec4a024a9fa8c7679c39996e92916f0" - integrity sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA== - -"@esbuild/darwin-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz#a5e1252ca2983d566af1c0ea39aded65736fc66d" - integrity sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw== - -"@esbuild/darwin-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz#5271b0df2bb12ce8df886704bfdd1c7cc01385d2" - integrity sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg== - -"@esbuild/freebsd-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz#d0a0e7fdf19733b8bb1566b81df1aa0bb7e46ada" - integrity sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA== - -"@esbuild/freebsd-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz#2de8b2e0899d08f1cb1ef3128e159616e7e85343" - integrity sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw== - -"@esbuild/linux-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz#a4209efadc0c2975716458484a4e90c237c48ae9" - integrity sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w== - -"@esbuild/linux-arm@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz#ccd9e291c24cd8d9142d819d463e2e7200d25b19" - integrity sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg== - -"@esbuild/linux-ia32@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz#006ad1536d0c2b28fb3a1cf0b53bcb85aaf92c4d" - integrity sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg== - -"@esbuild/linux-loong64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz#127b3fbfb2c2e08b1397e985932f718f09a8f5c4" - integrity sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ== - -"@esbuild/linux-mips64el@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz#837d1449517791e3fa7d82675a2d06d9f56cb340" - integrity sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw== - -"@esbuild/linux-ppc64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz#aa2e3bd93ab8df084212f1895ca4b03c42d9e0fe" - integrity sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ== - -"@esbuild/linux-riscv64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz#a340620e31093fef72767dd28ab04214b3442083" - integrity sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg== - -"@esbuild/linux-s390x@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz#ddfed266c8c13f5efb3105a0cd47f6dcd0e79e71" - integrity sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg== - -"@esbuild/linux-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz#9a4f78c75c051e8c060183ebb39a269ba936a2ac" - integrity sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ== - -"@esbuild/netbsd-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz#902c80e1d678047926387230bc037e63e00697d0" - integrity sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw== - -"@esbuild/netbsd-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz#2d9eb4692add2681ff05a14ce99de54fbed7079c" - integrity sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg== - -"@esbuild/openbsd-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz#89c3b998c6de739db38ab7fb71a8a76b3fa84a45" - integrity sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ== - -"@esbuild/openbsd-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz#2f01615cf472b0e48c077045cfd96b5c149365cc" - integrity sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ== - -"@esbuild/openharmony-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz#a201f720cd2c3ebf9a6033fcc3feb069a54b509a" - integrity sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg== - -"@esbuild/sunos-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz#07046c977985a3334667f19e6ab3a01a80862afb" - integrity sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w== - -"@esbuild/win32-arm64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz#4a5470caf0d16127c05d4833d4934213c69392d1" - integrity sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ== - -"@esbuild/win32-ia32@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz#3de3e8470b7b328d99dbc3e9ec1eace207e5bbc4" - integrity sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg== - -"@esbuild/win32-x64@0.25.8": - version "0.25.8" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz#610d7ea539d2fcdbe39237b5cc175eb2c4451f9c" - integrity sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" - integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== +"@babel/runtime@^7.25.0": + version "7.28.4" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326" + integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ== + +"@esbuild/aix-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" + integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA== + +"@esbuild/android-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752" + integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg== + +"@esbuild/android-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a" + integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg== + +"@esbuild/android-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16" + integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg== + +"@esbuild/darwin-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" + integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== + +"@esbuild/darwin-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e" + integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA== + +"@esbuild/freebsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe" + integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg== + +"@esbuild/freebsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3" + integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ== + +"@esbuild/linux-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977" + integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ== + +"@esbuild/linux-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9" + integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw== + +"@esbuild/linux-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0" + integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA== + +"@esbuild/linux-loong64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0" + integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng== + +"@esbuild/linux-mips64el@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd" + integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw== + +"@esbuild/linux-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869" + integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA== + +"@esbuild/linux-riscv64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6" + integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w== + +"@esbuild/linux-s390x@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663" + integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg== + +"@esbuild/linux-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306" + integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== + +"@esbuild/netbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4" + integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg== + +"@esbuild/netbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076" + integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ== + +"@esbuild/openbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd" + integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A== + +"@esbuild/openbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679" + integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw== + +"@esbuild/openharmony-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d" + integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg== + +"@esbuild/sunos-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6" + integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w== + +"@esbuild/win32-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323" + integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg== + +"@esbuild/win32-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267" + integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ== + +"@esbuild/win32-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" + integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0", "@eslint-community/eslint-utils@^4.8.0": + version "4.9.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz#7308df158e064f0dd8b8fdb58aa14fa2a7f913b3" + integrity sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g== dependencies: eslint-visitor-keys "^3.4.3" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + version "4.12.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#bccdf615bcf7b6e8db830ec0b8d21c9a25de597b" + integrity sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew== -"@eslint/config-array@^0.21.0": - version "0.21.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.0.tgz#abdbcbd16b124c638081766392a4d6b509f72636" - integrity sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ== +"@eslint/config-array@^0.21.1": + version "0.21.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.21.1.tgz#7d1b0060fea407f8301e932492ba8c18aff29713" + integrity sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA== dependencies: - "@eslint/object-schema" "^2.1.6" + "@eslint/object-schema" "^2.1.7" debug "^4.3.1" minimatch "^3.1.2" -"@eslint/config-helpers@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.3.0.tgz#3e09a90dfb87e0005c7694791e58e97077271286" - integrity sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw== +"@eslint/config-helpers@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.4.2.tgz#1bd006ceeb7e2e55b2b773ab318d300e1a66aeda" + integrity sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw== + dependencies: + "@eslint/core" "^0.17.0" -"@eslint/core@^0.15.0", "@eslint/core@^0.15.1": - version "0.15.1" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.1.tgz#d530d44209cbfe2f82ef86d6ba08760196dd3b60" - integrity sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA== +"@eslint/core@^0.17.0": + version "0.17.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.17.0.tgz#77225820413d9617509da9342190a2019e78761c" + integrity sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ== dependencies: "@types/json-schema" "^7.0.15" @@ -185,22 +192,22 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.32.0": - version "9.32.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.32.0.tgz#a02916f58bd587ea276876cb051b579a3d75d091" - integrity sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg== +"@eslint/js@9.39.1": + version "9.39.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.39.1.tgz#0dd59c3a9f40e3f1882975c321470969243e0164" + integrity sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw== -"@eslint/object-schema@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" - integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== +"@eslint/object-schema@^2.1.7": + version "2.1.7" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.7.tgz#6e2126a1347e86a4dedf8706ec67ff8e107ebbad" + integrity sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA== -"@eslint/plugin-kit@^0.3.4": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz#c6b9f165e94bf4d9fdd493f1c028a94aaf5fc1cc" - integrity sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw== +"@eslint/plugin-kit@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz#9779e3fd9b7ee33571a57435cf4335a1794a6cb2" + integrity sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA== dependencies: - "@eslint/core" "^0.15.1" + "@eslint/core" "^0.17.0" levn "^0.4.1" "@humanfs/core@^0.19.1": @@ -209,190 +216,274 @@ integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== "@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== + version "0.16.7" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.7.tgz#822cb7b3a12c5a240a24f621b5a2413e27a45f26" + integrity sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ== dependencies: "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" + "@humanwhocodes/retry" "^0.4.0" "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== - -"@humanwhocodes/retry@^0.4.2": +"@humanwhocodes/retry@^0.4.0", "@humanwhocodes/retry@^0.4.2": version "0.4.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== -"@inquirer/checkbox@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-4.2.0.tgz#84101e167f8ae5853c6b1f8c0aacf74c1969aef5" - integrity sha512-fdSw07FLJEU5vbpOPzXo5c6xmMGDzbZE2+niuDHX5N6mc6V0Ebso/q3xiHra4D73+PMsC8MJmcaZKuAAoaQsSA== - dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/figures" "^1.0.13" - "@inquirer/type" "^3.0.8" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" - -"@inquirer/confirm@^5.1.14": - version "5.1.14" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.14.tgz#e6321edf51a3a5f54dc548b80ef6ba89891351ad" - integrity sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q== - dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" +"@inquirer/ansi@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@inquirer/ansi/-/ansi-1.0.2.tgz#674a4c4d81ad460695cb2a1fc69d78cd187f337e" + integrity sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ== -"@inquirer/core@^10.1.15": - version "10.1.15" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.15.tgz#8feb69fd536786181a2b6bfb84d8674faa9d2e59" - integrity sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA== - dependencies: - "@inquirer/figures" "^1.0.13" - "@inquirer/type" "^3.0.8" - ansi-escapes "^4.3.2" +"@inquirer/checkbox@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-4.3.1.tgz#92835525f0c69684a5b20c8e0c78ae3c91ed46f1" + integrity sha512-rOcLotrptYIy59SGQhKlU0xBg1vvcVl2FdPIEclUvKHh0wo12OfGkId/01PIMJ/V+EimJ77t085YabgnQHBa5A== + dependencies: + "@inquirer/ansi" "^1.0.2" + "@inquirer/core" "^10.3.1" + "@inquirer/figures" "^1.0.15" + "@inquirer/type" "^3.0.10" + yoctocolors-cjs "^2.1.3" + +"@inquirer/confirm@^5.1.20": + version "5.1.20" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.20.tgz#8e85662584f162b8b9f6a7c9edcb430fd79f56ad" + integrity sha512-HDGiWh2tyRZa0M1ZnEIUCQro25gW/mN8ODByicQrbR1yHx4hT+IOpozCMi5TgBtUdklLwRI2mv14eNpftDluEw== + dependencies: + "@inquirer/core" "^10.3.1" + "@inquirer/type" "^3.0.10" + +"@inquirer/core@^10.3.1": + version "10.3.1" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.3.1.tgz#09bba1c6e0c45cfd3975c0c85c784c61b916baa8" + integrity sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w== + dependencies: + "@inquirer/ansi" "^1.0.2" + "@inquirer/figures" "^1.0.15" + "@inquirer/type" "^3.0.10" cli-width "^4.1.0" - mute-stream "^2.0.0" + mute-stream "^3.0.0" signal-exit "^4.1.0" wrap-ansi "^6.2.0" - yoctocolors-cjs "^2.1.2" + yoctocolors-cjs "^2.1.3" -"@inquirer/editor@^4.2.15": - version "4.2.15" - resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-4.2.15.tgz#9ea2cbceca009a0de9e281c8a2e24752b5063809" - integrity sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ== +"@inquirer/editor@^4.2.22": + version "4.2.22" + resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-4.2.22.tgz#5e5e44121e353c903c54601c5fb9177d585a2de0" + integrity sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A== dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" - external-editor "^3.1.0" + "@inquirer/core" "^10.3.1" + "@inquirer/external-editor" "^1.0.3" + "@inquirer/type" "^3.0.10" -"@inquirer/expand@^4.0.17": - version "4.0.17" - resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-4.0.17.tgz#b688f4a1a65daf2bf77a11de7734766769cce343" - integrity sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw== +"@inquirer/expand@^4.0.22": + version "4.0.22" + resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-4.0.22.tgz#9780de797eac3592c7a1801d0296b1c577d62b70" + integrity sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q== dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" - yoctocolors-cjs "^2.1.2" - -"@inquirer/figures@^1.0.13": - version "1.0.13" - resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.13.tgz#ad0afd62baab1c23175115a9b62f511b6a751e45" - integrity sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw== + "@inquirer/core" "^10.3.1" + "@inquirer/type" "^3.0.10" + yoctocolors-cjs "^2.1.3" -"@inquirer/input@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-4.2.1.tgz#c174654eb1ab34dfd42a9cf6095a7e735a4db130" - integrity sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow== +"@inquirer/external-editor@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@inquirer/external-editor/-/external-editor-1.0.3.tgz#c23988291ee676290fdab3fd306e64010a6d13b8" + integrity sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA== dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" + chardet "^2.1.1" + iconv-lite "^0.7.0" -"@inquirer/number@^3.0.17": - version "3.0.17" - resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-3.0.17.tgz#32a66136ce35cad9f40ceb5f82a8cfac4f306517" - integrity sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg== - dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" +"@inquirer/figures@^1.0.15": + version "1.0.15" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.15.tgz#dbb49ed80df11df74268023b496ac5d9acd22b3a" + integrity sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g== -"@inquirer/password@^4.0.17": - version "4.0.17" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-4.0.17.tgz#45480c8ace688ebf071e350536ea746792b3eeba" - integrity sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA== +"@inquirer/input@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-4.3.0.tgz#e31ad67f7f625063a3a6c562075b9feab1afeaa6" + integrity sha512-h4fgse5zeGsBSW3cRQqu9a99OXRdRsNCvHoBqVmz40cjYjYFzcfwD0KA96BHIPlT7rZw0IpiefQIqXrjbzjS4Q== + dependencies: + "@inquirer/core" "^10.3.1" + "@inquirer/type" "^3.0.10" + +"@inquirer/number@^3.0.22": + version "3.0.22" + resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-3.0.22.tgz#1bd82227990fb24af71d87e3f2b3af35206193bd" + integrity sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg== + dependencies: + "@inquirer/core" "^10.3.1" + "@inquirer/type" "^3.0.10" + +"@inquirer/password@^4.0.22": + version "4.0.22" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-4.0.22.tgz#dcf01f7b60d21bc4c2c067fc6e736335223467a6" + integrity sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g== + dependencies: + "@inquirer/ansi" "^1.0.2" + "@inquirer/core" "^10.3.1" + "@inquirer/type" "^3.0.10" + +"@inquirer/prompts@^7.2.4", "@inquirer/prompts@^7.9.0": + version "7.10.0" + resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-7.10.0.tgz#5d9e00b562e335b732c2f682a066d2529ecb6902" + integrity sha512-X2HAjY9BClfFkJ2RP3iIiFxlct5JJVdaYYXhA7RKxsbc9KL+VbId79PSoUGH/OLS011NFbHHDMDcBKUj3T89+Q== + dependencies: + "@inquirer/checkbox" "^4.3.1" + "@inquirer/confirm" "^5.1.20" + "@inquirer/editor" "^4.2.22" + "@inquirer/expand" "^4.0.22" + "@inquirer/input" "^4.3.0" + "@inquirer/number" "^3.0.22" + "@inquirer/password" "^4.0.22" + "@inquirer/rawlist" "^4.1.10" + "@inquirer/search" "^3.2.1" + "@inquirer/select" "^4.4.1" + +"@inquirer/rawlist@^4.1.10": + version "4.1.10" + resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-4.1.10.tgz#e0f00098297b0770d22f84b7826ba782b51de1e9" + integrity sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw== + dependencies: + "@inquirer/core" "^10.3.1" + "@inquirer/type" "^3.0.10" + yoctocolors-cjs "^2.1.3" + +"@inquirer/search@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-3.2.1.tgz#e3e8c4ef893f1de05ef7b1930432f5bd9a08b545" + integrity sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA== + dependencies: + "@inquirer/core" "^10.3.1" + "@inquirer/figures" "^1.0.15" + "@inquirer/type" "^3.0.10" + yoctocolors-cjs "^2.1.3" + +"@inquirer/select@^4.4.1": + version "4.4.1" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-4.4.1.tgz#0d047b764cfe91b68c6a208da1b96abc8017db6c" + integrity sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q== dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" - ansi-escapes "^4.3.2" + "@inquirer/ansi" "^1.0.2" + "@inquirer/core" "^10.3.1" + "@inquirer/figures" "^1.0.15" + "@inquirer/type" "^3.0.10" + yoctocolors-cjs "^2.1.3" -"@inquirer/prompts@^7.2.4", "@inquirer/prompts@^7.7.1": - version "7.8.0" - resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-7.8.0.tgz#0bac9315e3ecd09ae21d1598b1c0df39a8b4a720" - integrity sha512-JHwGbQ6wjf1dxxnalDYpZwZxUEosT+6CPGD9Zh4sm9WXdtUp9XODCQD3NjSTmu+0OAyxWXNOqf0spjIymJa2Tw== - dependencies: - "@inquirer/checkbox" "^4.2.0" - "@inquirer/confirm" "^5.1.14" - "@inquirer/editor" "^4.2.15" - "@inquirer/expand" "^4.0.17" - "@inquirer/input" "^4.2.1" - "@inquirer/number" "^3.0.17" - "@inquirer/password" "^4.0.17" - "@inquirer/rawlist" "^4.1.5" - "@inquirer/search" "^3.1.0" - "@inquirer/select" "^4.3.1" - -"@inquirer/rawlist@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-4.1.5.tgz#e3664e3da3fba93f34ee25813faa7957aa717991" - integrity sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA== - dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/type" "^3.0.8" - yoctocolors-cjs "^2.1.2" - -"@inquirer/search@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-3.1.0.tgz#22f1373938eef7b98c3c30f604aac8fbe9baf27a" - integrity sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q== - dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/figures" "^1.0.13" - "@inquirer/type" "^3.0.8" - yoctocolors-cjs "^2.1.2" +"@inquirer/type@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.10.tgz#11ed564ec78432a200ea2601a212d24af8150d50" + integrity sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA== -"@inquirer/select@^4.3.1": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-4.3.1.tgz#b49e76dab47f7c729e4e1e520fedc268e5b88cdc" - integrity sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA== +"@kwsites/file-exists@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" + integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== dependencies: - "@inquirer/core" "^10.1.15" - "@inquirer/figures" "^1.0.13" - "@inquirer/type" "^3.0.8" - ansi-escapes "^4.3.2" - yoctocolors-cjs "^2.1.2" + debug "^4.1.1" -"@inquirer/type@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.8.tgz#efc293ba0ed91e90e6267f1aacc1c70d20b8b4e8" - integrity sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw== +"@kwsites/promise-deferred@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" + integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== "@mimicprotocol/cli@latest": - version "0.0.1-rc.21" - resolved "https://registry.yarnpkg.com/@mimicprotocol/cli/-/cli-0.0.1-rc.21.tgz#2a898c2fe30c5cd44502506234572fefa0c454a9" - integrity sha512-QXyOKyNQXLLFIp7pdsKuhtMmtEeBneNuuT6oS6m8sgT4dSQBtzxAuHqCqDLROJtR9NICybh6Cjukpqkw/3UMXQ== + version "0.0.1-rc.26" + resolved "https://registry.yarnpkg.com/@mimicprotocol/cli/-/cli-0.0.1-rc.26.tgz#12bc896c077dea11e435acc12c93556bf662365b" + integrity sha512-L6VYi9JBE2KOojVaZ3iA+RPX/+gI0MmZet0C9bikd1w8Bdh0dhbDotKPQ29S5SWNBedIreIDJk6x4iKeIzb9iw== dependencies: "@inquirer/prompts" "^7.2.4" "@oclif/core" "^4.2.2" "@oclif/plugin-not-found" "^3.2.38" axios "^1.7.9" + cross-spawn "^7.0.6" ethers "^6.13.5" form-data "^4.0.1" js-yaml "^4.1.0" lodash "^4.17.21" + simple-git "^3.30.0" zod "^3.24.1" "@mimicprotocol/lib-ts@latest": - version "0.0.1-rc.21" - resolved "https://registry.yarnpkg.com/@mimicprotocol/lib-ts/-/lib-ts-0.0.1-rc.21.tgz#11114c3d359199c0c84524e78ec33eed922892e5" - integrity sha512-EueyYbNVg+0SoZBvCPUb682OmyZprfiosQQjFzBIY3QQfGojdgab1jG0G2P5Fhgp2owXjuzGlfCrePJ3zwFP3Q== + version "0.0.1-rc.26" + resolved "https://registry.yarnpkg.com/@mimicprotocol/lib-ts/-/lib-ts-0.0.1-rc.26.tgz#fcfe563893a67f47b75f968901fc2d9ff7885f39" + integrity sha512-A1R7DBcsJJ7rvBXXInt/1lkPc1fkCmef16gNFRjGS9lMuZNedm0MMUuUtiNEqcukTnp2t/czlz65LtqDeESS1Q== dependencies: as-base58 "^0.1.1" eslint-config-mimic "^0.0.3" json-as "1.1.7" visitor-as "0.11.4" +"@mimicprotocol/runner-node-darwin-arm64@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-darwin-arm64/-/runner-node-darwin-arm64-0.0.1-rc.7.tgz#bc27f21690e2d773a893d6968db8ad959ca5868a" + integrity sha512-Jf9pgJlojWluqgZbdXXzaexYgd54SRkiAgn5ulTw/XbTTHdYhEDfWVONoOXpDjUWqjHKnJo7671VfczQiAaUgw== + +"@mimicprotocol/runner-node-darwin-x64@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-darwin-x64/-/runner-node-darwin-x64-0.0.1-rc.7.tgz#e628b954416b366c40cf6b42d8000d073b5c4ece" + integrity sha512-wq/6Z5hmtBdwhNKDYdXNPPxae5UaOwQaiwInpEWXBWvdV+aLjsKg8lWxamMdiExASAhIupr8S2k2y+8Pq+jUkQ== + +"@mimicprotocol/runner-node-linux-arm64-gnu@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-linux-arm64-gnu/-/runner-node-linux-arm64-gnu-0.0.1-rc.7.tgz#68013fb18140d3f39c27ef68a68d72eef4575c85" + integrity sha512-xbhB46BCvCETMwsBIWutBW70Hw5EU9h0rsioNshu9Uk2r0lkXa1Cwaxa2z+d6VzcY135jxiLsyvuLL1hBDPwFg== + +"@mimicprotocol/runner-node-linux-x64-gnu@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-linux-x64-gnu/-/runner-node-linux-x64-gnu-0.0.1-rc.7.tgz#002e327ddf629f1b8a67a2c361e58d70027b5b53" + integrity sha512-x8YWVBI6MXoBQge7MVZBoQBpqXXbOgJmvicwlNqAbl/CA1zo+kJjl6sUlX2jj2q+bTqXRK7TgO11jNdzhlHUzg== + +"@mimicprotocol/runner-node-linux-x64-musl@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-linux-x64-musl/-/runner-node-linux-x64-musl-0.0.1-rc.7.tgz#19be6629561663dd1bfae23cf0dc65a192fa917d" + integrity sha512-wjE4cHVxWv3yVF4u/RQ3MX/hYklWNT6EArZb9OJKtfjpLDLztM9kYcDdlmeIaiSyNMd1mfzMahHog31sTNY0OQ== + +"@mimicprotocol/runner-node-win32-arm64-msvc@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-win32-arm64-msvc/-/runner-node-win32-arm64-msvc-0.0.1-rc.7.tgz#9ea5b71d38f770587a4bf356819b142e078a5dce" + integrity sha512-aEX0b0qbD7Z6I3QbBWwcjXArVeWZovbJOf7YURbbgd8b8YRGGQ+FjkFM0NV8IT2q0GPy4P+RwX4SmysRPhjHNQ== + +"@mimicprotocol/runner-node-win32-x64-msvc@0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node-win32-x64-msvc/-/runner-node-win32-x64-msvc-0.0.1-rc.7.tgz#862f5c48dbe4e0fe7e527ee89cf244d86d7ab7e5" + integrity sha512-6hdRSwaxldmaPC2/SzKggkc3v4/18PNjBsnLW+gpw2aBQ8v4tXSXTbhhxfLUl3BAgzlq3BMkgdI+bH5o3ej3UQ== + +"@mimicprotocol/runner-node@^0.0.1-rc.7": + version "0.0.1-rc.7" + resolved "https://registry.yarnpkg.com/@mimicprotocol/runner-node/-/runner-node-0.0.1-rc.7.tgz#22fbd555dbfa0eea90dde59eea4ae283550d455a" + integrity sha512-n1rX2R2gYieO1O8Pa/iO3lUQ52xXyDwQEEEeiZhG1mZV3FuamfZDvd+zxSjiZkn1EcjfBycsPpPePj05um5Txw== + optionalDependencies: + "@mimicprotocol/runner-node-darwin-arm64" "0.0.1-rc.7" + "@mimicprotocol/runner-node-darwin-x64" "0.0.1-rc.7" + "@mimicprotocol/runner-node-linux-arm64-gnu" "0.0.1-rc.7" + "@mimicprotocol/runner-node-linux-x64-gnu" "0.0.1-rc.7" + "@mimicprotocol/runner-node-linux-x64-musl" "0.0.1-rc.7" + "@mimicprotocol/runner-node-win32-arm64-msvc" "0.0.1-rc.7" + "@mimicprotocol/runner-node-win32-x64-msvc" "0.0.1-rc.7" + +"@mimicprotocol/sdk@^0.0.1-rc.16", "@mimicprotocol/sdk@latest": + version "0.0.1-rc.20" + resolved "https://registry.yarnpkg.com/@mimicprotocol/sdk/-/sdk-0.0.1-rc.20.tgz#a2a29c53b17901c38c25e39304ddcf46a72058f2" + integrity sha512-Hdw9jvyVI3ox6SbY/AI22yi55gDlf1Qx33UHdN1jCR+IL350rHBKO2b+L2zvSYIH4mcJWhXAofREM4zwKuqVBw== + dependencies: + "@solana/web3.js" "^1.98.4" + borsh "^2.0.0" + cron-parser "^5.3.1" + ethers "^6.13.5" + zod "^3.23.8" + "@mimicprotocol/test-ts@latest": - version "0.0.1-rc.21" - resolved "https://registry.yarnpkg.com/@mimicprotocol/test-ts/-/test-ts-0.0.1-rc.21.tgz#c42bcd0718f1d6b202f386a42f4736f778b629c9" - integrity sha512-+vGVR6BVuWjdBgbJk6ZsRsXa6Rsd2qo736ooDn01xERvewMtQB2t6ovmE4E2dbCbtO4zjZSyJyH/2xlVrbF26A== + version "0.0.1-rc.27" + resolved "https://registry.yarnpkg.com/@mimicprotocol/test-ts/-/test-ts-0.0.1-rc.27.tgz#cbc4e4b92589b2ae1e635cea62e552f1d784b2f1" + integrity sha512-ML/rJ51gM7UQt14qrsFRa0CuTgfhLtHB4uqihaZFUsc/xuOV8ggVfvNnXfSxJwAxivb5vvDNBsmrEihhWTClDQ== dependencies: + "@mimicprotocol/runner-node" "^0.0.1-rc.7" + "@mimicprotocol/sdk" "^0.0.1-rc.16" + ethers "^6.15.0" zod "^3.24.1" "@noble/curves@1.2.0": @@ -402,11 +493,23 @@ dependencies: "@noble/hashes" "1.3.2" +"@noble/curves@^1.4.2": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/hashes@1.3.2": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.8.0", "@noble/hashes@^1.4.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -428,23 +531,23 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/core@^4.2.2", "@oclif/core@^4.5.2": - version "4.5.2" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.5.2.tgz#4db8a365fa7e9e33af272294f710a7f3f25538e2" - integrity sha512-eQcKyrEcDYeZJKu4vUWiu0ii/1Gfev6GF4FsLSgNez5/+aQyAUCjg3ZWlurf491WiYZTXCWyKAxyPWk8DKv2MA== +"@oclif/core@^4.2.2", "@oclif/core@^4.8.0": + version "4.8.0" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-4.8.0.tgz#bde8fad00019c8c0a8e27787b4b42c4670842785" + integrity sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw== dependencies: ansi-escapes "^4.3.2" ansis "^3.17.0" clean-stack "^3.0.1" cli-spinners "^2.9.2" - debug "^4.4.0" + debug "^4.4.3" ejs "^3.1.10" get-package-type "^0.1.0" indent-string "^4.0.0" is-wsl "^2.2.0" lilconfig "^3.1.3" minimatch "^9.0.5" - semver "^7.6.3" + semver "^7.7.3" string-width "^4.2.3" supports-color "^8" tinyglobby "^0.2.14" @@ -453,12 +556,12 @@ wrap-ansi "^7.0.0" "@oclif/plugin-not-found@^3.2.38": - version "3.2.62" - resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.62.tgz#10047ce522c5d6cee8ea3240627938f1f121b2dd" - integrity sha512-hwUdpeExF4ZhIf0mTeegnznpfSICOr4tnk8VZ6POmEcvNEhK8OtU/zbfCQbiGNa0Zjp1oMncD1Oxh585GHUSog== + version "3.2.72" + resolved "https://registry.yarnpkg.com/@oclif/plugin-not-found/-/plugin-not-found-3.2.72.tgz#8cce8c2bba0a9de05dfe0837cd38bfe93f4efbb7" + integrity sha512-CRcqHGdcEL4l5cls5F9FvwKt04LkdG7WyFozOu2vP1/3w34S29zbw8Tx1gAzfBZDDme5ChSaqFXU5qbTLx5yYQ== dependencies: - "@inquirer/prompts" "^7.7.1" - "@oclif/core" "^4.5.2" + "@inquirer/prompts" "^7.9.0" + "@oclif/core" "^4.8.0" ansis "^3.17.0" fast-levenshtein "^3.0.0" @@ -472,12 +575,78 @@ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== +"@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.3.0.tgz#6bf2bb565cb1ae880f8018635c92f751465d8695" + integrity sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw== + dependencies: + "@solana/errors" "2.3.0" + +"@solana/codecs-numbers@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.3.0.tgz#ac7e7f38aaf7fcd22ce2061fbdcd625e73828dc6" + integrity sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg== + dependencies: + "@solana/codecs-core" "2.3.0" + "@solana/errors" "2.3.0" + +"@solana/errors@2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.3.0.tgz#4ac9380343dbeffb9dffbcb77c28d0e457c5fa31" + integrity sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ== + dependencies: + chalk "^5.4.1" + commander "^14.0.0" + +"@solana/web3.js@^1.98.4": + version "1.98.4" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.98.4.tgz#df51d78be9d865181ec5138b4e699d48e6895bbe" + integrity sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + "@solana/codecs-numbers" "^2.1.0" + agentkeepalive "^4.5.0" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.17" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" + integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A== + dependencies: + tslib "^2.8.0" + "@types/chai@^5.2.2": - version "5.2.2" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.2.tgz#6f14cea18180ffc4416bc0fd12be05fdd73bdd6b" - integrity sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg== + version "5.2.3" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.3.tgz#8e9cd9e1c3581fa6b341a5aed5588eb285be0b4a" + integrity sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA== dependencies: "@types/deep-eql" "*" + assertion-error "^2.0.1" + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" "@types/deep-eql@*": version "4.0.2" @@ -504,6 +673,13 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== +"@types/node@*": + version "24.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.0.tgz#6b79086b0dfc54e775a34ba8114dcc4e0221f31f" + integrity sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A== + dependencies: + undici-types "~7.16.0" + "@types/node@22.7.5": version "22.7.5" resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" @@ -511,28 +687,52 @@ dependencies: undici-types "~6.19.2" +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + "@types/node@^22.10.5": - version "22.17.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.17.0.tgz#e8c9090e957bd4d9860efb323eb92d297347eac7" - integrity sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ== + version "22.19.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.19.0.tgz#849606ef3920850583a4e7ee0930987c35ad80be" + integrity sha512-xpr/lmLPQEj+TUnHmR+Ab91/glhJvsqcjB+yY0Ix9GO70H6Lb4FHH5GeqdOE5btAx7eIMwuHkp4H2MSkLcqWbA== dependencies: undici-types "~6.21.0" "@types/semver@^7.3.12": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" - integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== + version "7.7.1" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.1.tgz#3ce3af1a5524ef327d2da9e4fd8b6d95c8d70528" + integrity sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" "@typescript-eslint/eslint-plugin@^8.6.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz#6e5220d16f2691ab6d983c1737dd5b36e17641b7" - integrity sha512-CPoznzpuAnIOl4nhj4tRr4gIPj5AfKgkiJmGQDaq+fQnRJTYlcBjbX3wbciGmpoPf8DREufuPRe1tNMZnGdanA== + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz#005dc4eebcb27462f20de3afe888065f65cec100" + integrity sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.38.0" - "@typescript-eslint/type-utils" "8.38.0" - "@typescript-eslint/utils" "8.38.0" - "@typescript-eslint/visitor-keys" "8.38.0" + "@typescript-eslint/scope-manager" "8.46.4" + "@typescript-eslint/type-utils" "8.46.4" + "@typescript-eslint/utils" "8.46.4" + "@typescript-eslint/visitor-keys" "8.46.4" graphemer "^1.4.0" ignore "^7.0.0" natural-compare "^1.4.0" @@ -546,23 +746,23 @@ "@typescript-eslint/utils" "5.62.0" "@typescript-eslint/parser@^8.6.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.38.0.tgz#6723a5ea881e1777956b1045cba30be5ea838293" - integrity sha512-Zhy8HCvBUEfBECzIl1PKqF4p11+d0aUJS1GeUiuqK9WmOug8YCmC4h4bjyBvMyAMI9sbRczmrYL5lKg/YMbrcQ== - dependencies: - "@typescript-eslint/scope-manager" "8.38.0" - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/typescript-estree" "8.38.0" - "@typescript-eslint/visitor-keys" "8.38.0" + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.46.4.tgz#1a5bfd48be57bc07eec64e090ac46e89f47ade31" + integrity sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w== + dependencies: + "@typescript-eslint/scope-manager" "8.46.4" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/typescript-estree" "8.46.4" + "@typescript-eslint/visitor-keys" "8.46.4" debug "^4.3.4" -"@typescript-eslint/project-service@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.38.0.tgz#4900771f943163027fd7d2020a062892056b5e2f" - integrity sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg== +"@typescript-eslint/project-service@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.46.4.tgz#fa9872673b51fb57e5d5da034edbe17424ddd185" + integrity sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.38.0" - "@typescript-eslint/types" "^8.38.0" + "@typescript-eslint/tsconfig-utils" "^8.46.4" + "@typescript-eslint/types" "^8.46.4" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -573,27 +773,27 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz#5a0efcb5c9cf6e4121b58f87972f567c69529226" - integrity sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ== +"@typescript-eslint/scope-manager@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz#78c9b4856c0094def64ffa53ea955b46bec13304" + integrity sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA== dependencies: - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/visitor-keys" "8.38.0" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/visitor-keys" "8.46.4" -"@typescript-eslint/tsconfig-utils@8.38.0", "@typescript-eslint/tsconfig-utils@^8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0" - integrity sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ== +"@typescript-eslint/tsconfig-utils@8.46.4", "@typescript-eslint/tsconfig-utils@^8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz#989a338093b6b91b0552f1f51331d89ec6980382" + integrity sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A== -"@typescript-eslint/type-utils@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz#a56cd84765fa6ec135fe252b5db61e304403a85b" - integrity sha512-c7jAvGEZVf0ao2z+nnz8BUaHZD09Agbh+DY7qvBQqLiz8uJzRgVPj5YvOh8I8uEiH8oIUGIfHzMwUcGVco/SJg== +"@typescript-eslint/type-utils@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz#ae71b428a3c138b5084affe47893c129949171e0" + integrity sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ== dependencies: - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/typescript-estree" "8.38.0" - "@typescript-eslint/utils" "8.38.0" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/typescript-estree" "8.46.4" + "@typescript-eslint/utils" "8.46.4" debug "^4.3.4" ts-api-utils "^2.1.0" @@ -602,10 +802,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@8.38.0", "@typescript-eslint/types@^8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529" - integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== +"@typescript-eslint/types@8.46.4", "@typescript-eslint/types@^8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.46.4.tgz#38022bfda051be80e4120eeefcd2b6e3e630a69b" + integrity sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -620,15 +820,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df" - integrity sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ== +"@typescript-eslint/typescript-estree@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz#6a9eeab0da45bf400f22c818e0f47102a980ceaa" + integrity sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA== dependencies: - "@typescript-eslint/project-service" "8.38.0" - "@typescript-eslint/tsconfig-utils" "8.38.0" - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/visitor-keys" "8.38.0" + "@typescript-eslint/project-service" "8.46.4" + "@typescript-eslint/tsconfig-utils" "8.46.4" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/visitor-keys" "8.46.4" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -650,15 +850,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.38.0.tgz#5f10159899d30eb92ba70e642ca6f754bddbf15a" - integrity sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg== +"@typescript-eslint/utils@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.46.4.tgz#ea7878ddd625948cad4424dc2752b1be236556f5" + integrity sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg== dependencies: "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.38.0" - "@typescript-eslint/types" "8.38.0" - "@typescript-eslint/typescript-estree" "8.38.0" + "@typescript-eslint/scope-manager" "8.46.4" + "@typescript-eslint/types" "8.46.4" + "@typescript-eslint/typescript-estree" "8.46.4" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -668,12 +868,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@8.38.0": - version "8.38.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz#a9765a527b082cb8fc60fd8a16e47c7ad5b60ea5" - integrity sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g== +"@typescript-eslint/visitor-keys@8.46.4": + version "8.46.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz#07031bd8d3ca6474e121221dae1055daead888f1" + integrity sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw== dependencies: - "@typescript-eslint/types" "8.38.0" + "@typescript-eslint/types" "8.46.4" eslint-visitor-keys "^4.2.1" acorn-jsx@^5.3.2: @@ -691,6 +891,13 @@ aes-js@4.0.0-beta.5: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== +agentkeepalive@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -857,12 +1064,17 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assertion-error@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-2.0.1.tgz#f641a196b335690b1070bf00b6e7593fec190bf7" + integrity sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA== + async-function@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== -async@^3.2.3: +async@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== @@ -880,9 +1092,9 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axios@^1.7.9: - version "1.11.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6" - integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA== + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== dependencies: follow-redirects "^1.15.6" form-data "^4.0.4" @@ -893,6 +1105,18 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-x@^3.0.2: + version "3.0.11" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.11.tgz#40d80e2a1aeacba29792ccc6c5354806421287ff" + integrity sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + binary-extensions@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" @@ -903,6 +1127,25 @@ binaryen@116.0.0-nightly.20240114: resolved "https://registry.yarnpkg.com/binaryen/-/binaryen-116.0.0-nightly.20240114.tgz#ad8bfbde77d4cb4715b93997114eefc30f45155b" integrity sha512-0GZrojJnuhoe+hiwji7QFaL3tBlJoA+KFUN7ouYSDGZLSo9CKM8swQX8n/UcbR0d1VuZKU+nhogNzv423JEu5A== +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +borsh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-2.0.0.tgz#042a9f109565caac3c6a21297cd8c0ae8db3149d" + integrity sha512-kc9+BgR3zz9+cjbwM8ODoUB4fs3X3I5A/HtX7LZKxCLaMrEeDFoBpnhZY//DTS1VZBSs6S5v46RZRbZjRFspEg== + brace-expansion@^1.1.7: version "1.1.12" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" @@ -930,6 +1173,28 @@ browser-stdout@^1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.9" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.9.tgz#6e81739ad48a95cad45a279588e13e95e24a800a" + integrity sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw== + dependencies: + node-gyp-build "^4.3.0" + call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" @@ -979,7 +1244,7 @@ chai@^4.3.7: pathval "^1.1.1" type-detect "^4.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -987,10 +1252,15 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chalk@^5.4.1: + version "5.6.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.6.2.tgz#b1238b6e23ea337af71c7f8a295db5af0c158aea" + integrity sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA== + +chardet@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-2.1.1.tgz#5c75593704a642f71ee53717df234031e65373c8" + integrity sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ== check-error@^1.0.3: version "1.0.3" @@ -1059,11 +1329,28 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^14.0.0: + version "14.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-14.0.2.tgz#b71fd37fe4069e4c3c7c13925252ada4eba14e8e" + integrity sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +cron-parser@^5.3.1: + version "5.4.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-5.4.0.tgz#5bb9cd9bc3c14971d179aff2d4cc41053e302b0e" + integrity sha512-HxYB8vTvnQFx4dLsZpGRa0uHp6X3qIzS3ZJgJ9v6l/5TJMgeWQbLkR5yiJ5hOxGbc9+jCADDnydIe15ReLZnJA== + dependencies: + luxon "^3.7.1" + cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" @@ -1107,10 +1394,10 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" - integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== +debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0, debug@^4.4.3: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== dependencies: ms "^2.1.3" @@ -1149,6 +1436,11 @@ define-properties@^1.1.3, define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1173,6 +1465,11 @@ doctrine@^2.1.0: dependencies: esutils "^2.0.2" +dotenv@^17.0.0: + version "17.2.3" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-17.2.3.tgz#ad995d6997f639b11065f419a22fabf567cdb9a2" + integrity sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w== + dunder-proto@^1.0.0, dunder-proto@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" @@ -1319,37 +1616,49 @@ es-to-primitive@^1.3.0: is-date-object "^1.0.5" is-symbol "^1.0.4" +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + esbuild@~0.25.0: - version "0.25.8" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.8.tgz#482d42198b427c9c2f3a81b63d7663aecb1dda07" - integrity sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q== + version "0.25.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" + integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== optionalDependencies: - "@esbuild/aix-ppc64" "0.25.8" - "@esbuild/android-arm" "0.25.8" - "@esbuild/android-arm64" "0.25.8" - "@esbuild/android-x64" "0.25.8" - "@esbuild/darwin-arm64" "0.25.8" - "@esbuild/darwin-x64" "0.25.8" - "@esbuild/freebsd-arm64" "0.25.8" - "@esbuild/freebsd-x64" "0.25.8" - "@esbuild/linux-arm" "0.25.8" - "@esbuild/linux-arm64" "0.25.8" - "@esbuild/linux-ia32" "0.25.8" - "@esbuild/linux-loong64" "0.25.8" - "@esbuild/linux-mips64el" "0.25.8" - "@esbuild/linux-ppc64" "0.25.8" - "@esbuild/linux-riscv64" "0.25.8" - "@esbuild/linux-s390x" "0.25.8" - "@esbuild/linux-x64" "0.25.8" - "@esbuild/netbsd-arm64" "0.25.8" - "@esbuild/netbsd-x64" "0.25.8" - "@esbuild/openbsd-arm64" "0.25.8" - "@esbuild/openbsd-x64" "0.25.8" - "@esbuild/openharmony-arm64" "0.25.8" - "@esbuild/sunos-x64" "0.25.8" - "@esbuild/win32-arm64" "0.25.8" - "@esbuild/win32-ia32" "0.25.8" - "@esbuild/win32-x64" "0.25.8" + "@esbuild/aix-ppc64" "0.25.12" + "@esbuild/android-arm" "0.25.12" + "@esbuild/android-arm64" "0.25.12" + "@esbuild/android-x64" "0.25.12" + "@esbuild/darwin-arm64" "0.25.12" + "@esbuild/darwin-x64" "0.25.12" + "@esbuild/freebsd-arm64" "0.25.12" + "@esbuild/freebsd-x64" "0.25.12" + "@esbuild/linux-arm" "0.25.12" + "@esbuild/linux-arm64" "0.25.12" + "@esbuild/linux-ia32" "0.25.12" + "@esbuild/linux-loong64" "0.25.12" + "@esbuild/linux-mips64el" "0.25.12" + "@esbuild/linux-ppc64" "0.25.12" + "@esbuild/linux-riscv64" "0.25.12" + "@esbuild/linux-s390x" "0.25.12" + "@esbuild/linux-x64" "0.25.12" + "@esbuild/netbsd-arm64" "0.25.12" + "@esbuild/netbsd-x64" "0.25.12" + "@esbuild/openbsd-arm64" "0.25.12" + "@esbuild/openbsd-x64" "0.25.12" + "@esbuild/openharmony-arm64" "0.25.12" + "@esbuild/sunos-x64" "0.25.12" + "@esbuild/win32-arm64" "0.25.12" + "@esbuild/win32-ia32" "0.25.12" + "@esbuild/win32-x64" "0.25.12" escalade@^3.1.1: version "3.2.0" @@ -1438,9 +1747,9 @@ eslint-plugin-no-secrets@^1.0.2: integrity sha512-FjgyBaEkQK6hrdKf0V1TnKbY3dxXmw8S7tjfHs/BMIgFGNYhzFccxbZSJtDCPHTQTSiBtdLwRlOmSF81toII4w== eslint-plugin-prettier@^5.2.1: - version "5.5.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.3.tgz#1f88e9220a72ac8be171eec5f9d4e4d529b5f4a0" - integrity sha512-NAdMYww51ehKfDyDhv59/eIItUVzU0Io9H2E8nHNGKEeeqlnci+1gCvrHib6EmZdf6GxF+LCV5K7UC65Ezvw7w== + version "5.5.4" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz#9d61c4ea11de5af704d4edf108c82ccfa7f2e61c" + integrity sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg== dependencies: prettier-linter-helpers "^1.0.0" synckit "^0.11.7" @@ -1501,23 +1810,22 @@ eslint-visitor-keys@^4.2.1: integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== eslint@^9.10.0: - version "9.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.32.0.tgz#4ea28df4a8dbc454e1251e0f3aed4bcf4ce50a47" - integrity sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg== + version "9.39.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.39.1.tgz#be8bf7c6de77dcc4252b5a8dcb31c2efff74a6e5" + integrity sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g== dependencies: - "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.21.0" - "@eslint/config-helpers" "^0.3.0" - "@eslint/core" "^0.15.0" + "@eslint/config-array" "^0.21.1" + "@eslint/config-helpers" "^0.4.2" + "@eslint/core" "^0.17.0" "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.32.0" - "@eslint/plugin-kit" "^0.3.4" + "@eslint/js" "9.39.1" + "@eslint/plugin-kit" "^0.4.1" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" "@humanwhocodes/retry" "^0.4.2" "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.6" @@ -1579,7 +1887,7 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -ethers@^6.13.5: +ethers@^6.13.5, ethers@^6.15.0: version "6.15.0" resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.15.0.tgz#2980f2a3baf0509749b7e21f8692fa8a8349c0e3" integrity sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ== @@ -1592,14 +1900,15 @@ ethers@^6.13.5: tslib "2.7.0" ws "8.17.1" -external-editor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -1639,6 +1948,11 @@ fast-levenshtein@^3.0.0: dependencies: fastest-levenshtein "^1.0.7" +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + fastest-levenshtein@^1.0.7: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -1651,10 +1965,10 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fdir@^6.4.4: - version "6.4.6" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" - integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== file-entry-cache@^8.0.0: version "8.0.0" @@ -1758,6 +2072,11 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -1807,9 +2126,9 @@ get-symbol-description@^1.1.0: get-intrinsic "^1.2.6" get-tsconfig@^4.7.5: - version "4.10.1" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.1.tgz#d34c1c01f47d65a606c37aa7a177bc3e56ab4b2e" - integrity sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ== + version "4.13.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7" + integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== dependencies: resolve-pkg-maps "^1.0.0" @@ -1921,12 +2240,24 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== dependencies: - safer-buffer ">= 2.1.2 < 3" + ms "^2.0.0" + +iconv-lite@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.0.tgz#c50cd80e6746ca8115eb98743afa81aa0e147a3e" + integrity sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^5.2.0: version "5.3.2" @@ -2025,7 +2356,7 @@ is-callable@^1.2.7: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== -is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1: +is-core-module@^2.13.0, is-core-module@^2.16.1: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -2072,12 +2403,13 @@ is-fullwidth-code-point@^3.0.0: integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.10: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" has-tostringtag "^1.0.2" safe-regex-test "^1.1.0" @@ -2204,6 +2536,11 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + iterator.prototype@^1.1.4: version "1.1.5" resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" @@ -2217,14 +2554,31 @@ iterator.prototype@^1.1.4: set-function-name "^2.0.2" jake@^10.8.5: - version "10.9.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" - integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== + version "10.9.4" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.4.tgz#d626da108c63d5cfb00ab5c25fadc7e0084af8e6" + integrity sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA== dependencies: - async "^3.2.3" - chalk "^4.0.2" + async "^3.2.6" filelist "^1.0.4" - minimatch "^3.1.2" + picocolors "^1.1.1" + +jayson@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.2.0.tgz#b71762393fa40bc9637eaf734ca6f40d3b8c0c93" + integrity sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + stream-json "^1.9.1" + uuid "^8.3.2" + ws "^7.5.10" "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" @@ -2258,6 +2612,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -2344,6 +2703,11 @@ loupe@^2.3.6: dependencies: get-func-name "^2.0.1" +luxon@^3.7.1: + version "3.7.2" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.7.2.tgz#d697e48f478553cca187a0f8436aff468e3ba0ba" + integrity sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew== + math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" @@ -2426,21 +2790,33 @@ mocha@^10.2.0: yargs-parser "^20.2.9" yargs-unparser "^2.0.0" -ms@^2.1.1, ms@^2.1.3: +ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" - integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== +mute-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-3.0.0.tgz#cd8014dd2acb72e1e91bb67c74f0019e620ba2d1" + integrity sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw== natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -2531,11 +2907,6 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - own-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" @@ -2591,12 +2962,17 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -picomatch@^4.0.2: +picomatch@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== @@ -2713,11 +3089,11 @@ resolve-pkg-maps@^1.0.0: integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== resolve@^1.22.4: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + version "1.22.11" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262" + integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ== dependencies: - is-core-module "^2.16.0" + is-core-module "^2.16.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -2735,6 +3111,22 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== +rpc-websockets@^9.0.2: + version "9.3.1" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.3.1.tgz#d817a59d812f68bae1215740a3f78fcdd3813698" + integrity sha512-bY6a+i/lEtBJ/mUxwsCTgevoV1P0foXTVA7UoThzaIWbM+3NDqorf8NBWs5DmqKTFeA1IoNzgvkWjFCPgnzUiQ== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -2753,7 +3145,7 @@ safe-array-concat@^1.1.3: has-symbols "^1.1.0" isarray "^2.0.5" -safe-buffer@^5.1.0: +safe-buffer@^5.0.1, safe-buffer@^5.1.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -2775,7 +3167,7 @@ safe-regex-test@^1.1.0: es-errors "^1.3.0" is-regex "^1.2.1" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -2785,10 +3177,10 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.7, semver@^7.6.0, semver@^7.6.3: - version "7.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" - integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== +semver@^7.3.7, semver@^7.6.0, semver@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== serialize-javascript@^6.0.2: version "6.0.2" @@ -2885,6 +3277,15 @@ signal-exit@^4.1.0: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-git@^3.30.0: + version "3.30.0" + resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.30.0.tgz#260b816f369c298b60a509a319b4f0b9fadbd7e0" + integrity sha512-q6lxyDsCmEal/MEGhP1aVyQ3oxnagGlBDOVSIB4XUVLl1iZh0Pah6ebC9V4xBap/RfgP2WlI8EKs0WS0rMEJHg== + dependencies: + "@kwsites/file-exists" "^1.1.1" + "@kwsites/promise-deferred" "^1.1.1" + debug "^4.4.0" + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -2898,6 +3299,18 @@ stop-iteration-iterator@^1.1.0: es-errors "^1.3.0" internal-slot "^1.1.0" +stream-chain@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/stream-chain/-/stream-chain-2.2.5.tgz#b30967e8f14ee033c5b9a19bbe8a2cba90ba0d09" + integrity sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA== + +stream-json@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/stream-json/-/stream-json-1.9.1.tgz#e3fec03e984a503718946c170db7d74556c2a187" + integrity sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw== + dependencies: + stream-chain "^2.2.5" + string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -2983,6 +3396,11 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -3009,20 +3427,18 @@ synckit@^0.11.7: dependencies: "@pkgr/core" "^0.2.9" -tinyglobby@^0.2.14: - version "0.2.14" - resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.14.tgz#5280b0cf3f972b050e74ae88406c0a6a58f4079d" - integrity sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ== - dependencies: - fdir "^6.4.4" - picomatch "^4.0.2" +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +tinyglobby@^0.2.14: + version "0.2.15" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== dependencies: - os-tmpdir "~1.0.2" + fdir "^6.5.0" + picomatch "^4.0.3" to-regex-range@^5.0.1: version "5.0.1" @@ -3031,6 +3447,11 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + ts-api-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" @@ -3061,6 +3482,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -3069,9 +3495,9 @@ tsutils@^3.21.0: tslib "^1.8.1" tsx@^4.20.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.3.tgz#f913e4911d59ad177c1bcee19d1035ef8dd6e2fb" - integrity sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ== + version "4.20.6" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.6.tgz#8fb803fd9c1f70e8ccc93b5d7c5e03c3979ccb2e" + integrity sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg== dependencies: esbuild "~0.25.0" get-tsconfig "^4.7.5" @@ -3141,9 +3567,9 @@ typed-array-length@^1.0.7: reflect.getprototypeof "^1.0.6" typescript@^5.8.3: - version "5.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" - integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== + version "5.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.3.tgz#5b4f59e15310ab17a216f5d6cf53ee476ede670f" + integrity sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw== unbox-primitive@^1.1.0: version "1.1.0" @@ -3165,6 +3591,11 @@ undici-types@~6.21.0: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -3172,6 +3603,18 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + visitor-as@0.11.4: version "0.11.4" resolved "https://registry.yarnpkg.com/visitor-as/-/visitor-as-0.11.4.tgz#7b2d7b7ac8be86d4741796aa0630af5e471a4744" @@ -3180,6 +3623,19 @@ visitor-as@0.11.4: lodash.clonedeep "^4.5.0" ts-mixer "^6.0.2" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" @@ -3290,6 +3746,16 @@ ws@8.17.1: resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.5.0: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -3328,12 +3794,12 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yoctocolors-cjs@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" - integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== +yoctocolors-cjs@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz#7e4964ea8ec422b7a40ac917d3a344cfd2304baa" + integrity sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw== -zod@^3.24.1: +zod@^3.23.8, zod@^3.24.1: version "3.25.76" resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==