From b1c72cf169fb188a8f53df5c979cc3fe0ff17829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Augusto=20Elesb=C3=A3o?= Date: Fri, 26 May 2023 10:08:22 +0200 Subject: [PATCH] refactor(core)!: deprecate the default gasPrice on SigningArchwayClient (#86) **BREAKING CHANGE:** modified the response of `getEstimateTxFees` to change the `estimatedFee` type from `Coin[]` to `StdFee` and moved the `gasLimit` into `estimatedFee.gas`. --- .eslintrc.cjs | 1 + .prettierrc | 5 + .yarn/versions/4d4c6e79.yml | 6 + changelog.md | 20 + package.json | 3 + packages/arch3-core/package.json | 3 + packages/arch3-core/src/archwayclient.spec.ts | 19 +- packages/arch3-core/src/index.ts | 1 + packages/arch3-core/src/queryclient.ts | 16 +- .../src/signingarchwayclient.spec.ts | 22 +- .../arch3-core/src/signingarchwayclient.ts | 119 ++++-- packages/arch3-core/src/types.ts | 6 +- packages/arch3-proto/package.json | 3 +- yarn.lock | 356 ++++++++++++++++-- 14 files changed, 479 insertions(+), 101 deletions(-) create mode 100644 .prettierrc create mode 100644 .yarn/versions/4d4c6e79.yml diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 9986d98..6b79588 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -128,6 +128,7 @@ module.exports = { '@typescript-eslint/ban-types': 'warn', '@typescript-eslint/explicit-function-return-type': ['error', { allowExpressions: true }], '@typescript-eslint/explicit-member-accessibility': 'error', + '@typescript-eslint/no-inferrable-types': 'off', '@typescript-eslint/naming-convention': [ 'error', { diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..8996d4c --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "editorconfig": true, + "arrowParens": "avoid", + "printWidth": 120 +} diff --git a/.yarn/versions/4d4c6e79.yml b/.yarn/versions/4d4c6e79.yml new file mode 100644 index 0000000..79ce034 --- /dev/null +++ b/.yarn/versions/4d4c6e79.yml @@ -0,0 +1,6 @@ +releases: + "@archwayhq/arch3-core": minor + "@archwayhq/arch3.js": minor + +declined: + - "@archwayhq/arch3-proto" diff --git a/changelog.md b/changelog.md index 620ad3f..4679422 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## Unreleased + +### New feature + +#### **arch3-core** + +- method to `calculateFees` for multiple messages on `SigningArchwayClient` (#86) + +### Changes + +#### **arch3-core** + +- deprecated the default `gasPrice` option on `SigningArchwayClient` (#86) + +### BREAKING CHANGES + +- modified the response of `ArchwayCLient.getEstimateTxFees` to change the + `estimatedFee` type from `Coin[]` to `StdFee` and moved the `gasLimit` + into `estimatedFee.gas` + ## v0.2.0 (2023-05-17) ### New feature diff --git a/package.json b/package.json index 4d65760..e5a6fb1 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "@microsoft/eslint-formatter-sarif": "^3.0", "@types/jest": "^29.5.1", "@types/node": "^18.15.13", + "@types/prettier": "^2", "@typescript-eslint/eslint-plugin": "^5.59.1", "@typescript-eslint/parser": "^5.59.1", "@yarnpkg/sdks": "^2.7.0", @@ -105,6 +106,8 @@ "jest": "^29.5.0", "lint-staged": "^13.2.1", "pinst": "^3.0.0", + "prettier": "^2.8.8", + "prettier-eslint": "^15.0.1", "rimraf": "^3.0.2", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", diff --git a/packages/arch3-core/package.json b/packages/arch3-core/package.json index e3514ea..e3f5ada 100644 --- a/packages/arch3-core/package.json +++ b/packages/arch3-core/package.json @@ -67,6 +67,7 @@ "@microsoft/eslint-formatter-sarif": "^3.0", "@types/jest": "^29.5.1", "@types/node": "^18.15.13", + "@types/prettier": "^2", "@typescript-eslint/eslint-plugin": "^5.59.1", "@typescript-eslint/parser": "^5.59.1", "dotenv": "^16.0.3", @@ -78,6 +79,8 @@ "eslint-plugin-jsdoc": "^43.1.1", "eslint-plugin-node": "^11.1.0", "jest": "^29.5.0", + "prettier": "^2.8.8", + "prettier-eslint": "^15.0.1", "rimraf": "^3.0.2", "ts-jest": "^29.1.0", "ts-node": "^10.9.1", diff --git a/packages/arch3-core/src/archwayclient.spec.ts b/packages/arch3-core/src/archwayclient.spec.ts index 3ead929..52f85ad 100644 --- a/packages/arch3-core/src/archwayclient.spec.ts +++ b/packages/arch3-core/src/archwayclient.spec.ts @@ -55,13 +55,18 @@ describe('ArchwayClient', () => { const client = await ArchwayClient.connect(archwayd.endpoint); const response = await client.getEstimateTxFees(); - expect(response.gasLimit).toBeUndefined(); expect(response.gasUnitPrice).toMatchObject({ denom: archwayd.denom, amount: expect.any(Decimal), }); expect(response.contractAddress).toBeUndefined(); - expect(response.estimatedFee).toHaveLength(0); + expect(response.estimatedFee).toMatchObject({ + gas: '1', + amount: expect.objectContaining([{ + denom: archwayd.denom, + amount: expect.stringMatching(/^\d+$/), + }]) + }); client.disconnect(); }); @@ -70,15 +75,17 @@ describe('ArchwayClient', () => { const client = await ArchwayClient.connect(archwayd.endpoint); const response = await client.getEstimateTxFees(1, contractAddress); - expect(response.gasLimit).toBe(1); expect(response.gasUnitPrice).toMatchObject({ denom: archwayd.denom, amount: expect.any(Decimal), }); expect(response.contractAddress).toBe(contractAddress); - expect(response.estimatedFee).toContainEqual({ - denom: archwayd.denom, - amount: expect.stringMatching(/^\d+$/), + expect(response.estimatedFee).toMatchObject({ + gas: '1', + amount: expect.objectContaining([{ + denom: archwayd.denom, + amount: expect.stringMatching(/^\d+$/), + }]) }); client.disconnect(); diff --git a/packages/arch3-core/src/index.ts b/packages/arch3-core/src/index.ts index 79f41ce..57b5214 100644 --- a/packages/arch3-core/src/index.ts +++ b/packages/arch3-core/src/index.ts @@ -14,6 +14,7 @@ export { SetContractMetadataResult, SetContractPremiumResult, SigningArchwayClient, + SigningArchwayClientOptions, TxResult, WithdrawContractRewardsResult, } from './signingarchwayclient'; diff --git a/packages/arch3-core/src/queryclient.ts b/packages/arch3-core/src/queryclient.ts index abe40b7..09a3e70 100644 --- a/packages/arch3-core/src/queryclient.ts +++ b/packages/arch3-core/src/queryclient.ts @@ -167,25 +167,27 @@ class ArchwayQueryClientImpl implements IArchwayQueryClient { } } - public async getEstimateTxFees(gasLimit?: number, contractAddress?: string): Promise { + public async getEstimateTxFees(gasLimit: number = 1, contractAddress?: string): Promise { const client = this.forceGetQueryClient(); const { estimatedFee, - gasUnitPrice: { amount: gasAmount, denom: gasDenom } - } = await client.rewards.estimateTxFees(gasLimit ?? 0, contractAddress ?? ''); + gasUnitPrice: { amount: gasPriceAmount, denom: gasPriceDenom } + } = await client.rewards.estimateTxFees(gasLimit, contractAddress ?? ''); // The RPC queries do not include the decimal precision fot types.Dec, // so we need to manually decode the gas amount from the proto, as suggested in // https://github.com/osmosis-labs/telescope/issues/247#issuecomment-1292407464 // See also: https://github.com/cosmos/cosmos-sdk/issues/10863 - const gasUnitPriceAmount = decodeCosmosSdkDecFromProto(gasAmount); - const gasUnitPrice = new GasPrice(gasUnitPriceAmount, gasDenom); + const gasUnitPriceAmount = decodeCosmosSdkDecFromProto(gasPriceAmount); + const gasUnitPrice = new GasPrice(gasUnitPriceAmount, gasPriceDenom); return { - gasLimit, contractAddress, - estimatedFee, gasUnitPrice, + estimatedFee: { + amount: estimatedFee, + gas: gasLimit.toString(), + } }; } diff --git a/packages/arch3-core/src/signingarchwayclient.spec.ts b/packages/arch3-core/src/signingarchwayclient.spec.ts index e0d0038..fafcf6f 100644 --- a/packages/arch3-core/src/signingarchwayclient.spec.ts +++ b/packages/arch3-core/src/signingarchwayclient.spec.ts @@ -34,10 +34,9 @@ async function getWalletWithAccounts(): Promise<[DirectSecp256k1HdWallet, readon const flatFee = coin(1000, archwayd.denom); -const defaultSigningClientOptions: SigningCosmWasmClientOptions = { +const clientOptions: SigningCosmWasmClientOptions = { broadcastPollIntervalMs: 200, broadcastTimeoutMs: 8_000, - gasPrice: GasPrice.fromString(`900${archwayd.denom}`), }; async function assertGasPriceEstimation( @@ -63,7 +62,7 @@ describe('SigningArchwayClient', () => { describe('connectWithSigner', () => { it('can be constructed', async () => { const wallet = await DirectSecp256k1HdWallet.generate(12, { prefix: archwayd.prefix }); - const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); expect(client).toBeDefined(); client.disconnect(); }); @@ -72,18 +71,13 @@ describe('SigningArchwayClient', () => { describe('offline', () => { it('can be constructed', async () => { const wallet = await DirectSecp256k1HdWallet.generate(12, { prefix: archwayd.prefix }); - const client = await SigningArchwayClient.offline(wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.offline(wallet, clientOptions); expect(client).toBeDefined(); client.disconnect(); }); }); describe('minimum gas fee estimation', () => { - const clientOptions: SigningCosmWasmClientOptions = { - broadcastPollIntervalMs: 200, - broadcastTimeoutMs: 8_000, - }; - it('works for base transactions', async () => { const [wallet, accounts] = await getWalletWithAccounts(); const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); @@ -231,7 +225,7 @@ describe('SigningArchwayClient', () => { describe('contract metadata', () => { it('sets both owner and rewards', async () => { const [wallet, accounts] = await getWalletWithAccounts(); - const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); const contractAddress = contracts.voter.addresses[1]; const ownerAddress = accounts[1].address; @@ -259,7 +253,7 @@ describe('SigningArchwayClient', () => { it('do not modify the metadata when both owner and rewards are empty', async () => { const [wallet, accounts] = await getWalletWithAccounts(); - const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); const contractAddress = contracts.voter.addresses[1]; const ownerAddress = accounts[1].address; @@ -288,7 +282,7 @@ describe('SigningArchwayClient', () => { describe('contract premium', () => { it('sets the contract premium', async () => { const [wallet, accounts] = await getWalletWithAccounts(); - const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); const ownerAddress = accounts[1].address; const contractAddress = contracts.voter.addresses[1]; @@ -318,7 +312,7 @@ describe('SigningArchwayClient', () => { it('disables the contract premium', async () => { const [wallet, accounts] = await getWalletWithAccounts(); - const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); const contractAddress = contracts.voter.addresses[2]; const ownerAddress = accounts[2].address; @@ -350,7 +344,7 @@ describe('SigningArchwayClient', () => { describe('withdraw', () => { it('withdraws rewards by limit', async () => { const [wallet, accounts] = await getWalletWithAccounts(); - const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, defaultSigningClientOptions); + const client = await SigningArchwayClient.connectWithSigner(archwayd.endpoint, wallet, clientOptions); const contractAddress = contracts.voter.addresses[3]; const rewardsAddress = accounts[3].address; diff --git a/packages/arch3-core/src/signingarchwayclient.ts b/packages/arch3-core/src/signingarchwayclient.ts index cb0a762..1ac27f8 100644 --- a/packages/arch3-core/src/signingarchwayclient.ts +++ b/packages/arch3-core/src/signingarchwayclient.ts @@ -10,7 +10,6 @@ import { EncodeObject, OfflineSigner, Registry } from '@cosmjs/proto-signing'; import { AminoTypes, assertIsDeliverTxSuccess, - calculateFee, createDefaultAminoConverters, defaultRegistryTypes, DeliverTxResponse, @@ -35,6 +34,25 @@ import { RewardsRecord } from './types'; +export interface SigningArchwayClientOptions extends SigningCosmWasmClientOptions { + /** + * @deprecated + * The Archway protocol has built-in mechanisms for calculating the optimal gas price based on network + * usage and contract premiums. Specifying a gasPrice can cause unintended behaviour when calculating tx fees. + */ + readonly gasPrice?: GasPrice; + + /** + * Default adjustment factor to be multiplied against the estimate returned by the tx simulation. + * If the gas limit is set manually in the transaction, this option is ignored. + * + * @default 1.3 + */ + readonly gasAdjustment?: number; +} + +const defaultGasAdjustment = 1.3; + interface DeliverTxResponseWithLogs extends DeliverTxResponse { readonly parsedLogs: readonly logs.Log[]; } @@ -105,9 +123,9 @@ const flatFeeRequiredTypes: readonly string[] = [ */ export class SigningArchwayClient extends SigningCosmWasmClient implements IArchwayQueryClient { private readonly archwayQueryClient: IArchwayQueryClient; - private readonly defaultGasPrice?: GasPrice; + private readonly gasAdjustment: number; - protected constructor(tmClient: TendermintClient | undefined, signer: OfflineSigner, options: SigningCosmWasmClientOptions) { + protected constructor(tmClient: TendermintClient | undefined, signer: OfflineSigner, options: SigningArchwayClientOptions) { const { registry = new Registry([...defaultRegistryTypes, ...wasmTypes, ...rewardsTypes]), aminoTypes = new AminoTypes({ @@ -115,11 +133,13 @@ export class SigningArchwayClient extends SigningCosmWasmClient implements IArch ...createWasmAminoConverters(), ...createRewardsAminoConverters(), }), - gasPrice, + gasAdjustment = defaultGasAdjustment, } = options; + super(tmClient, signer, { ...options, registry, aminoTypes }); + this.archwayQueryClient = createArchwayQueryClient(tmClient); - this.defaultGasPrice = gasPrice; + this.gasAdjustment = gasAdjustment; } /** @@ -185,7 +205,8 @@ export class SigningArchwayClient extends SigningCosmWasmClient implements IArch * * @param senderAddress - Address of the message sender. * @param metadata - The rewards metadata. - * @param fee - Fee to pay for the transaction. Use 'auto' to calculate the fee automatically. + * @param fee - Fee to pay for the transaction. Use 'auto' or a number to calculate the fees automatically. + * When a number is set, it will be used as a gas adjustment multiplier for the estimated fees. * @param memo - Optional memo to add to the transaction. * @returns A {@link SetContractMetadataResult} with the contract's metadata. * @throws Error if the transaction fails. @@ -233,7 +254,8 @@ export class SigningArchwayClient extends SigningCosmWasmClient implements IArch * @param senderAddress - Address of the message sender. * @param contractAddress - Contract address to set the premium fee. * @param flatFee - The contract premium fee. To disable the fee, set its `amount` to `0`. - * @param fee - Fee to pay for the transaction. Use 'auto' to calculate the fee automatically. + * @param fee - Fee to pay for the transaction. Use 'auto' or a number to calculate the fees automatically. + * When a number is set, it will be used as a gas adjustment multiplier for the estimated fees. * @param memo - Optional memo to add to the transaction. * @returns A {@link SetContractPremiumResult} with the contract's premium fee. * @throws Error if the transaction fails. @@ -276,7 +298,8 @@ export class SigningArchwayClient extends SigningCosmWasmClient implements IArch * * @param senderAddress - Address of the message sender and rewards destination. * @param limit - Maximum number of rewards to withdraw. - * @param fee - Fee to pay for the transaction. Use 'auto' to calculate the fee automatically. + * @param fee - Fee to pay for the transaction. Use 'auto' or a number to calculate the fees automatically. + * When a number is set, it will be used as a gas adjustment multiplier for the estimated fees. * @param memo - Optional memo to add to the transaction. * @returns A {@link WithdrawContractRewardsResult} with information about the rewards withdrawn. * @throws Error if the transaction fails. @@ -310,17 +333,20 @@ export class SigningArchwayClient extends SigningCosmWasmClient implements IArch /** * Creates a transaction with the given messages, fee and memo. Then signs and broadcasts the transaction. * - * When setting the fee to 'auto', the fee will be calculated automatically based on the messages and the - * minimum consensus fee. If the messages include a contract execution or migration, the contract premium - * fee will be added to the transaction fee. + * When setting the fee to 'auto' or a number, the fee will be calculated automatically based on the messages, + * the minimum price of gas (mPoG) and the minimum consensus fee. If the messages include a contract execution + * or migration, the contract premium fee will be added to the transaction fee. * * @param signerAddress - The address that will sign transactions using this instance. * The signer must be able to sign with this address. * @param messages - The messages to include in the transaction. The messages types should be registered in the * {@link SigningArchwayClient.registry} when the client is instantiated. - * @param fee - Fee to pay for the transaction. Use 'auto' to calculate the fee automatically. + * @param fee - Fee to pay for the transaction. Use 'auto' or a number to calculate the fees automatically. + * When a number is set, it will be used as a gas adjustment multiplier for the estimated fees. * @param memo - Optional memo to add to the transaction. * @returns A {@link DeliverTxResponse} after successfully broadcasting the transaction. + * + * @see {@link SigningArchwayClient.calculateFee} for calculating the fees before broadcasting. */ public override async signAndBroadcast( signerAddress: string, @@ -330,38 +356,71 @@ export class SigningArchwayClient extends SigningCosmWasmClient implements IArch ): Promise { let usedFee: StdFee; if (fee === 'auto' || typeof fee === 'number') { - const gasEstimation = await this.simulate(signerAddress, messages, memo); - const gasPrice = this.defaultGasPrice ?? (await this.getEstimateTxFees(gasEstimation)).gasUnitPrice; - const multiplier = typeof fee === 'number' ? fee : 1.3; - const estimatedFee = calculateFee(Math.round(gasEstimation * multiplier), gasPrice); - usedFee = await this.calculateFlatFee(messages, estimatedFee); + const gasAdjustment = typeof fee === 'number' ? fee : this.gasAdjustment; + usedFee = await this.calculateFee(signerAddress, messages, memo, gasAdjustment); } else { usedFee = fee; } return super.signAndBroadcast(signerAddress, messages, usedFee, memo); } - private async calculateFlatFee(messages: readonly EncodeObject[], estimatedFee: StdFee): Promise { + /** + * Calculates tx fees by simulating the execution of a transaction with the given messages. + * The fee will be calculated based on the minimum price of gas (mPoG) and the minimum consensus + * fee of the network. If the messages include a contract execution or migration, the contract + * premium fee will be added to the calculation. + * + * @param signerAddress - Address used in the gas simulation that will sign transactions. + * The signer must be able to sign with this address. + * @param messages - The messages to include in the transaction for simulating the gas wanted. + * The messages types should be registered in the {@link SigningArchwayClient.registry} + * when the client is instantiated. + * @param memo - Optional memo to add to the transaction. + * @param gasAdjustment - Adjustment factor to be multiplied against the gas estimate. + * @param granter - The granter address that is used for paying with feegrants. + * @param payer - The fee payer address. The payer must have signed the transaction. + * @returns A {@link StdFee} with the estimated fee for the transaction. + * + * @see {@link SigningCosmWasmClient.simulate} for simulating the execution of a transaction. + * @see {@link SigningArchwayClient.getEstimateTxFees} for getting the minimum price of gas (mPoG) and the minimum + * consensus fee of the network. + */ + public async calculateFee( + signerAddress: string, + messages: readonly EncodeObject[], + memo?: string, + gasAdjustment: number = this.gasAdjustment, + granter?: string, + payer?: string, + ): Promise { + const gasEstimation = await this.simulate(signerAddress, messages, memo); + const gas = Math.round(gasEstimation * gasAdjustment); + const { estimatedFee } = await this.getEstimateTxFees(gas); + const fee = await this.includeFlatFees(messages, estimatedFee); + return { + ...fee, + granter, + payer + }; + } + + private async includeFlatFees(messages: readonly EncodeObject[], fee: StdFee): Promise { + // We memoize the contract premium fee to avoid querying the same contract multiple times. const _getContractPremium = _.memoize((contractAddress: string) => this.getContractPremium(contractAddress)); const flatFees = await Promise.all( messages .filter(({ typeUrl }) => flatFeeRequiredTypes.includes(typeUrl)) - .map(({ value }) => { + .map(async ({ value }) => { const contractAddress = _.get(value, 'contract') as string; - return _getContractPremium(contractAddress); + const { flatFee } = await _getContractPremium(contractAddress); + return flatFee; }) - ); - const cleanedFlatFees = _.compact(flatFees.map(({ flatFee }) => flatFee)); - if (_.isEmpty(cleanedFlatFees)) { - return estimatedFee; - } - - const totalFee = [...estimatedFee.amount, ...cleanedFlatFees] - .reduce((acc, fee) => addCoins(acc, fee)); + ).then(_.compact); // eslint-disable-line @typescript-eslint/unbound-method + const amount = [...fee.amount, ...flatFees].reduce(addCoins); return { - ...estimatedFee, - amount: [totalFee] + ...fee, + amount: [amount] }; } diff --git a/packages/arch3-core/src/types.ts b/packages/arch3-core/src/types.ts index 3fa8164..ae50f1f 100644 --- a/packages/arch3-core/src/types.ts +++ b/packages/arch3-core/src/types.ts @@ -1,4 +1,4 @@ -import { Coin, GasPrice } from '@cosmjs/stargate'; +import { Coin, GasPrice, StdFee } from '@cosmjs/stargate'; /** * Defines the contract rewards distribution options for a particular contract. @@ -47,14 +47,12 @@ export interface ContractPremium { * @see {@link ArchwayClient.getEstimateTxFees} */ export interface EstimateTxFees { - /** Maximum amount of gas to be used in this transaction. */ - readonly gasLimit?: number; /** Minimum transaction fee per gas unit. */ readonly gasUnitPrice?: GasPrice; /** Contract address used to query for premium fees. */ readonly contractAddress?: string; /** Estimated transaction fee for a given gas limit and contract premium. */ - readonly estimatedFee: Coin[]; + readonly estimatedFee: StdFee; } /** diff --git a/packages/arch3-proto/package.json b/packages/arch3-proto/package.json index c51c79f..3b7f488 100644 --- a/packages/arch3-proto/package.json +++ b/packages/arch3-proto/package.json @@ -76,7 +76,8 @@ "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^4.2.1", "jest": "^29.5.0", - "prettier": "^2.8.7", + "prettier": "^2.8.8", + "prettier-eslint": "^15.0.1", "regenerator-runtime": "^0.13.11", "rimraf": "^3.0.2", "ts-jest": "^29.1.0", diff --git a/yarn.lock b/yarn.lock index 4e76a7d..32a46c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,6 +48,7 @@ __metadata: "@microsoft/eslint-formatter-sarif": ^3.0 "@types/jest": ^29.5.1 "@types/node": ^18.15.13 + "@types/prettier": ^2 "@typescript-eslint/eslint-plugin": ^5.59.1 "@typescript-eslint/parser": ^5.59.1 dotenv: ^16.0.3 @@ -61,6 +62,8 @@ __metadata: jest: ^29.5.0 lodash: ^4.17.21 long: ^5.2.0 + prettier: ^2.8.8 + prettier-eslint: ^15.0.1 rimraf: ^3.0.2 ts-jest: ^29.1.0 ts-node: ^10.9.1 @@ -92,7 +95,8 @@ __metadata: eslint-plugin-prettier: ^4.2.1 jest: ^29.5.0 long: ^5.2.0 - prettier: ^2.8.7 + prettier: ^2.8.8 + prettier-eslint: ^15.0.1 protobufjs: ^6.11.3 regenerator-runtime: ^0.13.11 rimraf: ^3.0.2 @@ -114,6 +118,7 @@ __metadata: "@microsoft/eslint-formatter-sarif": ^3.0 "@types/jest": ^29.5.1 "@types/node": ^18.15.13 + "@types/prettier": ^2 "@typescript-eslint/eslint-plugin": ^5.59.1 "@typescript-eslint/parser": ^5.59.1 "@yarnpkg/sdks": ^2.7.0 @@ -130,6 +135,8 @@ __metadata: jest: ^29.5.0 lint-staged: ^13.2.1 pinst: ^3.0.0 + prettier: ^2.8.8 + prettier-eslint: ^15.0.1 rimraf: ^3.0.2 ts-jest: ^29.1.0 ts-node: ^10.9.1 @@ -2590,6 +2597,23 @@ __metadata: languageName: node linkType: hard +"@eslint/eslintrc@npm:^2.0.3": + version: 2.0.3 + resolution: "@eslint/eslintrc@npm:2.0.3" + dependencies: + ajv: ^6.12.4 + debug: ^4.3.2 + espree: ^9.5.2 + 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 + checksum: ddc51f25f8524d8231db9c9bf03177e503d941a332e8d5ce3b10b09241be4d5584a378a529a27a527586bfbccf3031ae539eb891352033c340b012b4d0c81d92 + languageName: node + linkType: hard + "@eslint/js@npm:8.39.0": version: 8.39.0 resolution: "@eslint/js@npm:8.39.0" @@ -2597,6 +2621,13 @@ __metadata: languageName: node linkType: hard +"@eslint/js@npm:8.41.0": + version: 8.41.0 + resolution: "@eslint/js@npm:8.41.0" + checksum: af013d70fe8d0429cdf5cd8b5dcc6fc384ed026c1eccb0cfe30f5849b968ab91645111373fd1b83282b38955b1bdfbe667c1a7dbda3b06cae753521223cad775 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -3527,6 +3558,23 @@ __metadata: languageName: node linkType: hard +"@types/eslint@npm:^8.4.2": + version: 8.40.0 + resolution: "@types/eslint@npm:8.40.0" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: bab41d7f590182e743853cdd5bf5359cbc4240df986223457c8a5f5674743a3fe2a8626704b65bf9121dfa0ce0a0efd760da8339cc329018f229d4d2d6ee1c43 + languageName: node + linkType: hard + +"@types/estree@npm:*": + version: 1.0.1 + resolution: "@types/estree@npm:1.0.1" + checksum: e9aa175eacb797216fafce4d41e8202c7a75555bc55232dee0f9903d7171f8f19f0ae7d5191bb1a88cb90e65468be508c0df850a9fb81b4433b293a5a749899d + languageName: node + linkType: hard + "@types/glob@npm:^7.1.3": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" @@ -3595,6 +3643,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:*": + version: 7.0.12 + resolution: "@types/json-schema@npm:7.0.12" + checksum: 00239e97234eeb5ceefb0c1875d98ade6e922bfec39dd365ec6bd360b5c2f825e612ac4f6e5f1d13601b8b30f378f15e6faa805a3a732f4a1bbe61915163d293 + languageName: node + linkType: hard + "@types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" @@ -3681,6 +3736,13 @@ __metadata: languageName: node linkType: hard +"@types/prettier@npm:^2, @types/prettier@npm:^2.6.0, @types/prettier@npm:^2.6.1": + version: 2.7.2 + resolution: "@types/prettier@npm:2.7.2" + checksum: b47d76a5252265f8d25dd2fe2a5a61dc43ba0e6a96ffdd00c594cb4fd74c1982c2e346497e3472805d97915407a09423804cc2110a0b8e1b22cffcab246479b7 + languageName: node + linkType: hard + "@types/prettier@npm:^2.1.5": version: 2.7.0 resolution: "@types/prettier@npm:2.7.0" @@ -3688,13 +3750,6 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.6.1": - version: 2.7.2 - resolution: "@types/prettier@npm:2.7.2" - checksum: b47d76a5252265f8d25dd2fe2a5a61dc43ba0e6a96ffdd00c594cb4fd74c1982c2e346497e3472805d97915407a09423804cc2110a0b8e1b22cffcab246479b7 - languageName: node - linkType: hard - "@types/responselike@npm:*, @types/responselike@npm:^1.0.0": version: 1.0.0 resolution: "@types/responselike@npm:1.0.0" @@ -3779,6 +3834,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/parser@npm:^5.10.0": + version: 5.59.7 + resolution: "@typescript-eslint/parser@npm:5.59.7" + dependencies: + "@typescript-eslint/scope-manager": 5.59.7 + "@typescript-eslint/types": 5.59.7 + "@typescript-eslint/typescript-estree": 5.59.7 + debug: ^4.3.4 + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: bc44f37a11a44f84ae5f0156213f3e2e49aef2ecac94d9e161a0c721acd29462e288f306ad4648095ac1c0e5a5f62b78280c1735883cf39f79ee3afcba312119 + languageName: node + linkType: hard + "@typescript-eslint/parser@npm:^5.59.1": version: 5.59.1 resolution: "@typescript-eslint/parser@npm:5.59.1" @@ -3816,6 +3888,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:5.59.7": + version: 5.59.7 + resolution: "@typescript-eslint/scope-manager@npm:5.59.7" + dependencies: + "@typescript-eslint/types": 5.59.7 + "@typescript-eslint/visitor-keys": 5.59.7 + checksum: 43f7ea93fddbe2902122a41050677fe3eff2ea468f435b981592510cfc6136e8c28ac7d3a3e05fb332c0b3078a29bd0c91c35b2b1f4e788b4eb9aaeb70e21583 + languageName: node + linkType: hard + "@typescript-eslint/type-utils@npm:5.59.1": version: 5.59.1 resolution: "@typescript-eslint/type-utils@npm:5.59.1" @@ -3847,6 +3929,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:5.59.7": + version: 5.59.7 + resolution: "@typescript-eslint/types@npm:5.59.7" + checksum: 52eccec9e2d631eb2808e48b5dc33a837b5e242fa9eddace89fc707c9f2283b5364f1d38b33d418a08d64f45f6c22f051800898e1881a912f8aac0c3ae300d0a + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:5.32.0": version: 5.32.0 resolution: "@typescript-eslint/typescript-estree@npm:5.32.0" @@ -3883,6 +3972,24 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:5.59.7": + version: 5.59.7 + resolution: "@typescript-eslint/typescript-estree@npm:5.59.7" + dependencies: + "@typescript-eslint/types": 5.59.7 + "@typescript-eslint/visitor-keys": 5.59.7 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + semver: ^7.3.7 + tsutils: ^3.21.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: eefe82eedf9ee2e14463c3f2b5b18df084c1328a859b245ee897a9a7075acce7cca0216a21fd7968b75aa64189daa008bfde1e2f9afbcc336f3dfe856e7f342e + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:5.59.1": version: 5.59.1 resolution: "@typescript-eslint/utils@npm:5.59.1" @@ -3937,6 +4044,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:5.59.7": + version: 5.59.7 + resolution: "@typescript-eslint/visitor-keys@npm:5.59.7" + dependencies: + "@typescript-eslint/types": 5.59.7 + eslint-visitor-keys: ^3.3.0 + checksum: 4367f2ea68dd96a0520485434ad11e1bd26239eeeb3a2150bee7478a0f1df3c2099a39f96486722932be0456bcb7a47a483b452876d1d30bdeb9b81d354eef3d + languageName: node + linkType: hard + "@yarnpkg/core@npm:^3.4.0": version: 3.5.0 resolution: "@yarnpkg/core@npm:3.5.0" @@ -4261,7 +4378,7 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": +"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": version: 3.2.1 resolution: "ansi-styles@npm:3.2.1" dependencies: @@ -5135,6 +5252,13 @@ __metadata: languageName: node linkType: hard +"common-tags@npm:^1.4.0": + version: 1.8.2 + resolution: "common-tags@npm:1.8.2" + checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff + languageName: node + linkType: hard + "compare-func@npm:^2.0.0": version: 2.0.0 resolution: "compare-func@npm:2.0.0" @@ -5638,6 +5762,13 @@ __metadata: languageName: node linkType: hard +"dlv@npm:^1.1.0": + version: 1.1.3 + resolution: "dlv@npm:1.1.3" + checksum: d7381bca22ed11933a1ccf376db7a94bee2c57aa61e490f680124fa2d1cd27e94eba641d9f45be57caab4f9a6579de0983466f620a2cd6230d7ec93312105ae7 + languageName: node + linkType: hard + "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -6138,23 +6269,23 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^7.1.1": - version: 7.1.1 - resolution: "eslint-scope@npm:7.1.1" +"eslint-scope@npm:^7.0.0, eslint-scope@npm:^7.2.0": + version: 7.2.0 + resolution: "eslint-scope@npm:7.2.0" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e + checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae languageName: node linkType: hard -"eslint-scope@npm:^7.2.0": - version: 7.2.0 - resolution: "eslint-scope@npm:7.2.0" +"eslint-scope@npm:^7.1.1": + version: 7.1.1 + resolution: "eslint-scope@npm:7.1.1" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 64591a2d8b244ade9c690b59ef238a11d5c721a98bcee9e9f445454f442d03d3e04eda88e95a4daec558220a99fa384309d9faae3d459bd40e7a81b4063980ae + checksum: 9f6e974ab2db641ca8ab13508c405b7b859e72afe9f254e8131ff154d2f40c99ad4545ce326fd9fde3212ff29707102562a4834f1c48617b35d98c71a97fbf3e languageName: node linkType: hard @@ -6192,6 +6323,13 @@ __metadata: languageName: node linkType: hard +"eslint-visitor-keys@npm:^3.1.0, eslint-visitor-keys@npm:^3.4.1": + version: 3.4.1 + resolution: "eslint-visitor-keys@npm:3.4.1" + checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c + languageName: node + linkType: hard + "eslint-visitor-keys@npm:^3.3.0": version: 3.3.0 resolution: "eslint-visitor-keys@npm:3.3.0" @@ -6256,6 +6394,55 @@ __metadata: languageName: node linkType: hard +"eslint@npm:^8.7.0": + version: 8.41.0 + resolution: "eslint@npm:8.41.0" + dependencies: + "@eslint-community/eslint-utils": ^4.2.0 + "@eslint-community/regexpp": ^4.4.0 + "@eslint/eslintrc": ^2.0.3 + "@eslint/js": 8.41.0 + "@humanwhocodes/config-array": ^0.11.8 + "@humanwhocodes/module-importer": ^1.0.1 + "@nodelib/fs.walk": ^1.2.8 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.3.2 + doctrine: ^3.0.0 + escape-string-regexp: ^4.0.0 + eslint-scope: ^7.2.0 + eslint-visitor-keys: ^3.4.1 + espree: ^9.5.2 + 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 + import-fresh: ^3.0.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.1 + strip-ansi: ^6.0.1 + strip-json-comments: ^3.1.0 + text-table: ^0.2.0 + bin: + eslint: bin/eslint.js + checksum: 09979a6f8451dcc508a7005b6670845c8a518376280b3fd96657a406b8b6ef29d0e480d1ba11b4eb48da93d607e0c55c9b877676fe089d09973ec152354e23b2 + languageName: node + linkType: hard + "eslint@npm:^8.9.0": version: 8.21.0 resolution: "eslint@npm:8.21.0" @@ -6305,6 +6492,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^9.0.0, espree@npm:^9.5.2": + version: 9.5.2 + resolution: "espree@npm:9.5.2" + dependencies: + acorn: ^8.8.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^3.4.1 + checksum: 6506289d6eb26471c0b383ee24fee5c8ae9d61ad540be956b3127be5ce3bf687d2ba6538ee5a86769812c7c552a9d8239e8c4d150f9ea056c6d5cbe8399c03c1 + languageName: node + linkType: hard + "espree@npm:^9.3.2, espree@npm:^9.3.3": version: 9.3.3 resolution: "espree@npm:9.3.3" @@ -7117,6 +7315,13 @@ __metadata: languageName: node linkType: hard +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: bab8f0be9b568857c7bec9fda95a89f87b783546d02951c40c33f84d05bb7da3fd10f863a9beb901463669b6583173a8c8cc6d6b306ea2b9b9d5d3d943c3a673 + languageName: node + linkType: hard + "handlebars@npm:^4.7.7": version: 4.7.7 resolution: "handlebars@npm:4.7.7" @@ -8861,7 +9066,7 @@ __metadata: languageName: node linkType: hard -"lodash.merge@npm:^4.6.2": +"lodash.merge@npm:^4.6.0, lodash.merge@npm:^4.6.2": version: 4.6.2 resolution: "lodash.merge@npm:4.6.2" checksum: ad580b4bdbb7ca1f7abf7e1bce63a9a0b98e370cf40194b03380a46b4ed799c9573029599caebc1b14e3f24b111aef72b96674a56cfa105e0f5ac70546cdc005 @@ -8922,6 +9127,23 @@ __metadata: languageName: node linkType: hard +"loglevel-colored-level-prefix@npm:^1.0.0": + version: 1.0.0 + resolution: "loglevel-colored-level-prefix@npm:1.0.0" + dependencies: + chalk: ^1.1.3 + loglevel: ^1.4.1 + checksum: 146aa7d0ea900d6d8523e945b2265be240e4c7c4752dae678983764dd756c44194684af1ee8ea721feff4c4f8c5771544a02a6cd8b269a663cffe9b4fcf955f1 + languageName: node + linkType: hard + +"loglevel@npm:^1.4.1": + version: 1.8.1 + resolution: "loglevel@npm:1.8.1" + checksum: a1a62db40291aaeaef2f612334c49e531bff71cc1d01a2acab689ab80d59e092f852ab164a5aedc1a752fdc46b7b162cb097d8a9eb2cf0b299511106c29af61d + languageName: node + linkType: hard + "long@npm:^5.2.3": version: 5.2.3 resolution: "long@npm:5.2.3" @@ -9946,6 +10168,28 @@ __metadata: languageName: node linkType: hard +"prettier-eslint@npm:^15.0.1": + version: 15.0.1 + resolution: "prettier-eslint@npm:15.0.1" + dependencies: + "@types/eslint": ^8.4.2 + "@types/prettier": ^2.6.0 + "@typescript-eslint/parser": ^5.10.0 + common-tags: ^1.4.0 + dlv: ^1.1.0 + eslint: ^8.7.0 + indent-string: ^4.0.0 + lodash.merge: ^4.6.0 + loglevel-colored-level-prefix: ^1.0.0 + prettier: ^2.5.1 + pretty-format: ^23.0.1 + require-relative: ^0.8.7 + typescript: ^4.5.4 + vue-eslint-parser: ^8.0.1 + checksum: fad92d666ab92f6c773faf507ee15f2c0de8c8ac2b692a57a7c0621202f90d9e577f2664d8a701ec3b96bec3ecba586e49c3d9170de9392c0ee7c3362fdddcae + languageName: node + linkType: hard + "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -9955,21 +10199,21 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.6.2": - version: 2.8.4 - resolution: "prettier@npm:2.8.4" +"prettier@npm:^2.5.1, prettier@npm:^2.8.8": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" bin: prettier: bin-prettier.js - checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e + checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 languageName: node linkType: hard -"prettier@npm:^2.8.7": - version: 2.8.7 - resolution: "prettier@npm:2.8.7" +"prettier@npm:^2.6.2": + version: 2.8.4 + resolution: "prettier@npm:2.8.4" bin: prettier: bin-prettier.js - checksum: fdc8f2616f099f5f0d685907f4449a70595a0fc1d081a88919604375989e0d5e9168d6121d8cc6861f21990b31665828e00472544d785d5940ea08a17660c3a6 + checksum: c173064bf3df57b6d93d19aa98753b9b9dd7657212e33b41ada8e2e9f9884066bb9ca0b4005b89b3ab137efffdf8fbe0b462785aba20364798ff4303aadda57e languageName: node linkType: hard @@ -9980,6 +10224,16 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^23.0.1": + version: 23.6.0 + resolution: "pretty-format@npm:23.6.0" + dependencies: + ansi-regex: ^3.0.0 + ansi-styles: ^3.2.0 + checksum: b668eac9fb19d12cf27098206d587b0be8da9f7fdc56998ace9bad9b6b6f5a5be5004d9fec3c2dc215d4128ef3db901e7329e0e8e081b0732a781bddfa9e2b66 + languageName: node + linkType: hard + "pretty-format@npm:^29.0.0, pretty-format@npm:^29.4.2": version: 29.4.2 resolution: "pretty-format@npm:29.4.2" @@ -10357,6 +10611,13 @@ __metadata: languageName: node linkType: hard +"require-relative@npm:^0.8.7": + version: 0.8.7 + resolution: "require-relative@npm:0.8.7" + checksum: f1c3be06977823bba43600344d9ea6fbf8a55bdb81ec76533126849ab4024e6c31c6666f37fa4b5cfeda9c41dee89b8e19597cac02bdefaab42255c6708661ab + languageName: node + linkType: hard + "resolve-alpn@npm:^1.0.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" @@ -11607,6 +11868,16 @@ __metadata: languageName: node linkType: hard +"typescript@npm:^4.5.4, typescript@npm:^4.9.5": + version: 4.9.5 + resolution: "typescript@npm:4.9.5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db + languageName: node + linkType: hard + "typescript@npm:^4.6.4 || ^5.0.0": version: 5.0.4 resolution: "typescript@npm:5.0.4" @@ -11617,13 +11888,13 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^4.9.5": +"typescript@patch:typescript@^4.5.4#~builtin, typescript@patch:typescript@^4.9.5#~builtin": version: 4.9.5 - resolution: "typescript@npm:4.9.5" + resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db + checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d languageName: node linkType: hard @@ -11637,16 +11908,6 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@^4.9.5#~builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=23ec76" - bin: - tsc: bin/tsc - tsserver: bin/tsserver - checksum: ab417a2f398380c90a6cf5a5f74badd17866adf57f1165617d6a551f059c3ba0a3e4da0d147b3ac5681db9ac76a303c5876394b13b3de75fdd5b1eaa06181c9d - languageName: node - linkType: hard - "uglify-js@npm:^3.1.4": version: 3.17.4 resolution: "uglify-js@npm:3.17.4" @@ -11842,6 +12103,23 @@ __metadata: languageName: node linkType: hard +"vue-eslint-parser@npm:^8.0.1": + version: 8.3.0 + resolution: "vue-eslint-parser@npm:8.3.0" + dependencies: + debug: ^4.3.2 + eslint-scope: ^7.0.0 + eslint-visitor-keys: ^3.1.0 + espree: ^9.0.0 + esquery: ^1.4.0 + lodash: ^4.17.21 + semver: ^7.3.5 + peerDependencies: + eslint: ">=6.0.0" + checksum: 8cc751e9fc2bfba93664ad8945732ab1c97791f9123e703de8669b65670d1e01906d80436bf4932d7ee6fa6174ed4545e8abb059206c88f4bd71957ca6cf7ba8 + languageName: node + linkType: hard + "walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8"