@rushstack/eslint-bulk 0.2.6 → 0.3.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,35 @@
1
1
  {
2
2
  "name": "@rushstack/eslint-bulk",
3
3
  "entries": [
4
+ {
5
+ "version": "0.3.0",
6
+ "tag": "@rushstack/eslint-bulk_v0.3.0",
7
+ "date": "Fri, 03 Oct 2025 20:09:59 GMT",
8
+ "comments": {
9
+ "minor": [
10
+ {
11
+ "comment": "Normalize import of builtin modules to use the `node:` protocol."
12
+ }
13
+ ],
14
+ "dependency": [
15
+ {
16
+ "comment": "Updating dependency \"@rushstack/heft\" to `1.1.0`"
17
+ }
18
+ ]
19
+ }
20
+ },
21
+ {
22
+ "version": "0.2.7",
23
+ "tag": "@rushstack/eslint-bulk_v0.2.7",
24
+ "date": "Tue, 30 Sep 2025 23:57:45 GMT",
25
+ "comments": {
26
+ "dependency": [
27
+ {
28
+ "comment": "Updating dependency \"@rushstack/heft\" to `1.0.0`"
29
+ }
30
+ ]
31
+ }
32
+ },
4
33
  {
5
34
  "version": "0.2.6",
6
35
  "tag": "@rushstack/eslint-bulk_v0.2.6",
package/CHANGELOG.md CHANGED
@@ -1,6 +1,18 @@
1
1
  # Change Log - @rushstack/eslint-bulk
2
2
 
3
- This log was last generated on Tue, 30 Sep 2025 20:33:51 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 03 Oct 2025 20:09:59 GMT and should not be manually modified.
4
+
5
+ ## 0.3.0
6
+ Fri, 03 Oct 2025 20:09:59 GMT
7
+
8
+ ### Minor changes
9
+
10
+ - Normalize import of builtin modules to use the `node:` protocol.
11
+
12
+ ## 0.2.7
13
+ Tue, 30 Sep 2025 23:57:45 GMT
14
+
15
+ _Version update only_
4
16
 
5
17
  ## 0.2.6
6
18
  Tue, 30 Sep 2025 20:33:51 GMT
package/lib/start.js CHANGED
@@ -35,9 +35,9 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  };
36
36
  })();
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
- const child_process_1 = require("child_process");
39
- const process = __importStar(require("process"));
40
- const fs = __importStar(require("fs"));
38
+ const node_child_process_1 = require("node:child_process");
39
+ const process = __importStar(require("node:process"));
40
+ const fs = __importStar(require("node:fs"));
41
41
  const ESLINT_CONFIG_FILES = [
42
42
  'eslint.config.js',
43
43
  'eslint.config.cjs',
@@ -94,11 +94,11 @@ function findPatchPath() {
94
94
  };
95
95
  let runEslintFn;
96
96
  if (eslintBinPath) {
97
- runEslintFn = () => (0, child_process_1.spawnSync)(process.argv0, [eslintBinPath, ...eslintArgs, eslintConfigPath], spawnOrExecOptions).stdout;
97
+ runEslintFn = () => (0, node_child_process_1.spawnSync)(process.argv0, [eslintBinPath, ...eslintArgs, eslintConfigPath], spawnOrExecOptions).stdout;
98
98
  }
99
99
  else {
100
100
  // Try to use a globally-installed eslint if a local package was not found
101
- runEslintFn = () => (0, child_process_1.execSync)(`eslint ${eslintArgs.join(' ')} "${eslintConfigPath}"`, spawnOrExecOptions);
101
+ runEslintFn = () => (0, node_child_process_1.execSync)(`eslint ${eslintArgs.join(' ')} "${eslintConfigPath}"`, spawnOrExecOptions);
102
102
  }
103
103
  let stdout;
104
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\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"]}
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 'node:child_process';\nimport * as process from 'node:process';\nimport * as fs from 'node: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.2.6",
3
+ "version": "0.3.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",
@@ -28,7 +28,7 @@
28
28
  "devDependencies": {
29
29
  "@types/node": "20.17.19",
30
30
  "eslint": "~9.25.1",
31
- "@rushstack/heft": "0.75.0",
31
+ "@rushstack/heft": "1.1.0",
32
32
  "local-node-rig": "1.0.0"
33
33
  },
34
34
  "scripts": {