diff --git a/packages/near-sdk-js/lib/cli/cli.js b/packages/near-sdk-js/lib/cli/cli.js index 477d2ab18..6396dbafa 100755 --- a/packages/near-sdk-js/lib/cli/cli.js +++ b/packages/near-sdk-js/lib/cli/cli.js @@ -7,8 +7,9 @@ import { babel } from "@rollup/plugin-babel"; import { rollup } from "rollup"; import { Command } from "commander"; import signal from "signale"; -import { executeCommand, validateContract } from "./utils.js"; +import { executeCommand, formatGas, parseNamedArgs, validateContract } from "./utils.js"; import { runAbiCompilerPlugin } from "./abi.js"; +import { Worker } from "near-workspaces"; const { Signale } = signal; const PROJECT_DIR = process.cwd(); const NEAR_SDK_JS = "node_modules/near-sdk-js"; @@ -53,6 +54,12 @@ program .argument("[target]", "Target file path and name. The js file must correspond to the same path with the js extension.", "build/contract.wasm") .option("--verbose", "Whether to print more verbose output.", false) .action(transpileJsAndBuildWasmCom)) + .addCommand(new Command("watchGas") + .usage("[target] [methodName params...] [methodName params...]") + .description("Measure gas used for a contract method. Run this command after deploying the contract.") + .argument("[target]", "Target file path and name. (e.g., ./build/counter.wasm)") + .argument("[...methodCalls]", "Method calls with their parameters (e.g., increase n=5 decrease n=2)") + .action(measureGas)) .parse(); function getTargetDir(target) { return dirname(target); @@ -231,3 +238,59 @@ async function wasiStubContract(contractTarget, verbose = false) { const WASI_STUB = `${NEAR_SDK_JS}/lib/cli/deps/binaryen/wasi-stub/run.sh`; await executeCommand(`${WASI_STUB} ${contractTarget}`, verbose); } +async function measureGas(target, ...methodCalls) { + let worker; + try { + worker = await Worker.init(); + const root = worker.rootAccount; + const contract = await root.devDeploy(target); + const account = await root.createSubAccount("ali"); + let currentMethod = null; + let methodParams = []; + const methodCallsArr = methodCalls.pop().args.slice(1); + const output = []; + for (let i = 0; i < methodCallsArr.length; i++) { + if (methodCallsArr[i].includes("=")) { + methodParams.push(methodCallsArr[i]); + continue; + } + if (currentMethod) { + const res = await processMethod(account, contract, currentMethod, methodParams); + output.push(res); + } + currentMethod = methodCallsArr[i]; + methodParams = []; + } + if (currentMethod) { + const res = await processMethod(account, contract, currentMethod, methodParams); + output.push(res); + } + console.table(output.map(({ Method, Params, TotalGas }) => ({ + Method, + Params: JSON.stringify(Params), + TotalGas + }))); + } + catch (error) { + console.error(error); + } + finally { + await worker?.tearDown(); + } +} +async function processMethod(account, contract, method, params) { + const parsedParams = parseNamedArgs(params); + const tx = await account.callRaw(contract, method, parsedParams); + if (!tx.result.status.SuccessValue && tx.result.status.Failure) { + console.error(JSON.stringify(tx.result.status)); + return {}; + } + return { + Method: method, + Params: parsedParams, + TotalGas: formatGas(tx.result.transaction_outcome.outcome.gas_burnt + + tx.result.receipts_outcome[0].outcome.gas_burnt + + // TODO: remove after near-workspaces is updated + (tx.result.receipts_outcome[1].outcome.gas_burnt || 0)) + }; +} diff --git a/packages/near-sdk-js/lib/cli/utils.d.ts b/packages/near-sdk-js/lib/cli/utils.d.ts index d7e451ea1..e184074c4 100644 --- a/packages/near-sdk-js/lib/cli/utils.d.ts +++ b/packages/near-sdk-js/lib/cli/utils.d.ts @@ -7,3 +7,6 @@ export declare function download(url: string, verbose?: boolean): Promise; * @param verbose - Whether to print verbose output. **/ export declare function validateContract(contractPath: string, verbose?: boolean): Promise; +export declare function parseNamedArgs(args: any): any; +export declare function logTotalGas(r: any): void; +export declare function formatGas(gas: any): string; diff --git a/packages/near-sdk-js/lib/cli/utils.js b/packages/near-sdk-js/lib/cli/utils.js index 3f98c8125..77f6c61e5 100644 --- a/packages/near-sdk-js/lib/cli/utils.js +++ b/packages/near-sdk-js/lib/cli/utils.js @@ -90,3 +90,26 @@ export async function validateContract(contractPath, verbose = false) { } return true; } +export function parseNamedArgs(args) { + return args.reduce((acc, arg) => { + const [key, value] = arg.split('='); + acc[key] = value; + return acc; + }, {}); +} +export function logTotalGas(r) { + console.log('Total gas used: ', formatGas(r.result.transaction_outcome.outcome.gas_burnt + + r.result.receipts_outcome[0].outcome.gas_burnt + + // TODO: remove after near-workspaces is updated + (r.result.receipts_outcome[1].outcome.gas_burnt || 0)), '\n'); +} +export function formatGas(gas) { + if (gas < 10 ** 12) { + const tGas = gas / 10 ** 12; + const roundTGas = Math.round(tGas * 100000) / 100000; + return roundTGas + "T"; + } + const tGas = gas / 10 ** 12; + const roundTGas = Math.round(tGas * 100) / 100; + return roundTGas + "T"; +} diff --git a/packages/near-sdk-js/package.json b/packages/near-sdk-js/package.json index 61cdfab6b..12978d155 100644 --- a/packages/near-sdk-js/package.json +++ b/packages/near-sdk-js/package.json @@ -76,6 +76,7 @@ "eslint": "8.54.0", "eslint-config-prettier": "8.10.0", "json5": "2.2.3", + "near-workspaces": "4.0.0", "npm-run-all": "4.1.5", "prettier": "2.8.8", "typescript": "4.7.4" diff --git a/packages/near-sdk-js/src/cli/cli.ts b/packages/near-sdk-js/src/cli/cli.ts index e2b7a298f..cf3b11cad 100644 --- a/packages/near-sdk-js/src/cli/cli.ts +++ b/packages/near-sdk-js/src/cli/cli.ts @@ -10,8 +10,9 @@ import { rollup } from "rollup"; import { Command } from "commander"; import signal from "signale"; -import { executeCommand, validateContract } from "./utils.js"; +import { executeCommand, formatGas, parseNamedArgs, validateContract } from "./utils.js"; import { runAbiCompilerPlugin } from "./abi.js"; +import { Worker } from "near-workspaces"; const { Signale } = signal; const PROJECT_DIR = process.cwd(); @@ -85,6 +86,21 @@ program .option("--verbose", "Whether to print more verbose output.", false) .action(transpileJsAndBuildWasmCom) ) + .addCommand( + new Command("watchGas") + .usage("[target] [methodName params...] [methodName params...]") + .description( + "Measure gas used for a contract method. Run this command after deploying the contract." + ) + .argument( + "[target]", + "Target file path and name. (e.g., ./build/counter.wasm)" + ) + .argument( + "[...methodCalls]", "Method calls with their parameters (e.g., increase n=5 decrease n=2)" + ) + .action(measureGas) + ) .parse(); function getTargetDir(target: string): string { @@ -389,3 +405,70 @@ async function wasiStubContract(contractTarget: string, verbose = false) { const WASI_STUB = `${NEAR_SDK_JS}/lib/cli/deps/binaryen/wasi-stub/run.sh`; await executeCommand(`${WASI_STUB} ${contractTarget}`, verbose); } + +async function measureGas(target: string, ...methodCalls) { + let worker; + try { + worker = await Worker.init(); + const root = worker.rootAccount; + const contract = await root.devDeploy(target); + const account = await root.createSubAccount("ali"); + + let currentMethod = null; + let methodParams = []; + const methodCallsArr = methodCalls.pop().args.slice(1); + + const output = []; + + for (let i = 0; i < methodCallsArr.length; i++) { + if (methodCallsArr[i].includes("=")) { + methodParams.push(methodCallsArr[i]); + continue; + } + + if (currentMethod) { + const res = await processMethod(account, contract, currentMethod, methodParams); + output.push(res); + } + + currentMethod = methodCallsArr[i]; + methodParams = []; + } + + if (currentMethod) { + const res = await processMethod(account, contract, currentMethod, methodParams); + output.push(res); + } + + console.table(output.map(({Method, Params, TotalGas}) => ({ + Method, + Params: JSON.stringify(Params), + TotalGas + }))); + } catch (error) { + console.error(error); + } finally { + await worker?.tearDown(); + } +} + +async function processMethod(account, contract, method, params) { + const parsedParams = parseNamedArgs(params); + const tx = await account.callRaw(contract, method, parsedParams); + + if (!tx.result.status.SuccessValue && tx.result.status.Failure) { + console.error(JSON.stringify(tx.result.status)); + return {}; + } + + return { + Method: method, + Params: parsedParams, + TotalGas: formatGas( + tx.result.transaction_outcome.outcome.gas_burnt + + tx.result.receipts_outcome[0].outcome.gas_burnt + + // TODO: remove after near-workspaces is updated + (tx.result.receipts_outcome[1].outcome.gas_burnt || 0) + ) + } +} \ No newline at end of file diff --git a/packages/near-sdk-js/src/cli/utils.ts b/packages/near-sdk-js/src/cli/utils.ts index 49db8e109..dd5956ae3 100644 --- a/packages/near-sdk-js/src/cli/utils.ts +++ b/packages/near-sdk-js/src/cli/utils.ts @@ -137,3 +137,35 @@ export async function validateContract( return true; } + +export function parseNamedArgs(args) { + return args.reduce((acc, arg) => { + const [key, value] = arg.split('='); + acc[key] = value; + return acc; + }, {}); +} + +export function logTotalGas(r) { + console.log( + 'Total gas used: ', + formatGas( + r.result.transaction_outcome.outcome.gas_burnt + + r.result.receipts_outcome[0].outcome.gas_burnt + + // TODO: remove after near-workspaces is updated + (r.result.receipts_outcome[1].outcome.gas_burnt || 0) + ), + '\n' + ); +} + +export function formatGas(gas) { + if (gas < 10 ** 12) { + const tGas = gas / 10 ** 12; + const roundTGas = Math.round(tGas * 100000) / 100000; + return roundTGas + "T"; + } + const tGas = gas / 10 ** 12; + const roundTGas = Math.round(tGas * 100) / 100; + return roundTGas + "T"; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8cd0f7f41..317c38e71 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -180,6 +180,9 @@ importers: json5: specifier: 2.2.3 version: 2.2.3 + near-workspaces: + specifier: 4.0.0 + version: 4.0.0 npm-run-all: specifier: 4.1.5 version: 4.1.5 @@ -216,16 +219,16 @@ packages: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} engines: {node: '>=6.9.0'} '@babel/core@7.23.5': resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.0': - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.24.7': @@ -236,8 +239,8 @@ packages: resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.0': - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + '@babel/helper-create-class-features-plugin@7.25.4': + resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -294,16 +297,16 @@ packages: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.3': - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -325,8 +328,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.24.7': - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + '@babel/plugin-syntax-typescript@7.25.4': + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -353,16 +356,16 @@ packages: resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.3': - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} engines: {node: '>=6.9.0'} '@babel/types@7.23.5': resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.2': - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} '@cspotcode/source-map-support@0.8.1': @@ -375,8 +378,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.0': - resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -579,11 +582,11 @@ packages: '@types/lodash-es@4.17.12': resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - '@types/lodash@4.17.7': - resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} + '@types/lodash@4.17.9': + resolution: {integrity: sha512-w9iWudx1XWOHW5lQRS9iKpK/XuRhnN+0T7HvdCCd802FYkT1AMTnxndJHGrNJwRoRHkslGr4S29tjm1cT7x/7w==} - '@types/node@16.18.105': - resolution: {integrity: sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==} + '@types/node@16.18.112': + resolution: {integrity: sha512-EKrbKUGJROm17+dY/gMi31aJlGLJ75e1IkTojt9n6u+hnaTBDs+M1bIdOawpk2m6YUAXq/R2W0SxCng1tndHCg==} '@types/node@17.0.45': resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -670,8 +673,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.3: - resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} acorn@8.12.1: @@ -705,8 +708,8 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} ansi-sequence-parser@1.1.1: @@ -821,8 +824,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -856,8 +859,8 @@ packages: resolution: {integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==} engines: {node: '>=12.20'} - caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + caniuse-lite@1.0.30001664: + resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==} cbor@8.1.0: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} @@ -991,8 +994,8 @@ packages: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} engines: {node: '>=6'} - debug@4.3.6: - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1054,8 +1057,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.8: - resolution: {integrity: sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==} + electron-to-chromium@1.5.29: + resolution: {integrity: sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==} emittery@0.11.0: resolution: {integrity: sha512-S/7tzL6v5i+4iJd627Nhv9cLFIo5weAIlGccqJFpnBoDB8U1TF2k5tez4J/QNuxyyhWuFqHg1L84Kd3m7iXg6g==} @@ -1097,8 +1100,8 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-string-regexp@1.0.5: @@ -1435,8 +1438,8 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-core-module@2.15.0: - resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==} + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} is-data-view@1.0.1: @@ -1668,8 +1671,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mimic-fn@4.0.0: @@ -1712,9 +1715,6 @@ packages: engines: {node: '>=10'} hasBin: true - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -1913,8 +1913,8 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -1965,8 +1965,8 @@ packages: proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} @@ -2070,8 +2070,8 @@ packages: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} - safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} semver@5.7.2: @@ -2164,8 +2164,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.18: - resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==} + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -2373,8 +2373,8 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2475,50 +2475,50 @@ snapshots: '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 - picocolors: 1.0.1 + picocolors: 1.1.0 - '@babel/compat-data@7.25.2': {} + '@babel/compat-data@7.25.4': {} '@babel/core@7.23.5': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 + '@babel/generator': 7.25.6 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.23.5) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.6 '@babel/types': 7.23.5 convert-source-map: 2.0.0 - debug: 4.3.6 + debug: 4.3.7 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.25.0': + '@babel/generator@7.25.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 '@babel/helper-annotate-as-pure@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/compat-data': 7.25.2 + '@babel/compat-data': 7.25.4 '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.23.5)': + '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.23.5)': dependencies: '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2526,22 +2526,22 @@ snapshots: '@babel/helper-optimise-call-expression': 7.24.7 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.23.5) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.6 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color @@ -2551,13 +2551,13 @@ snapshots: '@babel/helper-module-imports': 7.24.7 '@babel/helper-simple-access': 7.24.7 '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/helper-plugin-utils@7.24.8': {} @@ -2566,27 +2566,27 @@ snapshots: '@babel/core': 7.23.5 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.3 + '@babel/traverse': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.3 - '@babel/types': 7.25.2 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/helper-string-parser@7.24.8': {} @@ -2594,26 +2594,26 @@ snapshots: '@babel/helper-validator-option@7.24.8': {} - '@babel/helpers@7.25.0': + '@babel/helpers@7.25.6': dependencies: '@babel/template': 7.25.0 - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.1 + picocolors: 1.1.0 - '@babel/parser@7.25.3': + '@babel/parser@7.25.6': dependencies: - '@babel/types': 7.25.2 + '@babel/types': 7.25.6 '@babel/plugin-proposal-decorators@7.23.5(@babel/core@7.23.5)': dependencies: '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.23.5) '@babel/helper-split-export-declaration': 7.24.7 @@ -2631,7 +2631,7 @@ snapshots: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.23.5)': + '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.23.5)': dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.24.8 @@ -2649,10 +2649,10 @@ snapshots: dependencies: '@babel/core': 7.23.5 '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.23.5) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.23.5) + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.23.5) transitivePeerDependencies: - supports-color @@ -2670,17 +2670,17 @@ snapshots: '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.3 - '@babel/types': 7.25.2 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - '@babel/traverse@7.25.3': + '@babel/traverse@7.25.6': dependencies: '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.0 - '@babel/parser': 7.25.3 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 '@babel/template': 7.25.0 - '@babel/types': 7.25.2 - debug: 4.3.6 + '@babel/types': 7.25.6 + debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2691,7 +2691,7 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@babel/types@7.25.2': + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 @@ -2706,12 +2706,12 @@ snapshots: eslint: 8.54.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.0': {} + '@eslint-community/regexpp@4.11.1': {} '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.6 + debug: 4.3.7 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -2727,7 +2727,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6 + debug: 4.3.7 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -2948,7 +2948,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/types': 7.23.5 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -2960,7 +2960,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.3 + '@babel/parser': 7.25.6 '@babel/types': 7.23.5 '@types/babel__traverse@7.20.4': @@ -2993,11 +2993,11 @@ snapshots: '@types/lodash-es@4.17.12': dependencies: - '@types/lodash': 4.17.7 + '@types/lodash': 4.17.9 - '@types/lodash@4.17.7': {} + '@types/lodash@4.17.9': {} - '@types/node@16.18.105': {} + '@types/node@16.18.112': {} '@types/node@17.0.45': {} @@ -3021,12 +3021,12 @@ snapshots: '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.54.0)(typescript@4.7.4))(eslint@8.54.0)(typescript@4.7.4)': dependencies: - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@typescript-eslint/parser': 5.62.0(eslint@8.54.0)(typescript@4.7.4) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.54.0)(typescript@4.7.4) '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@4.7.4) - debug: 4.3.6 + debug: 4.3.7 eslint: 8.54.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -3043,7 +3043,7 @@ snapshots: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4) - debug: 4.3.6 + debug: 4.3.7 eslint: 8.54.0 optionalDependencies: typescript: 4.7.4 @@ -3059,7 +3059,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.7.4) '@typescript-eslint/utils': 5.62.0(eslint@8.54.0)(typescript@4.7.4) - debug: 4.3.6 + debug: 4.3.7 eslint: 8.54.0 tsutils: 3.21.0(typescript@4.7.4) optionalDependencies: @@ -3073,7 +3073,7 @@ snapshots: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.6 + debug: 4.3.7 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 @@ -3109,7 +3109,7 @@ snapshots: dependencies: acorn: 8.12.1 - acorn-walk@8.3.3: + acorn-walk@8.3.4: dependencies: acorn: 8.12.1 @@ -3145,7 +3145,7 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} + ansi-regex@6.1.0: {} ansi-sequence-parser@1.1.1: {} @@ -3201,7 +3201,7 @@ snapshots: ava@4.3.3: dependencies: acorn: 8.12.1 - acorn-walk: 8.3.3 + acorn-walk: 8.3.4 ansi-styles: 6.2.1 arrgv: 1.0.2 arrify: 3.0.0 @@ -3218,7 +3218,7 @@ snapshots: common-path-prefix: 3.0.0 concordance: 5.0.4 currently-unhandled: 0.4.1 - debug: 4.3.6 + debug: 4.3.7 del: 6.1.1 emittery: 0.11.0 figures: 4.0.1 @@ -3291,12 +3291,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.3: + browserslist@4.24.0: dependencies: - caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.8 + caniuse-lite: 1.0.30001664 + electron-to-chromium: 1.5.29 node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) + update-browserslist-db: 1.1.1(browserslist@4.24.0) bs58@4.0.0: dependencies: @@ -3332,7 +3332,7 @@ snapshots: callsites@4.2.0: {} - caniuse-lite@1.0.30001651: {} + caniuse-lite@1.0.30001664: {} cbor@8.1.0: dependencies: @@ -3477,9 +3477,9 @@ snapshots: dependencies: time-zone: 1.0.0 - debug@4.3.6: + debug@4.3.7: dependencies: - ms: 2.1.2 + ms: 2.1.3 decode-uri-component@0.2.2: {} @@ -3532,7 +3532,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.8: {} + electron-to-chromium@1.5.29: {} emittery@0.11.0: {} @@ -3619,7 +3619,7 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - escalade@3.1.2: {} + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -3648,7 +3648,7 @@ snapshots: eslint@8.54.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) - '@eslint-community/regexpp': 4.11.0 + '@eslint-community/regexpp': 4.11.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.54.0 '@humanwhocodes/config-array': 0.11.14 @@ -3658,7 +3658,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.6 + debug: 4.3.7 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -3724,7 +3724,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} @@ -3817,7 +3817,7 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.0 + pump: 3.0.2 get-symbol-description@1.0.2: dependencies: @@ -3989,7 +3989,7 @@ snapshots: is-callable@1.2.7: {} - is-core-module@2.15.0: + is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -4181,7 +4181,7 @@ snapshots: merge2@1.4.1: {} - micromatch@4.0.7: + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 @@ -4217,8 +4217,6 @@ snapshots: mkdirp@1.0.4: {} - ms@2.1.2: {} - ms@2.1.3: {} mustache@4.0.0: {} @@ -4264,11 +4262,11 @@ snapshots: near-typescript-json-schema@0.55.0: dependencies: '@types/json-schema': 7.0.15 - '@types/node': 16.18.105 + '@types/node': 16.18.112 glob: 7.2.3 path-equal: 1.2.5 - safe-stable-stringify: 2.4.3 - ts-node: 10.9.2(@types/node@16.18.105)(typescript@4.7.4) + safe-stable-stringify: 2.5.0 + ts-node: 10.9.2(@types/node@16.18.112)(typescript@4.7.4) typescript: 4.7.4 yargs: 17.7.2 transitivePeerDependencies: @@ -4438,7 +4436,7 @@ snapshots: path-type@4.0.0: {} - picocolors@1.0.1: {} + picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -4478,7 +4476,7 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 - pump@3.0.0: + pump@3.0.2: dependencies: end-of-stream: 1.4.4 once: 1.4.0 @@ -4528,7 +4526,7 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.15.0 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -4575,7 +4573,7 @@ snapshots: es-errors: 1.3.0 is-regex: 1.1.4 - safe-stable-stringify@2.4.3: {} + safe-stable-stringify@2.5.0: {} semver@5.7.2: {} @@ -4660,16 +4658,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.18 + spdx-license-ids: 3.0.20 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.18 + spdx-license-ids: 3.0.20 - spdx-license-ids@3.0.18: {} + spdx-license-ids@3.0.20: {} sprintf-js@1.0.3: {} @@ -4723,7 +4721,7 @@ snapshots: strip-ansi@7.1.0: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.1.0 strip-bom@3.0.0: {} @@ -4778,16 +4776,16 @@ snapshots: '@ts-morph/common': 0.17.0 code-block-writer: 11.0.3 - ts-node@10.9.2(@types/node@16.18.105)(typescript@4.7.4): + ts-node@10.9.2(@types/node@16.18.112)(typescript@4.7.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 16.18.105 + '@types/node': 16.18.112 acorn: 8.12.1 - acorn-walk: 8.3.3 + acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -4889,11 +4887,11 @@ snapshots: universalify@2.0.1: {} - update-browserslist-db@1.1.0(browserslist@4.23.3): + update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: - browserslist: 4.23.3 - escalade: 3.1.2 - picocolors: 1.0.1 + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.0 uri-js@4.4.1: dependencies: @@ -4969,7 +4967,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3