@code-pushup/eslint-plugin 0.121.0 → 0.122.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-pushup/eslint-plugin",
3
- "version": "0.121.0",
3
+ "version": "0.122.1",
4
4
  "license": "MIT",
5
5
  "description": "Code PushUp plugin for detecting problems in source code using ESLint.📋",
6
6
  "homepage": "https://github.com/code-pushup/cli/tree/main/packages/plugin-eslint#readme",
@@ -40,8 +40,8 @@
40
40
  "dependencies": {
41
41
  "ansis": "^3.3.2",
42
42
  "glob": "^11.0.0",
43
- "@code-pushup/utils": "0.121.0",
44
- "@code-pushup/models": "0.121.0",
43
+ "@code-pushup/utils": "0.122.1",
44
+ "@code-pushup/models": "0.122.1",
45
45
  "zod": "^4.2.1"
46
46
  },
47
47
  "peerDependencies": {
@@ -34,7 +34,7 @@ export declare const eslintSetupBinding: {
34
34
  moduleSpecifier: string;
35
35
  defaultImport: string;
36
36
  }[];
37
- pluginInit: string;
37
+ pluginInit: string[];
38
38
  };
39
39
  };
40
40
  declare function isRecommended(targetDir: string): Promise<boolean>;
@@ -1,7 +1,7 @@
1
1
  import { readdir } from 'node:fs/promises';
2
2
  import { createRequire } from 'node:module';
3
3
  import path from 'node:path';
4
- import { directoryExists, hasDependency, readJsonFile, singleQuote, } from '@code-pushup/utils';
4
+ import { answerArray, answerBoolean, answerString, directoryExists, hasDependency, readJsonFile, singleQuote, } from '@code-pushup/utils';
5
5
  import { DEFAULT_PATTERN, ESLINT_PLUGIN_SLUG, ESLINT_PLUGIN_TITLE, } from './constants.js';
6
6
  const { name: PACKAGE_NAME } = createRequire(import.meta.url)('../../package.json');
7
7
  const ESLINT_CONFIG_PATTERN = /^(\.eslintrc(\.\w+)?|eslint\.config\.\w+)$/;
@@ -55,31 +55,44 @@ export const eslintSetupBinding = {
55
55
  },
56
56
  {
57
57
  key: 'eslint.categories',
58
- message: 'Add recommended categories (bug prevention, code style)?',
58
+ message: 'Add ESLint categories?',
59
59
  type: 'confirm',
60
60
  default: true,
61
61
  },
62
62
  ],
63
63
  generateConfig: (answers) => {
64
- const withCategories = answers['eslint.categories'] !== false;
65
- const args = [
66
- resolveEslintrc(answers['eslint.eslintrc']),
67
- resolvePatterns(answers['eslint.patterns']),
68
- ].filter(Boolean);
64
+ const options = parseAnswers(answers);
69
65
  return {
70
66
  imports: [
71
67
  { moduleSpecifier: PACKAGE_NAME, defaultImport: 'eslintPlugin' },
72
68
  ],
73
- pluginInit: args.length > 0
74
- ? `await eslintPlugin({ ${args.join(', ')} })`
75
- : 'await eslintPlugin()',
76
- ...(withCategories ? { categories: ESLINT_CATEGORIES } : {}),
69
+ pluginInit: formatPluginInit(options),
70
+ ...(options.categories ? { categories: ESLINT_CATEGORIES } : {}),
77
71
  };
78
72
  },
79
73
  };
80
- async function detectEslintConfig(targetDir) {
81
- const files = await readdir(targetDir, { encoding: 'utf8' });
82
- return files.find(file => ESLINT_CONFIG_PATTERN.test(file));
74
+ function parseAnswers(answers) {
75
+ return {
76
+ eslintrc: answerString(answers, 'eslint.eslintrc'),
77
+ patterns: answerArray(answers, 'eslint.patterns'),
78
+ categories: answerBoolean(answers, 'eslint.categories'),
79
+ };
80
+ }
81
+ function formatPluginInit({ eslintrc, patterns }) {
82
+ const useCustomEslintrc = eslintrc !== '' && !ESLINT_CONFIG_PATTERN.test(eslintrc);
83
+ const customPatterns = patterns
84
+ .filter(s => s !== '' && s !== DEFAULT_PATTERN)
85
+ .map(singleQuote);
86
+ const body = [
87
+ useCustomEslintrc ? `eslintrc: ${singleQuote(eslintrc)}` : '',
88
+ customPatterns.length === 1 ? `patterns: ${customPatterns[0]}` : '',
89
+ customPatterns.length > 1 ? `patterns: [${customPatterns.join(', ')}]` : '',
90
+ ]
91
+ .filter(Boolean)
92
+ .join(', ');
93
+ return body
94
+ ? [`await eslintPlugin({ ${body} }),`]
95
+ : ['await eslintPlugin(),'];
83
96
  }
84
97
  async function isRecommended(targetDir) {
85
98
  if (await detectEslintConfig(targetDir)) {
@@ -93,34 +106,8 @@ async function isRecommended(targetDir) {
93
106
  return false;
94
107
  }
95
108
  }
96
- /** Omits `eslintrc` for standard config filenames (ESLint discovers them automatically). */
97
- function resolveEslintrc(value) {
98
- if (typeof value !== 'string' || !value) {
99
- return '';
100
- }
101
- if (ESLINT_CONFIG_PATTERN.test(value)) {
102
- return '';
103
- }
104
- return `eslintrc: ${singleQuote(value)}`;
105
- }
106
- /** Formats patterns as a string or array literal, omitting the plugin default. */
107
- function resolvePatterns(value) {
108
- if (typeof value === 'string') {
109
- return resolvePatterns(value.split(','));
110
- }
111
- if (!Array.isArray(value)) {
112
- return '';
113
- }
114
- const patterns = value
115
- .map(s => s.trim())
116
- .filter(s => s !== '' && s !== DEFAULT_PATTERN)
117
- .map(singleQuote);
118
- if (patterns.length === 0) {
119
- return '';
120
- }
121
- if (patterns.length === 1) {
122
- return `patterns: ${patterns.join('')}`;
123
- }
124
- return `patterns: [${patterns.join(', ')}]`;
109
+ async function detectEslintConfig(targetDir) {
110
+ const files = await readdir(targetDir, { encoding: 'utf8' });
111
+ return files.find(file => ESLINT_CONFIG_PATTERN.test(file));
125
112
  }
126
113
  //# sourceMappingURL=binding.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"binding.js","sourceRoot":"","sources":["../../../src/lib/binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binding.js","sourceRoot":"","sources":["../../../src/lib/binding.ts"],"names":[],"mappings":"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"}