From de0ac597a1ccead21d4cadd72ac501adaa5c73f3 Mon Sep 17 00:00:00 2001 From: Nabarun Gogoi Date: Thu, 7 Mar 2024 09:47:05 +0530 Subject: [PATCH] Setup eslint and husky pre-commit (#3) * Set up eslint and husky * Fix eslint errors --------- Co-authored-by: neeraj --- .eslintignore | 5 + .eslintrc.json | 29 + .husky/pre-commit | 1 + jest.config.js | 2 +- package.json | 14 +- src/account.ts | 68 +- src/auction.test.ts | 1 - src/bond.test.ts | 17 +- src/constants.ts | 2 +- src/index.test.ts | 17 +- src/index.ts | 173 ++-- src/laconic-client.ts | 66 +- src/messages/auction.ts | 88 +-- src/messages/bond.ts | 304 +++---- src/messages/registry.ts | 206 ++--- src/messages/util.ts | 36 +- src/nameservice-expiry.test.ts | 31 +- src/naming.test.ts | 17 +- src/registry-client.ts | 46 +- src/sdk.test.ts | 6 +- src/testing/helper.ts | 12 +- src/txbuilder.ts | 6 +- src/types.ts | 58 +- src/types/cerc/bond/message.ts | 31 +- src/util.test.ts | 6 +- src/util.ts | 76 +- yarn.lock | 1352 +++++++++++++++++++++++++++++++- 27 files changed, 2009 insertions(+), 661 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.json create mode 100644 .husky/pre-commit diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..653874b --- /dev/null +++ b/.eslintignore @@ -0,0 +1,5 @@ +# Don't lint node_modules. +node_modules + +# Don't lint build output. +dist diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..ace0c63 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,29 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "semistandard", + "plugin:@typescript-eslint/recommended" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + // TODO: Remove after resolution + "indent": ["error", 2, { "SwitchCase": 1 }], + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-unused-vars": "off", + "prefer-const": "off", + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/ban-ts-comment": "off", + "camelcase": "off", + "@typescript-eslint/ban-types": "off" + } +} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..39abe4d --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +yarn lint diff --git a/jest.config.js b/jest.config.js index a09d20d..f537325 100644 --- a/jest.config.js +++ b/jest.config.js @@ -2,5 +2,5 @@ module.exports = { preset: 'ts-jest', testEnvironment: 'node', - setupFiles: ["dotenv/config"] + setupFiles: ['dotenv/config'] }; diff --git a/package.json b/package.json index 415838f..6245ed6 100644 --- a/package.json +++ b/package.json @@ -11,8 +11,18 @@ "@types/lodash": "^4.14.181", "@types/semver": "^7.3.9", "@types/tiny-secp256k1": "1.0.0", + "@typescript-eslint/eslint-plugin": "^5.47.1", + "@typescript-eslint/parser": "^5.47.1", "dotenv": "^16.0.0", + "eslint": "^8.35.0", + "eslint-config-semistandard": "^15.0.1", + "eslint-config-standard": "^16.0.3", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^5.1.0", + "eslint-plugin-standard": "^5.0.0", "google-protobuf": "^3.21.0", + "husky": "^9.0.11", "jest": "29.0.0", "ts-jest": "^29.0.2", "ts-proto": "1.121.6", @@ -55,6 +65,8 @@ "test": "jest --runInBand --verbose --testPathPattern=src", "test:auctions": "TEST_AUCTIONS_ENABLED=1 jest --runInBand --verbose src/auction.test.ts", "test:nameservice-expiry": "TEST_NAMESERVICE_EXPIRY=1 jest --runInBand --verbose src/nameservice-expiry.test.ts", - "build": "tsc" + "build": "tsc", + "lint": "eslint .", + "prepare": "husky" } } diff --git a/src/account.ts b/src/account.ts index 5e38f73..a88a426 100644 --- a/src/account.ts +++ b/src/account.ts @@ -7,17 +7,17 @@ import secp256k1 from 'secp256k1'; import { utils } from 'ethers'; import { sha256 } from 'js-sha256'; import { MessageTypes, signTypedData, SignTypedDataVersion } from '@metamask/eth-sig-util'; -import { Ripemd160 } from "@cosmjs/crypto"; +import { Ripemd160 } from '@cosmjs/crypto'; import { fromHex, toHex } from '@cosmjs/encoding'; -import { ethToEthermint } from "@tharsis/address-converter" +import { ethToEthermint } from '@tharsis/address-converter'; import { encodeSecp256k1Pubkey } from '@cosmjs/amino'; -import { DirectSecp256k1Wallet } from "@cosmjs/proto-signing"; +import { DirectSecp256k1Wallet } from '@cosmjs/proto-signing'; import { Payload, Signature } from './types'; const AMINO_PREFIX = 'EB5AE98721'; const HDPATH = "m/44'/60'/0'/0"; -const ACCOUNT_PREFIX = "laconic"; +const ACCOUNT_PREFIX = 'laconic'; const bip32 = BIP32Factory(ecc); @@ -33,27 +33,27 @@ interface TypedMessageDomain { * Registry account. */ export class Account { - _privateKey: Buffer - _publicKey!: Uint8Array - _encodedPubkey!: string - _formattedCosmosAddress!: string - _registryPublicKey!: string - _registryAddress!: string - _ethAddress!: string - _wallet!: DirectSecp256k1Wallet - _address!: string + _privateKey: Buffer; + _publicKey!: Uint8Array; + _encodedPubkey!: string; + _formattedCosmosAddress!: string; + _registryPublicKey!: string; + _registryAddress!: string; + _ethAddress!: string; + _wallet!: DirectSecp256k1Wallet; + _address!: string; /** * Generate bip39 mnemonic. */ - static generateMnemonic() { + static generateMnemonic () { return bip39.generateMnemonic(); } /** * Generate private key from mnemonic. */ - static async generateFromMnemonic(mnemonic: string) { + static async generateFromMnemonic (mnemonic: string) { assert(mnemonic); const seed = await bip39.mnemonicToSeed(mnemonic); @@ -68,36 +68,36 @@ export class Account { /** * New Account. */ - constructor(privateKey: Buffer) { + constructor (privateKey: Buffer) { assert(privateKey); this._privateKey = privateKey; } - get privateKey() { + get privateKey () { return this._privateKey; } - get encodedPubkey() { + get encodedPubkey () { return this._encodedPubkey; } - get formattedCosmosAddress() { + get formattedCosmosAddress () { return this._formattedCosmosAddress; } - get registryPublicKey() { + get registryPublicKey () { return this._registryPublicKey; } - get registryAddress() { + get registryAddress () { return this._registryAddress; } - get address() { + get address () { return this._address; } - get wallet() { + get wallet () { return this._wallet; } @@ -107,14 +107,14 @@ export class Account { ACCOUNT_PREFIX ); - this._address = (await this._wallet.getAccounts())[0].address + this._address = (await this._wallet.getAccounts())[0].address; // Generate public key. - this._publicKey = secp256k1.publicKeyCreate(this._privateKey) - this._encodedPubkey = encodeSecp256k1Pubkey(this._publicKey).value + this._publicKey = secp256k1.publicKeyCreate(this._privateKey); + this._encodedPubkey = encodeSecp256k1Pubkey(this._publicKey).value; // 2. Generate eth address. - this._ethAddress = utils.computeAddress(this._publicKey) + this._ethAddress = utils.computeAddress(this._publicKey); // 3. Generate cosmos-sdk formatted address. this._formattedCosmosAddress = ethToEthermint(this._ethAddress); @@ -131,21 +131,21 @@ export class Account { /** * Get private key. */ - getPrivateKey() { + getPrivateKey () { return this._privateKey.toString('hex'); } /** * Get cosmos address. */ - getCosmosAddress() { + getCosmosAddress () { return this._formattedCosmosAddress; } /** * Get record signature. */ - async signRecord(record: any) { + async signRecord (record: any) { assert(record); const recordAsJson = canonicalStringify(record); @@ -162,14 +162,14 @@ export class Account { return Buffer.from(sigObj.signature); } - async signPayload(payload: Payload) { + async signPayload (payload: Payload) { assert(payload); const { record } = payload; const messageToSign = record.getMessageToSign(); const sig = await this.signRecord(messageToSign); - assert(this.registryPublicKey) + assert(this.registryPublicKey); const signature = new Signature(this.registryPublicKey, sig.toString('base64')); payload.addSignature(signature); @@ -179,7 +179,7 @@ export class Account { /** * Sign message. */ - sign(message: any) { + sign (message: any) { assert(message); const eipMessageDomain: any = message.eipToSign.domain; @@ -192,7 +192,7 @@ export class Account { }, privateKey: this._privateKey, version: SignTypedDataVersion.V4 - }) + }); return signature; } diff --git a/src/auction.test.ts b/src/auction.test.ts index 06637c3..19d9b94 100644 --- a/src/auction.test.ts +++ b/src/auction.test.ts @@ -119,7 +119,6 @@ if (!process.env.TEST_AUCTIONS_ENABLED) { TEST_AUCTION_ENABLED=true ./init.sh - Run tests: yarn test:auctions diff --git a/src/bond.test.ts b/src/bond.test.ts index 74d8fe5..03fd6fd 100644 --- a/src/bond.test.ts +++ b/src/bond.test.ts @@ -2,13 +2,13 @@ import path from 'path'; import { Registry } from './index'; import { ensureUpdatedConfig, getConfig, getLaconic2Config } from './testing/helper'; -import { DENOM } from './constants' +import { DENOM } from './constants'; const WATCHER_YML_PATH = path.join(__dirname, './testing/data/watcher.yml'); -const BOND_AMOUNT = "10000"; +const BOND_AMOUNT = '10000'; const { chainId, restEndpoint, gqlEndpoint, privateKey, fee } = getConfig(); -const { fee: laconic2Fee } = getLaconic2Config() +const { fee: laconic2Fee } = getLaconic2Config(); jest.setTimeout(90 * 1000); @@ -32,7 +32,7 @@ const bondTests = () => { }); describe('With bond created', () => { - let bond1: any + let bond1: any; beforeAll(async () => { let bondId1 = await registry.getNextBondId(privateKey); @@ -67,7 +67,7 @@ const bondTests = () => { }); test('Refill bond.', async () => { - const refillAmount = "500"; + const refillAmount = '500'; const total = (parseInt(BOND_AMOUNT) + parseInt(refillAmount)).toString(); await registry.refillBond({ id: bond1.id, denom: DENOM, amount: refillAmount }, privateKey, laconic2Fee); const [bond] = await registry.getBondsByIds([bond1.id]); @@ -78,7 +78,7 @@ const bondTests = () => { }); test('Withdraw bond.', async () => { - await registry.withdrawBond({ id: bond1.id, denom: DENOM, amount: "500" }, privateKey, laconic2Fee); + await registry.withdrawBond({ id: bond1.id, denom: DENOM, amount: '500' }, privateKey, laconic2Fee); const [bond] = await registry.getBondsByIds([bond1.id]); expect(bond).toBeDefined(); expect(bond.id).toBe(bond1.id); @@ -89,11 +89,10 @@ const bondTests = () => { test('Cancel bond.', async () => { await registry.cancelBond({ id: bond1.id }, privateKey, laconic2Fee); const [bond] = await registry.getBondsByIds([bond1.id]); - expect(bond.id).toBe(""); - expect(bond.owner).toBe(""); + expect(bond.id).toBe(''); + expect(bond.owner).toBe(''); expect(bond.balance).toHaveLength(0); }); - }); test('Associate/Dissociate bond.', async () => { diff --git a/src/constants.ts b/src/constants.ts index 9dae950..19a0b49 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1 +1 @@ -export const DENOM = "photon"; +export const DENOM = 'photon'; diff --git a/src/index.test.ts b/src/index.test.ts index fc96f80..9b84da2 100644 --- a/src/index.test.ts +++ b/src/index.test.ts @@ -11,25 +11,24 @@ const registryTests = () => { beforeAll(async () => { registry = new Registry(gqlEndpoint, restEndpoint, chainId); - }); - test('Get account info.', async() => { + test('Get account info.', async () => { const account = new Account(Buffer.from(privateKey, 'hex')); const accounts = await registry.getAccounts([account.formattedCosmosAddress]); - expect(accounts).toHaveLength(1) + expect(accounts).toHaveLength(1); const [accountObj] = accounts; expect(accountObj.address).toBe(account.formattedCosmosAddress); expect(accountObj.pubKey).toBe(account.encodedPubkey); expect(accountObj.number).toBe('0'); expect(accountObj.sequence).toBeDefined(); expect(accountObj.balance).toHaveLength(1); - const [{ type, quantity }] = accountObj.balance + const [{ type, quantity }] = accountObj.balance; expect(type).toBe('aphoton'); expect(quantity).toBeDefined(); - }) + }); - test('Get account balance.', async() => { + test('Get account balance.', async () => { const mnenonic1 = Account.generateMnemonic(); const otherAccount = await Account.generateFromMnemonic(mnenonic1); await registry.sendCoins({ denom: 'aphoton', amount: '100000000', destinationAddress: otherAccount.formattedCosmosAddress }, privateKey, fee); @@ -37,10 +36,10 @@ const registryTests = () => { const [accountObj] = await registry.getAccounts([otherAccount.formattedCosmosAddress]); expect(accountObj).toBeDefined(); expect(accountObj.address).toBe(otherAccount.formattedCosmosAddress); - const [{ type, quantity }] = accountObj.balance + const [{ type, quantity }] = accountObj.balance; expect(type).toBe('aphoton'); expect(quantity).toBe('100000000'); - }) -} + }); +}; describe('Registry', registryTests); diff --git a/src/index.ts b/src/index.ts index b431b58..b868dd9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,12 +6,12 @@ import { Fee, createMessageSend, MessageSendParams -} from '@tharsis/transactions' +} from '@tharsis/transactions'; import { DeliverTxResponse, GasPrice, StdFee } from '@cosmjs/stargate'; -import { RegistryClient } from "./registry-client"; -import { Account } from "./account"; -import { createTransaction } from "./txbuilder"; +import { RegistryClient } from './registry-client'; +import { Account } from './account'; +import { createTransaction } from './txbuilder'; import { Payload, Record } from './types'; import { Util } from './util'; import { @@ -31,7 +31,7 @@ import { MessageMsgReAssociateRecords, MessageMsgRefillBond, MessageMsgWithdrawBond -} from "./messages/bond"; +} from './messages/bond'; import { createTxMsgDeleteName, createTxMsgReserveAuthority, @@ -64,7 +64,7 @@ export const parseTxResponse = (result: any, parseResponse?: (data: string) => a const { txhash: hash, height, ...txResponse } = result; if (parseResponse) { - txResponse.data = parseResponse(txResponse.data) + txResponse.data = parseResponse(txResponse.data); } txResponse.events.forEach((event:any) => { @@ -106,25 +106,24 @@ export const createBid = async (chainId: string, auctionId: string, bidderAddres export const isKeyValid = (key: string) => key && key.match(/^[0-9a-fA-F]{64}$/); export class Registry { - _endpoints: {[key: string]: string} - _chainID: string - _chain: Chain - _client: RegistryClient + _endpoints: {[key: string]: string}; + _chainID: string; + _chain: Chain; + _client: RegistryClient; - static processWriteError(error: string) { + static processWriteError (error: string) { // error string a stacktrace containing the message. // https://gist.github.com/nikugogoi/de55d390574ded3466abad8bffd81952#file-txresponse-js-L7 - const errorMessage = NAMESERVICE_ERRORS.find(message => error.includes(message)) + const errorMessage = NAMESERVICE_ERRORS.find(message => error.includes(message)); if (!errorMessage) { - console.error(error) + console.error(error); } return errorMessage || DEFAULT_WRITE_ERROR; } - constructor(gqlUrl: string, restUrl: string = "", chainId: string = DEFAULT_CHAIN_ID) { - + constructor (gqlUrl: string, restUrl = '', chainId: string = DEFAULT_CHAIN_ID) { this._endpoints = { rest: restUrl, gql: gqlUrl @@ -142,43 +141,43 @@ export class Registry { /** * Get accounts by addresses. */ - async getAccounts(addresses: string[]) { + async getAccounts (addresses: string[]) { return this._client.getAccounts(addresses); } - get endpoints() { + get endpoints () { return this._endpoints; } - get chainID() { + get chainID () { return this._chainID; } /** * Get server status. */ - async getStatus() { + async getStatus () { return this._client.getStatus(); } /** * Get records by ids. */ - async getRecordsByIds(ids: string[], refs = false) { + async getRecordsByIds (ids: string[], refs = false) { return this._client.getRecordsByIds(ids, refs); } /** * Get records by attributes. */ - async queryRecords(attributes: {[key: string]: any}, all = false, refs = false) { + async queryRecords (attributes: {[key: string]: any}, all = false, refs = false) { return this._client.queryRecords(attributes, all, refs); } /** * Resolve names to records. */ - async resolveNames(names: string[], refs = false) { + async resolveNames (names: string[], refs = false) { return this._client.resolveNames(names, refs); } @@ -186,7 +185,7 @@ export class Registry { * Publish record. * @param transactionPrivateKey - private key in HEX to sign transaction. */ - async setRecord( + async setRecord ( params: { privateKey: string, record: any, bondId: string }, transactionPrivateKey: string, fee: Fee @@ -200,12 +199,12 @@ export class Registry { /** * Send coins. */ - async sendCoins(params: MessageSendParams, privateKey: string, fee: Fee) { + async sendCoins (params: MessageSendParams, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createMessageSend(this._chain, sender, fee, '', params) + const msg = createMessageSend(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -214,10 +213,10 @@ export class Registry { /** * Computes the next bondId for the given account private key. */ - async getNextBondId(privateKey: string) { + async getNextBondId (privateKey: string) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); - await account.init() + await account.init(); const accounts = await this.getAccounts([account.address]); if (!accounts.length) { throw new Error('Account does not exist.'); @@ -233,24 +232,24 @@ export class Registry { /** * Get bonds by ids. */ - async getBondsByIds(ids: string[]) { + async getBondsByIds (ids: string[]) { return this._client.getBondsByIds(ids); } /** * Query bonds by attributes. */ - async queryBonds(attributes = {}) { + async queryBonds (attributes = {}) { return this._client.queryBonds(attributes); } /** * Create bond. */ - async createBond({ denom , amount }: MessageMsgCreateBond, privateKey: string, fee: StdFee): Promise { - const account = new Account(Buffer.from(privateKey, 'hex')) - await account.init() - const laconicClient = await this.getLaconicClient(account) + async createBond ({ denom, amount }: MessageMsgCreateBond, privateKey: string, fee: StdFee): Promise { + const account = new Account(Buffer.from(privateKey, 'hex')); + await account.init(); + const laconicClient = await this.getLaconicClient(account); const response: DeliverTxResponse = await laconicClient.createBond( account.address, @@ -259,16 +258,16 @@ export class Registry { fee ); - return laconicClient.registry.decode(response.msgResponses[0]) + return laconicClient.registry.decode(response.msgResponses[0]); } /** * Refill bond. */ - async refillBond({ denom, amount, id}: MessageMsgRefillBond, privateKey: string, fee: StdFee): Promise { - const account = new Account(Buffer.from(privateKey, 'hex')) - await account.init() - const laconicClient = await this.getLaconicClient(account) + async refillBond ({ denom, amount, id }: MessageMsgRefillBond, privateKey: string, fee: StdFee): Promise { + const account = new Account(Buffer.from(privateKey, 'hex')); + await account.init(); + const laconicClient = await this.getLaconicClient(account); const response: DeliverTxResponse = await laconicClient.refillBond( account.address, @@ -278,16 +277,16 @@ export class Registry { fee ); - return laconicClient.registry.decode(response.msgResponses[0]) + return laconicClient.registry.decode(response.msgResponses[0]); } /** * Withdraw (from) bond. */ - async withdrawBond({ denom, amount, id }: MessageMsgWithdrawBond, privateKey: string, fee: StdFee): Promise { - const account = new Account(Buffer.from(privateKey, 'hex')) - await account.init() - const laconicClient = await this.getLaconicClient(account) + async withdrawBond ({ denom, amount, id }: MessageMsgWithdrawBond, privateKey: string, fee: StdFee): Promise { + const account = new Account(Buffer.from(privateKey, 'hex')); + await account.init(); + const laconicClient = await this.getLaconicClient(account); const response: DeliverTxResponse = await laconicClient.withdrawBond( account.address, @@ -297,16 +296,16 @@ export class Registry { fee ); - return laconicClient.registry.decode(response.msgResponses[0]) + return laconicClient.registry.decode(response.msgResponses[0]); } /** * Cancel bond. */ - async cancelBond({ id }: MessageMsgCancelBond, privateKey: string, fee: StdFee): Promise { - const account = new Account(Buffer.from(privateKey, 'hex')) - await account.init() - const laconicClient = await this.getLaconicClient(account) + async cancelBond ({ id }: MessageMsgCancelBond, privateKey: string, fee: StdFee): Promise { + const account = new Account(Buffer.from(privateKey, 'hex')); + await account.init(); + const laconicClient = await this.getLaconicClient(account); const response: DeliverTxResponse = await laconicClient.cancelBond( account.address, @@ -314,18 +313,18 @@ export class Registry { fee ); - return laconicClient.registry.decode(response.msgResponses[0]) + return laconicClient.registry.decode(response.msgResponses[0]); } /** * Associate record with bond. */ - async associateBond(params: MessageMsgAssociateBond, privateKey: string, fee: Fee) { + async associateBond (params: MessageMsgAssociateBond, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgAssociateBond(this._chain, sender, fee, '', params) + const msg = createTxMsgAssociateBond(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -334,12 +333,12 @@ export class Registry { /** * Dissociate record from bond. */ - async dissociateBond(params: MessageMsgDissociateBond, privateKey: string, fee: Fee) { + async dissociateBond (params: MessageMsgDissociateBond, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgDissociateBond(this._chain, sender, fee, '', params) + const msg = createTxMsgDissociateBond(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -348,12 +347,12 @@ export class Registry { /** * Dissociate all records from bond. */ - async dissociateRecords(params: MessageMsgDissociateRecords, privateKey: string, fee: Fee) { + async dissociateRecords (params: MessageMsgDissociateRecords, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgDissociateRecords(this._chain, sender, fee, '', params) + const msg = createTxMsgDissociateRecords(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -362,12 +361,12 @@ export class Registry { /** * Reassociate records (switch bond). */ - async reassociateRecords(params: MessageMsgReAssociateRecords, privateKey: string, fee: Fee) { + async reassociateRecords (params: MessageMsgReAssociateRecords, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgReAssociateRecords(this._chain, sender, fee, '', params) + const msg = createTxMsgReAssociateRecords(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -376,7 +375,7 @@ export class Registry { /** * Reserve authority. */ - async reserveAuthority(params: { name: string, owner?: string }, privateKey: string, fee: Fee) { + async reserveAuthority (params: { name: string, owner?: string }, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); @@ -384,9 +383,9 @@ export class Registry { const msgParams = { name: params.name, owner: params.owner || sender.accountAddress - } + }; - const msg = createTxMsgReserveAuthority(this._chain, sender, fee, '', msgParams) + const msg = createTxMsgReserveAuthority(this._chain, sender, fee, '', msgParams); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -395,12 +394,12 @@ export class Registry { /** * Set authority bond. */ - async setAuthorityBond(params: MessageMsgSetAuthorityBond, privateKey: string, fee: Fee) { + async setAuthorityBond (params: MessageMsgSetAuthorityBond, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgSetAuthorityBond(this._chain, sender, fee, '', params) + const msg = createTxMsgSetAuthorityBond(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -409,12 +408,12 @@ export class Registry { /** * Commit auction bid. */ - async commitBid(params: MessageMsgCommitBid, privateKey: string, fee: Fee) { + async commitBid (params: MessageMsgCommitBid, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgCommitBid(this._chain, sender, fee, '', params) + const msg = createTxMsgCommitBid(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -423,12 +422,12 @@ export class Registry { /** * Reveal auction bid. */ - async revealBid(params: MessageMsgRevealBid, privateKey: string, fee: Fee) { + async revealBid (params: MessageMsgRevealBid, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgRevealBid(this._chain, sender, fee, '', params) + const msg = createTxMsgRevealBid(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -437,26 +436,26 @@ export class Registry { /** * Get records by ids. */ - async getAuctionsByIds(ids: string[]) { + async getAuctionsByIds (ids: string[]) { return this._client.getAuctionsByIds(ids); } /** * Lookup authorities by names. */ - async lookupAuthorities(names: string[], auction = false) { + async lookupAuthorities (names: string[], auction = false) { return this._client.lookupAuthorities(names, auction); } /** * Set name (CRN) to record ID (CID). */ - async setName(params: MessageMsgSetName, privateKey: string, fee: Fee) { + async setName (params: MessageMsgSetName, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgSetName(this._chain, sender, fee, '', params) + const msg = createTxMsgSetName(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -465,19 +464,19 @@ export class Registry { /** * Lookup naming information. */ - async lookupNames(names: string[], history = false) { + async lookupNames (names: string[], history = false) { return this._client.lookupNames(names, history); } /** * Delete name (CRN) mapping. */ - async deleteName(params: MessageMsgDeleteName, privateKey: string, fee: Fee) { + async deleteName (params: MessageMsgDeleteName, privateKey: string, fee: Fee) { let result; const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgDeleteName(this._chain, sender, fee, '', params) + const msg = createTxMsgDeleteName(this._chain, sender, fee, '', params); result = await this._submitTx(msg, privateKey, sender); return parseTxResponse(result); @@ -488,7 +487,7 @@ export class Registry { * @param privateKey - private key in HEX to sign message. * @param txPrivateKey - private key in HEX to sign transaction. */ - async _submitRecordTx( + async _submitRecordTx ( { privateKey, record, bondId }: { privateKey: string, record: any, bondId: string }, txPrivateKey: string, fee: Fee @@ -512,7 +511,7 @@ export class Registry { return this._submitRecordPayloadTx({ payload, bondId }, txPrivateKey, fee); } - async _submitRecordPayloadTx(params: MessageMsgSetRecord, privateKey: string, fee: Fee) { + async _submitRecordPayloadTx (params: MessageMsgSetRecord, privateKey: string, fee: Fee) { if (!isKeyValid(privateKey)) { throw new Error('Registry privateKey should be a hex string.'); } @@ -524,14 +523,14 @@ export class Registry { const account = new Account(Buffer.from(privateKey, 'hex')); const sender = await this._getSender(account); - const msg = createTxMsgSetRecord(this._chain, sender, fee, '', params) + const msg = createTxMsgSetRecord(this._chain, sender, fee, '', params); return this._submitTx(msg, privateKey, sender); } /** * Submit a generic Tx to the chain. */ - async _submitTx(message: any, privateKey: string, sender: Sender) { + async _submitTx (message: any, privateKey: string, sender: Sender) { // Check private key. if (!isKeyValid(privateKey)) { throw new Error('Registry privateKey should be a hex string.'); @@ -543,7 +542,7 @@ export class Registry { // Generate signed Tx. const transaction = createTransaction(message, account, sender, this._chain); - const tx = generatePostBodyBroadcast(transaction, BroadcastMode.Block) + const tx = generatePostBodyBroadcast(transaction, BroadcastMode.Block); // Submit Tx to chain. const { tx_response: response } = await this._client.submit(tx); @@ -551,7 +550,7 @@ export class Registry { if (response.code !== 0) { // Throw error when transaction is not successful. // https://docs.starport.com/guide/nameservice/05-play.html#buy-name-transaction-details - throw new Error(Registry.processWriteError(response.raw_log)) + throw new Error(Registry.processWriteError(response.raw_log)); } return response; @@ -561,10 +560,10 @@ export class Registry { * https://evmos.dev/basics/chain_id.html */ _parseEthChainId (chainId: string) { - const [ idWithChainNumber ] = chainId.split('-') - const [ _, ethChainId ] = idWithChainNumber.split('_') + const [idWithChainNumber] = chainId.split('-'); + const [_, ethChainId] = idWithChainNumber.split('_'); - return Number(ethChainId) + return Number(ethChainId); } /** @@ -582,13 +581,13 @@ export class Registry { accountAddress: account.formattedCosmosAddress, sequence: sequence, accountNumber: number, - pubkey: account.encodedPubkey, - } + pubkey: account.encodedPubkey + }; } - async getLaconicClient(account: Account){ - return LaconicClient.connectWithSigner(this._endpoints.rest, account.wallet) + async getLaconicClient (account: Account) { + return LaconicClient.connectWithSigner(this._endpoints.rest, account.wallet); } } -export { Account } +export { Account }; diff --git a/src/laconic-client.ts b/src/laconic-client.ts index b4bbf16..5ea79d0 100644 --- a/src/laconic-client.ts +++ b/src/laconic-client.ts @@ -1,55 +1,45 @@ -import { GeneratedType, OfflineSigner, Registry } from "@cosmjs/proto-signing"; +import { GeneratedType, OfflineSigner, Registry } from '@cosmjs/proto-signing'; import { defaultRegistryTypes, DeliverTxResponse, SigningStargateClient, SigningStargateClientOptions, - StdFee, -} from "@cosmjs/stargate" -import { Comet38Client } from "@cosmjs/tendermint-rpc" - -import { MsgCancelBondEncodeObject, MsgCreateBondEncodeObject, MsgRefillBondEncodeObject, MsgWithdrawBondEncodeObject, bondTypes, typeUrlMsgCancelBond, typeUrlMsgCreateBond, typeUrlMsgRefillBond, typeUrlMsgWithdrawBond } from "./types/cerc/bond/message"; -import { Coin } from "./proto2/cosmos/base/v1beta1/coin"; + StdFee +} from '@cosmjs/stargate'; +import { Comet38Client } from '@cosmjs/tendermint-rpc'; +import { MsgCancelBondEncodeObject, MsgCreateBondEncodeObject, MsgRefillBondEncodeObject, MsgWithdrawBondEncodeObject, bondTypes, typeUrlMsgCancelBond, typeUrlMsgCreateBond, typeUrlMsgRefillBond, typeUrlMsgWithdrawBond } from './types/cerc/bond/message'; +import { Coin } from './proto2/cosmos/base/v1beta1/coin'; export const laconicDefaultRegistryTypes: ReadonlyArray<[string, GeneratedType]> = [ ...defaultRegistryTypes, - ...bondTypes, -] + ...bondTypes +]; -function createDefaultRegistry(): Registry { +function createDefaultRegistry (): Registry { return new Registry(laconicDefaultRegistryTypes); } export class LaconicClient extends SigningStargateClient { - - public static async connectWithSigner( + public static async connectWithSigner ( endpoint: string, signer: OfflineSigner, - options: SigningStargateClientOptions = {}, + options: SigningStargateClientOptions = {} ): Promise { const cometClient = await Comet38Client.connect(endpoint); return new LaconicClient(cometClient, signer, { registry: createDefaultRegistry(), - ...options, + ...options }); } - protected constructor( - cometClient: Comet38Client, - signer: OfflineSigner, - options: SigningStargateClientOptions, - ) { - super(cometClient, signer, options); - } - - public async createBond( + public async createBond ( signer: string, denom: string, amount: string, - fee: StdFee | "auto" | number, - memo = "", + fee: StdFee | 'auto' | number, + memo = '' ): Promise { const createMsg: MsgCreateBondEncodeObject = { typeUrl: typeUrlMsgCreateBond, @@ -61,19 +51,19 @@ export class LaconicClient extends SigningStargateClient { amount }) ] - }, + } }; return this.signAndBroadcast(signer, [createMsg], fee, memo); } - public async refillBond( + public async refillBond ( signer: string, denom: string, amount: string, id: string, - fee: StdFee | "auto" | number, - memo = "", + fee: StdFee | 'auto' | number, + memo = '' ): Promise { const createMsg: MsgRefillBondEncodeObject = { typeUrl: typeUrlMsgRefillBond, @@ -86,19 +76,19 @@ export class LaconicClient extends SigningStargateClient { amount }) ] - }, + } }; return this.signAndBroadcast(signer, [createMsg], fee, memo); } - public async withdrawBond( + public async withdrawBond ( signer: string, denom: string, amount: string, id: string, - fee: StdFee | "auto" | number, - memo = "", + fee: StdFee | 'auto' | number, + memo = '' ): Promise { const createMsg: MsgWithdrawBondEncodeObject = { typeUrl: typeUrlMsgWithdrawBond, @@ -111,24 +101,24 @@ export class LaconicClient extends SigningStargateClient { amount }) ] - }, + } }; return this.signAndBroadcast(signer, [createMsg], fee, memo); } - public async cancelBond( + public async cancelBond ( signer: string, id: string, - fee: StdFee | "auto" | number, - memo = "", + fee: StdFee | 'auto' | number, + memo = '' ): Promise { const createMsg: MsgCancelBondEncodeObject = { typeUrl: typeUrlMsgCancelBond, value: { id, signer - }, + } }; return this.signAndBroadcast(signer, [createMsg], fee, memo); diff --git a/src/messages/auction.ts b/src/messages/auction.ts index ddb6ad0..b749e39 100644 --- a/src/messages/auction.ts +++ b/src/messages/auction.ts @@ -1,22 +1,22 @@ import { - generateTypes, -} from '@tharsis/eip712' + generateTypes +} from '@tharsis/eip712'; import { Chain, Sender, - Fee, -} from '@tharsis/transactions' + Fee +} from '@tharsis/transactions'; -import * as auctionTx from '../proto/vulcanize/auction/v1beta1/tx' -import { createTx } from './util' +import * as auctionTx from '../proto/vulcanize/auction/v1beta1/tx'; +import { createTx } from './util'; const MSG_COMMIT_BID_TYPES = { MsgValue: [ { name: 'auction_id', type: 'string' }, { name: 'commit_hash', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; export interface MessageMsgCommitBid { auctionId: string, @@ -27,64 +27,64 @@ const MSG_REVEAL_BID_TYPES = { MsgValue: [ { name: 'auction_id', type: 'string' }, { name: 'reveal', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; export interface MessageMsgRevealBid { auctionId: string, reveal: string, } -export function createTxMsgCommitBid( +export function createTxMsgCommitBid ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgCommitBid, + params: MessageMsgCommitBid ) { - const types = generateTypes(MSG_COMMIT_BID_TYPES) + const types = generateTypes(MSG_COMMIT_BID_TYPES); const msg = createMsgCommitBid( params.auctionId, params.commitHash, - sender.accountAddress, - ) + sender.accountAddress + ); const msgCosmos = protoCreateMsgCommitBid( params.auctionId, params.commitHash, - sender.accountAddress, - ) + sender.accountAddress + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgRevealBid( +export function createTxMsgRevealBid ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgRevealBid, + params: MessageMsgRevealBid ) { - const types = generateTypes(MSG_REVEAL_BID_TYPES) + const types = generateTypes(MSG_REVEAL_BID_TYPES); const msg = createMsgRevealBid( params.auctionId, params.reveal, - sender.accountAddress, - ) + sender.accountAddress + ); const msgCosmos = protoCreateMsgRevealBid( params.auctionId, params.reveal, - sender.accountAddress, - ) + sender.accountAddress + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -function createMsgCommitBid( +function createMsgCommitBid ( auctionId: string, commitHash: string, signer: string @@ -94,9 +94,9 @@ function createMsgCommitBid( value: { auction_id: auctionId, commit_hash: commitHash, - signer, - }, - } + signer + } + }; } const protoCreateMsgCommitBid = ( @@ -107,16 +107,16 @@ const protoCreateMsgCommitBid = ( const commitBidMessage = new auctionTx.vulcanize.auction.v1beta1.MsgCommitBid({ auction_id: auctionId, commit_hash: commitHash, - signer, - }) + signer + }); return { message: commitBidMessage, - path: 'vulcanize.auction.v1beta1.MsgCommitBid', - } -} + path: 'vulcanize.auction.v1beta1.MsgCommitBid' + }; +}; -function createMsgRevealBid( +function createMsgRevealBid ( auctionId: string, reveal: string, signer: string @@ -126,9 +126,9 @@ function createMsgRevealBid( value: { auction_id: auctionId, reveal, - signer, - }, - } + signer + } + }; } const protoCreateMsgRevealBid = ( @@ -139,11 +139,11 @@ const protoCreateMsgRevealBid = ( const revealBidMessage = new auctionTx.vulcanize.auction.v1beta1.MsgRevealBid({ auction_id: auctionId, reveal, - signer, - }) + signer + }); return { message: revealBidMessage, - path: 'vulcanize.auction.v1beta1.MsgRevealBid', - } -} + path: 'vulcanize.auction.v1beta1.MsgRevealBid' + }; +}; diff --git a/src/messages/bond.ts b/src/messages/bond.ts index af42aaf..95b1e10 100644 --- a/src/messages/bond.ts +++ b/src/messages/bond.ts @@ -1,88 +1,88 @@ import { - generateTypes, -} from '@tharsis/eip712' + generateTypes +} from '@tharsis/eip712'; import { Chain, Sender, - Fee, -} from '@tharsis/transactions' + Fee +} from '@tharsis/transactions'; -import * as bondTx from '../proto/vulcanize/bond/v1beta1/tx' -import * as registryTx from '../proto/vulcanize/registry/v1beta1/tx' -import * as coin from '../proto/cosmos/base/v1beta1/coin' -import { createTx } from './util' +import * as bondTx from '../proto/vulcanize/bond/v1beta1/tx'; +import * as registryTx from '../proto/vulcanize/registry/v1beta1/tx'; +import * as coin from '../proto/cosmos/base/v1beta1/coin'; +import { createTx } from './util'; const MSG_CREATE_BOND_TYPES = { MsgValue: [ { name: 'signer', type: 'string' }, - { name: 'coins', type: 'TypeCoins[]' }, + { name: 'coins', type: 'TypeCoins[]' } ], TypeCoins: [ { name: 'denom', type: 'string' }, - { name: 'amount', type: 'string' }, - ], -} + { name: 'amount', type: 'string' } + ] +}; const MSG_REFILL_BOND_TYPES = { MsgValue: [ { name: 'id', type: 'string' }, { name: 'signer', type: 'string' }, - { name: 'coins', type: 'TypeCoins[]' }, + { name: 'coins', type: 'TypeCoins[]' } ], TypeCoins: [ { name: 'denom', type: 'string' }, - { name: 'amount', type: 'string' }, - ], -} + { name: 'amount', type: 'string' } + ] +}; const MSG_WITHDRAW_BOND_TYPES = { MsgValue: [ { name: 'id', type: 'string' }, { name: 'signer', type: 'string' }, - { name: 'coins', type: 'TypeCoins[]' }, + { name: 'coins', type: 'TypeCoins[]' } ], TypeCoins: [ { name: 'denom', type: 'string' }, - { name: 'amount', type: 'string' }, - ], -} + { name: 'amount', type: 'string' } + ] +}; const MSG_CANCEL_BOND_TYPES = { MsgValue: [ { name: 'id', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; const MSG_ASSOCIATE_BOND_TYPES = { MsgValue: [ { name: 'record_id', type: 'string' }, { name: 'bond_id', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; const MSG_DISSOCIATE_BOND_TYPES = { MsgValue: [ { name: 'record_id', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; const MSG_DISSOCIATE_RECORDS_TYPES = { MsgValue: [ { name: 'bond_id', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; const MSG_REASSOCIATE_RECORDS_TYPES = { MsgValue: [ { name: 'new_bond_id', type: 'string' }, { name: 'old_bond_id', type: 'string' }, - { name: 'signer', type: 'string' }, + { name: 'signer', type: 'string' } ] -} +}; export interface MessageMsgCreateBond { amount: string @@ -123,200 +123,200 @@ export interface MessageMsgReAssociateRecords { oldBondId: string } -export function createTxMsgCreateBond( +export function createTxMsgCreateBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgCreateBond, + params: MessageMsgCreateBond ) { - const types = generateTypes(MSG_CREATE_BOND_TYPES) + const types = generateTypes(MSG_CREATE_BOND_TYPES); const msg = createMsgCreateBond( sender.accountAddress, params.amount, params.denom - ) + ); const msgCosmos = protoCreateMsgCreateBond( sender.accountAddress, params.amount, params.denom - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgRefillBond( +export function createTxMsgRefillBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgRefillBond, + params: MessageMsgRefillBond ) { - const types = generateTypes(MSG_REFILL_BOND_TYPES) + const types = generateTypes(MSG_REFILL_BOND_TYPES); const msg = createMsgRefillBond( params.id, sender.accountAddress, params.amount, params.denom - ) + ); const msgCosmos = protoCreateMsgRefillBond( params.id, sender.accountAddress, params.amount, params.denom - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgWithdrawBond( +export function createTxMsgWithdrawBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgWithdrawBond, + params: MessageMsgWithdrawBond ) { - const types = generateTypes(MSG_WITHDRAW_BOND_TYPES) + const types = generateTypes(MSG_WITHDRAW_BOND_TYPES); const msg = createMsgWithdrawBond( params.id, sender.accountAddress, params.amount, params.denom - ) + ); const msgCosmos = protoCreateMsgWithdrawBond( params.id, sender.accountAddress, params.amount, params.denom - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgCancelBond( +export function createTxMsgCancelBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgCancelBond, + params: MessageMsgCancelBond ) { - const types = generateTypes(MSG_CANCEL_BOND_TYPES) + const types = generateTypes(MSG_CANCEL_BOND_TYPES); const msg = createMsgCancelBond( params.id, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgCancelBond( params.id, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgAssociateBond( +export function createTxMsgAssociateBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgAssociateBond, + params: MessageMsgAssociateBond ) { - const types = generateTypes(MSG_ASSOCIATE_BOND_TYPES) + const types = generateTypes(MSG_ASSOCIATE_BOND_TYPES); const msg = createMsgAssociateBond( params.recordId, params.bondId, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgAssociateBond( params.recordId, params.bondId, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgDissociateBond( +export function createTxMsgDissociateBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgDissociateBond, + params: MessageMsgDissociateBond ) { - const types = generateTypes(MSG_DISSOCIATE_BOND_TYPES) + const types = generateTypes(MSG_DISSOCIATE_BOND_TYPES); const msg = createMsgDissociateBond( params.recordId, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgDissociateBond( params.recordId, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgDissociateRecords( +export function createTxMsgDissociateRecords ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgDissociateRecords, + params: MessageMsgDissociateRecords ) { - const types = generateTypes(MSG_DISSOCIATE_RECORDS_TYPES) + const types = generateTypes(MSG_DISSOCIATE_RECORDS_TYPES); const msg = createMsgDissociateRecords( params.bondId, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgDissociateRecords( params.bondId, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgReAssociateRecords( +export function createTxMsgReAssociateRecords ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgReAssociateRecords, + params: MessageMsgReAssociateRecords ) { - const types = generateTypes(MSG_REASSOCIATE_RECORDS_TYPES) + const types = generateTypes(MSG_REASSOCIATE_RECORDS_TYPES); const msg = createMsgReAssociateRecords( params.newBondId, params.oldBondId, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgReAssociateRecords( params.newBondId, params.oldBondId, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -function createMsgCreateBond( +function createMsgCreateBond ( signer: string, amount: string, - denom: string, + denom: string ) { return { type: 'bond/MsgCreateBond', @@ -324,40 +324,40 @@ function createMsgCreateBond( coins: [ { amount, - denom, - }, + denom + } ], signer - }, - } + } + }; } const protoCreateMsgCreateBond = ( signer: string, amount: string, - denom: string, + denom: string ) => { const value = new coin.cosmos.base.v1beta1.Coin({ denom, - amount, - }) + amount + }); const createBondMessage = new bondTx.vulcanize.bond.v1beta1.MsgCreateBond({ signer, coins: [value] - }) + }); return { message: createBondMessage, - path: 'vulcanize.bond.v1beta1.MsgCreateBond', - } -} + path: 'vulcanize.bond.v1beta1.MsgCreateBond' + }; +}; -function createMsgRefillBond( +function createMsgRefillBond ( id: string, signer: string, amount: string, - denom: string, + denom: string ) { return { type: 'bond/MsgRefillBond', @@ -365,43 +365,43 @@ function createMsgRefillBond( coins: [ { amount, - denom, - }, + denom + } ], id, signer - }, - } + } + }; } const protoCreateMsgRefillBond = ( id: string, signer: string, amount: string, - denom: string, + denom: string ) => { const value = new coin.cosmos.base.v1beta1.Coin({ denom, - amount, - }) + amount + }); const refillBondMessage = new bondTx.vulcanize.bond.v1beta1.MsgRefillBond({ id, signer, coins: [value] - }) + }); return { message: refillBondMessage, - path: 'vulcanize.bond.v1beta1.MsgRefillBond', - } -} + path: 'vulcanize.bond.v1beta1.MsgRefillBond' + }; +}; -function createMsgWithdrawBond( +function createMsgWithdrawBond ( id: string, signer: string, amount: string, - denom: string, + denom: string ) { return { type: 'bond/MsgWithdrawBond', @@ -410,38 +410,38 @@ function createMsgWithdrawBond( coins: [ { amount, - denom, - }, + denom + } ], signer - }, - } + } + }; } const protoCreateMsgWithdrawBond = ( id: string, signer: string, amount: string, - denom: string, + denom: string ) => { const value = new coin.cosmos.base.v1beta1.Coin({ denom, - amount, - }) + amount + }); const withdrawBondMessage = new bondTx.vulcanize.bond.v1beta1.MsgWithdrawBond({ id, signer, coins: [value] - }) + }); return { message: withdrawBondMessage, - path: 'vulcanize.bond.v1beta1.MsgWithdrawBond', - } -} + path: 'vulcanize.bond.v1beta1.MsgWithdrawBond' + }; +}; -function createMsgCancelBond( +function createMsgCancelBond ( id: string, signer: string ) { @@ -450,8 +450,8 @@ function createMsgCancelBond( value: { id, signer - }, - } + } + }; } const protoCreateMsgCancelBond = ( @@ -461,15 +461,15 @@ const protoCreateMsgCancelBond = ( const cancelBondMessage = new bondTx.vulcanize.bond.v1beta1.MsgCancelBond({ id, signer - }) + }); return { message: cancelBondMessage, - path: 'vulcanize.bond.v1beta1.MsgCancelBond', - } -} + path: 'vulcanize.bond.v1beta1.MsgCancelBond' + }; +}; -function createMsgAssociateBond( +function createMsgAssociateBond ( recordId: string, bondId: string, signer: string @@ -480,8 +480,8 @@ function createMsgAssociateBond( record_id: recordId, bond_id: bondId, signer - }, - } + } + }; } const protoCreateMsgAssociateBond = ( @@ -493,15 +493,15 @@ const protoCreateMsgAssociateBond = ( record_id: recordId, bond_id: bondId, signer - }) + }); return { message: associateBondMessage, - path: 'vulcanize.registry.v1beta1.MsgAssociateBond', - } -} + path: 'vulcanize.registry.v1beta1.MsgAssociateBond' + }; +}; -function createMsgDissociateBond( +function createMsgDissociateBond ( recordId: string, signer: string ) { @@ -510,8 +510,8 @@ function createMsgDissociateBond( value: { record_id: recordId, signer - }, - } + } + }; } const protoCreateMsgDissociateBond = ( @@ -521,15 +521,15 @@ const protoCreateMsgDissociateBond = ( const dissociateBondMessage = new registryTx.vulcanize.registry.v1beta1.MsgDissociateBond({ record_id: recordId, signer - }) + }); return { message: dissociateBondMessage, - path: 'vulcanize.registry.v1beta1.MsgDissociateBond', - } -} + path: 'vulcanize.registry.v1beta1.MsgDissociateBond' + }; +}; -function createMsgDissociateRecords( +function createMsgDissociateRecords ( bondId: string, signer: string ) { @@ -538,8 +538,8 @@ function createMsgDissociateRecords( value: { bond_id: bondId, signer - }, - } + } + }; } const protoCreateMsgDissociateRecords = ( @@ -549,15 +549,15 @@ const protoCreateMsgDissociateRecords = ( const dissociateRecordsMessage = new registryTx.vulcanize.registry.v1beta1.MsgDissociateRecords({ bond_id: bondId, signer - }) + }); return { message: dissociateRecordsMessage, - path: 'vulcanize.registry.v1beta1.MsgDissociateRecords', - } -} + path: 'vulcanize.registry.v1beta1.MsgDissociateRecords' + }; +}; -function createMsgReAssociateRecords( +function createMsgReAssociateRecords ( newBondId: string, oldBondId: string, signer: string @@ -568,8 +568,8 @@ function createMsgReAssociateRecords( new_bond_id: newBondId, old_bond_id: oldBondId, signer - }, - } + } + }; } const protoCreateMsgReAssociateRecords = ( @@ -581,10 +581,10 @@ const protoCreateMsgReAssociateRecords = ( new_bond_id: newBondId, old_bond_id: oldBondId, signer - }) + }); return { message: reAssociateRecordsMessage, - path: 'vulcanize.registry.v1beta1.MsgReAssociateRecords', - } -} + path: 'vulcanize.registry.v1beta1.MsgReAssociateRecords' + }; +}; diff --git a/src/messages/registry.ts b/src/messages/registry.ts index 4e42a33..14dd349 100644 --- a/src/messages/registry.ts +++ b/src/messages/registry.ts @@ -1,42 +1,42 @@ import { - generateTypes, -} from '@tharsis/eip712' + generateTypes +} from '@tharsis/eip712'; import { Chain, Sender, - Fee, -} from '@tharsis/transactions' + Fee +} from '@tharsis/transactions'; -import * as registryTx from '../proto/vulcanize/registry/v1beta1/tx' -import * as registry from '../proto/vulcanize/registry/v1beta1/registry' -import { createTx } from './util' -import { Payload } from '../types' +import * as registryTx from '../proto/vulcanize/registry/v1beta1/tx'; +import * as registry from '../proto/vulcanize/registry/v1beta1/registry'; +import { createTx } from './util'; +import { Payload } from '../types'; const MSG_RESERVE_AUTHORITY_TYPES = { MsgValue: [ { name: 'name', type: 'string' }, { name: 'signer', type: 'string' }, - { name: 'owner', type: 'string' }, - ], -} + { name: 'owner', type: 'string' } + ] +}; const MSG_SET_NAME_TYPES = { MsgValue: [ { name: 'crn', type: 'string' }, { name: 'cid', type: 'string' }, - { name: 'signer', type: 'string' }, - ], -} + { name: 'signer', type: 'string' } + ] +}; const MSG_SET_RECORD_TYPES = { MsgValue: [ { name: 'bond_id', type: 'string' }, { name: 'signer', type: 'string' }, - { name: 'payload', type: 'TypePayload' }, + { name: 'payload', type: 'TypePayload' } ], TypePayload: [ { name: 'record', type: 'TypePayloadRecord' }, - { name: 'signatures', type: 'TypePayloadSignatures[]' }, + { name: 'signatures', type: 'TypePayloadSignatures[]' } ], TypePayloadRecord: [ { name: 'id', type: 'string' }, @@ -44,48 +44,48 @@ const MSG_SET_RECORD_TYPES = { { name: 'create_time', type: 'string' }, { name: 'expiry_time', type: 'string' }, { name: 'deleted', type: 'bool' }, - { name: 'attributes', type: 'bytes' }, + { name: 'attributes', type: 'bytes' } ], TypePayloadSignatures: [ { name: 'sig', type: 'string' }, { name: 'pub_key', type: 'string' } - ], -} + ] +}; const MSG_SET_AUTHORITY_BOND_TYPES = { MsgValue: [ { name: 'name', type: 'string' }, { name: 'bond_id', type: 'string' }, - { name: 'signer', type: 'string' }, - ], -} + { name: 'signer', type: 'string' } + ] +}; const MSG_DELETE_NAME_TYPES = { MsgValue: [ { name: 'crn', type: 'string' }, - { name: 'signer', type: 'string' }, - ], -} + { name: 'signer', type: 'string' } + ] +}; export const parseMsgSetRecordResponse = (data: string) => { - const responseBytes = Buffer.from(data, 'hex') + const responseBytes = Buffer.from(data, 'hex'); // TODO: Decode response using protobuf. // const msgSetRecordResponse = nameserviceTx.vulcanize.nameservice.v1beta1.MsgSetRecordResponse.deserialize(responseBytes); // return msgSetRecordResponse.toObject(); // Workaround as proto based decoding is not working. - const [_, id] = responseBytes.toString().split(';') + const [_, id] = responseBytes.toString().split(';'); - return { id } -} + return { id }; +}; export const NAMESERVICE_ERRORS = [ 'Name already reserved.', 'Authority bond not found.', 'Name authority not found.', - 'Access denied.', -] + 'Access denied.' +]; export interface MessageMsgReserveAuthority { name: string @@ -111,125 +111,125 @@ export interface MessageMsgDeleteName { crn: string } -export function createTxMsgReserveAuthority( +export function createTxMsgReserveAuthority ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgReserveAuthority, + params: MessageMsgReserveAuthority ) { - const types = generateTypes(MSG_RESERVE_AUTHORITY_TYPES) + const types = generateTypes(MSG_RESERVE_AUTHORITY_TYPES); const msg = createMsgReserveAuthority( params.name, sender.accountAddress, params.owner - ) + ); const msgCosmos = protoCreateMsgReserveAuthority( params.name, sender.accountAddress, params.owner - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgSetName( +export function createTxMsgSetName ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgSetName, + params: MessageMsgSetName ) { - const types = generateTypes(MSG_SET_NAME_TYPES) + const types = generateTypes(MSG_SET_NAME_TYPES); const msg = createMsgSetName( params.crn, params.cid, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgSetName( params.crn, params.cid, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgSetRecord( +export function createTxMsgSetRecord ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgSetRecord, + params: MessageMsgSetRecord ) { - const types = generateTypes(MSG_SET_RECORD_TYPES) + const types = generateTypes(MSG_SET_RECORD_TYPES); const msg = createMsgSetRecord( params.bondId, params.payload, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgSetRecord( params.bondId, params.payload, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgSetAuthorityBond( +export function createTxMsgSetAuthorityBond ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgSetAuthorityBond, + params: MessageMsgSetAuthorityBond ) { - const types = generateTypes(MSG_SET_AUTHORITY_BOND_TYPES) + const types = generateTypes(MSG_SET_AUTHORITY_BOND_TYPES); const msg = createMsgSetAuthorityBond( params.name, params.bondId, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgSetAuthorityBond( params.name, params.bondId, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -export function createTxMsgDeleteName( +export function createTxMsgDeleteName ( chain: Chain, sender: Sender, fee: Fee, memo: string, - params: MessageMsgDeleteName, + params: MessageMsgDeleteName ) { - const types = generateTypes(MSG_DELETE_NAME_TYPES) + const types = generateTypes(MSG_DELETE_NAME_TYPES); const msg = createMsgDeleteName( params.crn, sender.accountAddress - ) + ); const msgCosmos = protoCreateMsgDeleteName( params.crn, sender.accountAddress - ) + ); - return createTx(chain, sender, fee, memo, types, msg, msgCosmos) + return createTx(chain, sender, fee, memo, types, msg, msgCosmos); } -function createMsgReserveAuthority( +function createMsgReserveAuthority ( name: string, signer: string, owner: string @@ -240,28 +240,28 @@ function createMsgReserveAuthority( name, signer, owner - }, - } + } + }; } const protoCreateMsgReserveAuthority = ( name: string, signer: string, - owner: string, + owner: string ) => { const reserveAuthorityMessage = new registryTx.vulcanize.registry.v1beta1.MsgReserveAuthority({ name, signer, owner - }) + }); return { message: reserveAuthorityMessage, - path: 'vulcanize.registry.v1beta1.MsgReserveAuthority', - } -} + path: 'vulcanize.registry.v1beta1.MsgReserveAuthority' + }; +}; -function createMsgSetName( +function createMsgSetName ( crn: string, cid: string, signer: string @@ -272,8 +272,8 @@ function createMsgSetName( crn, cid, signer - }, - } + } + }; } const protoCreateMsgSetName = ( @@ -284,16 +284,16 @@ const protoCreateMsgSetName = ( const setNameMessage = new registryTx.vulcanize.registry.v1beta1.MsgSetName({ crn, cid, - signer, - }) + signer + }); return { message: setNameMessage, - path: 'vulcanize.registry.v1beta1.MsgSetName', - } -} + path: 'vulcanize.registry.v1beta1.MsgSetName' + }; +}; -function createMsgSetRecord( +function createMsgSetRecord ( bondId: string, payload: Payload, signer: string @@ -304,8 +304,8 @@ function createMsgSetRecord( bond_id: bondId, signer, payload: payload.serialize() - }, - } + } + }; } const protoCreateMsgSetRecord = ( @@ -313,32 +313,32 @@ const protoCreateMsgSetRecord = ( payloadData: Payload, signer: string ) => { - const record = new registry.vulcanize.registry.v1beta1.Record(payloadData.record.serialize()) + const record = new registry.vulcanize.registry.v1beta1.Record(payloadData.record.serialize()); const signatures = payloadData.signatures.map( signature => new registry.vulcanize.registry.v1beta1.Signature( signature.serialize() ) - ) + ); const payload = new registryTx.vulcanize.registry.v1beta1.Payload({ record, signatures - }) + }); const setNameMessage = new registryTx.vulcanize.registry.v1beta1.MsgSetRecord({ bond_id: bondId, signer, payload - }) + }); return { message: setNameMessage, - path: 'vulcanize.registry.v1beta1.MsgSetRecord', - } -} + path: 'vulcanize.registry.v1beta1.MsgSetRecord' + }; +}; -function createMsgSetAuthorityBond( +function createMsgSetAuthorityBond ( name: string, bondId: string, signer: string @@ -349,8 +349,8 @@ function createMsgSetAuthorityBond( name, bond_id: bondId, signer - }, - } + } + }; } const protoCreateMsgSetAuthorityBond = ( @@ -361,16 +361,16 @@ const protoCreateMsgSetAuthorityBond = ( const setAuthorityBondMessage = new registryTx.vulcanize.registry.v1beta1.MsgSetAuthorityBond({ name, bond_id: bondId, - signer, - }) + signer + }); return { message: setAuthorityBondMessage, - path: 'vulcanize.registry.v1beta1.MsgSetAuthorityBond', - } -} + path: 'vulcanize.registry.v1beta1.MsgSetAuthorityBond' + }; +}; -function createMsgDeleteName( +function createMsgDeleteName ( crn: string, signer: string ) { @@ -379,8 +379,8 @@ function createMsgDeleteName( value: { crn, signer - }, - } + } + }; } const protoCreateMsgDeleteName = ( @@ -389,11 +389,11 @@ const protoCreateMsgDeleteName = ( ) => { const deleteNameAutorityMessage = new registryTx.vulcanize.registry.v1beta1.MsgDeleteNameAuthority({ crn, - signer, - }) + signer + }); return { message: deleteNameAutorityMessage, - path: 'vulcanize.registry.v1beta1.MsgDeleteNameAuthority', - } -} + path: 'vulcanize.registry.v1beta1.MsgDeleteNameAuthority' + }; +}; diff --git a/src/messages/util.ts b/src/messages/util.ts index 038e74d..c85a04f 100644 --- a/src/messages/util.ts +++ b/src/messages/util.ts @@ -1,16 +1,16 @@ -import { Message } from "google-protobuf"; +import { Message } from 'google-protobuf'; import { createEIP712, generateFee, generateMessage, - generateTypes, -} from '@tharsis/eip712' + generateTypes +} from '@tharsis/eip712'; import { Chain, Sender, - Fee, -} from '@tharsis/transactions' -import { createTransaction } from '@tharsis/proto' + Fee +} from '@tharsis/transactions'; +import { createTransaction } from '@tharsis/proto'; interface Msg { type: string @@ -36,16 +36,16 @@ export const createTx = ( memo: string, messageTypes: Types, msg: Msg, - msgCosmos: MsgCosmos, + msgCosmos: MsgCosmos ) => { // EIP712 const feeObject = generateFee( fee.amount, fee.denom, fee.gas, - sender.accountAddress, - ) - const types = generateTypes(messageTypes) + sender.accountAddress + ); + const types = generateTypes(messageTypes); const messages = generateMessage( sender.accountNumber.toString(), @@ -53,9 +53,9 @@ export const createTx = ( chain.cosmosChainId, memo, feeObject, - msg, - ) - const eipToSign = createEIP712(types, chain.chainId, messages) + msg + ); + const eipToSign = createEIP712(types, chain.chainId, messages); // Cosmos const tx = createTransaction( @@ -68,12 +68,12 @@ export const createTx = ( sender.pubkey, sender.sequence, sender.accountNumber, - chain.cosmosChainId, - ) + chain.cosmosChainId + ); return { signDirect: tx.signDirect, legacyAmino: tx.legacyAmino, - eipToSign, - } -} + eipToSign + }; +}; diff --git a/src/nameservice-expiry.test.ts b/src/nameservice-expiry.test.ts index 3138641..e3de619 100644 --- a/src/nameservice-expiry.test.ts +++ b/src/nameservice-expiry.test.ts @@ -38,8 +38,8 @@ const nameserviceExpiryTests = () => { }, privateKey, fee - ) - console.log("SetRecordResult: " + result.data.id) + ); + console.log('SetRecordResult: ' + result.data.id); const [record] = await registry.queryRecords({ type: 'WebsiteRegistrationRecord', version: watcher.record.version }, true); recordExpiryTime = new Date(record.expiryTime); @@ -47,7 +47,7 @@ const nameserviceExpiryTests = () => { expect(bond).toBeDefined(); expect(bond.balance).toHaveLength(1); expect(bond.balance[0].quantity).toBe('2000000'); - }) + }); test('Reserve authority and set bond', async () => { authorityName = `laconic-${Date.now()}`; @@ -62,41 +62,41 @@ const nameserviceExpiryTests = () => { setTimeout(done, 60 * 1000); }); - test('Check record expiry time', async() => { + test('Check record expiry time', async () => { const [record] = await registry.queryRecords({ type: 'WebsiteRegistrationRecord', version: watcher.record.version }, true); const updatedExpiryTime = new Date(); expect(updatedExpiryTime.getTime()).toBeGreaterThan(recordExpiryTime.getTime()); recordExpiryTime = updatedExpiryTime; - }) + }); - test('Check authority expiry time', async() => { + test('Check authority expiry time', async () => { const [authority] = await registry.lookupAuthorities([authorityName]); const updatedExpiryTime = new Date(); expect(updatedExpiryTime.getTime()).toBeGreaterThan(authorityExpiryTime.getTime()); authorityExpiryTime = updatedExpiryTime; - }) + }); test('Check bond balance', async () => { const [bond] = await registry.getBondsByIds([bondId]); - console.log(bond) + console.log(bond); expect(bond).toBeDefined(); expect(bond.balance).toHaveLength(0); - }) + }); test('Wait for expiry duration', (done) => { setTimeout(done, 60 * 1000); }); - test('Check record deleted without bond balance', async() => { + test('Check record deleted without bond balance', async () => { const records = await registry.queryRecords({ type: 'WebsiteRegistrationRecord', version: watcher.record.version }, true); expect(records).toHaveLength(0); - }) + }); - test('Check authority expired without bond balance', async() => { + test('Check authority expired without bond balance', async () => { const [authority] = await registry.lookupAuthorities([authorityName]); expect(authority.status).toBe('expired'); - }) -} + }); +}; if (!process.env.TEST_NAMESERVICE_EXPIRY) { // Required as jest complains if file has no tests. @@ -107,11 +107,10 @@ if (!process.env.TEST_NAMESERVICE_EXPIRY) { TEST_REGISTRY_EXPIRY=true ./init.sh - Run tests: yarn test:nameservice-expiry */ - describe('Nameservice Expiry', nameserviceExpiryTests) + describe('Nameservice Expiry', nameserviceExpiryTests); } diff --git a/src/naming.test.ts b/src/naming.test.ts index 2385381..15e12f1 100644 --- a/src/naming.test.ts +++ b/src/naming.test.ts @@ -35,7 +35,7 @@ const namingTests = () => { }, privateKey, fee - ) + ); watcherId = result.data.id; }); @@ -52,12 +52,11 @@ const namingTests = () => { let crn: string; beforeAll(async () => { - authorityName = `laconic-${Date.now()}`; crn = `crn://${authorityName}/app/test`; await registry.reserveAuthority({ name: authorityName }, privateKey, fee); - }) + }); test('Lookup authority.', async () => { const [record] = await registry.lookupAuthorities([authorityName]); @@ -77,8 +76,8 @@ const namingTests = () => { }); test('Reserve already reserved authority', async () => { - await expect(registry.reserveAuthority({ name: authorityName }, privateKey, fee)). - rejects.toThrow('Name already reserved.'); + await expect(registry.reserveAuthority({ name: authorityName }, privateKey, fee)) + .rejects.toThrow('Name already reserved.'); }); test('Reserve sub-authority.', async () => { @@ -114,9 +113,9 @@ const namingTests = () => { }); test('Set name for unbonded authority', async () => { - assert(watcherId) - await expect(registry.setName({ crn, cid: watcherId }, privateKey, fee)). - rejects.toThrow('Authority bond not found.'); + assert(watcherId); + await expect(registry.setName({ crn, cid: watcherId }, privateKey, fee)) + .rejects.toThrow('Authority bond not found.'); }); test('Set authority bond', async () => { @@ -203,7 +202,7 @@ const namingTests = () => { }, privateKey, fee - ) + ); const updatedWatcherId = result.data.id; await registry.setName({ crn, cid: updatedWatcherId }, privateKey, fee); diff --git a/src/registry-client.ts b/src/registry-client.ts index ecff7f6..6b6852c 100644 --- a/src/registry-client.ts +++ b/src/registry-client.ts @@ -1,7 +1,7 @@ import assert from 'assert'; import axios from 'axios'; -import graphqlClient from 'graphql.js' -import { get, set } from 'lodash' +import graphqlClient from 'graphql.js'; +import { get, set } from 'lodash'; import { generateEndpointAccount, generateEndpointBroadcast } from '@tharsis/provider'; import { Util } from './util'; @@ -97,13 +97,13 @@ const auctionFields = ` * Registry */ export class RegistryClient { - _restEndpoint: string - _graph: any + _restEndpoint: string; + _graph: any; /** * Get query result. */ - static async getResult(query: any, key: string, modifier?: (rows: any[]) => {}) { + static async getResult (query: any, key: string, modifier?: (rows: any[]) => {}) { const result = await query; if (result && result[key] && result[key].length && result[key][0] !== null) { if (modifier) { @@ -117,7 +117,7 @@ export class RegistryClient { /** * Prepare response attributes. */ - static prepareAttributes(path: string) { + static prepareAttributes (path: string) { return (rows: any[]) => { const result = rows.map(r => { set(r, path, Util.fromGQLAttributes(get(r, path))); @@ -130,7 +130,7 @@ export class RegistryClient { /** * New Client. */ - constructor(gqlEndpoint: string, restEndpoint: string) { + constructor (gqlEndpoint: string, restEndpoint: string) { assert(gqlEndpoint); this._graph = graphqlClient(gqlEndpoint, { method: 'POST', @@ -143,7 +143,7 @@ export class RegistryClient { /** * Get server status. */ - async getStatus() { + async getStatus () { const query = `query { getStatus { version @@ -189,7 +189,7 @@ export class RegistryClient { /** * Fetch Accounts. */ - async getAccounts(addresses: string[]) { + async getAccounts (addresses: string[]) { assert(addresses); assert(addresses.length); @@ -216,7 +216,7 @@ export class RegistryClient { /** * Get records by ids. */ - async getRecordsByIds(ids: string[], refs = false) { + async getRecordsByIds (ids: string[], refs = false) { assert(ids); assert(ids.length); @@ -243,7 +243,7 @@ export class RegistryClient { /** * Get records by attributes. */ - async queryRecords(attributes: {[key: string]: any}, all = false, refs = false) { + async queryRecords (attributes: {[key: string]: any}, all = false, refs = false) { if (!attributes) { attributes = {}; } @@ -266,7 +266,7 @@ export class RegistryClient { all }; - let result = (await this._graph(query)(variables))['queryRecords']; + let result = (await this._graph(query)(variables)).queryRecords; result = RegistryClient.prepareAttributes('attributes')(result); return result; @@ -275,7 +275,7 @@ export class RegistryClient { /** * Lookup authorities by names. */ - async lookupAuthorities(names: string[], auction = false) { + async lookupAuthorities (names: string[], auction = false) { assert(names.length); const query = `query ($names: [String!]) { @@ -296,13 +296,13 @@ export class RegistryClient { const result = await this._graph(query)(variables); - return result['lookupAuthorities']; + return result.lookupAuthorities; } /** * Get auctions by ids. */ - async getAuctionsByIds(ids: string[]) { + async getAuctionsByIds (ids: string[]) { assert(ids); assert(ids.length); @@ -322,7 +322,7 @@ export class RegistryClient { /** * Lookup names. */ - async lookupNames(names: string[], history = false) { + async lookupNames (names: string[], history = false) { assert(names.length); const query = `query ($names: [String!]) { @@ -341,13 +341,13 @@ export class RegistryClient { const result = await this._graph(query)(variables); - return result['lookupNames']; + return result.lookupNames; } /** * Resolve names to records. */ - async resolveNames(names: string[], refs = false) { + async resolveNames (names: string[], refs = false) { assert(names.length); const query = `query ($names: [String!]) { @@ -367,7 +367,7 @@ export class RegistryClient { names }; - let result = (await this._graph(query)(variables))['resolveNames']; + let result = (await this._graph(query)(variables)).resolveNames; result = RegistryClient.prepareAttributes('attributes')(result); return result; @@ -376,7 +376,7 @@ export class RegistryClient { /** * Get bonds by ids. */ - async getBondsByIds(ids: string[]) { + async getBondsByIds (ids: string[]) { assert(ids); assert(ids.length); @@ -401,7 +401,7 @@ export class RegistryClient { /** * Get records by attributes. */ - async queryBonds(attributes = {}) { + async queryBonds (attributes = {}) { const query = `query ($attributes: [KeyValueInput!]) { queryBonds(attributes: $attributes) { id @@ -423,14 +423,14 @@ export class RegistryClient { /** * Submit transaction. */ - async submit(tx: string) { + async submit (tx: string) { assert(tx); // Broadcast transaction. const { data } = await axios.post( `${this._restEndpoint}${generateEndpointBroadcast()}`, tx - ) + ); return data; } diff --git a/src/sdk.test.ts b/src/sdk.test.ts index 4cbd810..50531ce 100644 --- a/src/sdk.test.ts +++ b/src/sdk.test.ts @@ -60,7 +60,7 @@ describe('Querying', () => { const records = await registry.queryRecords({ version, url, type: undefined }, true); expect(records.length).toBe(1); - [ watcher ] = records; + [watcher] = records; const { attributes: { version: recordVersion, url: recordName } } = watcher; expect(recordVersion).toBe(version); expect(recordName).toBe(url); @@ -77,7 +77,7 @@ describe('Querying', () => { expect(record.id).toBe(watcher.id); // temp fix expect(record.attributes.repo_registration_record_cid).toBeDefined(); - expect(record.attributes.repo_registration_record_cid).toHaveProperty("/"); - expect(record.attributes.repo_registration_record_cid["/"]).toHaveLength(46); + expect(record.attributes.repo_registration_record_cid).toHaveProperty('/'); + expect(record.attributes.repo_registration_record_cid['/']).toHaveLength(46); }); }); diff --git a/src/testing/helper.ts b/src/testing/helper.ts index 5653e84..7afed8d 100644 --- a/src/testing/helper.ts +++ b/src/testing/helper.ts @@ -31,17 +31,17 @@ export const getConfig = () => { fee: { amount: '40', denom: 'aphoton', - gas: '400000', + gas: '400000' } - } + }; }; // TODO: Merge both config export const getLaconic2Config = () => { return { fee: { - amount: [{ denom: "photon", amount: "40" }], - gas: "400000", + amount: [{ denom: 'photon', amount: '40' }], + gas: '400000' } - } -} + }; +}; diff --git a/src/txbuilder.ts b/src/txbuilder.ts index 5dfb289..c7301a0 100644 --- a/src/txbuilder.ts +++ b/src/txbuilder.ts @@ -4,7 +4,7 @@ import { signatureToWeb3Extension, Chain, Sender -} from '@tharsis/transactions' +} from '@tharsis/transactions'; import { Account } from './account'; @@ -18,8 +18,8 @@ export const createTransaction = (message: any, account: Account, sender: Sender // Sign transaction. const signature = account.sign(message); - let extension = signatureToWeb3Extension(chain, sender, signature) + let extension = signatureToWeb3Extension(chain, sender, signature); // Create the txRaw. - return createTxRawEIP712(message.legacyAmino.body, message.legacyAmino.authInfo, extension) + return createTxRawEIP712(message.legacyAmino.body, message.legacyAmino.authInfo, extension); }; diff --git a/src/types.ts b/src/types.ts index 7b5970b..c2295d4 100644 --- a/src/types.ts +++ b/src/types.ts @@ -8,12 +8,12 @@ import { Util } from './util'; * Record. */ export class Record { - _record: any + _record: any; /** * New Record. */ - constructor(record: any) { + constructor (record: any) { assert(record); const validator = new Validator(); @@ -26,29 +26,29 @@ export class Record { this._record = record; } - get attributes() { - return Buffer.from(JSON.stringify(this._record), 'binary') + get attributes () { + return Buffer.from(JSON.stringify(this._record), 'binary'); } /** * Serialize record. */ - serialize() { + serialize () { return { - 'id': '_', - 'bond_id': '_', - 'create_time': '_', - 'expiry_time': '_', + id: '_', + bond_id: '_', + create_time: '_', + expiry_time: '_', // Setting deleted as false (zero value) throws error in EIP712 signature verification. - 'deleted': true, - 'attributes': this.attributes, - } + deleted: true, + attributes: this.attributes + }; } /** * Get message to calculate record signature. */ - getMessageToSign() { + getMessageToSign () { return Util.sortJSON(this._record); } } @@ -57,13 +57,13 @@ export class Record { * Record Signature. */ export class Signature { - _pubKey: string - _sig: string + _pubKey: string; + _sig: string; /** * New Signature. */ - constructor(pubKey: string, sig: string) { + constructor (pubKey: string, sig: string) { assert(pubKey); assert(sig); @@ -74,10 +74,10 @@ export class Signature { /** * Serialize Signature. */ - serialize() { + serialize () { return Util.sortJSON({ - 'pub_key': this._pubKey, - 'sig': this._sig + pub_key: this._pubKey, + sig: this._sig }); } } @@ -86,31 +86,31 @@ export class Signature { * Message Payload. */ export class Payload { - _record: Record - _signatures: Signature[] + _record: Record; + _signatures: Signature[]; /** * New Payload. */ - constructor(record: Record, ...signatures: Signature[]) { + constructor (record: Record, ...signatures: Signature[]) { assert(record); this._record = record; this._signatures = signatures; } - get record() { + get record () { return this._record; } - get signatures() { + get signatures () { return this._signatures; } /** * Add message signature to payload. */ - addSignature(signature: any) { + addSignature (signature: any) { assert(signature); this._signatures.push(signature); @@ -119,12 +119,12 @@ export class Payload { /** * Serialize Payload. */ - serialize() { + serialize () { // return Util.sortJSON({ // }); return { - 'record': this._record.serialize(), - 'signatures': this._signatures.map(s => s.serialize()) - } + record: this._record.serialize(), + signatures: this._signatures.map(s => s.serialize()) + }; } } diff --git a/src/types/cerc/bond/message.ts b/src/types/cerc/bond/message.ts index 847b4e5..70c6162 100644 --- a/src/types/cerc/bond/message.ts +++ b/src/types/cerc/bond/message.ts @@ -1,4 +1,4 @@ -import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing"; +import { EncodeObject, GeneratedType } from '@cosmjs/proto-signing'; import { MsgCreateBond, @@ -9,17 +9,16 @@ import { MsgRefillBondResponse, MsgWithdrawBondResponse, MsgCancelBondResponse -} from "../../../proto2/cerc/bond/v1/tx"; - -export const typeUrlMsgCreateBond = "/cerc.bond.v1.MsgCreateBond"; -export const typeUrlMsgRefillBond = "/cerc.bond.v1.MsgRefillBond"; -export const typeUrlMsgWithdrawBond = "/cerc.bond.v1.MsgWithdrawBond"; -export const typeUrlMsgCancelBond = "/cerc.bond.v1.MsgCancelBond"; -export const typeUrlMsgCreateBondResponse = "/cerc.bond.v1.MsgCreateBondResponse"; -export const typeUrlMsgRefillBondResponse = "/cerc.bond.v1.MsgRefillBondResponse"; -export const typeUrlMsgWithdrawBondResponse = "/cerc.bond.v1.MsgWithdrawBondResponse"; -export const typeUrlMsgCancelBondResponse = "/cerc.bond.v1.MsgCancelBondResponse"; +} from '../../../proto2/cerc/bond/v1/tx'; +export const typeUrlMsgCreateBond = '/cerc.bond.v1.MsgCreateBond'; +export const typeUrlMsgRefillBond = '/cerc.bond.v1.MsgRefillBond'; +export const typeUrlMsgWithdrawBond = '/cerc.bond.v1.MsgWithdrawBond'; +export const typeUrlMsgCancelBond = '/cerc.bond.v1.MsgCancelBond'; +export const typeUrlMsgCreateBondResponse = '/cerc.bond.v1.MsgCreateBondResponse'; +export const typeUrlMsgRefillBondResponse = '/cerc.bond.v1.MsgRefillBondResponse'; +export const typeUrlMsgWithdrawBondResponse = '/cerc.bond.v1.MsgWithdrawBondResponse'; +export const typeUrlMsgCancelBondResponse = '/cerc.bond.v1.MsgCancelBondResponse'; export const bondTypes: ReadonlyArray<[string, GeneratedType]> = [ [typeUrlMsgCreateBond, MsgCreateBond], @@ -29,25 +28,25 @@ export const bondTypes: ReadonlyArray<[string, GeneratedType]> = [ [typeUrlMsgWithdrawBond, MsgWithdrawBond], [typeUrlMsgWithdrawBondResponse, MsgWithdrawBondResponse], [typeUrlMsgCancelBond, MsgCancelBond], - [typeUrlMsgCancelBondResponse, MsgCancelBondResponse], + [typeUrlMsgCancelBondResponse, MsgCancelBondResponse] ]; export interface MsgCreateBondEncodeObject extends EncodeObject { - readonly typeUrl: "/cerc.bond.v1.MsgCreateBond"; + readonly typeUrl: '/cerc.bond.v1.MsgCreateBond'; readonly value: Partial; } export interface MsgRefillBondEncodeObject extends EncodeObject { - readonly typeUrl: "/cerc.bond.v1.MsgRefillBond"; + readonly typeUrl: '/cerc.bond.v1.MsgRefillBond'; readonly value: Partial; } export interface MsgWithdrawBondEncodeObject extends EncodeObject { - readonly typeUrl: "/cerc.bond.v1.MsgWithdrawBond"; + readonly typeUrl: '/cerc.bond.v1.MsgWithdrawBond'; readonly value: Partial; } export interface MsgCancelBondEncodeObject extends EncodeObject { - readonly typeUrl: "/cerc.bond.v1.MsgCancelBond"; + readonly typeUrl: '/cerc.bond.v1.MsgCancelBond'; readonly value: Partial; } diff --git a/src/util.test.ts b/src/util.test.ts index df58da1..4189354 100644 --- a/src/util.test.ts +++ b/src/util.test.ts @@ -34,15 +34,15 @@ const utilTests = () => { }, privateKey, fee - ) + ); watcherId = result.data.id; }); test('Generate content id.', async () => { const cid = await Util.getContentId(watcher.record); - expect(cid).toBe(watcherId) + expect(cid).toBe(watcherId); }); -} +}; describe('Util', utilTests); diff --git a/src/util.ts b/src/util.ts index f55d62d..ba229d3 100644 --- a/src/util.ts +++ b/src/util.ts @@ -1,7 +1,7 @@ -import * as Block from 'multiformats/block' -import { sha256 as hasher } from 'multiformats/hashes/sha2' -import * as dagCBOR from '@ipld/dag-cbor' -import * as dagJSON from '@ipld/dag-json' +import * as Block from 'multiformats/block'; +import { sha256 as hasher } from 'multiformats/hashes/sha2'; +import * as dagCBOR from '@ipld/dag-cbor'; +import * as dagJSON from '@ipld/dag-json'; /** * Utils @@ -10,7 +10,7 @@ export class Util { /** * Sorts JSON object. */ - static sortJSON(obj: any) { + static sortJSON (obj: any) { if (obj instanceof Array) { for (let i = 0; i < obj.length; i++) { obj[i] = Util.sortJSON(obj[i]); @@ -32,7 +32,7 @@ export class Util { /** * Marshal object into gql 'attributes' variable. */ - static toGQLAttributes(obj: any) { + static toGQLAttributes (obj: any) { const vars: any[] = []; Object.keys(obj).forEach(key => { const value = this.toGQLValue(obj[key]); @@ -44,38 +44,38 @@ export class Util { return vars; } - static toGQLValue(obj: any) { - if (obj === null) { - return null; - } - let type: string = typeof obj; - switch (type) { - case 'number': - type = (obj % 1 === 0) ? 'int' : 'float'; - return { [type]: obj }; - case 'string': - return { 'string': obj }; - case 'boolean': - return { 'boolean': obj }; - case 'object': - if (obj['/'] !== undefined) { - return { 'link': obj['/'] }; - } - if (obj instanceof Array) { - return { 'array': obj }; - } - return { 'map': obj }; - case 'undefined': - return undefined; - default: - throw new Error(`Unknown object type '${type}': ${obj}`); - } + static toGQLValue (obj: any) { + if (obj === null) { + return null; + } + let type: string = typeof obj; + switch (type) { + case 'number': + type = (obj % 1 === 0) ? 'int' : 'float'; + return { [type]: obj }; + case 'string': + return { string: obj }; + case 'boolean': + return { boolean: obj }; + case 'object': + if (obj['/'] !== undefined) { + return { link: obj['/'] }; + } + if (obj instanceof Array) { + return { array: obj }; + } + return { map: obj }; + case 'undefined': + return undefined; + default: + throw new Error(`Unknown object type '${type}': ${obj}`); + } } /** * Unmarshal attributes array to object. */ - static fromGQLAttributes(attributes: any[] = []) { + static fromGQLAttributes (attributes: any[] = []) { const res: {[key: string]: any} = {}; attributes.forEach(attr => { @@ -85,7 +85,7 @@ export class Util { return res; } - static fromGQLValue(obj: any) { + static fromGQLValue (obj: any) { // Get first non-null key const present = Object.keys(obj).find(k => obj[k] !== null); if (present === undefined) { @@ -105,15 +105,15 @@ export class Util { /** * Get record content ID. */ - static async getContentId(record: any) { - const serialized = dagJSON.encode(record) - const recordData = dagJSON.decode(serialized) + static async getContentId (record: any) { + const serialized = dagJSON.encode(record); + const recordData = dagJSON.decode(serialized); const block = await Block.encode({ value: recordData, codec: dagCBOR, hasher - }) + }); return block.cid.toString(); } diff --git a/yarn.lock b/yarn.lock index 56cc846..f75594f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -535,6 +540,38 @@ resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.32.2.tgz#324304aa85bfa6f10561cc17781d824d02130897" integrity sha512-Gg5t+eR7vPJMAmhkFt6CZrzPd0EKpAslWwk5rFVYZpJsM8JG5KT9XQ99hgNM3Ov6ScNoIWbXkpX27F6A9cXR4Q== +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.0": + version "8.57.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" + integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== + "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" @@ -928,6 +965,25 @@ link-module-alias "^1.2.0" shx "^0.3.4" +"@humanwhocodes/config-array@^0.11.14": + version "0.11.14" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" + integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== + dependencies: + "@humanwhocodes/object-schema" "^2.0.2" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" + integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== + "@ipld/dag-cbor@^7.0.1": version "7.0.3" resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" @@ -1205,6 +1261,27 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@octetstream/promisify@2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@octetstream/promisify/-/promisify-2.0.2.tgz#29ac3bd7aefba646db670227f895d812c1a19615" @@ -1411,6 +1488,16 @@ jest-matcher-utils "^27.0.0" pretty-format "^27.0.0" +"@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + "@types/lodash@^4.14.181": version "4.14.198" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.198.tgz#4d27465257011aedc741a809f1269941fa2c5d4c" @@ -1455,6 +1542,11 @@ dependencies: "@types/node" "*" +"@types/semver@^7.3.12": + version "7.5.8" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" + integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + "@types/semver@^7.3.9": version "7.5.1" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367" @@ -1484,11 +1576,120 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.47.1": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.47.1": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + 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.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1535,11 +1736,103 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-buffer-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" + integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-includes@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array.prototype.filter@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz#423771edeb417ff5914111fff4277ea0624c0d0e" + integrity sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +array.prototype.findlastindex@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz#d1c50f0b3a9da191981ff8942a0aedd82794404f" + integrity sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.3.0" + es-shim-unscopables "^1.0.2" + +array.prototype.flat@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.2.1" + get-intrinsic "^1.2.3" + is-array-buffer "^3.0.4" + is-shared-array-buffer "^1.0.2" + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +available-typed-arrays@^1.0.6, available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + axios@^0.21.2: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -1786,6 +2079,17 @@ buffer@6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + set-function-length "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1978,7 +2282,7 @@ create-jest@^29.7.0: jest-util "^29.7.0" prompts "^2.0.1" -cross-spawn@^7.0.3: +cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2005,7 +2309,14 @@ dataloader@^1.4.0: resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-1.4.0.tgz#bca11d867f5d3f1b9ed9f737bd15970c65dff5c8" integrity sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw== -debug@^4.1.0, debug@^4.1.1: +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, 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== @@ -2017,12 +2328,17 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + deepmerge@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.2, define-data-property@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== @@ -2031,7 +2347,7 @@ define-data-property@^1.0.1: es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.1.3: +define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -2060,6 +2376,27 @@ diff-sequences@^29.6.3: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dotenv@^16.0.0: version "16.3.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" @@ -2100,6 +2437,58 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-abstract@^1.22.1, es-abstract@^1.22.3: + version "1.22.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.5.tgz#1417df4e97cc55f09bf7e58d1e614bc61cb8df46" + integrity sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w== + dependencies: + array-buffer-byte-length "^1.0.1" + arraybuffer.prototype.slice "^1.0.3" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + es-define-property "^1.0.0" + es-errors "^1.3.0" + es-set-tostringtag "^2.0.3" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.4" + get-symbol-description "^1.0.2" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + has-proto "^1.0.3" + has-symbols "^1.0.3" + hasown "^2.0.1" + internal-slot "^1.0.7" + is-array-buffer "^3.0.4" + is-callable "^1.2.7" + is-negative-zero "^2.0.3" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.3" + is-string "^1.0.7" + is-typed-array "^1.1.13" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.5" + regexp.prototype.flags "^1.5.2" + safe-array-concat "^1.1.0" + safe-regex-test "^1.0.3" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.2" + typed-array-byte-length "^1.0.1" + typed-array-byte-offset "^1.0.2" + typed-array-length "^1.0.5" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.14" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" @@ -2107,11 +2496,36 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" -es-errors@^1.3.0: +es-errors@^1.0.0, es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== +es-set-tostringtag@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" + integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2127,11 +2541,210 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-semistandard@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/eslint-config-semistandard/-/eslint-config-semistandard-15.0.1.tgz#a868397af8fb26d1bb6b907aa9d575d385581099" + integrity sha512-sfV+qNBWKOmF0kZJll1VH5XqOAdTmLlhbOl9WKI11d2eMEe+Kicxnpm24PQWHOqAfk5pAWU2An0LjNCXKa4Usg== + +eslint-config-standard@^16.0.3: + version "16.0.3" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz#6c8761e544e96c531ff92642eeb87842b8488516" + integrity sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34" + integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q== + dependencies: + debug "^3.2.7" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.27.5: + version "2.29.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" + integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== + dependencies: + array-includes "^3.1.7" + array.prototype.findlastindex "^1.2.3" + array.prototype.flat "^1.3.2" + array.prototype.flatmap "^1.3.2" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.8.0" + hasown "^2.0.0" + is-core-module "^2.13.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.7" + object.groupby "^1.0.1" + object.values "^1.1.7" + semver "^6.3.1" + tsconfig-paths "^3.15.0" + +eslint-plugin-node@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz#c95544416ee4ada26740a30474eefc5402dc671d" + integrity sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz#a596acc32981627eb36d9d75f9666ac1a4564971" + integrity sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw== + +eslint-plugin-standard@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz#c43f6925d669f177db46f095ea30be95476b1ee4" + integrity sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.35.0: + version "8.57.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" + integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.0" + "@humanwhocodes/config-array" "^0.11.14" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + 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.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + 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.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== +esquery@^1.4.2: + version "1.5.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" @@ -2270,16 +2883,39 @@ expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" @@ -2287,6 +2923,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -2307,6 +2950,28 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" + integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== + follow-redirects@^1.14.0, follow-redirects@^1.15.4: version "1.15.5" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" @@ -2317,6 +2982,13 @@ follow-redirects@^1.14.8: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -2346,6 +3018,21 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -2356,7 +3043,7 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -2377,6 +3064,29 @@ get-stream@^6.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== +get-symbol-description@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5" + integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -2394,13 +3104,32 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globalthis@^1.0.1: +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.1, globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + google-protobuf@^3.19.4, google-protobuf@^3.21.0: version "3.21.2" resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.21.2.tgz#4580a2bea8bbb291ee579d1fefb14d6fa3070ea4" @@ -2418,11 +3147,21 @@ graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + graphql.js@^0.6.8: version "0.6.8" resolved "https://registry.yarnpkg.com/graphql.js/-/graphql.js-0.6.8.tgz#5c2e57311b5e74c6665ff9394394bc76f273542f" integrity sha512-y1OxsvPCfBell00yb2T1E+JQjFXzbmqDT3hsf7Ckof80DlRuQ3SrmLL7KC04Up81vlBj+l9opYJjDLf9OgMH3w== +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2433,23 +3172,30 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-property-descriptors@^1.0.0: +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.1, has-property-descriptors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1: +has-proto@^1.0.1, has-proto@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== -has-symbols@^1.0.3: +has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-tostringtag@^1.0.0, has-tostringtag@^1.0.1, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -2474,7 +3220,7 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hasown@^2.0.0: +hasown@^2.0.0, hasown@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.1.tgz#26f48f039de2c0f8d3356c223fb8d50253519faa" integrity sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA== @@ -2500,11 +3246,29 @@ 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== +husky@^9.0.11: + version "9.0.11" + resolved "https://registry.yarnpkg.com/husky/-/husky-9.0.11.tgz#fc91df4c756050de41b3e478b2158b87c1e79af9" + integrity sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw== + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore@^5.1.1, ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" @@ -2531,16 +3295,53 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +internal-slot@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + is-core-module@^2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" @@ -2548,6 +3349,25 @@ is-core-module@^2.13.0: dependencies: has "^1.0.3" +is-core-module@^2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -2558,21 +3378,93 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688" + integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg== + dependencies: + call-bind "^1.0.7" + is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +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" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.13: + version "1.1.13" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -3042,16 +3934,45 @@ js-yaml@^3.13.1, js-yaml@^3.14.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" @@ -3076,6 +3997,13 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kleur@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -3086,6 +4014,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + libsodium-sumo@^0.7.13: version "0.7.13" resolved "https://registry.yarnpkg.com/libsodium-sumo/-/libsodium-sumo-0.7.13.tgz#533b97d2be44b1277e59c1f9f60805978ac5542d" @@ -3129,11 +4065,23 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3196,6 +4144,11 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -3231,14 +4184,14 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" -minimist@^1.2.3: +minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -3248,6 +4201,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + multiformats@^9.5.4: version "9.9.0" resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" @@ -3258,6 +4216,11 @@ nan@^2.13.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -3309,11 +4272,55 @@ object-hash@^1.3.1: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== +object-inspect@^1.13.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== +object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.fromentries@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.groupby@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.2.tgz#494800ff5bab78fd0eff2835ec859066e00192ec" + integrity sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw== + dependencies: + array.prototype.filter "^1.0.3" + call-bind "^1.0.5" + define-properties "^1.2.1" + es-abstract "^1.22.3" + es-errors "^1.0.0" + +object.values@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3328,6 +4335,18 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +optionator@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -3335,7 +4354,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.1.0: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -3349,11 +4368,25 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" @@ -3384,6 +4417,11 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + pbkdf2@^3.0.17: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -3417,6 +4455,16 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prettier@^2.5.1: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" @@ -3479,11 +4527,21 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + pure-rand@^6.0.0: version "6.0.3" resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -3522,6 +4580,21 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" +regexp.prototype.flags@^1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334" + integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +regexpp@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -3534,6 +4607,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -3553,6 +4631,27 @@ resolve@^1.1.6, resolve@^1.20.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.10.1, resolve@^1.22.4: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160-min@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/ripemd160-min/-/ripemd160-min-0.0.6.tgz#a904b77658114474d02503e819dcc55853b67e62" @@ -3573,11 +4672,37 @@ rlp@^2.2.3: dependencies: bn.js "^5.2.0" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-array-concat@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.0.tgz#8d0cae9cb806d6d1c06e08ab13d847293ebe0692" + integrity sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg== + dependencies: + call-bind "^1.0.5" + get-intrinsic "^1.2.2" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-regex-test@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -3592,7 +4717,7 @@ secp256k1@^4.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -semver@^6.3.0, semver@^6.3.1: +semver@^6.1.0, semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== @@ -3604,6 +4729,35 @@ semver@^7.3.5, semver@^7.5.3, semver@^7.5.4: dependencies: lru-cache "^6.0.0" +semver@^7.3.7: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + +set-function-length@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.1.tgz#47cc5945f2c771e2cf261c6737cf9684a2a5e425" + integrity sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g== + dependencies: + define-data-property "^1.1.2" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.1" + +set-function-name@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -3653,6 +4807,16 @@ shx@^0.3.4: minimist "^1.2.3" shelljs "^0.8.5" +side-channel@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + 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" @@ -3710,6 +4874,33 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3724,6 +4915,11 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -3786,6 +4982,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + tiny-secp256k1@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" @@ -3856,6 +5057,28 @@ ts-proto@1.121.6: ts-poet "^4.15.0" ts-proto-descriptors "1.7.1" +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tweetnacl-util@^0.15.1: version "0.15.1" resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" @@ -3866,16 +5089,72 @@ tweetnacl@^1.0.3: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-byte-offset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063" + integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + +typed-array-length@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.5.tgz#57d44da160296d8663fd63180a1802ebf25905d5" + integrity sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + has-proto "^1.0.3" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + typeforce@^1.11.5: version "1.18.0" resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" @@ -3886,6 +5165,16 @@ typescript@^4.6.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + update-browserslist-db@^1.0.11: version "1.0.11" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" @@ -3894,6 +5183,13 @@ update-browserslist-db@^1.0.11: escalade "^3.1.1" picocolors "^1.0.0" +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + util-deprecate@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -3915,6 +5211,28 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.14: + version "1.1.14" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.14.tgz#1f78a111aee1e131ca66164d8bdc3ab062c95a06" + integrity sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg== + dependencies: + available-typed-arrays "^1.0.6" + call-bind "^1.0.5" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.1" + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"