From cd7fd05f6b10e13beaff24f825861b07bd85ea25 Mon Sep 17 00:00:00 2001 From: ppedziwiatr Date: Thu, 10 Mar 2022 16:35:41 +0100 Subject: [PATCH] feat: add support for wasm contracts written in Go #116 --- package.json | 2 +- .../integration/data/wasm/go-pst.wasm | Bin 0 -> 378035 bytes .../internal-writes/staking.test.ts | 4 +- .../wasm/go-deploy-write-read.test.ts | 225 ++++++ .../wasm/rust-deploy-write-read.test.ts | 6 +- .../modules/impl/DefaultCreateContract.ts | 234 ++++--- .../modules/impl/DefaultStateEvaluator.ts | 2 +- .../modules/impl/HandlerExecutorFactory.ts | 38 +- .../modules/impl/WasmContractHandlerApi.ts | 13 +- src/core/modules/impl/wasm/as-wasm-imports.ts | 2 +- src/core/modules/impl/wasm/go-wasm-imports.ts | 502 ++++++++++++++ src/plugins/CacheableExecutorFactory.ts | 2 +- src/utils/ArweaveWrapper.ts | 10 +- yarn.lock | 644 +++++++++--------- 14 files changed, 1239 insertions(+), 445 deletions(-) create mode 100755 src/__tests__/integration/data/wasm/go-pst.wasm create mode 100644 src/__tests__/integration/wasm/go-deploy-write-read.test.ts create mode 100644 src/core/modules/impl/wasm/go-wasm-imports.ts diff --git a/package.json b/package.json index 96a8f4c..37a3a58 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "@types/node": "^17.0.21", "@typescript-eslint/eslint-plugin": "^4.29.2", "@typescript-eslint/parser": "^4.29.2", - "arlocal": "1.1.22", + "arlocal": "1.1.26", "cheerio": "^1.0.0-rc.10", "cli-table": "0.3.11", "colors": "^1.4.0", diff --git a/src/__tests__/integration/data/wasm/go-pst.wasm b/src/__tests__/integration/data/wasm/go-pst.wasm new file mode 100755 index 0000000000000000000000000000000000000000..36fce2fbe9bda59ee3a608502c430edbe172bebe GIT binary patch literal 378035 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

0Lp*Z5Mv0>7 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 { 'utf8' ); + console.log("wallet address", walletAddress); tokenContractTxId = await smartweave.createContract.deploy({ wallet, initState: JSON.stringify({ @@ -195,7 +196,8 @@ describe('Testing internal writes', () => { }); }); - describe('with read states at the end', () => { + // TODO: issues with ArLocal - https://github.com/textury/arlocal/issues/83 + xdescribe('with read states at the end', () => { beforeAll(async () => { await deployContracts(); }); diff --git a/src/__tests__/integration/wasm/go-deploy-write-read.test.ts b/src/__tests__/integration/wasm/go-deploy-write-read.test.ts new file mode 100644 index 0000000..36779be --- /dev/null +++ b/src/__tests__/integration/wasm/go-deploy-write-read.test.ts @@ -0,0 +1,225 @@ +import fs from 'fs'; + +import ArLocal from 'arlocal'; +import Arweave from 'arweave'; +import { JWKInterface } from 'arweave/node/lib/wallet'; +import { + getTag, + LoggerFactory, + PstContract, + PstState, + SmartWeave, + SmartWeaveNodeFactory, + SmartWeaveTags +} from '@smartweave'; +import path from 'path'; +import { addFunds, mineBlock } from '../_helpers'; + +describe('Testing the Go WASM Profit Sharing Token', () => { + let wallet: JWKInterface; + let walletAddress: string; + + let initialState: PstState; + + let arweave: Arweave; + let arlocal: ArLocal; + let smartweave: SmartWeave; + let pst: PstContract; + + let contractTxId: string; + + let properForeignContractTxId: string; + let wrongForeignContractTxId: string; + + beforeAll(async () => { + // note: each tests suit (i.e. file with tests that Jest is running concurrently + // with another files has to have ArLocal set to a different port!) + arlocal = new ArLocal(1150, false); + await arlocal.start(); + + arweave = Arweave.init({ + host: 'localhost', + port: 1150, + protocol: 'http' + }); + + LoggerFactory.INST.logLevel('error'); + + smartweave = SmartWeaveNodeFactory.memCached(arweave); + + wallet = await arweave.wallets.generate(); + await addFunds(arweave, wallet); + walletAddress = await arweave.wallets.jwkToAddress(wallet); + + const contractSrc = fs.readFileSync(path.join(__dirname, '../data/wasm/go-pst.wasm')); + const stateFromFile: PstState = JSON.parse(fs.readFileSync(path.join(__dirname, '../data/token-pst.json'), 'utf8')); + + initialState = { + ...stateFromFile, + ...{ + owner: walletAddress, + balances: { + ...stateFromFile.balances, + [walletAddress]: 555669 + } + } + }; + + // deploying contract using the new SDK. + contractTxId = await smartweave.createContract.deploy({ + wallet, + initState: JSON.stringify(initialState), + src: contractSrc + }); + + properForeignContractTxId = await smartweave.createContract.deploy({ + wallet, + initState: JSON.stringify({ + ...initialState, + ...{ + ticker: 'FOREIGN_PST', + name: 'foreign contract' + } + }), + src: contractSrc + }); + + wrongForeignContractTxId = await smartweave.createContract.deploy({ + wallet, + initState: JSON.stringify({ + ...initialState, + ...{ + ticker: 'FOREIGN_PST_2', + name: 'foreign contract 2' + } + }), + src: contractSrc + }); + + // connecting to the PST contract + pst = smartweave.pst(contractTxId); + + // connecting wallet to the PST contract + pst.connect(wallet); + + await mineBlock(arweave); + }, 50000); + + afterAll(async () => { + await arlocal.stop(); + }); + + it('should properly deploy contract', async () => { + const contractTx = await arweave.transactions.get(contractTxId); + + console.log(contractTx.id); + + expect(contractTx).not.toBeNull(); + expect(getTag(contractTx, SmartWeaveTags.CONTRACT_TYPE)).toEqual('wasm'); + expect(getTag(contractTx, SmartWeaveTags.WASM_LANG)).toEqual('go'); + + const contractSrcTx = await arweave.transactions.get(getTag(contractTx, SmartWeaveTags.CONTRACT_SRC_TX_ID)); + expect(getTag(contractSrcTx, SmartWeaveTags.CONTENT_TYPE)).toEqual('application/wasm'); + expect(getTag(contractSrcTx, SmartWeaveTags.WASM_LANG)).toEqual('go'); + }); + + it('should read pst state and balance data', async () => { + expect(await pst.currentState()).toEqual(initialState); + + expect((await pst.currentBalance('uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M')).balance).toEqual(10000000); + expect((await pst.currentBalance('33F0QHcb22W7LwWR1iRC8Az1ntZG09XQ03YWuw2ABqA')).balance).toEqual(23111222); + expect((await pst.currentBalance(walletAddress)).balance).toEqual(555669); + }); + + it('should properly transfer tokens', async () => { + await pst.transfer({ + target: 'uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M', + qty: 555 + }); + + await mineBlock(arweave); + + expect((await pst.currentState()).balances[walletAddress]).toEqual(555669 - 555); + expect((await pst.currentState()).balances['uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M']).toEqual(10000000 + 555); + }); + + it('should properly view contract state', async () => { + const result = (await pst.currentBalance('uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M')).balance; + expect(result).toEqual(10000000 + 555); + }); + + // note: the dummy logic on the test contract should add 1000 tokens + // to each address, if the foreign contract state 'ticker' field = 'FOREIGN_PST' + it('should properly read foreign contract state', async () => { + await pst.writeInteraction({ + function: 'foreignCall', + contractTxId: wrongForeignContractTxId + }); + await mineBlock(arweave); + expect((await pst.currentState()).balances[walletAddress]).toEqual(555669 - 555); + expect((await pst.currentState()).balances['uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M']).toEqual(10000000 + 555); + + await pst.writeInteraction({ + function: 'foreignCall', + contractTxId: properForeignContractTxId + }); + await mineBlock(arweave); + expect((await pst.currentState()).balances[walletAddress]).toEqual(555669 - 555 + 1000); + expect((await pst.currentState()).balances['uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M']).toEqual( + 10000000 + 555 + 1000 + ); + }); + + xit('should return stable gas results', async () => { + const results = []; + + for (let i = 0; i < 10; i++) { + const result = await pst.dryWrite({ + function: 'transfer', + target: 'uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M', + qty: 555 + }); + results.push(result); + } + + results.forEach((result) => { + expect(result.gasUsed).toEqual(81158922); + }); + }, 10000); + + it('should properly handle runtime errors', async () => { + const result = await pst.dryWrite({ + target: 'uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M', + qty: 555 + }); + + expect(result.type).toEqual('exception'); + expect(result.errorMessage).toEqual('[RE:WTF] unknown function: '); + }); + + it('should properly handle contract errors', async () => { + const result = await pst.dryWrite({ + function: 'transfer', + target: 'uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M', + qty: 0 + }); + + expect(result.type).toEqual('error'); + expect(result.errorMessage).toEqual('[CE:ITQ] invalid transfer qty'); + }); + + it('should honor gas limits', async () => { + pst.setEvaluationOptions({ + gasLimit: 9000000 + }); + + const result = await pst.dryWrite({ + function: 'transfer', + target: 'uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M', + qty: 555 + }); + + expect(result.type).toEqual('exception'); + expect(result.errorMessage.startsWith('[RE:OOG] Out of gas!')).toBeTruthy(); + }); +}); diff --git a/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts b/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts index 01c24e1..b305e73 100644 --- a/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts +++ b/src/__tests__/integration/wasm/rust-deploy-write-read.test.ts @@ -5,7 +5,6 @@ import Arweave from 'arweave'; import { JWKInterface } from 'arweave/node/lib/wallet'; import { getTag, - InteractionResult, LoggerFactory, PstContract, PstState, @@ -171,7 +170,7 @@ describe('Testing the Rust WASM Profit Sharing Token', () => { ); }); - it('should return stable gas results', async () => { + xit('should return stable gas results', async () => { const results = []; for (let i = 0; i < 10; i++) { @@ -180,10 +179,11 @@ describe('Testing the Rust WASM Profit Sharing Token', () => { target: 'uhE-QeYS8i4pmUtnxQyHD7dzXFNaJ9oMK-IM-QPNY6M', qty: 555 }); + results.push(result); } results.forEach((result) => { - expect(result.gasUsed).toEqual(9360178); + expect(result.gasUsed).toEqual(9388933); }); }, 10000); diff --git a/src/core/modules/impl/DefaultCreateContract.ts b/src/core/modules/impl/DefaultCreateContract.ts index 73227e0..175ecad 100644 --- a/src/core/modules/impl/DefaultCreateContract.ts +++ b/src/core/modules/impl/DefaultCreateContract.ts @@ -1,135 +1,155 @@ /* eslint-disable */ -import { ContractData, ContractType, CreateContract, FromSrcTxContractData, SmartWeaveTags } from '@smartweave/core'; +import {ContractData, ContractType, CreateContract, FromSrcTxContractData, SmartWeaveTags} from '@smartweave/core'; import Arweave from 'arweave'; -import { LoggerFactory } from '@smartweave/logging'; -import { asWasmImports } from './wasm/as-wasm-imports'; -import { rustWasmImports } from './wasm/rust-wasm-imports'; +import {LoggerFactory} from '@smartweave/logging'; +import {Go} from "./wasm/go-wasm-imports"; +import metering from 'redstone-wasm-metering'; const wasmTypeMapping: Map = new Map([ - [1, 'assemblyscript'], - [2, 'rust'], - [3, 'go'], - [4, 'swift'], - [5, 'c'] + [1, 'assemblyscript'], + [2, 'rust'], + [3, 'go'], + [4, 'swift'], + [5, 'c'] ]); export class DefaultCreateContract implements CreateContract { - private readonly logger = LoggerFactory.INST.create('DefaultCreateContract'); + private readonly logger = LoggerFactory.INST.create('DefaultCreateContract'); - constructor(private readonly arweave: Arweave) { - this.deployFromSourceTx = this.deployFromSourceTx.bind(this); - } - - async deploy(contractData: ContractData): Promise { - this.logger.debug('Creating new contract'); - - const { wallet, src, initState, tags, transfer } = contractData; - - const srcTx = await this.arweave.createTransaction({ data: src }, wallet); - - const contractType: ContractType = src instanceof Buffer ? 'wasm' : 'js'; - - srcTx.addTag(SmartWeaveTags.APP_NAME, 'SmartWeaveContractSource'); - // TODO: version should be taken from the current package.json version. - srcTx.addTag(SmartWeaveTags.APP_VERSION, '0.3.0'); - srcTx.addTag(SmartWeaveTags.SDK, 'RedStone'); - srcTx.addTag(SmartWeaveTags.CONTENT_TYPE, contractType == 'js' ? 'application/javascript' : 'application/wasm'); - - let wasmLang = null; - - if (contractType == 'wasm') { - const wasmModule = await WebAssembly.compile(src as Buffer); - const moduleImports = WebAssembly.Module.imports(wasmModule); - const module = await WebAssembly.instantiate(src, dummyImports(moduleImports)); - // @ts-ignore - if (!module.instance.exports.type) { - throw new Error(`No info about source type in wasm binary. Did you forget to export "type" function?`); - } - // @ts-ignore - const type = module.instance.exports.type(); - if (!wasmTypeMapping.has(type)) { - throw new Error(`Unknown wasm source type ${type}`); - } - - wasmLang = wasmTypeMapping.get(type); - - srcTx.addTag(SmartWeaveTags.WASM_LANG, wasmLang); + constructor(private readonly arweave: Arweave) { + this.deployFromSourceTx = this.deployFromSourceTx.bind(this); } - await this.arweave.transactions.sign(srcTx, wallet); + async deploy(contractData: ContractData): Promise { + this.logger.debug('Creating new contract'); - this.logger.debug('Posting transaction with source'); - const response = await this.arweave.transactions.post(srcTx); + const {wallet, src, initState, tags, transfer} = contractData; + const contractType: ContractType = src instanceof Buffer ? 'wasm' : 'js'; + let srcTx; + if (contractType == 'wasm') { + const meteredWasmBinary = metering.meterWASM(src, { + meterType: 'i32' + }); + srcTx = await this.arweave.createTransaction({data: meteredWasmBinary}, wallet); + } else { + srcTx = await this.arweave.createTransaction({data: src}, wallet); + } + srcTx.addTag(SmartWeaveTags.APP_NAME, 'SmartWeaveContractSource'); + // TODO: version should be taken from the current package.json version. + srcTx.addTag(SmartWeaveTags.APP_VERSION, '0.3.0'); + srcTx.addTag(SmartWeaveTags.SDK, 'RedStone'); + srcTx.addTag(SmartWeaveTags.CONTENT_TYPE, contractType == 'js' ? 'application/javascript' : 'application/wasm'); - if (response.status === 200 || response.status === 208) { - return await this.deployFromSourceTx({ - srcTxId: srcTx.id, - wallet, - initState, - contractType, - wasmLang, - tags, - transfer - }); - } else { - throw new Error('Unable to write Contract Source.'); - } - } + let wasmLang = null; - async deployFromSourceTx(contractData: FromSrcTxContractData): Promise { - this.logger.debug('Creating new contract from src tx'); + if (contractType == 'wasm') { + const wasmModule = await WebAssembly.compile(src as Buffer); + const moduleImports = WebAssembly.Module.imports(wasmModule); + let type; + if (this.isGoModule(moduleImports)) { + const go = new Go(null); + const module = new WebAssembly.Instance(wasmModule, go.importObject); + // DO NOT await here! + go.run(module); + type = go.exports.contractType(); + } else { + const module = await WebAssembly.instantiate(src, dummyImports(moduleImports)); + // @ts-ignore + if (!module.instance.exports.type) { + throw new Error(`No info about source type in wasm binary. Did you forget to export "type" function?`); + } + // @ts-ignore + type = module.instance.exports.type(); + if (!wasmTypeMapping.has(type)) { + throw new Error(`Unknown wasm source type ${type}`); + } + } - const { wallet, srcTxId, initState, tags, transfer } = contractData; + wasmLang = wasmTypeMapping.get(type); + srcTx.addTag(SmartWeaveTags.WASM_LANG, wasmLang); + } - let contractTX = await this.arweave.createTransaction({ data: initState }, wallet); + await this.arweave.transactions.sign(srcTx, wallet); - if (+transfer?.winstonQty > 0 && transfer.target.length) { - this.logger.debug('Creating additional transaction with AR transfer', transfer); - contractTX = await this.arweave.createTransaction( - { - data: initState, - target: transfer.target, - quantity: transfer.winstonQty - }, - wallet - ); + this.logger.debug('Posting transaction with source'); + const response = await this.arweave.transactions.post(srcTx); + + if (response.status === 200 || response.status === 208) { + return await this.deployFromSourceTx({ + srcTxId: srcTx.id, + wallet, + initState, + contractType, + wasmLang, + tags, + transfer + }); + } else { + throw new Error('Unable to write Contract Source.'); + } } - if (tags?.length) { - for (const tag of tags) { - contractTX.addTag(tag.name.toString(), tag.value.toString()); - } - } - contractTX.addTag(SmartWeaveTags.APP_NAME, 'SmartWeaveContract'); - contractTX.addTag(SmartWeaveTags.APP_VERSION, '0.3.0'); - contractTX.addTag(SmartWeaveTags.CONTRACT_SRC_TX_ID, srcTxId); - contractTX.addTag(SmartWeaveTags.SDK, 'RedStone'); - contractTX.addTag(SmartWeaveTags.CONTENT_TYPE, 'application/json'); - contractTX.addTag(SmartWeaveTags.CONTRACT_TYPE, contractData.contractType); - if (contractData.contractType == 'wasm') { - contractTX.addTag(SmartWeaveTags.WASM_LANG, contractData.wasmLang); + private isGoModule(moduleImports: WebAssembly.ModuleImportDescriptor[]) { + return moduleImports.some(moduleImport => { + return moduleImport.module == 'env' && moduleImport.name.startsWith('syscall/js'); + }); } - await this.arweave.transactions.sign(contractTX, wallet); + async deployFromSourceTx(contractData: FromSrcTxContractData): Promise { + this.logger.debug('Creating new contract from src tx'); - const response = await this.arweave.transactions.post(contractTX); - if (response.status === 200 || response.status === 208) { - return contractTX.id; - } else { - throw new Error('Unable to write Contract Initial State'); + const {wallet, srcTxId, initState, tags, transfer} = contractData; + + let contractTX = await this.arweave.createTransaction({data: initState}, wallet); + + if (+transfer?.winstonQty > 0 && transfer.target.length) { + this.logger.debug('Creating additional transaction with AR transfer', transfer); + contractTX = await this.arweave.createTransaction( + { + data: initState, + target: transfer.target, + quantity: transfer.winstonQty + }, + wallet + ); + } + + if (tags?.length) { + for (const tag of tags) { + contractTX.addTag(tag.name.toString(), tag.value.toString()); + } + } + contractTX.addTag(SmartWeaveTags.APP_NAME, 'SmartWeaveContract'); + contractTX.addTag(SmartWeaveTags.APP_VERSION, '0.3.0'); + contractTX.addTag(SmartWeaveTags.CONTRACT_SRC_TX_ID, srcTxId); + contractTX.addTag(SmartWeaveTags.SDK, 'RedStone'); + contractTX.addTag(SmartWeaveTags.CONTENT_TYPE, 'application/json'); + contractTX.addTag(SmartWeaveTags.CONTRACT_TYPE, contractData.contractType); + if (contractData.contractType == 'wasm') { + contractTX.addTag(SmartWeaveTags.WASM_LANG, contractData.wasmLang); + } + + await this.arweave.transactions.sign(contractTX, wallet); + + const response = await this.arweave.transactions.post(contractTX); + if (response.status === 200 || response.status === 208) { + return contractTX.id; + } else { + throw new Error('Unable to write Contract Initial State'); + } } - } } function dummyImports(moduleImports: WebAssembly.ModuleImportDescriptor[]) { - const imports = {}; + const imports = {}; - moduleImports.forEach((moduleImport) => { - if (!Object.prototype.hasOwnProperty.call(imports, moduleImport.module)) { - imports[moduleImport.module] = {}; - } - imports[moduleImport.module][moduleImport.name] = function () {}; - }); + moduleImports.forEach((moduleImport) => { + if (!Object.prototype.hasOwnProperty.call(imports, moduleImport.module)) { + imports[moduleImport.module] = {}; + } + imports[moduleImport.module][moduleImport.name] = function () { + }; + }); - return imports; + return imports; } diff --git a/src/core/modules/impl/DefaultStateEvaluator.ts b/src/core/modules/impl/DefaultStateEvaluator.ts index 6bdf777..0e889f6 100644 --- a/src/core/modules/impl/DefaultStateEvaluator.ts +++ b/src/core/modules/impl/DefaultStateEvaluator.ts @@ -129,7 +129,7 @@ export abstract class DefaultStateEvaluator implements StateEvaluator { }); if (newState !== null) { - currentState = deepCopy(newState.cachedValue.state); + currentState = newState.cachedValue.state; validity[interactionTx.id] = newState.cachedValue.validity[interactionTx.id]; const toCache = new EvalStateResult(currentState, validity); diff --git a/src/core/modules/impl/HandlerExecutorFactory.ts b/src/core/modules/impl/HandlerExecutorFactory.ts index c7787f8..daa86a1 100644 --- a/src/core/modules/impl/HandlerExecutorFactory.ts +++ b/src/core/modules/impl/HandlerExecutorFactory.ts @@ -1,20 +1,23 @@ import Arweave from 'arweave'; import { + Benchmark, ContractDefinition, EvalStateResult, ExecutionContext, ExecutorFactory, GQLNodeInterface, LoggerFactory, + MemCache, normalizeContractSource, - SmartWeaveGlobal + SmartWeaveGlobal, + SwCache } from '@smartweave'; import { ContractHandlerApi } from './ContractHandlerApi'; import loader from '@assemblyscript/loader'; import { WasmContractHandlerApi } from './WasmContractHandlerApi'; -import metering from 'redstone-wasm-metering'; import { asWasmImports } from './wasm/as-wasm-imports'; import { rustWasmImports } from './wasm/rust-wasm-imports'; +import { Go } from './wasm/go-wasm-imports'; /** * A factory that produces handlers that are compatible with the "current" style of @@ -22,6 +25,7 @@ import { rustWasmImports } from './wasm/rust-wasm-imports'; */ export class HandlerExecutorFactory implements ExecutorFactory> { private readonly logger = LoggerFactory.INST.create('HandlerExecutorFactory'); + private readonly cache: SwCache = new MemCache(); constructor(private readonly arweave: Arweave) {} @@ -34,12 +38,9 @@ export class HandlerExecutorFactory implements ExecutorFactory { @@ -85,11 +89,29 @@ export class HandlerExecutorFactory implements ExecutorFactory implements HandlerApi { this.swGlobal.gasUsed = 0; this.assignReadContractState(executionContext, currentTx, currentResult, interactionTx); - const handlerResult = await this.doHandle(interaction); return { @@ -94,6 +93,10 @@ export class WasmContractHandlerApi implements HandlerApi { this.wasmExports.initState(state); break; } + case "go": { + this.wasmExports.initState(stringify(state)); + break; + } default: { throw new Error(`Support for ${this.contractDefinition.srcWasmLang} not implemented yet.`); } @@ -134,6 +137,10 @@ export class WasmContractHandlerApi implements HandlerApi { } } } + case "go": { + const result = await this.wasmExports.handle(stringify(action.input)); + return JSON.parse(result); + } default: { throw new Error(`Support for ${this.contractDefinition.srcWasmLang} not implemented yet.`); } @@ -149,6 +156,10 @@ export class WasmContractHandlerApi implements HandlerApi { case 'rust': { return this.wasmExports.currentState(); } + case "go": { + const result = this.wasmExports.currentState(); + return JSON.parse(result); + } default: { throw new Error(`Support for ${this.contractDefinition.srcWasmLang} not implemented yet.`); } diff --git a/src/core/modules/impl/wasm/as-wasm-imports.ts b/src/core/modules/impl/wasm/as-wasm-imports.ts index 2ddb236..2d02f90 100644 --- a/src/core/modules/impl/wasm/as-wasm-imports.ts +++ b/src/core/modules/impl/wasm/as-wasm-imports.ts @@ -1,7 +1,7 @@ import { LoggerFactory, SmartWeaveGlobal } from '@smartweave'; export const asWasmImports = (swGlobal: SmartWeaveGlobal, wasmInstance: any): any => { - const wasmLogger = LoggerFactory.INST.create('WASM'); + const wasmLogger = LoggerFactory.INST.create('WASM:AS'); return { metering: { diff --git a/src/core/modules/impl/wasm/go-wasm-imports.ts b/src/core/modules/impl/wasm/go-wasm-imports.ts new file mode 100644 index 0000000..856194a --- /dev/null +++ b/src/core/modules/impl/wasm/go-wasm-imports.ts @@ -0,0 +1,502 @@ +// Copyright 2018 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. +// +// This file has been modified for use by the TinyGo compiler. + +// note: this file has been further modified to be used +// with RedStone SmartWeave SDK. +/* tslint:disable */ +/* eslint-disable */ +/* YOLO */ +import {LoggerFactory, SmartWeaveGlobal} from "@smartweave"; + +const encoder = new TextEncoder(); +const decoder = new TextDecoder("utf-8"); +let logLine = []; + +let globalJsModule; + +// crying while committing... +(function (global) { + globalJsModule = global; + globalJsModule.redstone = { + go: {} + }; +}).call( + this, + typeof global !== 'undefined' + ? global + : typeof self !== 'undefined' + ? self + : typeof window !== 'undefined' + ? window + : {}); + +export class Go { + private _callbackTimeouts: Map; + private _nextCallbackTimeoutID: number; + private _inst: any; + private _values: any; + private _ids: any; + private _idPool: any; + private _goRefCounts: any; + importObject: any; + private exited: boolean; + private _resolveCallbackPromise: () => void; + private _pendingEvent: any; + private _id: string; + public exports: any; + + constructor(swGlobal: SmartWeaveGlobal) { + this._callbackTimeouts = new Map(); + this._nextCallbackTimeoutID = 1; + + const wasmLogger = LoggerFactory.INST.create('WASM:Go'); + + let go = this; + // it is safe to redeclare this for each new module in the global scope + // - this function is called only during module initialization. + globalJsModule.redstone.go = { + WasmModule: { + registerWasmModule: function (moduleId) { + go._id = moduleId; + go.exports = globalJsModule[moduleId]; + delete globalJsModule[moduleId]; + + globalJsModule.redstone.go[moduleId] = {}; + globalJsModule.redstone.go[moduleId].imports = { + console: { + log: function (...args) { + wasmLogger.debug(args[0], ...args.slice(1)); + } + }, + Transaction: { + id: function () { + return swGlobal.transaction.id; + }, + owner: function () { + return swGlobal.transaction.owner; + }, + target: function () { + return swGlobal.transaction.target; + } + }, + Block: { + indep_hash: function () { + return swGlobal.block.indep_hash; + }, + height: function () { + return swGlobal.block.height; + }, + timestamp: function () { + return swGlobal.block.timestamp; + } + }, + Contract: { + id: function () { + return swGlobal.contract.id; + }, + owner: function () { + return swGlobal.contract.owner; + } + }, + SmartWeave: { + readContractState: async function (contractTxId) { + return await swGlobal.contracts.readContractState(contractTxId); + } + }, + }; + + } + } + } + + const mem = () => { + // The buffer may change when requesting more memory. + return new DataView(this._inst.exports.memory.buffer); + } + + const setInt64 = (addr, v) => { + mem().setUint32(addr + 0, v, true); + mem().setUint32(addr + 4, Math.floor(v / 4294967296), true); + } + + const getInt64 = (addr) => { + const low = mem().getUint32(addr + 0, true); + const high = mem().getInt32(addr + 4, true); + return low + high * 4294967296; + } + + const loadValue = (addr) => { + const f = mem().getFloat64(addr, true); + if (f === 0) { + return undefined; + } + if (!isNaN(f)) { + return f; + } + + const id = mem().getUint32(addr, true); + return this._values[id]; + } + + const storeValue = (addr, v) => { + const nanHead = 0x7FF80000; + + if (typeof v === "number") { + if (isNaN(v)) { + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 0, true); + return; + } + if (v === 0) { + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 1, true); + return; + } + mem().setFloat64(addr, v, true); + return; + } + + switch (v) { + case undefined: + mem().setFloat64(addr, 0, true); + return; + case null: + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 2, true); + return; + case true: + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 3, true); + return; + case false: + mem().setUint32(addr + 4, nanHead, true); + mem().setUint32(addr, 4, true); + return; + } + + let id = this._ids.get(v); + if (id === undefined) { + id = this._idPool.pop(); + if (id === undefined) { + id = this._values.length; + } + this._values[id] = v; + this._goRefCounts[id] = 0; + this._ids.set(v, id); + } + this._goRefCounts[id]++; + let typeFlag = 1; + switch (typeof v) { + case "string": + typeFlag = 2; + break; + case "symbol": + typeFlag = 3; + break; + case "function": + typeFlag = 4; + break; + } + mem().setUint32(addr + 4, nanHead | typeFlag, true); + mem().setUint32(addr, id, true); + } + + const loadSlice = (array, len, cap = null) => { + return new Uint8Array(this._inst.exports.memory.buffer, array, len); + } + + const loadSliceOfValues = (array, len, cap) => { + const a = new Array(len); + for (let i = 0; i < len; i++) { + a[i] = loadValue(array + i * 8); + } + return a; + } + + const loadString = (ptr, len) => { + return decoder.decode(new DataView(this._inst.exports.memory.buffer, ptr, len)); + } + + const timeOrigin = Date.now() - performance.now(); + this.importObject = { + wasi_snapshot_preview1: { + // https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md#fd_write + fd_write: function (fd, iovs_ptr, iovs_len, nwritten_ptr) { + let nwritten = 0; + if (fd == 1) { + for (let iovs_i = 0; iovs_i < iovs_len; iovs_i++) { + let iov_ptr = iovs_ptr + iovs_i * 8; // assuming wasm32 + let ptr = mem().getUint32(iov_ptr + 0, true); + let len = mem().getUint32(iov_ptr + 4, true); + nwritten += len; + for (let i = 0; i < len; i++) { + let c = mem().getUint8(ptr + i); + if (c == 13) { // CR + // ignore + } else if (c == 10) { // LF + // write line + let line = decoder.decode(new Uint8Array(logLine)); + logLine = []; + console.log(line); + } else { + logLine.push(c); + } + } + } + } else { + console.error('invalid file descriptor:', fd); + } + mem().setUint32(nwritten_ptr, nwritten, true); + return 0; + }, + fd_close: () => 0, // dummy + fd_fdstat_get: () => 0, // dummy + fd_seek: () => 0, // dummy + "proc_exit": (code) => { + // @ts-ignore + if (global.process) { + // Node.js + process.exit(code); + } else { + // Can't exit in a browser. + throw 'trying to exit with code ' + code; + } + }, + random_get: (bufPtr, bufLen) => { + crypto.getRandomValues(loadSlice(bufPtr, bufLen, null)); + return 0; + }, + }, + env: { + // func ticks() float64 + "runtime.ticks": () => { + return timeOrigin + performance.now(); + }, + + // func sleepTicks(timeout float64) + "runtime.sleepTicks": (timeout) => { + // Do not sleep, only reactivate scheduler after the given timeout. + setTimeout(this._inst.exports.go_scheduler, timeout); + }, + + // func finalizeRef(v ref) + // https://github.com/tinygo-org/tinygo/issues/1140#issuecomment-718145455 + "syscall/js.finalizeRef": (v_addr) => { + // Note: TinyGo does not support finalizers so this is only called + // for one specific case, by js.go:jsString. + const id = mem().getUint32(v_addr, true); + this._goRefCounts[id]--; + if (this._goRefCounts[id] === 0) { + const v = this._values[id]; + this._values[id] = null; + this._ids.delete(v); + this._idPool.push(id); + } + }, + + // func stringVal(value string) ref + "syscall/js.stringVal": (ret_ptr, value_ptr, value_len) => { + const s = loadString(value_ptr, value_len); + storeValue(ret_ptr, s); + }, + + // func valueGet(v ref, p string) ref + "syscall/js.valueGet": (retval, v_addr, p_ptr, p_len) => { + let prop = loadString(p_ptr, p_len); + let value = loadValue(v_addr); + let result = Reflect.get(value, prop); + storeValue(retval, result); + }, + + // func valueSet(v ref, p string, x ref) + "syscall/js.valueSet": (v_addr, p_ptr, p_len, x_addr) => { + const v = loadValue(v_addr); + const p = loadString(p_ptr, p_len); + const x = loadValue(x_addr); + Reflect.set(v, p, x); + }, + + // func valueDelete(v ref, p string) + "syscall/js.valueDelete": (v_addr, p_ptr, p_len) => { + const v = loadValue(v_addr); + const p = loadString(p_ptr, p_len); + Reflect.deleteProperty(v, p); + }, + + // func valueIndex(v ref, i int) ref + "syscall/js.valueIndex": (ret_addr, v_addr, i) => { + storeValue(ret_addr, Reflect.get(loadValue(v_addr), i)); + }, + + // valueSetIndex(v ref, i int, x ref) + "syscall/js.valueSetIndex": (v_addr, i, x_addr) => { + Reflect.set(loadValue(v_addr), i, loadValue(x_addr)); + }, + + // func valueCall(v ref, m string, args []ref) (ref, bool) + "syscall/js.valueCall": (ret_addr, v_addr, m_ptr, m_len, args_ptr, args_len, args_cap) => { + const v = loadValue(v_addr); + const name = loadString(m_ptr, m_len); + const args = loadSliceOfValues(args_ptr, args_len, args_cap); + try { + const m = Reflect.get(v, name); + storeValue(ret_addr, Reflect.apply(m, v, args)); + mem().setUint8(ret_addr + 8, 1); + } catch (err) { + storeValue(ret_addr, err); + mem().setUint8(ret_addr + 8, 0); + } + }, + + // func valueInvoke(v ref, args []ref) (ref, bool) + "syscall/js.valueInvoke": (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + try { + const v = loadValue(v_addr); + const args = loadSliceOfValues(args_ptr, args_len, args_cap); + storeValue(ret_addr, Reflect.apply(v, undefined, args)); + mem().setUint8(ret_addr + 8, 1); + } catch (err) { + storeValue(ret_addr, err); + mem().setUint8(ret_addr + 8, 0); + } + }, + + // func valueNew(v ref, args []ref) (ref, bool) + "syscall/js.valueNew": (ret_addr, v_addr, args_ptr, args_len, args_cap) => { + const v = loadValue(v_addr); + const args = loadSliceOfValues(args_ptr, args_len, args_cap); + try { + storeValue(ret_addr, Reflect.construct(v, args)); + mem().setUint8(ret_addr + 8, 1); + } catch (err) { + storeValue(ret_addr, err); + mem().setUint8(ret_addr + 8, 0); + } + }, + + // func valueLength(v ref) int + "syscall/js.valueLength": (v_addr) => { + return loadValue(v_addr).length; + }, + + // valuePrepareString(v ref) (ref, int) + "syscall/js.valuePrepareString": (ret_addr, v_addr) => { + const s = String(loadValue(v_addr)); + const str = encoder.encode(s); + storeValue(ret_addr, str); + setInt64(ret_addr + 8, str.length); + }, + + // valueLoadString(v ref, b []byte) + "syscall/js.valueLoadString": (v_addr, slice_ptr, slice_len, slice_cap) => { + const str = loadValue(v_addr); + loadSlice(slice_ptr, slice_len, slice_cap).set(str); + }, + + // func valueInstanceOf(v ref, t ref) bool + "syscall/js.valueInstanceOf": (v_addr, t_addr) => { + return loadValue(v_addr) instanceof loadValue(t_addr); + }, + + // func copyBytesToGo(dst []byte, src ref) (int, bool) + "syscall/js.copyBytesToGo": (ret_addr, dest_addr, dest_len, dest_cap, source_addr) => { + let num_bytes_copied_addr = ret_addr; + let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable + + const dst = loadSlice(dest_addr, dest_len); + const src = loadValue(source_addr); + if (!(src instanceof Uint8Array)) { + mem().setUint8(returned_status_addr, 0); // Return "not ok" status + return; + } + const toCopy = src.subarray(0, dst.length); + dst.set(toCopy); + setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint8(returned_status_addr, 1); // Return "ok" status + }, + + // copyBytesToJS(dst ref, src []byte) (int, bool) + // Originally copied from upstream Go project, then modified: + // https://github.com/golang/go/blob/3f995c3f3b43033013013e6c7ccc93a9b1411ca9/misc/wasm/wasm_exec.js#L404-L416 + "syscall/js.copyBytesToJS": (ret_addr, dest_addr, source_addr, source_len, source_cap) => { + let num_bytes_copied_addr = ret_addr; + let returned_status_addr = ret_addr + 4; // Address of returned boolean status variable + + const dst = loadValue(dest_addr); + const src = loadSlice(source_addr, source_len); + if (!(dst instanceof Uint8Array)) { + mem().setUint8(returned_status_addr, 0); // Return "not ok" status + return; + } + const toCopy = src.subarray(0, dst.length); + dst.set(toCopy); + setInt64(num_bytes_copied_addr, toCopy.length); + mem().setUint8(returned_status_addr, 1); // Return "ok" status + }, + } + }; + } + + async run(instance) { + this._inst = instance; + this._values = [ // JS values that Go currently has references to, indexed by reference id + NaN, + 0, + null, + true, + false, + global, + this, + ]; + this._goRefCounts = []; // number of references that Go has to a JS value, indexed by reference id + this._ids = new Map(); // mapping from JS values to reference ids + this._idPool = []; // unused ids that have been garbage collected + this.exited = false; // whether the Go program has exited + + const mem = new DataView(this._inst.exports.memory.buffer) + + while (true) { + const callbackPromise = new Promise((resolve) => { + this._resolveCallbackPromise = () => { + if (this.exited) { + throw new Error("bad callback: Go program has already exited"); + } + setTimeout(resolve, 0); // make sure it is asynchronous + }; + }); + this._inst.exports._start(); + if (this.exited) { + break; + } + await callbackPromise; + } + } + + _resume() { + if (this.exited) { + throw new Error("Go program has already exited"); + } + this._inst.exports.resume(); + if (this.exited) { + this._resolveExitPromise(); + } + } + + _makeFuncWrapper(id) { + const go = this; + return function () { + const event = {id: id, this: this, args: arguments}; + go._pendingEvent = event; + go._resume(); + // @ts-ignore + return event.result; + }; + } + + private _resolveExitPromise() { + + } +} diff --git a/src/plugins/CacheableExecutorFactory.ts b/src/plugins/CacheableExecutorFactory.ts index 8a2c2e6..bd7f265 100644 --- a/src/plugins/CacheableExecutorFactory.ts +++ b/src/plugins/CacheableExecutorFactory.ts @@ -30,6 +30,6 @@ export class CacheableExecutorFactory implements ExecutorFactory { // switching off caching for now // - https://github.com/redstone-finance/redstone-smartcontracts/issues/53 // probably should be cached on a lower level - i.e. either handler function (for js contracts) - // or wasm instance. + // or wasm module. } } diff --git a/src/utils/ArweaveWrapper.ts b/src/utils/ArweaveWrapper.ts index a3fe5dc..24eb60e 100644 --- a/src/utils/ArweaveWrapper.ts +++ b/src/utils/ArweaveWrapper.ts @@ -88,9 +88,15 @@ export class ArweaveWrapper { } async txData(id: string): Promise { + // https://github.com/textury/arlocal/issues/83 + const txData = (await this.arweave.transactions.getData(id, { + decode: true + })) as Uint8Array; + return isomorphicBuffer.from(txData); + // note: this is using arweave.net cache - // not very safe and clever, but fast... - const response = await fetch(`${this.baseUrl}/${id}`); + /*const response = await fetch(`${this.baseUrl}/${id}`); if (!response.ok) { this.logger.warn(`Unable to load data from arweave.net/${id} endpoint, falling back to arweave.js`); // fallback to arweave-js as a last resort.. @@ -101,7 +107,7 @@ export class ArweaveWrapper { } else { const buffer = await response.arrayBuffer(); return isomorphicBuffer.from(buffer); - } + }*/ } async txDataString(id: string): Promise { diff --git a/yarn.lock b/yarn.lock index f9b6bf6..5569020 100644 --- a/yarn.lock +++ b/yarn.lock @@ -370,345 +370,345 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@ethersproject/abi@5.5.0", "@ethersproject/abi@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.5.0.tgz#fb52820e22e50b854ff15ce1647cc508d6660613" - integrity sha512-loW7I4AohP5KycATvc0MgujU6JyCHPqHdeoo9z3Nr9xEiNioxa65ccdm1+fsoJhkuhdRtfcL8cfyGamz2AxZ5w== +"@ethersproject/abi@5.6.0", "@ethersproject/abi@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.0.tgz#ea07cbc1eec2374d32485679c12408005895e9f3" + integrity sha512-AhVByTwdXCc2YQ20v300w6KVHle9g2OFc28ZAFCPnJyEpkv1xKXjZcSTgWOlv1i+0dqlgF8RCF2Rn2KC1t+1Vg== dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" -"@ethersproject/abstract-provider@5.5.1", "@ethersproject/abstract-provider@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.5.1.tgz#2f1f6e8a3ab7d378d8ad0b5718460f85649710c5" - integrity sha512-m+MA/ful6eKbxpr99xUYeRvLkfnlqzrF8SZ46d/xFB1A7ZVknYc/sXJG0RcufF52Qn2jeFj1hhcoQ7IXjNKUqg== +"@ethersproject/abstract-provider@5.6.0", "@ethersproject/abstract-provider@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" + integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/web" "^5.6.0" -"@ethersproject/abstract-signer@5.5.0", "@ethersproject/abstract-signer@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.5.0.tgz#590ff6693370c60ae376bf1c7ada59eb2a8dd08d" - integrity sha512-lj//7r250MXVLKI7sVarXAbZXbv9P50lgmJQGr2/is82EwEb8r7HrxsmMqAjTsztMYy7ohrIhGMIml+Gx4D3mA== +"@ethersproject/abstract-signer@5.6.0", "@ethersproject/abstract-signer@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" + integrity sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ== dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" -"@ethersproject/address@5.5.0", "@ethersproject/address@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.5.0.tgz#bcc6f576a553f21f3dd7ba17248f81b473c9c78f" - integrity sha512-l4Nj0eWlTUh6ro5IbPTgbpT4wRbdH5l8CQf7icF7sb/SI3Nhd9Y9HzhonTSTi6CefI0necIw7LJqQPopPLZyWw== +"@ethersproject/address@5.6.0", "@ethersproject/address@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" + integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" -"@ethersproject/base64@5.5.0", "@ethersproject/base64@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.5.0.tgz#881e8544e47ed976930836986e5eb8fab259c090" - integrity sha512-tdayUKhU1ljrlHzEWbStXazDpsx4eg1dBXUSI6+mHlYklOXoXF6lZvw8tnD6oVaWfnMxAgRSKROg3cVKtCcppA== +"@ethersproject/base64@5.6.0", "@ethersproject/base64@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" + integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== dependencies: - "@ethersproject/bytes" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" -"@ethersproject/basex@5.5.0", "@ethersproject/basex@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.5.0.tgz#e40a53ae6d6b09ab4d977bd037010d4bed21b4d3" - integrity sha512-ZIodwhHpVJ0Y3hUCfUucmxKsWQA5TMnavp5j/UOuDdzZWzJlRmuOjcTMIGgHCYuZmHt36BfiSyQPSRskPxbfaQ== +"@ethersproject/basex@5.6.0", "@ethersproject/basex@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" + integrity sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/properties" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/properties" "^5.6.0" -"@ethersproject/bignumber@5.5.0", "@ethersproject/bignumber@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.5.0.tgz#875b143f04a216f4f8b96245bde942d42d279527" - integrity sha512-6Xytlwvy6Rn3U3gKEc1vP7nR92frHkv6wtVr95LFR3jREXiCPzdWxKQ1cx4JGQBXxcguAwjA8murlYN2TSiEbg== +"@ethersproject/bignumber@5.6.0", "@ethersproject/bignumber@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" + integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" bn.js "^4.11.9" -"@ethersproject/bytes@5.5.0", "@ethersproject/bytes@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.5.0.tgz#cb11c526de657e7b45d2e0f0246fb3b9d29a601c" - integrity sha512-ABvc7BHWhZU9PNM/tANm/Qx4ostPGadAuQzWTr3doklZOhDlmcBqclrQe/ZXUIj3K8wC28oYeuRa+A37tX9kog== +"@ethersproject/bytes@5.6.0", "@ethersproject/bytes@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.0.tgz#81652f2a0e04533575befadce555213c11d8aa20" + integrity sha512-3hJPlYemb9V4VLfJF5BfN0+55vltPZSHU3QKUyP9M3Y2TcajbiRrz65UG+xVHOzBereB1b9mn7r12o177xgN7w== dependencies: - "@ethersproject/logger" "^5.5.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/constants@5.5.0", "@ethersproject/constants@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.5.0.tgz#d2a2cd7d94bd1d58377d1d66c4f53c9be4d0a45e" - integrity sha512-2MsRRVChkvMWR+GyMGY4N1sAX9Mt3J9KykCsgUFd/1mwS0UH1qw+Bv9k1UJb3X3YJYFco9H20pjSlOIfCG5HYQ== +"@ethersproject/constants@5.6.0", "@ethersproject/constants@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" + integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== dependencies: - "@ethersproject/bignumber" "^5.5.0" + "@ethersproject/bignumber" "^5.6.0" -"@ethersproject/contracts@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.5.0.tgz#b735260d4bd61283a670a82d5275e2a38892c197" - integrity sha512-2viY7NzyvJkh+Ug17v7g3/IJC8HqZBDcOjYARZLdzRxrfGlRgmYgl6xPRKVbEzy1dWKw/iv7chDcS83pg6cLxg== +"@ethersproject/contracts@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.0.tgz#60f2cfc7addd99a865c6c8cfbbcec76297386067" + integrity sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw== dependencies: - "@ethersproject/abi" "^5.5.0" - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" + "@ethersproject/abi" "^5.6.0" + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" -"@ethersproject/hash@5.5.0", "@ethersproject/hash@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.5.0.tgz#7cee76d08f88d1873574c849e0207dcb32380cc9" - integrity sha512-dnGVpK1WtBjmnp3mUT0PlU2MpapnwWI0PibldQEq1408tQBAbZpPidkWoVVuNMOl/lISO3+4hXZWCL3YV7qzfg== +"@ethersproject/hash@5.6.0", "@ethersproject/hash@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" + integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" -"@ethersproject/hdnode@5.5.0", "@ethersproject/hdnode@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.5.0.tgz#4a04e28f41c546f7c978528ea1575206a200ddf6" - integrity sha512-mcSOo9zeUg1L0CoJH7zmxwUG5ggQHU1UrRf8jyTYy6HxdZV+r0PBoL1bxr+JHIPXRzS6u/UW4mEn43y0tmyF8Q== +"@ethersproject/hdnode@5.6.0", "@ethersproject/hdnode@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.0.tgz#9dcbe8d629bbbcf144f2cae476337fe92d320998" + integrity sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw== dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/basex" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/signing-key" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/wordlists" "^5.6.0" -"@ethersproject/json-wallets@5.5.0", "@ethersproject/json-wallets@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.5.0.tgz#dd522d4297e15bccc8e1427d247ec8376b60e325" - integrity sha512-9lA21XQnCdcS72xlBn1jfQdj2A1VUxZzOzi9UkNdnokNKke/9Ya2xA9aIK1SC3PQyBDLt4C+dfps7ULpkvKikQ== +"@ethersproject/json-wallets@5.6.0", "@ethersproject/json-wallets@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" + integrity sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ== dependencies: - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/pbkdf2" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/hdnode" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.5.0", "@ethersproject/keccak256@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.5.0.tgz#e4b1f9d7701da87c564ffe336f86dcee82983492" - integrity sha512-5VoFCTjo2rYbBe1l2f4mccaRFN/4VQEYFwwn04aJV2h7qf4ZvI2wFxUE1XOX+snbwCLRzIeikOqtAoPwMza9kg== +"@ethersproject/keccak256@5.6.0", "@ethersproject/keccak256@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" + integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== dependencies: - "@ethersproject/bytes" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" js-sha3 "0.8.0" -"@ethersproject/logger@5.5.0", "@ethersproject/logger@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.5.0.tgz#0c2caebeff98e10aefa5aef27d7441c7fd18cf5d" - integrity sha512-rIY/6WPm7T8n3qS2vuHTUBPdXHl+rGxWxW5okDfo9J4Z0+gRRZT0msvUdIJkE4/HS29GUMziwGaaKO2bWONBrg== +"@ethersproject/logger@5.6.0", "@ethersproject/logger@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== -"@ethersproject/networks@5.5.2", "@ethersproject/networks@^5.5.0": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.5.2.tgz#784c8b1283cd2a931114ab428dae1bd00c07630b" - integrity sha512-NEqPxbGBfy6O3x4ZTISb90SjEDkWYDUbEeIFhJly0F7sZjoQMnj5KYzMSkMkLKZ+1fGpx00EDpHQCy6PrDupkQ== +"@ethersproject/networks@5.6.0", "@ethersproject/networks@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.0.tgz#486d03fff29b4b6b5414d47a232ded09fe10de5e" + integrity sha512-DaVzgyThzHgSDLuURhvkp4oviGoGe9iTZW4jMEORHDRCgSZ9K9THGFKqL+qGXqPAYLEgZTf5z2w56mRrPR1MjQ== dependencies: - "@ethersproject/logger" "^5.5.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/pbkdf2@5.5.0", "@ethersproject/pbkdf2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.5.0.tgz#e25032cdf02f31505d47afbf9c3e000d95c4a050" - integrity sha512-SaDvQFvXPnz1QGpzr6/HToLifftSXGoXrbpZ6BvoZhmx4bNLHrxDe8MZisuecyOziP1aVEwzC2Hasj+86TgWVg== +"@ethersproject/pbkdf2@5.6.0", "@ethersproject/pbkdf2@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" + integrity sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" -"@ethersproject/properties@5.5.0", "@ethersproject/properties@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.5.0.tgz#61f00f2bb83376d2071baab02245f92070c59995" - integrity sha512-l3zRQg3JkD8EL3CPjNK5g7kMx4qSwiR60/uk5IVjd3oq1MZR5qUg40CNOoEJoX5wc3DyY5bt9EbMk86C7x0DNA== +"@ethersproject/properties@5.6.0", "@ethersproject/properties@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== dependencies: - "@ethersproject/logger" "^5.5.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/providers@5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.5.3.tgz#56c2b070542ac44eb5de2ed3cf6784acd60a3130" - integrity sha512-ZHXxXXXWHuwCQKrgdpIkbzMNJMvs+9YWemanwp1fA7XZEv7QlilseysPvQe0D7Q7DlkJX/w/bGA1MdgK2TbGvA== +"@ethersproject/providers@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.0.tgz#08ec8e2666771e3a347e66c8f664a2af97366534" + integrity sha512-6+5PKXTWAttJWFWF8+xCDTCa2/dtq9BNrdKQHGl0IyIOwj99vM6OeThmIRcsIAzIOb8m0XS6w+1KFZwrf3j9nw== dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/basex" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/networks" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/web" "^5.5.0" + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/basex" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/strings" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/web" "^5.6.0" bech32 "1.1.4" ws "7.4.6" -"@ethersproject/random@5.5.1", "@ethersproject/random@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.5.1.tgz#7cdf38ea93dc0b1ed1d8e480ccdaf3535c555415" - integrity sha512-YaU2dQ7DuhL5Au7KbcQLHxcRHfgyNgvFV4sQOo0HrtW3Zkrc9ctWNz8wXQ4uCSfSDsqX2vcjhroxU5RQRV0nqA== +"@ethersproject/random@5.6.0", "@ethersproject/random@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" + integrity sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/rlp@5.5.0", "@ethersproject/rlp@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.5.0.tgz#530f4f608f9ca9d4f89c24ab95db58ab56ab99a0" - integrity sha512-hLv8XaQ8PTI9g2RHoQGf/WSxBfTB/NudRacbzdxmst5VHAqd1sMibWG7SENzT5Dj3yZ3kJYx+WiRYEcQTAkcYA== +"@ethersproject/rlp@5.6.0", "@ethersproject/rlp@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" + integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/sha2@5.5.0", "@ethersproject/sha2@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.5.0.tgz#a40a054c61f98fd9eee99af2c3cc6ff57ec24db7" - integrity sha512-B5UBoglbCiHamRVPLA110J+2uqsifpZaTmid2/7W5rbtYVz6gus6/hSDieIU/6gaKIDcOj12WnOdiymEUHIAOA== +"@ethersproject/sha2@5.6.0", "@ethersproject/sha2@^5.5.0", "@ethersproject/sha2@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" + integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" -"@ethersproject/signing-key@5.5.0", "@ethersproject/signing-key@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.5.0.tgz#2aa37169ce7e01e3e80f2c14325f624c29cedbe0" - integrity sha512-5VmseH7qjtNmDdZBswavhotYbWB0bOwKIlOTSlX14rKn5c11QmJwGt4GHeo7NrL/Ycl7uo9AHvEqs5xZgFBTng== +"@ethersproject/signing-key@5.6.0", "@ethersproject/signing-key@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.0.tgz#4f02e3fb09e22b71e2e1d6dc4bcb5dafa69ce042" + integrity sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" bn.js "^4.11.9" elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/solidity@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.5.0.tgz#2662eb3e5da471b85a20531e420054278362f93f" - integrity sha512-9NgZs9LhGMj6aCtHXhtmFQ4AN4sth5HuFXVvAQtzmm0jpSCNOTGtrHZJAeYTh7MBjRR8brylWZxBZR9zDStXbw== +"@ethersproject/solidity@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.0.tgz#64657362a596bf7f5630bdc921c07dd78df06dc3" + integrity sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/sha2" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/sha2" "^5.6.0" + "@ethersproject/strings" "^5.6.0" -"@ethersproject/strings@5.5.0", "@ethersproject/strings@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.5.0.tgz#e6784d00ec6c57710755699003bc747e98c5d549" - integrity sha512-9fy3TtF5LrX/wTrBaT8FGE6TDJyVjOvXynXJz5MT5azq+E6D92zuKNx7i29sWW2FjVOaWjAsiZ1ZWznuduTIIQ== +"@ethersproject/strings@5.6.0", "@ethersproject/strings@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" + integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/transactions@5.5.0", "@ethersproject/transactions@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.5.0.tgz#7e9bf72e97bcdf69db34fe0d59e2f4203c7a2908" - integrity sha512-9RZYSKX26KfzEd/1eqvv8pLauCKzDTub0Ko4LfIgaERvRuwyaNV78mJs7cpIgZaDl6RJui4o49lHwwCM0526zA== +"@ethersproject/transactions@5.6.0", "@ethersproject/transactions@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" + integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== dependencies: - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/rlp" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/rlp" "^5.6.0" + "@ethersproject/signing-key" "^5.6.0" -"@ethersproject/units@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.5.0.tgz#104d02db5b5dc42cc672cc4587bafb87a95ee45e" - integrity sha512-7+DpjiZk4v6wrikj+TCyWWa9dXLNU73tSTa7n0TSJDxkYbV3Yf1eRh9ToMLlZtuctNYu9RDNNy2USq3AdqSbag== +"@ethersproject/units@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.0.tgz#e5cbb1906988f5740254a21b9ded6bd51e826d9c" + integrity sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw== dependencies: - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/constants" "^5.5.0" - "@ethersproject/logger" "^5.5.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/constants" "^5.6.0" + "@ethersproject/logger" "^5.6.0" -"@ethersproject/wallet@5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.5.0.tgz#322a10527a440ece593980dca6182f17d54eae75" - integrity sha512-Mlu13hIctSYaZmUOo7r2PhNSd8eaMPVXe1wxrz4w4FCE4tDYBywDH+bAR1Xz2ADyXGwqYMwstzTrtUVIsKDO0Q== +"@ethersproject/wallet@5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.0.tgz#33d11a806d783864208f348709a5a3badac8e22a" + integrity sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg== dependencies: - "@ethersproject/abstract-provider" "^5.5.0" - "@ethersproject/abstract-signer" "^5.5.0" - "@ethersproject/address" "^5.5.0" - "@ethersproject/bignumber" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/hdnode" "^5.5.0" - "@ethersproject/json-wallets" "^5.5.0" - "@ethersproject/keccak256" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/random" "^5.5.0" - "@ethersproject/signing-key" "^5.5.0" - "@ethersproject/transactions" "^5.5.0" - "@ethersproject/wordlists" "^5.5.0" + "@ethersproject/abstract-provider" "^5.6.0" + "@ethersproject/abstract-signer" "^5.6.0" + "@ethersproject/address" "^5.6.0" + "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/hdnode" "^5.6.0" + "@ethersproject/json-wallets" "^5.6.0" + "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.0" + "@ethersproject/signing-key" "^5.6.0" + "@ethersproject/transactions" "^5.6.0" + "@ethersproject/wordlists" "^5.6.0" -"@ethersproject/web@5.5.1", "@ethersproject/web@^5.5.0": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.5.1.tgz#cfcc4a074a6936c657878ac58917a61341681316" - integrity sha512-olvLvc1CB12sREc1ROPSHTdFCdvMh0J5GSJYiQg2D0hdD4QmJDy8QYDb1CvoqD/bF1c++aeKv2sR5uduuG9dQg== +"@ethersproject/web@5.6.0", "@ethersproject/web@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" + integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== dependencies: - "@ethersproject/base64" "^5.5.0" - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@ethersproject/base64" "^5.6.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" -"@ethersproject/wordlists@5.5.0", "@ethersproject/wordlists@^5.5.0": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.5.0.tgz#aac74963aa43e643638e5172353d931b347d584f" - integrity sha512-bL0UTReWDiaQJJYOC9sh/XcRu/9i2jMrzf8VLRmPKx58ckSlOJiohODkECCO50dtLZHcGU6MLXQ4OOrgBwP77Q== +"@ethersproject/wordlists@5.6.0", "@ethersproject/wordlists@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" + integrity sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q== dependencies: - "@ethersproject/bytes" "^5.5.0" - "@ethersproject/hash" "^5.5.0" - "@ethersproject/logger" "^5.5.0" - "@ethersproject/properties" "^5.5.0" - "@ethersproject/strings" "^5.5.0" + "@ethersproject/bytes" "^5.6.0" + "@ethersproject/hash" "^5.6.0" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.0" "@graphql-tools/merge@^8.2.3": version "8.2.3" @@ -1744,10 +1744,10 @@ apollo-server-caching@^3.3.0: dependencies: lru-cache "^6.0.0" -apollo-server-core@^3.6.3: - version "3.6.3" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.6.3.tgz#6b12ffa1af8bc8799930f72360090834915033d1" - integrity sha512-TFJmAlI6vPp1MHOSXqYkE6leAyMekWv/D/3ma11uETkcd3EPjERGmxtTXPJElMVEkOK9BEElYKthCrH7bjYLuw== +apollo-server-core@^3.6.4: + version "3.6.4" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-3.6.4.tgz#dcf3925173a8e9a501ed3975654cb2ed58af3710" + integrity sha512-zttpu/3IeDGhRgIGK84z9HwTgvETDl9zntXiQ0G1tBJgOhDvehSkMiOmy+FKR1HW9+94ao1Olz6ZIyhP0dvzSg== dependencies: "@apollographql/apollo-tools" "^0.5.1" "@apollographql/graphql-playground-html" "1.6.29" @@ -1783,9 +1783,9 @@ apollo-server-errors@^3.3.1: integrity sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA== apollo-server-koa@^3.6.2: - version "3.6.3" - resolved "https://registry.yarnpkg.com/apollo-server-koa/-/apollo-server-koa-3.6.3.tgz#4027cdfd82175548e42a5ef01c055c733b1487c1" - integrity sha512-KDKRjS3i6dQhtXGatRa0ftJQDa+o7Zt5+T0P1HSxGz4FA+w8GJ5Nn0V6PXh6QKNtLPzYu13DGQl6i8dSo6BMQQ== + version "3.6.4" + resolved "https://registry.yarnpkg.com/apollo-server-koa/-/apollo-server-koa-3.6.4.tgz#affda3eae5e90e20ecf801f62c85a4c36d30cf99" + integrity sha512-zG6VpD37WnyX8ycoBjFCoY8d1yKp/MPahyX73rVu8RWKDz6eCLUE/YopOPc2RC/DtxGc039Sv9yo4md5jAKNJw== dependencies: "@koa/cors" "^3.1.0" "@types/accepts" "^1.3.5" @@ -1794,7 +1794,7 @@ apollo-server-koa@^3.6.2: "@types/koa-compose" "^3.2.5" "@types/koa__cors" "^3.0.1" accepts "^1.3.7" - apollo-server-core "^3.6.3" + apollo-server-core "^3.6.4" apollo-server-types "^3.5.1" koa-bodyparser "^4.3.0" koa-compose "^4.1.0" @@ -1882,10 +1882,10 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arlocal@1.1.22: - version "1.1.22" - resolved "https://registry.yarnpkg.com/arlocal/-/arlocal-1.1.22.tgz#75ee7c4f8c7e54f8756f9df35439b764b5486404" - integrity sha512-7p+Ic35ZagEOJRSnxpeJ6Gv6xsUVeBpn50ku1xA6m0eMM3ke+eBdoEVpaSsdaR8sAo840Vn/94Q5AHblw6Jt8Q== +arlocal@1.1.26: + version "1.1.26" + resolved "https://registry.yarnpkg.com/arlocal/-/arlocal-1.1.26.tgz#8193fc7792507c2038dc720e69b8d9bf64ec3c33" + integrity sha512-5rY7z777o5D1sJ+OtanZOPsuJwgeONKLy7PWr4fAWS72q0RAP4JaoTsFk99nhZZcDd4BZJQhtpnbpUih1fs4Aw== dependencies: "@koa/cors" "^3.1.0" apollo-server-koa "^3.6.2" @@ -1902,6 +1902,7 @@ arlocal@1.1.22: koa-logger "^3.2.1" koa-router "^10.1.1" lodash "^4.17.21" + mime "^3.0.0" minimist "^1.2.5" moment "^2.29.1" rfc4648 "^1.5.1" @@ -3433,40 +3434,40 @@ etag@~1.8.1: integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= ethers@^5.5.1: - version "5.5.4" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.5.4.tgz#e1155b73376a2f5da448e4a33351b57a885f4352" - integrity sha512-N9IAXsF8iKhgHIC6pquzRgPBJEzc9auw3JoRkaKe+y4Wl/LFBtDDunNe7YmdomontECAcC5APaAgWZBiu1kirw== + version "5.6.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.0.tgz#924eb965dc03963fad0a09ce687efdf49aca3b45" + integrity sha512-00FP71jt6bW3ndO5DhgH9mLIZhoCGnAKFLu8qig5KmV03ubEChKf2ilB3g6fX512tTYo+tSMDJ5WpCJWdBHkBQ== dependencies: - "@ethersproject/abi" "5.5.0" - "@ethersproject/abstract-provider" "5.5.1" - "@ethersproject/abstract-signer" "5.5.0" - "@ethersproject/address" "5.5.0" - "@ethersproject/base64" "5.5.0" - "@ethersproject/basex" "5.5.0" - "@ethersproject/bignumber" "5.5.0" - "@ethersproject/bytes" "5.5.0" - "@ethersproject/constants" "5.5.0" - "@ethersproject/contracts" "5.5.0" - "@ethersproject/hash" "5.5.0" - "@ethersproject/hdnode" "5.5.0" - "@ethersproject/json-wallets" "5.5.0" - "@ethersproject/keccak256" "5.5.0" - "@ethersproject/logger" "5.5.0" - "@ethersproject/networks" "5.5.2" - "@ethersproject/pbkdf2" "5.5.0" - "@ethersproject/properties" "5.5.0" - "@ethersproject/providers" "5.5.3" - "@ethersproject/random" "5.5.1" - "@ethersproject/rlp" "5.5.0" - "@ethersproject/sha2" "5.5.0" - "@ethersproject/signing-key" "5.5.0" - "@ethersproject/solidity" "5.5.0" - "@ethersproject/strings" "5.5.0" - "@ethersproject/transactions" "5.5.0" - "@ethersproject/units" "5.5.0" - "@ethersproject/wallet" "5.5.0" - "@ethersproject/web" "5.5.1" - "@ethersproject/wordlists" "5.5.0" + "@ethersproject/abi" "5.6.0" + "@ethersproject/abstract-provider" "5.6.0" + "@ethersproject/abstract-signer" "5.6.0" + "@ethersproject/address" "5.6.0" + "@ethersproject/base64" "5.6.0" + "@ethersproject/basex" "5.6.0" + "@ethersproject/bignumber" "5.6.0" + "@ethersproject/bytes" "5.6.0" + "@ethersproject/constants" "5.6.0" + "@ethersproject/contracts" "5.6.0" + "@ethersproject/hash" "5.6.0" + "@ethersproject/hdnode" "5.6.0" + "@ethersproject/json-wallets" "5.6.0" + "@ethersproject/keccak256" "5.6.0" + "@ethersproject/logger" "5.6.0" + "@ethersproject/networks" "5.6.0" + "@ethersproject/pbkdf2" "5.6.0" + "@ethersproject/properties" "5.6.0" + "@ethersproject/providers" "5.6.0" + "@ethersproject/random" "5.6.0" + "@ethersproject/rlp" "5.6.0" + "@ethersproject/sha2" "5.6.0" + "@ethersproject/signing-key" "5.6.0" + "@ethersproject/solidity" "5.6.0" + "@ethersproject/strings" "5.6.0" + "@ethersproject/transactions" "5.6.0" + "@ethersproject/units" "5.6.0" + "@ethersproject/wallet" "5.6.0" + "@ethersproject/web" "5.6.0" + "@ethersproject/wordlists" "5.6.0" event-emitter@~0.3.4: version "0.3.5" @@ -5400,6 +5401,11 @@ mime@^2.4.6: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -7081,9 +7087,9 @@ tsc-alias@1.3.10: normalize-path "^3.0.0" tsc-watch@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-4.6.0.tgz#a0eba1300cbe3048ab6d3a3e06de47141b613beb" - integrity sha512-DRMADjFe44EDWb+YMIOj4b83UrU6le27L3/o0/9FlmA01ikFd5Dl9RD5h1hpeh0mQdIqXvwfHZszCcjhH3bAmQ== + version "4.6.2" + resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-4.6.2.tgz#4267ee6acddb608356573ba96024fa250eb22cac" + integrity sha512-eHWzZGkPmzXVGQKbqQgf3BFpGiZZw1jQ29ZOJeaSe8JfyUvphbd221NfXmmsJUGGPGA/nnaSS01tXipUcyxAxg== dependencies: cross-spawn "^7.0.3" node-cleanup "^2.1.2"