diff --git a/.eslintrc.js b/.eslintrc.js index 21387291b5..15060abbe8 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -24,6 +24,7 @@ module.exports = { '**/fromExternal/**', ], rules: { + 'no-param-reassign': 'error', 'eqeqeq': ['error', 'always', { null: 'ignore' }], 'prefer-const': ['error', { ignoreReadBeforeAssign: true }], 'no-var': 'error', diff --git a/packages/sdk/browser/__tests__/platform/randomUuidV4.test.ts b/packages/sdk/browser/__tests__/platform/randomUuidV4.test.ts index 03ec22d120..73be7647bc 100644 --- a/packages/sdk/browser/__tests__/platform/randomUuidV4.test.ts +++ b/packages/sdk/browser/__tests__/platform/randomUuidV4.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-bitwise */ import { fallbackUuidV4, formatDataAsUuidV4 } from '../../src/platform/randomUuidV4'; it('formats conformant UUID', () => { diff --git a/packages/sdk/electron/__tests__/platform/HeaderWrapper.test.ts b/packages/sdk/electron/__tests__/platform/HeaderWrapper.test.ts index fa16d7eb17..d2c89ae6b9 100644 --- a/packages/sdk/electron/__tests__/platform/HeaderWrapper.test.ts +++ b/packages/sdk/electron/__tests__/platform/HeaderWrapper.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable no-restricted-syntax */ -// The header interface uses generators, so we are using restricted-syntax. import * as http from 'http'; import HeaderWrapper from '../../src/platform/HeaderWrapper'; diff --git a/packages/sdk/electron/src/platform/HeaderWrapper.ts b/packages/sdk/electron/src/platform/HeaderWrapper.ts index ec63ae1843..9c447c2a8f 100644 --- a/packages/sdk/electron/src/platform/HeaderWrapper.ts +++ b/packages/sdk/electron/src/platform/HeaderWrapper.ts @@ -35,7 +35,6 @@ export default class HeaderWrapper implements platform.Headers { // We want to use generators here for the simplicity of maintaining // this interface. Also they aren't expected to be high frequency usage. *values(): Iterable { - // eslint-disable-next-line no-restricted-syntax for (const key of this.keys()) { const val = this.get(key); if (val !== null) { @@ -45,7 +44,6 @@ export default class HeaderWrapper implements platform.Headers { } *entries(): Iterable<[string, string]> { - // eslint-disable-next-line no-restricted-syntax for (const key of this.keys()) { const val = this.get(key); if (val !== null) { diff --git a/packages/sdk/react-native/src/fromExternal/react-native-sse/EventSource.ts b/packages/sdk/react-native/src/fromExternal/react-native-sse/EventSource.ts index 89dbf83b5a..9ba565582a 100644 --- a/packages/sdk/react-native/src/fromExternal/react-native-sse/EventSource.ts +++ b/packages/sdk/react-native/src/fromExternal/react-native-sse/EventSource.ts @@ -278,7 +278,6 @@ export default class EventSource { let retry = 0; let line = ''; - // eslint-disable-next-line no-plusplus for (let i = 0; i < parts.length; i++) { line = parts[i].replace(/^(\s|\u00A0)+|(\s|\u00A0)+$/g, ''); if (line.indexOf('event') === 0) { diff --git a/packages/sdk/react-native/src/platform/crypto/index.ts b/packages/sdk/react-native/src/platform/crypto/index.ts index a4bfdd4dda..709aff10c0 100644 --- a/packages/sdk/react-native/src/platform/crypto/index.ts +++ b/packages/sdk/react-native/src/platform/crypto/index.ts @@ -3,7 +3,6 @@ import type { Crypto, Hmac } from '@launchdarkly/js-client-sdk-common'; import PlatformHasher from './PlatformHasher'; import { SupportedHashAlgorithm } from './types'; -/* eslint-disable no-bitwise */ /** * To avoid dependencies on uuid, this is good enough for now. * Ripped from the react-native repo: diff --git a/packages/sdk/react-native/src/polyfills/btoa.ts b/packages/sdk/react-native/src/polyfills/btoa.ts index 4b59523884..ee02f24b72 100644 --- a/packages/sdk/react-native/src/polyfills/btoa.ts +++ b/packages/sdk/react-native/src/polyfills/btoa.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-bitwise */ import { fromByteArray } from 'base64-js'; import toUtf8Array from './toUtf8Array'; diff --git a/packages/sdk/react-native/src/polyfills/toUtf8Array.ts b/packages/sdk/react-native/src/polyfills/toUtf8Array.ts index e582754356..d34ae73ea5 100644 --- a/packages/sdk/react-native/src/polyfills/toUtf8Array.ts +++ b/packages/sdk/react-native/src/polyfills/toUtf8Array.ts @@ -1,6 +1,3 @@ -/* eslint-disable no-plusplus */ -/* eslint-disable no-bitwise */ - // Originally from: https://github.com/google/closure-library/blob/a1f5a029c1b32eb4793a2d920aa52abc085e1bf7/closure/goog/crypt/crypt.js // Once React Native versions uniformly support TextEncoder this code can be removed. diff --git a/packages/sdk/react-native/src/polyfills/uuid.ts b/packages/sdk/react-native/src/polyfills/uuid.ts index 142a322bc6..dd86157f72 100644 --- a/packages/sdk/react-native/src/polyfills/uuid.ts +++ b/packages/sdk/react-native/src/polyfills/uuid.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-bitwise */ /** * To avoid dependencies on uuid, this is good enough for now. * Ripped from the react-native repo: diff --git a/packages/sdk/server-ai/examples/vercel-ai/src/index.ts b/packages/sdk/server-ai/examples/vercel-ai/src/index.ts index af1db3e918..ec14fe9157 100644 --- a/packages/sdk/server-ai/examples/vercel-ai/src/index.ts +++ b/packages/sdk/server-ai/examples/vercel-ai/src/index.ts @@ -106,7 +106,6 @@ async function main() { ); // Consume the stream immediately - no await needed before this! - // eslint-disable-next-line no-restricted-syntax for await (const textPart of streamResult.textStream) { process.stdout.write(textPart); } diff --git a/packages/sdk/server-ai/src/api/providers/AIProviderFactory.ts b/packages/sdk/server-ai/src/api/providers/AIProviderFactory.ts index f5b15c69c7..fd4764e0de 100644 --- a/packages/sdk/server-ai/src/api/providers/AIProviderFactory.ts +++ b/packages/sdk/server-ai/src/api/providers/AIProviderFactory.ts @@ -41,7 +41,6 @@ export class AIProviderFactory { const providersToTry = this._getProvidersToTry(defaultAiProvider, providerName); // Try each provider in order - // eslint-disable-next-line no-restricted-syntax for (const providerType of providersToTry) { logger?.debug( `Attempting to create AIProvider for: ${aiConfig.provider?.name} with provider type: ${providerType}`, diff --git a/packages/sdk/server-node/__tests__/platform/HeaderWrapper.test.ts b/packages/sdk/server-node/__tests__/platform/HeaderWrapper.test.ts index 4bedc445df..bf1cfd0b50 100644 --- a/packages/sdk/server-node/__tests__/platform/HeaderWrapper.test.ts +++ b/packages/sdk/server-node/__tests__/platform/HeaderWrapper.test.ts @@ -1,5 +1,3 @@ -/* eslint-disable no-restricted-syntax */ -// The header interface uses generators, so we are using restricted-syntax. import * as http from 'http'; import HeaderWrapper from '../../src/platform/HeaderWrapper'; diff --git a/packages/sdk/server-node/src/platform/HeaderWrapper.ts b/packages/sdk/server-node/src/platform/HeaderWrapper.ts index 166d73854b..dee99edc92 100644 --- a/packages/sdk/server-node/src/platform/HeaderWrapper.ts +++ b/packages/sdk/server-node/src/platform/HeaderWrapper.ts @@ -35,7 +35,6 @@ export default class HeaderWrapper implements platform.Headers { // We want to use generators here for the simplicity of maintaining // this interface. Also they aren't expected to be high frequency usage. *values(): Iterable { - // eslint-disable-next-line no-restricted-syntax for (const key of this.keys()) { const val = this.get(key); if (val !== null) { @@ -45,7 +44,6 @@ export default class HeaderWrapper implements platform.Headers { } *entries(): Iterable<[string, string]> { - // eslint-disable-next-line no-restricted-syntax for (const key of this.keys()) { const val = this.get(key); if (val !== null) { diff --git a/packages/store/node-server-sdk-dynamodb/__tests__/clearPrefix.ts b/packages/store/node-server-sdk-dynamodb/__tests__/clearPrefix.ts index 6a3e51e95a..a070d46464 100644 --- a/packages/store/node-server-sdk-dynamodb/__tests__/clearPrefix.ts +++ b/packages/store/node-server-sdk-dynamodb/__tests__/clearPrefix.ts @@ -16,7 +16,6 @@ export default async function clearPrefix(table: string, prefix?: string) { const deleteOps: WriteRequest[] = []; // Using a generator here is a substantial ergonomic improvement and this is a test file. - // eslint-disable-next-line no-restricted-syntax for await (const page of paginateScan( { client }, { diff --git a/packages/store/node-server-sdk-dynamodb/src/DynamoDBClientState.ts b/packages/store/node-server-sdk-dynamodb/src/DynamoDBClientState.ts index 82f654497d..2a672e2cb8 100644 --- a/packages/store/node-server-sdk-dynamodb/src/DynamoDBClientState.ts +++ b/packages/store/node-server-sdk-dynamodb/src/DynamoDBClientState.ts @@ -64,7 +64,6 @@ export default class DynamoDBClientState { async query(params: QueryCommandInput): Promise[]> { const records: Record[] = []; // Using a generator here is a substantial ergonomic improvement. - // eslint-disable-next-line no-restricted-syntax for await (const page of paginateQuery({ client: this._client }, params)) { if (page.Items) { records.push(...page.Items); diff --git a/packages/telemetry/browser-telemetry/__tests__/randomUuidV4.test.ts b/packages/telemetry/browser-telemetry/__tests__/randomUuidV4.test.ts index c67e68387f..7eec22f54d 100644 --- a/packages/telemetry/browser-telemetry/__tests__/randomUuidV4.test.ts +++ b/packages/telemetry/browser-telemetry/__tests__/randomUuidV4.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-bitwise */ import { fallbackUuidV4, formatDataAsUuidV4 } from '../src/randomUuidV4'; it('formats conformant UUID', () => { diff --git a/packages/telemetry/browser-telemetry/__tests__/vendor/TraceKit/computeStackTrace.test.ts b/packages/telemetry/browser-telemetry/__tests__/vendor/TraceKit/computeStackTrace.test.ts index 46a0d68ef9..3118a6fd31 100644 --- a/packages/telemetry/browser-telemetry/__tests__/vendor/TraceKit/computeStackTrace.test.ts +++ b/packages/telemetry/browser-telemetry/__tests__/vendor/TraceKit/computeStackTrace.test.ts @@ -6,7 +6,6 @@ import { getTraceKit } from '../../../src/vendor/TraceKit'; import * as CapturedExceptions from './CapturedExceptions'; -/* eslint-disable no-plusplus */ /* eslint-disable no-useless-escape */ /* eslint-disable @typescript-eslint/no-use-before-define */ diff --git a/packages/telemetry/browser-telemetry/src/vendor/TraceKit.ts b/packages/telemetry/browser-telemetry/src/vendor/TraceKit.ts index 57b605b95a..787d42aa7c 100644 --- a/packages/telemetry/browser-telemetry/src/vendor/TraceKit.ts +++ b/packages/telemetry/browser-telemetry/src/vendor/TraceKit.ts @@ -24,18 +24,15 @@ /* eslint-disable func-names */ /* eslint-disable no-shadow-restricted-names */ /* eslint-disable prefer-destructuring */ -/* eslint-disable no-param-reassign */ /* eslint-disable no-cond-assign */ /* eslint-disable consistent-return */ /* eslint-disable no-empty */ -/* eslint-disable no-plusplus */ /* eslint-disable prefer-rest-params */ /* eslint-disable no-useless-escape */ -/* eslint-disable no-restricted-syntax */ /* eslint-disable @typescript-eslint/no-unused-vars */ /* eslint-disable @typescript-eslint/no-use-before-define */ -/* eslint-disable no-continue */ /* eslint-disable no-underscore-dangle */ +/* eslint-disable no-param-reassign */ /** * Source context information. @@ -805,6 +802,7 @@ export interface StackTrace { const inlineScriptBlocks = []; let parts: any; + // eslint-disable-next-line no-restricted-syntax for (const s in scripts) { if (_has(scripts, s) && !scripts[s].src) { inlineScriptBlocks.push(scripts[s]);