@powerlines/plugin-eslint 0.8.294 → 0.8.296

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/dist/index.cjs CHANGED
@@ -19,7 +19,7 @@ function plugin(options = {}) {
19
19
  name: "eslint",
20
20
  async config() {
21
21
  this.debug("Providing default configuration for the Powerlines `eslint` build plugin.");
22
- return { lint: { eslint: (0, defu.defu)(options, {
22
+ return { eslint: (0, defu.defu)(options, {
23
23
  configFile: (0, __stryke_fs_get_parent_path.getParentPath)([
24
24
  "eslint.config.js",
25
25
  "eslint.config.mjs",
@@ -33,7 +33,7 @@ function plugin(options = {}) {
33
33
  ".eslintrc.yml",
34
34
  ".eslintrc.json",
35
35
  ".eslintrc"
36
- ], this.config.projectRoot, {
36
+ ], this.config.root, {
37
37
  ignoreCase: true,
38
38
  skipCwd: false,
39
39
  includeNameInResults: true
@@ -43,7 +43,7 @@ function plugin(options = {}) {
43
43
  fix: true,
44
44
  outputFile: null,
45
45
  type: "recommended"
46
- }) } };
46
+ }) };
47
47
  },
48
48
  async configResolved() {
49
49
  if (!require_is_set_object.isSetObject(this.packageJson.eslintConfig) && (!this.config.lint.eslint.configFile || !(0, __stryke_fs_exists.existsSync)(this.config.lint.eslint.configFile))) throw new Error("No ESLint configuration file could be found");
@@ -51,7 +51,7 @@ function plugin(options = {}) {
51
51
  const content = await (0, __stryke_fs_read_file.readFile)(this.config.lint.eslint.configFile);
52
52
  if (content?.trim().replace(/\s/g, "") || content?.trim().replace(/\s/g, "") === "---" || content?.trim().replace(/\s/g, "") === "{}" || content?.trim().replace(/\s/g, "") === "module.exports={}") throw new Error(`The ESLint configuration file at "${this.config.lint.eslint.configFile}" is empty`);
53
53
  }
54
- if (!(0, __stryke_fs_package_fns.isPackageExists)("eslint", { paths: [this.workspaceConfig.workspaceRoot, this.config.projectRoot] })) throw new Error(`ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`);
54
+ if (!(0, __stryke_fs_package_fns.isPackageExists)("eslint", { paths: [this.workspaceConfig.workspaceRoot, this.config.root] })) throw new Error(`ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`);
55
55
  const module$1 = await this.resolver.import(this.resolver.esmResolve("eslint"));
56
56
  const useFlatConfig = this.config.lint.eslint.configFile ? (0, __stryke_path_find.findFileName)(this.config.lint.eslint.configFile).startsWith("eslint.config.") : true;
57
57
  let ESLint;
@@ -92,7 +92,7 @@ function plugin(options = {}) {
92
92
  if ("loadESLint" in module$1) ESLint = await module$1.loadESLint({ useFlatConfig: this.config.lint.eslint.configFile ? (0, __stryke_path_find.findFileName)(this.config.lint.eslint.configFile).startsWith("eslint.config.") : true });
93
93
  if (this.config.lint.eslint.fix) await ESLint.outputFixes(results);
94
94
  if (this.config.lint.eslint.reportErrorsOnly) results = ESLint.getErrorResults(results);
95
- const output = results.filter(({ messages }) => messages?.length).map(({ messages, filePath }) => require_helpers_format_message.formatMessage(this.config.projectRoot, messages, filePath)).join("\n");
95
+ const output = results.filter(({ messages }) => messages?.length).map(({ messages, filePath }) => require_helpers_format_message.formatMessage(this.config.root, messages, filePath)).join("\n");
96
96
  if (this.config.lint.eslint.outputFile) await this.fs.write(this.config.lint.eslint.outputFile, output);
97
97
  else this.info(output);
98
98
  }
package/dist/index.d.cts CHANGED
@@ -1,10 +1,14 @@
1
1
  import { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage } from "./helpers/format-message.cjs";
2
2
  import { ESLintPluginContext, ESLintPluginOptions, ESLintPluginResolvedConfig, ESLintPluginUserConfig, __ΩESLintPluginContext, __ΩESLintPluginOptions, __ΩESLintPluginResolvedConfig, __ΩESLintPluginUserConfig } from "./types/plugin.cjs";
3
3
  import "./types/index.cjs";
4
- import { Plugin } from "powerlines/types/plugin";
4
+ import { Plugin } from "powerlines";
5
5
 
6
6
  //#region src/index.d.ts
7
-
7
+ declare module "powerlines" {
8
+ interface UserConfig {
9
+ eslint?: ESLintPluginOptions;
10
+ }
11
+ }
8
12
  /**
9
13
  * A Powerlines plugin to lint a project's source code with ESLint.
10
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAsCA;AACW,iBADK,MAAA,CACL,OAAA,CAAA,EAAA,mBAAA,CAAA,EACR,MADQ,CACD,mBADC,CAAA"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;IAqCwB,MAAA,CAAA,EAIX,mBAJW;EAAA;;;;AAWxB;AACW,iBADK,MAAA,CACL,OAAA,CAAA,EAAA,mBAAA,CAAA,EACR,MADQ,CACD,mBADC,CAAA"}
package/dist/index.d.mts CHANGED
@@ -1,10 +1,14 @@
1
1
  import { LintMessage, MessageSeverity, __ΩLintMessage, __ΩMessageSeverity, formatMessage } from "./helpers/format-message.mjs";
2
2
  import { ESLintPluginContext, ESLintPluginOptions, ESLintPluginResolvedConfig, ESLintPluginUserConfig, __ΩESLintPluginContext, __ΩESLintPluginOptions, __ΩESLintPluginResolvedConfig, __ΩESLintPluginUserConfig } from "./types/plugin.mjs";
3
3
  import "./types/index.mjs";
4
- import { Plugin } from "powerlines/types/plugin";
4
+ import { Plugin } from "powerlines";
5
5
 
6
6
  //#region src/index.d.ts
7
-
7
+ declare module "powerlines" {
8
+ interface UserConfig {
9
+ eslint?: ESLintPluginOptions;
10
+ }
11
+ }
8
12
  /**
9
13
  * A Powerlines plugin to lint a project's source code with ESLint.
10
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAsCA;AACW,iBADK,MAAA,CACL,OAAA,CAAA,EAAA,mBAAA,CAAA,EACR,MADQ,CACD,mBADC,CAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;IAqCwB,MAAA,CAAA,EAIX,mBAJW;EAAA;;;;AAWxB;AACW,iBADK,MAAA,CACL,OAAA,CAAA,EAAA,mBAAA,CAAA,EACR,MADQ,CACD,mBADC,CAAA"}
package/dist/index.mjs CHANGED
@@ -18,7 +18,7 @@ function plugin(options = {}) {
18
18
  name: "eslint",
19
19
  async config() {
20
20
  this.debug("Providing default configuration for the Powerlines `eslint` build plugin.");
21
- return { lint: { eslint: defu(options, {
21
+ return { eslint: defu(options, {
22
22
  configFile: getParentPath([
23
23
  "eslint.config.js",
24
24
  "eslint.config.mjs",
@@ -32,7 +32,7 @@ function plugin(options = {}) {
32
32
  ".eslintrc.yml",
33
33
  ".eslintrc.json",
34
34
  ".eslintrc"
35
- ], this.config.projectRoot, {
35
+ ], this.config.root, {
36
36
  ignoreCase: true,
37
37
  skipCwd: false,
38
38
  includeNameInResults: true
@@ -42,7 +42,7 @@ function plugin(options = {}) {
42
42
  fix: true,
43
43
  outputFile: null,
44
44
  type: "recommended"
45
- }) } };
45
+ }) };
46
46
  },
47
47
  async configResolved() {
48
48
  if (!isSetObject(this.packageJson.eslintConfig) && (!this.config.lint.eslint.configFile || !existsSync(this.config.lint.eslint.configFile))) throw new Error("No ESLint configuration file could be found");
@@ -50,7 +50,7 @@ function plugin(options = {}) {
50
50
  const content = await readFile(this.config.lint.eslint.configFile);
51
51
  if (content?.trim().replace(/\s/g, "") || content?.trim().replace(/\s/g, "") === "---" || content?.trim().replace(/\s/g, "") === "{}" || content?.trim().replace(/\s/g, "") === "module.exports={}") throw new Error(`The ESLint configuration file at "${this.config.lint.eslint.configFile}" is empty`);
52
52
  }
53
- if (!isPackageExists("eslint", { paths: [this.workspaceConfig.workspaceRoot, this.config.projectRoot] })) throw new Error(`ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`);
53
+ if (!isPackageExists("eslint", { paths: [this.workspaceConfig.workspaceRoot, this.config.root] })) throw new Error(`ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`);
54
54
  const module = await this.resolver.import(this.resolver.esmResolve("eslint"));
55
55
  const useFlatConfig = this.config.lint.eslint.configFile ? findFileName(this.config.lint.eslint.configFile).startsWith("eslint.config.") : true;
56
56
  let ESLint;
@@ -91,7 +91,7 @@ function plugin(options = {}) {
91
91
  if ("loadESLint" in module) ESLint = await module.loadESLint({ useFlatConfig: this.config.lint.eslint.configFile ? findFileName(this.config.lint.eslint.configFile).startsWith("eslint.config.") : true });
92
92
  if (this.config.lint.eslint.fix) await ESLint.outputFixes(results);
93
93
  if (this.config.lint.eslint.reportErrorsOnly) results = ESLint.getErrorResults(results);
94
- const output = results.filter(({ messages }) => messages?.length).map(({ messages, filePath }) => formatMessage(this.config.projectRoot, messages, filePath)).join("\n");
94
+ const output = results.filter(({ messages }) => messages?.length).map(({ messages, filePath }) => formatMessage(this.config.root, messages, filePath)).join("\n");
95
95
  if (this.config.lint.eslint.outputFile) await this.fs.write(this.config.lint.eslint.outputFile, output);
96
96
  else this.info(output);
97
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["ESLint!: typeof FlatESLint | typeof LegacyESLint","options: any","options"],"sources":["../src/index.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { existsSync } from \"@stryke/fs/exists\";\nimport { getParentPath } from \"@stryke/fs/get-parent-path\";\nimport { isPackageExists } from \"@stryke/fs/package-fns\";\nimport { readFile } from \"@stryke/fs/read-file\";\nimport { parseVersion } from \"@stryke/fs/semver-fns\";\nimport { findFileName } from \"@stryke/path/find\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { defu } from \"defu\";\nimport type { ESLint as FlatESLint } from \"eslint\";\nimport type { LegacyESLint } from \"eslint/use-at-your-own-risk\";\nimport { Plugin } from \"powerlines/types/plugin\";\nimport { formatMessage } from \"./helpers/format-message\";\nimport { ESLintPluginContext, ESLintPluginOptions } from \"./types/plugin\";\n\nexport * from \"./helpers\";\nexport * from \"./types\";\n\n/**\n * A Powerlines plugin to lint a project's source code with ESLint.\n */\nexport function plugin(\n options: ESLintPluginOptions = {}\n): Plugin<ESLintPluginContext> {\n return {\n name: \"eslint\",\n async config() {\n this.debug(\n \"Providing default configuration for the Powerlines `eslint` build plugin.\"\n );\n\n const configFile = getParentPath(\n [\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \"eslint.config.mts\",\n \"eslint.config.cts\",\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\"\n ],\n this.config.projectRoot,\n {\n ignoreCase: true,\n skipCwd: false,\n includeNameInResults: true\n }\n );\n\n return {\n lint: {\n eslint: defu(options, {\n configFile,\n reportErrorsOnly: false,\n maxWarnings: 5,\n fix: true,\n outputFile: null,\n type: \"recommended\"\n })\n }\n };\n },\n async configResolved() {\n if (\n !isSetObject(this.packageJson.eslintConfig) &&\n (!this.config.lint.eslint.configFile ||\n !existsSync(this.config.lint.eslint.configFile))\n ) {\n throw new Error(\"No ESLint configuration file could be found\");\n } else if (\n this.config.lint.eslint.configFile &&\n existsSync(this.config.lint.eslint.configFile)\n ) {\n const content = await readFile(this.config.lint.eslint.configFile);\n if (\n content?.trim().replace(/\\s/g, \"\") ||\n content?.trim().replace(/\\s/g, \"\") === \"---\" ||\n content?.trim().replace(/\\s/g, \"\") === \"{}\" ||\n content?.trim().replace(/\\s/g, \"\") === \"module.exports={}\"\n ) {\n throw new Error(\n `The ESLint configuration file at \"${this.config.lint.eslint.configFile}\" is empty`\n );\n }\n }\n\n const isInstalled = isPackageExists(\"eslint\", {\n paths: [this.workspaceConfig.workspaceRoot, this.config.projectRoot]\n });\n if (!isInstalled) {\n throw new Error(\n `ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`\n );\n }\n\n // if (generateReason) {\n // this.log(\n // LogLevelLabel.WARN,\n // `${generateReason}. Generating a default configuration at the project root.`\n // );\n\n // this.devDependencies[\"eslint-config-powerlines\"] = \"*\";\n // this.config.lint.eslint.configFile = joinPaths(\n // this.config.projectRoot,\n // \"eslint.config.js\"\n // );\n\n // await writeFile(\n // this.config.lint.eslint.configFile,\n // `import { defineConfig } from \"eslint-config-powerlines\";\n\n // Error.stackTraceLimit = Number.POSITIVE_INFINITY;\n\n // /** @type {import('eslint').Linter.Config[]} */\n // export default defineConfig({${\n // this.config.name\n // ? `\n // name: \"${this.config.name}\", `\n // : \"\"\n // }\n // powerlines: ${this.config.lint.eslint.type}\n // });\n\n // `\n // );\n // }\n\n const module = await this.resolver.import<typeof import(\"eslint\")>(\n this.resolver.esmResolve(\"eslint\")\n );\n\n const useFlatConfig = this.config.lint.eslint.configFile\n ? findFileName(this.config.lint.eslint.configFile).startsWith(\n \"eslint.config.\"\n )\n : true;\n\n let ESLint!: typeof FlatESLint | typeof LegacyESLint;\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if (\"loadESLint\" in module) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await module.loadESLint({\n useFlatConfig\n });\n }\n\n const eslintVersion = parseVersion(ESLint?.version);\n if (!eslintVersion || eslintVersion.compare(\"8.57.0\") < 0) {\n throw new Error(\n `Error - Your project has an older version of ESLint installed${\n eslintVersion\n ? ` (${eslintVersion.major}.${eslintVersion.minor}.${eslintVersion.patch})`\n : \"\"\n }. Please upgrade to ESLint version 8.57.0 or above`\n );\n }\n\n const options: any = {\n useEslintrc: !useFlatConfig,\n baseConfig: {},\n errorOnUnmatchedPattern: false,\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\"],\n cache: true\n };\n\n if (eslintVersion?.compare(\"9.0.0\") && useFlatConfig) {\n for (const option of [\n \"useEslintrc\",\n \"extensions\",\n \"ignorePath\",\n \"reportUnusedDisableDirectives\",\n \"resolvePluginsRelativeTo\",\n \"rulePaths\",\n \"inlineConfig\",\n \"maxWarnings\"\n ]) {\n if (option in options) {\n delete options[option];\n }\n }\n }\n\n this.eslint = new ESLint(options);\n },\n async lint() {\n this.debug(\"Linting project files with ESLint.\");\n\n let results = await this.eslint.lintFiles(\n this.tsconfig.fileNames.filter(\n fileName =>\n !fileName.includes(this.artifactsPath) &&\n !fileName.includes(\"node_modules\")\n )\n );\n\n const module = await this.resolver.import<typeof import(\"eslint\")>(\n this.resolver.esmResolve(\"eslint\")\n );\n\n let ESLint!: typeof FlatESLint | typeof LegacyESLint;\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if (\"loadESLint\" in module) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await module.loadESLint({\n useFlatConfig: this.config.lint.eslint.configFile\n ? findFileName(this.config.lint.eslint.configFile).startsWith(\n \"eslint.config.\"\n )\n : true\n });\n }\n\n if (this.config.lint.eslint.fix) {\n await ESLint.outputFixes(results);\n }\n\n if (this.config.lint.eslint.reportErrorsOnly) {\n results = ESLint.getErrorResults(results);\n }\n\n const resultsWithMessages = results.filter(\n ({ messages }) => messages?.length\n );\n\n const output = resultsWithMessages\n .map(({ messages, filePath }) =>\n formatMessage(this.config.projectRoot, messages, filePath)\n )\n .join(\"\\n\");\n\n if (this.config.lint.eslint.outputFile) {\n await this.fs.write(this.config.lint.eslint.outputFile, output);\n } else {\n this.info(output);\n }\n }\n };\n}\n\nexport default plugin;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["ESLint!: typeof FlatESLint | typeof LegacyESLint","options: any","options"],"sources":["../src/index.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { existsSync } from \"@stryke/fs/exists\";\nimport { getParentPath } from \"@stryke/fs/get-parent-path\";\nimport { isPackageExists } from \"@stryke/fs/package-fns\";\nimport { readFile } from \"@stryke/fs/read-file\";\nimport { parseVersion } from \"@stryke/fs/semver-fns\";\nimport { findFileName } from \"@stryke/path/find\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { defu } from \"defu\";\nimport type { ESLint as FlatESLint } from \"eslint\";\nimport type { LegacyESLint } from \"eslint/use-at-your-own-risk\";\nimport { Plugin } from \"powerlines\";\nimport { formatMessage } from \"./helpers/format-message\";\nimport {\n ESLintPluginContext,\n ESLintPluginOptions,\n ESLintPluginResolvedConfig\n} from \"./types/plugin\";\n\nexport * from \"./helpers\";\nexport * from \"./types\";\n\ndeclare module \"powerlines\" {\n export interface UserConfig {\n eslint?: ESLintPluginOptions;\n }\n}\n\n/**\n * A Powerlines plugin to lint a project's source code with ESLint.\n */\nexport function plugin(\n options: ESLintPluginOptions = {}\n): Plugin<ESLintPluginContext> {\n return {\n name: \"eslint\",\n async config() {\n this.debug(\n \"Providing default configuration for the Powerlines `eslint` build plugin.\"\n );\n\n const configFile = getParentPath(\n [\n \"eslint.config.js\",\n \"eslint.config.mjs\",\n \"eslint.config.cjs\",\n \"eslint.config.ts\",\n \"eslint.config.mts\",\n \"eslint.config.cts\",\n \".eslintrc.js\",\n \".eslintrc.cjs\",\n \".eslintrc.yaml\",\n \".eslintrc.yml\",\n \".eslintrc.json\",\n \".eslintrc\"\n ],\n this.config.root,\n {\n ignoreCase: true,\n skipCwd: false,\n includeNameInResults: true\n }\n );\n\n return {\n eslint: defu(options, {\n configFile,\n reportErrorsOnly: false,\n maxWarnings: 5,\n fix: true,\n outputFile: null,\n type: \"recommended\"\n })\n } as Partial<ESLintPluginResolvedConfig>;\n },\n async configResolved() {\n if (\n !isSetObject(this.packageJson.eslintConfig) &&\n (!this.config.lint.eslint.configFile ||\n !existsSync(this.config.lint.eslint.configFile))\n ) {\n throw new Error(\"No ESLint configuration file could be found\");\n } else if (\n this.config.lint.eslint.configFile &&\n existsSync(this.config.lint.eslint.configFile)\n ) {\n const content = await readFile(this.config.lint.eslint.configFile);\n if (\n content?.trim().replace(/\\s/g, \"\") ||\n content?.trim().replace(/\\s/g, \"\") === \"---\" ||\n content?.trim().replace(/\\s/g, \"\") === \"{}\" ||\n content?.trim().replace(/\\s/g, \"\") === \"module.exports={}\"\n ) {\n throw new Error(\n `The ESLint configuration file at \"${this.config.lint.eslint.configFile}\" is empty`\n );\n }\n }\n\n const isInstalled = isPackageExists(\"eslint\", {\n paths: [this.workspaceConfig.workspaceRoot, this.config.root]\n });\n if (!isInstalled) {\n throw new Error(\n `ESLint must be installed to use the Powerlines ESLint plugin. Please run: npm install --save-dev eslint`\n );\n }\n\n // if (generateReason) {\n // this.log(\n // LogLevelLabel.WARN,\n // `${generateReason}. Generating a default configuration at the project root.`\n // );\n\n // this.devDependencies[\"eslint-config-powerlines\"] = \"*\";\n // this.config.lint.eslint.configFile = joinPaths(\n // this.config.projectRoot,\n // \"eslint.config.js\"\n // );\n\n // await writeFile(\n // this.config.lint.eslint.configFile,\n // `import { defineConfig } from \"eslint-config-powerlines\";\n\n // Error.stackTraceLimit = Number.POSITIVE_INFINITY;\n\n // /** @type {import('eslint').Linter.Config[]} */\n // export default defineConfig({${\n // this.config.name\n // ? `\n // name: \"${this.config.name}\", `\n // : \"\"\n // }\n // powerlines: ${this.config.lint.eslint.type}\n // });\n\n // `\n // );\n // }\n\n const module = await this.resolver.import<typeof import(\"eslint\")>(\n this.resolver.esmResolve(\"eslint\")\n );\n\n const useFlatConfig = this.config.lint.eslint.configFile\n ? findFileName(this.config.lint.eslint.configFile).startsWith(\n \"eslint.config.\"\n )\n : true;\n\n let ESLint!: typeof FlatESLint | typeof LegacyESLint;\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if (\"loadESLint\" in module) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await module.loadESLint({\n useFlatConfig\n });\n }\n\n const eslintVersion = parseVersion(ESLint?.version);\n if (!eslintVersion || eslintVersion.compare(\"8.57.0\") < 0) {\n throw new Error(\n `Error - Your project has an older version of ESLint installed${\n eslintVersion\n ? ` (${eslintVersion.major}.${eslintVersion.minor}.${eslintVersion.patch})`\n : \"\"\n }. Please upgrade to ESLint version 8.57.0 or above`\n );\n }\n\n const options: any = {\n useEslintrc: !useFlatConfig,\n baseConfig: {},\n errorOnUnmatchedPattern: false,\n extensions: [\".js\", \".jsx\", \".ts\", \".tsx\"],\n cache: true\n };\n\n if (eslintVersion?.compare(\"9.0.0\") && useFlatConfig) {\n for (const option of [\n \"useEslintrc\",\n \"extensions\",\n \"ignorePath\",\n \"reportUnusedDisableDirectives\",\n \"resolvePluginsRelativeTo\",\n \"rulePaths\",\n \"inlineConfig\",\n \"maxWarnings\"\n ]) {\n if (option in options) {\n delete options[option];\n }\n }\n }\n\n this.eslint = new ESLint(options);\n },\n async lint() {\n this.debug(\"Linting project files with ESLint.\");\n\n let results = await this.eslint.lintFiles(\n this.tsconfig.fileNames.filter(\n fileName =>\n !fileName.includes(this.artifactsPath) &&\n !fileName.includes(\"node_modules\")\n )\n );\n\n const module = await this.resolver.import<typeof import(\"eslint\")>(\n this.resolver.esmResolve(\"eslint\")\n );\n\n let ESLint!: typeof FlatESLint | typeof LegacyESLint;\n // loadESLint is >= 8.57.0\n // PR https://github.com/eslint/eslint/pull/18098\n // Release https://github.com/eslint/eslint/releases/tag/v8.57.0\n if (\"loadESLint\" in module) {\n // By default, configType is `flat`. If `useFlatConfig` is false, the return value is `LegacyESLint`.\n // https://github.com/eslint/eslint/blob/1def4cdfab1f067c5089df8b36242cdf912b0eb6/lib/types/index.d.ts#L1609-L1613\n ESLint = await module.loadESLint({\n useFlatConfig: this.config.lint.eslint.configFile\n ? findFileName(this.config.lint.eslint.configFile).startsWith(\n \"eslint.config.\"\n )\n : true\n });\n }\n\n if (this.config.lint.eslint.fix) {\n await ESLint.outputFixes(results);\n }\n\n if (this.config.lint.eslint.reportErrorsOnly) {\n results = ESLint.getErrorResults(results);\n }\n\n const resultsWithMessages = results.filter(\n ({ messages }) => messages?.length\n );\n\n const output = resultsWithMessages\n .map(({ messages, filePath }) =>\n formatMessage(this.config.root, messages, filePath)\n )\n .join(\"\\n\");\n\n if (this.config.lint.eslint.outputFile) {\n await this.fs.write(this.config.lint.eslint.outputFile, output);\n } else {\n this.info(output);\n }\n }\n };\n}\n\nexport default plugin;\n"],"mappings":"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"}
@@ -1,8 +1,6 @@
1
+ import { PluginContext, ResolvedConfig, UserConfig } from "powerlines";
1
2
  import { ESLint } from "eslint";
2
3
  import { LegacyESLint } from "eslint/use-at-your-own-risk";
3
- import { UserConfig } from "powerlines/types/config";
4
- import { PluginContext } from "powerlines/types/context";
5
- import { ResolvedConfig } from "powerlines/types/resolved";
6
4
 
7
5
  //#region src/types/plugin.d.ts
8
6
  interface ESLintPluginOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.cts","names":[],"sources":["../../src/types/plugin.ts"],"sourcesContent":[],"mappings":";;;;;;;UAyBiB,mBAAA;EAAA;AA0CjB;AASA;EASY,UAAA,CAAA,EAAA,MAAA;EAER;;;EACA,gBAAA,CAAA,EAAA,OAAA;EAIM;;;;;;;;;;;;;;;;;;;;;;;;aA5BG,QAAQ,MAAA,CAAO;;UAGX,sBAAA,SAA+B;;;;;aAKnC;;;UAII,0BAAA,SAAmC;;;;;YAKxC;;;KAIA,4CAER,6BAA6B,8BAC7B,cAAc;;;;UAIR,SAAa"}
1
+ {"version":3,"file":"plugin.d.cts","names":[],"sources":["../../src/types/plugin.ts"],"sourcesContent":[],"mappings":";;;;;UAuBiB,mBAAA;EAAA;AA0CjB;AASA;EASY,UAAA,CAAA,EAAA,MAAA;EACc;;;EAEtB,gBAAA,CAAA,EAAA,OAAA;EAIM;;;;;;;;;;;;;;;;;;;;;;;;aA5BG,QAAQ,MAAA,CAAO;;UAGX,sBAAA,SAA+B;;;;;aAKnC;;;UAII,0BAAA,SAAmC;;;;;YAKxC;;;KAIA,4CACc,6BACtB,8BACA,cAAc;;;;UAIR,SAAa"}
@@ -1,8 +1,6 @@
1
+ import { PluginContext, ResolvedConfig, UserConfig } from "powerlines";
1
2
  import { ESLint } from "eslint";
2
3
  import { LegacyESLint } from "eslint/use-at-your-own-risk";
3
- import { UserConfig } from "powerlines/types/config";
4
- import { PluginContext } from "powerlines/types/context";
5
- import { ResolvedConfig } from "powerlines/types/resolved";
6
4
 
7
5
  //#region src/types/plugin.d.ts
8
6
  interface ESLintPluginOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.mts","names":[],"sources":["../../src/types/plugin.ts"],"sourcesContent":[],"mappings":";;;;;;;UAyBiB,mBAAA;EAAA;AA0CjB;AASA;EASY,UAAA,CAAA,EAAA,MAAA;EAER;;;EACA,gBAAA,CAAA,EAAA,OAAA;EAIM;;;;;;;;;;;;;;;;;;;;;;;;aA5BG,QAAQ,MAAA,CAAO;;UAGX,sBAAA,SAA+B;;;;;aAKnC;;;UAII,0BAAA,SAAmC;;;;;YAKxC;;;KAIA,4CAER,6BAA6B,8BAC7B,cAAc;;;;UAIR,SAAa"}
1
+ {"version":3,"file":"plugin.d.mts","names":[],"sources":["../../src/types/plugin.ts"],"sourcesContent":[],"mappings":";;;;;UAuBiB,mBAAA;EAAA;AA0CjB;AASA;EASY,UAAA,CAAA,EAAA,MAAA;EACc;;;EAEtB,gBAAA,CAAA,EAAA,OAAA;EAIM;;;;;;;;;;;;;;;;;;;;;;;;aA5BG,QAAQ,MAAA,CAAO;;UAGX,sBAAA,SAA+B;;;;;aAKnC;;;UAII,0BAAA,SAAmC;;;;;YAKxC;;;KAIA,4CACc,6BACtB,8BACA,cAAc;;;;UAIR,SAAa"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerlines/plugin-eslint",
3
- "version": "0.8.294",
3
+ "version": "0.8.296",
4
4
  "type": "module",
5
5
  "description": "A package containing a Powerlines plugin for running ESLint on the codebase.",
6
6
  "repository": {
@@ -53,6 +53,7 @@
53
53
  "default": "./dist/index.mjs"
54
54
  }
55
55
  },
56
+ "./*": "./*",
56
57
  "./helpers": {
57
58
  "require": {
58
59
  "types": "./dist/helpers/index.d.cts",
@@ -81,7 +82,6 @@
81
82
  "default": "./dist/helpers/format-message.mjs"
82
83
  }
83
84
  },
84
- "./package.json": "./package.json",
85
85
  "./types": {
86
86
  "require": {
87
87
  "types": "./dist/types/index.d.cts",
@@ -114,17 +114,17 @@
114
114
  "files": ["dist/**/*"],
115
115
  "keywords": ["eslint", "powerlines", "storm-software", "powerlines-plugin"],
116
116
  "dependencies": {
117
- "@storm-software/config-tools": "^1.189.9",
117
+ "@storm-software/config-tools": "^1.189.10",
118
118
  "@stryke/fs": "^0.33.43",
119
119
  "@stryke/path": "^0.26.6",
120
120
  "defu": "^6.1.4",
121
121
  "eslint": "^9.39.3",
122
- "powerlines": "^0.38.57"
122
+ "powerlines": "^0.39.1"
123
123
  },
124
- "devDependencies": { "@types/node": "^25.3.1" },
124
+ "devDependencies": { "@types/node": "^25.3.3" },
125
125
  "publishConfig": { "access": "public" },
126
126
  "main": "./dist/index.cjs",
127
127
  "module": "./dist/index.mjs",
128
128
  "types": "./dist/index.d.cts",
129
- "gitHead": "eb3dbd19bd153aa5a988bce09a1cf05d985cb04b"
129
+ "gitHead": "30a096fed42d3462dbc028b16145250c373f3d99"
130
130
  }