@isentinel/eslint-config 1.3.0 → 2.0.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.
- package/README.md +70 -42
- package/dist/cli.js +8 -7
- package/dist/index.d.ts +59 -28
- package/dist/index.js +146 -122
- package/package.json +7 -6
package/README.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
### Starter Wizard
|
|
6
6
|
|
|
7
|
-
We provided a CLI tool to help you set up your project, or migrate from the
|
|
7
|
+
We provided a CLI tool to help you set up your project, or migrate from the
|
|
8
|
+
legacy config to the new flat config with one command.
|
|
8
9
|
|
|
9
10
|
### Example Usage
|
|
10
11
|
|
|
11
12
|
For an existing template that already has this config setup, please refer to the
|
|
12
|
-
[roblox-ts
|
|
13
|
-
template](https://github.com/christopher-buss/roblox-ts-project-template)
|
|
13
|
+
[roblox-ts template](https://github.com/christopher-buss/roblox-ts-project-template)
|
|
14
14
|
repository. This includes all necessarily files and configurations to get you up
|
|
15
15
|
and running.
|
|
16
16
|
|
|
@@ -28,40 +28,46 @@ pnpm i -D eslint @isentinel/eslint-config
|
|
|
28
28
|
|
|
29
29
|
### Create config file
|
|
30
30
|
|
|
31
|
-
With [`"type": "module"`](https://nodejs.org/api/packages.html#type) in
|
|
31
|
+
With [`"type": "module"`](https://nodejs.org/api/packages.html#type) in
|
|
32
|
+
`package.json` (recommended):
|
|
32
33
|
|
|
33
34
|
```ts
|
|
34
35
|
// eslint.config.ts
|
|
35
|
-
import
|
|
36
|
+
import isentinel from "@isentinel/eslint-config";
|
|
36
37
|
|
|
37
|
-
export default
|
|
38
|
+
export default isentinel();
|
|
38
39
|
```
|
|
39
40
|
|
|
40
41
|
#### Optional: TypeScript Config Support
|
|
41
42
|
|
|
42
|
-
If you want to use `eslint.config.ts` instead of `.js`, install `jiti` v2.0.0 or
|
|
43
|
+
If you want to use `eslint.config.ts` instead of `.js`, install `jiti` v2.0.0 or
|
|
44
|
+
greater:
|
|
43
45
|
|
|
44
46
|
```bash
|
|
45
47
|
pnpm i -D jiti@^2.0.0
|
|
46
48
|
```
|
|
47
49
|
|
|
48
|
-
See
|
|
50
|
+
See
|
|
51
|
+
[ESLint's TypeScript configuration documentation](https://eslint.org/docs/latest/use/configure/configuration-files#typescript-configuration-files)
|
|
52
|
+
for more details.
|
|
49
53
|
|
|
50
54
|
<details>
|
|
51
55
|
<summary>
|
|
52
56
|
Combined with legacy config:
|
|
53
57
|
</summary>
|
|
54
58
|
|
|
55
|
-
If you still use some configs from the legacy eslintrc format, you can use the
|
|
59
|
+
If you still use some configs from the legacy eslintrc format, you can use the
|
|
60
|
+
[`@eslint/eslintrc`](https://www.npmjs.com/package/@eslint/eslintrc) package to
|
|
61
|
+
convert them to the flat config.
|
|
56
62
|
|
|
57
63
|
```ts
|
|
58
64
|
// eslint.config.ts
|
|
59
65
|
import { FlatCompat } from "@eslint/eslintrc";
|
|
60
|
-
import
|
|
66
|
+
import isentinel from "@isentinel/eslint-config";
|
|
61
67
|
|
|
62
68
|
const compat = new FlatCompat();
|
|
63
69
|
|
|
64
|
-
export default
|
|
70
|
+
export default isentinel(
|
|
65
71
|
{
|
|
66
72
|
ignores: [],
|
|
67
73
|
},
|
|
@@ -78,8 +84,8 @@ export default style(
|
|
|
78
84
|
);
|
|
79
85
|
```
|
|
80
86
|
|
|
81
|
-
> Note that `.eslintignore` no longer works in Flat config
|
|
82
|
-
> [customization](#customization) for more details.
|
|
87
|
+
> Note that `.eslintignore` no longer works in Flat config. Use the `ignores`
|
|
88
|
+
> option instead, see [customization](#customization) for more details.
|
|
83
89
|
|
|
84
90
|
</details>
|
|
85
91
|
|
|
@@ -118,7 +124,8 @@ when you use the `!` operator to assert that a value is not `undefined`. The
|
|
|
118
124
|
caveat is that this rule will not always play nicely with
|
|
119
125
|
`noUncheckedIndexedAccess`, and will often require you to disable it in certain
|
|
120
126
|
places. I believe that this is a good trade-off, as it will help you catch
|
|
121
|
-
potential bugs in your code, but you can disable it if you find it too
|
|
127
|
+
potential bugs in your code, but you can disable it if you find it too
|
|
128
|
+
restrictive.
|
|
122
129
|
|
|
123
130
|
```json
|
|
124
131
|
{
|
|
@@ -130,7 +137,8 @@ potential bugs in your code, but you can disable it if you find it too restricti
|
|
|
130
137
|
|
|
131
138
|
## VS Code support (auto fix)
|
|
132
139
|
|
|
133
|
-
Install
|
|
140
|
+
Install
|
|
141
|
+
[VS Code ESLint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
|
134
142
|
|
|
135
143
|
Add the following settings to your `.vscode/settings.json`:
|
|
136
144
|
|
|
@@ -173,22 +181,22 @@ Add the following settings to your `.vscode/settings.json`:
|
|
|
173
181
|
|
|
174
182
|
## Customization
|
|
175
183
|
|
|
176
|
-
Normally you only need to import the `
|
|
184
|
+
Normally you only need to import the `isentinel` preset:
|
|
177
185
|
|
|
178
186
|
```ts
|
|
179
187
|
// eslint.config.ts
|
|
180
|
-
import
|
|
188
|
+
import isentinel from "@isentinel/eslint-config";
|
|
181
189
|
|
|
182
|
-
export default
|
|
190
|
+
export default isentinel();
|
|
183
191
|
```
|
|
184
192
|
|
|
185
193
|
And that's it! Or you can configure each integration individually, for example:
|
|
186
194
|
|
|
187
195
|
```ts
|
|
188
196
|
// eslint.config.ts
|
|
189
|
-
import
|
|
197
|
+
import isentinel from "@isentinel/eslint-config";
|
|
190
198
|
|
|
191
|
-
export default
|
|
199
|
+
export default isentinel({
|
|
192
200
|
// `.eslintignore` is no longer supported in Flat config, use `ignores`
|
|
193
201
|
// instead
|
|
194
202
|
ignores: [
|
|
@@ -204,13 +212,14 @@ export default style({
|
|
|
204
212
|
});
|
|
205
213
|
```
|
|
206
214
|
|
|
207
|
-
The `
|
|
215
|
+
The `isentinel` factory function also accepts any number of arbitrary custom
|
|
216
|
+
config overrides:
|
|
208
217
|
|
|
209
218
|
```ts
|
|
210
219
|
// eslint.config.ts
|
|
211
|
-
import
|
|
220
|
+
import isentinel from "@isentinel/eslint-config";
|
|
212
221
|
|
|
213
|
-
export default
|
|
222
|
+
export default isentinel(
|
|
214
223
|
{
|
|
215
224
|
// Configures for this config
|
|
216
225
|
},
|
|
@@ -227,13 +236,21 @@ export default style(
|
|
|
227
236
|
);
|
|
228
237
|
```
|
|
229
238
|
|
|
230
|
-
Check out the
|
|
239
|
+
Check out the
|
|
240
|
+
[configs](https://github.com/christopher-buss/eslint-config/tree/main/src/configs)
|
|
241
|
+
and
|
|
242
|
+
[factory](https://github.com/christopher-buss/eslint-config/blob/main/src/factory.ts)
|
|
243
|
+
for more details.
|
|
231
244
|
|
|
232
|
-
> Thanks to [antfu/eslint-config](https://github.com/antfu/eslint-config) and
|
|
245
|
+
> Thanks to [antfu/eslint-config](https://github.com/antfu/eslint-config) and
|
|
246
|
+
> [sxzz/eslint-config](https://github.com/sxzz/eslint-config) for the
|
|
247
|
+
> inspiration and reference.
|
|
233
248
|
|
|
234
249
|
### Plugins Renaming
|
|
235
250
|
|
|
236
|
-
Since flat config requires us to explicitly provide the plugin names (instead of
|
|
251
|
+
Since flat config requires us to explicitly provide the plugin names (instead of
|
|
252
|
+
the mandatory convention from npm package name), we renamed some plugins to make
|
|
253
|
+
the overall scope more consistent and easier to write.
|
|
237
254
|
|
|
238
255
|
| New Prefix | Original Prefix | Source Plugin |
|
|
239
256
|
| ---------- | ---------------------- | ------------------------------------------------------------------------------------------ |
|
|
@@ -243,7 +260,8 @@ Since flat config requires us to explicitly provide the plugin names (instead of
|
|
|
243
260
|
| `ts/*` | `@typescript-eslint/*` | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint) |
|
|
244
261
|
| `style/*` | `@stylistic/*` | [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic) |
|
|
245
262
|
|
|
246
|
-
When you want to override rules, or disable them inline, you need to update to
|
|
263
|
+
When you want to override rules, or disable them inline, you need to update to
|
|
264
|
+
the new prefix:
|
|
247
265
|
|
|
248
266
|
```diff
|
|
249
267
|
-// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
@@ -263,7 +281,8 @@ repository rather than this one.
|
|
|
263
281
|
|
|
264
282
|
Sometimes you will have words that are not in the dictionary, but are still
|
|
265
283
|
valid for your project. To add these words to the dictionary, you can create a
|
|
266
|
-
`cspell.config.yaml` file in the root of your project with the following
|
|
284
|
+
`cspell.config.yaml` file in the root of your project with the following
|
|
285
|
+
content:
|
|
267
286
|
|
|
268
287
|
```yaml
|
|
269
288
|
# cspell.config.yaml
|
|
@@ -276,9 +295,9 @@ To disable this, you can set the `spellCheck` option to `false`:
|
|
|
276
295
|
|
|
277
296
|
```js
|
|
278
297
|
// eslint.config.ts
|
|
279
|
-
import
|
|
298
|
+
import isentinel from "@isentinel/eslint-config";
|
|
280
299
|
|
|
281
|
-
export default
|
|
300
|
+
export default isentinel({
|
|
282
301
|
spellCheck: false,
|
|
283
302
|
});
|
|
284
303
|
```
|
|
@@ -288,7 +307,9 @@ For more information on how to configure the spell checker, please refer to the
|
|
|
288
307
|
|
|
289
308
|
#### `perfectionist` (sorting)
|
|
290
309
|
|
|
291
|
-
This plugin
|
|
310
|
+
This plugin
|
|
311
|
+
[`eslint-plugin-perfectionist`](https://github.com/azat-io/eslint-plugin-perfectionist)
|
|
312
|
+
allows you to sort object keys, imports, etc, with auto-fix.
|
|
292
313
|
|
|
293
314
|
The plugin is installed and some rules are enabled by default, but these rules
|
|
294
315
|
can be disabled or overridden by your own config. For example, I personally have
|
|
@@ -296,9 +317,9 @@ sort-objects set to:
|
|
|
296
317
|
|
|
297
318
|
```js
|
|
298
319
|
// eslint.config.ts
|
|
299
|
-
import
|
|
320
|
+
import isentinel from "@isentinel/eslint-config";
|
|
300
321
|
|
|
301
|
-
export default
|
|
322
|
+
export default isentinel({
|
|
302
323
|
rules: {
|
|
303
324
|
"perfectionist/sort-objects": [
|
|
304
325
|
"warn",
|
|
@@ -321,7 +342,8 @@ export default style({
|
|
|
321
342
|
|
|
322
343
|
### Optional Configs
|
|
323
344
|
|
|
324
|
-
We provide some optional configs for specific use cases, that we don't include
|
|
345
|
+
We provide some optional configs for specific use cases, that we don't include
|
|
346
|
+
their dependencies by default.
|
|
325
347
|
|
|
326
348
|
#### React
|
|
327
349
|
|
|
@@ -329,9 +351,9 @@ To enable React support, you need to explicitly turn it on:
|
|
|
329
351
|
|
|
330
352
|
```js
|
|
331
353
|
// eslint.config.ts
|
|
332
|
-
import
|
|
354
|
+
import isentinel from "@isentinel/eslint-config";
|
|
333
355
|
|
|
334
|
-
export default
|
|
356
|
+
export default isentinel({
|
|
335
357
|
react: true,
|
|
336
358
|
});
|
|
337
359
|
```
|
|
@@ -342,14 +364,15 @@ To enable Jest support, you need to explicitly turn it on:
|
|
|
342
364
|
|
|
343
365
|
```js
|
|
344
366
|
// eslint.config.ts
|
|
345
|
-
import
|
|
367
|
+
import isentinel from "@isentinel/eslint-config";
|
|
346
368
|
|
|
347
|
-
export default
|
|
369
|
+
export default isentinel({
|
|
348
370
|
test: true,
|
|
349
371
|
});
|
|
350
372
|
```
|
|
351
373
|
|
|
352
|
-
Running `npx eslint` should prompt you to install the required dependencies,
|
|
374
|
+
Running `npx eslint` should prompt you to install the required dependencies,
|
|
375
|
+
otherwise, you can install them manually:
|
|
353
376
|
|
|
354
377
|
```bash
|
|
355
378
|
pnpm i -D @eslint-react/eslint-plugin eslint-plugin-react-roblox-hooks eslint-plugin-jest
|
|
@@ -357,7 +380,8 @@ pnpm i -D @eslint-react/eslint-plugin eslint-plugin-react-roblox-hooks eslint-pl
|
|
|
357
380
|
|
|
358
381
|
### Lint Staged
|
|
359
382
|
|
|
360
|
-
If you want to apply lint and auto-fix before every commit, you can add the
|
|
383
|
+
If you want to apply lint and auto-fix before every commit, you can add the
|
|
384
|
+
following to your `package.json`:
|
|
361
385
|
|
|
362
386
|
```json
|
|
363
387
|
{
|
|
@@ -378,7 +402,9 @@ pnpm i -D lint-staged simple-git-hooks
|
|
|
378
402
|
|
|
379
403
|
## View what rules are enabled
|
|
380
404
|
|
|
381
|
-
There is a visual tool to help you view what rules are enabled in your project
|
|
405
|
+
There is a visual tool to help you view what rules are enabled in your project
|
|
406
|
+
and apply them to what files,
|
|
407
|
+
[eslint-config-inspector](https://github.com/eslint/config-inspector)
|
|
382
408
|
|
|
383
409
|
Go to your project root that contains `eslint.config.ts` and run:
|
|
384
410
|
|
|
@@ -388,7 +414,9 @@ npx eslint-config-inspector
|
|
|
388
414
|
|
|
389
415
|
## Versioning Policy
|
|
390
416
|
|
|
391
|
-
This project follows [Semantic Versioning](https://semver.org/) for releases.
|
|
417
|
+
This project follows [Semantic Versioning](https://semver.org/) for releases.
|
|
418
|
+
However, since this is just a config and involves opinions and many moving
|
|
419
|
+
parts, we don't treat rules changes as breaking changes.
|
|
392
420
|
|
|
393
421
|
### Changes Considered as Breaking Changes
|
|
394
422
|
|
package/dist/cli.js
CHANGED
|
@@ -18,7 +18,7 @@ init_esm_shims();
|
|
|
18
18
|
import ansis from "ansis";
|
|
19
19
|
|
|
20
20
|
// package.json
|
|
21
|
-
var version = "
|
|
21
|
+
var version = "2.0.0";
|
|
22
22
|
var package_default = {
|
|
23
23
|
name: "@isentinel/eslint-config",
|
|
24
24
|
version,
|
|
@@ -29,10 +29,10 @@ var package_default = {
|
|
|
29
29
|
"roblox-ts",
|
|
30
30
|
"rbxts"
|
|
31
31
|
],
|
|
32
|
-
homepage: "https://github.com/christopher-buss/
|
|
32
|
+
homepage: "https://github.com/christopher-buss/eslint-config",
|
|
33
33
|
repository: {
|
|
34
34
|
type: "git",
|
|
35
|
-
url: "git+https://github.com/christopher-buss/
|
|
35
|
+
url: "git+https://github.com/christopher-buss/eslint-config.git"
|
|
36
36
|
},
|
|
37
37
|
license: "MIT",
|
|
38
38
|
author: "Christopher Buss <christopher.buss@pm.me> (https://github.com/christopher-buss)",
|
|
@@ -88,13 +88,13 @@ var package_default = {
|
|
|
88
88
|
"eslint-config-flat-gitignore": "catalog:prod",
|
|
89
89
|
"eslint-config-prettier": "catalog:prod",
|
|
90
90
|
"eslint-flat-config-utils": "catalog:prod",
|
|
91
|
+
"eslint-import-resolver-node": "catalog:prod",
|
|
91
92
|
"eslint-merge-processors": "catalog:prod",
|
|
92
93
|
"eslint-plugin-antfu": "catalog:prod",
|
|
93
94
|
"eslint-plugin-arrow-return-style": "catalog:prod",
|
|
94
95
|
"eslint-plugin-better-max-params": "catalog:prod",
|
|
95
96
|
"eslint-plugin-comment-length": "catalog:prod",
|
|
96
97
|
"eslint-plugin-de-morgan": "catalog:prod",
|
|
97
|
-
"eslint-plugin-format": "catalog:prod",
|
|
98
98
|
"eslint-plugin-format-lua": "catalog:prod",
|
|
99
99
|
"eslint-plugin-import-lite": "catalog:prod",
|
|
100
100
|
"eslint-plugin-jsdoc": "catalog:prod",
|
|
@@ -103,6 +103,7 @@ var package_default = {
|
|
|
103
103
|
"eslint-plugin-package-json": "catalog:prod",
|
|
104
104
|
"eslint-plugin-perfectionist": "catalog:prod",
|
|
105
105
|
"eslint-plugin-pnpm": "catalog:prod",
|
|
106
|
+
"eslint-plugin-prettier": "catalog:prod",
|
|
106
107
|
"eslint-plugin-promise": "catalog:prod",
|
|
107
108
|
"eslint-plugin-roblox-ts": "catalog:prod",
|
|
108
109
|
"eslint-plugin-sentinel": "catalog:prod",
|
|
@@ -151,7 +152,7 @@ var package_default = {
|
|
|
151
152
|
peerDependencies: {
|
|
152
153
|
"@eslint-react/eslint-plugin": "^1.45.0",
|
|
153
154
|
eslint: "^9.10.0",
|
|
154
|
-
"eslint-plugin-jest": "^28.9.0",
|
|
155
|
+
"eslint-plugin-jest": "^28.9.0 || ^29.0.0",
|
|
155
156
|
"eslint-plugin-react-roblox-hooks": "^5.1.0-rbx.1"
|
|
156
157
|
},
|
|
157
158
|
peerDependenciesMeta: {
|
|
@@ -250,9 +251,9 @@ init_esm_shims();
|
|
|
250
251
|
import { execSync } from "child_process";
|
|
251
252
|
function getEslintConfigContent(mainConfig, additionalConfigs) {
|
|
252
253
|
return `
|
|
253
|
-
import
|
|
254
|
+
import isentinel from '@isentinel/eslint-config'
|
|
254
255
|
|
|
255
|
-
export default
|
|
256
|
+
export default isentinel({
|
|
256
257
|
${mainConfig}
|
|
257
258
|
}${additionalConfigs?.map((config) => `,{
|
|
258
259
|
${config}
|
package/dist/index.d.ts
CHANGED
|
@@ -333,11 +333,7 @@ interface RuleOptions {
|
|
|
333
333
|
*/
|
|
334
334
|
'format-lua/stylua'?: Linter.RuleEntry<FormatLuaStylua>
|
|
335
335
|
/**
|
|
336
|
-
*
|
|
337
|
-
*/
|
|
338
|
-
'format/dprint'?: Linter.RuleEntry<FormatDprint>
|
|
339
|
-
/**
|
|
340
|
-
* Use Prettier to format code
|
|
336
|
+
* @see https://github.com/prettier/eslint-plugin-prettier#options
|
|
341
337
|
*/
|
|
342
338
|
'format/prettier'?: Linter.RuleEntry<FormatPrettier>
|
|
343
339
|
/**
|
|
@@ -7321,17 +7317,16 @@ type FormatLuaStylua = []|[{
|
|
|
7321
7317
|
}
|
|
7322
7318
|
[k: string]: unknown | undefined
|
|
7323
7319
|
}]
|
|
7324
|
-
// ----- format/dprint -----
|
|
7325
|
-
type FormatDprint = []|[{
|
|
7326
|
-
language?: string
|
|
7327
|
-
languageOptions?: {
|
|
7328
|
-
[k: string]: unknown | undefined
|
|
7329
|
-
}
|
|
7330
|
-
[k: string]: unknown | undefined
|
|
7331
|
-
}]
|
|
7332
7320
|
// ----- format/prettier -----
|
|
7333
7321
|
type FormatPrettier = []|[{
|
|
7334
|
-
|
|
7322
|
+
[k: string]: unknown | undefined
|
|
7323
|
+
}]|[{
|
|
7324
|
+
[k: string]: unknown | undefined
|
|
7325
|
+
}, {
|
|
7326
|
+
usePrettierrc?: boolean
|
|
7327
|
+
fileInfoOptions?: {
|
|
7328
|
+
[k: string]: unknown | undefined
|
|
7329
|
+
}
|
|
7335
7330
|
[k: string]: unknown | undefined
|
|
7336
7331
|
}]
|
|
7337
7332
|
// ----- func-call-spacing -----
|
|
@@ -15463,7 +15458,7 @@ type Yoda = []|[("always" | "never")]|[("always" | "never"), {
|
|
|
15463
15458
|
onlyEquality?: boolean
|
|
15464
15459
|
}]
|
|
15465
15460
|
// Names of all the configs
|
|
15466
|
-
type ConfigNames = '
|
|
15461
|
+
type ConfigNames = 'isentinel/eslint/comments' | 'isentinel/formatters/setup' | 'isentinel/formatter/css' | 'isentinel/formatter/scss' | 'isentinel/formatter/less' | 'isentinel/formatter/html' | 'isentinel/formatter/markdown' | 'isentinel/formatter/graphql' | 'isentinel/ignores' | 'isentinel/imports/rules' | 'isentinel/import-sort' | 'isentinel/imports/game' | 'isentinel/javascript/setup' | 'isentinel/javascript/rules' | 'isentinel/jsdoc' | 'isentinel/jsonc/setup' | 'isentinel/jsonc/rules' | 'isentinel/markdown/setup' | 'isentinel/markdown/processor' | 'isentinel/markdown/parser' | 'isentinel/markdown/disables' | 'isentinel/package-json' | 'isentinel/perfectionist' | 'isentinel/pnpm/package-json' | 'isentinel/pnpm/pnpm-workspace-yaml' | 'isentinel/prettier' | 'isentinel/promise' | 'isentinel/react/setup' | 'isentinel/react/rules' | 'isentinel/react/type-aware-rules' | 'isentinel/roblox' | 'isentinel/shopify' | 'isentinel/sonarjs' | 'isentinel/sort-tsconfig' | 'isentinel/spelling' | 'isentinel/stylistic' | 'isentinel/test/setup' | 'isentinel/test/rules' | 'isentinel/typescript/setup' | 'isentinel/typescript/parser' | 'isentinel/typescript/type-aware-parser' | 'isentinel/typescript/rules' | 'isentinel/typescript/rules-type-aware' | 'isentinel/unicorn' | 'isentinel/yaml/setup' | 'isentinel/yaml/rules'
|
|
15467
15462
|
|
|
15468
15463
|
type Awaitable<T> = Promise<T> | T;
|
|
15469
15464
|
interface JsDocOptions {
|
|
@@ -15623,12 +15618,6 @@ interface OptionsFormatters {
|
|
|
15623
15618
|
* Currently only support Prettier.
|
|
15624
15619
|
*/
|
|
15625
15620
|
css?: "prettier" | boolean;
|
|
15626
|
-
/**
|
|
15627
|
-
* Custom options for dprint.
|
|
15628
|
-
*
|
|
15629
|
-
* By default it's controlled by our own config.
|
|
15630
|
-
*/
|
|
15631
|
-
dprintOptions?: boolean;
|
|
15632
15621
|
/** Enable formatting support for GraphQL. */
|
|
15633
15622
|
graphql?: "prettier" | boolean;
|
|
15634
15623
|
/**
|
|
@@ -15646,11 +15635,9 @@ interface OptionsFormatters {
|
|
|
15646
15635
|
/**
|
|
15647
15636
|
* Enable formatting support for Markdown.
|
|
15648
15637
|
*
|
|
15649
|
-
* Support both Prettier and dprint.
|
|
15650
|
-
*
|
|
15651
15638
|
* When set to `true`, it will use Prettier.
|
|
15652
15639
|
*/
|
|
15653
|
-
markdown?:
|
|
15640
|
+
markdown?: boolean;
|
|
15654
15641
|
/**
|
|
15655
15642
|
* Custom options for Prettier.
|
|
15656
15643
|
*
|
|
@@ -15725,6 +15712,16 @@ type ReactConfig = ESLintReactSettings & OptionsOverrides & {
|
|
|
15725
15712
|
interface Rules extends RuleOptions {
|
|
15726
15713
|
}
|
|
15727
15714
|
interface SpellCheckConfig {
|
|
15715
|
+
/**
|
|
15716
|
+
* Whether or not to run the spell checker in the editor.
|
|
15717
|
+
*
|
|
15718
|
+
* Some users have performance issues with the spell checker in the editor,
|
|
15719
|
+
* so this option allows you to disable it. It will still run in CI and in
|
|
15720
|
+
* git hooks / pre-commit checks.
|
|
15721
|
+
*
|
|
15722
|
+
* @default true
|
|
15723
|
+
*/
|
|
15724
|
+
inEditor?: boolean;
|
|
15728
15725
|
/** Defaults to `en-US`. */
|
|
15729
15726
|
language?: string;
|
|
15730
15727
|
}
|
|
@@ -15744,7 +15741,41 @@ declare function comments(options?: OptionsStylistic): Promise<Array<TypedFlatCo
|
|
|
15744
15741
|
|
|
15745
15742
|
declare function disables(): Promise<Array<TypedFlatConfigItem>>;
|
|
15746
15743
|
|
|
15747
|
-
|
|
15744
|
+
type PrettierRuleOptions = Pick<Partial<Options>, "parser"> & Options & Record<string, undefined | unknown>;
|
|
15745
|
+
declare function formatters(options?: OptionsFormatters | true, stylistic?: StylisticConfig): Promise<Array<TypedFlatConfigItem>>;
|
|
15746
|
+
declare const parserMd: {
|
|
15747
|
+
meta: {
|
|
15748
|
+
name: string;
|
|
15749
|
+
};
|
|
15750
|
+
parseForESLint: (code: string) => {
|
|
15751
|
+
ast: {
|
|
15752
|
+
body: never[];
|
|
15753
|
+
comments: never[];
|
|
15754
|
+
end: number;
|
|
15755
|
+
loc: {
|
|
15756
|
+
end: {
|
|
15757
|
+
column: number;
|
|
15758
|
+
line: number;
|
|
15759
|
+
};
|
|
15760
|
+
start: {
|
|
15761
|
+
column: number;
|
|
15762
|
+
line: number;
|
|
15763
|
+
};
|
|
15764
|
+
};
|
|
15765
|
+
mdCode: string;
|
|
15766
|
+
range: number[];
|
|
15767
|
+
start: number;
|
|
15768
|
+
tokens: never[];
|
|
15769
|
+
type: string;
|
|
15770
|
+
};
|
|
15771
|
+
scopeManager: null;
|
|
15772
|
+
services: {
|
|
15773
|
+
foo(): void;
|
|
15774
|
+
isPlain: boolean;
|
|
15775
|
+
};
|
|
15776
|
+
visitorKeys: null;
|
|
15777
|
+
};
|
|
15778
|
+
};
|
|
15748
15779
|
|
|
15749
15780
|
declare function ignores(): Promise<Array<TypedFlatConfigItem>>;
|
|
15750
15781
|
|
|
@@ -15796,7 +15827,7 @@ declare function sonarjs(options?: OptionsIsInEditor): Promise<Array<TypedFlatCo
|
|
|
15796
15827
|
*/
|
|
15797
15828
|
declare function sortTsconfig(): Array<TypedFlatConfigItem>;
|
|
15798
15829
|
|
|
15799
|
-
declare function spelling(options?: OptionsComponentExtensions & OptionsFiles & SpellCheckConfig): Promise<Array<TypedFlatConfigItem>>;
|
|
15830
|
+
declare function spelling(options?: OptionsComponentExtensions & OptionsFiles & OptionsIsInEditor & SpellCheckConfig): Promise<Array<TypedFlatConfigItem>>;
|
|
15800
15831
|
|
|
15801
15832
|
declare const StylisticConfigDefaults: StylisticConfig;
|
|
15802
15833
|
declare function stylistic(options?: StylisticConfig): Promise<Array<TypedFlatConfigItem>>;
|
|
@@ -15825,7 +15856,7 @@ declare const defaultPluginRenaming: {
|
|
|
15825
15856
|
* @param userConfigs - Additional user configuration items.
|
|
15826
15857
|
* @returns A promise that resolves to an array of user configuration items.
|
|
15827
15858
|
*/
|
|
15828
|
-
declare function
|
|
15859
|
+
declare function isentinel(options?: OptionsConfig & TypedFlatConfigItem, ...userConfigs: Array<Awaitable<Array<Linter.Config> | Array<TypedFlatConfigItem> | FlatConfigComposer<any, any> | TypedFlatConfigItem>>): FlatConfigComposer<TypedFlatConfigItem, ConfigNames>;
|
|
15829
15860
|
|
|
15830
15861
|
declare const GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
|
|
15831
15862
|
declare const GLOB_SRC = "**/*.?([cm])[jt]s?(x)";
|
|
@@ -15952,4 +15983,4 @@ declare function renameRules(rules: Record<string, any>, map: Record<string, str
|
|
|
15952
15983
|
declare function resolveSubOptions<K extends keyof OptionsConfig>(options: OptionsConfig, key: K): ResolvedOptions<OptionsConfig[K]>;
|
|
15953
15984
|
declare function toArray<T>(value: Array<T> | T): Array<T>;
|
|
15954
15985
|
|
|
15955
|
-
export { type Awaitable, type ConfigNames, GLOB_ALL_SRC, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_YAML, type JsDocOptions, type OptionsComponentExtensions, type OptionsConfig, type OptionsFiles, type OptionsFormatters, type OptionsHasTypeScript, type OptionsIsInEditor, type OptionsOverrides, type OptionsProjectType, type OptionsStylistic, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type OptionsTypescript, type PerfectionistConfig, type ReactConfig, type ResolvedOptions, type Rules, type SpellCheckConfig, type StylisticConfig, StylisticConfigDefaults, type TypedFlatConfigItem, combine, comments, createTsParser,
|
|
15986
|
+
export { type Awaitable, type ConfigNames, GLOB_ALL_SRC, GLOB_CSS, GLOB_DTS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LUA, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_YAML, type JsDocOptions, type OptionsComponentExtensions, type OptionsConfig, type OptionsFiles, type OptionsFormatters, type OptionsHasTypeScript, type OptionsIsInEditor, type OptionsOverrides, type OptionsProjectType, type OptionsStylistic, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type OptionsTypescript, type PerfectionistConfig, type PrettierRuleOptions, type ReactConfig, type ResolvedOptions, type Rules, type SpellCheckConfig, type StylisticConfig, StylisticConfigDefaults, type TypedFlatConfigItem, combine, comments, createTsParser, isentinel as default, defaultPluginRenaming, disables, ensurePackages, formatters, getOverrides, getTsConfig, ignores, imports, interopDefault, isInEditorEnvironment, isInGitHooksOrLintStaged, isentinel, javascript, jsdoc, jsonc, markdown, packageJson, parserMd, parserPlain, perfectionist, pnpm, prettier, promise, react, renamePluginInConfigs, renameRules, resolveSubOptions, roblox, shopify, sonarjs, sortTsconfig, spelling, stylistic, toArray, toml, typescript, unicorn, yaml };
|
package/dist/index.js
CHANGED
|
@@ -3157,7 +3157,7 @@ function createTsParser(options) {
|
|
|
3157
3157
|
...parserOptions
|
|
3158
3158
|
}
|
|
3159
3159
|
},
|
|
3160
|
-
name: `
|
|
3160
|
+
name: `isentinel/${configName}/${typeAware ? "type-aware-parser" : "parser"}`
|
|
3161
3161
|
};
|
|
3162
3162
|
}
|
|
3163
3163
|
async function ensurePackages(packages) {
|
|
@@ -3269,7 +3269,7 @@ async function comments(options = {}) {
|
|
|
3269
3269
|
]);
|
|
3270
3270
|
return [
|
|
3271
3271
|
{
|
|
3272
|
-
name: "
|
|
3272
|
+
name: "isentinel/eslint/comments",
|
|
3273
3273
|
plugins: {
|
|
3274
3274
|
"comment-length": pluginCommentLength,
|
|
3275
3275
|
"eslint-comments": pluginComments,
|
|
@@ -3313,7 +3313,7 @@ async function disables() {
|
|
|
3313
3313
|
return [
|
|
3314
3314
|
{
|
|
3315
3315
|
files: [`**/scripts/${GLOB_SRC}`],
|
|
3316
|
-
name: "
|
|
3316
|
+
name: "isentinel/disables/scripts",
|
|
3317
3317
|
rules: {
|
|
3318
3318
|
"antfu/no-top-level-await": "off",
|
|
3319
3319
|
"no-console": "off",
|
|
@@ -3322,7 +3322,7 @@ async function disables() {
|
|
|
3322
3322
|
},
|
|
3323
3323
|
{
|
|
3324
3324
|
files: [`**/cli/${GLOB_SRC}`, `**/cli.${GLOB_SRC_EXT}`],
|
|
3325
|
-
name: "
|
|
3325
|
+
name: "isentinel/disables/cli",
|
|
3326
3326
|
rules: {
|
|
3327
3327
|
"antfu/no-top-level-await": "off",
|
|
3328
3328
|
"no-console": "off"
|
|
@@ -3330,7 +3330,7 @@ async function disables() {
|
|
|
3330
3330
|
},
|
|
3331
3331
|
{
|
|
3332
3332
|
files: ["**/bin/**/*", `**/bin.${GLOB_SRC_EXT}`],
|
|
3333
|
-
name: "
|
|
3333
|
+
name: "isentinel/disables/bin",
|
|
3334
3334
|
rules: {
|
|
3335
3335
|
"antfu/no-import-dist": "off",
|
|
3336
3336
|
"antfu/no-import-node-modules-by-path": "off"
|
|
@@ -3338,7 +3338,7 @@ async function disables() {
|
|
|
3338
3338
|
},
|
|
3339
3339
|
{
|
|
3340
3340
|
files: [GLOB_DTS],
|
|
3341
|
-
name: "
|
|
3341
|
+
name: "isentinel/disables/dts",
|
|
3342
3342
|
rules: {
|
|
3343
3343
|
"eslint-comments/no-unlimited-disable": "off",
|
|
3344
3344
|
"import/no-default-export": "off",
|
|
@@ -3351,7 +3351,7 @@ async function disables() {
|
|
|
3351
3351
|
},
|
|
3352
3352
|
{
|
|
3353
3353
|
files: [...GLOB_TESTS],
|
|
3354
|
-
name: "
|
|
3354
|
+
name: "isentinel/disables/test",
|
|
3355
3355
|
rules: {
|
|
3356
3356
|
"antfu/no-top-level-await": "off",
|
|
3357
3357
|
"max-lines": "off",
|
|
@@ -3363,7 +3363,7 @@ async function disables() {
|
|
|
3363
3363
|
},
|
|
3364
3364
|
{
|
|
3365
3365
|
files: ["**/*.js", "**/*.cjs"],
|
|
3366
|
-
name: "
|
|
3366
|
+
name: "isentinel/disables/cjs",
|
|
3367
3367
|
rules: {
|
|
3368
3368
|
"ts/no-require-imports": "off"
|
|
3369
3369
|
}
|
|
@@ -3402,7 +3402,7 @@ async function stylistic(options = {}) {
|
|
|
3402
3402
|
return [
|
|
3403
3403
|
{
|
|
3404
3404
|
files: [GLOB_SRC],
|
|
3405
|
-
name: "
|
|
3405
|
+
name: "isentinel/stylistic",
|
|
3406
3406
|
plugins: {
|
|
3407
3407
|
"antfu": pluginAntfu,
|
|
3408
3408
|
"arrow-style": pluginArrowReturnStyle,
|
|
@@ -3467,16 +3467,14 @@ async function stylistic(options = {}) {
|
|
|
3467
3467
|
}
|
|
3468
3468
|
|
|
3469
3469
|
// src/configs/formatters.ts
|
|
3470
|
-
async function formatters(options = {}, stylistic2 = {}
|
|
3471
|
-
|
|
3472
|
-
|
|
3473
|
-
|
|
3474
|
-
|
|
3475
|
-
|
|
3476
|
-
|
|
3477
|
-
|
|
3478
|
-
};
|
|
3479
|
-
}
|
|
3470
|
+
async function formatters(options = {}, stylistic2 = {}) {
|
|
3471
|
+
const formattingOptions = {
|
|
3472
|
+
css: true,
|
|
3473
|
+
graphql: true,
|
|
3474
|
+
html: true,
|
|
3475
|
+
markdown: true,
|
|
3476
|
+
...options === true ? {} : options
|
|
3477
|
+
};
|
|
3480
3478
|
const { indent, quotes, semi } = {
|
|
3481
3479
|
...StylisticConfigDefaults,
|
|
3482
3480
|
...stylistic2
|
|
@@ -3491,20 +3489,12 @@ async function formatters(options = {}, stylistic2 = {}, markdownEnabled = true)
|
|
|
3491
3489
|
},
|
|
3492
3490
|
formattingOptions.prettierOptions ?? {}
|
|
3493
3491
|
);
|
|
3494
|
-
const
|
|
3495
|
-
{
|
|
3496
|
-
indentWidth: typeof indent === "number" ? indent : 2,
|
|
3497
|
-
quoteStyle: quotes === "single" ? "preferSingle" : "preferDouble",
|
|
3498
|
-
useTabs: indent === "tab"
|
|
3499
|
-
},
|
|
3500
|
-
formattingOptions.dprintOptions ?? {}
|
|
3501
|
-
);
|
|
3502
|
-
const pluginFormat = await interopDefault(import("eslint-plugin-format"));
|
|
3492
|
+
const pluginPrettier = await interopDefault(import("eslint-plugin-prettier"));
|
|
3503
3493
|
const configs = [
|
|
3504
3494
|
{
|
|
3505
|
-
name: "
|
|
3495
|
+
name: "isentinel/formatters/setup",
|
|
3506
3496
|
plugins: {
|
|
3507
|
-
format:
|
|
3497
|
+
format: pluginPrettier
|
|
3508
3498
|
}
|
|
3509
3499
|
}
|
|
3510
3500
|
];
|
|
@@ -3513,48 +3503,45 @@ async function formatters(options = {}, stylistic2 = {}, markdownEnabled = true)
|
|
|
3513
3503
|
{
|
|
3514
3504
|
files: [GLOB_CSS, GLOB_POSTCSS],
|
|
3515
3505
|
languageOptions: {
|
|
3516
|
-
parser:
|
|
3506
|
+
parser: parserPlain
|
|
3517
3507
|
},
|
|
3518
|
-
name: "
|
|
3508
|
+
name: "isentinel/formatter/css",
|
|
3519
3509
|
rules: {
|
|
3520
3510
|
"format/prettier": [
|
|
3521
3511
|
"error",
|
|
3522
|
-
{
|
|
3523
|
-
...prettierOptions,
|
|
3512
|
+
mergePrettierOptions(prettierOptions, {
|
|
3524
3513
|
parser: "css"
|
|
3525
|
-
}
|
|
3514
|
+
})
|
|
3526
3515
|
]
|
|
3527
3516
|
}
|
|
3528
3517
|
},
|
|
3529
3518
|
{
|
|
3530
3519
|
files: [GLOB_SCSS],
|
|
3531
3520
|
languageOptions: {
|
|
3532
|
-
parser:
|
|
3521
|
+
parser: parserPlain
|
|
3533
3522
|
},
|
|
3534
|
-
name: "
|
|
3523
|
+
name: "isentinel/formatter/scss",
|
|
3535
3524
|
rules: {
|
|
3536
3525
|
"format/prettier": [
|
|
3537
3526
|
"error",
|
|
3538
|
-
{
|
|
3539
|
-
...prettierOptions,
|
|
3527
|
+
mergePrettierOptions(prettierOptions, {
|
|
3540
3528
|
parser: "scss"
|
|
3541
|
-
}
|
|
3529
|
+
})
|
|
3542
3530
|
]
|
|
3543
3531
|
}
|
|
3544
3532
|
},
|
|
3545
3533
|
{
|
|
3546
3534
|
files: [GLOB_LESS],
|
|
3547
3535
|
languageOptions: {
|
|
3548
|
-
parser:
|
|
3536
|
+
parser: parserPlain
|
|
3549
3537
|
},
|
|
3550
|
-
name: "
|
|
3538
|
+
name: "isentinel/formatter/less",
|
|
3551
3539
|
rules: {
|
|
3552
3540
|
"format/prettier": [
|
|
3553
3541
|
"error",
|
|
3554
|
-
{
|
|
3555
|
-
...prettierOptions,
|
|
3542
|
+
mergePrettierOptions(prettierOptions, {
|
|
3556
3543
|
parser: "less"
|
|
3557
|
-
}
|
|
3544
|
+
})
|
|
3558
3545
|
]
|
|
3559
3546
|
}
|
|
3560
3547
|
}
|
|
@@ -3564,39 +3551,32 @@ async function formatters(options = {}, stylistic2 = {}, markdownEnabled = true)
|
|
|
3564
3551
|
configs.push({
|
|
3565
3552
|
files: ["**/*.html"],
|
|
3566
3553
|
languageOptions: {
|
|
3567
|
-
parser:
|
|
3554
|
+
parser: parserPlain
|
|
3568
3555
|
},
|
|
3569
|
-
name: "
|
|
3556
|
+
name: "isentinel/formatter/html",
|
|
3570
3557
|
rules: {
|
|
3571
3558
|
"format/prettier": [
|
|
3572
3559
|
"error",
|
|
3573
|
-
{
|
|
3574
|
-
...prettierOptions,
|
|
3560
|
+
mergePrettierOptions(prettierOptions, {
|
|
3575
3561
|
parser: "html"
|
|
3576
|
-
}
|
|
3562
|
+
})
|
|
3577
3563
|
]
|
|
3578
3564
|
}
|
|
3579
3565
|
});
|
|
3580
3566
|
}
|
|
3581
3567
|
if (formattingOptions.markdown) {
|
|
3582
|
-
const formatter = formattingOptions.markdown === true ? "prettier" : formattingOptions.markdown;
|
|
3583
3568
|
configs.push({
|
|
3584
|
-
files:
|
|
3585
|
-
|
|
3586
|
-
parser: pluginFormat.parserPlain
|
|
3587
|
-
},
|
|
3588
|
-
name: "style/formatter/markdown",
|
|
3569
|
+
files: [GLOB_MARKDOWN],
|
|
3570
|
+
name: "isentinel/formatter/markdown",
|
|
3589
3571
|
rules: {
|
|
3590
|
-
|
|
3572
|
+
"format/prettier": [
|
|
3591
3573
|
"error",
|
|
3592
|
-
|
|
3593
|
-
...prettierOptions,
|
|
3574
|
+
mergePrettierOptions(prettierOptions, {
|
|
3594
3575
|
embeddedLanguageFormatting: "off",
|
|
3595
|
-
parser: "markdown"
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
}
|
|
3576
|
+
parser: "markdown",
|
|
3577
|
+
printWidth: 80,
|
|
3578
|
+
proseWrap: "always"
|
|
3579
|
+
})
|
|
3600
3580
|
]
|
|
3601
3581
|
}
|
|
3602
3582
|
});
|
|
@@ -3605,22 +3585,60 @@ async function formatters(options = {}, stylistic2 = {}, markdownEnabled = true)
|
|
|
3605
3585
|
configs.push({
|
|
3606
3586
|
files: ["**/*.graphql"],
|
|
3607
3587
|
languageOptions: {
|
|
3608
|
-
parser:
|
|
3588
|
+
parser: parserPlain
|
|
3609
3589
|
},
|
|
3610
|
-
name: "
|
|
3590
|
+
name: "isentinel/formatter/graphql",
|
|
3611
3591
|
rules: {
|
|
3612
3592
|
"format/prettier": [
|
|
3613
3593
|
"error",
|
|
3614
|
-
{
|
|
3615
|
-
...prettierOptions,
|
|
3594
|
+
mergePrettierOptions(prettierOptions, {
|
|
3616
3595
|
parser: "graphql"
|
|
3617
|
-
}
|
|
3596
|
+
})
|
|
3618
3597
|
]
|
|
3619
3598
|
}
|
|
3620
3599
|
});
|
|
3621
3600
|
}
|
|
3622
3601
|
return configs;
|
|
3623
3602
|
}
|
|
3603
|
+
function mergePrettierOptions(options, overrides = {}) {
|
|
3604
|
+
return {
|
|
3605
|
+
...options,
|
|
3606
|
+
...overrides,
|
|
3607
|
+
plugins: [...overrides.plugins || [], ...options.plugins || []]
|
|
3608
|
+
};
|
|
3609
|
+
}
|
|
3610
|
+
var parserMd = {
|
|
3611
|
+
meta: {
|
|
3612
|
+
name: "parser-md"
|
|
3613
|
+
},
|
|
3614
|
+
parseForESLint: (code) => {
|
|
3615
|
+
console.log("parseForESLint", code);
|
|
3616
|
+
return {
|
|
3617
|
+
// ast: espree.parse(code, options),
|
|
3618
|
+
ast: {
|
|
3619
|
+
// ast is JS ast. We don't have JS, so this AST is for empty JS file
|
|
3620
|
+
body: [],
|
|
3621
|
+
comments: [],
|
|
3622
|
+
end: 0,
|
|
3623
|
+
loc: { end: { column: 0, line: 1 }, start: { column: 0, line: 1 } },
|
|
3624
|
+
mdCode: code,
|
|
3625
|
+
range: [0, 0],
|
|
3626
|
+
start: 0,
|
|
3627
|
+
tokens: [],
|
|
3628
|
+
// Used only by eslint-plugin-markdown-language
|
|
3629
|
+
type: "root"
|
|
3630
|
+
},
|
|
3631
|
+
scopeManager: null,
|
|
3632
|
+
services: {
|
|
3633
|
+
foo() {
|
|
3634
|
+
console.log("foo");
|
|
3635
|
+
},
|
|
3636
|
+
isPlain: true
|
|
3637
|
+
},
|
|
3638
|
+
visitorKeys: null
|
|
3639
|
+
};
|
|
3640
|
+
}
|
|
3641
|
+
};
|
|
3624
3642
|
|
|
3625
3643
|
// src/configs/ignores.ts
|
|
3626
3644
|
init_esm_shims();
|
|
@@ -3628,7 +3646,7 @@ async function ignores() {
|
|
|
3628
3646
|
return [
|
|
3629
3647
|
{
|
|
3630
3648
|
ignores: [...GLOB_EXCLUDE],
|
|
3631
|
-
name: "
|
|
3649
|
+
name: "isentinel/ignores"
|
|
3632
3650
|
}
|
|
3633
3651
|
];
|
|
3634
3652
|
}
|
|
@@ -3644,7 +3662,7 @@ async function imports(options = {}) {
|
|
|
3644
3662
|
]);
|
|
3645
3663
|
return [
|
|
3646
3664
|
{
|
|
3647
|
-
name: "
|
|
3665
|
+
name: "isentinel/imports/rules",
|
|
3648
3666
|
plugins: {
|
|
3649
3667
|
antfu: pluginAntfu,
|
|
3650
3668
|
import: pluginImport
|
|
@@ -3671,7 +3689,7 @@ async function imports(options = {}) {
|
|
|
3671
3689
|
sourceType: "script"
|
|
3672
3690
|
}
|
|
3673
3691
|
},
|
|
3674
|
-
name: "
|
|
3692
|
+
name: "isentinel/import-sort",
|
|
3675
3693
|
plugins: {
|
|
3676
3694
|
"simple-import-sort": pluginSimpleImportSort
|
|
3677
3695
|
},
|
|
@@ -3688,7 +3706,7 @@ async function imports(options = {}) {
|
|
|
3688
3706
|
...type === "game" ? [
|
|
3689
3707
|
{
|
|
3690
3708
|
files: [`src/${GLOB_SRC}`],
|
|
3691
|
-
name: "
|
|
3709
|
+
name: "isentinel/imports/game",
|
|
3692
3710
|
rules: {
|
|
3693
3711
|
"no-restricted-syntax": [
|
|
3694
3712
|
"error",
|
|
@@ -3735,10 +3753,10 @@ async function javascript(options = {}) {
|
|
|
3735
3753
|
linterOptions: {
|
|
3736
3754
|
reportUnusedDisableDirectives: true
|
|
3737
3755
|
},
|
|
3738
|
-
name: "
|
|
3756
|
+
name: "isentinel/javascript/setup"
|
|
3739
3757
|
},
|
|
3740
3758
|
{
|
|
3741
|
-
name: "
|
|
3759
|
+
name: "isentinel/javascript/rules",
|
|
3742
3760
|
plugins: {
|
|
3743
3761
|
antfu: pluginAntfu
|
|
3744
3762
|
},
|
|
@@ -3931,7 +3949,7 @@ async function jsdoc(options = {}) {
|
|
|
3931
3949
|
return [
|
|
3932
3950
|
{
|
|
3933
3951
|
files: [GLOB_SRC],
|
|
3934
|
-
name: "
|
|
3952
|
+
name: "isentinel/jsdoc",
|
|
3935
3953
|
plugins: {
|
|
3936
3954
|
jsdoc: await interopDefault(import("eslint-plugin-jsdoc"))
|
|
3937
3955
|
},
|
|
@@ -3997,7 +4015,7 @@ async function jsonc(options = {}) {
|
|
|
3997
4015
|
]);
|
|
3998
4016
|
return [
|
|
3999
4017
|
{
|
|
4000
|
-
name: "
|
|
4018
|
+
name: "isentinel/jsonc/setup",
|
|
4001
4019
|
plugins: {
|
|
4002
4020
|
jsonc: pluginJsonc
|
|
4003
4021
|
}
|
|
@@ -4007,7 +4025,7 @@ async function jsonc(options = {}) {
|
|
|
4007
4025
|
languageOptions: {
|
|
4008
4026
|
parser: parserJsonc
|
|
4009
4027
|
},
|
|
4010
|
-
name: "
|
|
4028
|
+
name: "isentinel/jsonc/rules",
|
|
4011
4029
|
rules: {
|
|
4012
4030
|
"jsonc/no-bigint-literals": "error",
|
|
4013
4031
|
"jsonc/no-binary-expression": "error",
|
|
@@ -4074,7 +4092,7 @@ async function markdown(options = {}) {
|
|
|
4074
4092
|
const markdownPlugin = await interopDefault(import("@eslint/markdown"));
|
|
4075
4093
|
return [
|
|
4076
4094
|
{
|
|
4077
|
-
name: "
|
|
4095
|
+
name: "isentinel/markdown/setup",
|
|
4078
4096
|
plugins: {
|
|
4079
4097
|
markdown: markdownPlugin
|
|
4080
4098
|
}
|
|
@@ -4082,7 +4100,7 @@ async function markdown(options = {}) {
|
|
|
4082
4100
|
{
|
|
4083
4101
|
files,
|
|
4084
4102
|
ignores: [GLOB_MARKDOWN_IN_MARKDOWN],
|
|
4085
|
-
name: "
|
|
4103
|
+
name: "isentinel/markdown/processor",
|
|
4086
4104
|
// `eslint-plugin-markdown` only creates virtual files for code blocks,
|
|
4087
4105
|
// but not the markdown file itself. We use `eslint-merge-processors` to
|
|
4088
4106
|
// add a pass-through processor for the markdown file itself.
|
|
@@ -4092,10 +4110,9 @@ async function markdown(options = {}) {
|
|
|
4092
4110
|
files,
|
|
4093
4111
|
language: "markdown/gfm",
|
|
4094
4112
|
languageOptions: {
|
|
4095
|
-
frontmatter: "yaml"
|
|
4096
|
-
parser: parserPlain
|
|
4113
|
+
frontmatter: "yaml"
|
|
4097
4114
|
},
|
|
4098
|
-
name: "
|
|
4115
|
+
name: "isentinel/markdown/parser",
|
|
4099
4116
|
rules: {
|
|
4100
4117
|
// Recommended rules - enabled for both game and package
|
|
4101
4118
|
"markdown/fenced-code-language": "error",
|
|
@@ -4157,7 +4174,7 @@ async function markdown(options = {}) {
|
|
|
4157
4174
|
}
|
|
4158
4175
|
}
|
|
4159
4176
|
},
|
|
4160
|
-
name: "
|
|
4177
|
+
name: "isentinel/markdown/disables",
|
|
4161
4178
|
rules: {
|
|
4162
4179
|
"antfu/no-top-level-await": "off",
|
|
4163
4180
|
"import/newline-after-import": "off",
|
|
@@ -4206,7 +4223,7 @@ async function packageJson(options = {}) {
|
|
|
4206
4223
|
languageOptions: {
|
|
4207
4224
|
parser: jsoncEslintParser
|
|
4208
4225
|
},
|
|
4209
|
-
name: "
|
|
4226
|
+
name: "isentinel/package-json",
|
|
4210
4227
|
plugins: {
|
|
4211
4228
|
"package-json": pluginPackageJson
|
|
4212
4229
|
},
|
|
@@ -4281,7 +4298,7 @@ async function perfectionist(config) {
|
|
|
4281
4298
|
return [
|
|
4282
4299
|
{
|
|
4283
4300
|
files: [GLOB_SRC],
|
|
4284
|
-
name: "
|
|
4301
|
+
name: "isentinel/perfectionist",
|
|
4285
4302
|
plugins: {
|
|
4286
4303
|
perfectionist: pluginPerfectionist
|
|
4287
4304
|
},
|
|
@@ -4387,7 +4404,7 @@ async function pnpm() {
|
|
|
4387
4404
|
languageOptions: {
|
|
4388
4405
|
parser: jsoncParser
|
|
4389
4406
|
},
|
|
4390
|
-
name: "
|
|
4407
|
+
name: "isentinel/pnpm/package-json",
|
|
4391
4408
|
plugins: {
|
|
4392
4409
|
pnpm: pluginPnpm
|
|
4393
4410
|
},
|
|
@@ -4407,7 +4424,7 @@ async function pnpm() {
|
|
|
4407
4424
|
languageOptions: {
|
|
4408
4425
|
parser: yamlParser
|
|
4409
4426
|
},
|
|
4410
|
-
name: "
|
|
4427
|
+
name: "isentinel/pnpm/pnpm-workspace-yaml",
|
|
4411
4428
|
plugins: {
|
|
4412
4429
|
pnpm: pluginPnpm
|
|
4413
4430
|
},
|
|
@@ -4441,7 +4458,7 @@ async function jsx() {
|
|
|
4441
4458
|
}
|
|
4442
4459
|
}
|
|
4443
4460
|
},
|
|
4444
|
-
name: "
|
|
4461
|
+
name: "isentinel/jsx/setup"
|
|
4445
4462
|
}
|
|
4446
4463
|
];
|
|
4447
4464
|
}
|
|
@@ -4452,7 +4469,12 @@ import { createRequire } from "module";
|
|
|
4452
4469
|
import { pathToFileURL } from "url";
|
|
4453
4470
|
var require2 = createRequire(import.meta.url);
|
|
4454
4471
|
async function spelling(options = {}) {
|
|
4455
|
-
const {
|
|
4472
|
+
const {
|
|
4473
|
+
componentExts: componentExtensions = [],
|
|
4474
|
+
inEditor = true,
|
|
4475
|
+
isInEditor = false,
|
|
4476
|
+
language = "en-US"
|
|
4477
|
+
} = options;
|
|
4456
4478
|
const files = options.files ?? [
|
|
4457
4479
|
GLOB_SRC,
|
|
4458
4480
|
...componentExtensions.map((extension) => `**/*.${extension}`)
|
|
@@ -4464,16 +4486,17 @@ async function spelling(options = {}) {
|
|
|
4464
4486
|
const urlRbxtsDictionary = pathToFileURL(rbxtsDictionary);
|
|
4465
4487
|
const urlRbxts = new URL("dict/rbxts.txt", urlRbxtsDictionary);
|
|
4466
4488
|
const pluginCspell = await interopDefault(import("@cspell/eslint-plugin"));
|
|
4489
|
+
const enabled = inEditor === false ? isInEditor : true;
|
|
4467
4490
|
return [
|
|
4468
4491
|
{
|
|
4469
4492
|
files,
|
|
4470
|
-
name: "
|
|
4493
|
+
name: "isentinel/spelling",
|
|
4471
4494
|
plugins: {
|
|
4472
4495
|
"@cspell": pluginCspell
|
|
4473
4496
|
},
|
|
4474
4497
|
rules: {
|
|
4475
4498
|
"@cspell/spellchecker": [
|
|
4476
|
-
"warn",
|
|
4499
|
+
enabled ? "warn" : "off",
|
|
4477
4500
|
{
|
|
4478
4501
|
autoFix: false,
|
|
4479
4502
|
checkComments: true,
|
|
@@ -4513,14 +4536,14 @@ async function test(options = {}) {
|
|
|
4513
4536
|
};
|
|
4514
4537
|
return [
|
|
4515
4538
|
{
|
|
4516
|
-
name: "
|
|
4539
|
+
name: "isentinel/test/setup",
|
|
4517
4540
|
plugins: {
|
|
4518
4541
|
test: pluginTest
|
|
4519
4542
|
}
|
|
4520
4543
|
},
|
|
4521
4544
|
{
|
|
4522
4545
|
files,
|
|
4523
|
-
name: "
|
|
4546
|
+
name: "isentinel/test/rules",
|
|
4524
4547
|
rules: {
|
|
4525
4548
|
// Jest
|
|
4526
4549
|
"test/consistent-test-it": "error",
|
|
@@ -4595,7 +4618,7 @@ var defaultPluginRenaming = {
|
|
|
4595
4618
|
"@typescript-eslint": "ts",
|
|
4596
4619
|
"yml": "yaml"
|
|
4597
4620
|
};
|
|
4598
|
-
function
|
|
4621
|
+
function isentinel(options = {}, ...userConfigs) {
|
|
4599
4622
|
const {
|
|
4600
4623
|
autoRenamePlugins = true,
|
|
4601
4624
|
componentExts: componentExtensions = [],
|
|
@@ -4708,7 +4731,8 @@ function style(options = {}, ...userConfigs) {
|
|
|
4708
4731
|
configs.push(
|
|
4709
4732
|
spelling({
|
|
4710
4733
|
...resolveSubOptions(options, "spellCheck"),
|
|
4711
|
-
componentExts: componentExtensions
|
|
4734
|
+
componentExts: componentExtensions,
|
|
4735
|
+
isInEditor
|
|
4712
4736
|
})
|
|
4713
4737
|
);
|
|
4714
4738
|
}
|
|
@@ -4755,8 +4779,7 @@ function style(options = {}, ...userConfigs) {
|
|
|
4755
4779
|
configs.push(
|
|
4756
4780
|
formatters(
|
|
4757
4781
|
options.formatters,
|
|
4758
|
-
typeof stylisticOptions === "boolean" ? {} : stylisticOptions
|
|
4759
|
-
options.markdown !== false
|
|
4782
|
+
typeof stylisticOptions === "boolean" ? {} : stylisticOptions
|
|
4760
4783
|
)
|
|
4761
4784
|
);
|
|
4762
4785
|
}
|
|
@@ -4816,9 +4839,9 @@ async function prettier(options) {
|
|
|
4816
4839
|
GLOB_SRC,
|
|
4817
4840
|
...componentExtensions.map((extension) => `**/*.${extension}`)
|
|
4818
4841
|
];
|
|
4819
|
-
const [configPrettier,
|
|
4842
|
+
const [configPrettier, pluginPrettier] = await Promise.all([
|
|
4820
4843
|
interopDefault(import("eslint-config-prettier/flat")),
|
|
4821
|
-
interopDefault(import("eslint-plugin-
|
|
4844
|
+
interopDefault(import("eslint-plugin-prettier"))
|
|
4822
4845
|
]);
|
|
4823
4846
|
const defaultPrettierOptions = {
|
|
4824
4847
|
arrowParens: "always",
|
|
@@ -4843,9 +4866,9 @@ async function prettier(options) {
|
|
|
4843
4866
|
return [
|
|
4844
4867
|
{
|
|
4845
4868
|
files,
|
|
4846
|
-
name: "
|
|
4869
|
+
name: "isentinel/prettier",
|
|
4847
4870
|
plugins: {
|
|
4848
|
-
format:
|
|
4871
|
+
format: pluginPrettier
|
|
4849
4872
|
},
|
|
4850
4873
|
rules: {
|
|
4851
4874
|
...rules,
|
|
@@ -4869,7 +4892,7 @@ async function promise() {
|
|
|
4869
4892
|
const pluginPromise = await interopDefault(import("eslint-plugin-promise"));
|
|
4870
4893
|
return [
|
|
4871
4894
|
{
|
|
4872
|
-
name: "
|
|
4895
|
+
name: "isentinel/promise",
|
|
4873
4896
|
plugins: {
|
|
4874
4897
|
promise: pluginPromise
|
|
4875
4898
|
},
|
|
@@ -4946,7 +4969,7 @@ async function react(options = {}) {
|
|
|
4946
4969
|
};
|
|
4947
4970
|
return [
|
|
4948
4971
|
{
|
|
4949
|
-
name: "
|
|
4972
|
+
name: "isentinel/react/setup",
|
|
4950
4973
|
plugins: {
|
|
4951
4974
|
"react": plugins["@eslint-react"],
|
|
4952
4975
|
"react-hooks-extra": plugins["@eslint-react/hooks-extra"],
|
|
@@ -4967,7 +4990,7 @@ async function react(options = {}) {
|
|
|
4967
4990
|
tsconfigPath,
|
|
4968
4991
|
typeAware: isTypeAware
|
|
4969
4992
|
}),
|
|
4970
|
-
name: "
|
|
4993
|
+
name: "isentinel/react/rules",
|
|
4971
4994
|
rules: {
|
|
4972
4995
|
// recommended rules from @eslint-react/hooks-extra
|
|
4973
4996
|
// react-lua does not seem to fully support the patterns that this rule enforces.
|
|
@@ -5072,7 +5095,7 @@ async function react(options = {}) {
|
|
|
5072
5095
|
{
|
|
5073
5096
|
files: filesTypeAware,
|
|
5074
5097
|
ignores: ignoresTypeAware,
|
|
5075
|
-
name: "
|
|
5098
|
+
name: "isentinel/react/type-aware-rules",
|
|
5076
5099
|
rules: {
|
|
5077
5100
|
"react/no-leaked-conditional-rendering": "warn",
|
|
5078
5101
|
"react/prefer-read-only-props": "error"
|
|
@@ -5128,7 +5151,7 @@ async function roblox(options = {}, formatLua = true) {
|
|
|
5128
5151
|
tsconfigPath,
|
|
5129
5152
|
typeAware: isTypeAware
|
|
5130
5153
|
}),
|
|
5131
|
-
name: "
|
|
5154
|
+
name: "isentinel/roblox",
|
|
5132
5155
|
plugins: {
|
|
5133
5156
|
roblox: pluginRobloxTs,
|
|
5134
5157
|
sentinel: pluginSentinel
|
|
@@ -5190,7 +5213,7 @@ async function shopify(options = {}) {
|
|
|
5190
5213
|
const eslintPluginShopify = await interopDefault(import("@shopify/eslint-plugin"));
|
|
5191
5214
|
return [
|
|
5192
5215
|
{
|
|
5193
|
-
name: "
|
|
5216
|
+
name: "isentinel/shopify",
|
|
5194
5217
|
plugins: {
|
|
5195
5218
|
shopify: eslintPluginShopify
|
|
5196
5219
|
},
|
|
@@ -5223,7 +5246,7 @@ async function sonarjs(options = {}) {
|
|
|
5223
5246
|
const pluginSonar = await interopDefault(import("eslint-plugin-sonarjs"));
|
|
5224
5247
|
return [
|
|
5225
5248
|
{
|
|
5226
|
-
name: "
|
|
5249
|
+
name: "isentinel/sonarjs",
|
|
5227
5250
|
plugins: {
|
|
5228
5251
|
sonar: pluginSonar
|
|
5229
5252
|
},
|
|
@@ -5293,7 +5316,7 @@ function sortTsconfig() {
|
|
|
5293
5316
|
return [
|
|
5294
5317
|
{
|
|
5295
5318
|
files: ["**/tsconfig.json", "**/tsconfig.*.json"],
|
|
5296
|
-
name: "
|
|
5319
|
+
name: "isentinel/sort-tsconfig",
|
|
5297
5320
|
rules: {
|
|
5298
5321
|
"jsonc/sort-keys": [
|
|
5299
5322
|
"error",
|
|
@@ -5428,7 +5451,7 @@ async function toml(options = {}) {
|
|
|
5428
5451
|
]);
|
|
5429
5452
|
return [
|
|
5430
5453
|
{
|
|
5431
|
-
name: "
|
|
5454
|
+
name: "isentinel/toml/setup",
|
|
5432
5455
|
plugins: {
|
|
5433
5456
|
toml: pluginToml
|
|
5434
5457
|
}
|
|
@@ -5438,9 +5461,9 @@ async function toml(options = {}) {
|
|
|
5438
5461
|
languageOptions: {
|
|
5439
5462
|
parser: parserToml
|
|
5440
5463
|
},
|
|
5441
|
-
name: "
|
|
5464
|
+
name: "isentinel/toml/rules",
|
|
5442
5465
|
rules: {
|
|
5443
|
-
"
|
|
5466
|
+
"isentinel/spaced-comment": "off",
|
|
5444
5467
|
"toml/comma-style": "error",
|
|
5445
5468
|
"toml/keys-order": "error",
|
|
5446
5469
|
"toml/no-space-dots": "error",
|
|
@@ -5587,7 +5610,7 @@ async function typescript(options = {}) {
|
|
|
5587
5610
|
{
|
|
5588
5611
|
// Install the plugins without globs, so they can be configured
|
|
5589
5612
|
// separately.
|
|
5590
|
-
name: "
|
|
5613
|
+
name: "isentinel/typescript/setup",
|
|
5591
5614
|
plugins: {
|
|
5592
5615
|
"antfu": pluginAntfu,
|
|
5593
5616
|
"better-max-params": pluginMaxParameters,
|
|
@@ -5599,7 +5622,7 @@ async function typescript(options = {}) {
|
|
|
5599
5622
|
...isTypeAware ? [makeParser(false, files), makeParser(true, filesTypeAware, ignoresTypeAware)] : [makeParser(false, files)],
|
|
5600
5623
|
{
|
|
5601
5624
|
files,
|
|
5602
|
-
name: "
|
|
5625
|
+
name: "isentinel/typescript/rules",
|
|
5603
5626
|
rules: {
|
|
5604
5627
|
...renameRules(pluginTs.configs["eslint-recommended"].overrides?.[0].rules ?? {}, {
|
|
5605
5628
|
"@typescript-eslint": "ts"
|
|
@@ -5779,7 +5802,7 @@ async function typescript(options = {}) {
|
|
|
5779
5802
|
{
|
|
5780
5803
|
files: filesTypeAware,
|
|
5781
5804
|
ignores: ignoresTypeAware,
|
|
5782
|
-
name: "
|
|
5805
|
+
name: "isentinel/typescript/rules-type-aware",
|
|
5783
5806
|
rules: {
|
|
5784
5807
|
...typeAwareRules,
|
|
5785
5808
|
...overridesTypeAware
|
|
@@ -5796,7 +5819,7 @@ async function unicorn(options = {}) {
|
|
|
5796
5819
|
const pluginUnicorn = await interopDefault(import("eslint-plugin-unicorn"));
|
|
5797
5820
|
return [
|
|
5798
5821
|
{
|
|
5799
|
-
name: "
|
|
5822
|
+
name: "isentinel/unicorn",
|
|
5800
5823
|
plugins: {
|
|
5801
5824
|
unicorn: pluginUnicorn
|
|
5802
5825
|
},
|
|
@@ -5904,7 +5927,7 @@ async function yaml(options = {}) {
|
|
|
5904
5927
|
]);
|
|
5905
5928
|
return [
|
|
5906
5929
|
{
|
|
5907
|
-
name: "
|
|
5930
|
+
name: "isentinel/yaml/setup",
|
|
5908
5931
|
plugins: {
|
|
5909
5932
|
yaml: pluginYaml
|
|
5910
5933
|
}
|
|
@@ -5914,9 +5937,9 @@ async function yaml(options = {}) {
|
|
|
5914
5937
|
languageOptions: {
|
|
5915
5938
|
parser: parserYaml
|
|
5916
5939
|
},
|
|
5917
|
-
name: "
|
|
5940
|
+
name: "isentinel/yaml/rules",
|
|
5918
5941
|
rules: {
|
|
5919
|
-
"
|
|
5942
|
+
"isentinel/spaced-comment": "off",
|
|
5920
5943
|
"yaml/block-mapping": "error",
|
|
5921
5944
|
"yaml/block-sequence": "error",
|
|
5922
5945
|
"yaml/file-extension": "error",
|
|
@@ -5988,7 +6011,7 @@ export {
|
|
|
5988
6011
|
combine,
|
|
5989
6012
|
comments,
|
|
5990
6013
|
createTsParser,
|
|
5991
|
-
|
|
6014
|
+
isentinel as default,
|
|
5992
6015
|
defaultPluginRenaming,
|
|
5993
6016
|
disables,
|
|
5994
6017
|
ensurePackages,
|
|
@@ -6000,11 +6023,13 @@ export {
|
|
|
6000
6023
|
interopDefault,
|
|
6001
6024
|
isInEditorEnvironment,
|
|
6002
6025
|
isInGitHooksOrLintStaged,
|
|
6026
|
+
isentinel,
|
|
6003
6027
|
javascript,
|
|
6004
6028
|
jsdoc,
|
|
6005
6029
|
jsonc,
|
|
6006
6030
|
markdown,
|
|
6007
6031
|
packageJson,
|
|
6032
|
+
parserMd,
|
|
6008
6033
|
parserPlain,
|
|
6009
6034
|
perfectionist,
|
|
6010
6035
|
pnpm,
|
|
@@ -6019,7 +6044,6 @@ export {
|
|
|
6019
6044
|
sonarjs,
|
|
6020
6045
|
sortTsconfig,
|
|
6021
6046
|
spelling,
|
|
6022
|
-
style,
|
|
6023
6047
|
stylistic,
|
|
6024
6048
|
toArray,
|
|
6025
6049
|
toml,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@isentinel/eslint-config",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "iSentinel's ESLint config",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint-config",
|
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
"roblox-ts",
|
|
9
9
|
"rbxts"
|
|
10
10
|
],
|
|
11
|
-
"homepage": "https://github.com/christopher-buss/
|
|
11
|
+
"homepage": "https://github.com/christopher-buss/eslint-config",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
|
-
"url": "git+https://github.com/christopher-buss/
|
|
14
|
+
"url": "git+https://github.com/christopher-buss/eslint-config.git"
|
|
15
15
|
},
|
|
16
16
|
"license": "MIT",
|
|
17
17
|
"author": "Christopher Buss <christopher.buss@pm.me> (https://github.com/christopher-buss)",
|
|
@@ -52,13 +52,13 @@
|
|
|
52
52
|
"eslint-config-flat-gitignore": "2.1.0",
|
|
53
53
|
"eslint-config-prettier": "10.1.8",
|
|
54
54
|
"eslint-flat-config-utils": "2.1.1",
|
|
55
|
+
"eslint-import-resolver-node": "0.3.9",
|
|
55
56
|
"eslint-merge-processors": "2.0.0",
|
|
56
57
|
"eslint-plugin-antfu": "3.1.1",
|
|
57
58
|
"eslint-plugin-arrow-return-style": "1.3.1",
|
|
58
59
|
"eslint-plugin-better-max-params": "0.0.1",
|
|
59
60
|
"eslint-plugin-comment-length": "2.2.2",
|
|
60
61
|
"eslint-plugin-de-morgan": "1.3.1",
|
|
61
|
-
"eslint-plugin-format": "1.0.1",
|
|
62
62
|
"eslint-plugin-format-lua": "1.0.1-beta.2",
|
|
63
63
|
"eslint-plugin-import-lite": "0.3.0",
|
|
64
64
|
"eslint-plugin-jsdoc": "52.0.2",
|
|
@@ -67,6 +67,7 @@
|
|
|
67
67
|
"eslint-plugin-package-json": "0.48.0",
|
|
68
68
|
"eslint-plugin-perfectionist": "4.15.0",
|
|
69
69
|
"eslint-plugin-pnpm": "1.1.0",
|
|
70
|
+
"eslint-plugin-prettier": "5.5.3",
|
|
70
71
|
"eslint-plugin-promise": "7.2.1",
|
|
71
72
|
"eslint-plugin-roblox-ts": "1.0.0",
|
|
72
73
|
"eslint-plugin-sentinel": "0.1.1",
|
|
@@ -110,12 +111,12 @@
|
|
|
110
111
|
"simple-git-hooks": "2.13.1",
|
|
111
112
|
"tsup": "8.5.0",
|
|
112
113
|
"typescript": "5.8.3",
|
|
113
|
-
"@isentinel/eslint-config": "
|
|
114
|
+
"@isentinel/eslint-config": "2.0.0"
|
|
114
115
|
},
|
|
115
116
|
"peerDependencies": {
|
|
116
117
|
"@eslint-react/eslint-plugin": "^1.45.0",
|
|
117
118
|
"eslint": "^9.10.0",
|
|
118
|
-
"eslint-plugin-jest": "^28.9.0",
|
|
119
|
+
"eslint-plugin-jest": "^28.9.0 || ^29.0.0",
|
|
119
120
|
"eslint-plugin-react-roblox-hooks": "^5.1.0-rbx.1"
|
|
120
121
|
},
|
|
121
122
|
"peerDependenciesMeta": {
|