diff --git a/Dockerfile b/Dockerfile index 1ee08ff..b3e5dca 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,7 @@ COPY packages/persistence-example/package.json ./packages/persistence-example/pa COPY packages/template/package.json ./packages/template/package.json COPY packages/typescript-config/package.json ./packages/typescript-config/package.json COPY packages/webhooks/package.json ./packages/webhooks/package.json +COPY packages/error-handling/package.json ./packages/error-handling/package.json # Build the dependencies into a node_modules folder RUN pnpm install --frozen-lockfile diff --git a/packages/error-handling/.mocharc.json b/packages/error-handling/.mocharc.json new file mode 100644 index 0000000..f56d1f9 --- /dev/null +++ b/packages/error-handling/.mocharc.json @@ -0,0 +1,10 @@ +{ + "extension": [ + "ts" + ], + "spec": "**/*.test.ts", + "require": [ + "ts-node/register" + ], + "recursive": true +} diff --git a/packages/error-handling/README.md b/packages/error-handling/README.md new file mode 100644 index 0000000..bb535bd --- /dev/null +++ b/packages/error-handling/README.md @@ -0,0 +1,3 @@ +# HTTP Error Handling Module + +This module provides a comprehensive system for managing errors within the indexer package. It is meant to be a centralized constants repository for Indexer related errors diff --git a/packages/error-handling/eslint.config.js b/packages/error-handling/eslint.config.js new file mode 100644 index 0000000..3f2bce2 --- /dev/null +++ b/packages/error-handling/eslint.config.js @@ -0,0 +1,6 @@ + // .eslintrc.js in the new package +module.exports = { + root:true, + extends: ['@repo/eslint-config/library.js'], +}; + diff --git a/packages/error-handling/package.json b/packages/error-handling/package.json new file mode 100644 index 0000000..4e68cab --- /dev/null +++ b/packages/error-handling/package.json @@ -0,0 +1,46 @@ +{ + "name": "@repo/error-handling", + "version": "0.0.1", + "description": "", + "main": "index.js", + "scripts": { + "build": "tsc -b", + "build:check": "tsc --noEmit", + "watch": "tsc -b --watch", + "fix": "pnpm format && pnpm lint", + "format": "prettier --write src", + "format:check": "prettier src --check", + "lint": "eslint --fix", + "lint:check": "eslint", + "check": "pnpm format:check && pnpm lint:check && pnpm build:check", + "test": "mocha", + "coverage": "nyc mocha", + "test:watch": "mocha --watch" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "http-status-codes": "^2.3.0" + }, + "exports": { + ".": "./dist/index.js" + }, + "devDependencies": { + "@istanbuljs/nyc-config-typescript": "^1.0.2", + "@repo/eslint-config": "workspace:*", + "@repo/typescript-config": "workspace:*", + "@types/chai": "^4.3.17", + "@types/mocha": "^10.0.7", + "@types/node": "^16.11.10", + "chai": "^4.5.0", + "eslint": "^8.57.0", + "mocha": "^10.7.0", + "nyc": "^17.0.0", + "prettier": "^3.3.3", + "source-map-support": "^0.5.21", + "ts-node": "^10.9.2", + "typescript": "^5.5.4", + "winston": "^3.13.1" + } +} diff --git a/packages/error-handling/src/errors/AssertError.ts b/packages/error-handling/src/errors/AssertError.ts new file mode 100644 index 0000000..34e37ac --- /dev/null +++ b/packages/error-handling/src/errors/AssertError.ts @@ -0,0 +1,7 @@ +import { IndexerError } from "./IndexerError"; + +export class AssertError extends IndexerError { + constructor(message: string) { + super(AssertError.name, message); + } +} diff --git a/packages/error-handling/src/errors/IndexerError.ts b/packages/error-handling/src/errors/IndexerError.ts new file mode 100644 index 0000000..448222f --- /dev/null +++ b/packages/error-handling/src/errors/IndexerError.ts @@ -0,0 +1,25 @@ +/** + * Generic Error class that should be used in the Indexer to + * provide common error patterns to log + */ +export abstract class IndexerError extends Error { + constructor( + private readonly errorName: string, + private readonly errorMessage: string, + private readonly errorData?: Record, + ) { + super(errorMessage); + } + + /** + * A function used by `JSON.stringify` to specify which data will be serialized + * @returns A formatted JSON + */ + public toJSON(): Record { + return { + error: this.errorName, + message: this.errorMessage, + data: this.errorData, + }; + } +} diff --git a/packages/error-handling/src/errors/IndexerHTTPError.ts b/packages/error-handling/src/errors/IndexerHTTPError.ts new file mode 100644 index 0000000..187d2eb --- /dev/null +++ b/packages/error-handling/src/errors/IndexerHTTPError.ts @@ -0,0 +1,31 @@ +import { StatusCodes } from "http-status-codes"; +import { IndexerError } from "./IndexerError"; + +export { StatusCodes }; + +/** + * Used to distinguish a similar design pattern as {@link IndexerError} but with + * additional HTTP context + * @see {@link IndexerError} + */ +export abstract class IndexerHTTPError extends IndexerError { + constructor( + private readonly httpStatusCode: StatusCodes, + errorName: string, + errorMessage: string, + errorData?: Record, + ) { + super(errorName, errorMessage, errorData); + } + + /** + * A function used by `JSON.stringify` to specify which data will be serialized + * @returns A formatted JSON + */ + public toJSON(): Record { + return { + statusCode: this.httpStatusCode, + ...super.toJSON(), + }; + } +} diff --git a/packages/error-handling/src/errors/index.ts b/packages/error-handling/src/errors/index.ts new file mode 100644 index 0000000..22ce009 --- /dev/null +++ b/packages/error-handling/src/errors/index.ts @@ -0,0 +1,3 @@ +export * from "./IndexerError"; +export * from "./IndexerHTTPError"; +export * from "./AssertError"; diff --git a/packages/error-handling/src/index.ts b/packages/error-handling/src/index.ts new file mode 100644 index 0000000..b330f3d --- /dev/null +++ b/packages/error-handling/src/index.ts @@ -0,0 +1,2 @@ +export * from "./errors"; +export * from "./utils"; diff --git a/packages/error-handling/src/main.test.ts b/packages/error-handling/src/main.test.ts new file mode 100644 index 0000000..cf3b696 --- /dev/null +++ b/packages/error-handling/src/main.test.ts @@ -0,0 +1,31 @@ +import { describe, it } from "mocha"; +import { expect } from "chai"; +import assert from "assert"; +import { AssertError } from "./errors"; +import { isIndexerError, assert as customAssert } from "./utils"; + +describe("Error handling Tests", function () { + it("should run the toJSON in Stringify", () => { + const e = new AssertError("test"); + const jsonStringifyDirectly = JSON.stringify(e.toJSON()); + const jsonIndirectly = JSON.stringify(e); + expect(jsonIndirectly).to.eq(jsonStringifyDirectly); + }); + + describe("typeguards", function () { + it("should validate IndexerError", () => { + const e = new AssertError("test"); + expect(isIndexerError(e)).to.be.true; + }); + }); + + describe("utils", () => { + it("should run assert as expected", () => { + expect(() => assert(false, "")).to.throw; + expect(() => customAssert(false, "")).to.throw; + + expect(() => assert(true, "")).to.not.throw; + expect(() => customAssert(true, "")).to.not.throw; + }); + }); +}); diff --git a/packages/error-handling/src/utils/assert.ts b/packages/error-handling/src/utils/assert.ts new file mode 100644 index 0000000..f0910b1 --- /dev/null +++ b/packages/error-handling/src/utils/assert.ts @@ -0,0 +1,17 @@ +import * as assertModule from "assert"; +import { AssertError } from "../errors/AssertError"; + +/** + * A stand-in assert function that returns a formatted error payload + * @param value An arbitrary predicate that will be asserted for truthiness + * @param message An error message that will be passed if the assert fails + * @returns An assertion of `value`. + * @throws {@link AssertError} if assert's validity fails + */ +export function assert(value: unknown, message: string): asserts value { + try { + return assertModule.ok(value, message); + } catch (e: unknown) { + throw new AssertError(message); + } +} diff --git a/packages/error-handling/src/utils/index.ts b/packages/error-handling/src/utils/index.ts new file mode 100644 index 0000000..2fea854 --- /dev/null +++ b/packages/error-handling/src/utils/index.ts @@ -0,0 +1,2 @@ +export * from "./assert"; +export * from "./typeguards"; diff --git a/packages/error-handling/src/utils/typeguards.ts b/packages/error-handling/src/utils/typeguards.ts new file mode 100644 index 0000000..c936557 --- /dev/null +++ b/packages/error-handling/src/utils/typeguards.ts @@ -0,0 +1,19 @@ +import { IndexerError, IndexerHTTPError } from "../errors"; + +/** + * Typeguard to confirm that an object is an IndexerError + * @param error The error object to validate + * @returns Whether this object is an instance of `IndexerError` (or a descendent) + */ +export function isIndexerError(error: unknown): error is IndexerError { + return error instanceof IndexerError; +} + +/** + * Typeguard to confirm that an object is an IndexerHTTPError + * @param error The error object to validate + * @returns Whether this object is an instance of `IndexerHTTPError` (or a descendent) + */ +export function isIndexerHTTPError(error: unknown): error is IndexerHTTPError { + return error instanceof IndexerHTTPError; +} diff --git a/packages/error-handling/tsconfig.json b/packages/error-handling/tsconfig.json new file mode 100644 index 0000000..4cf9c4a --- /dev/null +++ b/packages/error-handling/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends":"@repo/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist" /* Specify an output folder for all emitted files. */ + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c8d7cfb..e875de9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,6 +64,58 @@ importers: specifier: ^5.5.4 version: 5.5.4 + packages/error-handling: + dependencies: + http-status-codes: + specifier: ^2.3.0 + version: 2.3.0 + devDependencies: + '@istanbuljs/nyc-config-typescript': + specifier: ^1.0.2 + version: 1.0.2(nyc@17.0.0) + '@repo/eslint-config': + specifier: workspace:* + version: link:../eslint-config + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/chai': + specifier: ^4.3.17 + version: 4.3.17 + '@types/mocha': + specifier: ^10.0.7 + version: 10.0.7 + '@types/node': + specifier: ^16.11.10 + version: 16.18.104 + chai: + specifier: ^4.5.0 + version: 4.5.0 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + mocha: + specifier: ^10.7.0 + version: 10.7.0 + nyc: + specifier: ^17.0.0 + version: 17.0.0 + prettier: + specifier: ^3.3.3 + version: 3.3.3 + source-map-support: + specifier: ^0.5.21 + version: 0.5.21 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@16.18.104)(typescript@5.5.4) + typescript: + specifier: ^5.5.4 + version: 5.5.4 + winston: + specifier: ^3.13.1 + version: 3.13.1 + packages/eslint-config: devDependencies: '@typescript-eslint/eslint-plugin': @@ -1765,9 +1817,6 @@ packages: '@types/node@16.18.104': resolution: {integrity: sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ==} - '@types/node@22.0.2': - resolution: {integrity: sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==} - '@types/node@22.7.3': resolution: {integrity: sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==} @@ -4503,6 +4552,9 @@ packages: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} + http-status-codes@2.3.0: + resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + http2-wrapper@1.0.3: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} @@ -7592,9 +7644,6 @@ packages: underscore@1.13.7: resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} - undici-types@6.11.1: - resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==} - undici-types@6.19.8: resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} @@ -8363,25 +8412,6 @@ snapshots: '@across-protocol/constants@3.1.20': {} - '@across-protocol/contracts@0.1.4(@babel/core@7.25.2)(@ethersproject/hardware-wallets@5.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(ts-generator@0.1.1)(typechain@4.0.3(typescript@5.5.4))(utf-8-validate@5.0.10)': - dependencies: - '@eth-optimism/contracts': 0.5.40(bufferutil@4.0.8)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) - '@openzeppelin/contracts': 4.1.0 - '@uma/core': 2.59.1(@babel/core@7.25.2)(@ethersproject/hardware-wallets@5.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(ts-generator@0.1.1)(typechain@4.0.3(typescript@5.5.4))(utf-8-validate@5.0.10) - transitivePeerDependencies: - - '@babel/core' - - '@codechecks/client' - - '@ethersproject/hardware-wallets' - - bufferutil - - debug - - encoding - - ethers - - hardhat - - supports-color - - ts-generator - - typechain - - utf-8-validate - '@across-protocol/contracts@0.1.4(bufferutil@4.0.8)(encoding@0.1.13)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': dependencies: '@eth-optimism/contracts': 0.5.40(bufferutil@4.0.8)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) @@ -10417,7 +10447,7 @@ snapshots: '@types/bn.js@4.11.6': dependencies: - '@types/node': 22.7.3 + '@types/node': 16.18.104 '@types/bn.js@5.1.1': dependencies: @@ -10430,7 +10460,7 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.0.2 + '@types/node': 16.18.104 '@types/cacheable-request@6.0.3': dependencies: @@ -10455,7 +10485,7 @@ snapshots: '@types/cors@2.8.17': dependencies: - '@types/node': 22.0.2 + '@types/node': 16.18.104 '@types/ethereum-protocol@1.0.5': dependencies: @@ -10548,10 +10578,6 @@ snapshots: '@types/node@16.18.104': {} - '@types/node@22.0.2': - dependencies: - undici-types: 6.11.1 - '@types/node@22.7.3': dependencies: undici-types: 6.19.8 @@ -10855,7 +10881,7 @@ snapshots: '@uma/common@2.37.1(@babel/core@7.25.2)(@ethersproject/hardware-wallets@5.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(ts-generator@0.1.1)(typechain@4.0.3(typescript@5.5.4))(utf-8-validate@5.0.10)': dependencies: - '@across-protocol/contracts': 0.1.4(@babel/core@7.25.2)(@ethersproject/hardware-wallets@5.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(encoding@0.1.13)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(ts-generator@0.1.1)(typechain@4.0.3(typescript@5.5.4))(utf-8-validate@5.0.10) + '@across-protocol/contracts': 0.1.4(bufferutil@4.0.8)(encoding@0.1.13)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -10964,9 +10990,9 @@ snapshots: '@ethersproject/constants': 5.7.0 '@google-cloud/kms': 3.8.0(encoding@0.1.13) '@google-cloud/storage': 6.12.0(encoding@0.1.13) - '@nomicfoundation/hardhat-verify': 1.1.1(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-web3': 2.0.0(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-verify': 1.1.1(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-web3': 2.0.0(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10)) '@truffle/contract': 4.6.17(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@truffle/hdwallet-provider': 1.5.1-alpha.1(@babel/core@7.25.2)(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.10) '@types/ethereum-protocol': 1.0.5 @@ -10980,7 +11006,7 @@ snapshots: dotenv: 9.0.2 eth-crypto: 2.6.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat-deploy: 0.9.1(@ethersproject/hardware-wallets@5.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))(bufferutil@4.0.8)(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) - hardhat-gas-reporter: 1.0.10(bufferutil@4.0.8)(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@16.18.104)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + hardhat-gas-reporter: 1.0.10(bufferutil@4.0.8)(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) hardhat-typechain: 0.3.5(hardhat@2.22.12(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@22.7.3)(typescript@5.5.4))(typescript@5.5.4)(utf-8-validate@5.0.10))(ts-generator@0.1.1)(typechain@4.0.3(typescript@5.5.4)) lodash.uniqby: 4.7.0 minimist: 1.2.8 @@ -11241,7 +11267,7 @@ snapshots: '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)) + eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.1) eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) @@ -12997,7 +13023,7 @@ snapshots: eslint: 8.57.0 eslint-plugin-turbo: 2.0.11(eslint@8.57.0) - eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)): + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.1): dependencies: eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) @@ -13014,7 +13040,7 @@ snapshots: debug: 4.3.7 enhanced-resolve: 5.17.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.6 @@ -13026,7 +13052,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: @@ -14715,6 +14741,8 @@ snapshots: jsprim: 1.4.2 sshpk: 1.18.0 + http-status-codes@2.3.0: {} + http2-wrapper@1.0.3: dependencies: quick-lru: 5.1.1 @@ -16725,7 +16753,7 @@ snapshots: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 22.7.3 + '@types/node': 16.18.104 long: 4.0.0 protobufjs@7.2.4: @@ -16755,7 +16783,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.7.3 + '@types/node': 16.18.104 long: 5.2.3 protobufjs@7.4.0: @@ -18259,8 +18287,6 @@ snapshots: underscore@1.13.7: {} - undici-types@6.11.1: {} - undici-types@6.19.8: {} undici@5.28.4: