@rushstack/eslint-bulk 0.1.95 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.json CHANGED
@@ -1,6 +1,18 @@
1
1
  {
2
2
  "name": "@rushstack/eslint-bulk",
3
3
  "entries": [
4
+ {
5
+ "version": "0.2.0",
6
+ "tag": "@rushstack/eslint-bulk_v0.2.0",
7
+ "date": "Thu, 26 Jun 2025 18:57:04 GMT",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "comment": "Update for compatibility with ESLint flat configuration files"
12
+ }
13
+ ]
14
+ }
15
+ },
4
16
  {
5
17
  "version": "0.1.95",
6
18
  "tag": "@rushstack/eslint-bulk_v0.1.95",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Change Log - @rushstack/eslint-bulk
2
2
 
3
- This log was last generated on Sat, 21 Jun 2025 00:13:15 GMT and should not be manually modified.
3
+ This log was last generated on Thu, 26 Jun 2025 18:57:04 GMT and should not be manually modified.
4
+
5
+ ## 0.2.0
6
+ Thu, 26 Jun 2025 18:57:04 GMT
7
+
8
+ ### Minor changes
9
+
10
+ - Update for compatibility with ESLint flat configuration files
4
11
 
5
12
  ## 0.1.95
6
13
  Sat, 21 Jun 2025 00:13:15 GMT
package/lib/start.js CHANGED
@@ -38,17 +38,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
38
  const child_process_1 = require("child_process");
39
39
  const process = __importStar(require("process"));
40
40
  const fs = __importStar(require("fs"));
41
+ const ESLINT_CONFIG_FILES = [
42
+ 'eslint.config.js',
43
+ 'eslint.config.cjs',
44
+ 'eslint.config.mjs',
45
+ '.eslintrc.js',
46
+ '.eslintrc.cjs'
47
+ ];
41
48
  function findPatchPath() {
42
- const candidatePaths = [`${process.cwd()}/.eslintrc.js`, `${process.cwd()}/.eslintrc.cjs`];
43
- let eslintrcPath;
49
+ const candidatePaths = ESLINT_CONFIG_FILES.map((fileName) => `${process.cwd()}/${fileName}`);
50
+ let eslintConfigPath;
44
51
  for (const candidatePath of candidatePaths) {
45
52
  if (fs.existsSync(candidatePath)) {
46
- eslintrcPath = candidatePath;
53
+ eslintConfigPath = candidatePath;
47
54
  break;
48
55
  }
49
56
  }
50
- if (!eslintrcPath) {
51
- console.error('@rushstack/eslint-bulk: Please run this command from the directory that contains .eslintrc.js or .eslintrc.cjs');
57
+ if (!eslintConfigPath) {
58
+ console.error('@rushstack/eslint-bulk: Please run this command from the directory that contains one of the following ' +
59
+ `ESLint configuration files: ${ESLINT_CONFIG_FILES.join(', ')}`);
52
60
  process.exit(1);
53
61
  }
54
62
  const env = { ...process.env, _RUSHSTACK_ESLINT_BULK_DETECT: 'true' };
@@ -86,11 +94,11 @@ function findPatchPath() {
86
94
  };
87
95
  let runEslintFn;
88
96
  if (eslintBinPath) {
89
- runEslintFn = () => (0, child_process_1.spawnSync)(process.argv0, [eslintBinPath, ...eslintArgs, eslintrcPath], spawnOrExecOptions).stdout;
97
+ runEslintFn = () => (0, child_process_1.spawnSync)(process.argv0, [eslintBinPath, ...eslintArgs, eslintConfigPath], spawnOrExecOptions).stdout;
90
98
  }
91
99
  else {
92
100
  // Try to use a globally-installed eslint if a local package was not found
93
- runEslintFn = () => (0, child_process_1.execSync)(`eslint ${eslintArgs.join(' ')} "${eslintrcPath}"`, spawnOrExecOptions);
101
+ runEslintFn = () => (0, child_process_1.execSync)(`eslint ${eslintArgs.join(' ')} "${eslintConfigPath}"`, spawnOrExecOptions);
94
102
  }
95
103
  let stdout;
96
104
  try {
package/lib/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport {\n type ExecSyncOptionsWithBufferEncoding,\n type SpawnSyncOptionsWithBufferEncoding,\n execSync,\n spawnSync\n} from 'child_process';\nimport * as process from 'process';\nimport * as fs from 'fs';\n\ninterface IEslintBulkConfigurationJson {\n /**\n * `@rushtack/eslint`-bulk should report an error if its package.json is older than this number\n */\n minCliVersion: string;\n /**\n * `@rushtack/eslint-bulk` will invoke this entry point\n */\n cliEntryPoint: string;\n}\n\nfunction findPatchPath(): string {\n const candidatePaths: string[] = [`${process.cwd()}/.eslintrc.js`, `${process.cwd()}/.eslintrc.cjs`];\n let eslintrcPath: string | undefined;\n for (const candidatePath of candidatePaths) {\n if (fs.existsSync(candidatePath)) {\n eslintrcPath = candidatePath;\n break;\n }\n }\n\n if (!eslintrcPath) {\n console.error(\n '@rushstack/eslint-bulk: Please run this command from the directory that contains .eslintrc.js or .eslintrc.cjs'\n );\n process.exit(1);\n }\n\n const env: NodeJS.ProcessEnv = { ...process.env, _RUSHSTACK_ESLINT_BULK_DETECT: 'true' };\n\n let eslintPackageJsonPath: string | undefined;\n try {\n eslintPackageJsonPath = require.resolve('eslint/package.json', { paths: [process.cwd()] });\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND') {\n throw e;\n }\n }\n\n let eslintBinPath: string | undefined;\n if (eslintPackageJsonPath) {\n eslintPackageJsonPath = eslintPackageJsonPath.replace(/\\\\/g, '/');\n const packagePath: string = eslintPackageJsonPath.substring(0, eslintPackageJsonPath.lastIndexOf('/'));\n const { bin: { eslint: relativeEslintBinPath } = {} }: { bin?: Record<string, string> } = require(\n eslintPackageJsonPath\n );\n if (relativeEslintBinPath) {\n eslintBinPath = `${packagePath}/${relativeEslintBinPath}`;\n } else {\n console.warn(\n `@rushstack/eslint-bulk: The eslint package resolved at \"${packagePath}\" does not contain an eslint bin path. ` +\n 'Attempting to use a globally-installed eslint instead.'\n );\n }\n } else {\n console.log(\n '@rushstack/eslint-bulk: Unable to resolve the eslint package as a dependency of the current project. ' +\n 'Attempting to use a globally-installed eslint instead.'\n );\n }\n\n const eslintArgs: string[] = ['--stdin', '--config'];\n const spawnOrExecOptions: SpawnSyncOptionsWithBufferEncoding & ExecSyncOptionsWithBufferEncoding = {\n env,\n input: '',\n stdio: 'pipe'\n };\n let runEslintFn: () => Buffer;\n if (eslintBinPath) {\n runEslintFn = () =>\n spawnSync(process.argv0, [eslintBinPath, ...eslintArgs, eslintrcPath], spawnOrExecOptions).stdout;\n } else {\n // Try to use a globally-installed eslint if a local package was not found\n runEslintFn = () => execSync(`eslint ${eslintArgs.join(' ')} \"${eslintrcPath}\"`, spawnOrExecOptions);\n }\n\n let stdout: Buffer;\n try {\n stdout = runEslintFn();\n } catch (e) {\n console.error('@rushstack/eslint-bulk: Error finding patch path: ' + e.message);\n process.exit(1);\n }\n\n const startDelimiter: string = 'RUSHSTACK_ESLINT_BULK_START';\n const endDelimiter: string = 'RUSHSTACK_ESLINT_BULK_END';\n\n const regex: RegExp = new RegExp(`${startDelimiter}(.*?)${endDelimiter}`);\n const match: RegExpMatchArray | null = stdout.toString().match(regex);\n\n if (match) {\n // The configuration data will look something like this:\n //\n // RUSHSTACK_ESLINT_BULK_START{\"minCliVersion\":\"0.0.0\",\"cliEntryPoint\":\"path/to/eslint-bulk.js\"}RUSHSTACK_ESLINT_BULK_END\n const configurationJson: string = match[1].trim();\n let configuration: IEslintBulkConfigurationJson;\n try {\n configuration = JSON.parse(configurationJson);\n if (!configuration.minCliVersion || !configuration.cliEntryPoint) {\n throw new Error('Required field is missing');\n }\n } catch (e) {\n console.error('@rushstack/eslint-bulk: Error parsing patch configuration object:' + e.message);\n process.exit(1);\n }\n\n const myVersion: string = require('../package.json').version;\n const myVersionParts: number[] = myVersion.split('.').map((x) => parseInt(x, 10));\n const minVersion: string = configuration.minCliVersion;\n const minVersionParts: number[] = minVersion.split('.').map((x) => parseInt(x, 10));\n if (\n myVersionParts.length !== 3 ||\n minVersionParts.length !== 3 ||\n myVersionParts.some((x) => isNaN(x)) ||\n minVersionParts.some((x) => isNaN(x))\n ) {\n console.error(`@rushstack/eslint-bulk: Unable to compare versions \"${myVersion}\" and \"${minVersion}\"`);\n process.exit(1);\n }\n\n for (let i: number = 0; i < 3; ++i) {\n if (myVersionParts[i] > minVersionParts[i]) {\n break;\n }\n if (myVersionParts[i] < minVersionParts[i]) {\n console.error(\n `@rushstack/eslint-bulk: The @rushstack/eslint-bulk version ${myVersion} is too old;` +\n ` please upgrade to ${minVersion} or newer.`\n );\n process.exit(1);\n }\n }\n\n return configuration.cliEntryPoint;\n }\n\n console.error(\n '@rushstack/eslint-bulk: Error finding patch path. Are you sure the package you are in has @rushstack/eslint-patch as a direct or indirect dependency?'\n );\n process.exit(1);\n}\n\nconst patchPath: string = findPatchPath();\ntry {\n require(patchPath);\n} catch (e) {\n console.error(`@rushstack/eslint-bulk: Error running patch at ${patchPath}:\\n` + e.message);\n process.exit(1);\n}\n"]}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport {\n type ExecSyncOptionsWithBufferEncoding,\n type SpawnSyncOptionsWithBufferEncoding,\n execSync,\n spawnSync\n} from 'child_process';\nimport * as process from 'process';\nimport * as fs from 'fs';\n\nconst ESLINT_CONFIG_FILES: string[] = [\n 'eslint.config.js',\n 'eslint.config.cjs',\n 'eslint.config.mjs',\n '.eslintrc.js',\n '.eslintrc.cjs'\n];\n\ninterface IEslintBulkConfigurationJson {\n /**\n * `@rushtack/eslint`-bulk should report an error if its package.json is older than this number\n */\n minCliVersion: string;\n /**\n * `@rushtack/eslint-bulk` will invoke this entry point\n */\n cliEntryPoint: string;\n}\n\nfunction findPatchPath(): string {\n const candidatePaths: string[] = ESLINT_CONFIG_FILES.map((fileName) => `${process.cwd()}/${fileName}`);\n let eslintConfigPath: string | undefined;\n for (const candidatePath of candidatePaths) {\n if (fs.existsSync(candidatePath)) {\n eslintConfigPath = candidatePath;\n break;\n }\n }\n\n if (!eslintConfigPath) {\n console.error(\n '@rushstack/eslint-bulk: Please run this command from the directory that contains one of the following ' +\n `ESLint configuration files: ${ESLINT_CONFIG_FILES.join(', ')}`\n );\n process.exit(1);\n }\n\n const env: NodeJS.ProcessEnv = { ...process.env, _RUSHSTACK_ESLINT_BULK_DETECT: 'true' };\n\n let eslintPackageJsonPath: string | undefined;\n try {\n eslintPackageJsonPath = require.resolve('eslint/package.json', { paths: [process.cwd()] });\n } catch (e) {\n if (e.code !== 'MODULE_NOT_FOUND') {\n throw e;\n }\n }\n\n let eslintBinPath: string | undefined;\n if (eslintPackageJsonPath) {\n eslintPackageJsonPath = eslintPackageJsonPath.replace(/\\\\/g, '/');\n const packagePath: string = eslintPackageJsonPath.substring(0, eslintPackageJsonPath.lastIndexOf('/'));\n const { bin: { eslint: relativeEslintBinPath } = {} }: { bin?: Record<string, string> } = require(\n eslintPackageJsonPath\n );\n if (relativeEslintBinPath) {\n eslintBinPath = `${packagePath}/${relativeEslintBinPath}`;\n } else {\n console.warn(\n `@rushstack/eslint-bulk: The eslint package resolved at \"${packagePath}\" does not contain an eslint bin path. ` +\n 'Attempting to use a globally-installed eslint instead.'\n );\n }\n } else {\n console.log(\n '@rushstack/eslint-bulk: Unable to resolve the eslint package as a dependency of the current project. ' +\n 'Attempting to use a globally-installed eslint instead.'\n );\n }\n\n const eslintArgs: string[] = ['--stdin', '--config'];\n const spawnOrExecOptions: SpawnSyncOptionsWithBufferEncoding & ExecSyncOptionsWithBufferEncoding = {\n env,\n input: '',\n stdio: 'pipe'\n };\n let runEslintFn: () => Buffer;\n if (eslintBinPath) {\n runEslintFn = () =>\n spawnSync(process.argv0, [eslintBinPath, ...eslintArgs, eslintConfigPath], spawnOrExecOptions).stdout;\n } else {\n // Try to use a globally-installed eslint if a local package was not found\n runEslintFn = () => execSync(`eslint ${eslintArgs.join(' ')} \"${eslintConfigPath}\"`, spawnOrExecOptions);\n }\n\n let stdout: Buffer;\n try {\n stdout = runEslintFn();\n } catch (e) {\n console.error('@rushstack/eslint-bulk: Error finding patch path: ' + e.message);\n process.exit(1);\n }\n\n const startDelimiter: string = 'RUSHSTACK_ESLINT_BULK_START';\n const endDelimiter: string = 'RUSHSTACK_ESLINT_BULK_END';\n\n const regex: RegExp = new RegExp(`${startDelimiter}(.*?)${endDelimiter}`);\n const match: RegExpMatchArray | null = stdout.toString().match(regex);\n\n if (match) {\n // The configuration data will look something like this:\n //\n // RUSHSTACK_ESLINT_BULK_START{\"minCliVersion\":\"0.0.0\",\"cliEntryPoint\":\"path/to/eslint-bulk.js\"}RUSHSTACK_ESLINT_BULK_END\n const configurationJson: string = match[1].trim();\n let configuration: IEslintBulkConfigurationJson;\n try {\n configuration = JSON.parse(configurationJson);\n if (!configuration.minCliVersion || !configuration.cliEntryPoint) {\n throw new Error('Required field is missing');\n }\n } catch (e) {\n console.error('@rushstack/eslint-bulk: Error parsing patch configuration object:' + e.message);\n process.exit(1);\n }\n\n const myVersion: string = require('../package.json').version;\n const myVersionParts: number[] = myVersion.split('.').map((x) => parseInt(x, 10));\n const minVersion: string = configuration.minCliVersion;\n const minVersionParts: number[] = minVersion.split('.').map((x) => parseInt(x, 10));\n if (\n myVersionParts.length !== 3 ||\n minVersionParts.length !== 3 ||\n myVersionParts.some((x) => isNaN(x)) ||\n minVersionParts.some((x) => isNaN(x))\n ) {\n console.error(`@rushstack/eslint-bulk: Unable to compare versions \"${myVersion}\" and \"${minVersion}\"`);\n process.exit(1);\n }\n\n for (let i: number = 0; i < 3; ++i) {\n if (myVersionParts[i] > minVersionParts[i]) {\n break;\n }\n if (myVersionParts[i] < minVersionParts[i]) {\n console.error(\n `@rushstack/eslint-bulk: The @rushstack/eslint-bulk version ${myVersion} is too old;` +\n ` please upgrade to ${minVersion} or newer.`\n );\n process.exit(1);\n }\n }\n\n return configuration.cliEntryPoint;\n }\n\n console.error(\n '@rushstack/eslint-bulk: Error finding patch path. Are you sure the package you are in has @rushstack/eslint-patch as a direct or indirect dependency?'\n );\n process.exit(1);\n}\n\nconst patchPath: string = findPatchPath();\ntry {\n require(patchPath);\n} catch (e) {\n console.error(`@rushstack/eslint-bulk: Error running patch at ${patchPath}:\\n` + e.message);\n process.exit(1);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rushstack/eslint-bulk",
3
- "version": "0.1.95",
3
+ "version": "0.2.0",
4
4
  "description": "Roll out new ESLint rules in a large monorepo without cluttering up your code with \"eslint-ignore-next-line\"",
5
5
  "main": "index.js",
6
6
  "license": "MIT",
@@ -27,8 +27,8 @@
27
27
  ],
28
28
  "devDependencies": {
29
29
  "@types/node": "20.17.19",
30
- "@rushstack/heft": "0.74.0",
31
- "local-node-rig": "1.0.0"
30
+ "local-node-rig": "1.0.0",
31
+ "@rushstack/heft": "0.74.0"
32
32
  },
33
33
  "scripts": {
34
34
  "build": "heft build --clean",