diff --git a/.eslintignore b/.eslintignore index 0ca61147f73c..a85b04f0c719 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,7 +1,16 @@ **/node_modules +**/build +**/system-test +**/test/fixtures +**/samples/generated +**/.coverage **/coverage +**/baselines +**/baselines-esm +**/.test-out* test/fixtures build/ docs/ protos/ packages/ +**/types.d.ts diff --git a/.eslintrc.json b/.eslintrc.json index 4f9e1c4f2f1d..ab61da4fa66b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,20 +1,80 @@ { "extends": [ - "./node_modules/gts", + "gts", "plugin:prettier/recommended", "plugin:import/recommended", "plugin:import/typescript", "plugin:promise/recommended" ], "root": true, - // Note: All rules configured as "error" are blocking in the PR CI pipeline. - // Only rules configured as "warn" remain non-blocking. "rules": { "import/no-unresolved": "off", "import/no-extraneous-dependencies": "error", "promise/catch-or-return": "error", "promise/always-return": "error" }, + "overrides": [ + // The overrides below were migrated from handwritten/firestore/.eslintrc.json + // during monorepo ESLint consolidation to maintain Firestore-specific rules. + { + "files": ["handwritten/firestore/dev/src/**/*.ts"], + "excludedFiles": ["handwritten/firestore/dev/src/v1/*.ts", "handwritten/firestore/dev/src/v1beta1/*.ts"], + "parser": "@typescript-eslint/parser", + "rules": { + "@typescript-eslint/explicit-function-return-type": [ + "error", + { + "allowExpressions": true, + "allowTypedFunctionExpressions": true + } + ], + "no-console": ["error", {"allow": ["error"]}], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_" + } + ] + } + }, + { + "files": ["handwritten/firestore/dev/test/*.ts", "handwritten/firestore/dev/system-test/*.ts"], + "parser": "@typescript-eslint/parser", + "rules": { + "no-restricted-properties": [ + "error", + { + "object": "describe", + "property": "only" + }, + { + "object": "it", + "property": "only" + } + ], + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_" + } + ], + "@typescript-eslint/no-floating-promises": "warn" + } + }, + { + "files": [ + "handwritten/firestore/dev/src/v1/**/*.ts", + "handwritten/firestore/dev/src/v1beta1/**/*.ts", + "handwritten/firestore/dev/test/gapic_firestore_v1.ts", + "handwritten/firestore/dev/test/gapic_firestore_admin_v1.ts", + "handwritten/firestore/dev/test/gapic_firestore_admin_v1.ts" + ], + "rules": { + "@typescript-eslint/no-explicit-any": ["off"], + "@typescript-eslint/no-floating-promises": ["off"] + } + } + ], "ignorePatterns": [ "**/node_modules", "**/build", diff --git a/.github/workflows/presubmit.yaml b/.github/workflows/presubmit.yaml index dc152e2bec88..8d57d62c60a1 100644 --- a/.github/workflows/presubmit.yaml +++ b/.github/workflows/presubmit.yaml @@ -34,12 +34,14 @@ jobs: steps: - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 with: - fetch-depth: 300 + fetch-depth: 2 persist-credentials: false - name: Use Node.js 24 uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: 24 - run: npm install - - run: npm run lint + - run: node ./bin/linter.mjs --strict name: Run monorepo linter + env: + GIT_DIFF_ARG: "HEAD^1...HEAD" diff --git a/bin/linter.mjs b/bin/linter.mjs index bd9a976ca944..ee25bb9de4b3 100755 --- a/bin/linter.mjs +++ b/bin/linter.mjs @@ -17,16 +17,20 @@ import {existsSync} from 'fs'; import path from 'path'; import {promisify} from 'util'; import {ESLint} from 'eslint'; -import ts from 'typescript'; -// --- Globals & Promisified API Wrappers --- const execFileAsync = promisify(execFile); const tsconfigCache = new Map(); // --- Main Runner (Entry Point) --- async function run() { try { - const changedTsFiles = getChangedFiles(); + const isStrict = Boolean(process.argv.includes('--strict')); + let changedTsFiles; + if (isStrict) { + changedTsFiles = getChangedFilesStrict(); + } else { + changedTsFiles = getChangedFiles(); + } if (changedTsFiles.length === 0) { console.log('No TypeScript files changed. Skipping checks.'); @@ -63,6 +67,50 @@ function runGit(args, options = {}) { }); } +function getChangedFilesStrict() { + let gitDiffArg = process.env.GIT_DIFF_ARG; + + if (!gitDiffArg) { + throw new Error( + 'Strict mode is enabled, but GIT_DIFF_ARG environment variable or --git-diff-arg flag was not provided. ' + + 'Please set the GIT_DIFF_ARG environment variable or provide --git-diff-arg .' + ); + } + + // If a single ref is provided (e.g. "HEAD^1" or "origin/main"), convert to three-dot diff ("ref...HEAD") + // to compare against the merge-base and avoid listing files modified on the base branch. + if (!gitDiffArg.includes('..')) { + gitDiffArg = `${gitDiffArg}...HEAD`; + } + + console.log(`Strict mode enabled. Comparing using GIT_DIFF_ARG: ${gitDiffArg}`); + + const args = gitDiffArg.trim().split(/\s+/); + + try { + const output = runGit([ + 'diff', + '--name-only', + '--diff-filter=ACMRT', + ...args, + '--', + '*.ts', + ]); + return output + .split('\n') + .map(f => f.trim()) + .filter(f => f.length > 0 && existsSync(f)); + } catch (err) { + if (err.status !== 1) { + throw new Error( + `Strict mode error: git diff ${gitDiffArg} failed with exit code ${err.status}.\n` + + `Ensure that the git reference '${gitDiffArg}' exists locally and that you have fetched the required commits/branches.\n` + + `Details: ${String(err.stderr || err.message || '').trim()}` + ); + } + } +} + /** * Returns a list of changed TypeScript files comparing against target branches/references. */ @@ -79,11 +127,12 @@ function getChangedFiles() { for (const ref of refsToTry) { try { + const diffRef = ref.includes('..') ? ref : `${ref}...HEAD`; const output = runGit([ 'diff', '--name-only', '--diff-filter=ACMRT', - ref, + diffRef, '--', '*.ts', ]); @@ -126,37 +175,59 @@ async function checkEslint(filesToCheck) { return true; } - try { - const eslint = new ESLint(); - const results = await eslint.lintFiles(filesToCheck); - const formatter = await eslint.loadFormatter('stylish'); - const resultText = formatter.format(results); - - if (resultText) { - console.log(resultText); + // Group files by package directory to set tsconfigRootDir properly for typescript-eslint + const filesByPkg = new Map(); + for (const file of filesToCheck) { + const pkgDir = findTsconfigDir(file) || process.cwd(); + if (!filesByPkg.has(pkgDir)) { + filesByPkg.set(pkgDir, []); } + filesByPkg.get(pkgDir).push(file); + } - let hasBlockingErrors = false; + let hasBlockingErrors = false; - for (const fileResult of results) { - for (const message of fileResult.messages) { - // message.severity === 2 indicates an error-level rule configuration. - if (message.severity === 2) { - hasBlockingErrors = true; - } + for (const [pkgDir, files] of filesByPkg.entries()) { + try { + const absPkgDir = path.resolve(pkgDir); + const eslint = new ESLint({ + cwd: absPkgDir, + resolvePluginsRelativeTo: process.cwd(), + overrideConfig: { + parserOptions: { + tsconfigRootDir: absPkgDir, + }, + }, + }); + + const relativeFiles = files.map(f => path.relative(absPkgDir, path.resolve(f))); + const results = await eslint.lintFiles(relativeFiles); + const formatter = await eslint.loadFormatter('stylish'); + const resultText = formatter.format(results); + + if (resultText) { + console.log(resultText); } - } - if (hasBlockingErrors) { - console.error('\n[ERROR] ESLint violations were detected.'); - return false; + for (const fileResult of results) { + for (const message of fileResult.messages) { + if (message.severity === 2) { + hasBlockingErrors = true; + } + } + } + } catch (err) { + console.error(`\n[ERROR] Failed running ESLint in ${pkgDir}:`, err.message); + hasBlockingErrors = true; } + } - return true; - } catch (err) { - console.error('\n[ERROR] Failed running ESLint:', err.message); + if (hasBlockingErrors) { + console.error('\n[ERROR] ESLint violations were detected.'); return false; } + + return true; } // --- TypeScript Type Checker --- @@ -166,14 +237,23 @@ async function checkEslint(filesToCheck) { * Caches directories to avoid redundant disk operations. */ function findTsconfigDir(filePath) { - const dir = path.dirname(filePath); - if (tsconfigCache.has(dir)) { - return tsconfigCache.get(dir); + let currentDir = path.resolve(path.dirname(filePath)); + const root = path.parse(currentDir).root; + + while (currentDir && currentDir !== root) { + if (tsconfigCache.has(currentDir)) { + return tsconfigCache.get(currentDir); + } + const candidate = path.join(currentDir, 'tsconfig.json'); + if (existsSync(candidate)) { + tsconfigCache.set(path.dirname(filePath), currentDir); + return currentDir; + } + currentDir = path.dirname(currentDir); } - const configPath = ts.findConfigFile(dir, ts.sys.fileExists); - const result = configPath ? path.dirname(configPath) : null; - tsconfigCache.set(dir, result); - return result; + + tsconfigCache.set(path.dirname(filePath), null); + return null; } /** diff --git a/core/dev-packages/pack-n-play/test/fixtures/leaky/.eslintrc.json b/core/dev-packages/pack-n-play/test/fixtures/leaky/.eslintrc.json index f95bb333f0d7..b2eaa06fb89c 100644 --- a/core/dev-packages/pack-n-play/test/fixtures/leaky/.eslintrc.json +++ b/core/dev-packages/pack-n-play/test/fixtures/leaky/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": "./node_modules/gts/" + "extends": "gts" } diff --git a/core/generator/gapic-generator-typescript/.eslintrc.json b/core/generator/gapic-generator-typescript/.eslintrc.json index eb6fa04d6bf5..5763334a168f 100644 --- a/core/generator/gapic-generator-typescript/.eslintrc.json +++ b/core/generator/gapic-generator-typescript/.eslintrc.json @@ -10,5 +10,4 @@ "**/.coverage", "**/coverage" ] -} - \ No newline at end of file +} \ No newline at end of file diff --git a/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2-nodejs/.eslintrc.json b/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2-nodejs/.eslintrc.json index 782153495464..b2eaa06fb89c 100644 --- a/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2-nodejs/.eslintrc.json +++ b/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2-nodejs/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": "./node_modules/gts" + "extends": "gts" } diff --git a/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2beta2-nodejs/.eslintrc.json b/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2beta2-nodejs/.eslintrc.json index 782153495464..b2eaa06fb89c 100644 --- a/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2beta2-nodejs/.eslintrc.json +++ b/core/generator/gapic-generator-typescript/test-fixtures/google-cloud-tasks-nodejs/tasks-v2beta2-nodejs/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": "./node_modules/gts" + "extends": "gts" } diff --git a/core/packages/gaxios/.eslintrc.json b/core/packages/gaxios/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/core/packages/gaxios/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/core/packages/google-auth-library-nodejs/.eslintrc.json b/core/packages/google-auth-library-nodejs/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/core/packages/google-auth-library-nodejs/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/core/packages/logging-utils/.eslintrc.json b/core/packages/logging-utils/.eslintrc.json deleted file mode 100644 index 3e8d97ccb390..000000000000 --- a/core/packages/logging-utils/.eslintrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./node_modules/gts", - "root": true -} diff --git a/core/packages/nodejs-googleapis-common/.eslintrc.json b/core/packages/nodejs-googleapis-common/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/core/packages/nodejs-googleapis-common/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/core/packages/nodejs-proto-files/.eslintrc.json b/core/packages/nodejs-proto-files/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/core/packages/nodejs-proto-files/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/core/packages/retry-request/.eslintrc.json b/core/packages/retry-request/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/core/packages/retry-request/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/core/packages/teeny-request/.eslintrc.json b/core/packages/teeny-request/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/core/packages/teeny-request/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/core/packages/tools/.eslintrc.json b/core/packages/tools/.eslintrc.json deleted file mode 100644 index 3e8d97ccb390..000000000000 --- a/core/packages/tools/.eslintrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./node_modules/gts", - "root": true -} diff --git a/handwritten/bigquery-storage/.eslintrc.json b/handwritten/bigquery-storage/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/bigquery-storage/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/bigquery/.eslintignore b/handwritten/bigquery/.eslintignore index 87a018350591..ea5b04aebe68 100644 --- a/handwritten/bigquery/.eslintignore +++ b/handwritten/bigquery/.eslintignore @@ -5,4 +5,3 @@ build/ docs/ protos/ samples/generated/ -system-test/fixtures diff --git a/handwritten/bigquery/.eslintrc.json b/handwritten/bigquery/.eslintrc.json index 3e8d97ccb390..782153495464 100644 --- a/handwritten/bigquery/.eslintrc.json +++ b/handwritten/bigquery/.eslintrc.json @@ -1,4 +1,3 @@ { - "extends": "./node_modules/gts", - "root": true + "extends": "./node_modules/gts" } diff --git a/core/packages/gax/.eslintrc.json b/handwritten/bigtable/.eslintrc.json similarity index 100% rename from core/packages/gax/.eslintrc.json rename to handwritten/bigtable/.eslintrc.json diff --git a/handwritten/cloud-profiler/.eslintrc.json b/handwritten/cloud-profiler/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/cloud-profiler/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/cloud-profiler/package.json b/handwritten/cloud-profiler/package.json index c5e3a3ceedfc..f5a1bbbc1eb6 100644 --- a/handwritten/cloud-profiler/package.json +++ b/handwritten/cloud-profiler/package.json @@ -55,7 +55,7 @@ "@types/pretty-ms": "^5.0.0", "@types/sinon": "^17.0.0", "@types/tmp": "0.2.6", - "c8": "^9.0.0", + "c8": "^10.1.3", "codecov": "^3.0.0", "gts": "^5.0.0", "js-green-licenses": "^4.0.0", @@ -63,7 +63,7 @@ "jsdoc-fresh": "^3.0.0", "jsdoc-region-tag": "^3.0.0", "long": "^5.3.2", - "mocha": "^9.2.2", + "mocha": "^11.1.0", "nock": "^13.0.0", "node-gyp": "^11.5.0", "sinon": "^18.0.0", diff --git a/handwritten/datastore/.eslintrc.json b/handwritten/datastore/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/datastore/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/error-reporting/.eslintrc.json b/handwritten/error-reporting/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/error-reporting/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/firestore/.eslintrc.json b/handwritten/firestore/.eslintrc.json deleted file mode 100644 index 43f7fab3ea4b..000000000000 --- a/handwritten/firestore/.eslintrc.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "root": true, - "extends": "../../node_modules/gts", - "overrides": [ - { - "files": ["dev/src/**/*.ts"], - "excludedFiles": ["dev/src/v1/*.ts", "dev/src/v1beta1/*.ts"], - "parser": "@typescript-eslint/parser", - "rules": { - "@typescript-eslint/explicit-function-return-type": [ - "error", - { - "allowExpressions": true, - "allowTypedFunctionExpressions": true - } - ], - "no-console": ["error", {"allow": ["error"]}], - "@typescript-eslint/no-unused-vars": [ - "warn", - { - // Allow args to be unused if they start with an underscore - "argsIgnorePattern": "^_" - } - ] - } - }, - { - "files": ["dev/test/*.ts", "dev/system-test/*.ts"], - "parser": "@typescript-eslint/parser", - "rules": { - "no-restricted-properties": [ - "error", - { - "object": "describe", - "property": "only" - }, - { - "object": "it", - "property": "only" - } - ], - "@typescript-eslint/no-unused-vars": [ - "warn", - { - // Allow args to be unused if they start with an underscore - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/no-floating-promises": "warn" - } - }, - { - "files": [ - "dev/src/v1/**/*.ts", - "dev/src/v1beta1/**/*.ts", - "dev/test/gapic_firestore_v1.ts", - "dev/test/gapic_firestore_admin_v1.ts", - "dev/test/gapic_firestore_admin_v1.ts" - ], - "rules": { - "@typescript-eslint/no-explicit-any": ["off"], - "@typescript-eslint/no-floating-promises": ["off"] - } - } - ] -} diff --git a/handwritten/logging-bunyan/.eslintrc.json b/handwritten/logging-bunyan/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/logging-bunyan/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/logging-bunyan/package.json b/handwritten/logging-bunyan/package.json index 8be7eccd4609..b8dc3dd69652 100644 --- a/handwritten/logging-bunyan/package.json +++ b/handwritten/logging-bunyan/package.json @@ -64,7 +64,7 @@ "@types/node": "^20.4.9", "@types/proxyquire": "^1.3.28", "bunyan": "^1.8.12", - "c8": "^9.0.0", + "c8": "^10.1.3", "codecov": "^3.0.2", "cross-env": "^7.0.3", "cpy-cli": "^4.0.0", @@ -74,7 +74,7 @@ "jsdoc": "^4.0.0", "jsdoc-fresh": "^3.0.0", "jsdoc-region-tag": "^3.0.0", - "mocha": "^9.2.2", + "mocha": "^11.1.0", "post-install-check": "0.0.1", "proxyquire": "^2.0.1", "typescript": "^5.1.6" diff --git a/handwritten/logging-winston/.eslintrc.json b/handwritten/logging-winston/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/logging-winston/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/logging/.eslintrc.json b/handwritten/logging/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/logging/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/logging/package.json b/handwritten/logging/package.json index 2bc3118963f1..72a0fef66ea0 100644 --- a/handwritten/logging/package.json +++ b/handwritten/logging/package.json @@ -82,7 +82,7 @@ "@types/pumpify": "^1.4.1", "@types/sinon": "^10.0.0", "bignumber.js": "^9.0.0", - "c8": "^9.0.0", + "c8": "^10.1.3", "codecov": "^3.6.5", "cross-env": "^7.0.3", "gapic-tools": "^0.4.0", @@ -91,7 +91,7 @@ "jsdoc": "^4.0.0", "jsdoc-fresh": "^3.0.0", "jsdoc-region-tag": "^3.0.0", - "mocha": "^9.2.2", + "mocha": "^11.1.0", "nock": "^13.0.0", "null-loader": "^4.0.0", "pack-n-play": "^2.0.0", diff --git a/handwritten/pubsub/.eslintrc.json b/handwritten/pubsub/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/pubsub/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/spanner-driver/.eslintrc.json b/handwritten/spanner-driver/.eslintrc.json deleted file mode 100644 index aa462ccc3ae7..000000000000 --- a/handwritten/spanner-driver/.eslintrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "root": true, - "extends": "./node_modules/gts" -} diff --git a/handwritten/spanner/.eslintrc.json b/handwritten/spanner/.eslintrc.json deleted file mode 100644 index aa462ccc3ae7..000000000000 --- a/handwritten/spanner/.eslintrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "root": true, - "extends": "./node_modules/gts" -} diff --git a/handwritten/storage/.eslintrc.json b/handwritten/storage/.eslintrc.json deleted file mode 100644 index 782153495464..000000000000 --- a/handwritten/storage/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "./node_modules/gts" -} diff --git a/handwritten/storage/package.json b/handwritten/storage/package.json index fa61373b6c14..2ac134a06a8d 100644 --- a/handwritten/storage/package.json +++ b/handwritten/storage/package.json @@ -107,14 +107,14 @@ "@types/sinon": "^17.0.0", "@types/tmp": "0.2.6", "@types/yargs": "^17.0.35", - "c8": "^9.0.0", + "c8": "^10.1.3", "form-data": "^4.0.4", "gapic-tools": "^0.4.0", "gts": "^5.0.0", "jsdoc": "^4.0.4", "jsdoc-fresh": "^5.0.0", "jsdoc-region-tag": "^4.0.0", - "mocha": "^9.2.2", + "mocha": "^11.1.0", "mockery": "^2.1.0", "nock": "~13.5.0", "node-fetch": "^2.6.7", diff --git a/packages/.eslintrc.json b/packages/.eslintrc.json deleted file mode 100644 index 153f062d7fbe..000000000000 --- a/packages/.eslintrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../node_modules/gts", - "root": true -}