@dineroregnskab/eslint-plugin-custom-rules 2.0.4 → 2.0.6

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 (175) hide show
  1. package/node_modules/@aashutoshrathi/word-wrap/LICENSE +21 -0
  2. package/node_modules/@aashutoshrathi/word-wrap/README.md +182 -0
  3. package/node_modules/@aashutoshrathi/word-wrap/index.d.ts +50 -0
  4. package/node_modules/@aashutoshrathi/word-wrap/index.js +52 -0
  5. package/node_modules/@aashutoshrathi/word-wrap/package.json +81 -0
  6. package/node_modules/@angular-eslint/bundled-angular-compiler/README.md +1 -0
  7. package/node_modules/@angular-eslint/bundled-angular-compiler/dist/index.d.ts +5 -0
  8. package/node_modules/@angular-eslint/bundled-angular-compiler/dist/index.js +32004 -0
  9. package/node_modules/@angular-eslint/bundled-angular-compiler/package.json +19 -0
  10. package/node_modules/@angular-eslint/template-parser/LICENSE +21 -0
  11. package/node_modules/@angular-eslint/template-parser/README.md +1 -0
  12. package/node_modules/@angular-eslint/template-parser/dist/convert-source-span-to-loc.d.ts +6 -0
  13. package/node_modules/@angular-eslint/template-parser/dist/convert-source-span-to-loc.js +69 -0
  14. package/node_modules/@angular-eslint/template-parser/dist/index.d.ts +44 -0
  15. package/node_modules/@angular-eslint/template-parser/dist/index.js +219 -0
  16. package/node_modules/@angular-eslint/template-parser/package.json +28 -0
  17. package/node_modules/@eslint/eslintrc/LICENSE +19 -0
  18. package/node_modules/@eslint/eslintrc/README.md +115 -0
  19. package/node_modules/@eslint/eslintrc/conf/config-schema.js +79 -0
  20. package/node_modules/@eslint/eslintrc/conf/environments.js +215 -0
  21. package/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs +1104 -0
  22. package/node_modules/@eslint/eslintrc/dist/eslintrc-universal.cjs.map +1 -0
  23. package/node_modules/@eslint/eslintrc/dist/eslintrc.cjs +4333 -0
  24. package/node_modules/@eslint/eslintrc/dist/eslintrc.cjs.map +1 -0
  25. package/node_modules/@eslint/eslintrc/lib/cascading-config-array-factory.js +532 -0
  26. package/node_modules/@eslint/eslintrc/lib/config-array/config-array.js +523 -0
  27. package/node_modules/@eslint/eslintrc/lib/config-array/config-dependency.js +115 -0
  28. package/node_modules/@eslint/eslintrc/lib/config-array/extracted-config.js +145 -0
  29. package/node_modules/@eslint/eslintrc/lib/config-array/ignore-pattern.js +238 -0
  30. package/node_modules/@eslint/eslintrc/lib/config-array/index.js +19 -0
  31. package/node_modules/@eslint/eslintrc/lib/config-array/override-tester.js +225 -0
  32. package/node_modules/@eslint/eslintrc/lib/config-array-factory.js +1149 -0
  33. package/node_modules/@eslint/eslintrc/lib/flat-compat.js +318 -0
  34. package/node_modules/@eslint/eslintrc/lib/index-universal.js +29 -0
  35. package/node_modules/@eslint/eslintrc/lib/index.js +56 -0
  36. package/node_modules/@eslint/eslintrc/lib/shared/ajv.js +191 -0
  37. package/node_modules/@eslint/eslintrc/lib/shared/config-ops.js +135 -0
  38. package/node_modules/@eslint/eslintrc/lib/shared/config-validator.js +325 -0
  39. package/node_modules/@eslint/eslintrc/lib/shared/deprecation-warnings.js +63 -0
  40. package/node_modules/@eslint/eslintrc/lib/shared/naming.js +96 -0
  41. package/node_modules/@eslint/eslintrc/lib/shared/relative-module-resolver.js +42 -0
  42. package/node_modules/@eslint/eslintrc/lib/shared/types.js +149 -0
  43. package/node_modules/@eslint/eslintrc/package.json +82 -0
  44. package/node_modules/@eslint/eslintrc/universal.js +9 -0
  45. package/node_modules/@eslint/js/LICENSE +19 -0
  46. package/node_modules/@eslint/js/README.md +57 -0
  47. package/node_modules/@eslint/js/package.json +31 -0
  48. package/node_modules/@eslint/js/src/configs/eslint-all.js +211 -0
  49. package/node_modules/@eslint/js/src/configs/eslint-recommended.js +76 -0
  50. package/node_modules/@eslint/js/src/index.js +17 -0
  51. package/node_modules/@eslint-community/eslint-utils/LICENSE +21 -0
  52. package/node_modules/@eslint-community/eslint-utils/README.md +37 -0
  53. package/node_modules/@eslint-community/eslint-utils/index.js +2068 -0
  54. package/node_modules/@eslint-community/eslint-utils/index.js.map +1 -0
  55. package/node_modules/@eslint-community/eslint-utils/index.mjs +2027 -0
  56. package/node_modules/@eslint-community/eslint-utils/index.mjs.map +1 -0
  57. package/node_modules/@eslint-community/eslint-utils/package.json +73 -0
  58. package/node_modules/@eslint-community/regexpp/LICENSE +21 -0
  59. package/node_modules/@eslint-community/regexpp/README.md +177 -0
  60. package/node_modules/@eslint-community/regexpp/index.d.ts +1065 -0
  61. package/node_modules/@eslint-community/regexpp/index.js +2747 -0
  62. package/node_modules/@eslint-community/regexpp/index.js.map +1 -0
  63. package/node_modules/@eslint-community/regexpp/index.mjs +2737 -0
  64. package/node_modules/@eslint-community/regexpp/index.mjs.map +1 -0
  65. package/node_modules/@eslint-community/regexpp/package.json +93 -0
  66. package/node_modules/@humanwhocodes/config-array/LICENSE +201 -0
  67. package/node_modules/@humanwhocodes/config-array/README.md +342 -0
  68. package/node_modules/@humanwhocodes/config-array/api.js +1061 -0
  69. package/node_modules/@humanwhocodes/config-array/package.json +61 -0
  70. package/node_modules/@humanwhocodes/module-importer/CHANGELOG.md +15 -0
  71. package/node_modules/@humanwhocodes/module-importer/LICENSE +201 -0
  72. package/node_modules/@humanwhocodes/module-importer/README.md +80 -0
  73. package/node_modules/@humanwhocodes/module-importer/dist/module-importer.cjs +22 -0
  74. package/node_modules/@humanwhocodes/module-importer/dist/module-importer.d.cts +27 -0
  75. package/node_modules/@humanwhocodes/module-importer/dist/module-importer.d.ts +2 -0
  76. package/node_modules/@humanwhocodes/module-importer/dist/module-importer.js +18 -0
  77. package/node_modules/@humanwhocodes/module-importer/package.json +65 -0
  78. package/node_modules/@humanwhocodes/module-importer/src/module-importer.cjs +81 -0
  79. package/node_modules/@humanwhocodes/module-importer/src/module-importer.js +22 -0
  80. package/node_modules/@humanwhocodes/object-schema/.eslintrc.js +29 -0
  81. package/node_modules/@humanwhocodes/object-schema/.github/workflows/nodejs-test.yml +27 -0
  82. package/node_modules/@humanwhocodes/object-schema/.github/workflows/release-please.yml +39 -0
  83. package/node_modules/@humanwhocodes/object-schema/CHANGELOG.md +26 -0
  84. package/node_modules/@humanwhocodes/object-schema/LICENSE +29 -0
  85. package/node_modules/@humanwhocodes/object-schema/README.md +234 -0
  86. package/node_modules/@humanwhocodes/object-schema/package.json +33 -0
  87. package/node_modules/@humanwhocodes/object-schema/src/index.js +7 -0
  88. package/node_modules/@humanwhocodes/object-schema/src/merge-strategy.js +53 -0
  89. package/node_modules/@humanwhocodes/object-schema/src/object-schema.js +301 -0
  90. package/node_modules/@humanwhocodes/object-schema/src/validation-strategy.js +102 -0
  91. package/node_modules/@humanwhocodes/object-schema/tests/merge-strategy.js +66 -0
  92. package/node_modules/@humanwhocodes/object-schema/tests/object-schema.js +659 -0
  93. package/node_modules/@humanwhocodes/object-schema/tests/validation-strategy.js +186 -0
  94. package/node_modules/@nodelib/fs.scandir/LICENSE +21 -0
  95. package/node_modules/@nodelib/fs.scandir/README.md +171 -0
  96. package/node_modules/@nodelib/fs.scandir/out/adapters/fs.d.ts +20 -0
  97. package/node_modules/@nodelib/fs.scandir/out/adapters/fs.js +19 -0
  98. package/node_modules/@nodelib/fs.scandir/out/constants.d.ts +4 -0
  99. package/node_modules/@nodelib/fs.scandir/out/constants.js +17 -0
  100. package/node_modules/@nodelib/fs.scandir/out/index.d.ts +12 -0
  101. package/node_modules/@nodelib/fs.scandir/out/index.js +26 -0
  102. package/node_modules/@nodelib/fs.scandir/out/providers/async.d.ts +7 -0
  103. package/node_modules/@nodelib/fs.scandir/out/providers/async.js +104 -0
  104. package/node_modules/@nodelib/fs.scandir/out/providers/common.d.ts +1 -0
  105. package/node_modules/@nodelib/fs.scandir/out/providers/common.js +13 -0
  106. package/node_modules/@nodelib/fs.scandir/out/providers/sync.d.ts +5 -0
  107. package/node_modules/@nodelib/fs.scandir/out/providers/sync.js +54 -0
  108. package/node_modules/@nodelib/fs.scandir/out/settings.d.ts +20 -0
  109. package/node_modules/@nodelib/fs.scandir/out/settings.js +24 -0
  110. package/node_modules/@nodelib/fs.scandir/out/types/index.d.ts +20 -0
  111. package/node_modules/@nodelib/fs.scandir/out/types/index.js +2 -0
  112. package/node_modules/@nodelib/fs.scandir/out/utils/fs.d.ts +2 -0
  113. package/node_modules/@nodelib/fs.scandir/out/utils/fs.js +19 -0
  114. package/node_modules/@nodelib/fs.scandir/out/utils/index.d.ts +2 -0
  115. package/node_modules/@nodelib/fs.scandir/out/utils/index.js +5 -0
  116. package/node_modules/@nodelib/fs.scandir/package.json +44 -0
  117. package/node_modules/@nodelib/fs.stat/LICENSE +21 -0
  118. package/node_modules/@nodelib/fs.stat/README.md +126 -0
  119. package/node_modules/@nodelib/fs.stat/out/adapters/fs.d.ts +13 -0
  120. package/node_modules/@nodelib/fs.stat/out/adapters/fs.js +17 -0
  121. package/node_modules/@nodelib/fs.stat/out/index.d.ts +12 -0
  122. package/node_modules/@nodelib/fs.stat/out/index.js +26 -0
  123. package/node_modules/@nodelib/fs.stat/out/providers/async.d.ts +4 -0
  124. package/node_modules/@nodelib/fs.stat/out/providers/async.js +36 -0
  125. package/node_modules/@nodelib/fs.stat/out/providers/sync.d.ts +3 -0
  126. package/node_modules/@nodelib/fs.stat/out/providers/sync.js +23 -0
  127. package/node_modules/@nodelib/fs.stat/out/settings.d.ts +16 -0
  128. package/node_modules/@nodelib/fs.stat/out/settings.js +16 -0
  129. package/node_modules/@nodelib/fs.stat/out/types/index.d.ts +4 -0
  130. package/node_modules/@nodelib/fs.stat/out/types/index.js +2 -0
  131. package/node_modules/@nodelib/fs.stat/package.json +37 -0
  132. package/node_modules/@nodelib/fs.walk/LICENSE +21 -0
  133. package/node_modules/@nodelib/fs.walk/README.md +215 -0
  134. package/node_modules/@nodelib/fs.walk/out/index.d.ts +14 -0
  135. package/node_modules/@nodelib/fs.walk/out/index.js +34 -0
  136. package/node_modules/@nodelib/fs.walk/out/providers/async.d.ts +12 -0
  137. package/node_modules/@nodelib/fs.walk/out/providers/async.js +30 -0
  138. package/node_modules/@nodelib/fs.walk/out/providers/index.d.ts +4 -0
  139. package/node_modules/@nodelib/fs.walk/out/providers/index.js +9 -0
  140. package/node_modules/@nodelib/fs.walk/out/providers/stream.d.ts +12 -0
  141. package/node_modules/@nodelib/fs.walk/out/providers/stream.js +34 -0
  142. package/node_modules/@nodelib/fs.walk/out/providers/sync.d.ts +10 -0
  143. package/node_modules/@nodelib/fs.walk/out/providers/sync.js +14 -0
  144. package/node_modules/@nodelib/fs.walk/out/readers/async.d.ts +30 -0
  145. package/node_modules/@nodelib/fs.walk/out/readers/async.js +97 -0
  146. package/node_modules/@nodelib/fs.walk/out/readers/common.d.ts +7 -0
  147. package/node_modules/@nodelib/fs.walk/out/readers/common.js +31 -0
  148. package/node_modules/@nodelib/fs.walk/out/readers/reader.d.ts +6 -0
  149. package/node_modules/@nodelib/fs.walk/out/readers/reader.js +11 -0
  150. package/node_modules/@nodelib/fs.walk/out/readers/sync.d.ts +15 -0
  151. package/node_modules/@nodelib/fs.walk/out/readers/sync.js +59 -0
  152. package/node_modules/@nodelib/fs.walk/out/settings.d.ts +30 -0
  153. package/node_modules/@nodelib/fs.walk/out/settings.js +26 -0
  154. package/node_modules/@nodelib/fs.walk/out/types/index.d.ts +8 -0
  155. package/node_modules/@nodelib/fs.walk/out/types/index.js +2 -0
  156. package/node_modules/@nodelib/fs.walk/package.json +44 -0
  157. package/node_modules/@ungap/structured-clone/.github/workflows/node.js.yml +31 -0
  158. package/node_modules/@ungap/structured-clone/LICENSE +15 -0
  159. package/node_modules/@ungap/structured-clone/README.md +95 -0
  160. package/node_modules/@ungap/structured-clone/cjs/deserialize.js +78 -0
  161. package/node_modules/@ungap/structured-clone/cjs/index.js +27 -0
  162. package/node_modules/@ungap/structured-clone/cjs/json.js +24 -0
  163. package/node_modules/@ungap/structured-clone/cjs/package.json +1 -0
  164. package/node_modules/@ungap/structured-clone/cjs/serialize.js +160 -0
  165. package/node_modules/@ungap/structured-clone/cjs/types.js +22 -0
  166. package/node_modules/@ungap/structured-clone/esm/deserialize.js +79 -0
  167. package/node_modules/@ungap/structured-clone/esm/index.js +25 -0
  168. package/node_modules/@ungap/structured-clone/esm/json.js +21 -0
  169. package/node_modules/@ungap/structured-clone/esm/serialize.js +161 -0
  170. package/node_modules/@ungap/structured-clone/esm/types.js +11 -0
  171. package/node_modules/@ungap/structured-clone/package.json +53 -0
  172. package/node_modules/@ungap/structured-clone/structured-json.js +1 -0
  173. package/package.json +1 -1
  174. package/rules/dayjs-with-timezone.js +29 -0
  175. package/rules/reducers-should-always-return.js +20 -4
@@ -0,0 +1,318 @@
1
+ /**
2
+ * @fileoverview Compatibility class for flat config.
3
+ * @author Nicholas C. Zakas
4
+ */
5
+
6
+ //-----------------------------------------------------------------------------
7
+ // Requirements
8
+ //-----------------------------------------------------------------------------
9
+
10
+ import createDebug from "debug";
11
+ import path from "path";
12
+
13
+ import environments from "../conf/environments.js";
14
+ import { ConfigArrayFactory } from "./config-array-factory.js";
15
+
16
+ //-----------------------------------------------------------------------------
17
+ // Helpers
18
+ //-----------------------------------------------------------------------------
19
+
20
+ /** @typedef {import("../../shared/types").Environment} Environment */
21
+ /** @typedef {import("../../shared/types").Processor} Processor */
22
+
23
+ const debug = createDebug("eslintrc:flat-compat");
24
+ const cafactory = Symbol("cafactory");
25
+
26
+ /**
27
+ * Translates an ESLintRC-style config object into a flag-config-style config
28
+ * object.
29
+ * @param {Object} eslintrcConfig An ESLintRC-style config object.
30
+ * @param {Object} options Options to help translate the config.
31
+ * @param {string} options.resolveConfigRelativeTo To the directory to resolve
32
+ * configs from.
33
+ * @param {string} options.resolvePluginsRelativeTo The directory to resolve
34
+ * plugins from.
35
+ * @param {ReadOnlyMap<string,Environment>} options.pluginEnvironments A map of plugin environment
36
+ * names to objects.
37
+ * @param {ReadOnlyMap<string,Processor>} options.pluginProcessors A map of plugin processor
38
+ * names to objects.
39
+ * @returns {Object} A flag-config-style config object.
40
+ */
41
+ function translateESLintRC(eslintrcConfig, {
42
+ resolveConfigRelativeTo,
43
+ resolvePluginsRelativeTo,
44
+ pluginEnvironments,
45
+ pluginProcessors
46
+ }) {
47
+
48
+ const flatConfig = {};
49
+ const configs = [];
50
+ const languageOptions = {};
51
+ const linterOptions = {};
52
+ const keysToCopy = ["settings", "rules", "processor"];
53
+ const languageOptionsKeysToCopy = ["globals", "parser", "parserOptions"];
54
+ const linterOptionsKeysToCopy = ["noInlineConfig", "reportUnusedDisableDirectives"];
55
+
56
+ // copy over simple translations
57
+ for (const key of keysToCopy) {
58
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
59
+ flatConfig[key] = eslintrcConfig[key];
60
+ }
61
+ }
62
+
63
+ // copy over languageOptions
64
+ for (const key of languageOptionsKeysToCopy) {
65
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
66
+
67
+ // create the languageOptions key in the flat config
68
+ flatConfig.languageOptions = languageOptions;
69
+
70
+ if (key === "parser") {
71
+ debug(`Resolving parser '${languageOptions[key]}' relative to ${resolveConfigRelativeTo}`);
72
+
73
+ if (eslintrcConfig[key].error) {
74
+ throw eslintrcConfig[key].error;
75
+ }
76
+
77
+ languageOptions[key] = eslintrcConfig[key].definition;
78
+ continue;
79
+ }
80
+
81
+ // clone any object values that are in the eslintrc config
82
+ if (eslintrcConfig[key] && typeof eslintrcConfig[key] === "object") {
83
+ languageOptions[key] = {
84
+ ...eslintrcConfig[key]
85
+ };
86
+ } else {
87
+ languageOptions[key] = eslintrcConfig[key];
88
+ }
89
+ }
90
+ }
91
+
92
+ // copy over linterOptions
93
+ for (const key of linterOptionsKeysToCopy) {
94
+ if (key in eslintrcConfig && typeof eslintrcConfig[key] !== "undefined") {
95
+ flatConfig.linterOptions = linterOptions;
96
+ linterOptions[key] = eslintrcConfig[key];
97
+ }
98
+ }
99
+
100
+ // move ecmaVersion a level up
101
+ if (languageOptions.parserOptions) {
102
+
103
+ if ("ecmaVersion" in languageOptions.parserOptions) {
104
+ languageOptions.ecmaVersion = languageOptions.parserOptions.ecmaVersion;
105
+ delete languageOptions.parserOptions.ecmaVersion;
106
+ }
107
+
108
+ if ("sourceType" in languageOptions.parserOptions) {
109
+ languageOptions.sourceType = languageOptions.parserOptions.sourceType;
110
+ delete languageOptions.parserOptions.sourceType;
111
+ }
112
+
113
+ // check to see if we even need parserOptions anymore and remove it if not
114
+ if (Object.keys(languageOptions.parserOptions).length === 0) {
115
+ delete languageOptions.parserOptions;
116
+ }
117
+ }
118
+
119
+ // overrides
120
+ if (eslintrcConfig.criteria) {
121
+ flatConfig.files = [absoluteFilePath => eslintrcConfig.criteria.test(absoluteFilePath)];
122
+ }
123
+
124
+ // translate plugins
125
+ if (eslintrcConfig.plugins && typeof eslintrcConfig.plugins === "object") {
126
+ debug(`Translating plugins: ${eslintrcConfig.plugins}`);
127
+
128
+ flatConfig.plugins = {};
129
+
130
+ for (const pluginName of Object.keys(eslintrcConfig.plugins)) {
131
+
132
+ debug(`Translating plugin: ${pluginName}`);
133
+ debug(`Resolving plugin '${pluginName} relative to ${resolvePluginsRelativeTo}`);
134
+
135
+ const { definition: plugin, error } = eslintrcConfig.plugins[pluginName];
136
+
137
+ if (error) {
138
+ throw error;
139
+ }
140
+
141
+ flatConfig.plugins[pluginName] = plugin;
142
+
143
+ // create a config for any processors
144
+ if (plugin.processors) {
145
+ for (const processorName of Object.keys(plugin.processors)) {
146
+ if (processorName.startsWith(".")) {
147
+ debug(`Assigning processor: ${pluginName}/${processorName}`);
148
+
149
+ configs.unshift({
150
+ files: [`**/*${processorName}`],
151
+ processor: pluginProcessors.get(`${pluginName}/${processorName}`)
152
+ });
153
+ }
154
+
155
+ }
156
+ }
157
+ }
158
+ }
159
+
160
+ // translate env - must come after plugins
161
+ if (eslintrcConfig.env && typeof eslintrcConfig.env === "object") {
162
+ for (const envName of Object.keys(eslintrcConfig.env)) {
163
+
164
+ // only add environments that are true
165
+ if (eslintrcConfig.env[envName]) {
166
+ debug(`Translating environment: ${envName}`);
167
+
168
+ if (environments.has(envName)) {
169
+
170
+ // built-in environments should be defined first
171
+ configs.unshift(...translateESLintRC({
172
+ criteria: eslintrcConfig.criteria,
173
+ ...environments.get(envName)
174
+ }, {
175
+ resolveConfigRelativeTo,
176
+ resolvePluginsRelativeTo
177
+ }));
178
+ } else if (pluginEnvironments.has(envName)) {
179
+
180
+ // if the environment comes from a plugin, it should come after the plugin config
181
+ configs.push(...translateESLintRC({
182
+ criteria: eslintrcConfig.criteria,
183
+ ...pluginEnvironments.get(envName)
184
+ }, {
185
+ resolveConfigRelativeTo,
186
+ resolvePluginsRelativeTo
187
+ }));
188
+ }
189
+ }
190
+ }
191
+ }
192
+
193
+ // only add if there are actually keys in the config
194
+ if (Object.keys(flatConfig).length > 0) {
195
+ configs.push(flatConfig);
196
+ }
197
+
198
+ return configs;
199
+ }
200
+
201
+
202
+ //-----------------------------------------------------------------------------
203
+ // Exports
204
+ //-----------------------------------------------------------------------------
205
+
206
+ /**
207
+ * A compatibility class for working with configs.
208
+ */
209
+ class FlatCompat {
210
+
211
+ constructor({
212
+ baseDirectory = process.cwd(),
213
+ resolvePluginsRelativeTo = baseDirectory,
214
+ recommendedConfig,
215
+ allConfig
216
+ } = {}) {
217
+ this.baseDirectory = baseDirectory;
218
+ this.resolvePluginsRelativeTo = resolvePluginsRelativeTo;
219
+ this[cafactory] = new ConfigArrayFactory({
220
+ cwd: baseDirectory,
221
+ resolvePluginsRelativeTo,
222
+ getEslintAllConfig: () => {
223
+
224
+ if (!allConfig) {
225
+ throw new TypeError("Missing parameter 'allConfig' in FlatCompat constructor.");
226
+ }
227
+
228
+ return allConfig;
229
+ },
230
+ getEslintRecommendedConfig: () => {
231
+
232
+ if (!recommendedConfig) {
233
+ throw new TypeError("Missing parameter 'recommendedConfig' in FlatCompat constructor.");
234
+ }
235
+
236
+ return recommendedConfig;
237
+ }
238
+ });
239
+ }
240
+
241
+ /**
242
+ * Translates an ESLintRC-style config into a flag-config-style config.
243
+ * @param {Object} eslintrcConfig The ESLintRC-style config object.
244
+ * @returns {Object} A flag-config-style config object.
245
+ */
246
+ config(eslintrcConfig) {
247
+ const eslintrcArray = this[cafactory].create(eslintrcConfig, {
248
+ basePath: this.baseDirectory
249
+ });
250
+
251
+ const flatArray = [];
252
+ let hasIgnorePatterns = false;
253
+
254
+ eslintrcArray.forEach(configData => {
255
+ if (configData.type === "config") {
256
+ hasIgnorePatterns = hasIgnorePatterns || configData.ignorePattern;
257
+ flatArray.push(...translateESLintRC(configData, {
258
+ resolveConfigRelativeTo: path.join(this.baseDirectory, "__placeholder.js"),
259
+ resolvePluginsRelativeTo: path.join(this.resolvePluginsRelativeTo, "__placeholder.js"),
260
+ pluginEnvironments: eslintrcArray.pluginEnvironments,
261
+ pluginProcessors: eslintrcArray.pluginProcessors
262
+ }));
263
+ }
264
+ });
265
+
266
+ // combine ignorePatterns to emulate ESLintRC behavior better
267
+ if (hasIgnorePatterns) {
268
+ flatArray.unshift({
269
+ ignores: [filePath => {
270
+
271
+ // Compute the final config for this file.
272
+ // This filters config array elements by `files`/`excludedFiles` then merges the elements.
273
+ const finalConfig = eslintrcArray.extractConfig(filePath);
274
+
275
+ // Test the `ignorePattern` properties of the final config.
276
+ return Boolean(finalConfig.ignores) && finalConfig.ignores(filePath);
277
+ }]
278
+ });
279
+ }
280
+
281
+ return flatArray;
282
+ }
283
+
284
+ /**
285
+ * Translates the `env` section of an ESLintRC-style config.
286
+ * @param {Object} envConfig The `env` section of an ESLintRC config.
287
+ * @returns {Object[]} An array of flag-config objects representing the environments.
288
+ */
289
+ env(envConfig) {
290
+ return this.config({
291
+ env: envConfig
292
+ });
293
+ }
294
+
295
+ /**
296
+ * Translates the `extends` section of an ESLintRC-style config.
297
+ * @param {...string} configsToExtend The names of the configs to load.
298
+ * @returns {Object[]} An array of flag-config objects representing the config.
299
+ */
300
+ extends(...configsToExtend) {
301
+ return this.config({
302
+ extends: configsToExtend
303
+ });
304
+ }
305
+
306
+ /**
307
+ * Translates the `plugins` section of an ESLintRC-style config.
308
+ * @param {...string} plugins The names of the plugins to load.
309
+ * @returns {Object[]} An array of flag-config objects representing the plugins.
310
+ */
311
+ plugins(...plugins) {
312
+ return this.config({
313
+ plugins
314
+ });
315
+ }
316
+ }
317
+
318
+ export { FlatCompat };
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview Package exports for @eslint/eslintrc
3
+ * @author Nicholas C. Zakas
4
+ */
5
+ //------------------------------------------------------------------------------
6
+ // Requirements
7
+ //------------------------------------------------------------------------------
8
+
9
+ import * as ConfigOps from "./shared/config-ops.js";
10
+ import ConfigValidator from "./shared/config-validator.js";
11
+ import * as naming from "./shared/naming.js";
12
+ import environments from "../conf/environments.js";
13
+
14
+ //-----------------------------------------------------------------------------
15
+ // Exports
16
+ //-----------------------------------------------------------------------------
17
+
18
+ const Legacy = {
19
+ environments,
20
+
21
+ // shared
22
+ ConfigOps,
23
+ ConfigValidator,
24
+ naming
25
+ };
26
+
27
+ export {
28
+ Legacy
29
+ };
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @fileoverview Package exports for @eslint/eslintrc
3
+ * @author Nicholas C. Zakas
4
+ */
5
+ //------------------------------------------------------------------------------
6
+ // Requirements
7
+ //------------------------------------------------------------------------------
8
+
9
+ import {
10
+ ConfigArrayFactory,
11
+ createContext as createConfigArrayFactoryContext
12
+ } from "./config-array-factory.js";
13
+
14
+ import { CascadingConfigArrayFactory } from "./cascading-config-array-factory.js";
15
+ import * as ModuleResolver from "./shared/relative-module-resolver.js";
16
+ import { ConfigArray, getUsedExtractedConfigs } from "./config-array/index.js";
17
+ import { ConfigDependency } from "./config-array/config-dependency.js";
18
+ import { ExtractedConfig } from "./config-array/extracted-config.js";
19
+ import { IgnorePattern } from "./config-array/ignore-pattern.js";
20
+ import { OverrideTester } from "./config-array/override-tester.js";
21
+ import * as ConfigOps from "./shared/config-ops.js";
22
+ import ConfigValidator from "./shared/config-validator.js";
23
+ import * as naming from "./shared/naming.js";
24
+ import { FlatCompat } from "./flat-compat.js";
25
+ import environments from "../conf/environments.js";
26
+
27
+ //-----------------------------------------------------------------------------
28
+ // Exports
29
+ //-----------------------------------------------------------------------------
30
+
31
+ const Legacy = {
32
+ ConfigArray,
33
+ createConfigArrayFactoryContext,
34
+ CascadingConfigArrayFactory,
35
+ ConfigArrayFactory,
36
+ ConfigDependency,
37
+ ExtractedConfig,
38
+ IgnorePattern,
39
+ OverrideTester,
40
+ getUsedExtractedConfigs,
41
+ environments,
42
+
43
+ // shared
44
+ ConfigOps,
45
+ ConfigValidator,
46
+ ModuleResolver,
47
+ naming
48
+ };
49
+
50
+ export {
51
+
52
+ Legacy,
53
+
54
+ FlatCompat
55
+
56
+ };
@@ -0,0 +1,191 @@
1
+ /**
2
+ * @fileoverview The instance of Ajv validator.
3
+ * @author Evgeny Poberezkin
4
+ */
5
+
6
+ //------------------------------------------------------------------------------
7
+ // Requirements
8
+ //------------------------------------------------------------------------------
9
+
10
+ import Ajv from "ajv";
11
+
12
+ //-----------------------------------------------------------------------------
13
+ // Helpers
14
+ //-----------------------------------------------------------------------------
15
+
16
+ /*
17
+ * Copied from ajv/lib/refs/json-schema-draft-04.json
18
+ * The MIT License (MIT)
19
+ * Copyright (c) 2015-2017 Evgeny Poberezkin
20
+ */
21
+ const metaSchema = {
22
+ id: "http://json-schema.org/draft-04/schema#",
23
+ $schema: "http://json-schema.org/draft-04/schema#",
24
+ description: "Core schema meta-schema",
25
+ definitions: {
26
+ schemaArray: {
27
+ type: "array",
28
+ minItems: 1,
29
+ items: { $ref: "#" }
30
+ },
31
+ positiveInteger: {
32
+ type: "integer",
33
+ minimum: 0
34
+ },
35
+ positiveIntegerDefault0: {
36
+ allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }]
37
+ },
38
+ simpleTypes: {
39
+ enum: ["array", "boolean", "integer", "null", "number", "object", "string"]
40
+ },
41
+ stringArray: {
42
+ type: "array",
43
+ items: { type: "string" },
44
+ minItems: 1,
45
+ uniqueItems: true
46
+ }
47
+ },
48
+ type: "object",
49
+ properties: {
50
+ id: {
51
+ type: "string"
52
+ },
53
+ $schema: {
54
+ type: "string"
55
+ },
56
+ title: {
57
+ type: "string"
58
+ },
59
+ description: {
60
+ type: "string"
61
+ },
62
+ default: { },
63
+ multipleOf: {
64
+ type: "number",
65
+ minimum: 0,
66
+ exclusiveMinimum: true
67
+ },
68
+ maximum: {
69
+ type: "number"
70
+ },
71
+ exclusiveMaximum: {
72
+ type: "boolean",
73
+ default: false
74
+ },
75
+ minimum: {
76
+ type: "number"
77
+ },
78
+ exclusiveMinimum: {
79
+ type: "boolean",
80
+ default: false
81
+ },
82
+ maxLength: { $ref: "#/definitions/positiveInteger" },
83
+ minLength: { $ref: "#/definitions/positiveIntegerDefault0" },
84
+ pattern: {
85
+ type: "string",
86
+ format: "regex"
87
+ },
88
+ additionalItems: {
89
+ anyOf: [
90
+ { type: "boolean" },
91
+ { $ref: "#" }
92
+ ],
93
+ default: { }
94
+ },
95
+ items: {
96
+ anyOf: [
97
+ { $ref: "#" },
98
+ { $ref: "#/definitions/schemaArray" }
99
+ ],
100
+ default: { }
101
+ },
102
+ maxItems: { $ref: "#/definitions/positiveInteger" },
103
+ minItems: { $ref: "#/definitions/positiveIntegerDefault0" },
104
+ uniqueItems: {
105
+ type: "boolean",
106
+ default: false
107
+ },
108
+ maxProperties: { $ref: "#/definitions/positiveInteger" },
109
+ minProperties: { $ref: "#/definitions/positiveIntegerDefault0" },
110
+ required: { $ref: "#/definitions/stringArray" },
111
+ additionalProperties: {
112
+ anyOf: [
113
+ { type: "boolean" },
114
+ { $ref: "#" }
115
+ ],
116
+ default: { }
117
+ },
118
+ definitions: {
119
+ type: "object",
120
+ additionalProperties: { $ref: "#" },
121
+ default: { }
122
+ },
123
+ properties: {
124
+ type: "object",
125
+ additionalProperties: { $ref: "#" },
126
+ default: { }
127
+ },
128
+ patternProperties: {
129
+ type: "object",
130
+ additionalProperties: { $ref: "#" },
131
+ default: { }
132
+ },
133
+ dependencies: {
134
+ type: "object",
135
+ additionalProperties: {
136
+ anyOf: [
137
+ { $ref: "#" },
138
+ { $ref: "#/definitions/stringArray" }
139
+ ]
140
+ }
141
+ },
142
+ enum: {
143
+ type: "array",
144
+ minItems: 1,
145
+ uniqueItems: true
146
+ },
147
+ type: {
148
+ anyOf: [
149
+ { $ref: "#/definitions/simpleTypes" },
150
+ {
151
+ type: "array",
152
+ items: { $ref: "#/definitions/simpleTypes" },
153
+ minItems: 1,
154
+ uniqueItems: true
155
+ }
156
+ ]
157
+ },
158
+ format: { type: "string" },
159
+ allOf: { $ref: "#/definitions/schemaArray" },
160
+ anyOf: { $ref: "#/definitions/schemaArray" },
161
+ oneOf: { $ref: "#/definitions/schemaArray" },
162
+ not: { $ref: "#" }
163
+ },
164
+ dependencies: {
165
+ exclusiveMaximum: ["maximum"],
166
+ exclusiveMinimum: ["minimum"]
167
+ },
168
+ default: { }
169
+ };
170
+
171
+ //------------------------------------------------------------------------------
172
+ // Public Interface
173
+ //------------------------------------------------------------------------------
174
+
175
+ export default (additionalOptions = {}) => {
176
+ const ajv = new Ajv({
177
+ meta: false,
178
+ useDefaults: true,
179
+ validateSchema: false,
180
+ missingRefs: "ignore",
181
+ verbose: true,
182
+ schemaId: "auto",
183
+ ...additionalOptions
184
+ });
185
+
186
+ ajv.addMetaSchema(metaSchema);
187
+ // eslint-disable-next-line no-underscore-dangle
188
+ ajv._opts.defaultMeta = metaSchema.id;
189
+
190
+ return ajv;
191
+ };