diff --git a/.changeset/breezy-gorillas-relate.md b/.changeset/breezy-gorillas-relate.md new file mode 100644 index 000000000..35526dcb3 --- /dev/null +++ b/.changeset/breezy-gorillas-relate.md @@ -0,0 +1,8 @@ +--- +"@xmtp/content-type-primitives": patch +"@xmtp/content-type-reaction": patch +"@xmtp/content-type-read-receipt": patch +"@xmtp/content-type-remote-attachment": patch +--- + +Update `ContentCodec` generic type diff --git a/.github/workflows/content-types.yml b/.github/workflows/content-types.yml index 9f5ded514..1709944e3 100644 --- a/.github/workflows/content-types.yml +++ b/.github/workflows/content-types.yml @@ -35,24 +35,6 @@ jobs: - name: Typecheck run: yarn turbo run typecheck --filter='./content-types/*' - lint: - name: Lint - runs-on: warp-ubuntu-latest-x64-8x - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version-file: ".nvmrc" - cache: "yarn" - env: - SKIP_YARN_COREPACK_CHECK: "1" - - name: Enable corepack - run: corepack enable - - name: Install dependencies - run: yarn - - name: Lint - run: yarn turbo run lint --filter='./content-types/*' - test: name: Test runs-on: warp-ubuntu-latest-x64-8x diff --git a/.github/workflows/encryption.yml b/.github/workflows/encryption.yml index ef10f35b1..eb43b4dd0 100644 --- a/.github/workflows/encryption.yml +++ b/.github/workflows/encryption.yml @@ -33,24 +33,6 @@ jobs: - name: Typecheck run: yarn turbo run typecheck --filter='./shared/encryption' - lint: - name: Lint - runs-on: warp-ubuntu-latest-x64-8x - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version-file: ".nvmrc" - cache: "yarn" - env: - SKIP_YARN_COREPACK_CHECK: "1" - - name: Enable corepack - run: corepack enable - - name: Install dependencies - run: yarn - - name: Lint - run: yarn turbo run lint --filter='./shared/encryption' - test: name: Test runs-on: warp-ubuntu-latest-x64-8x diff --git a/.github/workflows/js-sdk.yml b/.github/workflows/js-sdk.yml index e2a3393ac..95b3db1ae 100644 --- a/.github/workflows/js-sdk.yml +++ b/.github/workflows/js-sdk.yml @@ -35,24 +35,6 @@ jobs: - name: Typecheck run: yarn turbo run typecheck --filter='./sdks/js-sdk' - lint: - name: Lint - runs-on: warp-ubuntu-latest-x64-8x - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version-file: ".nvmrc" - cache: "yarn" - env: - SKIP_YARN_COREPACK_CHECK: "1" - - name: Enable corepack - run: corepack enable - - name: Install dependencies - run: yarn - - name: Lint - run: yarn turbo run lint --filter='./sdks/js-sdk' - test: name: Test runs-on: warp-ubuntu-latest-x64-8x diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..c8113691b --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,27 @@ +name: ESLint + +on: + push: + branches: + - main + + pull_request: + +jobs: + lint: + name: Lint + runs-on: warp-ubuntu-latest-x64-8x + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version-file: ".nvmrc" + cache: "yarn" + env: + SKIP_YARN_COREPACK_CHECK: "1" + - name: Enable corepack + run: corepack enable + - name: Install dependencies + run: yarn + - name: Lint + run: yarn lint diff --git a/.github/workflows/mls-client.yml b/.github/workflows/mls-client.yml index 30ca2b9ad..a68890fac 100644 --- a/.github/workflows/mls-client.yml +++ b/.github/workflows/mls-client.yml @@ -35,24 +35,6 @@ jobs: - name: Typecheck run: yarn turbo run typecheck --filter='./sdks/node-sdk' - lint: - name: Lint - runs-on: warp-ubuntu-latest-x64-8x - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version-file: ".nvmrc" - cache: "yarn" - env: - SKIP_YARN_COREPACK_CHECK: "1" - - name: Enable corepack - run: corepack enable - - name: Install dependencies - run: yarn - - name: Lint - run: yarn turbo run lint --filter='./sdks/node-sdk' - test: name: Test runs-on: warp-ubuntu-latest-x64-8x diff --git a/.github/workflows/noop.yml b/.github/workflows/noop.yml index 221c4cfe6..fa4621504 100644 --- a/.github/workflows/noop.yml +++ b/.github/workflows/noop.yml @@ -17,8 +17,6 @@ on: - "*" - "!.node-version" - "!.nvmrc" - - "!.prettierignore" - - "!.prettierrc.cjs" - "!.yarnrc.yml" - "!turbo.json" - "!yarn.lock" @@ -30,12 +28,6 @@ jobs: steps: - run: echo "Nothing to typecheck" - lint: - name: Lint - runs-on: ubuntu-latest - steps: - - run: echo "Nothing to lint" - test: name: Test runs-on: ubuntu-latest diff --git a/content-types/content-type-primitives/.eslintrc.cjs b/content-types/content-type-primitives/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-primitives/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-primitives/package.json b/content-types/content-type-primitives/package.json index 52a93a8c7..81d720106 100644 --- a/content-types/content-type-primitives/package.json +++ b/content-types/content-type-primitives/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -70,8 +69,6 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^12.1.0", "@types/node": "^20.16.11", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", "rollup": "^4.24.0", diff --git a/content-types/content-type-primitives/src/index.ts b/content-types/content-type-primitives/src/index.ts index 2825c2768..7bfad581b 100644 --- a/content-types/content-type-primitives/src/index.ts +++ b/content-types/content-type-primitives/src/index.ts @@ -45,12 +45,21 @@ export type EncodedContent> = { content: Uint8Array; }; -export type ContentCodec = { +export type ContentCodec< + ContentType = any, + Parameters = Record, +> = { contentType: ContentTypeId; - encode(content: T, registry: CodecRegistry): EncodedContent; - decode(content: EncodedContent, registry: CodecRegistry): T; - fallback(content: T): string | undefined; - shouldPush: (content: T) => boolean; + encode( + content: ContentType, + registry: CodecRegistry, + ): EncodedContent; + decode( + content: EncodedContent, + registry: CodecRegistry, + ): ContentType; + fallback(content: ContentType): string | undefined; + shouldPush: (content: ContentType) => boolean; }; /** diff --git a/content-types/content-type-primitives/tsconfig.eslint.json b/content-types/content-type-primitives/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-primitives/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-primitives/tsconfig.json b/content-types/content-type-primitives/tsconfig.json index 69f454187..f7dba01ea 100644 --- a/content-types/content-type-primitives/tsconfig.json +++ b/content-types/content-type-primitives/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js"] } diff --git a/content-types/content-type-reaction/.eslintrc.cjs b/content-types/content-type-reaction/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-reaction/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-reaction/package.json b/content-types/content-type-reaction/package.json index 4ea492854..b752ca0ac 100644 --- a/content-types/content-type-reaction/package.json +++ b/content-types/content-type-reaction/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -72,8 +71,6 @@ "@types/node": "^20.16.11", "@xmtp/xmtp-js": "^11.6.3", "buffer": "^6.0.3", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "ethers": "^6.11.1", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/content-types/content-type-reaction/src/Reaction.ts b/content-types/content-type-reaction/src/Reaction.ts index 2fef90ae6..021539be4 100644 --- a/content-types/content-type-reaction/src/Reaction.ts +++ b/content-types/content-type-reaction/src/Reaction.ts @@ -36,19 +36,22 @@ export type Reaction = { schema: "unicode" | "shortcode" | "custom"; }; -type LegacyReactionParameters = Pick< +export type LegacyReactionParameters = Pick< Reaction, "action" | "reference" | "schema" > & { encoding: "UTF-8"; }; -export class ReactionCodec implements ContentCodec { +export class ReactionCodec + implements + ContentCodec> +{ get contentType(): ContentTypeId { return ContentTypeReaction; } - encode(reaction: Reaction): EncodedContent { + encode(reaction: Reaction) { const { action, reference, referenceInboxId, schema, content } = reaction; return { type: this.contentType, @@ -65,7 +68,7 @@ export class ReactionCodec implements ContentCodec { }; } - decode(encodedContent: EncodedContent): Reaction { + decode(encodedContent: EncodedContent): Reaction { const decodedContent = new TextDecoder().decode(encodedContent.content); // First try to decode it in the canonical form. @@ -73,12 +76,12 @@ export class ReactionCodec implements ContentCodec { const reaction = JSON.parse(decodedContent) as Reaction; const { action, reference, referenceInboxId, schema, content } = reaction; return { action, reference, referenceInboxId, schema, content }; - } catch (e) { + } catch { // ignore, fall through to legacy decoding } // If that fails, try to decode it in the legacy form. - const parameters = encodedContent.parameters as LegacyReactionParameters; + const parameters = encodedContent.parameters; return { action: parameters.action, reference: parameters.reference, diff --git a/content-types/content-type-reaction/src/index.ts b/content-types/content-type-reaction/src/index.ts index edc7e20f0..7560c0c01 100644 --- a/content-types/content-type-reaction/src/index.ts +++ b/content-types/content-type-reaction/src/index.ts @@ -1,2 +1 @@ -export { ReactionCodec, ContentTypeReaction } from "./Reaction"; -export type { Reaction } from "./Reaction"; +export * from "./Reaction"; diff --git a/content-types/content-type-reaction/tsconfig.eslint.json b/content-types/content-type-reaction/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-reaction/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-reaction/tsconfig.json b/content-types/content-type-reaction/tsconfig.json index 69f454187..f3406406e 100644 --- a/content-types/content-type-reaction/tsconfig.json +++ b/content-types/content-type-reaction/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js", "vitest.config.ts", "vitest.setup.ts"] } diff --git a/content-types/content-type-read-receipt/.eslintrc.cjs b/content-types/content-type-read-receipt/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-read-receipt/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-read-receipt/package.json b/content-types/content-type-read-receipt/package.json index 963b0417d..f326d2fce 100644 --- a/content-types/content-type-read-receipt/package.json +++ b/content-types/content-type-read-receipt/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -72,8 +71,6 @@ "@types/node": "^20.16.11", "@xmtp/xmtp-js": "^11.6.3", "buffer": "^6.0.3", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "ethers": "^6.11.1", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/content-types/content-type-read-receipt/src/ReadReceipt.ts b/content-types/content-type-read-receipt/src/ReadReceipt.ts index 970a8865e..d08f1fcfa 100644 --- a/content-types/content-type-read-receipt/src/ReadReceipt.ts +++ b/content-types/content-type-read-receipt/src/ReadReceipt.ts @@ -1,7 +1,6 @@ import { ContentTypeId, type ContentCodec, - type EncodedContent, } from "@xmtp/content-type-primitives"; export const ContentTypeReadReceipt = new ContentTypeId({ @@ -13,12 +12,16 @@ export const ContentTypeReadReceipt = new ContentTypeId({ export type ReadReceipt = Record; -export class ReadReceiptCodec implements ContentCodec { +export type ReadReceiptParameters = Record; + +export class ReadReceiptCodec + implements ContentCodec +{ get contentType(): ContentTypeId { return ContentTypeReadReceipt; } - encode(): EncodedContent { + encode() { return { type: ContentTypeReadReceipt, parameters: {}, diff --git a/content-types/content-type-read-receipt/src/index.ts b/content-types/content-type-read-receipt/src/index.ts index 977b5587f..5631c0529 100644 --- a/content-types/content-type-read-receipt/src/index.ts +++ b/content-types/content-type-read-receipt/src/index.ts @@ -1,2 +1 @@ -export { ReadReceiptCodec, ContentTypeReadReceipt } from "./ReadReceipt"; -export type { ReadReceipt } from "./ReadReceipt"; +export * from "./ReadReceipt"; diff --git a/content-types/content-type-read-receipt/tsconfig.eslint.json b/content-types/content-type-read-receipt/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-read-receipt/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-read-receipt/tsconfig.json b/content-types/content-type-read-receipt/tsconfig.json index 69f454187..f3406406e 100644 --- a/content-types/content-type-read-receipt/tsconfig.json +++ b/content-types/content-type-read-receipt/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js", "vitest.config.ts", "vitest.setup.ts"] } diff --git a/content-types/content-type-remote-attachment/.eslintrc.cjs b/content-types/content-type-remote-attachment/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-remote-attachment/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-remote-attachment/package.json b/content-types/content-type-remote-attachment/package.json index 1dbf2695b..877325067 100644 --- a/content-types/content-type-remote-attachment/package.json +++ b/content-types/content-type-remote-attachment/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -77,8 +76,6 @@ "@xmtp/rollup-plugin-resolve-extensions": "^1.0.1", "@xmtp/xmtp-js": "^11.6.3", "buffer": "^6.0.3", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "ethers": "^6.11.1", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/content-types/content-type-remote-attachment/src/Attachment.ts b/content-types/content-type-remote-attachment/src/Attachment.ts index e25d1e237..10eef32f5 100644 --- a/content-types/content-type-remote-attachment/src/Attachment.ts +++ b/content-types/content-type-remote-attachment/src/Attachment.ts @@ -17,12 +17,19 @@ export type Attachment = { data: Uint8Array; }; -export class AttachmentCodec implements ContentCodec { +export type AttachmentParameters = { + filename: string; + mimeType: string; +}; + +export class AttachmentCodec + implements ContentCodec +{ get contentType(): ContentTypeId { return ContentTypeAttachment; } - encode(content: Attachment): EncodedContent { + encode(content: Attachment) { return { type: ContentTypeAttachment, parameters: { @@ -33,7 +40,7 @@ export class AttachmentCodec implements ContentCodec { }; } - decode(content: EncodedContent): Attachment { + decode(content: EncodedContent): Attachment { return { filename: content.parameters.filename, mimeType: content.parameters.mimeType, diff --git a/content-types/content-type-remote-attachment/src/RemoteAttachment.ts b/content-types/content-type-remote-attachment/src/RemoteAttachment.ts index 9cae318fd..f4fe4c355 100644 --- a/content-types/content-type-remote-attachment/src/RemoteAttachment.ts +++ b/content-types/content-type-remote-attachment/src/RemoteAttachment.ts @@ -34,7 +34,19 @@ export type RemoteAttachment = { filename: string; }; -export class RemoteAttachmentCodec implements ContentCodec { +export type RemoteAttachmentParameters = { + contentDigest: string; + salt: string; + nonce: string; + secret: string; + scheme: string; + contentLength: string; + filename: string; +}; + +export class RemoteAttachmentCodec + implements ContentCodec +{ static async load( remoteAttachment: RemoteAttachment, codecRegistry: CodecRegistry, @@ -42,7 +54,7 @@ export class RemoteAttachmentCodec implements ContentCodec { const response = await fetch(remoteAttachment.url); const payload = new Uint8Array(await response.arrayBuffer()); - if (!payload) { + if (payload.length === 0) { throw new Error( `no payload for remote attachment at ${remoteAttachment.url}`, ); @@ -71,19 +83,16 @@ export class RemoteAttachmentCodec implements ContentCodec { ); const encodedContent = proto.EncodedContent.decode(encodedContentData); - if (!encodedContent || !encodedContent.type) { - throw new Error("no encoded content"); - } - - const contentType = encodedContent.type; - if (!contentType) { + if (!encodedContent.type) { throw new Error("no content type"); } - const codec = codecRegistry.codecFor(new ContentTypeId(contentType)); + const codec = codecRegistry.codecFor( + new ContentTypeId(encodedContent.type), + ); if (!codec) { - throw new Error(`no codec found for ${encodedContent.type?.typeId}`); + throw new Error(`no codec found for ${encodedContent.type.typeId}`); } return codec.decode(encodedContent as EncodedContent, codecRegistry); @@ -128,7 +137,7 @@ export class RemoteAttachmentCodec implements ContentCodec { return ContentTypeRemoteAttachment; } - encode(content: RemoteAttachment): EncodedContent { + encode(content: RemoteAttachment) { if (!content.url.startsWith("https")) { throw new Error("scheme must be https"); } @@ -148,7 +157,9 @@ export class RemoteAttachmentCodec implements ContentCodec { }; } - decode(content: EncodedContent): RemoteAttachment { + decode( + content: EncodedContent, + ): RemoteAttachment { return { url: new TextDecoder().decode(content.content), contentDigest: content.parameters.contentDigest, diff --git a/content-types/content-type-remote-attachment/src/index.ts b/content-types/content-type-remote-attachment/src/index.ts index ae339d9d9..da31965d8 100644 --- a/content-types/content-type-remote-attachment/src/index.ts +++ b/content-types/content-type-remote-attachment/src/index.ts @@ -1,10 +1,2 @@ -export { AttachmentCodec, ContentTypeAttachment } from "./Attachment"; -export type { Attachment } from "./Attachment"; -export { - RemoteAttachmentCodec, - ContentTypeRemoteAttachment, -} from "./RemoteAttachment"; -export type { - RemoteAttachment, - EncryptedEncodedContent, -} from "./RemoteAttachment"; +export * from "./Attachment"; +export * from "./RemoteAttachment"; diff --git a/content-types/content-type-remote-attachment/tsconfig.eslint.json b/content-types/content-type-remote-attachment/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-remote-attachment/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-remote-attachment/tsconfig.json b/content-types/content-type-remote-attachment/tsconfig.json index 69f454187..f3406406e 100644 --- a/content-types/content-type-remote-attachment/tsconfig.json +++ b/content-types/content-type-remote-attachment/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js", "vitest.config.ts", "vitest.setup.ts"] } diff --git a/content-types/content-type-reply/.eslintrc.cjs b/content-types/content-type-reply/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-reply/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-reply/package.json b/content-types/content-type-reply/package.json index 7e63f648c..d5c9b5d1d 100644 --- a/content-types/content-type-reply/package.json +++ b/content-types/content-type-reply/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -74,8 +73,6 @@ "@xmtp/content-type-remote-attachment": "workspace:*", "@xmtp/xmtp-js": "^11.6.3", "buffer": "^6.0.3", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "ethers": "^6.11.1", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/content-types/content-type-reply/src/Reply.ts b/content-types/content-type-reply/src/Reply.ts index ab2e0f85f..807737e6e 100644 --- a/content-types/content-type-reply/src/Reply.ts +++ b/content-types/content-type-reply/src/Reply.ts @@ -34,12 +34,18 @@ export type Reply = { contentType: ContentTypeId; }; -export class ReplyCodec implements ContentCodec { +export type ReplyParameters = { + contentType: string; + reference: string; + referenceInboxId?: string; +}; + +export class ReplyCodec implements ContentCodec { get contentType(): ContentTypeId { return ContentTypeReply; } - encode(content: Reply, registry: CodecRegistry): EncodedContent { + encode(content: Reply, registry: CodecRegistry) { const codec = registry.codecFor(content.contentType); if (!codec) { throw new Error( @@ -50,7 +56,7 @@ export class ReplyCodec implements ContentCodec { const encodedContent = codec.encode(content.content, registry); const bytes = proto.EncodedContent.encode(encodedContent).finish(); - const parameters: Record = { + const parameters: ReplyParameters = { // TODO: cut when we're certain no one is looking for "contentType" here. contentType: content.contentType.toString(), reference: content.reference, @@ -68,7 +74,10 @@ export class ReplyCodec implements ContentCodec { }; } - decode(content: EncodedContent, registry: CodecRegistry): Reply { + decode( + content: EncodedContent, + registry: CodecRegistry, + ): Reply { const decodedContent = proto.EncodedContent.decode(content.content); if (!decodedContent.type) { throw new Error("missing content type"); diff --git a/content-types/content-type-reply/src/index.ts b/content-types/content-type-reply/src/index.ts index 649645531..0478e4ad3 100644 --- a/content-types/content-type-reply/src/index.ts +++ b/content-types/content-type-reply/src/index.ts @@ -1,2 +1 @@ -export { ReplyCodec, ContentTypeReply } from "./Reply"; -export type { Reply } from "./Reply"; +export * from "./Reply"; diff --git a/content-types/content-type-reply/tsconfig.eslint.json b/content-types/content-type-reply/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-reply/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-reply/tsconfig.json b/content-types/content-type-reply/tsconfig.json index 69f454187..f3406406e 100644 --- a/content-types/content-type-reply/tsconfig.json +++ b/content-types/content-type-reply/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js", "vitest.config.ts", "vitest.setup.ts"] } diff --git a/content-types/content-type-text/.eslintrc.cjs b/content-types/content-type-text/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-text/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-text/package.json b/content-types/content-type-text/package.json index 63bfc034a..80f0053de 100644 --- a/content-types/content-type-text/package.json +++ b/content-types/content-type-text/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -72,8 +71,6 @@ "@types/node": "^20.16.11", "@xmtp/xmtp-js": "^11.6.3", "buffer": "^6.0.3", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "ethers": "^6.11.1", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/content-types/content-type-text/src/Text.test.ts b/content-types/content-type-text/src/Text.test.ts index 8f98d7d1c..1deef9e82 100644 --- a/content-types/content-type-text/src/Text.test.ts +++ b/content-types/content-type-text/src/Text.test.ts @@ -26,7 +26,9 @@ describe("ContentTypeText", () => { const codec = new TextCodec(); const ec = { type: ContentTypeText, - parameters: {}, + parameters: { + encoding: Encoding.utf8, + }, content: {} as Uint8Array, }; expect(() => codec.decode(ec)).toThrow(); @@ -36,7 +38,7 @@ describe("ContentTypeText", () => { const codec = new TextCodec(); const ec = { type: ContentTypeText, - parameters: { encoding: "UTF-16" }, + parameters: { encoding: "UTF-16" } as unknown as { encoding: Encoding }, content: new Uint8Array(0), }; expect(() => codec.decode(ec)).toThrow("unrecognized encoding UTF-16"); diff --git a/content-types/content-type-text/src/Text.ts b/content-types/content-type-text/src/Text.ts index 12f747147..23b9ba42b 100644 --- a/content-types/content-type-text/src/Text.ts +++ b/content-types/content-type-text/src/Text.ts @@ -13,14 +13,19 @@ export const ContentTypeText = new ContentTypeId({ export enum Encoding { utf8 = "UTF-8", + unknown = "unknown", } -export class TextCodec implements ContentCodec { +export type TextParameters = { + encoding: Encoding; +}; + +export class TextCodec implements ContentCodec { get contentType(): ContentTypeId { return ContentTypeText; } - encode(content: string): EncodedContent { + encode(content: string) { return { type: ContentTypeText, parameters: { encoding: Encoding.utf8 }, @@ -28,10 +33,9 @@ export class TextCodec implements ContentCodec { }; } - decode(content: EncodedContent) { - const { encoding } = content.parameters; - if ((encoding as Encoding) !== Encoding.utf8) { - throw new Error(`unrecognized encoding ${encoding}`); + decode(content: EncodedContent) { + if (content.parameters.encoding !== Encoding.utf8) { + throw new Error(`unrecognized encoding ${content.parameters.encoding}`); } return new TextDecoder().decode(content.content); } diff --git a/content-types/content-type-text/src/index.ts b/content-types/content-type-text/src/index.ts index 41b613ef9..22e10b675 100644 --- a/content-types/content-type-text/src/index.ts +++ b/content-types/content-type-text/src/index.ts @@ -1 +1 @@ -export { ContentTypeText, Encoding, TextCodec } from "./Text"; +export * from "./Text"; diff --git a/content-types/content-type-text/tsconfig.eslint.json b/content-types/content-type-text/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-text/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-text/tsconfig.json b/content-types/content-type-text/tsconfig.json index 69f454187..f7dba01ea 100644 --- a/content-types/content-type-text/tsconfig.json +++ b/content-types/content-type-text/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js"] } diff --git a/content-types/content-type-transaction-reference/.eslintrc.cjs b/content-types/content-type-transaction-reference/.eslintrc.cjs deleted file mode 100644 index d46b01d75..000000000 --- a/content-types/content-type-transaction-reference/.eslintrc.cjs +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - root: true, - extends: ["custom"], - parserOptions: { - project: "./tsconfig.eslint.json", - }, -}; diff --git a/content-types/content-type-transaction-reference/package.json b/content-types/content-type-transaction-reference/package.json index 8c7164e54..16a50176a 100644 --- a/content-types/content-type-transaction-reference/package.json +++ b/content-types/content-type-transaction-reference/package.json @@ -45,7 +45,6 @@ "clean": "yarn clean:dist && rimraf .turbo node_modules", "clean:dist": "rimraf dist", "dev": "yarn clean:dist && yarn rollup -c --watch", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:jsdom", "test:jsdom": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment happy-dom", "test:node": "NODE_TLS_REJECT_UNAUTHORIZED=0 vitest run --environment node", @@ -72,8 +71,6 @@ "@types/node": "^20.16.11", "@xmtp/xmtp-js": "^11.6.3", "buffer": "^6.0.3", - "eslint": "^8.57.0", - "eslint-config-custom": "workspace:*", "ethers": "^6.11.1", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/content-types/content-type-transaction-reference/tsconfig.eslint.json b/content-types/content-type-transaction-reference/tsconfig.eslint.json deleted file mode 100644 index 5ee5f6f56..000000000 --- a/content-types/content-type-transaction-reference/tsconfig.eslint.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": [".", ".eslintrc.cjs", "rollup.config.js"], - "exclude": ["dist", "node_modules"] -} diff --git a/content-types/content-type-transaction-reference/tsconfig.json b/content-types/content-type-transaction-reference/tsconfig.json index 69f454187..f3406406e 100644 --- a/content-types/content-type-transaction-reference/tsconfig.json +++ b/content-types/content-type-transaction-reference/tsconfig.json @@ -1,5 +1,4 @@ { "extends": "tsconfig/build.json", - "include": ["src"], - "exclude": ["dist", "node_modules"] + "include": ["src", "rollup.config.js", "vitest.config.ts", "vitest.setup.ts"] } diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..78fe8baa0 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,131 @@ +import path from "node:path"; +import process from "node:process"; +import { fileURLToPath } from "node:url"; +import { includeIgnoreFile } from "@eslint/compat"; +import eslint from "@eslint/js"; +import eslintPluginPrettierRecommended from "eslint-plugin-prettier/recommended"; +import globals from "globals"; +import tseslint from "typescript-eslint"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const gitignorePath = path.resolve(__dirname, ".gitignore"); + +export default tseslint.config( + includeIgnoreFile(gitignorePath), + { + ignores: [".yarn/**/*"], + }, + eslint.configs.recommended, + ...tseslint.configs.strictTypeChecked, + { + languageOptions: { + parserOptions: { + projectService: { + defaultProject: "tsconfig.json", + }, + tsconfigRootDir: process.cwd(), + }, + }, + }, + { + rules: { + "@typescript-eslint/consistent-type-exports": [ + "error", + { + fixMixedExportsWithInlineTypeSpecifier: false, + }, + ], + "@typescript-eslint/consistent-type-imports": "error", + "@typescript-eslint/no-deprecated": "warn", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + ignoreRestSiblings: true, + varsIgnorePattern: "^_", + }, + ], + "@typescript-eslint/restrict-template-expressions": [ + "error", + { + allowNumber: true, + }, + ], + }, + }, + { + files: ["**/*.cjs", "**/*.js"], + extends: [tseslint.configs.disableTypeChecked], + languageOptions: { + globals: { + ...globals.node, + }, + }, + rules: { + "@typescript-eslint/no-require-imports": "off", + }, + }, + { + files: ["**/*.test.ts"], + rules: { + "@typescript-eslint/no-non-null-assertion": "off", + }, + }, + { + files: ["sdks/js-sdk/**/*.ts"], + rules: { + "no-restricted-syntax": [ + "error", + { + selector: "ImportDeclaration[source.value=/^(node:)?crypto$/]", + message: + "Do not import directly from `crypto`, use `@xmtp/encryption` instead.", + }, + ], + }, + }, + { + files: ["sdks/js-sdk/test/**/*.ts"], + rules: { + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-confusing-void-expression": "off", + "@typescript-eslint/require-await": "off", + "@typescript-eslint/await-thenable": "off", + "@typescript-eslint/no-unnecessary-condition": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/only-throw-error": "off", + "@typescript-eslint/unbound-method": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/no-unnecessary-type-arguments": "off", + "@typescript-eslint/no-unnecessary-type-assertion": "off", + "@typescript-eslint/no-deprecated": "off", + "@typescript-eslint/restrict-plus-operands": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/ban-ts-comment": "off", + "@typescript-eslint/no-non-null-assertion": "off", + "no-empty": "off", + }, + }, + { + files: ["sdks/**/*.ts"], + rules: { + "no-restricted-syntax": [ + "error", + { + selector: "ImportDeclaration[source.value=/^\\.\\./]", + message: + "Relative parent imports are not allowed, use path aliases instead.", + }, + ], + }, + }, + eslintPluginPrettierRecommended, +); diff --git a/package.json b/package.json index 1d02a13eb..8f98bb7dc 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "xmtp-js", "version": "0.0.0", "private": true, + "type": "module", "workspaces": [ "content-types/*", "packages/*", @@ -13,7 +14,7 @@ "clean": "turbo run clean && rimraf .turbo node_modules && yarn cache clean", "format": "prettier -w .", "format:check": "prettier -c .", - "lint": "FORCE_COLOR=1 turbo run lint", + "lint": "yarn build && eslint .", "publish": "yarn build && changeset publish", "test": "FORCE_COLOR=1 turbo run test", "test:setup": "./dev/up", @@ -25,11 +26,21 @@ "@changesets/cli": "^2.27.9" }, "devDependencies": { + "@eslint/compat": "^1.2.0", + "@eslint/js": "^9.12.0", "@ianvs/prettier-plugin-sort-imports": "^4.3.1", + "@types/eslint__js": "^8.42.3", + "@types/node": "^20.16.11", + "eslint": "^9.12.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-prettier": "^5.2.1", + "globals": "^15.11.0", "prettier": "^3.3.3", "prettier-plugin-packagejson": "^2.5.3", "rimraf": "^6.0.1", - "turbo": "^2.1.3" + "turbo": "^2.1.3", + "typescript": "^5.6.3", + "typescript-eslint": "^8.9.0" }, "packageManager": "yarn@4.5.0", "engines": { diff --git a/sdks/js-sdk/.eslintrc.cjs b/sdks/js-sdk/.eslintrc.cjs deleted file mode 100644 index afc7f8b0e..000000000 --- a/sdks/js-sdk/.eslintrc.cjs +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", - extends: [ - "eslint:recommended", - "standard", - "prettier", - "plugin:@typescript-eslint/recommended", - "eslint-config-prettier", - "plugin:jsdoc/recommended", - ], - parserOptions: { - sourceType: "module", - warnOnUnsupportedTypeScriptVersion: false, - project: "tsconfig.json", - }, - rules: { - "@typescript-eslint/consistent-type-exports": [ - "error", - { - fixMixedExportsWithInlineTypeSpecifier: false, - }, - ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { - argsIgnorePattern: "^_", - destructuredArrayIgnorePattern: "^_", - ignoreRestSiblings: true, - varsIgnorePattern: "^_", - }, - ], - "prettier/prettier": "error", - "jsdoc/require-jsdoc": "off", - "jsdoc/require-description": "off", - "jsdoc/require-param": "off", - "jsdoc/require-param-type": "off", - "jsdoc/require-returns": "off", - // this is necessary to ensure that the crypto library is available - // in node and the browser - "no-restricted-syntax": [ - "error", - { - selector: "ImportDeclaration[source.value=/^(node:)?crypto$/]", - message: - "Do not import directly from `crypto`, use `src/crypto/crypto` instead.", - }, - { - selector: "ImportDeclaration[source.value=/^\\.\\./]", - message: - "Relative parent imports are not allowed, use path aliases instead.", - }, - ], - }, - plugins: ["@typescript-eslint", "prettier", "jsdoc"], -}; diff --git a/sdks/js-sdk/bench/index.ts b/sdks/js-sdk/bench/index.ts index d0de643b1..d1ed7c01a 100644 --- a/sdks/js-sdk/bench/index.ts +++ b/sdks/js-sdk/bench/index.ts @@ -6,4 +6,5 @@ const main = async () => { await decodeSuite(); }; +// eslint-disable-next-line @typescript-eslint/no-floating-promises main(); diff --git a/sdks/js-sdk/package.json b/sdks/js-sdk/package.json index b838414c5..9d1fc8562 100644 --- a/sdks/js-sdk/package.json +++ b/sdks/js-sdk/package.json @@ -72,7 +72,6 @@ "clean:deps": "rimraf node_modules", "clean:dist": "rimraf dist", "clean:docs": "rimraf docs", - "lint": "eslint . --ignore-path ../../.gitignore", "package": "yarn pack", "test": "yarn test:node && yarn test:browser", "test:browser": "vitest run --environment happy-dom", @@ -117,20 +116,9 @@ "@types/callback-to-async-iterator": "^1.1.7", "@types/elliptic": "^6.4.18", "@types/node": "^20.16.11", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", "@vitest/coverage-v8": "^2.1.3", "@xmtp/rollup-plugin-resolve-extensions": "1.0.1", "benny": "^3.7.1", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.7.0", - "eslint-plugin-n": "^17.9.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-promise": "^6.4.0", "ethers": "^5.7.2", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", diff --git a/sdks/js-sdk/src/ApiClient.ts b/sdks/js-sdk/src/ApiClient.ts index 9b59580ab..16b5aa53f 100644 --- a/sdks/js-sdk/src/ApiClient.ts +++ b/sdks/js-sdk/src/ApiClient.ts @@ -117,6 +117,7 @@ const isAbortError = (err?: Error): boolean => { }; const isAuthError = (err?: GrpcError | Error): boolean => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison if (err && "code" in err && err.code === ERR_CODE_UNAUTHENTICATED) { return true; } @@ -189,6 +190,7 @@ export default class HttpApiClient implements ApiClient { ): ReturnType { try { return await retry( + // eslint-disable-next-line @typescript-eslint/unbound-method MessageApi.Query, [ req, @@ -203,6 +205,7 @@ export default class HttpApiClient implements ApiClient { ); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (e: any) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument throw GrpcError.fromObject(e); } } @@ -212,6 +215,7 @@ export default class HttpApiClient implements ApiClient { req: messageApi.BatchQueryRequest, ): ReturnType { return retry( + // eslint-disable-next-line @typescript-eslint/unbound-method MessageApi.BatchQuery, [ req, @@ -236,6 +240,7 @@ export default class HttpApiClient implements ApiClient { headers.set("Authorization", `Bearer ${authToken}`); try { return await retry( + // eslint-disable-next-line @typescript-eslint/unbound-method MessageApi.Publish, [ req, @@ -253,7 +258,9 @@ export default class HttpApiClient implements ApiClient { // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (e: any) { // Try at most 2X. If refreshing the auth token doesn't work the first time, it won't work the second time + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument if (isNotAuthError(e) || attemptNumber >= 1) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument throw GrpcError.fromObject(e); } await this.authCache?.refresh(); @@ -270,6 +277,7 @@ export default class HttpApiClient implements ApiClient { const abortController = new AbortController(); const doSubscribe = async () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition while (true) { const startTime = new Date().getTime(); try { @@ -290,6 +298,7 @@ export default class HttpApiClient implements ApiClient { onConnectionLost?.(); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (err: any) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument if (isAbortError(err) || abortController.signal.aborted) { return; } @@ -303,10 +312,13 @@ export default class HttpApiClient implements ApiClient { } } }; + // eslint-disable-next-line @typescript-eslint/no-floating-promises doSubscribe(); return { + // eslint-disable-next-line @typescript-eslint/require-await unsubscribe: async () => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition abortController?.abort(); }, }; @@ -369,6 +381,7 @@ export default class HttpApiClient implements ApiClient { const endTimeNs = toNanoString(endTime); let cursor: messageApi.Cursor | undefined; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition while (true) { const pagingInfo: messageApi.PagingInfo = { limit: pageSize, @@ -390,6 +403,7 @@ export default class HttpApiClient implements ApiClient { } if (result.pagingInfo?.cursor) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition cursor = result.pagingInfo?.cursor; } else { return; @@ -495,6 +509,7 @@ export default class HttpApiClient implements ApiClient { return this._subscribe( params, + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression (env) => callback(normalizeEnvelope(env)), onConnectionLost, ); diff --git a/sdks/js-sdk/src/Client.ts b/sdks/js-sdk/src/Client.ts index f5aa64a5a..7a12f9e95 100644 --- a/sdks/js-sdk/src/Client.ts +++ b/sdks/js-sdk/src/Client.ts @@ -135,7 +135,7 @@ export type ContentOptions = { /** * Allow configuring codecs for additional content types */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-arguments codecs: ContentCodec[]; /** @@ -267,7 +267,7 @@ export default class Client { private _backupClient: BackupClient; private readonly _conversations: Conversations; - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-arguments private _codecs: Map>; private _maxContentSize: number; @@ -314,7 +314,7 @@ export default class Client { * @param opts specify how to to connect to the network */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-arguments static async create[] = []>( wallet: Signer | WalletClient | null, opts?: Partial & { codecs?: ContentCodecs }, @@ -350,6 +350,7 @@ export default class Client { * impersonate a user on the XMTP network and read the user's * messages. */ + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters static async getKeys( wallet: Signer | WalletClient | null, opts?: Partial & { codecs?: U }, @@ -390,6 +391,7 @@ export default class Client { } // gracefully shut down the client + // eslint-disable-next-line @typescript-eslint/require-await async close(): Promise { return undefined; } @@ -530,6 +532,7 @@ export default class Client { // Else do the single address case const keyBundle = await this.getUserContact(peerAddress); return keyBundle !== undefined; + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { // Instead of throwing, a bad address should just return false. return false; @@ -571,6 +574,7 @@ export default class Client { } try { peerAddress = getAddress(peerAddress); // EIP55 normalize the address case. + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { return false; } @@ -584,6 +588,7 @@ export default class Client { throw new Error("Missing content topic"); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!bytes || !bytes.length) { throw new Error("Cannot publish empty message"); } @@ -608,9 +613,10 @@ export default class Client { * Register a codec to be automatically used for encoding/decoding * messages of the given Content Type */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-arguments registerCodec>( codec: Codec, + // eslint-disable-next-line @typescript-eslint/prefer-return-this-type ): Client> { const id = codec.contentType; const key = `${id.authorityId}/${id.typeId}`; @@ -622,7 +628,7 @@ export default class Client { * Find a matching codec for a given `ContentTypeId` from the * client's codec registry */ - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unnecessary-type-arguments codecFor(contentType: ContentTypeId): ContentCodec | undefined { const key = `${contentType.authorityId}/${contentType.typeId}`; const codec = this._codecs.get(key); @@ -649,6 +655,7 @@ export default class Client { const contentType = options?.contentType || ContentTypeText; const codec = this.codecFor(contentType); if (!codec) { + // eslint-disable-next-line @typescript-eslint/restrict-plus-operands throw new Error("unknown content type " + contentType); } const encoded = codec.encode(content, this); @@ -691,12 +698,15 @@ export default class Client { const codec = this.codecFor(contentType); if (codec) { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment content = codec.decode(encodedContent as EncodedContent, this); } else { + // eslint-disable-next-line @typescript-eslint/restrict-plus-operands error = new Error("unknown content type " + contentType); } return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment content, contentType, error, @@ -707,6 +717,7 @@ export default class Client { listInvitations(opts?: ListMessagesOptions): Promise { return this.listEnvelopes( buildUserInviteTopic(this.address), + // eslint-disable-next-line @typescript-eslint/require-await async (env) => env, opts, ); @@ -795,7 +806,9 @@ async function getUserContactFromNetwork( const keyBundle = decodeContactBundle(env.message); let address: string | undefined; try { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition address = await keyBundle?.walletSignatureAddress(); + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { address = undefined; } @@ -828,6 +841,7 @@ async function getUserContactsFromNetwork( return Promise.all( peerAddresses.map(async (address: string, index: number) => { const envelopes = topicToEnvelopes[index]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!envelopes) { return undefined; } @@ -835,6 +849,7 @@ async function getUserContactsFromNetwork( if (!env.message) continue; try { const keyBundle = decodeContactBundle(env.message); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const signingAddress = await keyBundle?.walletSignatureAddress(); if (address.toLowerCase() === signingAddress.toLowerCase()) { return keyBundle; diff --git a/sdks/js-sdk/src/Compression.ts b/sdks/js-sdk/src/Compression.ts index 782426bae..bc0c2472a 100644 --- a/sdks/js-sdk/src/Compression.ts +++ b/sdks/js-sdk/src/Compression.ts @@ -51,6 +51,7 @@ export function readStreamFromBytes( return new ReadableStream({ pull(controller) { if (position >= bytes.length) { + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression return controller.close(); } let end = position + chunkSize; diff --git a/sdks/js-sdk/src/ContactBundle.ts b/sdks/js-sdk/src/ContactBundle.ts index 3be2c30a3..a95197877 100644 --- a/sdks/js-sdk/src/ContactBundle.ts +++ b/sdks/js-sdk/src/ContactBundle.ts @@ -11,6 +11,7 @@ export function decodeContactBundle( let cb: contact.ContactBundle; try { cb = contact.ContactBundle.decode(bytes); + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { const pb = publicKey.PublicKeyBundle.decode(bytes); cb = { v1: { keyBundle: new PublicKeyBundle(pb) }, v2: undefined }; diff --git a/sdks/js-sdk/src/Contacts.ts b/sdks/js-sdk/src/Contacts.ts index b8524b3e9..05ab61c0b 100644 --- a/sdks/js-sdk/src/Contacts.ts +++ b/sdks/js-sdk/src/Contacts.ts @@ -1,6 +1,5 @@ import { createConsentMessage } from "@xmtp/consent-proof-signature"; import { messageApi, privatePreferences, type invitation } from "@xmtp/proto"; -// eslint-disable-next-line camelcase import type { DecryptResponse_Response } from "@xmtp/proto/ts/dist/types/keystore_api/v1/keystore.pb"; import { hashMessage, hexToBytes } from "viem"; import { ecdsaSignerKey } from "@/crypto/Signature"; @@ -140,7 +139,6 @@ export class ConsentList { const decryptedMessageEntries = Array.from(messageMap.keys()).map( (key, index) => - // eslint-disable-next-line camelcase [key, responses[index]] as [string, DecryptResponse_Response], ); @@ -199,6 +197,7 @@ export class ConsentList { await this.client.keystore.getPrivatePreferencesTopic(); return Stream.create( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument this.client, [contentTopic], async (envelope) => { @@ -236,6 +235,7 @@ export class ConsentList { const messageEntries = ( await this.client.listEnvelopes( contentTopic, + // eslint-disable-next-line @typescript-eslint/require-await async ({ message, timestampNs }: EnvelopeWithMessage) => [timestampNs, message] as [string | undefined, Uint8Array], { @@ -309,6 +309,7 @@ export class ConsentList { [valueKey]: [...values, entry.value], }, }; + // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter }, {} as PrivatePreferencesAction); // get envelopes to publish (there should only be one) @@ -319,7 +320,9 @@ export class ConsentList { await this.client.publishEnvelopes(envelopes); // persist newly published private preference to keystore + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.client.keystore.savePrivatePreferences( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion new Map([[envelopes[0].timestamp!.getTime().toString(), action]]), ); @@ -397,6 +400,7 @@ export class Contacts { return result; } }, + // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter [] as string[], ); if (validConsentProofAddresses.length) { diff --git a/sdks/js-sdk/src/Invitation.ts b/sdks/js-sdk/src/Invitation.ts index 2bbf67729..aae6b5c67 100644 --- a/sdks/js-sdk/src/Invitation.ts +++ b/sdks/js-sdk/src/Invitation.ts @@ -17,7 +17,7 @@ export type InvitationContext = { export class InvitationV1 implements invitation.InvitationV1 { topic: string; context: InvitationContext | undefined; - aes256GcmHkdfSha256: invitation.InvitationV1_Aes256gcmHkdfsha256; // eslint-disable-line camelcase + aes256GcmHkdfSha256: invitation.InvitationV1_Aes256gcmHkdfsha256; consentProof: invitation.ConsentProofPayload | undefined; constructor({ @@ -31,6 +31,7 @@ export class InvitationV1 implements invitation.InvitationV1 { } if ( !aes256GcmHkdfSha256 || + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition !aes256GcmHkdfSha256.keyMaterial || !aes256GcmHkdfSha256.keyMaterial.length ) { @@ -117,6 +118,7 @@ export class SealedInvitationV1 implements invitation.SealedInvitationV1 { private _invitation?: InvitationV1; constructor({ headerBytes, ciphertext }: invitation.SealedInvitationV1) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!headerBytes || !headerBytes.length) { throw new Error("Missing header bytes"); } @@ -204,6 +206,7 @@ export class SealedInvitation implements invitation.SealedInvitation { return new SealedInvitation(invitation.SealedInvitation.decode(bytes)); } + // eslint-disable-next-line @typescript-eslint/require-await static async fromEnvelope( env: messageApi.Envelope, ): Promise { diff --git a/sdks/js-sdk/src/Message.ts b/sdks/js-sdk/src/Message.ts index cd14d58a9..a9ed17a1d 100644 --- a/sdks/js-sdk/src/Message.ts +++ b/sdks/js-sdk/src/Message.ts @@ -58,7 +58,7 @@ class MessageBase { // Message header carries the sender and recipient keys used to protect message. // Message timestamp is set by the sender. export class MessageV1 extends MessageBase implements proto.MessageV1 { - header: proto.MessageHeaderV1; // eslint-disable-line camelcase + header: proto.MessageHeaderV1; // wallet address derived from the signature of the message recipient senderAddress: string | undefined; conversation = undefined; @@ -96,6 +96,7 @@ export class MessageV1 extends MessageBase implements proto.MessageV1 { // wallet address derived from the signature of the message recipient get recipientAddress(): string | undefined { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!this.header?.recipient?.identityKey) { return undefined; } @@ -125,6 +126,7 @@ export class MessageV1 extends MessageBase implements proto.MessageV1 { const message = proto.Message.decode(bytes); const [headerBytes] = headerBytesAndCiphertext(message); const header = proto.MessageHeaderV1.decode(headerBytes); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!header) { throw new Error("missing message header"); } @@ -389,6 +391,7 @@ function conversationReferenceToConversation( nsToDate(reference.createdNs), ); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (version === "v2") { return new ConversationV2( client, @@ -399,6 +402,7 @@ function conversationReferenceToConversation( reference.consentProofPayload, ); } + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new Error(`Unknown conversation version ${version}`); } diff --git a/sdks/js-sdk/src/Stream.ts b/sdks/js-sdk/src/Stream.ts index 5553ed648..20cf4b1d7 100644 --- a/sdks/js-sdk/src/Stream.ts +++ b/sdks/js-sdk/src/Stream.ts @@ -65,6 +65,7 @@ export default class Stream { if (contentTopicUpdater) { const topics = contentTopicUpdater(msg); if (topics) { + // eslint-disable-next-line @typescript-eslint/no-floating-promises this.resubscribeToTopics(topics); } } @@ -83,6 +84,7 @@ export default class Stream { }; } + // eslint-disable-next-line @typescript-eslint/require-await private async start(): Promise { if (!this.callback) { throw new Error("Missing callback for stream"); @@ -92,8 +94,10 @@ export default class Stream { { contentTopics: this.topics, }, + // eslint-disable-next-line @typescript-eslint/no-misused-promises async (env: messageApi.Envelope) => { if (!this.callback) return; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition await this?.callback(env); }, this.onConnectionLost, @@ -136,6 +140,7 @@ export default class Stream { } this.callback = undefined; this.resolvers.forEach((resolve) => + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression resolve({ value: undefined, done: true }), ); return { value: undefined, done: true }; @@ -164,6 +169,7 @@ export default class Stream { throw new Error("Missing callback for stream"); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (typeof this.subscriptionManager?.updateContentTopics === "function") { return this.subscriptionManager.updateContentTopics(topics); } @@ -174,8 +180,10 @@ export default class Stream { { contentTopics: this.topics, }, + // eslint-disable-next-line @typescript-eslint/no-misused-promises async (env: messageApi.Envelope) => { if (!this.callback) return; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition await this?.callback(env); }, this.onConnectionLost, diff --git a/sdks/js-sdk/src/conversations/Conversation.ts b/sdks/js-sdk/src/conversations/Conversation.ts index 6d7af2f15..48222adc9 100644 --- a/sdks/js-sdk/src/conversations/Conversation.ts +++ b/sdks/js-sdk/src/conversations/Conversation.ts @@ -299,6 +299,7 @@ export class ConversationV1 } else { topics = [topic]; } + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument const { payload } = await this.client.encodeContent(content, options); const msg = await this.createMessage( payload, @@ -774,6 +775,7 @@ export class ConversationV2 const signed = proto.SignedContent.decode(decrypted); if ( !signed.sender?.identityKey || + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition !signed.sender?.preKey || !signed.signature ) { @@ -785,6 +787,7 @@ export class ConversationV2 // Verify the signature const digest = await sha256(concat(msg.headerBytes, signed.payload)); if ( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition !new SignedPublicKey(signed.sender?.preKey).verify( new Signature(signed.signature), digest, @@ -819,6 +822,7 @@ export class ConversationV2 options?: SendOptions, ): Promise { const { payload, shouldPush } = await this.client.encodeContent( + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument content, options, ); @@ -902,6 +906,7 @@ async function validatePrekeys(signed: proto.SignedContent) { // this is required to chain the prekey-signed message to the identity key // and finally to the user's wallet address const senderPreKey = signed.sender?.preKey; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!senderPreKey || !senderPreKey.signature || !senderPreKey.keyBytes) { throw new Error("missing pre-key or pre-key signature"); } diff --git a/sdks/js-sdk/src/conversations/Conversations.ts b/sdks/js-sdk/src/conversations/Conversations.ts index 2440b467e..2403e4b20 100644 --- a/sdks/js-sdk/src/conversations/Conversations.ts +++ b/sdks/js-sdk/src/conversations/Conversations.ts @@ -314,6 +314,7 @@ export default class Conversations { // Temporarily create a convo to decrypt the message const convo = new ConversationV1( this.client, + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion peerAddress as string, msg.sent, ); @@ -368,7 +369,8 @@ export default class Conversations { this.client, msg.recipientAddress?.toLowerCase() === this.client.address.toLowerCase() - ? (msg.senderAddress as string) + ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + (msg.senderAddress as string) : (msg.recipientAddress as string), msg.sent, ); @@ -418,6 +420,7 @@ export default class Conversations { gen.return = async () => { // Returning the stream will cause the iteration to end inside the generator // The generator will then return on its own + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition await str?.return(); return { value: undefined, done: true }; }; @@ -432,6 +435,7 @@ export default class Conversations { const messages = await this.client.listEnvelopes( topic, (env) => { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!env.message) { throw new Error("empty envelope"); } @@ -459,6 +463,7 @@ export default class Conversations { this.client.publicKeyBundle, ); seenPeers.set(peerAddress, message.sent); + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { continue; } @@ -542,6 +547,7 @@ export default class Conversations { return newItemMatch; } return this.createV2Convo( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion contact as SignedPublicKeyBundle, context, consentProof, @@ -561,6 +567,7 @@ export default class Conversations { createdNs: dateToNs(timestamp), consentProof, }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!payload || !conversation) { throw new Error("Required field not returned from Keystore"); } diff --git a/sdks/js-sdk/src/crypto/PrivateKey.ts b/sdks/js-sdk/src/crypto/PrivateKey.ts index 95b6bcb58..5f292a6eb 100644 --- a/sdks/js-sdk/src/crypto/PrivateKey.ts +++ b/sdks/js-sdk/src/crypto/PrivateKey.ts @@ -27,7 +27,7 @@ export class SignedPrivateKey implements privateKey.SignedPrivateKey, KeySigner { createdNs: Long; // time the key was generated, ns since epoch - secp256k1: secp256k1; // eslint-disable-line camelcase + secp256k1: secp256k1; publicKey: SignedPublicKey; // caches corresponding PublicKey constructor(obj: privateKey.SignedPrivateKey) { @@ -182,7 +182,7 @@ export class SignedPrivateKey // LEGACY: PrivateKey represents a secp256k1 private key. export class PrivateKey implements privateKey.PrivateKey { timestamp: Long; - secp256k1: secp256k1; // eslint-disable-line camelcase + secp256k1: secp256k1; publicKey: PublicKey; // caches corresponding PublicKey constructor(obj: privateKey.PrivateKey) { diff --git a/sdks/js-sdk/src/crypto/PrivateKeyBundle.ts b/sdks/js-sdk/src/crypto/PrivateKeyBundle.ts index 4efd6ce43..d49223d71 100644 --- a/sdks/js-sdk/src/crypto/PrivateKeyBundle.ts +++ b/sdks/js-sdk/src/crypto/PrivateKeyBundle.ts @@ -20,6 +20,7 @@ export class PrivateKeyBundleV2 implements proto.PrivateKeyBundleV2 { throw new Error("missing identity key"); } this.identityKey = new SignedPrivateKey(bundle.identityKey); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition this.preKeys = (bundle.preKeys || []).map((k) => new SignedPrivateKey(k)); } @@ -79,12 +80,14 @@ export class PrivateKeyBundleV2 implements proto.PrivateKeyBundleV2 { myPreKey: SignedPublicKey, isRecipient: boolean, ): Promise { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!peer.identityKey || !peer.preKey) { throw new Error("invalid peer key bundle"); } if (!(await peer.identityKey.verifyKey(peer.preKey))) { throw new Error("peer preKey signature invalid"); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!this.identityKey) { throw new Error("missing identity key"); } @@ -157,6 +160,7 @@ export class PrivateKeyBundleV1 implements proto.PrivateKeyBundleV1 { throw new Error("missing identity key"); } this.identityKey = new PrivateKey(bundle.identityKey); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition this.preKeys = (bundle.preKeys || []).map((k) => new PrivateKey(k)); } @@ -226,12 +230,14 @@ export class PrivateKeyBundleV1 implements proto.PrivateKeyBundleV1 { myPreKey: PublicKey, isRecipient: boolean, ): Promise { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!peer.identityKey || !peer.preKey) { throw new Error("invalid peer key bundle"); } if (!(await peer.identityKey.verifyKey(peer.preKey))) { throw new Error("peer preKey signature invalid"); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!this.identityKey) { throw new Error("missing identity key"); } diff --git a/sdks/js-sdk/src/crypto/PublicKey.ts b/sdks/js-sdk/src/crypto/PublicKey.ts index 78d94bf67..aed402aea 100644 --- a/sdks/js-sdk/src/crypto/PublicKey.ts +++ b/sdks/js-sdk/src/crypto/PublicKey.ts @@ -32,9 +32,10 @@ export class UnsignedPublicKey implements publicKey.UnsignedPublicKey { // it can also be ms since epoch; use MS_NS_TIMESTAMP_THRESHOLD to distinguish // the two cases. createdNs: Long; - secp256k1Uncompressed: secp256k1Uncompressed; // eslint-disable-line camelcase + secp256k1Uncompressed: secp256k1Uncompressed; constructor(obj: publicKey.UnsignedPublicKey) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!obj?.secp256k1Uncompressed) { throw new Error("invalid public key"); } @@ -113,6 +114,7 @@ export class SignedPublicKey signature: Signature; constructor(obj: publicKey.SignedPublicKey) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!obj.keyBytes) { throw new Error("missing key bytes"); } diff --git a/sdks/js-sdk/src/crypto/Signature.ts b/sdks/js-sdk/src/crypto/Signature.ts index 48f44d237..185d726a7 100644 --- a/sdks/js-sdk/src/crypto/Signature.ts +++ b/sdks/js-sdk/src/crypto/Signature.ts @@ -41,6 +41,7 @@ export function ecdsaSignerKey( signature.bytes, signature.recovery, ); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition return bytes ? new UnsignedPublicKey({ secp256k1Uncompressed: { bytes }, @@ -51,9 +52,9 @@ export function ecdsaSignerKey( export default class Signature implements signature.Signature { // SECP256k1/SHA256 ECDSA signature - ecdsaCompact: ECDSACompactWithRecovery | undefined; // eslint-disable-line camelcase + ecdsaCompact: ECDSACompactWithRecovery | undefined; // SECP256k1/keccak256 ECDSA signature created with Signer.signMessage (see WalletSigner) - walletEcdsaCompact: ECDSACompactWithRecovery | undefined; // eslint-disable-line camelcase + walletEcdsaCompact: ECDSACompactWithRecovery | undefined; constructor(obj: Partial) { if (obj.ecdsaCompact) { @@ -99,6 +100,7 @@ export default class Signature implements signature.Signature { } else { throw new Error("invalid v1 signature"); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition return bytes ? new PublicKey({ secp256k1Uncompressed: { bytes }, diff --git a/sdks/js-sdk/src/crypto/SignedEciesCiphertext.ts b/sdks/js-sdk/src/crypto/SignedEciesCiphertext.ts index c195a87d8..20c45173e 100644 --- a/sdks/js-sdk/src/crypto/SignedEciesCiphertext.ts +++ b/sdks/js-sdk/src/crypto/SignedEciesCiphertext.ts @@ -37,6 +37,7 @@ export default class SignedEciesCiphertext ciphertext: ciphertext.SignedEciesCiphertext_Ecies; constructor({ eciesBytes, signature }: ciphertext.SignedEciesCiphertext) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!eciesBytes || !eciesBytes.length) { throw new Error("eciesBytes is empty"); } diff --git a/sdks/js-sdk/src/crypto/ecies.ts b/sdks/js-sdk/src/crypto/ecies.ts index 0df1ea45c..1e7d31c52 100644 --- a/sdks/js-sdk/src/crypto/ecies.ts +++ b/sdks/js-sdk/src/crypto/ecies.ts @@ -71,6 +71,7 @@ function getAes( op: "encrypt" | "decrypt", ): (iv: Buffer, key: Buffer, data: Buffer) => Promise { return function (iv: Buffer, key: Uint8Array, data: Uint8Array) { + // eslint-disable-next-line @typescript-eslint/no-misused-promises return new Promise(function (resolve) { const importAlgorithm = { name: "AES-CBC" }; const keyp = subtle.importKey("raw", key, importAlgorithm, false, [op]); @@ -211,14 +212,18 @@ export function derive( export async function encrypt( publicKeyTo: Buffer, msg: Buffer, + // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents opts?: { ephemPrivateKey?: Buffer; iv?: Buffer } | undefined, ) { opts = opts || {}; // Take IV from opts or generate randomly + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const iv = opts?.iv || randomBytes(16); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition let ephemPrivateKey = opts?.ephemPrivateKey || randomBytes(32); // There is a very unlikely possibility that it is not a valid key while (!isValidPrivateKey(ephemPrivateKey)) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (opts?.ephemPrivateKey) { throw new Error("ephemPrivateKey is not valid"); } diff --git a/sdks/js-sdk/src/crypto/selfEncryption.browser.ts b/sdks/js-sdk/src/crypto/selfEncryption.browser.ts index aecaeebd7..f35c41bde 100644 --- a/sdks/js-sdk/src/crypto/selfEncryption.browser.ts +++ b/sdks/js-sdk/src/crypto/selfEncryption.browser.ts @@ -3,11 +3,8 @@ ***********************************************************************************************/ import init, { - // eslint-disable-next-line camelcase generate_private_preferences_topic, - // eslint-disable-next-line camelcase user_preferences_decrypt, - // eslint-disable-next-line camelcase user_preferences_encrypt, } from "@xmtp/user-preferences-bindings-wasm/web"; import type { PrivateKey } from "./PrivateKey"; @@ -20,7 +17,7 @@ export async function userPreferencesEncrypt( await init(); const publicKey = identityKey.publicKey.secp256k1Uncompressed.bytes; const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return user_preferences_encrypt(publicKey, privateKey, payload); } @@ -32,7 +29,7 @@ export async function userPreferencesDecrypt( await init(); const publicKey = identityKey.publicKey.secp256k1Uncompressed.bytes; const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return user_preferences_decrypt(publicKey, privateKey, payload); } @@ -40,6 +37,6 @@ export async function generateUserPreferencesTopic(identityKey: PrivateKey) { // wait for WASM to be initialized await init(); const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return generate_private_preferences_topic(privateKey); } diff --git a/sdks/js-sdk/src/crypto/selfEncryption.bundler.ts b/sdks/js-sdk/src/crypto/selfEncryption.bundler.ts index 56a6ffc82..61e96420f 100644 --- a/sdks/js-sdk/src/crypto/selfEncryption.bundler.ts +++ b/sdks/js-sdk/src/crypto/selfEncryption.bundler.ts @@ -3,37 +3,37 @@ ***********************************************************************************************/ import { - // eslint-disable-next-line camelcase generate_private_preferences_topic, - // eslint-disable-next-line camelcase user_preferences_decrypt, - // eslint-disable-next-line camelcase user_preferences_encrypt, } from "@xmtp/user-preferences-bindings-wasm/bundler"; import type { PrivateKey } from "./PrivateKey"; +// eslint-disable-next-line @typescript-eslint/require-await export async function userPreferencesEncrypt( identityKey: PrivateKey, payload: Uint8Array, ) { const publicKey = identityKey.publicKey.secp256k1Uncompressed.bytes; const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return user_preferences_encrypt(publicKey, privateKey, payload); } +// eslint-disable-next-line @typescript-eslint/require-await export async function userPreferencesDecrypt( identityKey: PrivateKey, payload: Uint8Array, ) { const publicKey = identityKey.publicKey.secp256k1Uncompressed.bytes; const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return user_preferences_decrypt(publicKey, privateKey, payload); } +// eslint-disable-next-line @typescript-eslint/require-await export async function generateUserPreferencesTopic(identityKey: PrivateKey) { const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return generate_private_preferences_topic(privateKey); } diff --git a/sdks/js-sdk/src/crypto/selfEncryption.ts b/sdks/js-sdk/src/crypto/selfEncryption.ts index d37b3acbf..531ac463d 100644 --- a/sdks/js-sdk/src/crypto/selfEncryption.ts +++ b/sdks/js-sdk/src/crypto/selfEncryption.ts @@ -1,35 +1,35 @@ import { - // eslint-disable-next-line camelcase generate_private_preferences_topic, - // eslint-disable-next-line camelcase user_preferences_decrypt, - // eslint-disable-next-line camelcase user_preferences_encrypt, } from "@xmtp/user-preferences-bindings-wasm"; import type { PrivateKey } from "@/crypto/PrivateKey"; +// eslint-disable-next-line @typescript-eslint/require-await export async function userPreferencesEncrypt( identityKey: PrivateKey, payload: Uint8Array, ) { const publicKey = identityKey.publicKey.secp256k1Uncompressed.bytes; const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return user_preferences_encrypt(publicKey, privateKey, payload); } +// eslint-disable-next-line @typescript-eslint/require-await export async function userPreferencesDecrypt( identityKey: PrivateKey, payload: Uint8Array, ) { const publicKey = identityKey.publicKey.secp256k1Uncompressed.bytes; const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return user_preferences_decrypt(publicKey, privateKey, payload); } +// eslint-disable-next-line @typescript-eslint/require-await export async function generateUserPreferencesTopic(identityKey: PrivateKey) { const privateKey = identityKey.secp256k1.bytes; - // eslint-disable-next-line camelcase + return generate_private_preferences_topic(privateKey); } diff --git a/sdks/js-sdk/src/crypto/utils.ts b/sdks/js-sdk/src/crypto/utils.ts index 93bc5c0a3..aeeab071a 100644 --- a/sdks/js-sdk/src/crypto/utils.ts +++ b/sdks/js-sdk/src/crypto/utils.ts @@ -30,6 +30,7 @@ export function equalBytes(b1: Uint8Array, b2: Uint8Array): boolean { * Compute the Ethereum address from uncompressed PublicKey bytes */ export function computeAddress(bytes: Uint8Array) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion const publicKey = viemBytesToHex(bytes.slice(1)) as Hex; const hash = keccak256(publicKey); const address = hash.substring(hash.length - 40); diff --git a/sdks/js-sdk/src/keystore/InMemoryKeystore.ts b/sdks/js-sdk/src/keystore/InMemoryKeystore.ts index 155529d18..71d934115 100644 --- a/sdks/js-sdk/src/keystore/InMemoryKeystore.ts +++ b/sdks/js-sdk/src/keystore/InMemoryKeystore.ts @@ -239,6 +239,7 @@ export default class InMemoryKeystore implements KeystoreInterface { async (req) => { const { payload } = req; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!payload) { throw new KeystoreError( ErrorCode.ERROR_CODE_INVALID_INPUT, @@ -269,6 +270,7 @@ export default class InMemoryKeystore implements KeystoreInterface { async (req) => { const { payload } = req; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!payload) { throw new KeystoreError( ErrorCode.ERROR_CODE_INVALID_INPUT, @@ -415,6 +417,7 @@ export default class InMemoryKeystore implements KeystoreInterface { const sortedAddresses = [myAddress, theirAddress].sort(); const msgString = + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition (req.context?.conversationId || "") + sortedAddresses.join(); const msgBytes = new TextEncoder().encode(msgString); @@ -485,6 +488,7 @@ export default class InMemoryKeystore implements KeystoreInterface { Number.isInteger(prekeyIndex) ) { key = this.v1Keys.preKeys[prekeyIndex]; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!key) { throw new KeystoreError( ErrorCode.ERROR_CODE_NO_MATCHING_PREKEY, @@ -516,6 +520,7 @@ export default class InMemoryKeystore implements KeystoreInterface { return {}; } + // eslint-disable-next-line @typescript-eslint/require-await async getV1Conversations(): Promise { const convos = this.v1Store.topics.map( this.topicDataToV1ConversationReference.bind(this), @@ -524,6 +529,7 @@ export default class InMemoryKeystore implements KeystoreInterface { return { conversations: convos }; } + // eslint-disable-next-line @typescript-eslint/require-await async getV2Conversations(): Promise { const convos = this.v2Store.topics.map((invite) => topicDataToV2ConversationReference(invite as TopicData), @@ -538,10 +544,12 @@ export default class InMemoryKeystore implements KeystoreInterface { }); } + // eslint-disable-next-line @typescript-eslint/require-await async getPublicKeyBundle(): Promise { return this.v1Keys.getPublicKeyBundle(); } + // eslint-disable-next-line @typescript-eslint/require-await async getPrivateKeyBundle(): Promise { return this.v1Keys; } @@ -576,6 +584,7 @@ export default class InMemoryKeystore implements KeystoreInterface { jobType, lastRunNs, }: keystore.SetRefeshJobRequest): Promise { + // eslint-disable-next-line @typescript-eslint/await-thenable const key = await this.buildJobStorageKey(jobType); await this.jobStatePersistence.setItem( key, @@ -699,8 +708,10 @@ export default class InMemoryKeystore implements KeystoreInterface { // encrypted message const messages = responses.reduce((result, response) => { return response.result?.encrypted - ? result.concat(response.result?.encrypted) + ? // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + result.concat(response.result?.encrypted) : result; + // eslint-disable-next-line @typescript-eslint/prefer-reduce-type-parameter }, [] as Uint8Array[]); const contentTopic = await this.getPrivatePreferencesTopic(); diff --git a/sdks/js-sdk/src/keystore/SnapKeystore.ts b/sdks/js-sdk/src/keystore/SnapKeystore.ts index 840947210..56b408760 100644 --- a/sdks/js-sdk/src/keystore/SnapKeystore.ts +++ b/sdks/js-sdk/src/keystore/SnapKeystore.ts @@ -22,12 +22,13 @@ export function SnapKeystore( for (const [method, rpc] of Object.entries( snapApiDefs, ) as SnapKeystoreApiEntries) { + // eslint-disable-next-line @typescript-eslint/require-await generatedMethods[method] = async (req?: SnapKeystoreApiRequestValues) => { if (!rpc.req) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return snapRPC(method, rpc, undefined, snapMeta, snapId) as any; } - // eslint-disable-next-line @typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument return snapRPC(method, rpc, req as any, snapMeta, snapId) as any; }; } @@ -35,6 +36,7 @@ export function SnapKeystore( return { ...generatedMethods, // Don't bother calling the keystore, since we already have the wallet address + // eslint-disable-next-line @typescript-eslint/require-await async getAccountAddress() { return walletAddress; }, diff --git a/sdks/js-sdk/src/keystore/conversationStores.ts b/sdks/js-sdk/src/keystore/conversationStores.ts index b82212f2b..9df42c23a 100644 --- a/sdks/js-sdk/src/keystore/conversationStores.ts +++ b/sdks/js-sdk/src/keystore/conversationStores.ts @@ -150,6 +150,7 @@ export class V1Store extends V2Store { return !!( topicData.topic && topicData.topic.length && + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition topicData.peerAddress?.length > 0 ); } diff --git a/sdks/js-sdk/src/keystore/persistence/BrowserStoragePersistence.ts b/sdks/js-sdk/src/keystore/persistence/BrowserStoragePersistence.ts index a52d835ad..cea6da240 100644 --- a/sdks/js-sdk/src/keystore/persistence/BrowserStoragePersistence.ts +++ b/sdks/js-sdk/src/keystore/persistence/BrowserStoragePersistence.ts @@ -13,6 +13,7 @@ export default class BrowserStoragePersistence implements Persistence { return new BrowserStoragePersistence(localStorage); } + // eslint-disable-next-line @typescript-eslint/require-await async getItem(key: string): Promise { const value = this.storage.getItem(key); if (value === null) { @@ -21,6 +22,7 @@ export default class BrowserStoragePersistence implements Persistence { return Uint8Array.from(Buffer.from(value, "binary")); } + // eslint-disable-next-line @typescript-eslint/require-await async setItem(key: string, value: Uint8Array): Promise { this.storage.setItem(key, Buffer.from(value).toString("binary")); } diff --git a/sdks/js-sdk/src/keystore/persistence/LocalStoragePonyfill.ts b/sdks/js-sdk/src/keystore/persistence/LocalStoragePonyfill.ts index 75f059d0a..3cb36448a 100644 --- a/sdks/js-sdk/src/keystore/persistence/LocalStoragePonyfill.ts +++ b/sdks/js-sdk/src/keystore/persistence/LocalStoragePonyfill.ts @@ -26,6 +26,7 @@ export default class LocalStoragePonyfill implements Storage { } key(index: number): string | null { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (index === undefined) { // This is the TypeError implemented in Chrome, Firefox throws "Storage.key: At least 1 // argument required, but only 0 passed". diff --git a/sdks/js-sdk/src/keystore/privatePreferencesStore.ts b/sdks/js-sdk/src/keystore/privatePreferencesStore.ts index 389564453..a574653e2 100644 --- a/sdks/js-sdk/src/keystore/privatePreferencesStore.ts +++ b/sdks/js-sdk/src/keystore/privatePreferencesStore.ts @@ -100,6 +100,7 @@ export class PrivatePreferencesStore { for (let i = 0; i < keys.length; i++) { // ignore duplicate actions if (!this.actionsMap.has(keys[i])) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.actionsMap.set(keys[i], actionsMap.get(keys[i])!); // indicate new value added isDirty = true; @@ -117,6 +118,7 @@ export class PrivatePreferencesStore { const sortedActions = new Map( [...this.actionsMap.entries()].sort( (a, b) => + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion fromNanoString(a[0])!.getTime() - fromNanoString(b[0])!.getTime(), ), ); diff --git a/sdks/js-sdk/src/keystore/providers/NetworkKeyManager.ts b/sdks/js-sdk/src/keystore/providers/NetworkKeyManager.ts index a84f72db2..25c724c79 100644 --- a/sdks/js-sdk/src/keystore/providers/NetworkKeyManager.ts +++ b/sdks/js-sdk/src/keystore/providers/NetworkKeyManager.ts @@ -100,6 +100,7 @@ export default class NetworkKeyManager { signature: sig as Hex, }); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/no-misused-promises if (!valid) { throw new Error("invalid signature"); } @@ -121,6 +122,7 @@ export default class NetworkKeyManager { ): Promise<[PrivateKeyBundleV1, boolean]> { const [eBundle, needsUpdate] = getEncryptedBundle(bytes); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!eBundle.walletPreKey) { throw new Error("missing wallet pre-key"); } @@ -148,6 +150,7 @@ export default class NetworkKeyManager { const decrypted = await decrypt(ciphertext, secret); const [bundle, needsUpdate2] = getPrivateBundle(decrypted); return [bundle, needsUpdate || needsUpdate2]; + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { // Assert that the secret is length 65 (encoded signature + recovery byte) if (secret.length !== 65) { @@ -183,6 +186,7 @@ function getEncryptedBundle( if (b.v1) { return [b.v1, false]; } + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { return [proto.EncryptedPrivateKeyBundleV1.decode(bytes), true]; } @@ -199,6 +203,7 @@ function getPrivateBundle(bytes: Uint8Array): [PrivateKeyBundleV1, boolean] { throw new Error("V2 bundles not supported yet"); } return [b, false]; + // eslint-disable-next-line @typescript-eslint/no-unused-vars } catch (e) { // Adds a default fallback for older versions of the proto const b = proto.PrivateKeyBundleV1.decode(bytes); diff --git a/sdks/js-sdk/src/keystore/snapHelpers.ts b/sdks/js-sdk/src/keystore/snapHelpers.ts index f758dcf3a..6d40826c7 100644 --- a/sdks/js-sdk/src/keystore/snapHelpers.ts +++ b/sdks/js-sdk/src/keystore/snapHelpers.ts @@ -69,6 +69,7 @@ export async function snapRequest( if (typeof req === "string") { params.req = req; } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition const response = await getEthereum()?.request({ method: "wallet_invokeSnap", params: { @@ -103,6 +104,7 @@ export type GetSnapsResponse = Record; export async function hasMetamaskWithSnaps() { const ethereum = getEthereum(); // Naive way of detecting snaps support + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (ethereum?.isMetaMask) { try { await ethereum.request({ @@ -114,6 +116,7 @@ export async function hasMetamaskWithSnaps() { } } if ( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition typeof ethereum?.detected !== "undefined" && Array.isArray(ethereum.detected) ) { @@ -124,6 +127,7 @@ export async function hasMetamaskWithSnaps() { method: "wallet_getSnaps", }); // enforces MetaMask as provider + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition ethereum?.setProvider?.(provider); return true; @@ -134,6 +138,7 @@ export async function hasMetamaskWithSnaps() { } if ( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition typeof ethereum?.providers !== "undefined" && Array.isArray(ethereum.providers) ) { @@ -157,6 +162,7 @@ export async function hasMetamaskWithSnaps() { } export async function getSnaps() { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition return await getEthereum()?.request({ method: "wallet_getSnaps", }); @@ -187,8 +193,10 @@ export async function getSnap( export async function connectSnap( snapId: string, + // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents params: Record<"version" | string, unknown> = {}, ) { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition await getEthereum()?.request({ method: "wallet_requestSnaps", params: { diff --git a/sdks/js-sdk/src/keystore/utils.ts b/sdks/js-sdk/src/keystore/utils.ts index 093bc7441..2e6f72bd9 100644 --- a/sdks/js-sdk/src/keystore/utils.ts +++ b/sdks/js-sdk/src/keystore/utils.ts @@ -86,6 +86,7 @@ export const validateObject = ( for (const field of arrayFields) { const val = obj[field]; // @ts-expect-error does not know it's an array + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!val || !val?.length) { throw new KeystoreError( keystore.ErrorCode.ERROR_CODE_INVALID_INPUT, diff --git a/sdks/js-sdk/src/utils/async.ts b/sdks/js-sdk/src/utils/async.ts index 7a867fed7..0ffbb5403 100644 --- a/sdks/js-sdk/src/utils/async.ts +++ b/sdks/js-sdk/src/utils/async.ts @@ -14,6 +14,7 @@ export const promiseWithTimeout = ( let timeoutHandle: NodeJS.Timeout; const timeoutPromise = new Promise((_resolve, reject) => { timeoutHandle = setTimeout( + // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression () => reject(new Error(failureMessage)), timeoutMs, ); @@ -39,7 +40,9 @@ export async function retry any>( ): Promise>> { const currRetry = typeof retryCount === "number" ? retryCount : 1; try { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const result = await fn(...args); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return result; } catch (e) { if (!isRetryableFn(e as Error) || currRetry > maxRetries) { diff --git a/sdks/js-sdk/src/utils/keystore.ts b/sdks/js-sdk/src/utils/keystore.ts index a90c0766e..f302221ed 100644 --- a/sdks/js-sdk/src/utils/keystore.ts +++ b/sdks/js-sdk/src/utils/keystore.ts @@ -34,6 +34,7 @@ export const getResultOrThrow = < throw new Error("Missing ciphertext"); } + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if ("decrypted" in response.result && !response.result.decrypted) { throw new Error("Missing decrypted result"); } diff --git a/sdks/js-sdk/src/utils/topic.ts b/sdks/js-sdk/src/utils/topic.ts index 5fe55ff81..bc522fb30 100644 --- a/sdks/js-sdk/src/utils/topic.ts +++ b/sdks/js-sdk/src/utils/topic.ts @@ -42,7 +42,6 @@ export const buildUserPrivatePreferencesTopic = (identifier: string) => // validate that a topic only contains ASCII characters 33-127 export const isValidTopic = (topic: string): boolean => { - // eslint-disable-next-line no-control-regex const regex = /^[\x21-\x7F]+$/; const index = topic.indexOf("0/"); if (index !== -1) { diff --git a/sdks/js-sdk/src/utils/viem.ts b/sdks/js-sdk/src/utils/viem.ts index a931d0a73..19132413c 100644 --- a/sdks/js-sdk/src/utils/viem.ts +++ b/sdks/js-sdk/src/utils/viem.ts @@ -25,11 +25,13 @@ export function convertWalletClientToSigner( walletClient: WalletClient, ): Signer { const { account } = walletClient; + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition if (!account || !account.address) { throw new Error("WalletClient is not configured"); } return { + // eslint-disable-next-line @typescript-eslint/require-await getAddress: async () => account.address, signMessage: async (message: string | Uint8Array) => walletClient.signMessage({ diff --git a/sdks/js-sdk/test/Contacts.test.ts b/sdks/js-sdk/test/Contacts.test.ts index 0b10a64c6..4c50afa73 100644 --- a/sdks/js-sdk/test/Contacts.test.ts +++ b/sdks/js-sdk/test/Contacts.test.ts @@ -186,7 +186,6 @@ describe("Contacts", () => { await aliceClient.conversations.newConversation(bob.address); let numActions = 0; - // eslint-disable-next-line no-unreachable-loop for await (const action of aliceStream) { numActions++; expect(action.allowGroup).toBeUndefined(); diff --git a/sdks/js-sdk/test/ContentTypeTestKey.ts b/sdks/js-sdk/test/ContentTypeTestKey.ts index a805f4316..c650c2e67 100644 --- a/sdks/js-sdk/test/ContentTypeTestKey.ts +++ b/sdks/js-sdk/test/ContentTypeTestKey.ts @@ -30,7 +30,6 @@ export class TestKeyCodec implements ContentCodec { return new PublicKey(publicKey.PublicKey.decode(content.content)); } - // eslint-disable-next-line @typescript-eslint/no-unused-vars fallback(content: PublicKey): string | undefined { return "publickey bundle"; } diff --git a/sdks/js-sdk/test/conversations/Conversations.test.ts b/sdks/js-sdk/test/conversations/Conversations.test.ts index bd5070697..72aa7641d 100644 --- a/sdks/js-sdk/test/conversations/Conversations.test.ts +++ b/sdks/js-sdk/test/conversations/Conversations.test.ts @@ -294,7 +294,6 @@ describe.sequential("Conversation streams", () => { await conversation.send("hi bob"); let numConversations = 0; - // eslint-disable-next-line no-unreachable-loop for await (const conversation of stream) { numConversations++; expect(conversation.peerAddress).toBe(bob.address); diff --git a/sdks/js-sdk/test/helpers.ts b/sdks/js-sdk/test/helpers.ts index 9b435e8c4..cb16d0199 100644 --- a/sdks/js-sdk/test/helpers.ts +++ b/sdks/js-sdk/test/helpers.ts @@ -134,7 +134,6 @@ export function wrapAsLedgerWallet(ethersWallet: Wallet): Signer { // A helper to replace a full Client in testing custom content types, // extracting just the codec registry aspect of the client. export class CodecRegistry { - // eslint-disable-next-line @typescript-eslint/no-explicit-any private _codecs: Map>; constructor() { @@ -142,14 +141,12 @@ export class CodecRegistry { this.registerCodec(new TextCodec()); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any registerCodec(codec: ContentCodec): void { const id = codec.contentType; const key = `${id.authorityId}/${id.typeId}`; this._codecs.set(key, codec); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any codecFor(contentType: ContentTypeId): ContentCodec | undefined { const key = `${contentType.authorityId}/${contentType.typeId}`; return this._codecs.get(key); diff --git a/sdks/js-sdk/tsconfig.json b/sdks/js-sdk/tsconfig.json index b77ca2a45..d6305efbc 100644 --- a/sdks/js-sdk/tsconfig.json +++ b/sdks/js-sdk/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "downlevelIteration": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "lib": ["dom"], @@ -19,11 +18,9 @@ "types": ["vitest/globals"] }, "include": [ - "src/**/*", - "bench/**/*", - "test/**/*", - ".eslintrc.cjs", - "commitlint.config.cjs", + "src", + "bench", + "test", "rollup.config.bench.js", "rollup.config.js", "vitest.config.ts" diff --git a/sdks/node-sdk/.eslintrc.cjs b/sdks/node-sdk/.eslintrc.cjs deleted file mode 100644 index da5b16990..000000000 --- a/sdks/node-sdk/.eslintrc.cjs +++ /dev/null @@ -1,44 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", - extends: [ - "eslint:recommended", - "standard", - "prettier", - "plugin:@typescript-eslint/recommended", - "eslint-config-prettier", - ], - parserOptions: { - sourceType: "module", - warnOnUnsupportedTypeScriptVersion: false, - project: "tsconfig.json", - }, - rules: { - "@typescript-eslint/consistent-type-exports": [ - "error", - { - fixMixedExportsWithInlineTypeSpecifier: false, - }, - ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { - argsIgnorePattern: "^_", - destructuredArrayIgnorePattern: "^_", - ignoreRestSiblings: true, - varsIgnorePattern: "^_", - }, - ], - "prettier/prettier": "error", - "no-restricted-syntax": [ - "error", - { - selector: "ImportDeclaration[source.value=/^\\.\\./]", - message: - "Relative parent imports are not allowed, use path aliases instead.", - }, - ], - }, - plugins: ["@typescript-eslint", "prettier"], -}; diff --git a/sdks/node-sdk/package.json b/sdks/node-sdk/package.json index f585eff1c..0aae5a4da 100644 --- a/sdks/node-sdk/package.json +++ b/sdks/node-sdk/package.json @@ -43,7 +43,6 @@ "clean:deps": "rimraf node_modules", "clean:dist": "rimraf dist", "clean:tests": "rimraf test/*.db3* ||:", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "vitest run", "test:cov": "vitest run --coverage", "typecheck": "tsc" @@ -58,18 +57,8 @@ "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-typescript": "^12.1.0", "@types/node": "^20.16.11", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", "@vitest/coverage-v8": "^2.1.3", "@xmtp/xmtp-js": "workspace:^", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^17.9.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-promise": "^6.4.0", "fast-glob": "^3.3.2", "rimraf": "^6.0.1", "rollup": "^4.24.0", diff --git a/sdks/node-sdk/src/Client.ts b/sdks/node-sdk/src/Client.ts index 9699be569..3a3065e98 100644 --- a/sdks/node-sdk/src/Client.ts +++ b/sdks/node-sdk/src/Client.ts @@ -62,7 +62,7 @@ export type ContentOptions = { /** * Allow configuring codecs for additional content types */ - codecs?: ContentCodec[]; + codecs?: ContentCodec[]; }; export type OtherOptions = { @@ -84,9 +84,9 @@ export type ClientOptions = NetworkOptions & export class Client { #innerClient: NapiClient; #conversations: Conversations; - #codecs: Map>; + #codecs: Map; - constructor(client: NapiClient, codecs: ContentCodec[]) { + constructor(client: NapiClient, codecs: ContentCodec[]) { this.#innerClient = client; this.#conversations = new Conversations(this, client.conversations()); this.#codecs = new Map( @@ -139,7 +139,7 @@ export class Client { try { const signatureText = await this.#innerClient.createInboxSignatureText(); return signatureText; - } catch (e) { + } catch { return null; } } @@ -149,7 +149,7 @@ export class Client { } addSignature(signatureBytes: Uint8Array) { - this.#innerClient.addSignature( + void this.#innerClient.addSignature( NapiSignatureRequestType.CreateInbox, signatureBytes, ); @@ -194,6 +194,7 @@ export class Client { throw new Error("Error decoding group membership change"); } + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return codec.decode(message.content as EncodedContent, this); } diff --git a/sdks/node-sdk/src/Conversation.ts b/sdks/node-sdk/src/Conversation.ts index acfc47d2f..8f92fff52 100644 --- a/sdks/node-sdk/src/Conversation.ts +++ b/sdks/node-sdk/src/Conversation.ts @@ -166,7 +166,8 @@ export class Conversation { const encodedContent = typeof content === "string" ? this.#client.encodeContent(content, contentType ?? ContentTypeText) - : this.#client.encodeContent(content, contentType!); + : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.#client.encodeContent(content, contentType!); return this.#group.sendOptimistic(encodedContent); } @@ -181,7 +182,8 @@ export class Conversation { const encodedContent = typeof content === "string" ? this.#client.encodeContent(content, contentType ?? ContentTypeText) - : this.#client.encodeContent(content, contentType!); + : // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.#client.encodeContent(content, contentType!); return this.#group.send(encodedContent); } diff --git a/sdks/node-sdk/src/DecodedMessage.ts b/sdks/node-sdk/src/DecodedMessage.ts index dd0e8744a..ea5307477 100644 --- a/sdks/node-sdk/src/DecodedMessage.ts +++ b/sdks/node-sdk/src/DecodedMessage.ts @@ -56,10 +56,12 @@ export class DecodedMessage { // no default } + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.contentType = new ContentTypeId(message.content.type!); this.parameters = message.content.parameters; this.fallback = message.content.fallback; this.compression = message.content.compression; + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment this.content = this.#client.decodeContent(message, this.contentType); } } diff --git a/sdks/node-sdk/test/Client.test.ts b/sdks/node-sdk/test/Client.test.ts index 9a7be644d..9736dded9 100644 --- a/sdks/node-sdk/test/Client.test.ts +++ b/sdks/node-sdk/test/Client.test.ts @@ -11,7 +11,7 @@ describe("Client", () => { const client = await createClient(user); expect(client.accountAddress).toBe(user.account.address); expect(client.isRegistered).toBe(false); - expect(client.signatureText).not.toBe(null); + expect(await client.signatureText()).not.toBe(null); expect(client.inboxId).toBeDefined(); expect(client.installationId).toBeDefined(); }); diff --git a/sdks/node-sdk/test/helpers.ts b/sdks/node-sdk/test/helpers.ts index 57f087443..592500d4f 100644 --- a/sdks/node-sdk/test/helpers.ts +++ b/sdks/node-sdk/test/helpers.ts @@ -87,6 +87,7 @@ export class TestCodec implements ContentCodec> { decode(content: EncodedContent) { const decoded = new TextDecoder().decode(content.content); + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return JSON.parse(decoded); } diff --git a/sdks/node-sdk/tsconfig.json b/sdks/node-sdk/tsconfig.json index ca8e9d41d..dbf6b7f88 100644 --- a/sdks/node-sdk/tsconfig.json +++ b/sdks/node-sdk/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "downlevelIteration": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "module": "ESNext", @@ -19,7 +18,6 @@ "include": [ "src/**/*", "test/**/*", - ".eslintrc.cjs", "rollup.config.js", "vitest.config.ts", "vitest.setup.ts" diff --git a/shared/encryption/.eslintrc.cjs b/shared/encryption/.eslintrc.cjs deleted file mode 100644 index afc7f8b0e..000000000 --- a/shared/encryption/.eslintrc.cjs +++ /dev/null @@ -1,57 +0,0 @@ -module.exports = { - parser: "@typescript-eslint/parser", - extends: [ - "eslint:recommended", - "standard", - "prettier", - "plugin:@typescript-eslint/recommended", - "eslint-config-prettier", - "plugin:jsdoc/recommended", - ], - parserOptions: { - sourceType: "module", - warnOnUnsupportedTypeScriptVersion: false, - project: "tsconfig.json", - }, - rules: { - "@typescript-eslint/consistent-type-exports": [ - "error", - { - fixMixedExportsWithInlineTypeSpecifier: false, - }, - ], - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { - argsIgnorePattern: "^_", - destructuredArrayIgnorePattern: "^_", - ignoreRestSiblings: true, - varsIgnorePattern: "^_", - }, - ], - "prettier/prettier": "error", - "jsdoc/require-jsdoc": "off", - "jsdoc/require-description": "off", - "jsdoc/require-param": "off", - "jsdoc/require-param-type": "off", - "jsdoc/require-returns": "off", - // this is necessary to ensure that the crypto library is available - // in node and the browser - "no-restricted-syntax": [ - "error", - { - selector: "ImportDeclaration[source.value=/^(node:)?crypto$/]", - message: - "Do not import directly from `crypto`, use `src/crypto/crypto` instead.", - }, - { - selector: "ImportDeclaration[source.value=/^\\.\\./]", - message: - "Relative parent imports are not allowed, use path aliases instead.", - }, - ], - }, - plugins: ["@typescript-eslint", "prettier", "jsdoc"], -}; diff --git a/shared/encryption/package.json b/shared/encryption/package.json index ac00014b5..cec0deea4 100644 --- a/shared/encryption/package.json +++ b/shared/encryption/package.json @@ -34,7 +34,6 @@ "clean": "rimraf .turbo && yarn clean:dist && yarn clean:deps", "clean:deps": "rimraf node_modules", "clean:dist": "rimraf dist", - "lint": "eslint . --ignore-path ../../.gitignore", "test": "yarn test:node && yarn test:browser", "test:browser": "vitest run --environment happy-dom", "test:cov": "vitest run --coverage", @@ -60,19 +59,8 @@ "@rollup/plugin-terser": "^0.4.4", "@rollup/plugin-typescript": "^12.1.0", "@types/node": "^20.16.11", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", "@vitest/coverage-v8": "^2.1.3", "@xmtp/rollup-plugin-resolve-extensions": "1.0.1", - "eslint": "^8.57.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-standard": "^17.1.0", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsdoc": "^48.7.0", - "eslint-plugin-n": "^17.9.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-promise": "^6.4.0", "happy-dom": "^15.7.4", "rimraf": "^6.0.1", "rollup": "^4.24.0", diff --git a/shared/encryption/src/Ciphertext.ts b/shared/encryption/src/Ciphertext.ts index 293961c8a..02fc66fdd 100644 --- a/shared/encryption/src/Ciphertext.ts +++ b/shared/encryption/src/Ciphertext.ts @@ -9,7 +9,7 @@ export const AESGCMTagLength = 16; // property tagLength // Ciphertext packages the encrypted ciphertext with the salt and nonce used to produce it. // salt and nonce are not secret, and should be transmitted/stored along with the encrypted ciphertext. export default class Ciphertext implements ciphertext.Ciphertext { - aes256GcmHkdfSha256: ciphertext.Ciphertext_Aes256gcmHkdfsha256 | undefined; // eslint-disable-line camelcase + aes256GcmHkdfSha256: ciphertext.Ciphertext_Aes256gcmHkdfsha256 | undefined; constructor(obj: ciphertext.Ciphertext) { if (!obj.aes256GcmHkdfSha256) { diff --git a/shared/encryption/src/crypto.ts b/shared/encryption/src/crypto.ts index 4a903cdea..9f6a7cc77 100644 --- a/shared/encryption/src/crypto.ts +++ b/shared/encryption/src/crypto.ts @@ -1,4 +1,3 @@ -// eslint-disable-next-line no-restricted-syntax import { webcrypto } from "node:crypto"; const crypto = webcrypto; diff --git a/shared/encryption/tsconfig.json b/shared/encryption/tsconfig.json index f62b35eea..92aed42ad 100644 --- a/shared/encryption/tsconfig.json +++ b/shared/encryption/tsconfig.json @@ -1,6 +1,5 @@ { "compilerOptions": { - "downlevelIteration": true, "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "lib": ["dom"], @@ -16,11 +15,5 @@ "target": "es2021", "types": ["vitest/globals"] }, - "include": [ - "src/**/*", - "test/**/*", - ".eslintrc.cjs", - "rollup.config.js", - "vitest.config.ts" - ] + "include": ["src/**/*", "test/**/*", "rollup.config.js", "vitest.config.ts"] } diff --git a/shared/eslint-config-custom/index.js b/shared/eslint-config-custom/index.js deleted file mode 100644 index 3626b566d..000000000 --- a/shared/eslint-config-custom/index.js +++ /dev/null @@ -1,89 +0,0 @@ -module.exports = { - env: { - browser: true, - es2021: true, - }, - extends: [ - "airbnb-base", - "airbnb-typescript/base", - "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "prettier", - ], - ignorePatterns: ["dist/**/*"], - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - }, - rules: { - "class-methods-use-this": "off", - "@typescript-eslint/naming-convention": [ - "error", - { - selector: ["variable"], - types: ["boolean"], - format: ["PascalCase"], - prefix: ["is", "should", "has", "can", "did", "will"], - }, - { - selector: "variable", - modifiers: ["destructured"], - format: null, - }, - ], - "@typescript-eslint/no-explicit-any": "warn", - "@typescript-eslint/no-unused-vars": "error", - "@typescript-eslint/consistent-type-imports": "error", - "@typescript-eslint/unbound-method": [ - "error", - { - ignoreStatic: true, - }, - ], - "import/prefer-default-export": "off", - "no-console": ["error", { allow: ["error"] }], - "no-void": ["error", { allowAsStatement: true }], - "no-restricted-syntax": [ - "warn", - { - selector: "ForInStatement", - message: - "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.", - }, - { - selector: "ForOfStatement", - message: - "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.", - }, - { - selector: "WithStatement", - message: - "`with` is disallowed in strict mode because it makes code impossible to predict and optimize.", - }, - ], - }, - overrides: [ - // allow devDependencies in configuration files - { - files: ["*.ts", "*.js", "*.cjs"], - rules: { - "import/no-extraneous-dependencies": [ - "error", - { - devDependencies: true, - optionalDependencies: false, - peerDependencies: false, - }, - ], - "@typescript-eslint/no-var-requires": "off", - }, - }, - // allow require in .cjs files - { - files: ["*.cjs"], - rules: { - "global-require": "off", - }, - }, - ], -}; diff --git a/shared/eslint-config-custom/package.json b/shared/eslint-config-custom/package.json deleted file mode 100644 index 1e6715359..000000000 --- a/shared/eslint-config-custom/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "eslint-config-custom", - "version": "0.0.0", - "private": true, - "license": "UNLICENSED", - "main": "index.js", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", - "eslint": "^8.57.0", - "eslint-config-airbnb-base": "^15.0.0", - "eslint-config-airbnb-typescript": "^18.0.0", - "eslint-config-prettier": "^9.1.0", - "eslint-config-standard-with-typescript": "^43.0.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-n": "^16.6.2", - "eslint-plugin-promise": "^6.1.1" - }, - "devDependencies": { - "typescript": "^5.6.3" - } -} diff --git a/shared/tsconfig/base.json b/shared/tsconfig/base.json index 3c9a87a7c..1a5aad0db 100644 --- a/shared/tsconfig/base.json +++ b/shared/tsconfig/base.json @@ -7,6 +7,7 @@ "forceConsistentCasingInFileNames": true, "isolatedModules": true, "moduleResolution": "node", + "noEmit": true, "resolveJsonModule": true, "skipLibCheck": true, "strict": true diff --git a/shared/tsconfig/build.json b/shared/tsconfig/build.json index 4b65c0c33..9d25b4b7d 100644 --- a/shared/tsconfig/build.json +++ b/shared/tsconfig/build.json @@ -6,11 +6,12 @@ "target": "ESNext", "useDefineForClassFields": true, "module": "ESNext", + "moduleResolution": "Bundler", "lib": ["DOM", "DOM.Iterable", "ESNext"], "sourceMap": true, "resolveJsonModule": true, "noEmit": true, "types": ["vitest", "vitest/globals"] }, - "exclude": ["node_modules"] + "exclude": ["node_modules", "dist"] } diff --git a/shared/tsconfig/node.json b/shared/tsconfig/node.json new file mode 100644 index 000000000..a249ea141 --- /dev/null +++ b/shared/tsconfig/node.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Node", + "extends": ["./base.json"], + "compilerOptions": { + "types": ["node"] + } +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..d6d94554f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": ["tsconfig/node.json"], + "compilerOptions": { + "allowJs": true + }, + "include": [".prettierrc.cjs", "eslint.config.js", "dev/uploadService/*"] +} diff --git a/yarn.lock b/yarn.lock index f0b7acd60..4c40fc3ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -520,17 +520,6 @@ __metadata: languageName: node linkType: hard -"@es-joy/jsdoccomment@npm:~0.46.0": - version: 0.46.0 - resolution: "@es-joy/jsdoccomment@npm:0.46.0" - dependencies: - comment-parser: "npm:1.4.1" - esquery: "npm:^1.6.0" - jsdoc-type-pratt-parser: "npm:~4.0.0" - checksum: 10/1853865bebd502763dfd85ff247195806a40cff860278c5c20767f0b330c4fd51e71458ed4dac53891dcf5e3bb2fac13b5538eeb38938cf4549cf17984b0cc2e - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/aix-ppc64@npm:0.21.5" @@ -692,7 +681,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": version: 4.4.0 resolution: "@eslint-community/eslint-utils@npm:4.4.0" dependencies: @@ -703,34 +692,80 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0, @eslint-community/regexpp@npm:^4.6.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0": version: 4.11.1 resolution: "@eslint-community/regexpp@npm:4.11.1" checksum: 10/934b6d3588c7f16b18d41efec4fdb89616c440b7e3256b8cb92cfd31ae12908600f2b986d6c1e61a84cbc10256b1dd3448cd1eec79904bd67ac365d0f1aba2e2 languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/eslintrc@npm:2.1.4" +"@eslint/compat@npm:^1.2.0": + version: 1.2.0 + resolution: "@eslint/compat@npm:1.2.0" + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + checksum: 10/4896c417c1f197a6e9cc12592a661f0d91d73bdbb936785555c5bb81d2359a59fe90aac2422e7ce525e9dd5bb13227cbfec1263f9263591ccca200e9038057bf + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" + dependencies: + "@eslint/object-schema": "npm:^2.1.4" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10/60ccad1eb4806710b085cd739568ec7afd289ee5af6ca0383f0876f9fe375559ef525f7b3f86bdb3f961493de952f2cf3ab4aa4a6ccaef0ae3cd688267cabcb3 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.6.0": + version: 0.6.0 + resolution: "@eslint/core@npm:0.6.0" + checksum: 10/ec5cce168c8773fbd60c5a505563c6cf24398b3e1fa352929878d63129e0dd5b134d3232be2f2c49e8124a965d03359b38962aa0dcf7dfaf50746059d2a2f798 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.1.0": + version: 3.1.0 + resolution: "@eslint/eslintrc@npm:3.1.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" - espree: "npm:^9.6.0" - globals: "npm:^13.19.0" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 10/7a3b14f4b40fc1a22624c3f84d9f467a3d9ea1ca6e9a372116cb92507e485260359465b58e25bcb6c9981b155416b98c9973ad9b796053fd7b3f776a6946bce8 + checksum: 10/02bf892d1397e1029209dea685e9f4f87baf643315df2a632b5f121ec7e8548a3b34f428a007234fa82772218fa8a3ac2d10328637b9ce63b7f8344035b74db3 + languageName: node + linkType: hard + +"@eslint/js@npm:9.12.0, @eslint/js@npm:^9.12.0": + version: 9.12.0 + resolution: "@eslint/js@npm:9.12.0" + checksum: 10/c4ec9f7ff664f778324002bccdfd63e4a563018e4d7efc838d8149898f9df8649fbc51a379c3d7deea40da4fba9e8e62f39f2df3ff2b9616e2241bbfc10456b0 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 10/221e8d9f281c605948cd6e030874aacce83fe097f8f9c1964787037bccf08e82b7aa9eff1850a30fffac43f1d76555727ec22a2af479d91e268e89d1e035131e languageName: node linkType: hard -"@eslint/js@npm:8.57.1": - version: 8.57.1 - resolution: "@eslint/js@npm:8.57.1" - checksum: 10/7562b21be10c2adbfa4aa5bb2eccec2cb9ac649a3569560742202c8d1cb6c931ce634937a2f0f551e078403a1c1285d6c2c0aa345dafc986149665cd69fe8b59 +"@eslint/plugin-kit@npm:^0.2.0": + version: 0.2.0 + resolution: "@eslint/plugin-kit@npm:0.2.0" + dependencies: + levn: "npm:^0.4.1" + checksum: 10/ebb363174397341dea47dc35fc206e24328083e4f0fa1c539687dbb7f94bef77e43faa12867d032e6eea5ac980ea8fbb6b1d844186e422d327c04088041b99f3 languageName: node linkType: hard @@ -1192,14 +1227,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanfs/core@npm:^0.19.0": + version: 0.19.0 + resolution: "@humanfs/core@npm:0.19.0" + checksum: 10/9c4f96b9e934b7d2f69c5ee8b9414dcaf5c5a03225eb08f8ace3b80429c0fc796e11c4e2ef182172790e7b4560b1137ef984da4dc9662cdd5e3e92baceb02821 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.5": + version: 0.16.5 + resolution: "@humanfs/node@npm:0.16.5" dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: 10/524df31e61a85392a2433bf5d03164e03da26c03d009f27852e7dcfdafbc4a23f17f021dacf88e0a7a9fe04ca032017945d19b57a16e2676d9114c22a53a9d11 + "@humanfs/core": "npm:^0.19.0" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10/16e49b5f9d4a3cf8205af18f0909b8c6e00faa70a0e01bc606b413423ee20123e53028b6ca22c57725595341d62e148cd1908c297a761ee495087cc674f7b0a6 languageName: node linkType: hard @@ -1210,10 +1251,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 10/05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 +"@humanwhocodes/retry@npm:^0.3.0, @humanwhocodes/retry@npm:^0.3.1": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10/eb457f699529de7f07649679ec9e0353055eebe443c2efe71c6dd950258892475a038e13c6a8c5e13ed1fb538cdd0a8794faa96b24b6ffc4c87fb1fc9f70ad7f languageName: node linkType: hard @@ -1510,7 +1551,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -1901,13 +1942,6 @@ __metadata: languageName: node linkType: hard -"@rtsao/scc@npm:^1.1.0": - version: 1.1.0 - resolution: "@rtsao/scc@npm:1.1.0" - checksum: 10/17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 - languageName: node - linkType: hard - "@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.0, @scure/base@npm:~1.1.2, @scure/base@npm:~1.1.6, @scure/base@npm:~1.1.7, @scure/base@npm:~1.1.8": version: 1.1.9 resolution: "@scure/base@npm:1.1.9" @@ -2141,7 +2175,26 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:1.0.6, @types/estree@npm:^1.0.0": +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "npm:*" + "@types/json-schema": "npm:*" + checksum: 10/719fcd255760168a43d0e306ef87548e1e15bffe361d5f4022b0f266575637acc0ecb85604ac97879ee8ae83c6a6d0613b0ed31d0209ddf22a0fe6d608fc56fe + languageName: node + linkType: hard + +"@types/eslint__js@npm:^8.42.3": + version: 8.42.3 + resolution: "@types/eslint__js@npm:8.42.3" + dependencies: + "@types/eslint": "npm:*" + checksum: 10/e31f19de642d35a664695d0cab873ce6de19b8a3506755835b91f8a49a8c41099dcace449df49f1a486de6fa6565d21ceb1fa33be6004fc7adef9226e5d256a1 + languageName: node + linkType: hard + +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 10/9d35d475095199c23e05b431bcdd1f6fec7380612aed068b14b2a08aa70494de8a9026765a5a91b1073f636fb0368f6d8973f518a31391d519e20c59388ed88d @@ -2157,10 +2210,10 @@ __metadata: languageName: node linkType: hard -"@types/json5@npm:^0.0.29": - version: 0.0.29 - resolution: "@types/json5@npm:0.0.29" - checksum: 10/4e5aed58cabb2bbf6f725da13421aa50a49abb6bc17bfab6c31b8774b073fa7b50d557c61f961a09a85f6056151190f8ac95f13f5b48136ba5841f7d4484ec56 +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10/1a3c3e06236e4c4aab89499c428d585527ce50c24fe8259e8b3926d3df4cfbbbcf306cfc73ddfb66cbafc973116efd15967020b0f738f63e09e64c7d260519e7 languageName: node linkType: hard @@ -2236,143 +2289,87 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" +"@typescript-eslint/eslint-plugin@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.9.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.18.0" - "@typescript-eslint/type-utils": "npm:7.18.0" - "@typescript-eslint/utils": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" + "@typescript-eslint/scope-manager": "npm:8.9.0" + "@typescript-eslint/type-utils": "npm:8.9.0" + "@typescript-eslint/utils": "npm:8.9.0" + "@typescript-eslint/visitor-keys": "npm:8.9.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" ts-api-utils: "npm:^1.3.0" peerDependencies: - "@typescript-eslint/parser": ^7.0.0 - eslint: ^8.56.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/6ee4c61f145dc05f0a567b8ac01b5399ef9c75f58bc6e9a3ffca8927b15e2be2d4c3fd32a2c1a7041cc0848fdeadac30d9cb0d3bcd3835d301847a88ffd19c4d - languageName: node - linkType: hard - -"@typescript-eslint/parser@npm:^6.4.0": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" - dependencies: - "@typescript-eslint/scope-manager": "npm:6.21.0" - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/typescript-estree": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/4d51cdbc170e72275efc5ef5fce48a81ec431e4edde8374f4d0213d8d370a06823e1a61ae31d502a5f1b0d1f48fc4d29a1b1b5c2dcf809d66d3872ccf6e46ac7 + checksum: 10/c1858656d7ab3d37674759c838422d8a1b7540e54a25c67c7508c38ee76594a98e8f1f269749f08700f93a7a425e0dca6eb6d031b36539c537e10a32edb4975c languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/parser@npm:7.18.0" +"@typescript-eslint/parser@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/parser@npm:8.9.0" dependencies: - "@typescript-eslint/scope-manager": "npm:7.18.0" - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/typescript-estree": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" + "@typescript-eslint/scope-manager": "npm:8.9.0" + "@typescript-eslint/types": "npm:8.9.0" + "@typescript-eslint/typescript-estree": "npm:8.9.0" + "@typescript-eslint/visitor-keys": "npm:8.9.0" debug: "npm:^4.3.4" peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/36b00e192a96180220ba100fcce3c777fc3e61a6edbdead4e6e75a744d9f0cbe3fabb5f1c94a31cce6b28a4e4d5de148098eec01296026c3c8e16f7f0067cb1e - languageName: node - linkType: hard - -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - checksum: 10/fe91ac52ca8e09356a71dc1a2f2c326480f3cccfec6b2b6d9154c1a90651ab8ea270b07c67df5678956c3bbf0bbe7113ab68f68f21b20912ea528b1214197395 + checksum: 10/6f73af7782856b292b37e43dde83c5babbbdae28da1a4fed764474a9ccbbfcce25903cedde82d6847ad53e0c1a7c2ed53f087b281e6f1408a064498169c0e2d1 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/scope-manager@npm:7.18.0" +"@typescript-eslint/scope-manager@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/scope-manager@npm:8.9.0" dependencies: - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" - checksum: 10/9eb2ae5d69d9f723e706c16b2b97744fc016996a5473bed596035ac4d12429b3d24e7340a8235d704efa57f8f52e1b3b37925ff7c2e3384859d28b23a99b8bcc + "@typescript-eslint/types": "npm:8.9.0" + "@typescript-eslint/visitor-keys": "npm:8.9.0" + checksum: 10/44dfb640113e8be2f5d25034f5657a9609ee06082b817dc24116c5e1d7a708ca31e8eedcc47f7d309def2ce63be662d1d0a37a1c7bdc7345968a31d04c0a2377 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/type-utils@npm:7.18.0" +"@typescript-eslint/type-utils@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/type-utils@npm:8.9.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.18.0" - "@typescript-eslint/utils": "npm:7.18.0" + "@typescript-eslint/typescript-estree": "npm:8.9.0" + "@typescript-eslint/utils": "npm:8.9.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" - peerDependencies: - eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/bcc7958a4ecdddad8c92e17265175773e7dddf416a654c1a391e69cb16e43960b39d37b6ffa349941bf3635e050f0ca7cd8f56ec9dd774168f2bbe7afedc9676 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 10/e26da86d6f36ca5b6ef6322619f8ec55aabcd7d43c840c977ae13ae2c964c3091fc92eb33730d8be08927c9de38466c5323e78bfb270a9ff1d3611fe821046c5 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/types@npm:7.18.0" - checksum: 10/0e30c73a3cc3c67dd06360a5a12fd12cee831e4092750eec3d6c031bdc4feafcb0ab1d882910a73e66b451a4f6e1dd015e9e2c4d45bf6bf716a474e5d123ddf0 + checksum: 10/aaeb465ed57d140bc0d9a8b81a474eff5d1c63d99479828b4eb83a1a626dcb2b1377052a971be5b4d094d6adcf1cf8e33c41ee13369bd71aed0f9cd9f3528c8a languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": "npm:6.21.0" - "@typescript-eslint/visitor-keys": "npm:6.21.0" - debug: "npm:^4.3.4" - globby: "npm:^11.1.0" - is-glob: "npm:^4.0.3" - minimatch: "npm:9.0.3" - semver: "npm:^7.5.4" - ts-api-utils: "npm:^1.0.1" - peerDependenciesMeta: - typescript: - optional: true - checksum: 10/b32fa35fca2a229e0f5f06793e5359ff9269f63e9705e858df95d55ca2cd7fdb5b3e75b284095a992c48c5fc46a1431a1a4b6747ede2dd08929dc1cbacc589b8 +"@typescript-eslint/types@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/types@npm:8.9.0" + checksum: 10/4d087153605ec23c980f9bc807b122edefff828e0c3b52ef531f4b8e1d30078c39f95e84019370a395bf97eed0d7886cc50b8cd545c287f8a2a21b301272377a languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" +"@typescript-eslint/typescript-estree@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.9.0" dependencies: - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/visitor-keys": "npm:7.18.0" + "@typescript-eslint/types": "npm:8.9.0" + "@typescript-eslint/visitor-keys": "npm:8.9.0" debug: "npm:^4.3.4" - globby: "npm:^11.1.0" + fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" minimatch: "npm:^9.0.4" semver: "npm:^7.6.0" @@ -2380,45 +2377,35 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/b01e66235a91aa4439d02081d4a5f8b4a7cf9cb24f26b334812f657e3c603493e5f41e5c1e89cf4efae7d64509fa1f73affc16afc5e15cb7f83f724577c82036 + checksum: 10/855b433f24fad5d6791c16510d035ded31ccfd17235b45f4dcb7fa89ed57268e4bf4bf79311c5323037e6243da506b2edcb113aa51339291efb344b6d8035b1a languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/utils@npm:7.18.0" +"@typescript-eslint/utils@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/utils@npm:8.9.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.18.0" - "@typescript-eslint/types": "npm:7.18.0" - "@typescript-eslint/typescript-estree": "npm:7.18.0" + "@typescript-eslint/scope-manager": "npm:8.9.0" + "@typescript-eslint/types": "npm:8.9.0" + "@typescript-eslint/typescript-estree": "npm:8.9.0" peerDependencies: - eslint: ^8.56.0 - checksum: 10/f43fedb4f4d2e3836bdf137889449063a55c0ece74fdb283929cd376197b992313be8ef4df920c1c801b5c3076b92964c84c6c3b9b749d263b648d0011f5926e + eslint: ^8.57.0 || ^9.0.0 + checksum: 10/84efd10d6aa212103615cf52211a79f1ca02dc4fbf2dbb3a8d2aa49cd19f582b04c219ee98ed1ab77a503f967d82ce56521b1663359ff3e7faaa1f8798c19697 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" +"@typescript-eslint/visitor-keys@npm:8.9.0": + version: 8.9.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.9.0" dependencies: - "@typescript-eslint/types": "npm:6.21.0" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/30422cdc1e2ffad203df40351a031254b272f9c6f2b7e02e9bfa39e3fc2c7b1c6130333b0057412968deda17a3a68a578a78929a8139c6acef44d9d841dc72e1 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" - dependencies: - "@typescript-eslint/types": "npm:7.18.0" + "@typescript-eslint/types": "npm:8.9.0" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/b7cfe6fdeae86c507357ac6b2357813c64fb2fbf1aaf844393ba82f73a16e2599b41981b34200d9fc7765d70bc3a8181d76b503051e53f04bcb7c9afef637eab + checksum: 10/809097884b8c706f549d99bafa3e0958bd893b3deb190297110f2f1f9360e12064335c8f2df68f39be7d744d2032b5eb57b710c9671eb38f793877ab9364c731 languageName: node linkType: hard -"@ungap/structured-clone@npm:^1.0.0, @ungap/structured-clone@npm:^1.2.0": +"@ungap/structured-clone@npm:^1.0.0": version: 1.2.0 resolution: "@ungap/structured-clone@npm:1.2.0" checksum: 10/c6fe89a505e513a7592e1438280db1c075764793a2397877ff1351721fe8792a966a5359769e30242b3cd023f2efb9e63ca2ca88019d73b564488cc20e3eab12 @@ -2551,8 +2538,6 @@ __metadata: "@rollup/plugin-typescript": "npm:^12.1.0" "@types/node": "npm:^20.16.11" "@xmtp/proto": "npm:^3.61.1" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" rollup: "npm:^4.24.0" @@ -2574,8 +2559,6 @@ __metadata: "@xmtp/content-type-primitives": "npm:^1.0.1" "@xmtp/xmtp-js": "npm:^11.6.3" buffer: "npm:^6.0.3" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" ethers: "npm:^6.11.1" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" @@ -2598,8 +2581,6 @@ __metadata: "@xmtp/content-type-primitives": "npm:^1.0.1" "@xmtp/xmtp-js": "npm:^11.6.3" buffer: "npm:^6.0.3" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" ethers: "npm:^6.11.1" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" @@ -2627,8 +2608,6 @@ __metadata: "@xmtp/rollup-plugin-resolve-extensions": "npm:^1.0.1" "@xmtp/xmtp-js": "npm:^11.6.3" buffer: "npm:^6.0.3" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" ethers: "npm:^6.11.1" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" @@ -2653,8 +2632,6 @@ __metadata: "@xmtp/proto": "npm:^3.61.1" "@xmtp/xmtp-js": "npm:^11.6.3" buffer: "npm:^6.0.3" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" ethers: "npm:^6.11.1" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" @@ -2677,8 +2654,6 @@ __metadata: "@xmtp/content-type-primitives": "npm:^1.0.1" "@xmtp/xmtp-js": "npm:^11.6.3" buffer: "npm:^6.0.3" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" ethers: "npm:^6.11.1" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" @@ -2701,8 +2676,6 @@ __metadata: "@xmtp/content-type-primitives": "npm:^1.0.1" "@xmtp/xmtp-js": "npm:^11.6.3" buffer: "npm:^6.0.3" - eslint: "npm:^8.57.0" - eslint-config-custom: "workspace:*" ethers: "npm:^6.11.1" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" @@ -2722,20 +2695,9 @@ __metadata: "@rollup/plugin-terser": "npm:^0.4.4" "@rollup/plugin-typescript": "npm:^12.1.0" "@types/node": "npm:^20.16.11" - "@typescript-eslint/eslint-plugin": "npm:^7.18.0" - "@typescript-eslint/parser": "npm:^7.18.0" "@vitest/coverage-v8": "npm:^2.1.3" "@xmtp/proto": "npm:^3.68.0" "@xmtp/rollup-plugin-resolve-extensions": "npm:1.0.1" - eslint: "npm:^8.57.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-config-standard: "npm:^17.1.0" - eslint-plugin-import: "npm:^2.29.1" - eslint-plugin-jsdoc: "npm:^48.7.0" - eslint-plugin-n: "npm:^17.9.0" - eslint-plugin-node: "npm:^11.1.0" - eslint-plugin-prettier: "npm:^5.1.3" - eslint-plugin-promise: "npm:^6.4.0" happy-dom: "npm:^15.7.4" rimraf: "npm:^6.0.1" rollup: "npm:^4.24.0" @@ -2763,22 +2725,12 @@ __metadata: "@rollup/plugin-json": "npm:^6.1.0" "@rollup/plugin-typescript": "npm:^12.1.0" "@types/node": "npm:^20.16.11" - "@typescript-eslint/eslint-plugin": "npm:^7.18.0" - "@typescript-eslint/parser": "npm:^7.18.0" "@vitest/coverage-v8": "npm:^2.1.3" "@xmtp/content-type-primitives": "npm:^1.0.1" "@xmtp/content-type-text": "npm:^1.0.0" "@xmtp/node-bindings": "npm:^0.0.13" "@xmtp/proto": "npm:^3.62.1" "@xmtp/xmtp-js": "workspace:^" - eslint: "npm:^8.57.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-config-standard: "npm:^17.1.0" - eslint-plugin-import: "npm:^2.29.1" - eslint-plugin-n: "npm:^17.9.0" - eslint-plugin-node: "npm:^11.1.0" - eslint-plugin-prettier: "npm:^5.1.3" - eslint-plugin-promise: "npm:^6.4.0" fast-glob: "npm:^3.3.2" rimraf: "npm:^6.0.1" rollup: "npm:^4.24.0" @@ -2880,8 +2832,6 @@ __metadata: "@types/callback-to-async-iterator": "npm:^1.1.7" "@types/elliptic": "npm:^6.4.18" "@types/node": "npm:^20.16.11" - "@typescript-eslint/eslint-plugin": "npm:^7.18.0" - "@typescript-eslint/parser": "npm:^7.18.0" "@vitest/coverage-v8": "npm:^2.1.3" "@xmtp/consent-proof-signature": "npm:^0.1.3" "@xmtp/content-type-primitives": "npm:^1.0.1" @@ -2893,15 +2843,6 @@ __metadata: async-mutex: "npm:^0.5.0" benny: "npm:^3.7.1" elliptic: "npm:^6.5.7" - eslint: "npm:^8.57.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-config-standard: "npm:^17.1.0" - eslint-plugin-import: "npm:^2.29.1" - eslint-plugin-jsdoc: "npm:^48.7.0" - eslint-plugin-n: "npm:^17.9.0" - eslint-plugin-node: "npm:^11.1.0" - eslint-plugin-prettier: "npm:^5.1.3" - eslint-plugin-promise: "npm:^6.4.0" ethers: "npm:^5.7.2" happy-dom: "npm:^15.7.4" long: "npm:^5.2.3" @@ -2981,7 +2922,16 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.12.0, acorn@npm:^8.8.2, acorn@npm:^8.9.0": +"acorn@npm:^8.12.0": + version: 8.13.0 + resolution: "acorn@npm:8.13.0" + bin: + acorn: bin/acorn + checksum: 10/33e3a03114b02b3bc5009463b3d9549b31a90ee38ebccd5e66515830a02acf62a90edcc12abfb6c9fb3837b6c17a3ec9b72b3bf52ac31d8ad8248a4af871e0f5 + languageName: node + linkType: hard + +"acorn@npm:^8.8.2": version: 8.12.1 resolution: "acorn@npm:8.12.1" bin: @@ -3124,13 +3074,6 @@ __metadata: languageName: node linkType: hard -"are-docs-informative@npm:^0.0.2": - version: 0.0.2 - resolution: "are-docs-informative@npm:0.0.2" - checksum: 10/12cdae51a4bb369832ef1a35840604247d4ed0cbc8392f2519988d170f92c3f8c60e465844f41acba1ec3062d0edb2e9133fca38cb9c1214309153d50a25fa29 - languageName: node - linkType: hard - "are-we-there-yet@npm:^3.0.0": version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" @@ -3157,30 +3100,6 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.5" - is-array-buffer: "npm:^3.0.4" - checksum: 10/53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e - languageName: node - linkType: hard - -"array-includes@npm:^3.1.8": - version: 3.1.8 - resolution: "array-includes@npm:3.1.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - get-intrinsic: "npm:^1.2.4" - is-string: "npm:^1.0.7" - checksum: 10/290b206c9451f181fb2b1f79a3bf1c0b66bb259791290ffbada760c79b284eef6f5ae2aeb4bcff450ebc9690edd25732c4c73a3c2b340fcc0f4563aed83bf488 - languageName: node - linkType: hard - "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -3188,60 +3107,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.findlastindex@npm:1.2.5" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-shim-unscopables: "npm:^1.0.2" - checksum: 10/7c5c821f357cd53ab6cc305de8086430dd8d7a2485db87b13f843e868055e9582b1fd338f02338f67fc3a1603ceaf9610dd2a470b0b506f9d18934780f95b246 - languageName: node - linkType: hard - -"array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/d9d2f6f27584de92ec7995bc931103e6de722cd2498bdbfc4cba814fc3e52f056050a93be883018811f7c0a35875f5056584a0e940603a5e5934f0279896aebe - languageName: node - linkType: hard - -"array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/33f20006686e0cbe844fde7fd290971e8366c6c5e3380681c2df15738b1df766dd02c7784034aeeb3b037f65c496ee54de665388288edb323a2008bb550f77ea - languageName: node - linkType: hard - -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - call-bind: "npm:^1.0.5" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.22.3" - es-errors: "npm:^1.2.1" - get-intrinsic: "npm:^1.2.3" - is-array-buffer: "npm:^3.0.4" - is-shared-array-buffer: "npm:^1.0.2" - checksum: 10/0221f16c1e3ec7b67da870ee0e1f12b825b5f9189835392b59a22990f715827561a4f4cd5330dc7507de272d8df821be6cd4b0cb569babf5ea4be70e365a2f3d - languageName: node - linkType: hard - "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -3265,15 +3130,6 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.7": - version: 1.0.7 - resolution: "available-typed-arrays@npm:1.0.7" - dependencies: - possible-typed-array-names: "npm:^1.0.0" - checksum: 10/6c9da3a66caddd83c875010a1ca8ef11eac02ba15fb592dc9418b2b5e7b77b645fa7729380a92d9835c2f05f2ca1b6251f39b993e0feb3f1517c74fa1af02cab - languageName: node - linkType: hard - "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -3448,22 +3304,6 @@ __metadata: languageName: node linkType: hard -"builtin-modules@npm:^3.3.0": - version: 3.3.0 - resolution: "builtin-modules@npm:3.3.0" - checksum: 10/62e063ab40c0c1efccbfa9ffa31873e4f9d57408cb396a2649981a0ecbce56aabc93c28feaccbc5658c95aab2703ad1d11980e62ec2e5e72637404e1eb60f39e - languageName: node - linkType: hard - -"builtins@npm:^5.0.1": - version: 5.1.0 - resolution: "builtins@npm:5.1.0" - dependencies: - semver: "npm:^7.0.0" - checksum: 10/60aa9969f69656bf6eab82cd74b23ab805f112ae46a54b912bccc1533875760f2d2ce95e0a7d13144e35ada9f0386f17ed4961908bc9434b5a5e21375b1902b2 - languageName: node - linkType: hard - "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -3537,19 +3377,6 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - set-function-length: "npm:^1.2.1" - checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7 - languageName: node - linkType: hard - "callsites@npm:^3.0.0": version: 3.1.0 resolution: "callsites@npm:3.1.0" @@ -3746,13 +3573,6 @@ __metadata: languageName: node linkType: hard -"comment-parser@npm:1.4.1": - version: 1.4.1 - resolution: "comment-parser@npm:1.4.1" - checksum: 10/16a3260b5e77819ebd9c99b0b65c7d6723b1ff73487bac9ce2d8f016a2847dd689e8663b88e1fad1444bbea89847c42f785708ac86a2c55f614f7095249bbf6b - languageName: node - linkType: hard - "common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" @@ -3767,13 +3587,6 @@ __metadata: languageName: node linkType: hard -"confusing-browser-globals@npm:^1.0.10": - version: 1.0.11 - resolution: "confusing-browser-globals@npm:1.0.11" - checksum: 10/3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef - languageName: node - linkType: hard - "console-control-strings@npm:^1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -3819,40 +3632,7 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.6" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/5919a39a18ee919573336158fd162fdf8ada1bc23a139f28543fd45fac48e0ea4a3ad3bfde91de124d4106e65c4a7525f6a84c20ba0797ec890a77a96d13a82a - languageName: node - linkType: hard - -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/f33c65e58d8d0432ad79761f2e8a579818d724b5dc6dc4e700489b762d963ab30873c0f1c37d8f2ed12ef51c706d1195f64422856d25f067457aeec50cc40aac - languageName: node - linkType: hard - -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" - dependencies: - call-bind: "npm:^1.0.6" - es-errors: "npm:^1.3.0" - is-data-view: "npm:^1.0.1" - checksum: 10/96f34f151bf02affb7b9f98762fb7aca1dd5f4553cb57b80bce750ca609c15d33ca659568ef1d422f7e35680736cbccb893a3d4b012760c758c1446bbdc4c6db - languageName: node - linkType: hard - -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.3.6": version: 4.3.7 resolution: "debug@npm:4.3.7" dependencies: @@ -3864,15 +3644,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^3.2.7": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: "npm:^2.1.1" - checksum: 10/d86fd7be2b85462297ea16f1934dc219335e802f629ca9a69b63ed8ed041dda492389bb2ee039217c02e5b54792b1c51aa96ae954cf28634d363a2360c7a1639 - languageName: node - linkType: hard - "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -3894,28 +3665,6 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": - version: 1.1.4 - resolution: "define-data-property@npm:1.1.4" - dependencies: - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - gopd: "npm:^1.0.1" - checksum: 10/abdcb2505d80a53524ba871273e5da75e77e52af9e15b3aa65d8aad82b8a3a424dad7aee2cc0b71470ac7acf501e08defac362e8b6a73cdb4309f028061df4ae - languageName: node - linkType: hard - -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": - version: 1.2.1 - resolution: "define-properties@npm:1.2.1" - dependencies: - define-data-property: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.0" - object-keys: "npm:^1.1.1" - checksum: 10/b4ccd00597dd46cb2d4a379398f5b19fca84a16f3374e2249201992f36b30f6835949a9429669ee6b41b6e837205a163eadd745e472069e70dfc10f03e5fcc12 - languageName: node - linkType: hard - "delegates@npm:^1.0.0": version: 1.0.0 resolution: "delegates@npm:1.0.0" @@ -3976,24 +3725,6 @@ __metadata: languageName: node linkType: hard -"doctrine@npm:^2.1.0": - version: 2.1.0 - resolution: "doctrine@npm:2.1.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/555684f77e791b17173ea86e2eea45ef26c22219cb64670669c4f4bebd26dbc95cd90ec1f4159e9349a6bb9eb892ce4dde8cd0139e77bedd8bf4518238618474 - languageName: node - linkType: hard - -"doctrine@npm:^3.0.0": - version: 3.0.0 - resolution: "doctrine@npm:3.0.0" - dependencies: - esutils: "npm:^2.0.2" - checksum: 10/b4b28f1df5c563f7d876e7461254a4597b8cabe915abe94d7c5d1633fed263fcf9a85e8d3836591fc2d040108e822b0d32758e5ec1fe31c590dc7e08086e3e48 - languageName: node - linkType: hard - "duplexer@npm:0.1.1": version: 0.1.1 resolution: "duplexer@npm:0.1.1" @@ -4075,16 +3806,6 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.17.0": - version: 5.17.1 - resolution: "enhanced-resolve@npm:5.17.1" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10/e8e03cb7a4bf3c0250a89afbd29e5ec20e90ba5fcd026066232a0754864d7d0a393fa6fc0e5379314a6529165a1834b36731147080714459d98924520410d8f5 - languageName: node - linkType: hard - "enquirer@npm:^2.3.0": version: 2.4.1 resolution: "enquirer@npm:2.4.1" @@ -4116,123 +3837,6 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" - dependencies: - array-buffer-byte-length: "npm:^1.0.1" - arraybuffer.prototype.slice: "npm:^1.0.3" - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - data-view-buffer: "npm:^1.0.1" - data-view-byte-length: "npm:^1.0.1" - data-view-byte-offset: "npm:^1.0.0" - es-define-property: "npm:^1.0.0" - es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" - es-set-tostringtag: "npm:^2.0.3" - es-to-primitive: "npm:^1.2.1" - function.prototype.name: "npm:^1.1.6" - get-intrinsic: "npm:^1.2.4" - get-symbol-description: "npm:^1.0.2" - globalthis: "npm:^1.0.3" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - has-proto: "npm:^1.0.3" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.2" - internal-slot: "npm:^1.0.7" - is-array-buffer: "npm:^3.0.4" - is-callable: "npm:^1.2.7" - is-data-view: "npm:^1.0.1" - is-negative-zero: "npm:^2.0.3" - is-regex: "npm:^1.1.4" - is-shared-array-buffer: "npm:^1.0.3" - is-string: "npm:^1.0.7" - is-typed-array: "npm:^1.1.13" - is-weakref: "npm:^1.0.2" - object-inspect: "npm:^1.13.1" - object-keys: "npm:^1.1.1" - object.assign: "npm:^4.1.5" - regexp.prototype.flags: "npm:^1.5.2" - safe-array-concat: "npm:^1.1.2" - safe-regex-test: "npm:^1.0.3" - string.prototype.trim: "npm:^1.2.9" - string.prototype.trimend: "npm:^1.0.8" - string.prototype.trimstart: "npm:^1.0.8" - typed-array-buffer: "npm:^1.0.2" - typed-array-byte-length: "npm:^1.0.1" - typed-array-byte-offset: "npm:^1.0.2" - typed-array-length: "npm:^1.0.6" - unbox-primitive: "npm:^1.0.2" - which-typed-array: "npm:^1.1.15" - checksum: 10/2da795a6a1ac5fc2c452799a409acc2e3692e06dc6440440b076908617188899caa562154d77263e3053bcd9389a07baa978ab10ac3b46acc399bd0c77be04cb - languageName: node - linkType: hard - -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: "npm:^1.2.4" - checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 - languageName: node - linkType: hard - -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": - version: 1.3.0 - resolution: "es-errors@npm:1.3.0" - checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5 - languageName: node - linkType: hard - -"es-module-lexer@npm:^1.5.3": - version: 1.5.4 - resolution: "es-module-lexer@npm:1.5.4" - checksum: 10/f29c7c97a58eb17640dcbd71bd6ef754ad4f58f95c3073894573d29dae2cad43ecd2060d97ed5b866dfb7804d5590fb7de1d2c5339a5fceae8bd60b580387fc5 - languageName: node - linkType: hard - -"es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" - dependencies: - es-errors: "npm:^1.3.0" - checksum: 10/f8910cf477e53c0615f685c5c96210591841850871b81924fcf256bfbaa68c254457d994a4308c60d15b20805e7f61ce6abc669375e01a5349391a8c1767584f - languageName: node - linkType: hard - -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" - dependencies: - get-intrinsic: "npm:^1.2.4" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.1" - checksum: 10/7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 - languageName: node - linkType: hard - -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": - version: 1.0.2 - resolution: "es-shim-unscopables@npm:1.0.2" - dependencies: - hasown: "npm:^2.0.0" - checksum: 10/6d3bf91f658a27cc7217cd32b407a0d714393a84d125ad576319b9e83a893bea165cf41270c29e9ceaa56d3cf41608945d7e2a2c31fd51c0009b0c31402b91c7 - languageName: node - linkType: hard - -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" - dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 10/74aeeefe2714cf99bb40cab7ce3012d74e1e2c1bd60d0a913b467b269edde6e176ca644b5ba03a5b865fb044a29bca05671cd445c85ca2cdc2de155d7fc8fe9b - languageName: node - linkType: hard - "esbuild@npm:^0.21.3": version: 0.21.5 resolution: "esbuild@npm:0.21.5" @@ -4334,63 +3938,6 @@ __metadata: languageName: node linkType: hard -"eslint-compat-utils@npm:^0.5.1": - version: 0.5.1 - resolution: "eslint-compat-utils@npm:0.5.1" - dependencies: - semver: "npm:^7.5.4" - peerDependencies: - eslint: ">=6.0.0" - checksum: 10/ac65ac1c6107cf19f63f5fc17cea361c9cb1336be7356f23dbb0fac10979974b4622e13e950be43cbf431801f2c07f7dab448573181ccf6edc0b86d5b5304511 - languageName: node - linkType: hard - -"eslint-config-airbnb-base@npm:^15.0.0": - version: 15.0.0 - resolution: "eslint-config-airbnb-base@npm:15.0.0" - dependencies: - confusing-browser-globals: "npm:^1.0.10" - object.assign: "npm:^4.1.2" - object.entries: "npm:^1.1.5" - semver: "npm:^6.3.0" - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - checksum: 10/daa68a1dcb7bff338747a952723b5fa9d159980ec3554c395a4b52a7f7d4f00a45e7b465420eb6d4d87a82cef6361e4cfd6dbb38c2f3f52f2140b6cf13654803 - languageName: node - linkType: hard - -"eslint-config-airbnb-typescript@npm:^18.0.0": - version: 18.0.0 - resolution: "eslint-config-airbnb-typescript@npm:18.0.0" - dependencies: - eslint-config-airbnb-base: "npm:^15.0.0" - peerDependencies: - "@typescript-eslint/eslint-plugin": ^7.0.0 - "@typescript-eslint/parser": ^7.0.0 - eslint: ^8.56.0 - checksum: 10/b913670baf3aa457aa1d514ea63813e76f2232a7efdb149ce96cecb10d836cadea6776a304529f1ae371d2e721479540461e89735bdde85a949e2bf62eb3187c - languageName: node - linkType: hard - -"eslint-config-custom@workspace:*, eslint-config-custom@workspace:shared/eslint-config-custom": - version: 0.0.0-use.local - resolution: "eslint-config-custom@workspace:shared/eslint-config-custom" - dependencies: - "@typescript-eslint/eslint-plugin": "npm:^7.18.0" - "@typescript-eslint/parser": "npm:^7.18.0" - eslint: "npm:^8.57.0" - eslint-config-airbnb-base: "npm:^15.0.0" - eslint-config-airbnb-typescript: "npm:^18.0.0" - eslint-config-prettier: "npm:^9.1.0" - eslint-config-standard-with-typescript: "npm:^43.0.1" - eslint-plugin-import: "npm:^2.29.1" - eslint-plugin-n: "npm:^16.6.2" - eslint-plugin-promise: "npm:^6.1.1" - typescript: "npm:^5.6.3" - languageName: unknown - linkType: soft - "eslint-config-prettier@npm:^9.1.0": version: 9.1.0 resolution: "eslint-config-prettier@npm:9.1.0" @@ -4402,191 +3949,9 @@ __metadata: languageName: node linkType: hard -"eslint-config-standard-with-typescript@npm:^43.0.1": - version: 43.0.1 - resolution: "eslint-config-standard-with-typescript@npm:43.0.1" - dependencies: - "@typescript-eslint/parser": "npm:^6.4.0" - eslint-config-standard: "npm:17.1.0" - peerDependencies: - "@typescript-eslint/eslint-plugin": ^6.4.0 - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: "^15.0.0 || ^16.0.0 " - eslint-plugin-promise: ^6.0.0 - typescript: "*" - checksum: 10/26a460efd918262ef865abd1f1d7ad4a41c2f368b560ca0ccf16b674f2ca3a778ba5b2a43845421b48fa9ce118a68765222086c30c35e407f878fa1e9170576d - languageName: node - linkType: hard - -"eslint-config-standard@npm:17.1.0, eslint-config-standard@npm:^17.1.0": - version: 17.1.0 - resolution: "eslint-config-standard@npm:17.1.0" - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: "^15.0.0 || ^16.0.0 " - eslint-plugin-promise: ^6.0.0 - checksum: 10/1fb3f98a1badee85a8378e9a8df21ebfc3d6a0556fca309b7e9ddd60243cbeb2486e3d5706dafbf296b116b3b28b5aa3ff00536b2f3067092e98157074a95b1d - languageName: node - linkType: hard - -"eslint-import-resolver-node@npm:^0.3.9": - version: 0.3.9 - resolution: "eslint-import-resolver-node@npm:0.3.9" - dependencies: - debug: "npm:^3.2.7" - is-core-module: "npm:^2.13.0" - resolve: "npm:^1.22.4" - checksum: 10/d52e08e1d96cf630957272e4f2644dcfb531e49dcfd1edd2e07e43369eb2ec7a7d4423d417beee613201206ff2efa4eb9a582b5825ee28802fc7c71fcd53ca83 - languageName: node - linkType: hard - -"eslint-module-utils@npm:^2.12.0": - version: 2.12.0 - resolution: "eslint-module-utils@npm:2.12.0" - dependencies: - debug: "npm:^3.2.7" - peerDependenciesMeta: - eslint: - optional: true - checksum: 10/dd27791147eca17366afcb83f47d6825b6ce164abb256681e5de4ec1d7e87d8605641eb869298a0dbc70665e2446dbcc2f40d3e1631a9475dd64dd23d4ca5dee - languageName: node - linkType: hard - -"eslint-plugin-es-x@npm:^7.5.0": - version: 7.8.0 - resolution: "eslint-plugin-es-x@npm:7.8.0" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.1.2" - "@eslint-community/regexpp": "npm:^4.11.0" - eslint-compat-utils: "npm:^0.5.1" - peerDependencies: - eslint: ">=8" - checksum: 10/1df8d52c4fadc06854ce801af05b05f2642aa2deb918fb7d37738596eabd70b7f21a22b150b78ec9104bac6a1b6b4fb796adea2364ede91b01d20964849ce5f7 - languageName: node - linkType: hard - -"eslint-plugin-es@npm:^3.0.0": - version: 3.0.1 - resolution: "eslint-plugin-es@npm:3.0.1" - dependencies: - eslint-utils: "npm:^2.0.0" - regexpp: "npm:^3.0.0" - peerDependencies: - eslint: ">=4.19.1" - checksum: 10/9814e6305183edfdff7d99cbc0f95f0aed1446045cbd1d4f28e7be0903d0013880f0aaf04486a27de96bfb2f5a746bea97cbb238f9b0035cb378d48d179a0a1b - languageName: node - linkType: hard - -"eslint-plugin-import@npm:^2.29.1": - version: 2.31.0 - resolution: "eslint-plugin-import@npm:2.31.0" - dependencies: - "@rtsao/scc": "npm:^1.1.0" - array-includes: "npm:^3.1.8" - array.prototype.findlastindex: "npm:^1.2.5" - array.prototype.flat: "npm:^1.3.2" - array.prototype.flatmap: "npm:^1.3.2" - debug: "npm:^3.2.7" - doctrine: "npm:^2.1.0" - eslint-import-resolver-node: "npm:^0.3.9" - eslint-module-utils: "npm:^2.12.0" - hasown: "npm:^2.0.2" - is-core-module: "npm:^2.15.1" - is-glob: "npm:^4.0.3" - minimatch: "npm:^3.1.2" - object.fromentries: "npm:^2.0.8" - object.groupby: "npm:^1.0.3" - object.values: "npm:^1.2.0" - semver: "npm:^6.3.1" - string.prototype.trimend: "npm:^1.0.8" - tsconfig-paths: "npm:^3.15.0" - peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - checksum: 10/6b76bd009ac2db0615d9019699d18e2a51a86cb8c1d0855a35fb1b418be23b40239e6debdc6e8c92c59f1468ed0ea8d7b85c817117a113d5cc225be8a02ad31c - languageName: node - linkType: hard - -"eslint-plugin-jsdoc@npm:^48.7.0": - version: 48.11.0 - resolution: "eslint-plugin-jsdoc@npm:48.11.0" - dependencies: - "@es-joy/jsdoccomment": "npm:~0.46.0" - are-docs-informative: "npm:^0.0.2" - comment-parser: "npm:1.4.1" - debug: "npm:^4.3.5" - escape-string-regexp: "npm:^4.0.0" - espree: "npm:^10.1.0" - esquery: "npm:^1.6.0" - parse-imports: "npm:^2.1.1" - semver: "npm:^7.6.3" - spdx-expression-parse: "npm:^4.0.0" - synckit: "npm:^0.9.1" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10/3bc2533656e9ccfdadbcd71a6f7c1ec125b1965c6e399a43c40408b51b4f8c26e44031f077c947b15d68b9cd317e7e8be1e2b222a46fb3c24a25377a2643796b - languageName: node - linkType: hard - -"eslint-plugin-n@npm:^16.6.2": - version: 16.6.2 - resolution: "eslint-plugin-n@npm:16.6.2" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - builtins: "npm:^5.0.1" - eslint-plugin-es-x: "npm:^7.5.0" - get-tsconfig: "npm:^4.7.0" - globals: "npm:^13.24.0" - ignore: "npm:^5.2.4" - is-builtin-module: "npm:^3.2.1" - is-core-module: "npm:^2.12.1" - minimatch: "npm:^3.1.2" - resolve: "npm:^1.22.2" - semver: "npm:^7.5.3" - peerDependencies: - eslint: ">=7.0.0" - checksum: 10/e0f600d03d3a3df57e9a811648b1b534a6d67c90ea9406340ddf3763c2b87cf5ef910b390f787ca5cb27c8d8ff36aad42d70209b54e2a1cb4cc2507ca417229a - languageName: node - linkType: hard - -"eslint-plugin-n@npm:^17.9.0": - version: 17.11.1 - resolution: "eslint-plugin-n@npm:17.11.1" - dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.0" - enhanced-resolve: "npm:^5.17.0" - eslint-plugin-es-x: "npm:^7.5.0" - get-tsconfig: "npm:^4.7.0" - globals: "npm:^15.8.0" - ignore: "npm:^5.2.4" - minimatch: "npm:^9.0.5" - semver: "npm:^7.5.3" - peerDependencies: - eslint: ">=8.23.0" - checksum: 10/f9cd02f5ab6d45448cdc66e836978590d6ab0db3a4135d1463209b04a90b5b996b097687824a6951bae0b6a63d1da6a53f6559eb26efe1d0068dc5d03f7712ce - languageName: node - linkType: hard - -"eslint-plugin-node@npm:^11.1.0": - version: 11.1.0 - resolution: "eslint-plugin-node@npm:11.1.0" - dependencies: - eslint-plugin-es: "npm:^3.0.0" - eslint-utils: "npm:^2.0.0" - ignore: "npm:^5.1.1" - minimatch: "npm:^3.0.4" - resolve: "npm:^1.10.1" - semver: "npm:^6.1.0" - peerDependencies: - eslint: ">=5.16.0" - checksum: 10/bda540f390a84d835989f21f56743f3aa8f41fd9b53359d635c116632c86af92d70d8e6449ddd18860e6241f9cef04fc90c37eb192a9047c3c3a46de6145c30c - languageName: node - linkType: hard - -"eslint-plugin-prettier@npm:^5.1.3": - version: 5.2.1 - resolution: "eslint-plugin-prettier@npm:5.2.1" +"eslint-plugin-prettier@npm:^5.2.1": + version: 5.2.1 + resolution: "eslint-plugin-prettier@npm:5.2.1" dependencies: prettier-linter-helpers: "npm:^1.0.0" synckit: "npm:^0.9.1" @@ -4604,42 +3969,17 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-promise@npm:^6.1.1, eslint-plugin-promise@npm:^6.4.0": - version: 6.6.0 - resolution: "eslint-plugin-promise@npm:6.6.0" - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10/c2b5604efd7e1390c132fcbf06cb2f072c956ffa65c14a991cb74ba1e2327357797239cb5b9b292d5e4010301bb897bd85a6273d7873fb157edc46aa2d95cbd9 - languageName: node - linkType: hard - -"eslint-scope@npm:^7.2.2": - version: 7.2.2 - resolution: "eslint-scope@npm:7.2.2" +"eslint-scope@npm:^8.1.0": + version: 8.1.0 + resolution: "eslint-scope@npm:8.1.0" dependencies: esrecurse: "npm:^4.3.0" estraverse: "npm:^5.2.0" - checksum: 10/5c660fb905d5883ad018a6fea2b49f3cb5b1cbf2cd4bd08e98646e9864f9bc2c74c0839bed2d292e90a4a328833accc197c8f0baed89cbe8d605d6f918465491 + checksum: 10/4c34a12fbeb0677822a9e93e81f2027e39e6f27557c17bc1e5ff76debbd41e748c3673517561792bda9e276245f89fbfd9b0b24fcec3b33a04ee2196729b3489 languageName: node linkType: hard -"eslint-utils@npm:^2.0.0": - version: 2.1.0 - resolution: "eslint-utils@npm:2.1.0" - dependencies: - eslint-visitor-keys: "npm:^1.1.0" - checksum: 10/a7e43a5154a16a90c021cabeb160c3668cccbcf6474ccb2a7d7762698582398f3b938c5330909b858ef7c21182edfc9786dbf89ed7b294f51b7659a378bf7cec - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^1.1.0": - version: 1.3.0 - resolution: "eslint-visitor-keys@npm:1.3.0" - checksum: 10/595ab230e0fcb52f86ba0986a9a473b9fcae120f3729b43f1157f88f27f8addb1e545c4e3d444185f2980e281ca15be5ada6f65b4599eec227cf30e41233b762 - languageName: node - linkType: hard - -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 10/3f357c554a9ea794b094a09bd4187e5eacd1bc0d0653c3adeb87962c548e6a1ab8f982b86963ae1337f5d976004146536dcee5d0e2806665b193fbfbf1a9231b @@ -4653,55 +3993,57 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.57.0": - version: 8.57.1 - resolution: "eslint@npm:8.57.1" +"eslint@npm:^9.12.0": + version: 9.12.0 + resolution: "eslint@npm:9.12.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" - "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.1" - "@humanwhocodes/config-array": "npm:^0.13.0" + "@eslint-community/regexpp": "npm:^4.11.0" + "@eslint/config-array": "npm:^0.18.0" + "@eslint/core": "npm:^0.6.0" + "@eslint/eslintrc": "npm:^3.1.0" + "@eslint/js": "npm:9.12.0" + "@eslint/plugin-kit": "npm:^0.2.0" + "@humanfs/node": "npm:^0.16.5" "@humanwhocodes/module-importer": "npm:^1.0.1" - "@nodelib/fs.walk": "npm:^1.2.8" - "@ungap/structured-clone": "npm:^1.2.0" + "@humanwhocodes/retry": "npm:^0.3.1" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.2" debug: "npm:^4.3.2" - doctrine: "npm:^3.0.0" escape-string-regexp: "npm:^4.0.0" - eslint-scope: "npm:^7.2.2" - eslint-visitor-keys: "npm:^3.4.3" - espree: "npm:^9.6.1" - esquery: "npm:^1.4.2" + eslint-scope: "npm:^8.1.0" + eslint-visitor-keys: "npm:^4.1.0" + espree: "npm:^10.2.0" + esquery: "npm:^1.5.0" esutils: "npm:^2.0.2" fast-deep-equal: "npm:^3.1.3" - file-entry-cache: "npm:^6.0.1" + file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - globals: "npm:^13.19.0" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" - is-path-inside: "npm:^3.0.3" - js-yaml: "npm:^4.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" - levn: "npm:^0.4.1" lodash.merge: "npm:^4.6.2" minimatch: "npm:^3.1.2" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" - strip-ansi: "npm:^6.0.1" text-table: "npm:^0.2.0" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: 10/5504fa24879afdd9f9929b2fbfc2ee9b9441a3d464efd9790fbda5f05738858530182029f13323add68d19fec749d3ab4a70320ded091ca4432b1e9cc4ed104c + checksum: 10/c3f10d1ca3798bf1d0f71e43846e254d4bf0ea9ffbb0e61f9686a98e412aa762a454c5e5ef4e74fd71956b1500c04817c9f08dbf7a0cec47317160e28f585e4f languageName: node linkType: hard -"espree@npm:^10.1.0": +"espree@npm:^10.0.1, espree@npm:^10.2.0": version: 10.2.0 resolution: "espree@npm:10.2.0" dependencies: @@ -4712,17 +4054,6 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.6.0, espree@npm:^9.6.1": - version: 9.6.1 - resolution: "espree@npm:9.6.1" - dependencies: - acorn: "npm:^8.9.0" - acorn-jsx: "npm:^5.3.2" - eslint-visitor-keys: "npm:^3.4.1" - checksum: 10/255ab260f0d711a54096bdeda93adff0eadf02a6f9b92f02b323e83a2b7fc258797919437ad331efec3930475feb0142c5ecaaf3cdab4befebd336d47d3f3134 - languageName: node - linkType: hard - "esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" @@ -4733,7 +4064,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:^1.4.2, esquery@npm:^1.6.0": +"esquery@npm:^1.5.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -4953,12 +4284,12 @@ __metadata: languageName: node linkType: hard -"file-entry-cache@npm:^6.0.1": - version: 6.0.1 - resolution: "file-entry-cache@npm:6.0.1" +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" dependencies: - flat-cache: "npm:^3.0.4" - checksum: 10/099bb9d4ab332cb93c48b14807a6918a1da87c45dce91d4b61fd40e6505d56d0697da060cb901c729c90487067d93c9243f5da3dc9c41f0358483bfdebca736b + flat-cache: "npm:^4.0.0" + checksum: 10/afe55c4de4e0d226a23c1eae62a7219aafb390859122608a89fa4df6addf55c7fd3f1a2da6f5b41e7cdff496e4cf28bbd215d53eab5c817afa96d2b40c81bfb0 languageName: node linkType: hard @@ -5009,14 +4340,13 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4": - version: 3.2.0 - resolution: "flat-cache@npm:3.2.0" +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" dependencies: flatted: "npm:^3.2.9" - keyv: "npm:^4.5.3" - rimraf: "npm:^3.0.2" - checksum: 10/02381c6ece5e9fa5b826c9bbea481d7fd77645d96e4b0b1395238124d581d10e56f17f723d897b6d133970f7a57f0fab9148cbbb67237a0a0ffe794ba60c0c70 + keyv: "npm:^4.5.4" + checksum: 10/58ce851d9045fffc7871ce2bd718bc485ad7e777bf748c054904b87c351ff1080c2c11da00788d78738bfb51b71e4d5ea12d13b98eb36e3358851ffe495b62dc languageName: node linkType: hard @@ -5027,15 +4357,6 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: "npm:^1.1.3" - checksum: 10/fdac0cde1be35610bd635ae958422e8ce0cc1313e8d32ea6d34cfda7b60850940c1fd07c36456ad76bd9c24aef6ff5e03b02beb58c83af5ef6c968a64eada676 - languageName: node - linkType: hard - "foreground-child@npm:^3.1.0": version: 3.3.0 resolution: "foreground-child@npm:3.3.0" @@ -5130,25 +4451,6 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - functions-have-names: "npm:^1.2.3" - checksum: 10/4d40be44d4609942e4e90c4fff77a811fa936f4985d92d2abfcf44f673ba344e2962bf223a33101f79c1a056465f36f09b072b9c289d7660ca554a12491cd5a2 - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.3": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: 10/0ddfd3ed1066a55984aaecebf5419fbd9344a5c38dd120ffb0739fac4496758dcf371297440528b115e4367fc46e3abc86a2cc0ff44612181b175ae967a11a05 - languageName: node - linkType: hard - "gauge@npm:^4.0.3": version: 4.0.4 resolution: "gauge@npm:4.0.4" @@ -5172,19 +4474,6 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" - dependencies: - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - has-proto: "npm:^1.0.1" - has-symbols: "npm:^1.0.3" - hasown: "npm:^2.0.0" - checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d - languageName: node - linkType: hard - "get-stdin@npm:^9.0.0": version: 9.0.0 resolution: "get-stdin@npm:9.0.0" @@ -5192,26 +4481,6 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.5" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - checksum: 10/e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 - languageName: node - linkType: hard - -"get-tsconfig@npm:^4.7.0": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" - dependencies: - resolve-pkg-maps: "npm:^1.0.0" - checksum: 10/3fb5a8ad57b9633eaea085d81661e9e5c9f78b35d8f8689eaf8b8b45a2a3ebf3b3422266d4d7df765e308cc1e6231648d114803ab3d018332e29916f2c1de036 - languageName: node - linkType: hard - "git-hooks-list@npm:^3.0.0": version: 3.1.0 resolution: "git-hooks-list@npm:3.1.0" @@ -5303,33 +4572,21 @@ __metadata: languageName: node linkType: hard -"globals@npm:^13.19.0, globals@npm:^13.24.0": - version: 13.24.0 - resolution: "globals@npm:13.24.0" - dependencies: - type-fest: "npm:^0.20.2" - checksum: 10/62c5b1997d06674fc7191d3e01e324d3eda4d65ac9cc4e78329fa3b5c4fd42a0e1c8722822497a6964eee075255ce21ccf1eec2d83f92ef3f06653af4d0ee28e +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10/03939c8af95c6df5014b137cac83aa909090c3a3985caef06ee9a5a669790877af8698ab38007e4c0186873adc14c0b13764acc754b16a754c216cc56aa5f021 languageName: node linkType: hard -"globals@npm:^15.8.0": +"globals@npm:^15.11.0": version: 15.11.0 resolution: "globals@npm:15.11.0" checksum: 10/14009ef1906ac929d930ed1c896a47159e7d11b4d201901ca5f3827766519191a3f5fb45124de43c4511fee04018704e7ed5a097fb37d23abf39523d1d41c85f languageName: node linkType: hard -"globalthis@npm:^1.0.3": - version: 1.0.4 - resolution: "globalthis@npm:1.0.4" - dependencies: - define-properties: "npm:^1.2.1" - gopd: "npm:^1.0.1" - checksum: 10/1f1fd078fb2f7296306ef9dd51019491044ccf17a59ed49d375b576ca108ff37e47f3d29aead7add40763574a992f16a5367dd1e2173b8634ef18556ab719ac4 - languageName: node - linkType: hard - -"globby@npm:^11.0.0, globby@npm:^11.1.0": +"globby@npm:^11.0.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -5363,16 +4620,7 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2 @@ -5406,13 +4654,6 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 10/4e0426c900af034d12db14abfece02ce7dbf53f2022d28af1a97913ff4c07adb8799476d57dc44fbca0e07d1dbda2a042c2928b1f33d3f09c15de0640a7fb81b - languageName: node - linkType: hard - "has-flag@npm:^3.0.0": version: 3.0.0 resolution: "has-flag@npm:3.0.0" @@ -5427,38 +4668,6 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": - version: 1.0.2 - resolution: "has-property-descriptors@npm:1.0.2" - dependencies: - es-define-property: "npm:^1.0.0" - checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2 - languageName: node - linkType: hard - -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 10/0b67c2c94e3bea37db3e412e3c41f79d59259875e636ba471e94c009cdfb1fa82bf045deeffafc7dbb9c148e36cae6b467055aaa5d9fad4316e11b41e3ba551a - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.2": - version: 1.0.2 - resolution: "has-tostringtag@npm:1.0.2" - dependencies: - has-symbols: "npm:^1.0.3" - checksum: 10/c74c5f5ceee3c8a5b8bc37719840dc3749f5b0306d818974141dda2471a1a2ca6c8e46b9d6ac222c5345df7a901c9b6f350b1e6d62763fec877e26609a401bfe - languageName: node - linkType: hard - "has-unicode@npm:^2.0.1": version: 2.0.1 resolution: "has-unicode@npm:2.0.1" @@ -5476,7 +4685,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0, hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -5645,7 +4854,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": +"ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 10/cceb6a457000f8f6a50e1196429750d782afce5680dd878aa4221bd79972d68b3a55b4b1458fc682be978f4d3c6a249046aa0880637367216444ab7b014cfc98 @@ -5700,17 +4909,6 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" - dependencies: - es-errors: "npm:^1.3.0" - hasown: "npm:^2.0.0" - side-channel: "npm:^1.0.4" - checksum: 10/3e66720508831153ecf37d13def9f6856f9f2960989ec8a0a0476c98f887fca9eff0163127466485cb825c900c2d6fc601aa9117b7783b90ffce23a71ea5d053 - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -5721,52 +4919,7 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" - dependencies: - call-bind: "npm:^1.0.2" - get-intrinsic: "npm:^1.2.1" - checksum: 10/34a26213d981d58b30724ef37a1e0682f4040d580fa9ff58fdfdd3cefcb2287921718c63971c1c404951e7b747c50fdc7caf6e867e951353fa71b369c04c969b - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: "npm:^1.0.1" - checksum: 10/cc981cf0564c503aaccc1e5f39e994ae16ae2d1a8fcd14721f14ad431809071f39ec568cfceef901cff408045f1a6d6bac90d1b43eeb0b8e3bc34c8eb1bdb4c4 - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/ba794223b56a49a9f185e945eeeb6b7833b8ea52a335cec087d08196cf27b538940001615d3bb976511287cefe94e5907d55f00bb49580533f9ca9b4515fcc2e - languageName: node - linkType: hard - -"is-builtin-module@npm:^3.2.1": - version: 3.2.1 - resolution: "is-builtin-module@npm:3.2.1" - dependencies: - builtin-modules: "npm:^3.3.0" - checksum: 10/e8f0ffc19a98240bda9c7ada84d846486365af88d14616e737d280d378695c8c448a621dcafc8332dbf0fcd0a17b0763b845400709963fa9151ddffece90ae88 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 10/48a9297fb92c99e9df48706241a189da362bff3003354aea4048bd5f7b2eb0d823cd16d0a383cece3d76166ba16d85d9659165ac6fcce1ac12e6c649d66dbdb9 - languageName: node - linkType: hard - -"is-core-module@npm:^2.12.1, is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.8.1": +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.8.1": version: 2.15.1 resolution: "is-core-module@npm:2.15.1" dependencies: @@ -5775,24 +4928,6 @@ __metadata: languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" - dependencies: - is-typed-array: "npm:^1.1.13" - checksum: 10/4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.1": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/cc80b3a4b42238fa0d358b9a6230dae40548b349e64a477cb7c5eff9b176ba194c11f8321daaf6dd157e44073e9b7fd01f87db1f14952a88d5657acdcd3a56e2 - languageName: node - linkType: hard - "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -5830,22 +4965,6 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/8700dcf7f602e0a9625830541345b8615d04953655acbf5c6d379c58eb1af1465e71227e95d501343346e1d49b6f2d53cbc166b1fc686a7ec19151272df582f9 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -5853,13 +4972,6 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.3": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: 10/abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - "is-plain-obj@npm:^4.1.0": version: 4.1.0 resolution: "is-plain-obj@npm:4.1.0" @@ -5867,25 +4979,6 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 10/36d9174d16d520b489a5e9001d7d8d8624103b387be300c50f860d9414556d0485d74a612fdafc6ebbd5c89213d947dcc6b6bff6b2312093f71ea03cbb19e564 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.7" - checksum: 10/bc5402900dc62b96ebb2548bf5b0a0bcfacc2db122236fe3ab3b3e3c884293a0d5eb777e73f059bcbf8dc8563bb65eae972fee0fb97e38a9ae27c8678f62bcfe - languageName: node - linkType: hard - "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -5893,15 +4986,6 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 10/2bc292fe927493fb6dfc3338c099c3efdc41f635727c6ebccf704aeb2a27bca7acb9ce6fd34d103db78692b10b22111a8891de26e12bfa1c5e11e263c99d1fef - languageName: node - linkType: hard - "is-subdir@npm:^1.1.1": version: 1.2.0 resolution: "is-subdir@npm:1.2.0" @@ -5911,33 +4995,6 @@ __metadata: languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: "npm:^1.0.2" - checksum: 10/a47dd899a84322528b71318a89db25c7ecdec73197182dad291df15ffea501e17e3c92c8de0bfb50e63402747399981a687b31c519971b1fa1a27413612be929 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.13": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" - dependencies: - which-typed-array: "npm:^1.1.14" - checksum: 10/f850ba08286358b9a11aee6d93d371a45e3c59b5953549ee1c1a9a55ba5c1dd1bd9952488ae194ad8f32a9cf5e79c8fa5f0cc4d78c00720aa0bbcf238b38062d - languageName: node - linkType: hard - -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - checksum: 10/0023fd0e4bdf9c338438ffbe1eed7ebbbff7e7e18fb7cdc227caaf9d4bd024a2dcdf6a8c9f40c92192022eac8391243bb9e66cccebecbf6fe1d8a366108f8513 - languageName: node - linkType: hard - "is-windows@npm:^1.0.0": version: 1.0.2 resolution: "is-windows@npm:1.0.2" @@ -5945,13 +5002,6 @@ __metadata: languageName: node linkType: hard -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: 10/1d8bc7911e13bb9f105b1b3e0b396c787a9e63046af0b8fe0ab1414488ab06b2b099b87a2d8a9e31d21c9a6fad773c7fc8b257c4880f2d957274479d28ca3414 - languageName: node - linkType: hard - "isexe@npm:^2.0.0": version: 2.0.0 resolution: "isexe@npm:2.0.0" @@ -6089,13 +5139,6 @@ __metadata: languageName: node linkType: hard -"jsdoc-type-pratt-parser@npm:~4.0.0": - version: 4.0.0 - resolution: "jsdoc-type-pratt-parser@npm:4.0.0" - checksum: 10/a225ab874e56612730dd6c0466ce9f09e8a0e7d85896e9e5f0fa53cfb2e897128a7ec702fd99ed3854b3fbf5a89ad6dce72ca4f4f6149da69f130c2874f06b75 - languageName: node - linkType: hard - "jsesc@npm:^3.0.2": version: 3.0.2 resolution: "jsesc@npm:3.0.2" @@ -6146,17 +5189,6 @@ __metadata: languageName: node linkType: hard -"json5@npm:^1.0.2": - version: 1.0.2 - resolution: "json5@npm:1.0.2" - dependencies: - minimist: "npm:^1.2.0" - bin: - json5: lib/cli.js - checksum: 10/a78d812dbbd5642c4f637dd130954acfd231b074965871c3e28a5bbd571f099d623ecf9161f1960c4ddf68e0cc98dee8bebfdb94a71ad4551f85a1afc94b63f6 - languageName: node - linkType: hard - "json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" @@ -6198,7 +5230,7 @@ __metadata: languageName: node linkType: hard -"keyv@npm:^4.5.3": +"keyv@npm:^4.5.4": version: 4.5.4 resolution: "keyv@npm:4.5.4" dependencies: @@ -6584,15 +5616,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/c81b47d28153e77521877649f4bab48348d10938df9e8147a58111fe00ef89559a2938de9f6632910c4f7bf7bb5cd81191a546167e58d357f0cfb1e18cecc1c5 - languageName: node - linkType: hard - "minimatch@npm:^10.0.0": version: 10.0.1 resolution: "minimatch@npm:10.0.1" @@ -6602,7 +5625,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -6629,13 +5652,6 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0, minimist@npm:^1.2.6": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f - languageName: node - linkType: hard - "minipass-collect@npm:^1.0.2": version: 1.0.2 resolution: "minipass-collect@npm:1.0.2" @@ -6770,7 +5786,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0, ms@npm:^2.1.1, ms@npm:^2.1.3": +"ms@npm:^2.0.0, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -6967,77 +5983,6 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 10/7ef65583b6397570a17c56f0c1841e0920e83900f2c94638927abb7b81ac08a19c7aae135bd9dcca96208cac0c7332b4650fb927f027b0cf92d71df2990d0561 - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: 10/3d81d02674115973df0b7117628ea4110d56042e5326413e4b4313f0bcdf7dd78d4a3acef2c831463fa3796a66762c49daef306f4a0ea1af44877d7086d73bde - languageName: node - linkType: hard - -"object.assign@npm:^4.1.2, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" - dependencies: - call-bind: "npm:^1.0.5" - define-properties: "npm:^1.2.1" - has-symbols: "npm:^1.0.3" - object-keys: "npm:^1.1.1" - checksum: 10/dbb22da4cda82e1658349ea62b80815f587b47131b3dd7a4ab7f84190ab31d206bbd8fe7e26ae3220c55b65725ac4529825f6142154211220302aa6b1518045d - languageName: node - linkType: hard - -"object.entries@npm:^1.1.5": - version: 1.1.8 - resolution: "object.entries@npm:1.1.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/2301918fbd1ee697cf6ff7cd94f060c738c0a7d92b22fd24c7c250e9b593642c9707ad2c44d339303c1439c5967d8964251cdfc855f7f6ec55db2dd79e8dc2a7 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.8": - version: 2.0.8 - resolution: "object.fromentries@npm:2.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10/5b2e80f7af1778b885e3d06aeb335dcc86965e39464671adb7167ab06ac3b0f5dd2e637a90d8ebd7426d69c6f135a4753ba3dd7d0fe2a7030cf718dcb910fd92 - languageName: node - linkType: hard - -"object.groupby@npm:^1.0.3": - version: 1.0.3 - resolution: "object.groupby@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - checksum: 10/44cb86dd2c660434be65f7585c54b62f0425b0c96b5c948d2756be253ef06737da7e68d7106e35506ce4a44d16aa85a413d11c5034eb7ce5579ec28752eb42d0 - languageName: node - linkType: hard - -"object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/db2e498019c354428c5dd30d02980d920ac365b155fce4dcf63eb9433f98ccf0f72624309e182ce7cc227c95e45d474e1d483418e60de2293dd23fa3ebe34903 - languageName: node - linkType: hard - "once@npm:^1.3.0, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -7230,16 +6175,6 @@ __metadata: languageName: node linkType: hard -"parse-imports@npm:^2.1.1": - version: 2.2.1 - resolution: "parse-imports@npm:2.2.1" - dependencies: - es-module-lexer: "npm:^1.5.3" - slashes: "npm:^3.0.12" - checksum: 10/db1d98077587d23bfa1f136abae158ea08e1e588d0260dfc0769092be86b842c798ae47466742b1d9bc106d3430cebbd9730fc34872a2c0e72b9ff720986e82e - languageName: node - linkType: hard - "path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -7351,13 +6286,6 @@ __metadata: languageName: node linkType: hard -"possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: 10/8ed3e96dfeea1c5880c1f4c9cb707e5fb26e8be22f14f82ef92df20fd2004e635c62ba47fbe8f2bb63bfd80dac1474be2fb39798da8c2feba2815435d1f749af - languageName: node - linkType: hard - "postcss@npm:^8.4.43": version: 8.4.47 resolution: "postcss@npm:8.4.47" @@ -7592,25 +6520,6 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.2": - version: 1.5.3 - resolution: "regexp.prototype.flags@npm:1.5.3" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-errors: "npm:^1.3.0" - set-function-name: "npm:^2.0.2" - checksum: 10/fe17bc4eebbc72945aaf9dd059eb7784a5ca453a67cc4b5b3e399ab08452c9a05befd92063e2c52e7b24d9238c60031656af32dd57c555d1ba6330dbf8c23b43 - languageName: node - linkType: hard - -"regexpp@npm:^3.0.0": - version: 3.2.0 - resolution: "regexpp@npm:3.2.0" - checksum: 10/3310010895a906873262f4b494fc99bcef1e71ef6720a0532c5999ca586498cbd4a284c8e3c2423f9d1d37512fd08d6064b7564e0e59508cf938f76dd15ace84 - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -7625,14 +6534,7 @@ __metadata: languageName: node linkType: hard -"resolve-pkg-maps@npm:^1.0.0": - version: 1.0.0 - resolution: "resolve-pkg-maps@npm:1.0.0" - checksum: 10/0763150adf303040c304009231314d1e84c6e5ebfa2d82b7d94e96a6e82bacd1dcc0b58ae257315f3c8adb89a91d8d0f12928241cba2df1680fbe6f60bf99b0e - languageName: node - linkType: hard - -"resolve@npm:^1.10.1, resolve@npm:^1.22.1, resolve@npm:^1.22.2, resolve@npm:^1.22.4": +"resolve@npm:^1.22.1": version: 1.22.8 resolution: "resolve@npm:1.22.8" dependencies: @@ -7645,7 +6547,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.10.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.22.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.4#optional!builtin": +"resolve@patch:resolve@npm%3A^1.22.1#optional!builtin": version: 1.22.8 resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d" dependencies: @@ -7829,18 +6731,6 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.7" - get-intrinsic: "npm:^1.2.4" - has-symbols: "npm:^1.0.3" - isarray: "npm:^2.0.5" - checksum: 10/a54f8040d7cb696a1ee38d19cc71ab3cfb654b9b81bae00c6459618cfad8214ece7e6666592f9c925aafef43d0a20c5e6fbb3413a2b618e1ce9d516a2e6dcfc5 - languageName: node - linkType: hard - "safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" @@ -7855,17 +6745,6 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" - dependencies: - call-bind: "npm:^1.0.6" - es-errors: "npm:^1.3.0" - is-regex: "npm:^1.1.4" - checksum: 10/b04de61114b10274d92e25b6de7ccb5de07f11ea15637ff636de4b5190c0f5cd8823fe586dde718504cf78055437d70fd8804976894df502fcf5a210c970afb3 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -7880,7 +6759,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.1.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -7889,7 +6768,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.6.3": +"semver@npm:^7.1.1, semver@npm:^7.3.5, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -7914,32 +6793,6 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": - version: 1.2.2 - resolution: "set-function-length@npm:1.2.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - function-bind: "npm:^1.1.2" - get-intrinsic: "npm:^1.2.4" - gopd: "npm:^1.0.1" - has-property-descriptors: "npm:^1.0.2" - checksum: 10/505d62b8e088468917ca4e3f8f39d0e29f9a563b97dbebf92f4bd2c3172ccfb3c5b8e4566d5fcd00784a00433900e7cb8fbc404e2dbd8c3818ba05bb9d4a8a6d - languageName: node - linkType: hard - -"set-function-name@npm:^2.0.2": - version: 2.0.2 - resolution: "set-function-name@npm:2.0.2" - dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" - functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.2" - checksum: 10/c7614154a53ebf8c0428a6c40a3b0b47dac30587c1a19703d1b75f003803f73cdfa6a93474a9ba678fa565ef5fbddc2fae79bca03b7d22ab5fd5163dbe571a74 - languageName: node - linkType: hard - "shebang-command@npm:^1.2.0": version: 1.2.0 resolution: "shebang-command@npm:1.2.0" @@ -7986,18 +6839,6 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - get-intrinsic: "npm:^1.2.4" - object-inspect: "npm:^1.13.1" - checksum: 10/eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d - languageName: node - linkType: hard - "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -8048,13 +6889,6 @@ __metadata: languageName: node linkType: hard -"slashes@npm:^3.0.12": - version: 3.0.12 - resolution: "slashes@npm:3.0.12" - checksum: 10/c221d73765013db64f3eaf49dacc6b99a5d5477e63720c1bb71d1af647965dda23ab100ca1eb622e080f11ffe68e1e0a233b7b908073260bed4ec819ff1d3e42 - languageName: node - linkType: hard - "slice-ansi@npm:^4.0.0": version: 4.0.0 resolution: "slice-ansi@npm:4.0.0" @@ -8205,16 +7039,6 @@ __metadata: languageName: node linkType: hard -"spdx-expression-parse@npm:^4.0.0": - version: 4.0.0 - resolution: "spdx-expression-parse@npm:4.0.0" - dependencies: - spdx-exceptions: "npm:^2.1.0" - spdx-license-ids: "npm:^3.0.0" - checksum: 10/936be681fbf5edeec3a79c023136479f70d6edb3fd3875089ac86cd324c6c8c81add47399edead296d1d0af17ae5ce88c7f88885eb150b62c2ff6e535841ca6a - languageName: node - linkType: hard - "spdx-license-ids@npm:^3.0.0": version: 3.0.20 resolution: "spdx-license-ids@npm:3.0.20" @@ -8290,40 +7114,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.0" - es-object-atoms: "npm:^1.0.0" - checksum: 10/b2170903de6a2fb5a49bb8850052144e04b67329d49f1343cdc6a87cb24fb4e4b8ad00d3e273a399b8a3d8c32c89775d93a8f43cb42fbff303f25382079fb58a - languageName: node - linkType: hard - -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/c2e862ae724f95771da9ea17c27559d4eeced9208b9c20f69bbfcd1b9bc92375adf8af63a103194dba17c4cc4a5cb08842d929f415ff9d89c062d44689c8761b - languageName: node - linkType: hard - -"string.prototype.trimstart@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimstart@npm:1.0.8" - dependencies: - call-bind: "npm:^1.0.7" - define-properties: "npm:^1.2.1" - es-object-atoms: "npm:^1.0.0" - checksum: 10/160167dfbd68e6f7cb9f51a16074eebfce1571656fc31d40c3738ca9e30e35496f2c046fe57b6ad49f65f238a152be8c86fd9a2dd58682b5eba39dad995b3674 - languageName: node - linkType: hard - "string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" @@ -8410,13 +7200,6 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^2.2.0": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 10/1769336dd21481ae6347611ca5fca47add0962fd8e80466515032125eca0084a4f0ede11e65341b9c0018ef4e1cf1ad820adbb0fba7cc99865c6005734000b0a - languageName: node - linkType: hard - "tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -8537,7 +7320,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": +"ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" peerDependencies: @@ -8560,18 +7343,6 @@ __metadata: languageName: node linkType: hard -"tsconfig-paths@npm:^3.15.0": - version: 3.15.0 - resolution: "tsconfig-paths@npm:3.15.0" - dependencies: - "@types/json5": "npm:^0.0.29" - json5: "npm:^1.0.2" - minimist: "npm:^1.2.6" - strip-bom: "npm:^3.0.0" - checksum: 10/2041beaedc6c271fc3bedd12e0da0cc553e65d030d4ff26044b771fac5752d0460944c0b5e680f670c2868c95c664a256cec960ae528888db6ded83524e33a14 - languageName: node - linkType: hard - "tsconfig@workspace:shared/tsconfig": version: 0.0.0-use.local resolution: "tsconfig@workspace:shared/tsconfig" @@ -8697,58 +7468,6 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.7" - es-errors: "npm:^1.3.0" - is-typed-array: "npm:^1.1.13" - checksum: 10/02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/e4a38329736fe6a73b52a09222d4a9e8de14caaa4ff6ad8e55217f6705b017d9815b7284c85065b3b8a7704e226ccff1372a72b78c2a5b6b71b7bf662308c903 - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/ac26d720ebb2aacbc45e231347c359e6649f52e0cfe0e76e62005912f8030d68e4cb7b725b1754e8fdd48e433cb68df5a8620a3e420ad1457d666e8b29bf9150 - languageName: node - linkType: hard - -"typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" - dependencies: - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - checksum: 10/05e96cf4ff836743ebfc593d86133b8c30e83172cb5d16c56814d7bacfed57ce97e87ada9c4b2156d9aaa59f75cdef01c25bd9081c7826e0b869afbefc3e8c39 - languageName: node - linkType: hard - "typedoc@npm:^0.26.8": version: 0.26.8 resolution: "typedoc@npm:0.26.8" @@ -8766,6 +7485,20 @@ __metadata: languageName: node linkType: hard +"typescript-eslint@npm:^8.9.0": + version: 8.9.0 + resolution: "typescript-eslint@npm:8.9.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.9.0" + "@typescript-eslint/parser": "npm:8.9.0" + "@typescript-eslint/utils": "npm:8.9.0" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10/34ec65b9f3b9b2a8a17e02bf85c3eab1b9c8a1ccd51883038a2e69f8064177de68916b92976d3b1fe96e52c95898e0de204f43269b76e2230fbefad41cf9b061 + languageName: node + linkType: hard + "typescript-paths@npm:^1.5.1": version: 1.5.1 resolution: "typescript-paths@npm:1.5.1" @@ -8802,18 +7535,6 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" - dependencies: - call-bind: "npm:^1.0.2" - has-bigints: "npm:^1.0.2" - has-symbols: "npm:^1.0.3" - which-boxed-primitive: "npm:^1.0.2" - checksum: 10/06e1ee41c1095e37281cb71a975cb3350f7cb470a0665d2576f02cc9564f623bd90cfc0183693b8a7fdf2d242963dcc3010b509fa3ac683f540c765c0f3e7e43 - languageName: node - linkType: hard - "undici-types@npm:~6.19.2": version: 6.19.8 resolution: "undici-types@npm:6.19.8" @@ -9243,32 +7964,6 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 10/9c7ca7855255f25ac47f4ce8b59c4cc33629e713fd7a165c9d77a2bb47bf3d9655a5664660c70337a3221cf96742f3589fae15a3a33639908d33e29aa2941efb - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" - dependencies: - available-typed-arrays: "npm:^1.0.7" - call-bind: "npm:^1.0.7" - for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-tostringtag: "npm:^1.0.2" - checksum: 10/c3b6a99beadc971baa53c3ee5b749f2b9bdfa3b3b9a70650dd8511a48b61d877288b498d424712e9991d16019633086bd8b5923369460d93463c5825fa36c448 - languageName: node - linkType: hard - "which@npm:^1.2.9": version: 1.3.1 resolution: "which@npm:1.3.1" @@ -9456,11 +8151,21 @@ __metadata: dependencies: "@changesets/changelog-git": "npm:^0.2.0" "@changesets/cli": "npm:^2.27.9" + "@eslint/compat": "npm:^1.2.0" + "@eslint/js": "npm:^9.12.0" "@ianvs/prettier-plugin-sort-imports": "npm:^4.3.1" + "@types/eslint__js": "npm:^8.42.3" + "@types/node": "npm:^20.16.11" + eslint: "npm:^9.12.0" + eslint-config-prettier: "npm:^9.1.0" + eslint-plugin-prettier: "npm:^5.2.1" + globals: "npm:^15.11.0" prettier: "npm:^3.3.3" prettier-plugin-packagejson: "npm:^2.5.3" rimraf: "npm:^6.0.1" turbo: "npm:^2.1.3" + typescript: "npm:^5.6.3" + typescript-eslint: "npm:^8.9.0" languageName: unknown linkType: soft