diff --git a/packages/safe-core-sdk-types/package.json b/packages/safe-core-sdk-types/package.json index f0ca4fdb8..c6089fcad 100644 --- a/packages/safe-core-sdk-types/package.json +++ b/packages/safe-core-sdk-types/package.json @@ -1,6 +1,6 @@ { "name": "@gnosis.pm/safe-core-sdk-types", - "version": "1.2.0", + "version": "1.2.1", "description": "Safe Core SDK types", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -42,7 +42,7 @@ "dependencies": { "@ethersproject/bignumber": "^5.6.0", "@ethersproject/contracts": "^5.6.0", - "@gnosis.pm/safe-deployments": "1.12.0", + "@gnosis.pm/safe-deployments": "1.15.0", "web3-core": "^1.7.1" } } diff --git a/packages/safe-core-sdk-types/src/types.ts b/packages/safe-core-sdk-types/src/types.ts index 7cfd5016d..ad7fb06d3 100644 --- a/packages/safe-core-sdk-types/src/types.ts +++ b/packages/safe-core-sdk-types/src/types.ts @@ -92,7 +92,7 @@ export interface Eip712MessageTypes { export interface GenerateTypedData { types: Eip712MessageTypes domain: { - chainId: number | undefined + chainId?: number verifyingContract: string } primaryType: string diff --git a/packages/safe-core-sdk-utils/package.json b/packages/safe-core-sdk-utils/package.json index 43305eb6c..657f0cb7f 100644 --- a/packages/safe-core-sdk-utils/package.json +++ b/packages/safe-core-sdk-utils/package.json @@ -1,6 +1,6 @@ { "name": "@gnosis.pm/safe-core-sdk-utils", - "version": "1.2.0", + "version": "1.2.1", "description": "Safe Core SDK Utilities", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -32,7 +32,7 @@ ], "homepage": "https://github.com/safe-global/safe-core-sdk#readme", "devDependencies": { - "@gnosis.pm/safe-deployments": "1.12.0", + "@gnosis.pm/safe-deployments": "1.15.0", "@types/chai": "^4.3.0", "@types/chai-as-promised": "^7.1.5", "@types/mocha": "^9.1.0", @@ -52,7 +52,7 @@ "typescript": "^4.6.3" }, "dependencies": { - "@gnosis.pm/safe-core-sdk-types": "^1.2.0", + "@gnosis.pm/safe-core-sdk-types": "^1.2.1", "semver": "^7.3.7", "web3-utils": "^1.7.1" } diff --git a/packages/safe-core-sdk-utils/src/eip-3770/config.ts b/packages/safe-core-sdk-utils/src/eip-3770/config.ts index afeed0080..816c3d05e 100644 --- a/packages/safe-core-sdk-utils/src/eip-3770/config.ts +++ b/packages/safe-core-sdk-utils/src/eip-3770/config.ts @@ -16,6 +16,8 @@ export const networks: NetworkShortName[] = [ { chainId: 42, shortName: 'kov' }, { chainId: 56, shortName: 'bnb' }, { chainId: 69, shortName: 'okov' }, + { chainId: 82, shortName: 'meter' }, + { chainId: 83, shortName: 'meter-test' }, { chainId: 100, shortName: 'gno' }, { chainId: 106, shortName: 'vlx' }, { chainId: 111, shortName: 'etl' }, @@ -24,14 +26,18 @@ export const networks: NetworkShortName[] = [ { chainId: 137, shortName: 'matic' }, { chainId: 246, shortName: 'ewt' }, { chainId: 288, shortName: 'boba' }, + { chainId: 300, shortName: 'ogn' }, { chainId: 588, shortName: 'metis-stardust' }, + { chainId: 1008, shortName: 'eun' }, { chainId: 1088, shortName: 'metis-andromeda' }, { chainId: 1284, shortName: 'mbeam' }, { chainId: 1285, shortName: 'mriver' }, { chainId: 1287, shortName: 'mbase' }, + { chainId: 1984, shortName: 'euntest' }, { chainId: 4002, shortName: 'tftm' }, { chainId: 7341, shortName: 'shyft' }, - { chainId: 9000, shortName: 'evmos' }, + { chainId: 9000, shortName: 'evmos-testnet' }, + { chainId: 9001, shortName: 'evmos' }, { chainId: 11437, shortName: 'shyftt' }, { chainId: 12357, shortName: 'rei-testnet' }, { chainId: 42161, shortName: 'arb1' }, @@ -45,7 +51,9 @@ export const networks: NetworkShortName[] = [ { chainId: 1313161554, shortName: 'aurora' }, { chainId: 1313161555, shortName: 'aurora-testnet' }, { chainId: 1666600000, shortName: 'hmy-s0' }, - { chainId: 1666700000, shortName: 'hmy-b-s0' } + { chainId: 1666700000, shortName: 'hmy-b-s0' }, + { chainId: 11297108099, shortName: 'tpalm' }, + { chainId: 11297108109, shortName: 'palm' } ] if (process.env.TEST_NETWORK === 'hardhat') { diff --git a/packages/safe-core-sdk-utils/src/eip-712/index.ts b/packages/safe-core-sdk-utils/src/eip-712/index.ts index dc09aeea9..6510eec66 100644 --- a/packages/safe-core-sdk-utils/src/eip-712/index.ts +++ b/packages/safe-core-sdk-utils/src/eip-712/index.ts @@ -4,14 +4,14 @@ import semverSatisfies from 'semver/functions/satisfies' const EQ_OR_GT_1_3_0 = '>=1.3.0' -const EIP712_DOMAIN_BEFORE_V130 = [ +export const EIP712_DOMAIN_BEFORE_V130 = [ { type: 'address', name: 'verifyingContract' } ] -const EIP712_DOMAIN = [ +export const EIP712_DOMAIN = [ { type: 'uint256', name: 'chainId' @@ -23,7 +23,7 @@ const EIP712_DOMAIN = [ ] // This function returns the types structure for signing off-chain messages according to EIP-712 -function getEip712MessageTypes(safeVersion: string): { +export function getEip712MessageTypes(safeVersion: string): { EIP712Domain: typeof EIP712_DOMAIN | typeof EIP712_DOMAIN_BEFORE_V130 SafeTx: Array<{ type: string; name: string }> } { @@ -55,7 +55,6 @@ export function generateTypedData({ const typedData: GenerateTypedData = { types: getEip712MessageTypes(safeVersion), domain: { - chainId: eip712WithChainId ? chainId : undefined, verifyingContract: safeAddress }, primaryType: 'SafeTx', @@ -68,5 +67,8 @@ export function generateTypedData({ nonce: BigNumber.from(safeTransactionData.nonce) } } + if (eip712WithChainId) { + typedData.domain.chainId = chainId + } return typedData } diff --git a/packages/safe-core-sdk-utils/tests/eip-712.test.ts b/packages/safe-core-sdk-utils/tests/eip-712.test.ts new file mode 100644 index 000000000..7a47efbf7 --- /dev/null +++ b/packages/safe-core-sdk-utils/tests/eip-712.test.ts @@ -0,0 +1,61 @@ +import { SafeTransactionData } from '@gnosis.pm/safe-core-sdk-types' +import chai from 'chai' +import { + EIP712_DOMAIN, + EIP712_DOMAIN_BEFORE_V130, + generateTypedData, + getEip712MessageTypes +} from '../src' + +const safeAddress = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1' +const safeTransactionData: SafeTransactionData = { + to: '0x000', + value: '111', + data: '0x222', + operation: 333, + safeTxGas: 444, + baseGas: 555, + gasPrice: 666, + gasToken: '0x777', + refundReceiver: '0x888', + nonce: 999 +} + +describe('EIP-712 sign typed data', () => { + describe('getEip712MessageTypes', async () => { + it('should have the domain typed as EIP712_DOMAIN_BEFORE_V130 for Safes < v1.3.0', async () => { + const { EIP712Domain } = getEip712MessageTypes('1.2.0') + chai.expect(EIP712Domain).to.be.eq(EIP712_DOMAIN_BEFORE_V130) + }) + + it('should have the domain typed as EIP712_DOMAIN for Safes >= v1.3.0', async () => { + const { EIP712Domain } = getEip712MessageTypes('1.3.0') + chai.expect(EIP712Domain).to.be.eq(EIP712_DOMAIN) + }) + }) + + describe('generateTypedData', async () => { + it('should generate the typed data for Safes < v1.3.0', async () => { + const { domain } = generateTypedData({ + safeAddress, + safeVersion: '1.2.0', + chainId: 4, + safeTransactionData + }) + chai.expect(domain.verifyingContract).to.be.eq(safeAddress) + chai.expect(domain.chainId).to.be.undefined + }) + + it('should generate the typed data for for Safes >= v1.3.0', async () => { + const chainId = 4 + const { domain } = generateTypedData({ + safeAddress, + safeVersion: '1.3.0', + chainId, + safeTransactionData + }) + chai.expect(domain.verifyingContract).to.be.eq(safeAddress) + chai.expect(domain.chainId).to.be.eq(chainId) + }) + }) +}) diff --git a/packages/safe-core-sdk/package.json b/packages/safe-core-sdk/package.json index 68aa4a877..bce3ba9c4 100644 --- a/packages/safe-core-sdk/package.json +++ b/packages/safe-core-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@gnosis.pm/safe-core-sdk", - "version": "2.2.0", + "version": "2.2.1", "description": "Safe Core SDK", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -41,8 +41,8 @@ "devDependencies": { "@gnosis.pm/safe-contracts-v1.2.0": "npm:@gnosis.pm/safe-contracts@1.2.0", "@gnosis.pm/safe-contracts-v1.3.0": "npm:@gnosis.pm/safe-contracts@1.3.0", - "@gnosis.pm/safe-ethers-lib": "^1.2.0", - "@gnosis.pm/safe-web3-lib": "^1.2.0", + "@gnosis.pm/safe-ethers-lib": "^1.2.1", + "@gnosis.pm/safe-web3-lib": "^1.2.1", "@nomiclabs/hardhat-ethers": "^2.0.5", "@nomiclabs/hardhat-waffle": "^2.0.3", "@nomiclabs/hardhat-web3": "^2.0.0", @@ -89,8 +89,8 @@ }, "dependencies": { "@ethersproject/solidity": "^5.6.0", - "@gnosis.pm/safe-core-sdk-types": "^1.2.0", - "@gnosis.pm/safe-deployments": "1.12.0", + "@gnosis.pm/safe-core-sdk-types": "^1.2.1", + "@gnosis.pm/safe-deployments": "1.15.0", "ethereumjs-util": "^7.1.4", "semver": "^7.3.5", "web3-utils": "^1.7.1" diff --git a/packages/safe-core-sdk/src/utils/signatures/index.ts b/packages/safe-core-sdk/src/utils/signatures/index.ts index b4a255c7a..d0ef2b860 100644 --- a/packages/safe-core-sdk/src/utils/signatures/index.ts +++ b/packages/safe-core-sdk/src/utils/signatures/index.ts @@ -109,6 +109,6 @@ export async function generateEIP712Signature( ): Promise { const signerAddress = await ethAdapter.getSignerAddress() let signature = await ethAdapter.signTypedData(safeTransactionEIP712Args, methodVersion) - signature = adjustVInSignature('eth_signTypedData', signature.replace('0x', '')) + signature = adjustVInSignature('eth_signTypedData', signature) return new EthSignSignature(signerAddress, signature) } diff --git a/packages/safe-ethers-adapters/package.json b/packages/safe-ethers-adapters/package.json index b4c504290..5c7571b80 100644 --- a/packages/safe-ethers-adapters/package.json +++ b/packages/safe-ethers-adapters/package.json @@ -80,7 +80,7 @@ "dependencies": { "@gnosis.pm/safe-core-sdk": "^2.1.0", "@gnosis.pm/safe-core-sdk-types": "^1.1.0", - "@gnosis.pm/safe-deployments": "1.12.0", + "@gnosis.pm/safe-deployments": "1.15.0", "axios": "^0.26.1" } } diff --git a/packages/safe-ethers-lib/package.json b/packages/safe-ethers-lib/package.json index f58b6de1a..7f0ec1b0f 100644 --- a/packages/safe-ethers-lib/package.json +++ b/packages/safe-ethers-lib/package.json @@ -1,6 +1,6 @@ { "name": "@gnosis.pm/safe-ethers-lib", - "version": "1.2.0", + "version": "1.2.1", "description": "Ethers library adapter to be used by Safe Core SDK", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -50,8 +50,8 @@ "typescript": "^4.6.3" }, "dependencies": { - "@gnosis.pm/safe-core-sdk-types": "^1.2.0", - "@gnosis.pm/safe-core-sdk-utils": "^1.2.0" + "@gnosis.pm/safe-core-sdk-types": "^1.2.1", + "@gnosis.pm/safe-core-sdk-utils": "^1.2.1" }, "peerDependencies": { "ethers": "^5.6.2" diff --git a/packages/safe-ethers-lib/src/EthersAdapter.ts b/packages/safe-ethers-lib/src/EthersAdapter.ts index f34b8053e..c86d0160b 100644 --- a/packages/safe-ethers-lib/src/EthersAdapter.ts +++ b/packages/safe-ethers-lib/src/EthersAdapter.ts @@ -142,7 +142,7 @@ class EthersAdapter implements EthAdapter { async signTypedData(safeTransactionEIP712Args: SafeTransactionEIP712Args): Promise { if (isTypedDataSigner(this.#signer)) { const typedData = generateTypedData(safeTransactionEIP712Args) - const signature = this.#signer._signTypedData( + const signature = await this.#signer._signTypedData( typedData.domain, { SafeTx: typedData.types.SafeTx }, typedData.message diff --git a/packages/safe-service-client/README.md b/packages/safe-service-client/README.md index f1b3fc477..fa4b9e9c8 100644 --- a/packages/safe-service-client/README.md +++ b/packages/safe-service-client/README.md @@ -90,6 +90,14 @@ Returns the list of Safes where the address provided is an owner. const safes: OwnerResponse = await safeService.getSafesByOwner(ownerAddress) ``` +### getSafesByModule + +Returns the list of Safes where the module address provided is enabled. + +```js +const safes: ModulesResponse = await getSafesByModule(moduleAddress) +``` + ### getTransaction Returns all the information of a Safe transaction. diff --git a/packages/safe-service-client/package.json b/packages/safe-service-client/package.json index 039e98320..c651e4409 100644 --- a/packages/safe-service-client/package.json +++ b/packages/safe-service-client/package.json @@ -36,31 +36,31 @@ ], "homepage": "https://github.com/safe-global/safe-core-sdk#readme", "devDependencies": { - "@gnosis.pm/safe-ethers-lib": "^1.2.0", - "@gnosis.pm/safe-web3-lib": "^1.2.0", + "@gnosis.pm/safe-ethers-lib": "^1.2.1", + "@gnosis.pm/safe-web3-lib": "^1.2.1", "@nomiclabs/hardhat-ethers": "^2.0.5", "@nomiclabs/hardhat-waffle": "^2.0.3", "@nomiclabs/hardhat-web3": "^2.0.0", - "@types/chai": "^4.3.0", + "@types/chai": "^4.3.1", "@types/chai-as-promised": "^7.1.5", - "@types/mocha": "^9.1.0", - "@types/node": "^17.0.23", - "@typescript-eslint/eslint-plugin": "^5.17.0", - "@typescript-eslint/parser": "^5.17.0", + "@types/mocha": "^9.1.1", + "@types/node": "^18.0.3", + "@typescript-eslint/eslint-plugin": "^5.30.6", + "@typescript-eslint/parser": "^5.30.6", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", - "eslint": "^8.12.0", + "eslint": "^8.19.0", "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.0.0", + "eslint-plugin-prettier": "^4.2.1", "hardhat": "^2.9.2", - "husky": "^7.0.4", - "lint-staged": "^12.3.7", - "mocha": "^9.2.2", - "prettier": "^2.6.2", + "husky": "^8.0.1", + "lint-staged": "^13.0.3", + "mocha": "^10.0.0", + "prettier": "^2.7.1", "rimraf": "^3.0.2", "ts-generator": "^0.1.1", - "ts-node": "^10.7.0", - "typescript": "^4.6.3" + "ts-node": "^10.8.2", + "typescript": "^4.7.4" }, "lint-staged": { "src/**/!(*test).ts": [ @@ -74,8 +74,8 @@ } }, "dependencies": { - "@ethersproject/abstract-signer": "^5.6.0", - "@gnosis.pm/safe-core-sdk-types": "^1.2.0", + "@ethersproject/abstract-signer": "^5.6.2", + "@gnosis.pm/safe-core-sdk-types": "^1.2.1", "node-fetch": "^2.6.6" } } diff --git a/packages/safe-service-client/src/SafeServiceClient.ts b/packages/safe-service-client/src/SafeServiceClient.ts index a998d7d60..52e9b8357 100644 --- a/packages/safe-service-client/src/SafeServiceClient.ts +++ b/packages/safe-service-client/src/SafeServiceClient.ts @@ -5,6 +5,7 @@ import { AllTransactionsListResponse, AllTransactionsOptions, MasterCopyResponse, + ModulesResponse, OwnerResponse, ProposeTransactionProps, SafeBalanceResponse, @@ -113,6 +114,25 @@ class SafeServiceClient implements SafeTransactionService { }) } + /** + * Returns the list of Safes where the module address provided is enabled. + * + * @param moduleAddress - The Safe module address + * @returns The list of Safe addresses where the module provided is enabled + * @throws "Invalid module address" + * @throws "Module address checksum not valid" + */ + async getSafesByModule(moduleAddress: string): Promise { + if (moduleAddress === '') { + throw new Error('Invalid module address') + } + const { address } = await this.#ethAdapter.getEip3770Address(moduleAddress) + return sendRequest({ + url: `${this.#txServiceBaseUrl}/modules/${address}/safes/`, + method: HttpMethod.Get + }) + } + /** * Returns all the information of a Safe transaction. * diff --git a/packages/safe-service-client/src/types/safeTransactionServiceTypes.ts b/packages/safe-service-client/src/types/safeTransactionServiceTypes.ts index 0af14d311..2a2921c73 100644 --- a/packages/safe-service-client/src/types/safeTransactionServiceTypes.ts +++ b/packages/safe-service-client/src/types/safeTransactionServiceTypes.ts @@ -310,3 +310,7 @@ export type AllTransactionsListResponse = { | EthereumTxWithTransfersResponse > } + +export type ModulesResponse = { + safes: string[] +} diff --git a/packages/safe-service-client/tests/e2e/getSafesByModule.test.ts b/packages/safe-service-client/tests/e2e/getSafesByModule.test.ts new file mode 100644 index 000000000..cb93c5584 --- /dev/null +++ b/packages/safe-service-client/tests/e2e/getSafesByModule.test.ts @@ -0,0 +1,54 @@ +import chai from 'chai' +import chaiAsPromised from 'chai-as-promised' +import SafeServiceClient from '../../src' +import config from '../utils/config' +import { getServiceClient } from '../utils/setupServiceClient' + +chai.use(chaiAsPromised) + +let serviceSdk: SafeServiceClient +const rinkebySpendingLimitModule = '0xCFbFaC74C26F8647cBDb8c5caf80BB5b32E43134' + +describe('getSafesByModule', () => { + before(async () => { + ;({ serviceSdk } = await getServiceClient( + '0x4f3edf983ac636a65a842ce7c78d9aa706d3b113bce9c46f30d7d21715b23b1d' + )) + }) + + it('should fail if owner address is empty', async () => { + const moduleAddress = '' + await chai + .expect(serviceSdk.getSafesByModule(moduleAddress)) + .to.be.rejectedWith('Invalid module address') + }) + + it('should fail if owner address is not checksummed', async () => { + const moduleAddress = '0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1'.toLowerCase() + await chai + .expect(serviceSdk.getSafesByModule(moduleAddress)) + .to.be.rejectedWith('Checksum address validation failed') + }) + + it('should return an empty array if there are no Safes with the module enabled', async () => { + const moduleAddress = '0x0000000000000000000000000000000000000001' + const moduleResponse = await serviceSdk.getSafesByModule(moduleAddress) + const { safes } = moduleResponse + chai.expect(safes.length).to.be.equal(0) + }) + + it('should return the array Safes with the module enabled', async () => { + const moduleAddress = rinkebySpendingLimitModule + const moduleResponse = await serviceSdk.getSafesByModule(moduleAddress) + const { safes } = moduleResponse + chai.expect(safes.length).to.be.greaterThan(10) + }) + + it('should return the array of Safes EIP-3770', async () => { + const moduleAddress = rinkebySpendingLimitModule + const eip3770ModuleAddress = `${config.EIP_3770_PREFIX}:${moduleAddress}` + const moduleResponse = await serviceSdk.getSafesByModule(eip3770ModuleAddress) + const { safes } = moduleResponse + chai.expect(safes.length).to.be.greaterThan(10) + }) +}) diff --git a/packages/safe-service-client/tests/endpoint/index.test.ts b/packages/safe-service-client/tests/endpoint/index.test.ts index 328359a74..f87ca7745 100644 --- a/packages/safe-service-client/tests/endpoint/index.test.ts +++ b/packages/safe-service-client/tests/endpoint/index.test.ts @@ -103,6 +103,26 @@ describe('Endpoint tests', () => { }) }) + it('getSafesByModule', async () => { + await chai + .expect(serviceSdk.getSafesByModule(randomAddress)) + .to.be.eventually.deep.equals({ data: { success: true } }) + chai.expect(fetchData).to.have.been.calledWith({ + url: `${getTxServiceBaseUrl(txServiceBaseUrl)}/modules/${randomAddress}/safes/`, + method: 'get' + }) + }) + + it('getSafesByModule EIP-3770', async () => { + await chai + .expect(serviceSdk.getSafesByModule(eip3770RandomAddress)) + .to.be.eventually.deep.equals({ data: { success: true } }) + chai.expect(fetchData).to.have.been.calledWith({ + url: `${getTxServiceBaseUrl(txServiceBaseUrl)}/modules/${randomAddress}/safes/`, + method: 'get' + }) + }) + it('getTransaction', async () => { await chai .expect(serviceSdk.getTransaction(safeTxHash)) diff --git a/packages/safe-web3-lib/package.json b/packages/safe-web3-lib/package.json index 01991780e..df7a26b65 100644 --- a/packages/safe-web3-lib/package.json +++ b/packages/safe-web3-lib/package.json @@ -1,6 +1,6 @@ { "name": "@gnosis.pm/safe-web3-lib", - "version": "1.2.0", + "version": "1.2.1", "description": "Web3 library adapter to be used by Safe Core SDK", "main": "dist/src/index.js", "typings": "dist/src/index.d.ts", @@ -50,8 +50,8 @@ "typescript": "^4.6.3" }, "dependencies": { - "@gnosis.pm/safe-core-sdk-types": "^1.2.0", - "@gnosis.pm/safe-core-sdk-utils": "^1.2.0" + "@gnosis.pm/safe-core-sdk-types": "^1.2.1", + "@gnosis.pm/safe-core-sdk-utils": "^1.2.1" }, "peerDependencies": { "web3": "^1.7.0" diff --git a/yarn.lock b/yarn.lock index 2f1ac1e82..2142c2643 100644 --- a/yarn.lock +++ b/yarn.lock @@ -522,7 +522,7 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/web" "^5.6.1" -"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.0", "@ethersproject/abstract-signer@^5.6.2": +"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== @@ -857,10 +857,12 @@ resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-contracts/-/safe-contracts-1.3.0.tgz#316741a7690d8751a1f701538cfc9ec80866eedc" integrity sha512-1p+1HwGvxGUVzVkFjNzglwHrLNA67U/axP0Ct85FzzH8yhGJb4t9jDjPYocVMzLorDoWAfKicGy1akPY9jXRVw== -"@gnosis.pm/safe-deployments@1.12.0": - version "1.12.0" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-deployments/-/safe-deployments-1.12.0.tgz#aabad66f5467821b9a965411f9747016811d7554" - integrity sha512-fNwQqTdBushxlkqp8WpgXVP9HTePa/VFWM9VYPzbSsdqYqSUnXYDDOMyHH3H6eNltwRV8RVp/cxqUZLrvQ3YPg== +"@gnosis.pm/safe-deployments@1.15.0": + version "1.15.0" + resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-deployments/-/safe-deployments-1.15.0.tgz#71ed9a37437a3080443c49aa65308f2d8839d751" + integrity sha512-twfC5HNuj+TKS2gOowf6A1FGZfOLBHAV2JhYpmOCf2MKsfcG+Fe4TrSRgQg605MhWdwFiaGVpNkcwjvpxhGuew== + dependencies: + semver "^7.3.7" "@graphql-tools/batch-execute@8.4.10": version "8.4.10" @@ -2519,7 +2521,7 @@ dependencies: "@types/chai" "*" -"@types/chai@*", "@types/chai@^4.3.0": +"@types/chai@*", "@types/chai@^4.3.0", "@types/chai@^4.3.1": version "4.3.1" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== @@ -2606,7 +2608,7 @@ dependencies: "@types/node" "*" -"@types/mocha@^9.1.0": +"@types/mocha@^9.1.0", "@types/mocha@^9.1.1": version "9.1.1" resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== @@ -2639,6 +2641,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^18.0.3": + version "18.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199" + integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ== + "@types/normalize-package-data@^2.4.0": version "2.4.1" resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" @@ -2758,6 +2765,21 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/eslint-plugin@^5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz#9c6017b6c1d04894141b4a87816388967f64c359" + integrity sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg== + dependencies: + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/type-utils" "5.30.6" + "@typescript-eslint/utils" "5.30.6" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/parser@^5.17.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.29.0.tgz#41314b195b34d44ff38220caa55f3f93cfca43cf" @@ -2768,6 +2790,16 @@ "@typescript-eslint/typescript-estree" "5.29.0" debug "^4.3.4" +"@typescript-eslint/parser@^5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.6.tgz#add440db038fa9d777e4ebdaf66da9e7fb7abe92" + integrity sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA== + dependencies: + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" + debug "^4.3.4" + "@typescript-eslint/scope-manager@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" @@ -2776,6 +2808,14 @@ "@typescript-eslint/types" "5.29.0" "@typescript-eslint/visitor-keys" "5.29.0" +"@typescript-eslint/scope-manager@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz#ce1b49ff5ce47f55518d63dbe8fc9181ddbd1a33" + integrity sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g== + dependencies: + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/type-utils@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz#241918001d164044020b37d26d5b9f4e37cc3d5d" @@ -2785,11 +2825,25 @@ debug "^4.3.4" tsutils "^3.21.0" +"@typescript-eslint/type-utils@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz#a64aa9acbe609ab77f09f53434a6af2b9685f3af" + integrity sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA== + dependencies: + "@typescript-eslint/utils" "5.30.6" + debug "^4.3.4" + tsutils "^3.21.0" + "@typescript-eslint/types@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== +"@typescript-eslint/types@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.6.tgz#86369d0a7af8c67024115ac1da3e8fb2d38907e1" + integrity sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg== + "@typescript-eslint/typescript-estree@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" @@ -2803,6 +2857,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz#a84a0d6a486f9b54042da1de3d671a2c9f14484e" + integrity sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A== + dependencies: + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" @@ -2815,6 +2882,18 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" +"@typescript-eslint/utils@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.6.tgz#1de2da14f678e7d187daa6f2e4cdb558ed0609dc" + integrity sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/visitor-keys@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" @@ -2823,6 +2902,14 @@ "@typescript-eslint/types" "5.29.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz#94dd10bb481c8083378d24de1742a14b38a2678c" + integrity sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA== + dependencies: + "@typescript-eslint/types" "5.30.6" + eslint-visitor-keys "^3.3.0" + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -4127,6 +4214,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -4777,7 +4871,7 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^2.0.16: +colorette@^2.0.16, colorette@^2.0.17: version "2.0.19" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== @@ -5273,7 +5367,7 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5854,6 +5948,13 @@ eslint-plugin-prettier@^4.0.0: dependencies: prettier-linter-helpers "^1.0.0" +eslint-plugin-prettier@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" + integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" @@ -5928,6 +6029,47 @@ eslint@^8.12.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^8.19.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" + integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== + dependencies: + "@eslint/eslintrc" "^1.3.0" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.15.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + espree@^9.3.2: version "9.3.2" resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" @@ -6528,6 +6670,21 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +execa@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20" + integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^3.0.1" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -7201,7 +7358,7 @@ get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -7750,6 +7907,11 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +human-signals@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5" + integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -7762,6 +7924,11 @@ husky@^7.0.4: resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== +husky@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.1.tgz#511cb3e57de3e3190514ae49ed50f6bc3f50b3e9" + integrity sha512-xs7/chUH/CKdOCs7Zy0Aev9e/dKOMZf3K1Az1nar3tzlv0jfqnYtu235bstsWTmXOR0EfINrPa97yy4Lz6RiKw== + iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -8249,6 +8416,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" @@ -9041,6 +9213,25 @@ lint-staged@^12.3.7: supports-color "^9.2.2" yaml "^1.10.2" +lint-staged@^13.0.3: + version "13.0.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-13.0.3.tgz#d7cdf03a3830b327a2b63c6aec953d71d9dc48c6" + integrity sha512-9hmrwSCFroTSYLjflGI8Uk+GWAwMB4OlpU4bMJEAT5d/llQwtYKoim4bLOyLCuWFAhWEupE0vkIFqtw/WIsPug== + dependencies: + cli-truncate "^3.1.0" + colorette "^2.0.17" + commander "^9.3.0" + debug "^4.3.4" + execa "^6.1.0" + lilconfig "2.0.5" + listr2 "^4.0.5" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.2" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.1.1" + listr2@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" @@ -9604,6 +9795,11 @@ mimic-fn@^3.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" @@ -9638,6 +9834,13 @@ minimatch@4.2.1: dependencies: brace-expansion "^1.1.7" +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -9809,6 +10012,34 @@ mocha@9.2.2, mocha@^9.2.0, mocha@^9.2.2: yargs-parser "20.2.4" yargs-unparser "2.0.0" +mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" + integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.4" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "5.0.1" + ms "2.1.3" + nanoid "3.3.3" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + workerpool "6.2.1" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + mock-fs@^4.1.0: version "4.14.0" resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" @@ -9914,6 +10145,11 @@ nanoid@3.3.1: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10260,6 +10496,13 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +npm-run-path@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" + integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== + dependencies: + path-key "^4.0.0" + npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -10432,6 +10675,13 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + open@^7.4.2: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -10828,6 +11078,11 @@ path-key@^3.0.0, path-key@^3.1.0: resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + path-parse@^1.0.6, path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" @@ -10902,6 +11157,11 @@ pidtree@^0.5.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -11263,7 +11523,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^2.1.2, prettier@^2.6.1, prettier@^2.6.2: +prettier@^2.1.2, prettier@^2.6.1, prettier@^2.6.2, prettier@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== @@ -12321,7 +12581,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -12866,6 +13126,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" @@ -13308,6 +13573,25 @@ ts-node@^10.7.0, ts-node@^10.8.1: v8-compile-cache-lib "^3.0.1" yn "3.1.1" +ts-node@^10.8.2: + version "10.8.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.2.tgz#3185b75228cef116bf82ffe8762594f54b2a23f2" + integrity sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -13477,7 +13761,7 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@^4.6.3: +typescript@^4.6.3, typescript@^4.7.4: version "4.7.4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== @@ -14703,6 +14987,11 @@ workerpool@6.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -14916,6 +15205,11 @@ yaml@^1.10.0, yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yaml@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec" + integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"