diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index b512c09d..00000000 --- a/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index ef1aa027..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "env": { - "browser": true, - "es2021": true, - "node": true - }, - "extends": [ - "airbnb-base", - "airbnb-typescript/base", - "prettier" - ], - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project" : "./tsconfig.json" - }, - "plugins": [ - "@typescript-eslint", - "prettier" - ], - "rules": { - "import/prefer-default-export": "off", - "semi": ["error", "always"], - "import/extensions": [ - "error", - "ignorePackages", - { - "js": "never", - "jsx": "never", - "ts": "never", - "tsx": "never" - } - ], - "import/no-dynamic-require": 0, - "no-underscore-dangle": "off", - "no-restricted-syntax": "off", - "comma-dangle": "off", - "@typescript-eslint/comma-dangle": "off", - "import/no-extraneous-dependencies": ["error", {"devDependencies": false, "optionalDependencies": false, "peerDependencies": false}] - }, - "ignorePatterns": ["**/*.hbs"] -} diff --git a/README.md b/README.md index ea01b13c..f934140b 100644 --- a/README.md +++ b/README.md @@ -24,3 +24,9 @@ Other useful commands: - `docker compose up -d`: runs the containers in the background without blocking the current terminal sessions. - 💡 `docker compose build server`: run this whenever you add a new package to `package.json` or it won't be reflected in the container. - `docker compose build --no-cache `: build without cache if you suspect caching problems. + +## Troubleshooting + +### ESLint is not working in VS Code +- Make sure your Microsoft ESLint extension is the latest version +- In your VS Code settings make sure `ESLint: Use Flat Config` is enabled diff --git a/babel.config.js b/babel.config.js index 1f3f8801..72bada46 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1 +1,2 @@ -module.exports = { presets: ['@babel/preset-env'] }; +// eslint-disable-next-line no-undef +module.exports = { presets: ["@babel/preset-env"] }; diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..ba8f277d --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,11 @@ +import globals from "globals"; +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; + +export default [ + { files: ["**/*.{js,mjs,cjs,ts}"] }, + { languageOptions: { globals: globals.browser } }, + { ignores: ["dist/"] }, + pluginJs.configs.recommended, + ...tseslint.configs.recommended, +]; diff --git a/jest.config.js b/jest.config.js index 9476c5f0..ef0eba62 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-undef module.exports = { preset: "ts-jest", testTimeout: 600000, diff --git a/package.json b/package.json index 48a11c13..176acf78 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,6 @@ "scripts": { "commit": "cz", "changelog": "npx generate-changelog", - "lint": "eslint . --ext .ts", - "format": "eslint 'src' --ext .ts --fix", "prepare": "husky install", "dev": "nodemon", "build": "tsc -p .", @@ -61,6 +59,7 @@ "viem": "^2.21.28" }, "devDependencies": { + "@eslint/js": "^9.13.0", "@types/amqplib": "^0.8.2", "@types/big.js": "^6.1.5", "@types/consolidate": "^0.14.1", @@ -72,21 +71,23 @@ "@types/morgan": "^1.9.3", "@types/node-cron": "^3.0.4", "@types/numeral": "^2.0.2", - "@typescript-eslint/eslint-plugin": "^5.40.0", - "@typescript-eslint/parser": "^5.40.0", + "@typescript-eslint/eslint-plugin": "^8.11.0", + "@typescript-eslint/parser": "^8.11.0", "babel-jest": "^29.1.2", "commitizen": "^4.3.1", "cz-conventional-changelog": "^3.3.0", - "eslint": "^8.25.0", - "eslint-config-airbnb-typescript": "^17.0.0", + "eslint": "^9.13.0", + "eslint-config-eslint": "^11.0.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-prettier": "^5.1.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.11.0", "jest": "^29.1.2", "nodemon": "^3.0.1", - "prettier": "^3.1.1", + "prettier": "^3.3.3", "ts-jest": "^29.0.3", - "ts-node": "^10.9.1" + "ts-node": "^10.9.1", + "typescript-eslint": "^8.11.0" }, "config": { "commitizen": { diff --git a/src/admin-cli/cancel.ts b/src/admin-cli/cancel.ts index 1e88d940..d713bbd3 100644 --- a/src/admin-cli/cancel.ts +++ b/src/admin-cli/cancel.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import { Command } from "commander"; import { config } from "dotenv"; import { privateKeyToAccount } from "viem/accounts"; @@ -86,7 +85,7 @@ async function main() { const jsonBody = JSON.parse(responseBody); console.log("Parsed JSON response:"); console.log(JSON.stringify(jsonBody, null, 2)); - } catch (error) { + } catch { // If parsing fails, it's not JSON, so we've already logged it as text console.log("Response is not JSON"); } diff --git a/src/admin-scripts/getRequiredPrefund.ts b/src/admin-scripts/getRequiredPrefund.ts new file mode 100644 index 00000000..1b1d1349 --- /dev/null +++ b/src/admin-scripts/getRequiredPrefund.ts @@ -0,0 +1,27 @@ + +function getRequiredPrefund(userOp: { + paymasterAndData: string; + callGasLimit: bigint; + verificationGasLimit: bigint; + preVerificationGas: bigint; + maxFeePerGas: bigint; +}) { + const multiplier = userOp.paymasterAndData !== "0x" ? 3n : 1n; + + const requiredGas = + userOp.callGasLimit + + userOp.verificationGasLimit * multiplier + + userOp.preVerificationGas; + + return requiredGas * userOp.maxFeePerGas; +} + +const prefund = getRequiredPrefund({ + paymasterAndData: "0x", + callGasLimit: 651983n, + verificationGasLimit: 1459741n, + preVerificationGas: 313507n, + maxFeePerGas: 15796905452n, +}); + +console.log(`Required prefund: ${prefund} wei`); diff --git a/src/common/cache/redis/RedisCacheService.ts b/src/common/cache/redis/RedisCacheService.ts index b31f4540..592ca8a2 100644 --- a/src/common/cache/redis/RedisCacheService.ts +++ b/src/common/cache/redis/RedisCacheService.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import Redlock, { Lock } from "redlock"; import Redis from "ioredis"; import nodeconfig from "config"; @@ -123,7 +122,7 @@ export class RedisCacheService implements ICacheService { log.error(error); } }); - this.redisClient.on("error", (err: any) => { + this.redisClient.on("error", (err: unknown) => { log.error(`Redis redisClient Error ${err}`); }); } diff --git a/src/common/db/dao/TransactionDAO.ts b/src/common/db/dao/TransactionDAO.ts index 7c36dff2..f34b7cdf 100644 --- a/src/common/db/dao/TransactionDAO.ts +++ b/src/common/db/dao/TransactionDAO.ts @@ -79,6 +79,7 @@ export class TransactionDAO implements ITransactionDAO { async updateMetaDataAndRelayerDestinationContractDataByTransactionId( chainId: number, id: string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any metaData: any, relayerDestinationContractAddress: string, relayerDestinationContractName: string, diff --git a/src/common/db/interface/IUserOperationDAO.ts b/src/common/db/interface/IUserOperationDAO.ts index 133f475e..17e05bf8 100644 --- a/src/common/db/interface/IUserOperationDAO.ts +++ b/src/common/db/interface/IUserOperationDAO.ts @@ -33,6 +33,7 @@ export type FinalUserOperationDataType = { actualGasCost: number; actualGasUsed: number; reason: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any logs: any; }; diff --git a/src/common/db/interface/IUserOperationV07DAO.ts b/src/common/db/interface/IUserOperationV07DAO.ts index 039ae5be..d1b78044 100644 --- a/src/common/db/interface/IUserOperationV07DAO.ts +++ b/src/common/db/interface/IUserOperationV07DAO.ts @@ -36,6 +36,7 @@ export type FinalUserOperationV07DataType = { actualGasCost: number; actualGasUsed: number; reason: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any logs: any; }; diff --git a/src/common/db/mongo/Mongo.ts b/src/common/db/mongo/Mongo.ts index fc58b0ae..d4cb3975 100644 --- a/src/common/db/mongo/Mongo.ts +++ b/src/common/db/mongo/Mongo.ts @@ -1,5 +1,4 @@ -/* eslint-disable no-await-in-loop */ -/* eslint-disable import/no-import-module-exports */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import mongoose, { Mongoose } from "mongoose"; import { config } from "../../../config"; import { logger } from "../../logger"; @@ -69,7 +68,6 @@ export class Mongo implements IDBService { } } - // eslint-disable-next-line class-methods-use-this async createIndexes( collectionObject: any, compoundIndexOne: object, diff --git a/src/common/db/mongo/interface/IBlockchainTransaction.ts b/src/common/db/mongo/interface/IBlockchainTransaction.ts index 31f88f38..014fa204 100644 --- a/src/common/db/mongo/interface/IBlockchainTransaction.ts +++ b/src/common/db/mongo/interface/IBlockchainTransaction.ts @@ -38,6 +38,7 @@ export interface IBlockchainTransaction { relayerDestinationContractName: string; relayerAddress: string; walletAddress: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any metaData: any; resubmitted: boolean; creationTime: number; diff --git a/src/common/db/mongo/models/blockchain-transactions/model.ts b/src/common/db/mongo/models/blockchain-transactions/model.ts index 4d193119..56d93bd6 100644 --- a/src/common/db/mongo/models/blockchain-transactions/model.ts +++ b/src/common/db/mongo/models/blockchain-transactions/model.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-empty-object-type */ import mongoose from "mongoose"; import { config } from "../../../../../config"; import { IBlockchainTransaction } from "../../interface/IBlockchainTransaction"; diff --git a/src/common/db/mongo/models/user-operations-state/model.ts b/src/common/db/mongo/models/user-operations-state/model.ts index d2eb6964..464fc1fc 100644 --- a/src/common/db/mongo/models/user-operations-state/model.ts +++ b/src/common/db/mongo/models/user-operations-state/model.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-empty-object-type */ import mongoose from "mongoose"; import { config } from "../../../../../config"; import { IUserOperationState } from "../../interface"; diff --git a/src/common/db/mongo/models/user-operations/model.ts b/src/common/db/mongo/models/user-operations/model.ts index f579f651..c4f16c0d 100644 --- a/src/common/db/mongo/models/user-operations/model.ts +++ b/src/common/db/mongo/models/user-operations/model.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-empty-object-type */ import mongoose from "mongoose"; import { config } from "../../../../../config"; import { IUserOperation, IUserOperationV07 } from "../../interface"; diff --git a/src/common/entrypoint-v7/PackedUserOperation.ts b/src/common/entrypoint-v7/PackedUserOperation.ts index e4a0653e..97a036f5 100644 --- a/src/common/entrypoint-v7/PackedUserOperation.ts +++ b/src/common/entrypoint-v7/PackedUserOperation.ts @@ -40,7 +40,7 @@ export interface PackedUserOperation { // * @returns A Hex string that represents the packed integers. // */ export function packUint(high128: bigint, low128: bigint): Hex { - // eslint-disable-next-line no-bitwise + const packed = (BigInt(high128) << BigInt(128)) + BigInt(low128); return pad(toHex(packed), { size: 32 }); } @@ -55,9 +55,9 @@ export function packUint(high128: bigint, low128: bigint): Hex { // */ export function unpackUint(packed: Hex): [high128: bigint, low128: bigint] { const packedNumber = BigInt(fromHex(packed, "bigint")); - // eslint-disable-next-line no-bitwise + const high128 = packedNumber >> BigInt(128); - // eslint-disable-next-line no-bitwise + const low128 = packedNumber & ((BigInt(1) << BigInt(128)) - BigInt(1)); return [high128, low128]; } diff --git a/src/common/gas-price/GasPrice.ts b/src/common/gas-price/GasPrice.ts index 0188a1c1..3a4e3ac9 100644 --- a/src/common/gas-price/GasPrice.ts +++ b/src/common/gas-price/GasPrice.ts @@ -1,5 +1,3 @@ -/* eslint-disable prefer-const */ -/* eslint-disable import/no-import-module-exports */ import { formatUnits, toHex } from "viem"; import { IEVMAccount } from "../../relayer/account"; import { ICacheService } from "../cache"; diff --git a/src/common/gas-price/jobs/CacheFees.ts b/src/common/gas-price/jobs/CacheFees.ts index 6a6282b5..604a0414 100644 --- a/src/common/gas-price/jobs/CacheFees.ts +++ b/src/common/gas-price/jobs/CacheFees.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { CronJob } from "cron"; import { GasPriceService } from "../GasPrice"; import { logger } from "../../logger"; diff --git a/src/common/interface/index.ts b/src/common/interface/index.ts index 3d4dcb95..aa2e96ca 100644 --- a/src/common/interface/index.ts +++ b/src/common/interface/index.ts @@ -7,9 +7,3 @@ export interface IQueue { consume(onMessageReceived: () => void): Promise; ack(arg0: ConsumeMessage): Promise; } - -export interface IRetryPolicy { - maxTries: number; - shouldRetry: (err: any) => Promise; - incrementTry: () => void; -} diff --git a/src/common/network/EVMNetworkService.ts b/src/common/network/EVMNetworkService.ts index 5ec954b5..f58ccc2d 100644 --- a/src/common/network/EVMNetworkService.ts +++ b/src/common/network/EVMNetworkService.ts @@ -1,8 +1,6 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-async-promise-executor */ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable @typescript-eslint/return-await */ -/* eslint-disable new-cap */ -// eslint-disable-next-line max-classes-per-file + import axios from "axios"; import { Hex, @@ -215,7 +213,6 @@ export class EVMNetworkService return await this.sendRpcCall(EthMethodType.GET_TRANSACTION_COUNT, params); } - // eslint-disable-next-line class-methods-use-this async sendTransaction( rawTransactionData: EVMRawTransactionType, account: IEVMAccount, @@ -333,6 +330,7 @@ export class EVMNetworkService return await this.provider.getTransaction({ hash: transactionHash as `0x${string}`, }); + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (error) { return null; } @@ -349,7 +347,6 @@ export class EVMNetworkService return await this.sendRpcCall(AlchemyMethodType.SIMULATE_EXECUTION, params); } - // eslint-disable-next-line class-methods-use-this async verifySignature( address: string, message: string, diff --git a/src/common/network/interface/INetworkService.ts b/src/common/network/interface/INetworkService.ts index 55b40ae7..34c5f42b 100644 --- a/src/common/network/interface/INetworkService.ts +++ b/src/common/network/interface/INetworkService.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { PublicClient, Transaction, TransactionReceipt } from "viem"; import { Type0TransactionGasPriceType, diff --git a/src/common/notification/NotificationUtil.ts b/src/common/notification/NotificationUtil.ts index a52a6257..89be236f 100644 --- a/src/common/notification/NotificationUtil.ts +++ b/src/common/notification/NotificationUtil.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { IEVMAccount } from "../../relayer/account"; import { TransactionType } from "../types"; import { parseError } from "../utils"; diff --git a/src/common/notification/slack/SlackNotificationService.ts b/src/common/notification/slack/SlackNotificationService.ts index 23894c7c..cd2f907a 100644 --- a/src/common/notification/slack/SlackNotificationService.ts +++ b/src/common/notification/slack/SlackNotificationService.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { WebClient } from "@slack/web-api"; import { logger } from "../../logger"; import { ISlackNotificationService } from "../interface"; diff --git a/src/common/queue/BundlerTransactionQueue.ts b/src/common/queue/BundlerTransactionQueue.ts index 656e65f6..e6c43a79 100644 --- a/src/common/queue/BundlerTransactionQueue.ts +++ b/src/common/queue/BundlerTransactionQueue.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import amqp, { Channel, ConsumeMessage, Replies } from "amqplib"; import { config } from "../../config"; import { logger } from "../logger"; diff --git a/src/common/queue/RetryTransactionHandlerQueue.ts b/src/common/queue/RetryTransactionHandlerQueue.ts index 89777084..d83fa9ca 100644 --- a/src/common/queue/RetryTransactionHandlerQueue.ts +++ b/src/common/queue/RetryTransactionHandlerQueue.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import amqp, { Channel, ConsumeMessage, Replies } from "amqplib"; import { config } from "../../config"; import { logger } from "../logger"; diff --git a/src/common/queue/types/index.ts b/src/common/queue/types/index.ts index cbe09287..1a167855 100644 --- a/src/common/queue/types/index.ts +++ b/src/common/queue/types/index.ts @@ -10,6 +10,7 @@ export type RetryTransactionQueueData = { transactionId: string; rawTransaction: EVMRawTransactionType; walletAddress: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any metaData: any; relayerManagerName: string; }; diff --git a/src/common/relay-service/BundlerRelayService.ts b/src/common/relay-service/BundlerRelayService.ts index ca474fd9..c78c4f52 100644 --- a/src/common/relay-service/BundlerRelayService.ts +++ b/src/common/relay-service/BundlerRelayService.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { STATUSES } from "../../server/api/shared/middleware"; import { IQueue } from "../interface"; import { logger } from "../logger"; diff --git a/src/common/service-manager/index.ts b/src/common/service-manager/index.ts index 1146b97c..0d72fc3f 100644 --- a/src/common/service-manager/index.ts +++ b/src/common/service-manager/index.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable no-await-in-loop */ import { getContract, parseEther } from "viem"; import { chain } from "lodash"; import { ENTRY_POINT_ABI } from "entry-point-gas-estimations/dist/gas-estimator/entry-point-v6"; @@ -99,7 +97,6 @@ const retryTransactionQueueMap: { } = {}; const networkServiceMap: Record = {}; -// eslint-disable-next-line import/no-mutable-exports let statusService: IStatusService; (async () => { @@ -305,7 +302,6 @@ let statusService: IStatusService; ); log.info(`Retry transaction service setup for chainId: ${chainId}`); - // eslint-disable-next-line max-len bundlerSimulationServiceMap[chainId] = new BundlerSimulationService( networkService, gasPriceService, @@ -407,7 +403,6 @@ let statusService: IStatusService; } } - // eslint-disable-next-line no-new statusService = new StatusService({ cacheService, networkServiceMap, diff --git a/src/common/simulation/BundlerSimulationService.ts b/src/common/simulation/BundlerSimulationService.ts index 5074b0c5..9875b1c1 100644 --- a/src/common/simulation/BundlerSimulationService.ts +++ b/src/common/simulation/BundlerSimulationService.ts @@ -1,5 +1,4 @@ -/* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable import/no-import-module-exports */ +/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable prefer-const */ import { decodeErrorResult, @@ -612,7 +611,6 @@ export class BundlerSimulationService { return true; } - // eslint-disable-next-line class-methods-use-this removeSpecialCharacters(input: string): string { const match = input.match(/AA(\d+)\s(.+)/); @@ -657,7 +655,7 @@ export class BundlerSimulationService { if (paymaster === config.zeroAddress) { paymaster = undefined; } - // eslint-disable-next-line + const msg: string = simulateHandleOpResult.errorArgs?.reason ?? simulateHandleOpResult.toString(); @@ -705,7 +703,6 @@ export class BundlerSimulationService { }; } - // eslint-disable-next-line class-methods-use-this getUserOpHash( entryPointAddress: `0x${string}`, userOp: UserOperationType, diff --git a/src/common/simulation/BundlerSimulationService.v7.ts b/src/common/simulation/BundlerSimulationService.v7.ts index c2e41420..d21c4b07 100644 --- a/src/common/simulation/BundlerSimulationService.v7.ts +++ b/src/common/simulation/BundlerSimulationService.v7.ts @@ -1,11 +1,6 @@ -/* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable import/no-import-module-exports */ +/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable prefer-const */ -import { - decodeErrorResult, - encodeFunctionData, - toHex, -} from "viem"; +import { decodeErrorResult, encodeFunctionData, toHex } from "viem"; import { createGasEstimator, createOptimismGasEstimator, @@ -21,10 +16,7 @@ import { import { logger } from "../logger"; import { INetworkService } from "../network"; import { EVMRawTransactionType, UserOperationType } from "../types"; -import { - customJSONStringify, - parseError, -} from "../utils"; +import { customJSONStringify, parseError } from "../utils"; import RpcError from "../utils/rpc-error"; import { EstimateUserOperationGasDataTypeV07, @@ -34,7 +26,10 @@ import { } from "./types"; import { IGasPriceService } from "../gas-price"; import { ENTRY_POINT_V07_ABI } from "../entrypoint-v7/abiv7"; -import { getUserOpHash, packUserOperation } from "../entrypoint-v7/PackedUserOperation"; +import { + getUserOpHash, + packUserOperation, +} from "../entrypoint-v7/PackedUserOperation"; const log = logger.child({ module: module.filename.split("/").slice(-4).join("/"), @@ -56,13 +51,13 @@ export class BundlerSimulationServiceV07 { this.gasPriceService = gasPriceService; this.gasEstimator = createGasEstimator({ rpcUrl: this.networkService.rpcUrl, - chainId: this.networkService.chainId + chainId: this.networkService.chainId, }); if (config.optimismNetworks.includes(this.networkService.chainId)) { this.gasEstimator = createOptimismGasEstimator({ rpcUrl: this.networkService.rpcUrl, - chainId: this.networkService.chainId + chainId: this.networkService.chainId, }); } } @@ -154,7 +149,6 @@ export class BundlerSimulationServiceV07 { supportsEthCallByteCodeOverride = false; } - let response: EstimateUserOperationGas; const baseFeePerGas = await this.gasPriceService.getBaseFeePerGas(); @@ -184,20 +178,21 @@ export class BundlerSimulationServiceV07 { callGasLimit, preVerificationGas, paymasterPostOpGasLimit, - paymasterVerificationGasLimit + paymasterVerificationGasLimit, } = response; - callGasLimit += BigInt(Math.ceil(Number(callGasLimit) * 0.1)); verificationGasLimit += BigInt( Math.ceil(Number(verificationGasLimit) * 0.1), ); - paymasterPostOpGasLimit += BigInt(Math.ceil(Number(paymasterPostOpGasLimit) * 0.1)); - paymasterVerificationGasLimit += BigInt(Math.ceil(Number(paymasterVerificationGasLimit) * 0.1)); - + paymasterPostOpGasLimit += BigInt( + Math.ceil(Number(paymasterPostOpGasLimit) * 0.1), + ); + paymasterVerificationGasLimit += BigInt( + Math.ceil(Number(paymasterVerificationGasLimit) * 0.1), + ); - const verificationGasLimitMultiplier = - userOp.paymaster === "0x" ? 1 : 3; + const verificationGasLimitMultiplier = userOp.paymaster === "0x" ? 1 : 3; const totalGas = callGasLimit + BigInt(verificationGasLimitMultiplier) * verificationGasLimit + @@ -222,7 +217,7 @@ export class BundlerSimulationServiceV07 { verificationGasLimit, callGasLimit, paymasterPostOpGasLimit, - paymasterVerificationGasLimit + paymasterVerificationGasLimit, }; log.info( `estimateUserOperationGas result: ${customJSONStringify(data)}`, @@ -248,7 +243,7 @@ export class BundlerSimulationServiceV07 { verificationGasLimit: BigInt(0), callGasLimit: BigInt(0), paymasterPostOpGasLimit: BigInt(0), - paymasterVerificationGasLimit: BigInt(0) + paymasterVerificationGasLimit: BigInt(0), }, }; } @@ -530,7 +525,6 @@ export class BundlerSimulationServiceV07 { return true; } - // eslint-disable-next-line class-methods-use-this removeSpecialCharacters(input: string): string { const match = input.match(/AA(\d+)\s(.+)/); @@ -575,7 +569,7 @@ export class BundlerSimulationServiceV07 { if (paymaster === config.zeroAddress) { paymaster = undefined; } - // eslint-disable-next-line + const msg: string = simulateHandleOpResult.errorArgs?.reason ?? simulateHandleOpResult.toString(); diff --git a/src/common/simulation/test/mumbai.spec.ts b/src/common/simulation/test/mumbai.spec.ts index f43f9923..eb8a5f9e 100644 --- a/src/common/simulation/test/mumbai.spec.ts +++ b/src/common/simulation/test/mumbai.spec.ts @@ -2,8 +2,8 @@ describe("broken test", () => { it.todo("should be fixed"); }); -// /* eslint-disable import/no-import-module-exports */ -// /* eslint-disable import/no-extraneous-dependencies */ +// +// // import { BytesLike, ethers } from "ethers"; // import { BiconomySmartAccount } from "@biconomy/account"; // import { logger } from "../../logger"; diff --git a/src/common/simulation/types/index.ts b/src/common/simulation/types/index.ts index 8b6630db..9bb1bf59 100644 --- a/src/common/simulation/types/index.ts +++ b/src/common/simulation/types/index.ts @@ -13,7 +13,7 @@ export type ExternalSimulationResponseType = { data: { refundAmount: number; refundAmountInUSD: number; - gasLimitFromSimulation: number | BigInt; + gasLimitFromSimulation: number | bigint; }; }; @@ -64,7 +64,7 @@ export type SimulationResponseType = { refundAmount?: number; refundAmountInUSD?: number; userOpHash?: string; - gasLimitFromSimulation: number | BigInt; + gasLimitFromSimulation: number | bigint; }; message: string; code?: number; diff --git a/src/common/status/StatusService.test.ts b/src/common/status/StatusService.test.ts index 15cca5e0..87036930 100644 --- a/src/common/status/StatusService.test.ts +++ b/src/common/status/StatusService.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { EVMNetworkService } from "../network"; import { NetworkBasedGasPriceType } from "../types"; import { StatusService } from "./StatusService"; diff --git a/src/common/status/StatusService.ts b/src/common/status/StatusService.ts index daa4c8e2..3d6a9056 100644 --- a/src/common/status/StatusService.ts +++ b/src/common/status/StatusService.ts @@ -1,4 +1,4 @@ -/* eslint-disable import/no-import-module-exports */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import nodeconfig from "config"; import { IEVMAccount } from "../../relayer/account"; import { IRelayerManager } from "../../relayer/relayer-manager"; @@ -251,7 +251,6 @@ export class StatusService implements IStatusService { // checkRelayers (tries to) check if the relayers can actually relay transactions async checkRelayers(chainId: number): Promise { return statusCheck(async () => { - // eslint-disable-next-line @typescript-eslint/dot-notation const relayerManager = this.evmRelayerManagerMap["RM1"][chainId]; if (!relayerManager) { throw new Error( @@ -327,7 +326,6 @@ export class StatusService implements IStatusService { async info(): Promise { const statusInfo: StatusInfo = {}; - // eslint-disable-next-line @typescript-eslint/dot-notation const relayerManagers = this.evmRelayerManagerMap["RM1"]; if (!relayerManagers) { throw new Error(`Relayers are temporarily unavailable`); diff --git a/src/common/types/index.ts b/src/common/types/index.ts index a98064d0..297356ad 100644 --- a/src/common/types/index.ts +++ b/src/common/types/index.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { ENTRY_POINT_ABI } from "entry-point-gas-estimations/dist/gas-estimator/entry-point-v6"; import { GetContractReturnType, Hex } from "viem"; import { ENTRY_POINT_V07_ABI } from "../entrypoint-v7/abiv7"; diff --git a/src/common/utils/axios-calls.ts b/src/common/utils/axios-calls.ts index 439a0b26..4843e482 100644 --- a/src/common/utils/axios-calls.ts +++ b/src/common/utils/axios-calls.ts @@ -1,4 +1,4 @@ -/* eslint-disable import/no-import-module-exports */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import axios from "axios"; import { logger } from "../logger"; import { customJSONStringify } from "./custom-json-stringifier"; @@ -7,11 +7,6 @@ const log = logger.child({ module: module.filename.split("/").slice(-4).join("/"), }); -export const axiosGetCall = async (url: string, _data?: any) => { - const { data } = await axios.get(url, _data); - return data; -}; - export const axiosPostCall = async (url: string, _data?: any) => { try { log.info( diff --git a/src/common/utils/big-int-converter.ts b/src/common/utils/big-int-converter.ts index b8ebd26d..192d3a14 100644 --- a/src/common/utils/big-int-converter.ts +++ b/src/common/utils/big-int-converter.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export const convertBigIntToString = (args: any): any => { if (typeof args === "bigint") { return args.toString(); diff --git a/src/common/utils/custom-json-stringifier.ts b/src/common/utils/custom-json-stringifier.ts index 307fc7dc..031893fb 100644 --- a/src/common/utils/custom-json-stringifier.ts +++ b/src/common/utils/custom-json-stringifier.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line @typescript-eslint/no-explicit-any export const customJSONStringify = (object: any) => JSON.stringify(object, (key, value) => typeof value === "bigint" ? value.toString() : value, diff --git a/src/common/utils/parse-error.ts b/src/common/utils/parse-error.ts index 2a926f8a..6f37e00c 100644 --- a/src/common/utils/parse-error.ts +++ b/src/common/utils/parse-error.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { serializeError } from "serialize-error"; import { customJSONStringify } from "./custom-json-stringifier"; @@ -7,14 +8,14 @@ export const parseError = (error: any): string => { try { errorMessage = serializeError(error)?.message || customJSONStringify(error); - } catch (err) { + } catch { // ignore errorMessage = customJSONStringify(error); } } else { try { errorMessage = customJSONStringify(error); - } catch (err) { + } catch { // ignore errorMessage = error; } @@ -24,7 +25,7 @@ export const parseError = (error: any): string => { return errorMessage .toString() .replace(/\b(https?):\/\/[-\w+&@#/%?=~|!:,.;]*[-\w+&@#/%=~|]/g, "URL"); - } catch (err2) { + } catch { // ignore errorMessage = error; } diff --git a/src/common/utils/rpc-error.ts b/src/common/utils/rpc-error.ts index dd59e6e2..8f6a0cb1 100644 --- a/src/common/utils/rpc-error.ts +++ b/src/common/utils/rpc-error.ts @@ -2,6 +2,7 @@ export default class RpcError extends Error { constructor( msg: string, readonly code?: number, + // eslint-disable-next-line @typescript-eslint/no-explicit-any readonly data: any = undefined, ) { super(msg); diff --git a/src/common/utils/user-op-utils.ts b/src/common/utils/user-op-utils.ts index 1976f77e..ae460032 100644 --- a/src/common/utils/user-op-utils.ts +++ b/src/common/utils/user-op-utils.ts @@ -1,6 +1,4 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable no-continue */ -/* eslint-disable no-await-in-loop */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Log, PublicClient, @@ -218,7 +216,6 @@ export const getUserOperationReceiptForSuccessfulTransaction = async ( userOpHash: string, receipt: TransactionReceipt, entryPointContract: EntryPointContractType | EntryPointV07ContractType, - // eslint-disable-next-line consistent-return ): Promise<{ actualGasCost: number; actualGasUsed: number; diff --git a/src/config/index.ts b/src/config/index.ts index 697e881c..2f7e14c3 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import crypto from "crypto-js"; import fs, { existsSync } from "fs"; import _, { isNumber } from "lodash"; @@ -45,7 +44,6 @@ export function mergeWithDecryptedConfig( export class Config implements IConfig { config: ConfigType; - // eslint-disable-next-line class-methods-use-this decryptConfig(): string { const encryptedEnvPath = process.env.BUNDLER_CONFIG_PATH || "./config.json.enc"; diff --git a/src/decrypt-config.ts b/src/decrypt-config.ts index 89ef5061..f2658aa3 100644 --- a/src/decrypt-config.ts +++ b/src/decrypt-config.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-console */ import crypto from "crypto-js"; import fs, { existsSync } from "fs"; @@ -8,7 +7,7 @@ const AES_PADDING = crypto.pad.Pkcs7; const AES_MODE = crypto.mode.CBC; function decryptConfig(): string { - // const encryptedEnvPath = './config.json.enc'; + // const encryptedEnvPaPth = './config.json.enc'; const encryptedEnvPath = process.argv[2]; // Taking the second command line argument as configName const passphrase = process.env.BUNDLER_CONFIG_PASSPHRASE; if (!passphrase) { @@ -46,6 +45,7 @@ function decryptConfig(): string { }); plaintext = encryptedBytes.toString(crypto.enc.Utf8); } catch (e) { + console.error(e); console.log("Incorrect password for decryption"); process.exit(); } diff --git a/src/encrypt-config.ts b/src/encrypt-config.ts index 9ee5bc56..bc6a75b9 100644 --- a/src/encrypt-config.ts +++ b/src/encrypt-config.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable no-console */ import crypto from "crypto-js"; import { promises, existsSync } from "fs"; diff --git a/src/relayer/account/EVMAccount.ts b/src/relayer/account/EVMAccount.ts index 0ce57bee..b7c07a97 100644 --- a/src/relayer/account/EVMAccount.ts +++ b/src/relayer/account/EVMAccount.ts @@ -1,5 +1,3 @@ -/* eslint-disable no-param-reassign */ -/* eslint-disable @typescript-eslint/return-await */ import { PrivateKeyAccount, privateKeyToAccount } from "viem/accounts"; import { createWalletClient, WalletClient, http } from "viem"; import { EVMRawTransactionType } from "../../common/types"; @@ -34,6 +32,7 @@ export class EVMAccount implements IEVMAccount { } signTransaction(rawTransaction: EVMRawTransactionType): Promise { + // eslint-disable-next-line @typescript-eslint/no-explicit-any return this.account.signTransaction(rawTransaction as any); } diff --git a/src/relayer/consumer/BundlerConsumer.ts b/src/relayer/consumer/BundlerConsumer.ts index 929c540c..96cc3d62 100644 --- a/src/relayer/consumer/BundlerConsumer.ts +++ b/src/relayer/consumer/BundlerConsumer.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable @typescript-eslint/return-await */ import { ConsumeMessage } from "amqplib"; import { encodeFunctionData } from "viem"; import { ENTRY_POINT_ABI } from "entry-point-gas-estimations/dist/gas-estimator/entry-point-v6"; @@ -61,10 +59,7 @@ export class BundlerConsumer this.cacheService = cacheService; } - onMessageReceived = async ( - msg?: ConsumeMessage, - // eslint-disable-next-line consistent-return - ): Promise => { + onMessageReceived = async (msg?: ConsumeMessage): Promise => { if (msg) { const transactionDataReceivedFromQueue = JSON.parse( msg.content.toString(), @@ -78,7 +73,6 @@ export class BundlerConsumer ); this.queue.ack(msg); - // eslint-disable-next-line consistent-return const sendTransactionWithRetry = async (): Promise => { // get active relayer const activeRelayer = await this.relayerManager.getActiveRelayer(); @@ -207,7 +201,7 @@ export class BundlerConsumer this.chainId, ), ); - } catch (error: any) { + } catch (error: unknown) { log.error( `Error in transaction service for transactionId: ${ transactionDataReceivedFromQueue.transactionId diff --git a/src/relayer/nonce-manager/EVMNonceManager.ts b/src/relayer/nonce-manager/EVMNonceManager.ts index 0ac0b1a5..c61c17d3 100644 --- a/src/relayer/nonce-manager/EVMNonceManager.ts +++ b/src/relayer/nonce-manager/EVMNonceManager.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import NodeCache from "node-cache"; import { ICacheService } from "../../common/cache"; import { logger } from "../../common/logger"; diff --git a/src/relayer/relayer-manager/EVMRelayerManager.ts b/src/relayer/relayer-manager/EVMRelayerManager.ts index 17432126..3d639de1 100644 --- a/src/relayer/relayer-manager/EVMRelayerManager.ts +++ b/src/relayer/relayer-manager/EVMRelayerManager.ts @@ -1,5 +1,4 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable no-await-in-loop */ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { Mutex } from "async-mutex"; import { privateToPublic, diff --git a/src/relayer/relayer-queue/EVMRelayerQueue.ts b/src/relayer/relayer-queue/EVMRelayerQueue.ts index 10cfafb5..b0a756f8 100644 --- a/src/relayer/relayer-queue/EVMRelayerQueue.ts +++ b/src/relayer/relayer-queue/EVMRelayerQueue.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Mutex } from "async-mutex"; import { IRelayerQueue } from "./interface/IRelayerQueue"; // import { SortEVMRelayerByBalance } from './strategy'; diff --git a/src/relayer/retry-transaction-service/EVMRetryTransactionService.ts b/src/relayer/retry-transaction-service/EVMRetryTransactionService.ts index 426a0941..ebf31e22 100644 --- a/src/relayer/retry-transaction-service/EVMRetryTransactionService.ts +++ b/src/relayer/retry-transaction-service/EVMRetryTransactionService.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { ConsumeMessage } from "amqplib"; import { logger } from "../../common/logger"; import { INetworkService } from "../../common/network"; diff --git a/src/relayer/transaction-listener/EVMTransactionListener.ts b/src/relayer/transaction-listener/EVMTransactionListener.ts index c4c9b851..720fc096 100644 --- a/src/relayer/transaction-listener/EVMTransactionListener.ts +++ b/src/relayer/transaction-listener/EVMTransactionListener.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable no-await-in-loop */ import { TransactionReceipt, decodeErrorResult, toHex } from "viem"; import { ICacheService } from "../../common/cache"; import { @@ -775,6 +773,7 @@ export class EVMTransactionListener log.error( `Error in calculating front ran transaction fee, defaulting to ${frontRunnedTransactionFee}`, { + err, transactionId, chainId: this.chainId, gasUsed: frontRunnedTransactionReceipt.gasUsed, @@ -841,10 +840,11 @@ export class EVMTransactionListener `V0.7 Getting userOps for transactionId: ${transactionId} on chainId: ${this.chainId}`, ); - const userOps = await this.userOperationDaoV07.getUserOpsByTransactionId( - this.chainId, - transactionId, - ); + const userOps = + await this.userOperationDaoV07.getUserOpsByTransactionId( + this.chainId, + transactionId, + ); if (!userOps.length) { log.info( `V0.7 No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, @@ -1014,6 +1014,7 @@ export class EVMTransactionListener log.error( `Error in calculating front ran transaction fee, defaulting to ${frontRunnedTransactionFee}`, { + err, transactionId, chainId: this.chainId, gasUsed: frontRunnedTransactionReceipt.gasUsed, @@ -1318,6 +1319,7 @@ export class EVMTransactionListener } return "Unable to parse transaction failure reason, please check transaction hash on explorer"; } catch (error) { + log.error(error); return "Unable to parse transaction failure reason, please check transaction hash on explorer"; } } diff --git a/src/relayer/transaction-listener/types/index.ts b/src/relayer/transaction-listener/types/index.ts index 273568dc..8d762298 100644 --- a/src/relayer/transaction-listener/types/index.ts +++ b/src/relayer/transaction-listener/types/index.ts @@ -41,6 +41,7 @@ export type NotifyTransactionListenerParamsType = { previousTransactionHash?: string; rawTransaction: EVMRawTransactionType; walletAddress: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any metaData?: any; relayerManagerName: string; error?: string; diff --git a/src/relayer/transaction-service/EVMTransactionService.ts b/src/relayer/transaction-service/EVMTransactionService.ts index 744ad79f..31a7092f 100644 --- a/src/relayer/transaction-service/EVMTransactionService.ts +++ b/src/relayer/transaction-service/EVMTransactionService.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable no-else-return */ import { Mutex } from "async-mutex"; import { Hex, TransactionReceipt, decodeFunctionData, toHex } from "viem"; import { estimateGas } from "viem/linea"; @@ -278,6 +276,7 @@ export class EVMTransactionService transactionId, }; } + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { log.info( `Releasing lock on address: ${account.getPublicKey()} for transactionId: ${transactionId} on chainId: ${ @@ -654,7 +653,7 @@ export class EVMTransactionService ...rawTransaction, hash: sendTransactionResponse, }; - } catch (error: any) { + } catch (error: unknown) { await this.cacheService.increment( getFailedTransactionRetryCountKey(transactionId, this.chainId), 1, @@ -887,7 +886,7 @@ export class EVMTransactionService release(); return receipt; - } catch (err: any) { + } catch (err: unknown) { release(); throw err; } @@ -917,7 +916,6 @@ export class EVMTransactionService return bumpedUpGasPrice; } - // eslint-disable-next-line class-methods-use-this private async handleGasTooLow(rawTransaction: EVMRawTransactionType) { return toHex(Number(rawTransaction.gasLimit) * 2); } diff --git a/src/server/api/admin/cancel/handler.ts b/src/server/api/admin/cancel/handler.ts index 5373f944..1db8895c 100644 --- a/src/server/api/admin/cancel/handler.ts +++ b/src/server/api/admin/cancel/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { logger } from "../../../../common/logger"; import { @@ -60,7 +59,6 @@ export const cancelTransaction = async (req: Request, res: Response) => { }); } - // eslint-disable-next-line @typescript-eslint/dot-notation const relayerManager = EVMRelayerManagerMap["RM1"][chainId]; const relayer = relayerManager.getRelayer(relayerAddress); diff --git a/src/server/api/admin/health/handler.test.ts b/src/server/api/admin/health/handler.test.ts index f41e7f79..3fc72a1a 100644 --- a/src/server/api/admin/health/handler.test.ts +++ b/src/server/api/admin/health/handler.test.ts @@ -8,7 +8,6 @@ jest.mock("../../../../common/service-manager", () => ({ }, })); -// eslint-disable-next-line import/first import { health } from "./handler"; // The tests for this endpoint are quite minimal and simple. diff --git a/src/server/api/admin/health/handler.ts b/src/server/api/admin/health/handler.ts index 9d0253ad..871364d8 100644 --- a/src/server/api/admin/health/handler.ts +++ b/src/server/api/admin/health/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { logger } from "../../../../common/logger"; import { customJSONStringify } from "../../../../common/utils"; @@ -41,6 +40,7 @@ export const health = async (req: Request, res: Response) => { return res .status(chainStatuses.every((cs) => cs.healthy) ? 200 : 500) .json(chainStatuses); + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err: any) { log.error(`Error in /health/:chainId handler: ${customJSONStringify(err)}`); return res.status(500).json({ diff --git a/src/server/api/admin/info/handler.ts b/src/server/api/admin/info/handler.ts index ef8dc081..5dee7f8a 100644 --- a/src/server/api/admin/info/handler.ts +++ b/src/server/api/admin/info/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { logger } from "../../../../common/logger"; import { statusService } from "../../../../common/service-manager"; @@ -23,7 +22,7 @@ export const info = async (req: Request, res: Response) => { const statusInfo = await statusService.info(); return res.status(200).json(statusInfo); - } catch (err: any) { + } catch (err: unknown) { log.error(`Error in /info handler: ${customJSONStringify(err)}`); return res.status(500).send(customJSONStringify(err)); } diff --git a/src/server/api/admin/startup/handler.test.ts b/src/server/api/admin/startup/handler.test.ts index 1443c045..e3f82a82 100644 --- a/src/server/api/admin/startup/handler.test.ts +++ b/src/server/api/admin/startup/handler.test.ts @@ -6,7 +6,7 @@ jest.mock("../../../../common/service-manager", () => ({ })); // This has to happen after jest.mock or the import won't be mocked -// eslint-disable-next-line import/first + import { startupProbe } from "./handler"; describe("/startup", () => { diff --git a/src/server/api/admin/startup/handler.ts b/src/server/api/admin/startup/handler.ts index 02251fc7..5af1dd11 100644 --- a/src/server/api/admin/startup/handler.ts +++ b/src/server/api/admin/startup/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { logger } from "../../../../common/logger"; import { STATUSES } from "../../shared/middleware"; @@ -17,6 +16,7 @@ export const startupProbe = async (req: Request, res: Response) => { if (!statusService) { return res.status(503).json({ ok: false, errors: [] }); } + // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { log.error(`Error in startupProbe handler ${customJSONStringify(error)}`); res diff --git a/src/server/api/shared/auth/Authenticate.ts b/src/server/api/shared/auth/Authenticate.ts index 3603f735..2aec6344 100644 --- a/src/server/api/shared/auth/Authenticate.ts +++ b/src/server/api/shared/auth/Authenticate.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request } from "express"; import { logger } from "../../../../common/logger"; import { diff --git a/src/server/api/shared/auth/UpdateRequest.ts b/src/server/api/shared/auth/UpdateRequest.ts index f3a0b490..a8354cab 100644 --- a/src/server/api/shared/auth/UpdateRequest.ts +++ b/src/server/api/shared/auth/UpdateRequest.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { UpdateRequestDataType } from "../../../../common/types"; import { axiosPatchCall, diff --git a/src/server/api/shared/middleware/RequestHelpers.ts b/src/server/api/shared/middleware/RequestHelpers.ts index 12145c49..cc28400c 100644 --- a/src/server/api/shared/middleware/RequestHelpers.ts +++ b/src/server/api/shared/middleware/RequestHelpers.ts @@ -1,6 +1,3 @@ -import { curry } from "lodash"; -import { NotFoundError } from "rest-api-errors"; - export const STATUSES = { SUCCESS: 200, CREATED: 201, @@ -64,45 +61,3 @@ export const BUNDLER_ERROR_CODES = { export const DB_ERRORS = { DUPLICATE_ENTRY: 11000, }; - -export const sendResponse = ( - res: any, - data: {} | null, - status = STATUSES.SUCCESS, -) => { - res.status(status).json(data).end(); -}; - -export const sendOne = curry((res: any, entity: any) => { - if (!entity) { - throw new NotFoundError(); - } - return sendResponse(res, entity); -}); - -export const createResponseBody = ( - message: string, - code: number, - data?: string | undefined, -) => { - const response: any = {}; - response.log = message; - response.flag = code; - response.message = data || ""; - return response; -}; - -export const sendUnsupportedAPIVersonResponse = ( - res: any, - unsupportedVersion: any, - newSupportedVersion: any, -) => { - sendResponse( - res, - createResponseBody( - `Version ${unsupportedVersion} is not supported. Please switch to version ${newSupportedVersion}`, - STATUSES.MOVED_PERMANENTLY, - ), - STATUSES.MOVED_PERMANENTLY, - ); -}; diff --git a/src/server/api/shared/simulate/SimulateBundlerTransaction.ts b/src/server/api/shared/simulate/SimulateBundlerTransaction.ts index 74819710..31f7468a 100644 --- a/src/server/api/shared/simulate/SimulateBundlerTransaction.ts +++ b/src/server/api/shared/simulate/SimulateBundlerTransaction.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../middleware"; import { @@ -14,7 +13,6 @@ const log = logger.child({ module: module.filename.split("/").slice(-4).join("/"), }); -// eslint-disable-next-line consistent-return export const validateBundlerTransaction = async (req: Request) => { try { const userOp = req.body.params[0]; diff --git a/src/server/api/shared/simulate/SimulateHandlerBundler.ts b/src/server/api/shared/simulate/SimulateHandlerBundler.ts index f7408331..6764985d 100644 --- a/src/server/api/shared/simulate/SimulateHandlerBundler.ts +++ b/src/server/api/shared/simulate/SimulateHandlerBundler.ts @@ -1,4 +1,4 @@ -/* eslint-disable import/no-import-module-exports */ +/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-case-declarations */ import { NextFunction, Request, Response } from "express"; import { diff --git a/src/server/api/v2/biconomy_getGasFeeValues/handler.ts b/src/server/api/v2/biconomy_getGasFeeValues/handler.ts index d7b55d55..32216d60 100644 --- a/src/server/api/v2/biconomy_getGasFeeValues/handler.ts +++ b/src/server/api/v2/biconomy_getGasFeeValues/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v2/biconomy_getUserOperationStatus/handler.ts b/src/server/api/v2/biconomy_getUserOperationStatus/handler.ts index 2374bf94..aaf52d92 100644 --- a/src/server/api/v2/biconomy_getUserOperationStatus/handler.ts +++ b/src/server/api/v2/biconomy_getUserOperationStatus/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; @@ -19,7 +18,7 @@ const getUserOperationStateData = async ( userOpHash: string, ): Promise<{ error: boolean; - result: any; + result: unknown; }> => { log.info( `Getting userOp state for userOpHash: ${userOpHash} on chainId: ${chainId}`, diff --git a/src/server/api/v2/eth_chainId/handler.ts b/src/server/api/v2/eth_chainId/handler.ts index 8e5e4968..249d28f1 100644 --- a/src/server/api/v2/eth_chainId/handler.ts +++ b/src/server/api/v2/eth_chainId/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { Hex } from "viem"; import { STATUSES } from "../../shared/middleware"; diff --git a/src/server/api/v2/eth_estimateUserOperationGas/errors.ts b/src/server/api/v2/eth_estimateUserOperationGas/errors.ts index 52a8132b..4cfec66f 100644 --- a/src/server/api/v2/eth_estimateUserOperationGas/errors.ts +++ b/src/server/api/v2/eth_estimateUserOperationGas/errors.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-classes-per-file */ + import { BUNDLER_ERROR_CODES } from "../../shared/middleware"; import { RPCError } from "../shared/errors"; diff --git a/src/server/api/v2/eth_estimateUserOperationGas/handler.test.ts b/src/server/api/v2/eth_estimateUserOperationGas/handler.test.ts index d4fb728a..cd05a707 100644 --- a/src/server/api/v2/eth_estimateUserOperationGas/handler.test.ts +++ b/src/server/api/v2/eth_estimateUserOperationGas/handler.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/first */ import httpMocks, { RequestOptions } from "node-mocks-http"; const entryPointAddress = "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789"; diff --git a/src/server/api/v2/eth_estimateUserOperationGas/handler.ts b/src/server/api/v2/eth_estimateUserOperationGas/handler.ts index 876de6f8..20724e44 100644 --- a/src/server/api/v2/eth_estimateUserOperationGas/handler.ts +++ b/src/server/api/v2/eth_estimateUserOperationGas/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { toHex } from "viem"; import { STATUSES } from "../../shared/middleware"; @@ -65,6 +64,7 @@ export const estimateUserOperationGas = async (req: Request, res: Response) => { // Estimate gas for the user operation using the simulator const estimatedUserOpGas = await simulator.estimateUserOperationGas({ userOp, + // eslint-disable-next-line @typescript-eslint/no-explicit-any entryPointContract: entryPointContract as any, chainId: parseInt(chainId, 10), stateOverrideSet, diff --git a/src/server/api/v2/eth_getUserOperationByHash/handler.ts b/src/server/api/v2/eth_getUserOperationByHash/handler.ts index 3faa7066..a9780d95 100644 --- a/src/server/api/v2/eth_getUserOperationByHash/handler.ts +++ b/src/server/api/v2/eth_getUserOperationByHash/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v2/eth_getUserOperationReceipt/handler.ts b/src/server/api/v2/eth_getUserOperationReceipt/handler.ts index 5de53e69..a14da3f1 100644 --- a/src/server/api/v2/eth_getUserOperationReceipt/handler.ts +++ b/src/server/api/v2/eth_getUserOperationReceipt/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v2/eth_getUserOperationsByApiKey/handler.ts b/src/server/api/v2/eth_getUserOperationsByApiKey/handler.ts index 72679acb..4fac0c86 100644 --- a/src/server/api/v2/eth_getUserOperationsByApiKey/handler.ts +++ b/src/server/api/v2/eth_getUserOperationsByApiKey/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v2/eth_sendUserOperation/handler.test.ts b/src/server/api/v2/eth_sendUserOperation/handler.test.ts index 3398fe73..6f8b5718 100644 --- a/src/server/api/v2/eth_sendUserOperation/handler.test.ts +++ b/src/server/api/v2/eth_sendUserOperation/handler.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/first */ import httpMocks, { RequestOptions } from "node-mocks-http"; const entryPointAddress = "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789"; @@ -21,7 +20,7 @@ async function saveUserOperation( userOperationData: InitialUserOperationDataType, ): Promise { // console.log(`Nonce: ${otherNumber}`); - // eslint-disable-next-line no-console + console.log(JSON.stringify(userOperationData, null, 2)); userOperationDaoSaveMock(chainIdd, userOperationData); } diff --git a/src/server/api/v2/eth_sendUserOperation/handler.ts b/src/server/api/v2/eth_sendUserOperation/handler.ts index a28c40c2..57541e99 100644 --- a/src/server/api/v2/eth_sendUserOperation/handler.ts +++ b/src/server/api/v2/eth_sendUserOperation/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { logger } from "../../../../common/logger"; import { diff --git a/src/server/api/v2/eth_supportedEntryPoints/handler.ts b/src/server/api/v2/eth_supportedEntryPoints/handler.ts index 130d9e9e..599ec0ff 100644 --- a/src/server/api/v2/eth_supportedEntryPoints/handler.ts +++ b/src/server/api/v2/eth_supportedEntryPoints/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v2/shared/errors.ts b/src/server/api/v2/shared/errors.ts index 69aa5fa2..74158128 100644 --- a/src/server/api/v2/shared/errors.ts +++ b/src/server/api/v2/shared/errors.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-classes-per-file */ + import { parseError } from "../../../../common/utils"; import { BUNDLER_ERROR_CODES } from "../../shared/middleware"; diff --git a/src/server/api/v2/shared/middleware.ts b/src/server/api/v2/shared/middleware.ts index 20d38d4e..5d845f90 100644 --- a/src/server/api/v2/shared/middleware.ts +++ b/src/server/api/v2/shared/middleware.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ /* eslint-disable no-case-declarations */ import { NextFunction, Request, Response } from "express"; import config from "config"; @@ -49,7 +48,7 @@ export const validateChainId = ), ); } - } catch (err: any) { + } catch (err: unknown) { log.error(`Error in validateChainId: ${parseError(err)}`); return res.status(STATUSES.INTERNAL_SERVER_ERROR).json({ jsonrpc: "2.0", @@ -154,7 +153,7 @@ export const validateBundlerRequest = message, }, }); - } catch (e: any) { + } catch (e: unknown) { const { id } = req.body; log.error(e); return res.status(STATUSES.INTERNAL_SERVER_ERROR).send({ diff --git a/src/server/api/v2/shared/response.ts b/src/server/api/v2/shared/response.ts index b0f87de4..ad35cf22 100644 --- a/src/server/api/v2/shared/response.ts +++ b/src/server/api/v2/shared/response.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-classes-per-file */ + import { RPCError } from "./errors"; export abstract class RPCResponse { diff --git a/src/server/api/v3/biconomy_getGasFeeValues/handler.ts b/src/server/api/v3/biconomy_getGasFeeValues/handler.ts index ee0762d9..e13d0657 100644 --- a/src/server/api/v3/biconomy_getGasFeeValues/handler.ts +++ b/src/server/api/v3/biconomy_getGasFeeValues/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { toHex } from "viem"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; diff --git a/src/server/api/v3/biconomy_getUserOperationStatus/handler.ts b/src/server/api/v3/biconomy_getUserOperationStatus/handler.ts index c69a9caf..0e4aee0e 100644 --- a/src/server/api/v3/biconomy_getUserOperationStatus/handler.ts +++ b/src/server/api/v3/biconomy_getUserOperationStatus/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; @@ -19,7 +18,7 @@ const getUserOperationStateData = async ( userOpHash: string, ): Promise<{ error: boolean; - result: any; + result: unknown; }> => { log.info( `Getting userOp state for userOpHash: ${userOpHash} on chainId: ${chainId}`, diff --git a/src/server/api/v3/eth_chainId/handler.ts b/src/server/api/v3/eth_chainId/handler.ts index a405d6c8..95c72628 100644 --- a/src/server/api/v3/eth_chainId/handler.ts +++ b/src/server/api/v3/eth_chainId/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { Hex } from "viem"; import { STATUSES } from "../../shared/middleware"; diff --git a/src/server/api/v3/eth_estimateUserOperationGas/errors.ts b/src/server/api/v3/eth_estimateUserOperationGas/errors.ts index 52a8132b..4cfec66f 100644 --- a/src/server/api/v3/eth_estimateUserOperationGas/errors.ts +++ b/src/server/api/v3/eth_estimateUserOperationGas/errors.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-classes-per-file */ + import { BUNDLER_ERROR_CODES } from "../../shared/middleware"; import { RPCError } from "../shared/errors"; diff --git a/src/server/api/v3/eth_estimateUserOperationGas/handler.test.ts b/src/server/api/v3/eth_estimateUserOperationGas/handler.test.ts index 4f066b6f..d4a68cff 100644 --- a/src/server/api/v3/eth_estimateUserOperationGas/handler.test.ts +++ b/src/server/api/v3/eth_estimateUserOperationGas/handler.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/first */ import httpMocks, { RequestOptions } from "node-mocks-http"; const entryPointAddress = "0x5ff137d4b0fdcd49dca30c7cf57e578a026d2789"; diff --git a/src/server/api/v3/eth_estimateUserOperationGas/handler.ts b/src/server/api/v3/eth_estimateUserOperationGas/handler.ts index 69384d0e..38de5b27 100644 --- a/src/server/api/v3/eth_estimateUserOperationGas/handler.ts +++ b/src/server/api/v3/eth_estimateUserOperationGas/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; @@ -25,13 +24,13 @@ export const estimateUserOperationGas = async (req: Request, res: Response) => { const { id } = req.body; const { chainId, apiKey } = req.params; - // create a child logger so all important tracing info is logged with each call - const log = filenameLogger.child({ + // create a child logger so all important tracing info is logged with each call + const log = filenameLogger.child({ chainId, requestId: id, apiKey, }); - + log.info( `EP v7 estimateUserOperationGas called, entryPointAddress: ${req.body.params[1]}`, ); @@ -67,6 +66,7 @@ export const estimateUserOperationGas = async (req: Request, res: Response) => { // Estimate gas for the user operation using the simulator const estimatedUserOpGas = await simulator.estimateUserOperationGas({ userOp, + // eslint-disable-next-line @typescript-eslint/no-explicit-any entryPointContract: entryPointContract as any, chainId: parseInt(chainId, 10), stateOverrideSet, @@ -84,7 +84,7 @@ export const estimateUserOperationGas = async (req: Request, res: Response) => { verificationGasLimit, preVerificationGas, paymasterPostOpGasLimit, - paymasterVerificationGasLimit + paymasterVerificationGasLimit, } = data; const gasPriceService = gasPriceServiceMap[parseInt(chainId, 10)]; if (!gasPriceService) { diff --git a/src/server/api/v3/eth_getUserOperationByHash/handler.ts b/src/server/api/v3/eth_getUserOperationByHash/handler.ts index 7f4d1bf6..a3158d41 100644 --- a/src/server/api/v3/eth_getUserOperationByHash/handler.ts +++ b/src/server/api/v3/eth_getUserOperationByHash/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v3/eth_getUserOperationReceipt/handler.ts b/src/server/api/v3/eth_getUserOperationReceipt/handler.ts index 06ba9ff5..6cf7d0ff 100644 --- a/src/server/api/v3/eth_getUserOperationReceipt/handler.ts +++ b/src/server/api/v3/eth_getUserOperationReceipt/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v3/eth_getUserOperationsByApiKey/handler.ts b/src/server/api/v3/eth_getUserOperationsByApiKey/handler.ts index 8ae46e05..b85488b2 100644 --- a/src/server/api/v3/eth_getUserOperationsByApiKey/handler.ts +++ b/src/server/api/v3/eth_getUserOperationsByApiKey/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v3/eth_sendUserOperation/handler.ts b/src/server/api/v3/eth_sendUserOperation/handler.ts index 74a18535..4587f885 100644 --- a/src/server/api/v3/eth_sendUserOperation/handler.ts +++ b/src/server/api/v3/eth_sendUserOperation/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { logger } from "../../../../common/logger"; import { diff --git a/src/server/api/v3/eth_supportedEntryPoints/handler.ts b/src/server/api/v3/eth_supportedEntryPoints/handler.ts index cbcbfa5a..9e7c79d0 100644 --- a/src/server/api/v3/eth_supportedEntryPoints/handler.ts +++ b/src/server/api/v3/eth_supportedEntryPoints/handler.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ import { Request, Response } from "express"; import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; import { logger } from "../../../../common/logger"; diff --git a/src/server/api/v3/shared/errors.ts b/src/server/api/v3/shared/errors.ts index 69aa5fa2..74158128 100644 --- a/src/server/api/v3/shared/errors.ts +++ b/src/server/api/v3/shared/errors.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-classes-per-file */ + import { parseError } from "../../../../common/utils"; import { BUNDLER_ERROR_CODES } from "../../shared/middleware"; diff --git a/src/server/api/v3/shared/middleware.ts b/src/server/api/v3/shared/middleware.ts index 4cb0b514..0d348fc9 100644 --- a/src/server/api/v3/shared/middleware.ts +++ b/src/server/api/v3/shared/middleware.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-import-module-exports */ /* eslint-disable no-case-declarations */ import { NextFunction, Request, Response } from "express"; import config from "config"; @@ -48,7 +47,7 @@ export const validateChainId = ), ); } - } catch (err: any) { + } catch (err: unknown) { log.error(`Error in validateChainId: ${parseError(err)}`); return res.status(STATUSES.INTERNAL_SERVER_ERROR).json({ jsonrpc: "2.0", @@ -149,7 +148,7 @@ export const validateBundlerRequest = message, }, }); - } catch (e: any) { + } catch (e: unknown) { const { id } = req.body; log.error(e); return res.status(STATUSES.INTERNAL_SERVER_ERROR).send({ diff --git a/src/server/api/v3/shared/response.ts b/src/server/api/v3/shared/response.ts index b0f87de4..ad35cf22 100644 --- a/src/server/api/v3/shared/response.ts +++ b/src/server/api/v3/shared/response.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-classes-per-file */ + import { RPCError } from "./errors"; export abstract class RPCResponse { diff --git a/src/server/app.ts b/src/server/app.ts index 7a004a95..3674107b 100644 --- a/src/server/app.ts +++ b/src/server/app.ts @@ -1,11 +1,6 @@ import rTracer from "cls-rtracer"; import cors from "cors"; -import express, { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - NextFunction, - Request, - Response, -} from "express"; +import express, { NextFunction, Request, Response } from "express"; import cons from "consolidate"; import logger from "pino-http"; import { randomUUID } from "node:crypto"; @@ -14,6 +9,7 @@ import { routes } from "./api/router"; const app = express(); declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace namespace Express { interface Request { userId: string; @@ -45,6 +41,7 @@ app.set("view engine", "hbs"); app.use( ( req: Request, + // eslint-disable-next-line @typescript-eslint/no-explicit-any res: { setHeader: (arg0: string, arg1: any) => void }, next: NextFunction, ) => { @@ -89,6 +86,7 @@ app.route("/:chainId/health").get((req, res) => { // error handler app.use( ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any err: any, req: Request, res: Response, diff --git a/src/server/index.ts b/src/server/index.ts index a86d03c2..12d79a96 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -1,12 +1,11 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable import/first */ -require("dotenv").config({ path: `${__dirname}/../../.env` }); +import dotenv from "dotenv"; + +dotenv.config({ path: `${__dirname}/../../.env` }); import tracer from "dd-trace"; import { logger } from "../common/logger"; import { configInstance } from "../config"; -// eslint-disable-next-line func-names tracer.init({ logInjection: false }); const log = logger.child({ diff --git a/src/server/server.ts b/src/server/server.ts index d16eff60..ed064aa9 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -1,9 +1,8 @@ -/* eslint-disable import/no-import-module-exports */ import http from "http"; import { logger } from "../common/logger"; import app from "./app"; -let server: any; +let server: http.Server; const log = logger.child({ module: module.filename.split("/").slice(-4).join("/"), @@ -30,6 +29,7 @@ const port = normalizePort(process.env.PORT || "3000"); * Event listener for HTTP server "error" event. */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any function onError(error: any) { if (error.syscall !== "listen") { throw error; @@ -56,7 +56,7 @@ function onError(error: any) { function onListening() { const addr = server.address(); - const bind = typeof addr === "string" ? `pipe ${addr}` : `port ${addr.port}`; + const bind = typeof addr === "string" ? `pipe ${addr}` : `port ${addr?.port}`; log.info(`App listening on ${bind}`); } diff --git a/src/test/e2e/network-service/network-service.test.ts b/src/test/e2e/network-service/network-service.test.ts index c722159b..5e10ac7a 100644 --- a/src/test/e2e/network-service/network-service.test.ts +++ b/src/test/e2e/network-service/network-service.test.ts @@ -2,7 +2,7 @@ describe("broken test", () => { it.todo("should be fixed"); }); -// /* eslint-disable import/no-import-module-exports */ +// // /* eslint-disable no-await-in-loop */ // import { BigNumber, ethers } from 'ethers'; // import { config } from '../../../config'; diff --git a/src/test/unit/gas-price/gas-price.test.ts b/src/test/unit/gas-price/gas-price.test.ts deleted file mode 100644 index e3f45984..00000000 --- a/src/test/unit/gas-price/gas-price.test.ts +++ /dev/null @@ -1,239 +0,0 @@ -describe("broken test suite", () => { - it("should be fixed", () => {}); -}); - -// /* eslint-disable @typescript-eslint/indent */ -// import { ethers } from 'ethers'; -// import { GasPriceManager, GasPriceServiceType } from '../../../common/gas-price'; -// import { GasPriceType } from '../../../common/gas-price/types'; -// import { EVMNetworkService } from '../../../common/network'; -// import { config } from '../../../config'; -// import { MockCache } from '../mocks/mockCache'; -// import { MockNetworkService } from '../mocks/mockNetworkService'; - -// const goerli = 5; -// const mumbai = 80001; // to test eip1559 supported networks - -// describe('GasPriceManager', () => { -// let gasPriceManagerGoerli; -// let gasPriceManagerMumbai; -// const gasPriceServiceMap: { -// [chainId: number]: GasPriceServiceType; -// } = {}; - -// let cacheService: MockCache; -// beforeAll(async () => { -// cacheService = new MockCache(); -// const networkServiceMap: { -// [chainId: number]: EVMNetworkService; -// } = {}; -// networkServiceMap[goerli] = new MockNetworkService({ -// goerli, -// rpcUrl: config.chains.provider[goerli], -// fallbackRpcUrls: config.chains.fallbackUrls[goerli] || [], -// }); - -// gasPriceManagerGoerli = new GasPriceManager(cacheService, networkServiceMap[goerli], { -// chainId: goerli, -// EIP1559SupportedNetworks: [], -// }); - -// gasPriceServiceMap[goerli] = gasPriceManagerGoerli.setup(); - -// networkServiceMap[mumbai] = new MockNetworkService({ -// mumbai, -// rpcUrl: config.chains.provider[mumbai], -// fallbackRpcUrls: config.chains.fallbackUrls[mumbai] || [], -// }); -// gasPriceManagerMumbai = new GasPriceManager(cacheService, networkServiceMap[goerli], { -// chainId: mumbai, -// EIP1559SupportedNetworks: [80001], -// }); -// gasPriceServiceMap[mumbai] = gasPriceManagerMumbai.setup(); -// }); -// afterEach(async () => { -// jest.resetAllMocks(); -// }); - -// it(`should update gas price in redis for chainId: ${goerli}, if type is STRING`, async () => { -// await gasPriceServiceMap[goerli]?.setGasPrice(GasPriceType.DEFAULT, '1000000000'); -// }); - -// it(`should update gas price in redis for chainId: ${goerli}, if type is not STRING`, async () => { -// await gasPriceServiceMap[goerli]?.setGasPrice(GasPriceType.DEFAULT, { -// maxPriorityFeePerGas: '100000000', -// maxFeePerGas: '1000000000', -// }); -// }); - -// it(`should update gas price in redis for chainId: ${goerli}`, async () => { -// await gasPriceServiceMap[goerli]?.setGasPrice(GasPriceType.DEFAULT, '1000000000'); -// }); - -// it(`should get gas price from redis for chainId: ${goerli}`, async () => { -// const gasPrice = await gasPriceServiceMap[goerli]?.getGasPrice(GasPriceType.DEFAULT); -// expect(gasPrice).not.toBeNull(); -// expect(typeof gasPrice).toBe('string'); -// expect(Number(gasPrice)).toBeGreaterThan(0); -// expect(gasPrice).toBe('1000000000'); -// }); - -// it('should get gas price from redis for eip1559 supported chains', async () => { -// const expectedOutput = { maxFeePerGas: '1000000000', maxPriorityFeePerGas: '1000000000' }; - -// const gasPrice = await gasPriceServiceMap[mumbai]?.getGasPrice(GasPriceType.DEFAULT); -// expect(gasPrice).not.toBeUndefined(); -// expect(typeof gasPrice).toBe('object'); -// expect(customJSONStringify(gasPrice)).toBe(customJSONStringify(expectedOutput)); -// }); - -// it(`should get gas price from Network for chainId: ${goerli}`, async () => { -// jest.spyOn(cacheService, 'get').mockReturnValue(Promise.resolve('')); -// const gasPrice = await gasPriceServiceMap[goerli]?.getGasPrice(GasPriceType.DEFAULT); -// expect(gasPrice).not.toBeNull(); -// expect(typeof gasPrice).toBe('string'); -// expect(Number(gasPrice)).toBeGreaterThan(0); -// expect(gasPrice).toBe('20000000'); -// }); - -// it('should get gas price from network for eip1559 supported chains', async () => { -// jest.spyOn(cacheService, 'get').mockReturnValue(Promise.resolve('')); - -// const expectedOutput = { -// maxFeePerGas: '20000000', -// maxPriorityFeePerGas: '20000000', -// }; - -// const gasPrice = await gasPriceServiceMap[mumbai]?.getGasPrice(GasPriceType.DEFAULT); -// expect(gasPrice).not.toBeUndefined(); -// expect(typeof gasPrice).toBe('object'); -// expect(customJSONStringify(gasPrice)).toBe(customJSONStringify(expectedOutput)); -// }); - -// it(`should get GasPrice from CACHE while calling getGasPriceForSimulation for chainId: ${goerli}`, async () => { -// jest.spyOn(cacheService, 'get').mockReturnValue(Promise.resolve('1000000000')); -// const gasPrice = await gasPriceServiceMap[goerli]?.getGasPriceForSimulation( -// GasPriceType.DEFAULT, -// ); -// expect(gasPrice).not.toBeNull(); -// expect(typeof gasPrice).toBe('string'); -// expect(Number(gasPrice)).toBeGreaterThan(0); -// expect(gasPrice).toBe('1000000000'); -// }); - -// it(`should get GasPrice from NETWORK while calling getGasPriceForSimulation for chainId: ${goerli}`, async () => { -// jest.spyOn(cacheService, 'get').mockReturnValue(Promise.resolve('')); -// const gasPrice = await gasPriceServiceMap[goerli]?.getGasPriceForSimulation( -// GasPriceType.DEFAULT, -// ); -// expect(gasPrice).not.toBeNull(); -// expect(typeof gasPrice).toBe('string'); -// expect(Number(gasPrice)).toBeGreaterThan(0); -// expect(gasPrice).toBe('20000000'); -// }); - -// it(`should call getBumpedUpGasPrice for non-eip1559 transaction with bumpup % < 1.1 for chainId: ${goerli}`, async () => { -// const pastGasPrice = '20000000'; -// const bumpingPercentage = 9; -// const gasPrice = await gasPriceServiceMap[goerli]?.getBumpedUpGasPrice( -// pastGasPrice, -// bumpingPercentage, -// ); - -// const resubmitGasPrice = 1.1 * Number(pastGasPrice); -// expect(gasPrice).not.toBeNull(); -// expect(typeof gasPrice).toBe('string'); -// expect(Number(gasPrice)).toBeGreaterThan(0); -// expect(gasPrice).toBe(ethers.BigNumber.from(resubmitGasPrice)._hex); -// }); - -// it(`should call getBumpedUpGasPrice for non-eip1559 transaction with bumpup % > 1.1 for chainId: ${goerli}`, async () => { -// const pastGasPrice = '20000000'; -// const bumpingPercentage = 20; -// const gasPrice = await gasPriceServiceMap[goerli]?.getBumpedUpGasPrice( -// pastGasPrice, -// bumpingPercentage, -// ); - -// const resubmitGasPrice = ethers.utils.hexValue( -// ethers.BigNumber.from(pastGasPrice) -// .mul(bumpingPercentage + 100) -// .div(100), -// ); -// expect(gasPrice).not.toBeNull(); -// expect(typeof gasPrice).toBe('string'); -// expect(Number(gasPrice)).toBeGreaterThan(0); -// expect(gasPrice).toBe(ethers.BigNumber.from(resubmitGasPrice)._hex); -// }); - -// it(`should call getBumpedUpGasPrice for eip1559 transaction with bumpup % > 1.1 for chainId: ${goerli}`, async () => { -// const pastGasPrice = { -// maxFeePerGas: '1000000000', -// maxPriorityFeePerGas: '1000000000', -// }; -// const bumpingPercentage = 20; -// const gasPrice = await gasPriceServiceMap[mumbai]?.getBumpedUpGasPrice( -// pastGasPrice, -// bumpingPercentage, -// ); - -// const bumpedUpMaxPriorityFeePerGas = ethers.utils.hexValue( -// ethers.BigNumber.from(pastGasPrice.maxPriorityFeePerGas) -// .mul(bumpingPercentage + 100) -// .div(100), -// ); - -// const bumpedUpMaxFeePerGas = ethers.utils.hexValue( -// ethers.BigNumber.from(pastGasPrice.maxFeePerGas) -// .mul(bumpingPercentage + 100) -// .div(100), -// ); - -// const expectedGasPrice = { -// maxFeePerGas: bumpedUpMaxFeePerGas, -// maxPriorityFeePerGas: -// bumpedUpMaxPriorityFeePerGas, -// }; - -// expect(gasPrice).not.toBeUndefined(); -// expect(typeof gasPrice).toBe('object'); -// expect(customJSONStringify(gasPrice)).toBe(customJSONStringify(expectedGasPrice)); -// }); - -// it(`should call getBumpedUpGasPrice for eip1559 transaction with bumpup % < 1.1 for chainId: ${goerli}`, async () => { -// const pastGasPrice = { -// maxFeePerGas: '1000000000', -// maxPriorityFeePerGas: '1000000000', -// }; -// const bumpingPercentage = 9; -// const gasPrice = await gasPriceServiceMap[mumbai]?.getBumpedUpGasPrice( -// pastGasPrice, -// bumpingPercentage, -// ); - -// const expectedGasPrice = { -// maxFeePerGas: ethers.BigNumber.from(( -// Number(pastGasPrice.maxFeePerGas) * 1.11 -// ).toString()).toHexString(), -// maxPriorityFeePerGas: ethers.BigNumber.from(( -// Number(pastGasPrice.maxPriorityFeePerGas) * 1.11 -// ).toString()).toHexString(), -// }; - -// expect(gasPrice).not.toBeUndefined(); -// expect(typeof gasPrice).toBe('object'); -// expect(customJSONStringify(gasPrice)).toBe(customJSONStringify(expectedGasPrice)); -// }); - -// it(`should set setMaxFeeGasPrice price in redis for chainId: ${goerli}, if type is STRING`, async () => { -// const maxFeePerGas = '20000'; -// await gasPriceServiceMap[goerli]?.setMaxFeeGasPrice(GasPriceType.DEFAULT, maxFeePerGas); - -// jest.spyOn(cacheService, 'get').mockReturnValue(Promise.resolve(maxFeePerGas)); -// const getMaxFeeFas = await gasPriceServiceMap[goerli]?.getMaxFeeGasPrice( -// GasPriceType.DEFAULT, -// ); - -// expect(getMaxFeeFas).toBe(maxFeePerGas); -// }); -// }); diff --git a/src/test/unit/mocks/mockCache.ts b/src/test/unit/mocks/mockCache.ts deleted file mode 100644 index 5c2936d7..00000000 --- a/src/test/unit/mocks/mockCache.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* eslint-disable import/no-import-module-exports */ -/* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable class-methods-use-this */ -/* eslint-disable @typescript-eslint/indent */ -import Redlock, { Lock } from "redlock"; -import { ICacheService } from "../../../common/cache/interface"; -import { logger } from "../../../common/logger"; - -const log = logger.child({ - module: module.filename.split("/").slice(-4).join("/"), -}); - -export class MockCache implements ICacheService { - redisClient: any; - - release() { - this.redisClient = null; - } - - async connect(): Promise { - log.info("Initiating Redis connection"); - } - - close(): Promise { - throw new Error("Method not implemented."); - } - - get(key: string): Promise { - return Promise.resolve("1000000000"); - } - - set( - key: string, - value: string, - hideValueInLogs?: boolean | undefined, - ): Promise { - return Promise.resolve(true); - } - - increment(key: string, incrementBy?: number | undefined): Promise { - throw new Error("Method not implemented."); - } - - decrement(key: string, decrementBy?: number | undefined): Promise { - throw new Error("Method not implemented."); - } - - expire(key: string, expiryTime: number): Promise { - return Promise.resolve(false); - } - - delete(key: string): Promise { - return Promise.resolve(true); - } - - getRedLock(): any { - return { - acquire: async (resources: string[], duration: number) => true, - }; - } - - unlockRedLock(lock: Lock): Promise { - throw new Error("Method not implemented."); - } - - connectRedLock(): Redlock { - return new Redlock([this.redisClient], { - // the expected clock drift; for more details - // see http://redis.io/topics/distlock - driftFactor: 0.01, // multiplied by lock ttl to determine drift time - - // the max number of times Redlock will attempt - // to lock a resource before erroring - retryCount: 5, - - // the time in ms between attempts - retryDelay: 8000, // time in ms - - // the max time in ms randomly added to retries - // to improve performance under high contention - // see https://www.awsarchitectureblog.com/2015/03/backoff.html - retryJitter: 200, // time in ms - }); - } -} diff --git a/src/test/unit/mocks/mockEVMAccount.ts b/src/test/unit/mocks/mockEVMAccount.ts index c11cb288..175f13f4 100644 --- a/src/test/unit/mocks/mockEVMAccount.ts +++ b/src/test/unit/mocks/mockEVMAccount.ts @@ -1,4 +1,4 @@ -// /* eslint-disable @typescript-eslint/no-unused-vars */ +// // import { EVMRawTransactionType } from "../../../common/types"; // import { IEVMAccount } from "../../../relayer/account"; diff --git a/src/test/unit/mocks/mockGasPrice.ts b/src/test/unit/mocks/mockGasPrice.ts index a2ad5525..05c82ec3 100644 --- a/src/test/unit/mocks/mockGasPrice.ts +++ b/src/test/unit/mocks/mockGasPrice.ts @@ -1,6 +1,6 @@ // /* eslint-disable max-len */ // /* eslint-disable class-methods-use-this */ -// /* eslint-disable @typescript-eslint/no-unused-vars */ +// // import { extend } from 'lodash'; // import { ICacheService } from '../../../common/cache'; // import { IGasPriceService } from '../../../common/gas-price'; diff --git a/src/test/unit/mocks/mockJsonProvider.ts b/src/test/unit/mocks/mockJsonProvider.ts deleted file mode 100644 index 24178336..00000000 --- a/src/test/unit/mocks/mockJsonProvider.ts +++ /dev/null @@ -1,14 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -/* eslint-disable class-methods-use-this */ -/* eslint-disable @typescript-eslint/no-unused-vars */ -/* eslint-disable max-len */ -import { JsonRpcProvider } from "@ethersproject/providers"; -import { BigNumber, ethers } from "ethers"; - -export class MockJsonProvider extends JsonRpcProvider { - estimateGas( - transaction: ethers.utils.Deferrable, - ): Promise { - return Promise.resolve(BigNumber.from(1)); - } -} diff --git a/src/test/unit/mocks/mockNetworkService.ts b/src/test/unit/mocks/mockNetworkService.ts index fd74dd5b..c2bc1551 100644 --- a/src/test/unit/mocks/mockNetworkService.ts +++ b/src/test/unit/mocks/mockNetworkService.ts @@ -1,8 +1,8 @@ // /* eslint-disable no-new-object */ -// /* eslint-disable @typescript-eslint/no-unused-vars */ +// // /* eslint-disable class-methods-use-this */ // /* eslint-disable @typescript-eslint/space-before-blocks */ -// /* eslint-disable import/no-extraneous-dependencies */ +// // /* eslint-disable @typescript-eslint/indent */ // import { JsonRpcProvider, TransactionResponse, TransactionReceipt } from '@ethersproject/providers'; // import { BigNumber, Contract } from 'ethers'; diff --git a/src/test/unit/mocks/mockNetworkServiceFail.ts b/src/test/unit/mocks/mockNetworkServiceFail.ts index 2435ec2d..371f8b1c 100644 --- a/src/test/unit/mocks/mockNetworkServiceFail.ts +++ b/src/test/unit/mocks/mockNetworkServiceFail.ts @@ -1,7 +1,7 @@ -// /* eslint-disable @typescript-eslint/no-unused-vars */ +// // /* eslint-disable class-methods-use-this */ // /* eslint-disable @typescript-eslint/space-before-blocks */ -// /* eslint-disable import/no-extraneous-dependencies */ +// // /* eslint-disable @typescript-eslint/indent */ // import { JsonRpcProvider, TransactionResponse, TransactionReceipt } from '@ethersproject/providers'; // import { BigNumber, Contract } from 'ethers'; diff --git a/src/test/unit/network-service/network-service.test.ts b/src/test/unit/network-service/network-service.test.ts index b8bda5a3..d93a4278 100644 --- a/src/test/unit/network-service/network-service.test.ts +++ b/src/test/unit/network-service/network-service.test.ts @@ -1,7 +1,7 @@ describe("broken test suite", () => { it("should be fixed", () => {}); }); -// /* eslint-disable @typescript-eslint/no-unused-vars */ +// // /* eslint-disable max-len */ // import { ethers } from 'ethers'; // import axios from 'axios'; diff --git a/yarn.lock b/yarn.lock index 64f0390b..d28ff68a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -926,17 +926,48 @@ resolved "https://registry.yarnpkg.com/@datadog/sketches-js/-/sketches-js-2.1.0.tgz#8c7e8028a5fc22ad102fa542b0a446c956830455" integrity sha512-smLocSfrt3s53H/XSVP3/1kP42oqvrkjUPtyaFd1F79ux24oE31BKt+q0c6lsa6hOYrFzsIwyc5GXAI5JmfOew== -"@eslint-community/eslint-utils@^4.2.0": +"@es-joy/jsdoccomment@~0.46.0": + version "0.46.0" + resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.46.0.tgz#47a2ee4bfc0081f252e058272dfab680aaed464d" + integrity sha512-C3Axuq1xd/9VqFZpW4YAzOx5O9q/LP46uIQy/iNDpHG3fmPa6TBtvfglMCs3RBiBxAIi0Go97r8+jvTt55XMyQ== + dependencies: + comment-parser "1.4.1" + esquery "^1.6.0" + jsdoc-type-pratt-parser "~4.0.0" + +"@eslint-community/eslint-plugin-eslint-comments@^4.3.0": + version "4.4.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-4.4.0.tgz#1fedd85e7c11dcea5764ec3dee5829a2cc117821" + integrity sha512-yljsWl5Qv3IkIRmJ38h3NrHXFCm4EUl55M8doGTF6hvzvFF8kRpextgSrg2dwHev9lzBZyafCr9RelGIyQm6fw== + dependencies: + escape-string-regexp "^4.0.0" + ignore "^5.2.4" + +"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.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-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.11.0": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f" + integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q== + +"@eslint/config-array@^0.18.0": + version "0.18.0" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.18.0.tgz#37d8fe656e0d5e3dbaea7758ea56540867fd074d" + integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== + dependencies: + "@eslint/object-schema" "^2.1.4" + debug "^4.3.1" + minimatch "^3.1.2" + +"@eslint/core@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.7.0.tgz#a1bb4b6a4e742a5ff1894b7ee76fbf884ec72bd3" + integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -953,10 +984,37 @@ 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== +"@eslint/eslintrc@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6" + integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^10.0.1" + globals "^14.0.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@9.13.0", "@eslint/js@^9.0.0", "@eslint/js@^9.13.0": + version "9.13.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.13.0.tgz#c5f89bcd57eb54d5d4fa8b77693e9c28dc97e547" + integrity sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA== + +"@eslint/object-schema@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843" + integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== + +"@eslint/plugin-kit@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.1.tgz#cd14fe2db79fa639839dfef4105e83bad1814482" + integrity sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw== + dependencies: + levn "^0.4.1" "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": version "5.7.0" @@ -1312,24 +1370,28 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@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== +"@humanfs/core@^0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.0.tgz#08db7a8c73bb07673d9ebd925f2dad746411fcec" + integrity sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw== + +"@humanfs/node@^0.16.5": + version "0.16.5" + resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.5.tgz#a9febb7e7ad2aff65890fdc630938f8d20aa84ba" + integrity sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg== dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" + "@humanfs/core" "^0.19.0" + "@humanwhocodes/retry" "^0.3.0" "@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== +"@humanwhocodes/retry@^0.3.0", "@humanwhocodes/retry@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" + integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== "@ioredis/commands@^1.1.1": version "1.2.0" @@ -1635,7 +1697,7 @@ 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": +"@nodelib/fs.walk@^1.2.3": 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== @@ -1752,6 +1814,11 @@ resolved "https://registry.yarnpkg.com/@redis/time-series/-/time-series-1.0.5.tgz#a6d70ef7a0e71e083ea09b967df0a0ed742bc6ad" integrity sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg== +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + "@scure/base@~1.1.6": version "1.1.7" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" @@ -2364,6 +2431,11 @@ resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.2.tgz#771c4a768d94eb5922cc202a3009558204df0cea" integrity sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== +"@types/estree@^1.0.6": + version "1.0.6" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" + integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + "@types/express-prometheus-middleware@^1.2.1": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/express-prometheus-middleware/-/express-prometheus-middleware-1.2.3.tgz#b470fb21745d519b524f16d21d6d14e7cd90d7bc" @@ -2444,7 +2516,7 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.15": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -2500,6 +2572,11 @@ dependencies: undici-types "~5.26.4" +"@types/normalize-package-data@^2.4.0": + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" + integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== + "@types/numeral@^2.0.2": version "2.0.5" resolved "https://registry.yarnpkg.com/@types/numeral/-/numeral-2.0.5.tgz#388e5c4ff4b0e1787f130753cbbe83d3ba770858" @@ -2541,11 +2618,6 @@ 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/send@*": version "0.17.4" resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" @@ -2600,94 +2672,86 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.40.0": - 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== +"@typescript-eslint/eslint-plugin@8.11.0", "@typescript-eslint/eslint-plugin@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz#c3f087d20715fa94310b30666c08b3349e0ab084" + integrity sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA== 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" + "@eslint-community/regexpp" "^4.10.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/type-utils" "8.11.0" + "@typescript-eslint/utils" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" 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.40.0": - 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" + ignore "^5.3.1" + natural-compare "^1.4.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/parser@8.11.0", "@typescript-eslint/parser@^8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.11.0.tgz#2ad1481388dc1c937f50b2d138c9ca57cc6c5cce" + integrity sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg== + dependencies: + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.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== +"@typescript-eslint/scope-manager@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz#9d399ce624118966732824878bc9a83593a30405" + integrity sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.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== +"@typescript-eslint/type-utils@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz#b7f9e6120c1ddee8a1a07615646642ad85fc91b5" + integrity sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg== dependencies: - "@typescript-eslint/typescript-estree" "5.62.0" - "@typescript-eslint/utils" "5.62.0" + "@typescript-eslint/typescript-estree" "8.11.0" + "@typescript-eslint/utils" "8.11.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.3.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/types@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.11.0.tgz#7c766250502097f49bbc2e651132e6bf489e20b8" + integrity sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw== -"@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== +"@typescript-eslint/typescript-estree@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz#35fe5d3636fc5727c52429393415412e552e222b" + integrity sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg== dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/visitor-keys" "8.11.0" debug "^4.3.4" - globby "^11.1.0" + fast-glob "^3.3.2" 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== + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^1.3.0" + +"@typescript-eslint/utils@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.11.0.tgz#4480d1e9f2bb18ea3510c79f870a1aefc118103d" + integrity sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@typescript-eslint/scope-manager" "8.11.0" + "@typescript-eslint/types" "8.11.0" + "@typescript-eslint/typescript-estree" "8.11.0" + +"@typescript-eslint/visitor-keys@8.11.0": + version "8.11.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz#273de1cbffe63d9f9cd7dfc20b5a5af66310cb92" + integrity sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw== + dependencies: + "@typescript-eslint/types" "8.11.0" + eslint-visitor-keys "^3.4.3" abbrev@1: version "1.1.1" @@ -2734,7 +2798,12 @@ acorn-walk@^8.1.1: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== -acorn@^8.4.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.12.0, acorn@^8.9.0: + version "8.13.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3" + integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w== + +acorn@^8.4.1, acorn@^8.8.2: version "8.11.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== @@ -2813,6 +2882,11 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +are-docs-informative@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/are-docs-informative/-/are-docs-informative-0.0.2.tgz#387f0e93f5d45280373d387a59d34c96db321963" + integrity sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig== + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -2843,7 +2917,7 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.7: +array-includes@^3.1.8: version "3.1.8" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== @@ -2855,12 +2929,7 @@ array-includes@^3.1.7: get-intrinsic "^1.2.4" 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.findlastindex@^1.2.3: +array.prototype.findlastindex@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== @@ -3158,6 +3227,16 @@ browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.13" +browserslist@^4.23.3: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -3231,6 +3310,11 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" +builtin-modules@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -3272,6 +3356,11 @@ caniuse-lite@^1.0.30001587: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079" integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ== +caniuse-lite@^1.0.30001669: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + cent.js@^2.0.5: version "2.1.6" resolved "https://registry.yarnpkg.com/cent.js/-/cent.js-2.1.6.tgz#75e72c12903d071248ade1559124a0cd5dbc2e63" @@ -3331,6 +3420,11 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== +ci-info@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.0.0.tgz#65466f8b280fc019b9f50a5388115d17a63a44f2" + integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -3344,6 +3438,13 @@ cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.2: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== +clean-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clean-regexp/-/clean-regexp-1.0.0.tgz#8df7c7aae51fd36874e8f8d05b9180bc11a3fed7" + integrity sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw== + dependencies: + escape-string-regexp "^1.0.5" + cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -3443,6 +3544,11 @@ commander@^12.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== +comment-parser@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/comment-parser/-/comment-parser-1.4.1.tgz#bdafead37961ac079be11eb7ec65c4d021eaf9cc" + integrity sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg== + commitizen@^4.0.3, commitizen@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/commitizen/-/commitizen-4.3.1.tgz#f0e0e4b7ae3fafc92e444bbb78f2ded5a1d4311a" @@ -3475,11 +3581,6 @@ config@^3.3.11: dependencies: json5 "^2.2.3" -confusing-browser-globals@^1.0.10: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - consolidate@^0.16.0: version "0.16.0" resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.16.0.tgz#a11864768930f2f19431660a65906668f5fbdc16" @@ -3519,6 +3620,13 @@ cookie@0.6.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== +core-js-compat@^3.34.0: + version "3.38.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" + integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== + dependencies: + browserslist "^4.23.3" + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -3734,6 +3842,13 @@ debug@^4.3.4: dependencies: ms "2.1.2" +debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + dedent@0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -3834,13 +3949,6 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -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" @@ -3848,13 +3956,6 @@ doctrine@^2.1.0: 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.3: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" @@ -3870,6 +3971,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.717.tgz#99db370cae8cd090d5b01f8748e9ad369924d0f8" integrity sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A== +electron-to-chromium@^1.5.41: + version "1.5.46" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.46.tgz#69c98f809a3ea669386263d672f4d920be71da3a" + integrity sha512-1XDk0Z8/YRgB2t5GeEg8DPK592DLjVmd/5uwAu6c/S4Z0CUwV/RwYqe5GWxQqcoN3bJ5U7hYMiMRPZzpCzSBhQ== + elliptic@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -3918,6 +4024,14 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhanced-resolve@^5.17.0: + version "5.17.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" + integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + entry-point-gas-estimations@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/entry-point-gas-estimations/-/entry-point-gas-estimations-1.0.2.tgz#91e76fdcdca56f601a62a111579cc03c8112de05" @@ -4003,6 +4117,11 @@ es-errors@^1.2.1, es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== +es-module-lexer@^1.5.3: + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== + es-object-atoms@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" @@ -4040,6 +4159,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4060,22 +4184,23 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-airbnb-base@^15.0.0: - version "15.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz#6b09add90ac79c2f8d723a2580e07f3925afd236" - integrity sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig== +eslint-compat-utils@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz#7fc92b776d185a70c4070d03fd26fde3d59652e4" + integrity sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q== dependencies: - confusing-browser-globals "^1.0.10" - object.assign "^4.1.2" - object.entries "^1.1.5" - semver "^6.3.0" + semver "^7.5.4" -eslint-config-airbnb-typescript@^17.0.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz#fda960eee4a510f092a9a1c139035ac588937ddc" - integrity sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig== +eslint-config-eslint@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-eslint/-/eslint-config-eslint-11.0.0.tgz#5bb535544d462750879fdfaac70473838d763975" + integrity sha512-AWmzAfDUUaHYZzGQguHXzh/PkKHfrwttXIglqE0xWSkJDRhionaJVT1+niI1qKYRPn/FE5CHQIZ24L1u5rYSaw== dependencies: - eslint-config-airbnb-base "^15.0.0" + "@eslint-community/eslint-plugin-eslint-comments" "^4.3.0" + "@eslint/js" "^9.0.0" + eslint-plugin-jsdoc "^48.2.3" + eslint-plugin-n "^17.2.0" + eslint-plugin-unicorn "^52.0.0" eslint-config-prettier@^9.1.0: version "9.1.0" @@ -4091,56 +4216,112 @@ eslint-import-resolver-node@^0.3.9: 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== +eslint-module-utils@^2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" + integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== dependencies: debug "^3.2.7" -eslint-plugin-import@^2.26.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== +eslint-plugin-es-x@^7.5.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz#a207aa08da37a7923f2a9599e6d3eb73f3f92b74" + integrity sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ== + dependencies: + "@eslint-community/eslint-utils" "^4.1.2" + "@eslint-community/regexpp" "^4.11.0" + eslint-compat-utils "^0.5.1" + +eslint-plugin-import@^2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" + integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.8" + array.prototype.findlastindex "^1.2.5" 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" + eslint-module-utils "^2.12.0" + hasown "^2.0.2" + is-core-module "^2.15.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" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.0" semver "^6.3.1" + string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" -eslint-plugin-prettier@^5.1.0: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== +eslint-plugin-jsdoc@^48.2.3: + version "48.11.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.11.0.tgz#7c8dae6ce0d814aff54b87fdb808f02635691ade" + integrity sha512-d12JHJDPNo7IFwTOAItCeJY1hcqoIxE0lHA8infQByLilQ9xkqrRa6laWCnsuCrf+8rUnvxXY1XuTbibRBNylA== + dependencies: + "@es-joy/jsdoccomment" "~0.46.0" + are-docs-informative "^0.0.2" + comment-parser "1.4.1" + debug "^4.3.5" + escape-string-regexp "^4.0.0" + espree "^10.1.0" + esquery "^1.6.0" + parse-imports "^2.1.1" + semver "^7.6.3" + spdx-expression-parse "^4.0.0" + synckit "^0.9.1" + +eslint-plugin-n@^17.2.0: + version "17.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-17.11.1.tgz#c5eeabef598e20751b4dcf31b64e69eb3ee9ae6b" + integrity sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + enhanced-resolve "^5.17.0" + eslint-plugin-es-x "^7.5.0" + get-tsconfig "^4.7.0" + globals "^15.8.0" + ignore "^5.2.4" + minimatch "^9.0.5" + semver "^7.5.3" + +eslint-plugin-prettier@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz#d1c8f972d8f60e414c25465c163d16f209411f95" + integrity sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" + synckit "^0.9.1" -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== +eslint-plugin-unicorn@^52.0.0: + version "52.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-52.0.0.tgz#c7a559edd52e3932cf2b3a05c3b0efc604c1eeb8" + integrity sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng== dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" + "@babel/helper-validator-identifier" "^7.22.20" + "@eslint-community/eslint-utils" "^4.4.0" + "@eslint/eslintrc" "^2.1.4" + ci-info "^4.0.0" + clean-regexp "^1.0.0" + core-js-compat "^3.34.0" + esquery "^1.5.0" + indent-string "^4.0.0" + is-builtin-module "^3.2.1" + jsesc "^3.0.2" + pluralize "^8.0.0" + read-pkg-up "^7.0.1" + regexp-tree "^0.1.27" + regjsparser "^0.10.0" + semver "^7.5.4" + strip-indent "^3.0.0" -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== +eslint-scope@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.1.0.tgz#70214a174d4cbffbc3e8a26911d8bf51b9ae9d30" + integrity sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -4150,51 +4331,62 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 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.25.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== +eslint-visitor-keys@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz#1f785cc5e81eb7534523d85922248232077d2f8c" + integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== + +eslint@^9.13.0: + version "9.13.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.13.0.tgz#7659014b7dda1ff876ecbd990f726e11c61596e6" + integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== 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" + "@eslint-community/regexpp" "^4.11.0" + "@eslint/config-array" "^0.18.0" + "@eslint/core" "^0.7.0" + "@eslint/eslintrc" "^3.1.0" + "@eslint/js" "9.13.0" + "@eslint/plugin-kit" "^0.2.0" + "@humanfs/node" "^0.16.5" "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" + "@humanwhocodes/retry" "^0.3.1" + "@types/estree" "^1.0.6" + "@types/json-schema" "^7.0.15" 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" + eslint-scope "^8.1.0" + eslint-visitor-keys "^4.1.0" + espree "^10.2.0" + esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" + file-entry-cache "^8.0.0" 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: +espree@^10.0.1, espree@^10.1.0, espree@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.2.0.tgz#f4bcead9e05b0615c968e85f83816bc386a45df6" + integrity sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g== + dependencies: + acorn "^8.12.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^4.1.0" + +espree@^9.6.0: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -4208,10 +4400,10 @@ esprima@^4.0.0: 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== +esquery@^1.5.0, esquery@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== dependencies: estraverse "^5.1.0" @@ -4222,11 +4414,6 @@ esrecurse@^4.3.0: 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" @@ -4461,7 +4648,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.9: +fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -4525,12 +4712,12 @@ figures@^3.0.0: dependencies: escape-string-regexp "^1.0.5" -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== +file-entry-cache@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" + integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== dependencies: - flat-cache "^3.0.4" + flat-cache "^4.0.0" fill-range@^7.0.1: version "7.0.1" @@ -4598,14 +4785,13 @@ findup-sync@^4.0.0: micromatch "^4.0.2" resolve-dir "^1.0.1" -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== +flat-cache@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" + integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== dependencies: flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" + keyv "^4.5.4" flatted@^3.2.9: version "3.3.1" @@ -4745,6 +4931,13 @@ get-symbol-description@^1.0.2: es-errors "^1.3.0" get-intrinsic "^1.2.4" +get-tsconfig@^4.7.0: + version "4.8.1" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471" + integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg== + dependencies: + resolve-pkg-maps "^1.0.0" + glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -4821,6 +5014,16 @@ globals@^13.19.0: dependencies: type-fest "^0.20.2" +globals@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" + integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== + +globals@^15.11.0, globals@^15.8.0: + version "15.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.11.0.tgz#b96ed4c6998540c6fb824b24b5499216d2438d6e" + integrity sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw== + globalthis@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" @@ -4828,18 +5031,6 @@ globalthis@^1.0.3: 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" - gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -4847,7 +5038,7 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.9: +graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.9: version "4.2.11" 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== @@ -4963,6 +5154,11 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -5011,6 +5207,11 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +ignore@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -5047,6 +5248,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5173,18 +5379,32 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-builtin-module@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" + integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== + dependencies: + builtin-modules "^3.3.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, is-core-module@^2.13.1: +is-core-module@^2.13.0: 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-core-module@^2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" + integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== + dependencies: + hasown "^2.0.2" + is-data-view@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f" @@ -5248,11 +5468,6 @@ is-number@^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" @@ -5818,11 +6033,26 @@ jsbn@1.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== +jsdoc-type-pratt-parser@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz#136f0571a99c184d84ec84662c45c29ceff71114" + integrity sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -5883,7 +6113,7 @@ keccak@^3.0.0: node-gyp-build "^4.2.0" readable-stream "^3.6.0" -keyv@^4.5.3: +keyv@^4.5.4: version "4.5.4" resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== @@ -6082,7 +6312,7 @@ 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: +merge2@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== @@ -6135,6 +6365,11 @@ mimic-fn@^2.1.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" @@ -6145,7 +6380,7 @@ 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.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6159,6 +6394,13 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.4, minimatch@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + minimist@1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" @@ -6246,7 +6488,7 @@ 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.3, ms@^2.1.1: +ms@2.1.3, ms@^2.1.1, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6271,11 +6513,6 @@ nan@^2.18.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== -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" @@ -6351,6 +6588,11 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + nodemon@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.0.tgz#ff7394f2450eb6a5e96fe4180acd5176b29799c9" @@ -6374,6 +6616,16 @@ nopt@~1.0.10: dependencies: abbrev "1" +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -6406,7 +6658,7 @@ object-keys@^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.2, object.assign@^4.1.5: +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== @@ -6416,16 +6668,7 @@ object.assign@^4.1.2, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.5: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" - integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== - dependencies: - call-bind "^1.0.7" - define-properties "^1.2.1" - es-object-atoms "^1.0.0" - -object.fromentries@^2.0.7: +object.fromentries@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== @@ -6435,7 +6678,7 @@ object.fromentries@^2.0.7: es-abstract "^1.23.2" es-object-atoms "^1.0.0" -object.groupby@^1.0.1: +object.groupby@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== @@ -6444,7 +6687,7 @@ object.groupby@^1.0.1: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.1.7: +object.values@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== @@ -6594,7 +6837,15 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.2.0: +parse-imports@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-2.2.1.tgz#0a6e8b5316beb5c9905f50eb2bbb8c64a4805642" + integrity sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ== + dependencies: + es-module-lexer "^1.5.3" + slashes "^3.0.12" + +parse-json@^5.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" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -6639,11 +6890,6 @@ path-to-regexp@0.1.7, path-to-regexp@^0.1.2: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -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" @@ -6665,6 +6911,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -6742,6 +6993,11 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + 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" @@ -6764,10 +7020,10 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.1.1: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== +prettier@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" @@ -6916,6 +7172,25 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + "readable-stream@1.x >=1.1.9": version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -6989,6 +7264,11 @@ redlock@^5.0.0-beta.2: dependencies: node-abort-controller "^3.0.1" +regexp-tree@^0.1.27: + version "0.1.27" + resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd" + integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA== + 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" @@ -6999,6 +7279,13 @@ regexp.prototype.flags@^1.5.2: es-errors "^1.3.0" set-function-name "^2.0.1" +regjsparser@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.10.0.tgz#b1ed26051736b436f22fdec1c8f72635f9f44892" + integrity sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA== + dependencies: + jsesc "~0.5.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -7039,12 +7326,17 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@^1.20.0, resolve@^1.22.4: +resolve@^1.10.0, resolve@^1.20.0, 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== @@ -7084,13 +7376,6 @@ reusify@^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@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -7183,18 +7468,28 @@ secure-json-parse@^2.4.0: resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== +"semver@2 || 3 || 4 || 5": + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + 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== -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: +semver@^7.5.3, semver@^7.5.4: 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" +semver@^7.6.0, semver@^7.6.3: + version "7.6.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -7325,6 +7620,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slashes@^3.0.12: + version "3.0.12" + resolved "https://registry.yarnpkg.com/slashes/-/slashes-3.0.12.tgz#3d664c877ad542dc1509eaf2c50f38d483a6435a" + integrity sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA== + smart-buffer@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" @@ -7370,6 +7670,40 @@ sparse-bitfield@^3.0.3: dependencies: memory-pager "^1.0.2" +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-expression-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz#a23af9f3132115465dac215c099303e4ceac5794" + integrity sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.20" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89" + integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw== + split2@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" @@ -7481,6 +7815,13 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -7517,14 +7858,19 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== +synckit@^0.9.1: + version "0.9.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" + integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== dependencies: "@pkgr/core" "^0.1.0" tslib "^2.6.2" +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + tdigest@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" @@ -7613,6 +7959,11 @@ tr46@^4.1.1: dependencies: punycode "^2.3.0" +ts-api-utils@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" + integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== + ts-jest@^29.0.3: version "29.1.2" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" @@ -7656,7 +8007,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.11.1, tslib@^1.8.1: +tslib@^1.11.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -7671,13 +8022,6 @@ tslib@^2.3.1, tslib@^2.4.0, tslib@^2.6.2: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== -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" - 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" @@ -7700,6 +8044,16 @@ type-fest@^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== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + type-is@^1.6.18, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -7752,6 +8106,15 @@ typed-array-length@^1.0.5: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" +typescript-eslint@^8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.11.0.tgz#74a0551972d675b4141672cec3acc5139b7399c0" + integrity sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA== + dependencies: + "@typescript-eslint/eslint-plugin" "8.11.0" + "@typescript-eslint/parser" "8.11.0" + "@typescript-eslint/utils" "8.11.0" + typescript@^5.3.3: version "5.4.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" @@ -7800,6 +8163,14 @@ update-browserslist-db@^1.0.13: escalade "^3.1.1" picocolors "^1.0.0" +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -7854,6 +8225,14 @@ v8-to-istanbul@^9.0.1: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^2.0.0" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"