@mikey-pro/eslint-config 9.0.8 → 10.0.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/base-config.js +163 -65
- package/flat.js +12 -4
- package/index.js +48 -43
- package/overrides.js +127 -75
- package/package.json +33 -45
- package/rules.js +0 -622
package/overrides.js
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
// Modern overrides for different file types and frameworks
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
|
|
4
2
|
import html from '@html-eslint/eslint-plugin';
|
|
5
3
|
import htmlParser from '@html-eslint/parser';
|
|
6
4
|
import tsPlugin from '@typescript-eslint/eslint-plugin';
|
|
7
5
|
import tsParser from '@typescript-eslint/parser';
|
|
6
|
+
import markdown from '@eslint/markdown';
|
|
8
7
|
import cypress from 'eslint-plugin-cypress';
|
|
9
|
-
import
|
|
8
|
+
import importX from 'eslint-plugin-import-x';
|
|
10
9
|
import jest from 'eslint-plugin-jest';
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
10
|
+
import jestDom from 'eslint-plugin-jest-dom';
|
|
11
|
+
import jsoncPlugin from 'eslint-plugin-jsonc';
|
|
12
|
+
import testingLibrary from 'eslint-plugin-testing-library';
|
|
13
|
+
import tomlPlugin from 'eslint-plugin-toml';
|
|
14
14
|
import jsoncParser from 'jsonc-eslint-parser';
|
|
15
15
|
import tomlParser from 'toml-eslint-parser';
|
|
16
16
|
import yamlParser from 'yaml-eslint-parser';
|
|
17
17
|
|
|
18
|
-
const currentDirectory = import.meta.dirname;
|
|
19
|
-
|
|
20
18
|
// TypeScript configuration
|
|
21
19
|
export const ts = {
|
|
22
20
|
files: ['**/*.ts', '**/*.tsx'],
|
|
@@ -26,20 +24,16 @@ export const ts = {
|
|
|
26
24
|
parserOptions: {
|
|
27
25
|
ecmaFeatures: { jsx: true },
|
|
28
26
|
extraFileExtensions: ['.vue', '.svelte'],
|
|
29
|
-
project:
|
|
30
|
-
tsconfigRootDir:
|
|
27
|
+
project: true,
|
|
28
|
+
tsconfigRootDir: process.cwd(),
|
|
31
29
|
},
|
|
32
30
|
sourceType: 'module',
|
|
33
31
|
},
|
|
34
|
-
plugins: {
|
|
35
|
-
'@typescript-eslint': tsPlugin,
|
|
36
|
-
import: importPlugin,
|
|
37
|
-
},
|
|
38
32
|
rules: {
|
|
39
33
|
// TypeScript-specific rules
|
|
40
34
|
...tsPlugin.configs.all.rules,
|
|
41
35
|
...tsPlugin.configs['recommended-requiring-type-checking'].rules,
|
|
42
|
-
...
|
|
36
|
+
...importX.flatConfigs.typescript.rules,
|
|
43
37
|
|
|
44
38
|
// Override some rules for better developer experience
|
|
45
39
|
'@typescript-eslint/class-methods-use-this': 'off',
|
|
@@ -208,10 +202,10 @@ export const ts = {
|
|
|
208
202
|
'@typescript-eslint/use-unknown-in-catch-callback-variable': 'off',
|
|
209
203
|
},
|
|
210
204
|
settings: {
|
|
211
|
-
'import/parsers': {
|
|
205
|
+
'import-x/parsers': {
|
|
212
206
|
'@typescript-eslint/parser': ['.ts', '.tsx', '.d.ts'],
|
|
213
207
|
},
|
|
214
|
-
'import/resolver': {
|
|
208
|
+
'import-x/resolver': {
|
|
215
209
|
typescript: { alwaysTryTypes: true },
|
|
216
210
|
},
|
|
217
211
|
},
|
|
@@ -247,11 +241,25 @@ export const yaml = {
|
|
|
247
241
|
languageOptions: {
|
|
248
242
|
parser: yamlParser,
|
|
249
243
|
},
|
|
250
|
-
plugins: {
|
|
251
|
-
yml: yml,
|
|
252
|
-
},
|
|
253
244
|
rules: {
|
|
245
|
+
'yml/block-mapping': 'error',
|
|
246
|
+
'yml/block-mapping-question-indicator-newline': 'error',
|
|
247
|
+
'yml/block-sequence': 'error',
|
|
248
|
+
'yml/block-sequence-hyphen-indicator-newline': 'error',
|
|
249
|
+
'yml/flow-mapping-curly-newline': 'error',
|
|
250
|
+
'yml/flow-mapping-curly-spacing': 'error',
|
|
251
|
+
'yml/flow-sequence-bracket-newline': 'error',
|
|
252
|
+
'yml/flow-sequence-bracket-spacing': 'error',
|
|
253
|
+
'yml/indent': ['error', 2],
|
|
254
|
+
'yml/key-spacing': 'error',
|
|
255
|
+
'yml/no-empty-document': 'error',
|
|
256
|
+
'yml/no-empty-key': 'error',
|
|
257
|
+
'yml/no-empty-mapping-value': 'error',
|
|
258
|
+
'yml/no-empty-sequence-entry': 'error',
|
|
259
|
+
'yml/no-irregular-whitespace': 'error',
|
|
260
|
+
'yml/no-tab-indent': 'error',
|
|
254
261
|
'yml/quotes': ['warn', { avoidEscape: true, prefer: 'double' }],
|
|
262
|
+
'yml/require-string-key': 'error',
|
|
255
263
|
},
|
|
256
264
|
};
|
|
257
265
|
|
|
@@ -262,20 +270,40 @@ export const toml = {
|
|
|
262
270
|
parser: tomlParser,
|
|
263
271
|
},
|
|
264
272
|
rules: {
|
|
273
|
+
...tomlPlugin.configs['flat/recommended'].reduce(
|
|
274
|
+
(accumulator, config) => ({ ...accumulator, ...config.rules }),
|
|
275
|
+
{},
|
|
276
|
+
),
|
|
265
277
|
'prettier/prettier': 'off',
|
|
266
278
|
},
|
|
267
279
|
};
|
|
268
280
|
|
|
269
|
-
// Markdown files
|
|
281
|
+
// Markdown files — uses @eslint/markdown language plugin
|
|
270
282
|
export const md = {
|
|
271
283
|
files: ['**/*.md'],
|
|
272
|
-
|
|
284
|
+
language: 'markdown/commonmark',
|
|
285
|
+
rules: {
|
|
286
|
+
'markdown/fenced-code-language': 'error',
|
|
287
|
+
'markdown/heading-increment': 'error',
|
|
288
|
+
'markdown/no-duplicate-headings': 'error',
|
|
289
|
+
'markdown/no-empty-links': 'error',
|
|
290
|
+
'markdown/no-html': 'off',
|
|
291
|
+
'markdown/no-invalid-label-refs': 'error',
|
|
292
|
+
'markdown/no-missing-label-refs': 'error',
|
|
293
|
+
},
|
|
273
294
|
};
|
|
274
295
|
|
|
275
296
|
// Package.json files
|
|
276
297
|
export const packageJson = {
|
|
277
298
|
files: ['**/package.json'],
|
|
299
|
+
languageOptions: {
|
|
300
|
+
parser: jsoncParser,
|
|
301
|
+
},
|
|
278
302
|
rules: {
|
|
303
|
+
...jsoncPlugin.configs['flat/recommended-with-json'].reduce(
|
|
304
|
+
(accumulator, config) => ({ ...accumulator, ...config.rules }),
|
|
305
|
+
{},
|
|
306
|
+
),
|
|
279
307
|
'prettier/prettier': ['warn', { parser: 'json' }],
|
|
280
308
|
},
|
|
281
309
|
settings: {
|
|
@@ -316,11 +344,8 @@ export const htmlConfig = {
|
|
|
316
344
|
languageOptions: {
|
|
317
345
|
parser: htmlParser,
|
|
318
346
|
},
|
|
319
|
-
plugins: {
|
|
320
|
-
'@html-eslint': html,
|
|
321
|
-
},
|
|
322
347
|
rules: {
|
|
323
|
-
...html.configs
|
|
348
|
+
...html.configs['flat/recommended'].rules,
|
|
324
349
|
'@html-eslint/element-newline': 'off',
|
|
325
350
|
'@html-eslint/indent': 'off',
|
|
326
351
|
'@html-eslint/no-extra-spacing-attrs': 'off',
|
|
@@ -333,11 +358,21 @@ export const htmlConfig = {
|
|
|
333
358
|
|
|
334
359
|
// JSONC files
|
|
335
360
|
export const jsonc = {
|
|
336
|
-
files: [
|
|
361
|
+
files: [
|
|
362
|
+
'**/*.jsonc',
|
|
363
|
+
'**/.babelrc',
|
|
364
|
+
'**/.eslintrc',
|
|
365
|
+
'**/.prettierrc',
|
|
366
|
+
'**/.stylelintrc',
|
|
367
|
+
],
|
|
337
368
|
languageOptions: {
|
|
338
369
|
parser: jsoncParser,
|
|
339
370
|
},
|
|
340
371
|
rules: {
|
|
372
|
+
...jsoncPlugin.configs['flat/recommended-with-jsonc'].reduce(
|
|
373
|
+
(accumulator, config) => ({ ...accumulator, ...config.rules }),
|
|
374
|
+
{},
|
|
375
|
+
),
|
|
341
376
|
'prettier/prettier': ['warn', { parser: 'json' }],
|
|
342
377
|
},
|
|
343
378
|
};
|
|
@@ -349,6 +384,10 @@ export const json5 = {
|
|
|
349
384
|
parser: jsoncParser,
|
|
350
385
|
},
|
|
351
386
|
rules: {
|
|
387
|
+
...jsoncPlugin.configs['flat/recommended-with-json5'].reduce(
|
|
388
|
+
(accumulator, config) => ({ ...accumulator, ...config.rules }),
|
|
389
|
+
{},
|
|
390
|
+
),
|
|
352
391
|
'prettier/prettier': ['warn', { parser: 'json5' }],
|
|
353
392
|
},
|
|
354
393
|
};
|
|
@@ -359,14 +398,42 @@ export const jestJs = {
|
|
|
359
398
|
languageOptions: {
|
|
360
399
|
globals: { jest: true },
|
|
361
400
|
},
|
|
362
|
-
plugins: {
|
|
363
|
-
jest,
|
|
364
|
-
},
|
|
365
401
|
rules: {
|
|
366
|
-
...jest.configs
|
|
402
|
+
...jest.configs['flat/all'].rules,
|
|
403
|
+
// Jest DOM rules for testing-library assertions
|
|
404
|
+
'jest-dom/prefer-checked': 'error',
|
|
405
|
+
'jest-dom/prefer-enabled-disabled': 'error',
|
|
406
|
+
'jest-dom/prefer-focus': 'error',
|
|
407
|
+
'jest-dom/prefer-in-document': 'error',
|
|
408
|
+
'jest-dom/prefer-required': 'error',
|
|
409
|
+
'jest-dom/prefer-to-have-attribute': 'error',
|
|
410
|
+
'jest-dom/prefer-to-have-class': 'error',
|
|
411
|
+
'jest-dom/prefer-to-have-style': 'error',
|
|
412
|
+
'jest-dom/prefer-to-have-text-content': 'error',
|
|
413
|
+
'jest-dom/prefer-to-have-value': 'error',
|
|
414
|
+
// Testing Library rules
|
|
415
|
+
'testing-library/await-async-queries': 'error',
|
|
416
|
+
'testing-library/await-async-utils': 'error',
|
|
417
|
+
'testing-library/no-await-sync-queries': 'error',
|
|
418
|
+
'testing-library/no-debugging-utils': 'warn',
|
|
419
|
+
'testing-library/no-dom-import': 'error',
|
|
420
|
+
'testing-library/no-manual-cleanup': 'error',
|
|
421
|
+
'testing-library/no-render-in-lifecycle': 'error',
|
|
422
|
+
'testing-library/no-unnecessary-act': 'error',
|
|
423
|
+
'testing-library/no-wait-for-multiple-assertions': 'error',
|
|
424
|
+
'testing-library/prefer-explicit-assert': 'warn',
|
|
425
|
+
'testing-library/prefer-find-by': 'error',
|
|
426
|
+
'testing-library/prefer-presence-queries': 'error',
|
|
427
|
+
'testing-library/prefer-query-by-disappearance': 'error',
|
|
428
|
+
'testing-library/prefer-screen-queries': 'error',
|
|
429
|
+
'testing-library/render-result-naming-convention': 'error',
|
|
430
|
+
// Disable rules requiring TypeScript type checking (not available in JS files)
|
|
431
|
+
'jest/no-error-equal': 'off',
|
|
432
|
+
'jest/no-unnecessary-assertion': 'off',
|
|
433
|
+
'jest/unbound-method': 'off',
|
|
434
|
+
'jest/valid-expect-with-promise': 'off',
|
|
367
435
|
'jest/prefer-spy-on': 'warn',
|
|
368
436
|
'jest/require-top-level-describe': 'error',
|
|
369
|
-
'jest/unbound-method': 'off',
|
|
370
437
|
'unicorn/no-array-callback-reference': 'off',
|
|
371
438
|
'unicorn/prevent-abbreviations': ['warn', { ignore: [/e2e/] }],
|
|
372
439
|
},
|
|
@@ -379,12 +446,35 @@ export const jestTs = {
|
|
|
379
446
|
globals: { jest: true },
|
|
380
447
|
parser: tsParser,
|
|
381
448
|
},
|
|
382
|
-
plugins: {
|
|
383
|
-
'@typescript-eslint': tsPlugin,
|
|
384
|
-
jest,
|
|
385
|
-
},
|
|
386
449
|
rules: {
|
|
387
|
-
...jest.configs
|
|
450
|
+
...jest.configs['flat/all'].rules,
|
|
451
|
+
// Jest DOM rules for testing-library assertions
|
|
452
|
+
'jest-dom/prefer-checked': 'error',
|
|
453
|
+
'jest-dom/prefer-enabled-disabled': 'error',
|
|
454
|
+
'jest-dom/prefer-focus': 'error',
|
|
455
|
+
'jest-dom/prefer-in-document': 'error',
|
|
456
|
+
'jest-dom/prefer-required': 'error',
|
|
457
|
+
'jest-dom/prefer-to-have-attribute': 'error',
|
|
458
|
+
'jest-dom/prefer-to-have-class': 'error',
|
|
459
|
+
'jest-dom/prefer-to-have-style': 'error',
|
|
460
|
+
'jest-dom/prefer-to-have-text-content': 'error',
|
|
461
|
+
'jest-dom/prefer-to-have-value': 'error',
|
|
462
|
+
// Testing Library rules
|
|
463
|
+
'testing-library/await-async-queries': 'error',
|
|
464
|
+
'testing-library/await-async-utils': 'error',
|
|
465
|
+
'testing-library/no-await-sync-queries': 'error',
|
|
466
|
+
'testing-library/no-debugging-utils': 'warn',
|
|
467
|
+
'testing-library/no-dom-import': 'error',
|
|
468
|
+
'testing-library/no-manual-cleanup': 'error',
|
|
469
|
+
'testing-library/no-render-in-lifecycle': 'error',
|
|
470
|
+
'testing-library/no-unnecessary-act': 'error',
|
|
471
|
+
'testing-library/no-wait-for-multiple-assertions': 'error',
|
|
472
|
+
'testing-library/prefer-explicit-assert': 'warn',
|
|
473
|
+
'testing-library/prefer-find-by': 'error',
|
|
474
|
+
'testing-library/prefer-presence-queries': 'error',
|
|
475
|
+
'testing-library/prefer-query-by-disappearance': 'error',
|
|
476
|
+
'testing-library/prefer-screen-queries': 'error',
|
|
477
|
+
'testing-library/render-result-naming-convention': 'error',
|
|
388
478
|
'jest/prefer-spy-on': 'warn',
|
|
389
479
|
'jest/require-top-level-describe': 'error',
|
|
390
480
|
'jest/unbound-method': 'off',
|
|
@@ -396,47 +486,11 @@ export const jestTs = {
|
|
|
396
486
|
// Cypress files
|
|
397
487
|
export const cypressConfig = {
|
|
398
488
|
files: ['**/*.cy.*'],
|
|
399
|
-
plugins: {
|
|
400
|
-
cypress,
|
|
401
|
-
},
|
|
402
489
|
rules: {
|
|
403
490
|
...cypress.configs.recommended.rules,
|
|
404
491
|
},
|
|
405
492
|
};
|
|
406
493
|
|
|
407
|
-
// Shell scripts (bash, sh, zsh)
|
|
408
|
-
export const shellConfig = {
|
|
409
|
-
files: ['**/*.sh', '**/*.bash', '**/*.zsh'],
|
|
410
|
-
languageOptions: {
|
|
411
|
-
parser: parserPlain,
|
|
412
|
-
},
|
|
413
|
-
plugins: {
|
|
414
|
-
shell,
|
|
415
|
-
},
|
|
416
|
-
rules: {
|
|
417
|
-
// Basic shell script linting rules
|
|
418
|
-
// Note: Full shell script linting may require shellcheck (external tool)
|
|
419
|
-
'shell/shell': 'warn',
|
|
420
|
-
},
|
|
421
|
-
};
|
|
422
|
-
|
|
423
|
-
// .env files
|
|
424
|
-
export const envFilesConfig = {
|
|
425
|
-
files: ['**/.env', '**/.env.*', '**/*.env'],
|
|
426
|
-
languageOptions: {
|
|
427
|
-
parser: parserPlain,
|
|
428
|
-
},
|
|
429
|
-
plugins: {
|
|
430
|
-
shell,
|
|
431
|
-
},
|
|
432
|
-
rules: {
|
|
433
|
-
// Relax JavaScript-specific variable rules for .env files
|
|
434
|
-
// Note: .env formatting and validation should be handled by external tools
|
|
435
|
-
'no-undef': 'off',
|
|
436
|
-
'no-unused-vars': 'off',
|
|
437
|
-
},
|
|
438
|
-
};
|
|
439
|
-
|
|
440
494
|
// Export all overrides
|
|
441
495
|
export const baseOverrides = [
|
|
442
496
|
ts,
|
|
@@ -453,6 +507,4 @@ export const baseOverrides = [
|
|
|
453
507
|
jestJs,
|
|
454
508
|
jestTs,
|
|
455
509
|
cypressConfig,
|
|
456
|
-
shellConfig,
|
|
457
|
-
envFilesConfig,
|
|
458
510
|
];
|
package/package.json
CHANGED
|
@@ -1,56 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikey-pro/eslint-config",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.1",
|
|
4
4
|
"description": "Mikey Pro ESLint configuration - Ultimate coding style guide for excellence",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"sideEffects": false,
|
|
8
8
|
"dependencies": {
|
|
9
|
-
"@
|
|
10
|
-
"@
|
|
11
|
-
"@babel/eslint-plugin": "^7.27.1",
|
|
12
|
-
"@babel/preset-env": "^7.28.3",
|
|
13
|
-
"@cypress/eslint-plugin-json": "^3.2.3",
|
|
14
|
-
"@eslint/js": "^9.35.0",
|
|
9
|
+
"@eslint/js": "^10.0.0",
|
|
10
|
+
"@eslint/markdown": "^7.5.1",
|
|
15
11
|
"@html-eslint/eslint-plugin": "^0.46.2",
|
|
16
12
|
"@html-eslint/parser": "^0.46.2",
|
|
17
|
-
"@
|
|
18
|
-
"@typescript-eslint/
|
|
19
|
-
"
|
|
20
|
-
"eslint": "^
|
|
21
|
-
"eslint-
|
|
22
|
-
"eslint-
|
|
23
|
-
"eslint-plugin-
|
|
24
|
-
"eslint-plugin-
|
|
25
|
-
"eslint-plugin-css-modules": "^2.12.0",
|
|
26
|
-
"eslint-plugin-cypress": "^5.1.1",
|
|
27
|
-
"eslint-plugin-filenames": "^1.3.2",
|
|
28
|
-
"@eslint/markdown": "^6.1.0",
|
|
13
|
+
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
14
|
+
"@typescript-eslint/parser": "^8.56.0",
|
|
15
|
+
"eslint": "^10.0.0",
|
|
16
|
+
"eslint-plugin-boundaries": "^5.4.0",
|
|
17
|
+
"eslint-plugin-compat": "^7.0.0",
|
|
18
|
+
"eslint-plugin-cypress": "^6.1.0",
|
|
19
|
+
"eslint-plugin-import-x": "^4.16.1",
|
|
20
|
+
"eslint-plugin-jest": "^29.12.1",
|
|
29
21
|
"eslint-plugin-jest-dom": "^5.5.0",
|
|
30
22
|
"eslint-plugin-jsonc": "^2.20.1",
|
|
31
|
-
"eslint-plugin-
|
|
32
|
-
"eslint-plugin-n": "^17.21.3",
|
|
23
|
+
"eslint-plugin-n": "^17.23.1",
|
|
33
24
|
"eslint-plugin-no-only-tests": "^3.3.0",
|
|
34
|
-
"eslint-plugin-no-secrets": "^2.
|
|
35
|
-
"eslint-plugin-only-warn": "^1.1.0",
|
|
36
|
-
"eslint-plugin-optimize-regex": "^1.2.1",
|
|
25
|
+
"eslint-plugin-no-secrets": "^2.3.3",
|
|
37
26
|
"eslint-plugin-perfectionist": "^4.15.0",
|
|
38
|
-
"eslint-plugin-prettier": "^5.5.
|
|
27
|
+
"eslint-plugin-prettier": "^5.5.5",
|
|
39
28
|
"eslint-plugin-promise": "^7.2.1",
|
|
40
29
|
"eslint-plugin-regexp": "^2.10.0",
|
|
41
|
-
"eslint-plugin-security": "^
|
|
42
|
-
"eslint-plugin-shell": "^0.0.1",
|
|
30
|
+
"eslint-plugin-security": "^4.0.0",
|
|
43
31
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
44
32
|
"eslint-plugin-sonarjs": "^3.0.5",
|
|
45
|
-
"eslint-plugin-sort-destructure-keys": "^
|
|
33
|
+
"eslint-plugin-sort-destructure-keys": "^3.0.0",
|
|
46
34
|
"eslint-plugin-testing-library": "^7.6.8",
|
|
47
35
|
"eslint-plugin-toml": "^0.12.0",
|
|
48
|
-
"eslint-plugin-unicorn": "^
|
|
49
|
-
"eslint-plugin-write-good-comments": "^0.2.0",
|
|
36
|
+
"eslint-plugin-unicorn": "^62.0.0",
|
|
50
37
|
"eslint-plugin-yml": "^1.18.0",
|
|
51
38
|
"globals": "^16.4.0",
|
|
52
|
-
"
|
|
53
|
-
"
|
|
39
|
+
"jsonc-eslint-parser": "^2.4.0",
|
|
40
|
+
"toml-eslint-parser": "^0.10.0",
|
|
54
41
|
"yaml-eslint-parser": "^1.3.0"
|
|
55
42
|
},
|
|
56
43
|
"peerDependenciesMeta": {
|
|
@@ -59,19 +46,12 @@
|
|
|
59
46
|
},
|
|
60
47
|
"@typescript-eslint/parser": {
|
|
61
48
|
"optional": true
|
|
62
|
-
},
|
|
63
|
-
"eslint-plugin-import": {
|
|
64
|
-
"optional": false
|
|
65
|
-
},
|
|
66
|
-
"eslint-plugin-n": {
|
|
67
|
-
"optional": false
|
|
68
49
|
}
|
|
69
50
|
},
|
|
70
51
|
"files": [
|
|
71
52
|
"index.js",
|
|
72
53
|
"base-config.js",
|
|
73
54
|
"flat.js",
|
|
74
|
-
"rules.js",
|
|
75
55
|
"overrides.js",
|
|
76
56
|
"README.md",
|
|
77
57
|
"LICENSE",
|
|
@@ -99,7 +79,7 @@
|
|
|
99
79
|
"style-guide",
|
|
100
80
|
"style",
|
|
101
81
|
"guide",
|
|
102
|
-
"eslint-
|
|
82
|
+
"eslint-10",
|
|
103
83
|
"flat-config",
|
|
104
84
|
"typescript",
|
|
105
85
|
"react",
|
|
@@ -113,12 +93,12 @@
|
|
|
113
93
|
],
|
|
114
94
|
"type": "module",
|
|
115
95
|
"engines": {
|
|
116
|
-
"node": ">=20.
|
|
96
|
+
"node": ">=20.19.0",
|
|
117
97
|
"npm": ">=9.0.0",
|
|
118
98
|
"pnpm": ">=8.0.0",
|
|
119
99
|
"yarn": ">=4.0.0"
|
|
120
100
|
},
|
|
121
|
-
"_comment": "Priority: Latest Node (25+) for latest features. Minimum: Node 20. Older versions tested but may break.",
|
|
101
|
+
"_comment": "Priority: Latest Node (25+) for latest features. Minimum: Node 20.19.0. Older versions tested but may break.",
|
|
122
102
|
"exports": {
|
|
123
103
|
".": {
|
|
124
104
|
"import": "./index.js",
|
|
@@ -128,17 +108,25 @@
|
|
|
128
108
|
"import": "./flat.js",
|
|
129
109
|
"require": "./flat.js"
|
|
130
110
|
},
|
|
131
|
-
"./
|
|
132
|
-
"import": "./
|
|
133
|
-
"require": "./
|
|
111
|
+
"./flat.js": {
|
|
112
|
+
"import": "./flat.js",
|
|
113
|
+
"require": "./flat.js"
|
|
134
114
|
},
|
|
135
115
|
"./overrides": {
|
|
136
116
|
"import": "./overrides.js",
|
|
137
117
|
"require": "./overrides.js"
|
|
138
118
|
},
|
|
119
|
+
"./overrides.js": {
|
|
120
|
+
"import": "./overrides.js",
|
|
121
|
+
"require": "./overrides.js"
|
|
122
|
+
},
|
|
139
123
|
"./base-config": {
|
|
140
124
|
"import": "./base-config.js",
|
|
141
125
|
"require": "./base-config.js"
|
|
126
|
+
},
|
|
127
|
+
"./base-config.js": {
|
|
128
|
+
"import": "./base-config.js",
|
|
129
|
+
"require": "./base-config.js"
|
|
142
130
|
}
|
|
143
131
|
}
|
|
144
132
|
}
|