@alexlit/lint-kit 117.2.0 → 117.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.
Files changed (169) hide show
  1. package/package.json +2 -2
  2. package/packages/config-commitlint/package.json +2 -2
  3. package/packages/config-eslint/index.js +7 -374
  4. package/packages/config-eslint/legacy.js +3 -0
  5. package/packages/config-eslint/node_modules/@eslint/eslintrc/LICENSE +19 -0
  6. package/packages/config-eslint/node_modules/@eslint/eslintrc/README.md +126 -0
  7. package/packages/config-eslint/node_modules/@eslint/eslintrc/conf/config-schema.js +79 -0
  8. package/packages/config-eslint/node_modules/@eslint/eslintrc/conf/environments.js +215 -0
  9. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs +1143 -0
  10. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map +1 -0
  11. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +4371 -0
  12. package/packages/config-eslint/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map +1 -0
  13. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js +532 -0
  14. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/config-array.js +510 -0
  15. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/config-dependency.js +124 -0
  16. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js +145 -0
  17. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/ignore-pattern.js +238 -0
  18. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/index.js +19 -0
  19. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array/override-tester.js +225 -0
  20. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/config-array-factory.js +1155 -0
  21. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/flat-compat.js +318 -0
  22. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/index-universal.js +29 -0
  23. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/index.js +58 -0
  24. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/ajv.js +191 -0
  25. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/config-ops.js +135 -0
  26. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/config-validator.js +370 -0
  27. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/deprecation-warnings.js +63 -0
  28. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/naming.js +96 -0
  29. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/relative-module-resolver.js +42 -0
  30. package/packages/config-eslint/node_modules/@eslint/eslintrc/lib/shared/types.js +149 -0
  31. package/packages/config-eslint/node_modules/@eslint/eslintrc/package.json +82 -0
  32. package/packages/config-eslint/node_modules/@eslint/eslintrc/universal.js +9 -0
  33. package/packages/config-eslint/node_modules/ajv/.tonic_example.js +20 -0
  34. package/packages/config-eslint/node_modules/ajv/LICENSE +22 -0
  35. package/packages/config-eslint/node_modules/ajv/README.md +1497 -0
  36. package/packages/config-eslint/node_modules/ajv/dist/ajv.bundle.js +7189 -0
  37. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js +3 -0
  38. package/packages/config-eslint/node_modules/ajv/dist/ajv.min.js.map +1 -0
  39. package/packages/config-eslint/node_modules/ajv/lib/ajv.d.ts +397 -0
  40. package/packages/config-eslint/node_modules/ajv/lib/ajv.js +506 -0
  41. package/packages/config-eslint/node_modules/ajv/lib/cache.js +26 -0
  42. package/packages/config-eslint/node_modules/ajv/lib/compile/async.js +90 -0
  43. package/packages/config-eslint/node_modules/ajv/lib/compile/equal.js +5 -0
  44. package/packages/config-eslint/node_modules/ajv/lib/compile/error_classes.js +34 -0
  45. package/packages/config-eslint/node_modules/ajv/lib/compile/formats.js +142 -0
  46. package/packages/config-eslint/node_modules/ajv/lib/compile/index.js +387 -0
  47. package/packages/config-eslint/node_modules/ajv/lib/compile/resolve.js +270 -0
  48. package/packages/config-eslint/node_modules/ajv/lib/compile/rules.js +66 -0
  49. package/packages/config-eslint/node_modules/ajv/lib/compile/schema_obj.js +9 -0
  50. package/packages/config-eslint/node_modules/ajv/lib/compile/ucs2length.js +20 -0
  51. package/packages/config-eslint/node_modules/ajv/lib/compile/util.js +239 -0
  52. package/packages/config-eslint/node_modules/ajv/lib/data.js +49 -0
  53. package/packages/config-eslint/node_modules/ajv/lib/definition_schema.js +37 -0
  54. package/packages/config-eslint/node_modules/ajv/lib/dot/_limit.jst +113 -0
  55. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitItems.jst +12 -0
  56. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitLength.jst +12 -0
  57. package/packages/config-eslint/node_modules/ajv/lib/dot/_limitProperties.jst +12 -0
  58. package/packages/config-eslint/node_modules/ajv/lib/dot/allOf.jst +32 -0
  59. package/packages/config-eslint/node_modules/ajv/lib/dot/anyOf.jst +46 -0
  60. package/packages/config-eslint/node_modules/ajv/lib/dot/coerce.def +51 -0
  61. package/packages/config-eslint/node_modules/ajv/lib/dot/comment.jst +9 -0
  62. package/packages/config-eslint/node_modules/ajv/lib/dot/const.jst +11 -0
  63. package/packages/config-eslint/node_modules/ajv/lib/dot/contains.jst +55 -0
  64. package/packages/config-eslint/node_modules/ajv/lib/dot/custom.jst +191 -0
  65. package/packages/config-eslint/node_modules/ajv/lib/dot/defaults.def +47 -0
  66. package/packages/config-eslint/node_modules/ajv/lib/dot/definitions.def +203 -0
  67. package/packages/config-eslint/node_modules/ajv/lib/dot/dependencies.jst +79 -0
  68. package/packages/config-eslint/node_modules/ajv/lib/dot/enum.jst +30 -0
  69. package/packages/config-eslint/node_modules/ajv/lib/dot/errors.def +194 -0
  70. package/packages/config-eslint/node_modules/ajv/lib/dot/format.jst +106 -0
  71. package/packages/config-eslint/node_modules/ajv/lib/dot/if.jst +73 -0
  72. package/packages/config-eslint/node_modules/ajv/lib/dot/items.jst +98 -0
  73. package/packages/config-eslint/node_modules/ajv/lib/dot/missing.def +39 -0
  74. package/packages/config-eslint/node_modules/ajv/lib/dot/multipleOf.jst +22 -0
  75. package/packages/config-eslint/node_modules/ajv/lib/dot/not.jst +43 -0
  76. package/packages/config-eslint/node_modules/ajv/lib/dot/oneOf.jst +54 -0
  77. package/packages/config-eslint/node_modules/ajv/lib/dot/pattern.jst +14 -0
  78. package/packages/config-eslint/node_modules/ajv/lib/dot/properties.jst +245 -0
  79. package/packages/config-eslint/node_modules/ajv/lib/dot/propertyNames.jst +52 -0
  80. package/packages/config-eslint/node_modules/ajv/lib/dot/ref.jst +85 -0
  81. package/packages/config-eslint/node_modules/ajv/lib/dot/required.jst +108 -0
  82. package/packages/config-eslint/node_modules/ajv/lib/dot/uniqueItems.jst +62 -0
  83. package/packages/config-eslint/node_modules/ajv/lib/dot/validate.jst +276 -0
  84. package/packages/config-eslint/node_modules/ajv/lib/dotjs/README.md +3 -0
  85. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limit.js +163 -0
  86. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitItems.js +80 -0
  87. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitLength.js +85 -0
  88. package/packages/config-eslint/node_modules/ajv/lib/dotjs/_limitProperties.js +80 -0
  89. package/packages/config-eslint/node_modules/ajv/lib/dotjs/allOf.js +42 -0
  90. package/packages/config-eslint/node_modules/ajv/lib/dotjs/anyOf.js +73 -0
  91. package/packages/config-eslint/node_modules/ajv/lib/dotjs/comment.js +14 -0
  92. package/packages/config-eslint/node_modules/ajv/lib/dotjs/const.js +56 -0
  93. package/packages/config-eslint/node_modules/ajv/lib/dotjs/contains.js +81 -0
  94. package/packages/config-eslint/node_modules/ajv/lib/dotjs/custom.js +228 -0
  95. package/packages/config-eslint/node_modules/ajv/lib/dotjs/dependencies.js +168 -0
  96. package/packages/config-eslint/node_modules/ajv/lib/dotjs/enum.js +66 -0
  97. package/packages/config-eslint/node_modules/ajv/lib/dotjs/format.js +150 -0
  98. package/packages/config-eslint/node_modules/ajv/lib/dotjs/if.js +103 -0
  99. package/packages/config-eslint/node_modules/ajv/lib/dotjs/index.js +33 -0
  100. package/packages/config-eslint/node_modules/ajv/lib/dotjs/items.js +140 -0
  101. package/packages/config-eslint/node_modules/ajv/lib/dotjs/multipleOf.js +80 -0
  102. package/packages/config-eslint/node_modules/ajv/lib/dotjs/not.js +84 -0
  103. package/packages/config-eslint/node_modules/ajv/lib/dotjs/oneOf.js +73 -0
  104. package/packages/config-eslint/node_modules/ajv/lib/dotjs/pattern.js +75 -0
  105. package/packages/config-eslint/node_modules/ajv/lib/dotjs/properties.js +335 -0
  106. package/packages/config-eslint/node_modules/ajv/lib/dotjs/propertyNames.js +81 -0
  107. package/packages/config-eslint/node_modules/ajv/lib/dotjs/ref.js +124 -0
  108. package/packages/config-eslint/node_modules/ajv/lib/dotjs/required.js +270 -0
  109. package/packages/config-eslint/node_modules/ajv/lib/dotjs/uniqueItems.js +86 -0
  110. package/packages/config-eslint/node_modules/ajv/lib/dotjs/validate.js +482 -0
  111. package/packages/config-eslint/node_modules/ajv/lib/keyword.js +146 -0
  112. package/packages/config-eslint/node_modules/ajv/lib/refs/data.json +17 -0
  113. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json +149 -0
  114. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json +154 -0
  115. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json +168 -0
  116. package/packages/config-eslint/node_modules/ajv/lib/refs/json-schema-secure.json +94 -0
  117. package/packages/config-eslint/node_modules/ajv/package.json +106 -0
  118. package/packages/config-eslint/node_modules/ajv/scripts/.eslintrc.yml +3 -0
  119. package/packages/config-eslint/node_modules/ajv/scripts/bundle.js +61 -0
  120. package/packages/config-eslint/node_modules/ajv/scripts/compile-dots.js +73 -0
  121. package/packages/config-eslint/node_modules/ajv/scripts/info +10 -0
  122. package/packages/config-eslint/node_modules/ajv/scripts/prepare-tests +12 -0
  123. package/packages/config-eslint/node_modules/ajv/scripts/publish-built-version +32 -0
  124. package/packages/config-eslint/node_modules/ajv/scripts/travis-gh-pages +23 -0
  125. package/packages/config-eslint/node_modules/eslint-visitor-keys/LICENSE +201 -0
  126. package/packages/config-eslint/node_modules/eslint-visitor-keys/README.md +105 -0
  127. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs +384 -0
  128. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.d.cts +27 -0
  129. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/index.d.ts +16 -0
  130. package/packages/config-eslint/node_modules/eslint-visitor-keys/dist/visitor-keys.d.ts +12 -0
  131. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/index.js +65 -0
  132. package/packages/config-eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js +315 -0
  133. package/packages/config-eslint/node_modules/eslint-visitor-keys/package.json +74 -0
  134. package/packages/config-eslint/node_modules/espree/LICENSE +25 -0
  135. package/packages/config-eslint/node_modules/espree/README.md +244 -0
  136. package/packages/config-eslint/node_modules/espree/dist/espree.cjs +883 -0
  137. package/packages/config-eslint/node_modules/espree/espree.js +177 -0
  138. package/packages/config-eslint/node_modules/espree/lib/espree.js +349 -0
  139. package/packages/config-eslint/node_modules/espree/lib/features.js +27 -0
  140. package/packages/config-eslint/node_modules/espree/lib/options.js +123 -0
  141. package/packages/config-eslint/node_modules/espree/lib/token-translator.js +263 -0
  142. package/packages/config-eslint/node_modules/espree/lib/version.js +3 -0
  143. package/packages/config-eslint/node_modules/espree/package.json +86 -0
  144. package/packages/config-eslint/node_modules/globals/globals.json +1998 -0
  145. package/packages/config-eslint/node_modules/globals/index.d.ts +2077 -0
  146. package/packages/config-eslint/node_modules/globals/index.js +2 -0
  147. package/packages/config-eslint/node_modules/globals/license +9 -0
  148. package/packages/config-eslint/node_modules/globals/package.json +58 -0
  149. package/packages/config-eslint/node_modules/globals/readme.md +44 -0
  150. package/packages/config-eslint/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  151. package/packages/config-eslint/node_modules/json-schema-traverse/.travis.yml +8 -0
  152. package/packages/config-eslint/node_modules/json-schema-traverse/LICENSE +21 -0
  153. package/packages/config-eslint/node_modules/json-schema-traverse/README.md +83 -0
  154. package/packages/config-eslint/node_modules/json-schema-traverse/index.js +89 -0
  155. package/packages/config-eslint/node_modules/json-schema-traverse/package.json +43 -0
  156. package/packages/config-eslint/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  157. package/packages/config-eslint/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  158. package/packages/config-eslint/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
  159. package/packages/config-eslint/package.json +7 -5
  160. package/packages/config-eslint/plugins/no-await-in-promise.js +2 -2
  161. package/packages/config-eslint/utils/create-config.js +377 -0
  162. package/packages/config-hooks/package.json +1 -1
  163. package/packages/config-htmllint/package.json +1 -1
  164. package/packages/config-markdownlint/package.json +2 -2
  165. package/packages/config-npmlint/package.json +1 -1
  166. package/packages/config-prettier/package.json +2 -2
  167. package/packages/config-stylelint/package.json +2 -2
  168. package/scripts/lint.eslint.sh +1 -1
  169. package/.eslintrc.cjs +0 -16
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/lint-kit",
3
- "version": "117.2.0",
3
+ "version": "117.3.0",
4
4
  "private": false,
5
5
  "description": "Preset of configuration files and dependencies for linting web applications (designed for Vue.js with TypeScript)",
6
6
  "keywords": [
@@ -70,6 +70,6 @@
70
70
  "changelogen": "latest"
71
71
  },
72
72
  "engines": {
73
- "node": ">=18"
73
+ "node": ">=18.18"
74
74
  }
75
75
  }
@@ -38,6 +38,6 @@
38
38
  "conventional-changelog-cli": "^5.0.0"
39
39
  },
40
40
  "engines": {
41
- "node": ">=18"
41
+ "node": ">=18.18"
42
42
  }
43
- }
43
+ }
@@ -1,379 +1,12 @@
1
- /* eslint-disable sonarjs/no-duplicate-string, import/order, no-undef */
1
+ const { FlatCompat } = require('@eslint/eslintrc');
2
2
 
3
- const { defineConfig } = require('eslint-define-config');
3
+ const { createConfig } = require('./utils/create-config');
4
4
  const { extendSpellChecker } = require('./utils/extend-spell-checker');
5
5
 
6
- const DEFAULT_PLUGINS = {
7
- /** @see [eslint-plugin-array-func](https://github.com/freaktechnik/eslint-plugin-array-func) */
8
- 'array-func': true,
6
+ const compat = new FlatCompat({
7
+ baseDirectory: __dirname,
8
+ });
9
9
 
10
- /** @see [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat) */
11
- compat: true,
10
+ const createFlatConfig = () => [...compat.extends('./legacy.js')];
12
11
 
13
- /** @see [eslint-plugin-decorator-position](https://github.com/NullVoxPopuli/eslint-plugin-decorator-position) */
14
- 'decorator-position': true,
15
-
16
- /** @see [eslint-plugin-eslint-comments](hhttps://github.com/mysticatea/eslint-plugin-eslint-comments) */
17
- 'eslint-comments': true,
18
-
19
- /** @see [eslint-plugin-etc](https://github.com/cartant/eslint-plugin-etc) */
20
- etc: true,
21
-
22
- /** @see [eslint-plugin-ext](https://github.com/jiangfengming/eslint-plugin-ext) */
23
- ext: true,
24
-
25
- /** @see [eslint-plugin-filenames](https://github.com/selaux/eslint-plugin-filenames) */
26
- filenames: true,
27
-
28
- /**
29
- * @see [eslint-plugin-import](https://github.com/benmosher/eslint-plugin-import)
30
- * @see [eslint-import-resolver-alias](https://github.com/johvin/eslint-import-resolver-alias)
31
- */
32
- import: true,
33
-
34
- /** @see [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) */
35
- jsdoc: true,
36
-
37
- /** @see [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) */
38
- 'jsx-a11y': true,
39
-
40
- /** @see [eslint-plugin-lit](https://github.com/43081j/eslint-plugin-lit) */
41
- lit: true,
42
-
43
- /** @see [eslint-plugin-lit-a11y](https://www.npmjs.com/package/eslint-plugin-lit-a11y) */
44
- 'lit-a11y': true,
45
-
46
- /** @see [eslint-plugin-more](https://github.com/WebbyLab/eslint-plugin-more) */
47
- more: true,
48
-
49
- /** @see [eslint-plugin-no-await-in-promise](https://github.com/hugo-vrijswijk/eslint-plugin-no-await-in-promise/) */
50
- 'no-await-in-promise': true,
51
-
52
- /** @see [eslint-plugin-no-constructor-bind](https://github.com/markalfred/eslint-plugin-no-constructor-bind) */
53
- 'no-constructor-bind': true,
54
-
55
- /** @see [eslint-plugin-no-explicit-type-exports](https://github.com/intuit/eslint-plugin-no-explicit-type-exports) */
56
- 'no-explicit-type-exports': true,
57
-
58
- /** @see [eslint-plugin-no-loops](https://github.com/buildo/eslint-plugin-no-loops) */
59
- 'no-loops': true,
60
-
61
- /** @see [eslint-plugin-no-secrets](https://github.com/nickdeis/eslint-plugin-no-secrets) */
62
- 'no-secrets': true,
63
-
64
- /** @see [eslint-plugin-no-use-extend-native](https://github.com/dustinspecker/eslint-plugin-no-use-extend-native) */
65
- 'no-use-extend-native': true,
66
-
67
- /** @see [eslint-plugin-promise](https://github.com/xjamundx/eslint-plugin-promise) */
68
- promise: true,
69
-
70
- /** @see [eslint-plugin-regexp](https://github.com/ota-meshi/eslint-plugin-regexp) */
71
- regexp: true,
72
-
73
- /** @see [eslint-plugin-simple-import-sort](https://github.com/lydell/eslint-plugin-simple-import-sort) */
74
- 'simple-import-sort': true,
75
-
76
- /** @see [eslint-plugin-sonarjs](https://github.com/SonarSource/eslint-plugin-sonarjs) */
77
- sonar: true,
78
-
79
- /** @see [eslint-plugin-sort-class-members](https://github.com/bryanrsmith/eslint-plugin-sort-class-members) */
80
- 'sort-class-members': true,
81
-
82
- /** @see [eslint-plugin-sort-destructure-keys](https://github.com/mthadley/eslint-plugin-sort-destructure-keys) */
83
- 'sort-destructure-keys': true,
84
-
85
- /** @see [eslint-plugin-sort-keys-fix](https://github.com/leo-buneev/eslint-plugin-sort-keys-fix) */
86
- 'sort-keys-fix': true,
87
-
88
- /** @see [eslint-plugin-spellcheck](https://github.com/aotaduy/eslint-plugin-spellcheck) */
89
- spellcheck: true,
90
-
91
- /** @see [eslint-plugin-sql](https://github.com/gajus/eslint-plugin-sql) */
92
- sql: true,
93
-
94
- /** @see [@tanstack/query](https://tanstack.com/query/v4/docs/react/eslint/eslint-plugin-query) */
95
- 'tanstack-query': true,
96
-
97
- /** @see [eslint-plugin-testing-library](https://github.com/testing-library/eslint-plugin-testing-library) */
98
- 'testing-library': true,
99
-
100
- /** @see [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint) */
101
- typescript: true,
102
-
103
- /** @see [eslint-plugin-typescript-sort-keys](https://github.com/infctr/eslint-plugin-typescript-sort-keys) */
104
- 'typescript-sort-keys': true,
105
-
106
- /** @see [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) */
107
- unicorn: true,
108
-
109
- /** @see [eslint-plugin-unused-imports](https://github.com/sweepline/eslint-plugin-unused-imports) */
110
- 'unused-imports': true,
111
-
112
- /** @see [eslint-plugin-vitest](https://github.com/veritem/eslint-plugin-vitest) */
113
- vitest: true,
114
-
115
- /** @see [eslint-plugin-vue](https://eslint.vuejs.org/rules/) */
116
- vue: true,
117
-
118
- /** @see [eslint-plugin-vue-i18n](https://eslint-plugin-vue-i18n.intlify.dev/) */
119
- 'vue-i18n': true,
120
-
121
- /** @see [eslint-plugin-vuejs-accessibility](https://github.com/vue-a11y/eslint-plugin-vuejs-accessibility) */
122
- 'vuejs-accessibility': true,
123
-
124
- /** @see [eslint-plugin-wc](https://github.com/43081j/eslint-plugin-wc) */
125
- wc: true,
126
-
127
- /** @see [eslint-plugin-write-good-comments](https://github.com/kantord/eslint-plugin-write-good-comments) */
128
- 'write-good-comments': true,
129
- };
130
-
131
- const OPTIONAL_PLUGINS = {
132
- /** @see [eslint-plugin-node](https://github.com/mysticatea/eslint-plugin-node) */
133
- node: false,
134
-
135
- /** @see [eslint-plugin-security](https://github.com/nodesecurity/eslint-plugin-security) */
136
- security: false,
137
- };
138
-
139
- const CODESTYLE_PLUGINS = {
140
- /** @see [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) */
141
- prettier: true,
142
- };
143
-
144
- const PLUGINS = {
145
- ...DEFAULT_PLUGINS,
146
- ...OPTIONAL_PLUGINS,
147
- ...CODESTYLE_PLUGINS,
148
- };
149
-
150
- /**
151
- * Create "extends" field
152
- *
153
- * @param {PLUGINS} plugins Enabled/disabled plugins list
154
- */
155
- const createPluginsList = (plugins = {}) => {
156
- const pluginsList = [];
157
-
158
- Object.entries({ ...PLUGINS, ...plugins })?.forEach(([name, isActive]) => {
159
- if (isActive) {
160
- pluginsList.push(require.resolve(`./plugins/${name}`));
161
- }
162
- });
163
-
164
- return pluginsList;
165
- };
166
-
167
- /**
168
- * Create eslint config
169
- *
170
- * @param {PLUGINS} plugins Enabled/disabled plugins list
171
- * @param {import('eslint-define-config').defineConfig} options Eslint options
172
- */
173
- const createConfig = (plugins = {}, options = {}) =>
174
- defineConfig({
175
- ...options,
176
-
177
- env: {
178
- browser: true,
179
- node: true,
180
-
181
- ...options.env,
182
- },
183
-
184
- extends: [
185
- /** @see [eslint-config-airbnb-base](https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb-base) */
186
- 'airbnb-base',
187
-
188
- ...createPluginsList(plugins),
189
-
190
- ...(options.extends ?? []),
191
- ],
192
-
193
- ignorePatterns: [
194
- '.*',
195
- 'build',
196
- 'dist',
197
- 'docs',
198
- 'node_modules',
199
- 'storybook-*',
200
- 'sw.js',
201
- '!.*.js',
202
- '!.node',
203
- '!.storybook',
204
-
205
- ...(options.ignorePatterns ?? []),
206
- ],
207
-
208
- overrides: [
209
- {
210
- files: ['.*.cjs', '.*.js'],
211
-
212
- rules: {
213
- 'global-require': 'off',
214
- },
215
- },
216
- {
217
- files: ['**/store/**/*', '**/vuex/**/*', '**/pinia/**/*'],
218
-
219
- rules: {
220
- 'no-param-reassign': 'off',
221
- },
222
- },
223
-
224
- ...(options.overrides ?? []),
225
- ],
226
-
227
- parserOptions: {
228
- ecmaFeatures: { jsx: true },
229
- extraFileExtensions: ['.vue'],
230
- parser: '@typescript-eslint/parser',
231
- project: ['./tsconfig.json'],
232
-
233
- ...options.parserOptions,
234
- },
235
-
236
- root: options.root ?? true,
237
-
238
- rules: {
239
- 'class-methods-use-this': 'off',
240
- curly: 'error',
241
- 'func-style': ['error', 'declaration', { allowArrowFunctions: true }],
242
- 'grouped-accessor-pairs': ['error', 'getBeforeSet'],
243
- indent: 'off',
244
-
245
- 'lines-around-comment': [
246
- 'warn',
247
- {
248
- afterBlockComment: false,
249
- afterLineComment: false,
250
-
251
- allowArrayEnd: true,
252
- allowArrayStart: true,
253
-
254
- allowBlockEnd: true,
255
- allowBlockStart: true,
256
-
257
- allowClassEnd: true,
258
- allowClassStart: true,
259
-
260
- allowObjectEnd: true,
261
- allowObjectStart: true,
262
-
263
- beforeBlockComment: true,
264
- beforeLineComment: false,
265
- },
266
- ],
267
-
268
- 'no-console': 'warn',
269
-
270
- 'no-implicit-coercion': 'error',
271
-
272
- 'no-param-reassign': ['error', { props: false }],
273
-
274
- 'no-restricted-exports': [
275
- 'error',
276
- {
277
- restrictedNamedExports: [
278
- 'then', // this will cause tons of confusion when your module is dynamically `import()`ed, and will break in most node ESM versions
279
- ],
280
- },
281
- ],
282
-
283
- 'no-restricted-imports': [
284
- 'error',
285
- {
286
- patterns: [
287
- {
288
- group: ['.', '..', '*/..'],
289
- message: 'Use absolute path instead',
290
- },
291
- ],
292
- },
293
- ],
294
-
295
- 'no-return-await': 'off',
296
-
297
- 'no-shadow': 'off',
298
-
299
- 'no-underscore-dangle': 'off',
300
-
301
- 'no-unused-vars': 'off',
302
-
303
- // delegate to eslint-plugin-unused-imports
304
- 'no-use-before-define': 'off',
305
-
306
- 'nonblock-statement-body-position': ['error', 'below'],
307
-
308
- 'padding-line-between-statements': [
309
- 'warn',
310
- // always
311
- { blankLine: 'always', next: '*', prev: 'block-like' },
312
- { blankLine: 'always', next: '*', prev: 'case' },
313
- { blankLine: 'always', next: '*', prev: 'cjs-export' },
314
- { blankLine: 'always', next: '*', prev: 'cjs-import' },
315
- { blankLine: 'always', next: '*', prev: 'class' },
316
- { blankLine: 'always', next: '*', prev: 'default' },
317
- { blankLine: 'always', next: '*', prev: 'directive' },
318
- { blankLine: 'always', next: '*', prev: 'expression' },
319
- { blankLine: 'always', next: '*', prev: 'iife' },
320
- { blankLine: 'always', next: '*', prev: 'multiline-block-like' },
321
- { blankLine: 'always', next: '*', prev: 'multiline-const' },
322
- { blankLine: 'always', next: '*', prev: 'multiline-expression' },
323
- { blankLine: 'always', next: '*', prev: 'multiline-let' },
324
- { blankLine: 'always', next: '*', prev: 'multiline-var' },
325
- { blankLine: 'always', next: '*', prev: 'singleline-const' },
326
- { blankLine: 'always', next: '*', prev: 'singleline-let' },
327
- { blankLine: 'always', next: '*', prev: 'singleline-var' },
328
- { blankLine: 'always', next: 'block-like', prev: '*' },
329
- { blankLine: 'always', next: 'cjs-export', prev: '*' },
330
- { blankLine: 'always', next: 'cjs-import', prev: '*' },
331
- { blankLine: 'always', next: 'class', prev: '*' },
332
- { blankLine: 'always', next: 'expression', prev: '*' },
333
- { blankLine: 'always', next: 'function', prev: '*' },
334
- { blankLine: 'always', next: 'iife', prev: '*' },
335
- { blankLine: 'always', next: 'multiline-block-like', prev: '*' },
336
- { blankLine: 'always', next: 'multiline-const', prev: '*' },
337
- { blankLine: 'always', next: 'multiline-expression', prev: '*' },
338
- { blankLine: 'always', next: 'multiline-let', prev: '*' },
339
- { blankLine: 'always', next: 'multiline-var', prev: '*' },
340
- { blankLine: 'always', next: 'return', prev: '*' },
341
- { blankLine: 'always', next: 'switch', prev: '*' },
342
- // any
343
- { blankLine: 'any', next: 'expression', prev: 'expression' },
344
- {
345
- blankLine: 'any',
346
- next: 'singleline-const',
347
- prev: 'singleline-const',
348
- },
349
- { blankLine: 'any', next: 'singleline-let', prev: 'singleline-let' },
350
- { blankLine: 'any', next: 'singleline-var', prev: 'singleline-var' },
351
- // never
352
- { blankLine: 'never', next: 'cjs-export', prev: 'cjs-export' },
353
- { blankLine: 'never', next: 'cjs-import', prev: 'cjs-import' },
354
- { blankLine: 'never', next: 'directive', prev: 'directive' },
355
- ],
356
-
357
- quotes: ['error', 'single'],
358
- 'require-await': 'off',
359
-
360
- 'sort-imports': [
361
- 'warn',
362
- {
363
- allowSeparatedGroups: true,
364
- ignoreCase: true,
365
- ignoreDeclarationSort: true,
366
- ignoreMemberSort: false,
367
- memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
368
- },
369
- ],
370
-
371
- 'sort-keys': 'off', // delegate to sort-keys-fix
372
-
373
- 'sort-vars': 'warn',
374
-
375
- ...options.rules,
376
- },
377
- });
378
-
379
- module.exports = { createConfig, extendSpellChecker };
12
+ module.exports = { createConfig, createFlatConfig, extendSpellChecker };
@@ -0,0 +1,3 @@
1
+ const { createConfig } = require('./utils/create-config');
2
+
3
+ module.exports = createConfig();
@@ -0,0 +1,19 @@
1
+ Copyright OpenJS Foundation and other contributors, <www.openjsf.org>
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,126 @@
1
+ # ESLintRC Library
2
+
3
+ This repository contains the legacy ESLintRC configuration file format for ESLint. This package is not intended for use outside of the ESLint ecosystem. It is ESLint-specific and not intended for use in other programs.
4
+
5
+ **Note:** This package is frozen except for critical bug fixes as ESLint moves to a new config system.
6
+
7
+ ## Installation
8
+
9
+ You can install the package as follows:
10
+
11
+ ```
12
+ npm install @eslint/eslintrc --save-dev
13
+
14
+ # or
15
+
16
+ yarn add @eslint/eslintrc -D
17
+ ```
18
+
19
+ ## Usage (ESM)
20
+
21
+ The primary class in this package is `FlatCompat`, which is a utility to translate ESLintRC-style configs into flat configs. Here's how you use it inside of your `eslint.config.js` file:
22
+
23
+ ```js
24
+ import { FlatCompat } from "@eslint/eslintrc";
25
+ import js from "@eslint/js";
26
+ import path from "path";
27
+ import { fileURLToPath } from "url";
28
+
29
+ // mimic CommonJS variables -- not needed if using CommonJS
30
+ const __filename = fileURLToPath(import.meta.url);
31
+ const __dirname = path.dirname(__filename);
32
+
33
+ const compat = new FlatCompat({
34
+ baseDirectory: __dirname, // optional; default: process.cwd()
35
+ resolvePluginsRelativeTo: __dirname, // optional
36
+ recommendedConfig: js.configs.recommended, // optional unless you're using "eslint:recommended"
37
+ allConfig: js.configs.all, // optional unless you're using "eslint:all"
38
+ });
39
+
40
+ export default [
41
+
42
+ // mimic ESLintRC-style extends
43
+ ...compat.extends("standard", "example"),
44
+
45
+ // mimic environments
46
+ ...compat.env({
47
+ es2020: true,
48
+ node: true
49
+ }),
50
+
51
+ // mimic plugins
52
+ ...compat.plugins("airbnb", "react"),
53
+
54
+ // translate an entire config
55
+ ...compat.config({
56
+ plugins: ["airbnb", "react"],
57
+ extends: "standard",
58
+ env: {
59
+ es2020: true,
60
+ node: true
61
+ },
62
+ rules: {
63
+ semi: "error"
64
+ }
65
+ })
66
+ ];
67
+ ```
68
+
69
+ ## Usage (CommonJS)
70
+
71
+ Using `FlatCompat` in CommonJS files is similar to ESM, but you'll use `require()` and `module.exports` instead of `import` and `export`. Here's how you use it inside of your `eslint.config.js` CommonJS file:
72
+
73
+ ```js
74
+ const { FlatCompat } = require("@eslint/eslintrc");
75
+ const js = require("@eslint/js");
76
+
77
+ const compat = new FlatCompat({
78
+ baseDirectory: __dirname, // optional; default: process.cwd()
79
+ resolvePluginsRelativeTo: __dirname, // optional
80
+ recommendedConfig: js.configs.recommended, // optional unless using "eslint:recommended"
81
+ allConfig: js.configs.all, // optional unless using "eslint:all"
82
+ });
83
+
84
+ module.exports = [
85
+
86
+ // mimic ESLintRC-style extends
87
+ ...compat.extends("standard", "example"),
88
+
89
+ // mimic environments
90
+ ...compat.env({
91
+ es2020: true,
92
+ node: true
93
+ }),
94
+
95
+ // mimic plugins
96
+ ...compat.plugins("airbnb", "react"),
97
+
98
+ // translate an entire config
99
+ ...compat.config({
100
+ plugins: ["airbnb", "react"],
101
+ extends: "standard",
102
+ env: {
103
+ es2020: true,
104
+ node: true
105
+ },
106
+ rules: {
107
+ semi: "error"
108
+ }
109
+ })
110
+ ];
111
+ ```
112
+
113
+ ## Troubleshooting
114
+
115
+ **TypeError: Missing parameter 'recommendedConfig' in FlatCompat constructor**
116
+
117
+ The `recommendedConfig` option is required when any config uses `eslint:recommended`, including any config in an `extends` clause. To fix this, follow the example above using `@eslint/js` to provide the `eslint:recommended` config.
118
+
119
+ **TypeError: Missing parameter 'allConfig' in FlatCompat constructor**
120
+
121
+ The `allConfig` option is required when any config uses `eslint:all`, including any config in an `extends` clause. To fix this, follow the example above using `@eslint/js` to provide the `eslint:all` config.
122
+
123
+
124
+ ## License
125
+
126
+ MIT License
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @fileoverview Defines a schema for configs.
3
+ * @author Sylvan Mably
4
+ */
5
+
6
+ const baseConfigProperties = {
7
+ $schema: { type: "string" },
8
+ env: { type: "object" },
9
+ extends: { $ref: "#/definitions/stringOrStrings" },
10
+ globals: { type: "object" },
11
+ overrides: {
12
+ type: "array",
13
+ items: { $ref: "#/definitions/overrideConfig" },
14
+ additionalItems: false
15
+ },
16
+ parser: { type: ["string", "null"] },
17
+ parserOptions: { type: "object" },
18
+ plugins: { type: "array" },
19
+ processor: { type: "string" },
20
+ rules: { type: "object" },
21
+ settings: { type: "object" },
22
+ noInlineConfig: { type: "boolean" },
23
+ reportUnusedDisableDirectives: { type: "boolean" },
24
+
25
+ ecmaFeatures: { type: "object" } // deprecated; logs a warning when used
26
+ };
27
+
28
+ const configSchema = {
29
+ definitions: {
30
+ stringOrStrings: {
31
+ oneOf: [
32
+ { type: "string" },
33
+ {
34
+ type: "array",
35
+ items: { type: "string" },
36
+ additionalItems: false
37
+ }
38
+ ]
39
+ },
40
+ stringOrStringsRequired: {
41
+ oneOf: [
42
+ { type: "string" },
43
+ {
44
+ type: "array",
45
+ items: { type: "string" },
46
+ additionalItems: false,
47
+ minItems: 1
48
+ }
49
+ ]
50
+ },
51
+
52
+ // Config at top-level.
53
+ objectConfig: {
54
+ type: "object",
55
+ properties: {
56
+ root: { type: "boolean" },
57
+ ignorePatterns: { $ref: "#/definitions/stringOrStrings" },
58
+ ...baseConfigProperties
59
+ },
60
+ additionalProperties: false
61
+ },
62
+
63
+ // Config in `overrides`.
64
+ overrideConfig: {
65
+ type: "object",
66
+ properties: {
67
+ excludedFiles: { $ref: "#/definitions/stringOrStrings" },
68
+ files: { $ref: "#/definitions/stringOrStringsRequired" },
69
+ ...baseConfigProperties
70
+ },
71
+ required: ["files"],
72
+ additionalProperties: false
73
+ }
74
+ },
75
+
76
+ $ref: "#/definitions/objectConfig"
77
+ };
78
+
79
+ export default configSchema;