@neralabs/rerail-pack-javascript 0.1.2 → 0.1.3
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 +12 -3
- package/licenses/eslint/UPSTREAM.md +28 -3
- package/licenses/eslint-plugin-unicorn/UPSTREAM.md +39 -2
- package/pack.json +43 -3
- package/package.json +1 -1
- package/rules/eslint-curly.json +1 -0
- package/rules/eslint-no-dupe-keys.json +1 -5
- package/rules/eslint-no-labels.json +1 -0
- package/rules/eslint-no-object-constructor.json +1 -0
- package/rules/eslint-no-sequences.json +1 -0
- package/rules/eslint-no-setter-return.json +1 -1
- package/rules/eslint-no-unsafe-negation.json +1 -1
- package/rules/eslint-no-unused-labels.json +1 -0
- package/rules/eslint-no-unused-private-class-members.json +83 -0
- package/rules/eslint-no-with.json +5 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Rerail rule pack: JavaScript
|
|
1
|
+
# Rerail rule pack: JavaScript and TypeScript (ESLint core)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
71 code rules for JavaScript and TypeScript source, ported from ESLint 10.11.0's core rules with their default options.
|
|
4
|
+
24 start on; 47 start off (`"on": false`) because `eslint:recommended` does not turn them on, so they are experimental.
|
|
5
5
|
Each shipped rule is scored against ESLint's own findings on ESLint's test cases, through the engine's production
|
|
6
6
|
workspace path, with every disagreement declared in `divergences.json` (none today).
|
|
7
7
|
|
|
@@ -17,12 +17,21 @@ It is checked by `npx vitest run test/engine/catalog/packs.test.ts -t "pack java
|
|
|
17
17
|
| `upstream/eslint/` | ESLint's copied test cases (`fixtures/`) and its recording (`fixtures.expected.json`) |
|
|
18
18
|
| `upstream/generate.mjs` | ESLint's recorder |
|
|
19
19
|
| `upstream/eslint-plugin-unicorn/` | eslint-plugin-unicorn's copied test cases, its recording and its recorder (`generate.mjs`) |
|
|
20
|
+
| `upstream/<tool>/gates.yaml`, `recording.lock`, `goldens.tsv` | The port readiness gates' manifest for the tool, the lock naming its recordings (`recording.json`, `corpus.json`, held in a GitHub release) and its goldens ([docs/port-readiness.md](../../docs/port-readiness.md)) |
|
|
20
21
|
| `candidates/rules/` | Ports of ESLint and eslint-plugin-unicorn rules still being evaluated: listed in `conformance.json`, scored and reported, never gated, never shipped |
|
|
21
22
|
| `licenses/<tool>/` | The tool's licence and `UPSTREAM.md`, listing every copied file |
|
|
22
23
|
|
|
23
24
|
The pack is recommended for a repository with JavaScript or TypeScript source files. Files under test, script and
|
|
24
25
|
fixture folders, test and spec files, and configuration files (`*.config.*`, `.*rc.*`) do not count.
|
|
25
26
|
|
|
27
|
+
This pack and the [TypeScript pack](../typescript/README.md) split ECMA files by type. The 21 core rules that
|
|
28
|
+
typescript-eslint 8.70.1 replaces with an extension rule, or turns off for TypeScript in its `eslint-recommended`
|
|
29
|
+
configuration (`no-redeclare`, `no-undef`, `no-unused-vars`, `no-dupe-keys` and others), run on `.js`, `.jsx`, `.mjs`
|
|
30
|
+
and `.cjs` files only, and are scored on ESLint's JavaScript test cases only (`fixtures` in `conformance.json`). On
|
|
31
|
+
TypeScript they report overloads, declaration merges and type names, and with both packs added a typescript-eslint
|
|
32
|
+
port would report the same violation again. `no-loss-of-precision` and `prefer-spread`, which typescript-eslint leaves
|
|
33
|
+
to the core rule on TypeScript, run on every ECMA file.
|
|
34
|
+
|
|
26
35
|
Re-recording runs offline against the pinned tool versions (the recorder's header lists them):
|
|
27
36
|
|
|
28
37
|
```sh
|
|
@@ -9,9 +9,13 @@ under the pack's licence expression, `Apache-2.0 AND MIT`, as `REUSE.toml` annot
|
|
|
9
9
|
Apache License 2.0 (the pack's `LICENSE`): the recorder `upstream/generate.mjs`, and the `*.expected.json` recordings
|
|
10
10
|
it writes by running ESLint.
|
|
11
11
|
|
|
12
|
-
Each copied file is the `code` of one of the rule's own `valid` or `invalid` RuleTester cases, verbatim, written
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
Each copied file is the `code` of one of the rule's own `valid` or `invalid` RuleTester cases, verbatim, written by
|
|
13
|
+
`upstream/generate.mjs`: cases with a custom parser or type information, and performance stress cases over 64 KiB, are
|
|
14
|
+
left out, and identical code in the same language is written once. The port readiness gates' recorder (`npm run port-readiness:record`)
|
|
15
|
+
reuses those files and writes every other case the gates read, the same verbatim `code`, as
|
|
16
|
+
`upstream/eslint/fixtures/<rule>/<sha256 prefix>.<ext>`. Its recording (`recording.json`, which
|
|
17
|
+
`upstream/eslint/recording.lock` names and a GitHub release holds) also holds the `code` of every RuleTester case of
|
|
18
|
+
ESLint's rule tests, verbatim, as the words `not-overfit` reads.
|
|
15
19
|
|
|
16
20
|
Paths are relative to the pack directory, `packs/javascript/`.
|
|
17
21
|
|
|
@@ -6971,6 +6975,10 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
6971
6975
|
| `upstream/eslint/fixtures/no-unexpected-multiline/052.js` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6972
6976
|
| `upstream/eslint/fixtures/no-unexpected-multiline/053.js` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6973
6977
|
| `upstream/eslint/fixtures/no-unexpected-multiline/054.js` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6978
|
+
| `upstream/eslint/fixtures/no-unexpected-multiline/09012da2448d.ts` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6979
|
+
| `upstream/eslint/fixtures/no-unexpected-multiline/16c56cd7a81e.ts` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6980
|
+
| `upstream/eslint/fixtures/no-unexpected-multiline/76ed1f1f9f52.ts` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6981
|
+
| `upstream/eslint/fixtures/no-unexpected-multiline/b2f0d5ba988b.ts` | `tests/lib/rules/no-unexpected-multiline.js` | derived |
|
|
6974
6982
|
| `upstream/eslint/fixtures/no-unneeded-ternary/001.js` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
6975
6983
|
| `upstream/eslint/fixtures/no-unneeded-ternary/002.js` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
6976
6984
|
| `upstream/eslint/fixtures/no-unneeded-ternary/003.js` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
@@ -7011,6 +7019,8 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
7011
7019
|
| `upstream/eslint/fixtures/no-unneeded-ternary/038.js` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
7012
7020
|
| `upstream/eslint/fixtures/no-unneeded-ternary/039.js` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
7013
7021
|
| `upstream/eslint/fixtures/no-unneeded-ternary/040.js` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
7022
|
+
| `upstream/eslint/fixtures/no-unneeded-ternary/3f6b9d3d2fc1.ts` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
7023
|
+
| `upstream/eslint/fixtures/no-unneeded-ternary/b4f090f8516b.ts` | `tests/lib/rules/no-unneeded-ternary.js` | derived |
|
|
7014
7024
|
| `upstream/eslint/fixtures/no-unsafe-finally/001.js` | `tests/lib/rules/no-unsafe-finally.js` | derived |
|
|
7015
7025
|
| `upstream/eslint/fixtures/no-unsafe-finally/002.js` | `tests/lib/rules/no-unsafe-finally.js` | derived |
|
|
7016
7026
|
| `upstream/eslint/fixtures/no-unsafe-finally/003.js` | `tests/lib/rules/no-unsafe-finally.js` | derived |
|
|
@@ -8107,6 +8117,7 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
8107
8117
|
| `upstream/eslint/fixtures/no-useless-constructor/055.ts` | `tests/lib/rules/no-useless-constructor.js` | derived |
|
|
8108
8118
|
| `upstream/eslint/fixtures/no-useless-constructor/056.ts` | `tests/lib/rules/no-useless-constructor.js` | derived |
|
|
8109
8119
|
| `upstream/eslint/fixtures/no-useless-constructor/057.ts` | `tests/lib/rules/no-useless-constructor.js` | derived |
|
|
8120
|
+
| `upstream/eslint/fixtures/no-useless-constructor/4239427f184a.ts` | `tests/lib/rules/no-useless-constructor.js` | derived |
|
|
8110
8121
|
| `upstream/eslint/fixtures/no-useless-rename/001.js` | `tests/lib/rules/no-useless-rename.js` | derived |
|
|
8111
8122
|
| `upstream/eslint/fixtures/no-useless-rename/002.js` | `tests/lib/rules/no-useless-rename.js` | derived |
|
|
8112
8123
|
| `upstream/eslint/fixtures/no-useless-rename/003.js` | `tests/lib/rules/no-useless-rename.js` | derived |
|
|
@@ -8335,6 +8346,7 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
8335
8346
|
| `upstream/eslint/fixtures/no-var/073.ts` | `tests/lib/rules/no-var.js` | derived |
|
|
8336
8347
|
| `upstream/eslint/fixtures/no-var/074.ts` | `tests/lib/rules/no-var.js` | derived |
|
|
8337
8348
|
| `upstream/eslint/fixtures/no-var/075.ts` | `tests/lib/rules/no-var.js` | derived |
|
|
8349
|
+
| `upstream/eslint/fixtures/no-var/b278601439f1.ts` | `tests/lib/rules/no-var.js` | derived |
|
|
8338
8350
|
| `upstream/eslint/fixtures/no-void/001.js` | `tests/lib/rules/no-void.js` | derived |
|
|
8339
8351
|
| `upstream/eslint/fixtures/no-void/002.js` | `tests/lib/rules/no-void.js` | derived |
|
|
8340
8352
|
| `upstream/eslint/fixtures/no-void/003.js` | `tests/lib/rules/no-void.js` | derived |
|
|
@@ -9131,6 +9143,9 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
9131
9143
|
| `upstream/eslint/fixtures/prefer-exponentiation-operator/190.js` | `tests/lib/rules/prefer-exponentiation-operator.js` | derived |
|
|
9132
9144
|
| `upstream/eslint/fixtures/prefer-exponentiation-operator/191.js` | `tests/lib/rules/prefer-exponentiation-operator.js` | derived |
|
|
9133
9145
|
| `upstream/eslint/fixtures/prefer-exponentiation-operator/192.js` | `tests/lib/rules/prefer-exponentiation-operator.js` | derived |
|
|
9146
|
+
| `upstream/eslint/fixtures/prefer-exponentiation-operator/09e6366eecac.ts` | `tests/lib/rules/prefer-exponentiation-operator.js` | derived |
|
|
9147
|
+
| `upstream/eslint/fixtures/prefer-exponentiation-operator/608ea709a0a0.ts` | `tests/lib/rules/prefer-exponentiation-operator.js` | derived |
|
|
9148
|
+
| `upstream/eslint/fixtures/prefer-exponentiation-operator/f3ae74ea3df1.ts` | `tests/lib/rules/prefer-exponentiation-operator.js` | derived |
|
|
9134
9149
|
| `upstream/eslint/fixtures/prefer-numeric-literals/001.js` | `tests/lib/rules/prefer-numeric-literals.js` | derived |
|
|
9135
9150
|
| `upstream/eslint/fixtures/prefer-numeric-literals/002.js` | `tests/lib/rules/prefer-numeric-literals.js` | derived |
|
|
9136
9151
|
| `upstream/eslint/fixtures/prefer-numeric-literals/003.js` | `tests/lib/rules/prefer-numeric-literals.js` | derived |
|
|
@@ -9436,6 +9451,7 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
9436
9451
|
| `upstream/eslint/fixtures/prefer-template/085.js` | `tests/lib/rules/prefer-template.js` | derived |
|
|
9437
9452
|
| `upstream/eslint/fixtures/prefer-template/086.js` | `tests/lib/rules/prefer-template.js` | derived |
|
|
9438
9453
|
| `upstream/eslint/fixtures/prefer-template/087.js` | `tests/lib/rules/prefer-template.js` | derived |
|
|
9454
|
+
| `upstream/eslint/fixtures/prefer-template/d6a8df525147.js` | `tests/lib/rules/prefer-template.js` | derived |
|
|
9439
9455
|
| `upstream/eslint/fixtures/radix/001.js` | `tests/lib/rules/radix.js` | derived |
|
|
9440
9456
|
| `upstream/eslint/fixtures/radix/002.js` | `tests/lib/rules/radix.js` | derived |
|
|
9441
9457
|
| `upstream/eslint/fixtures/radix/003.js` | `tests/lib/rules/radix.js` | derived |
|
|
@@ -9553,6 +9569,8 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
9553
9569
|
| `upstream/eslint/fixtures/require-await/037.js` | `tests/lib/rules/require-await.js` | derived |
|
|
9554
9570
|
| `upstream/eslint/fixtures/require-await/038.js` | `tests/lib/rules/require-await.js` | derived |
|
|
9555
9571
|
| `upstream/eslint/fixtures/require-await/039.js` | `tests/lib/rules/require-await.js` | derived |
|
|
9572
|
+
| `upstream/eslint/fixtures/require-await/5f9c9ff60882.ts` | `tests/lib/rules/require-await.js` | derived |
|
|
9573
|
+
| `upstream/eslint/fixtures/require-await/d7f53e0b28cf.ts` | `tests/lib/rules/require-await.js` | derived |
|
|
9556
9574
|
| `upstream/eslint/fixtures/require-yield/001.js` | `tests/lib/rules/require-yield.js` | derived |
|
|
9557
9575
|
| `upstream/eslint/fixtures/require-yield/002.js` | `tests/lib/rules/require-yield.js` | derived |
|
|
9558
9576
|
| `upstream/eslint/fixtures/require-yield/003.js` | `tests/lib/rules/require-yield.js` | derived |
|
|
@@ -10361,3 +10379,10 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
10361
10379
|
| `upstream/eslint/fixtures/yoda/144.js` | `tests/lib/rules/yoda.js` | derived |
|
|
10362
10380
|
| `upstream/eslint/fixtures/yoda/145.js` | `tests/lib/rules/yoda.js` | derived |
|
|
10363
10381
|
| `upstream/eslint/fixtures/yoda/146.js` | `tests/lib/rules/yoda.js` | derived |
|
|
10382
|
+
|
|
10383
|
+
> `recording.json` is a port readiness recording, and no file of this pack, so it is recorded here rather than in the
|
|
10384
|
+
> table above: the tool-pack's `recording.lock` names it and a GitHub release holds the bytes (docs/port-readiness.md).
|
|
10385
|
+
> It carries excerpts of this upstream's tests (`tests/lib/rules/*.js`: the `code` of each RuleTester case),
|
|
10386
|
+
> redistributed under the licence above, together with Rerail's Apache-2.0; the LICENSE beside this file is this
|
|
10387
|
+
> upstream's own, at the pinned commit.
|
|
10388
|
+
|
|
@@ -7,8 +7,12 @@ The files listed below contain material copied from eslint-plugin-unicorn and re
|
|
|
7
7
|
licence expression, `Apache-2.0 AND MIT`, as `REUSE.toml` annotates them. The recorder `upstream/eslint-plugin-unicorn/generate.mjs` and
|
|
8
8
|
the `fixtures.expected.json` recording it writes by running the plugin are Rerail's, under the Apache License 2.0 (the pack's `LICENSE`).
|
|
9
9
|
|
|
10
|
-
Each copied file is the `code` of one of the rule's own `valid` or `invalid` test cases, verbatim, written by the
|
|
11
|
-
cases for another parser or file type are left out, and identical cases are written once.
|
|
10
|
+
Each copied file is the `code` of one of the rule's own `valid` or `invalid` test cases, verbatim, written by the
|
|
11
|
+
recorder: cases for another parser or file type are left out, and identical cases are written once. The port readiness gates'
|
|
12
|
+
recorder (`npm run port-readiness:record`) reuses those files and writes every other case the gates read, the same verbatim
|
|
13
|
+
`code`, as `upstream/eslint-plugin-unicorn/fixtures/<rule>/<sha256 prefix>.<ext>`. Its recording (`recording.json`,
|
|
14
|
+
which `upstream/eslint-plugin-unicorn/recording.lock` names and a GitHub release holds) also holds the `code` of every
|
|
15
|
+
test case of the plugin's rule tests, verbatim, as the words `not-overfit` reads.
|
|
12
16
|
|
|
13
17
|
Paths are relative to the pack directory, `packs/javascript/`.
|
|
14
18
|
|
|
@@ -113,6 +117,7 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
113
117
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/097/test/foo/fooBar.testUtils.js` | `test/filename-case.js` | derived |
|
|
114
118
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/098/test/foo/.testUtils.js` | `test/filename-case.js` | derived |
|
|
115
119
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/099/test/foo/foo_bar.Test.js` | `test/filename-case.js` | derived |
|
|
120
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/0bc018802648.js` | `test/filename-case.js` | derived |
|
|
116
121
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/100/test/foo/foo_bar.Test_Utils.js` | `test/filename-case.js` | derived |
|
|
117
122
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/101/test/foo/.Test_Utils.js` | `test/filename-case.js` | derived |
|
|
118
123
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/102/test/foo/foo-bar.Test.js` | `test/filename-case.js` | derived |
|
|
@@ -124,6 +129,7 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
124
129
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/108/src/foo-bar/file.js` | `test/filename-case.js` | derived |
|
|
125
130
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/109/src/$userId/page.js` | `test/filename-case.js` | derived |
|
|
126
131
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/110/src/FooBar/file.js` | `test/filename-case.js` | derived |
|
|
132
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/110d8c7ba808.vue` | `test/filename-case.js` | derived |
|
|
127
133
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/111/src/meta/BadName.js` | `test/filename-case.js` | derived |
|
|
128
134
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/112/work/Src/fooBar.js` | `test/filename-case.js` | derived |
|
|
129
135
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/113/src/foo/foo_bar.js` | `test/filename-case.js` | derived |
|
|
@@ -133,6 +139,7 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
133
139
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/117/src/foo/Article.ts` | `test/filename-case.js` | derived |
|
|
134
140
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/118/Test/Foo/fooBar.js` | `test/filename-case.js` | derived |
|
|
135
141
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/119/Test/Foo/foo_bar.test.js` | `test/filename-case.js` | derived |
|
|
142
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/11d9c8e15dc7.vue` | `test/filename-case.js` | derived |
|
|
136
143
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/120/Test/Foo/foo-bar.test-utils.js` | `test/filename-case.js` | derived |
|
|
137
144
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/121/Src/Foo/PageFAQ.js` | `test/filename-case.js` | derived |
|
|
138
145
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/122/Src/Foo/FAQ-Page.js` | `test/filename-case.js` | derived |
|
|
@@ -172,6 +179,29 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
172
179
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/156/src/foo-js/.spec.js` | `test/filename-case.js` | derived |
|
|
173
180
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/157/foo.SPEC.js` | `test/filename-case.js` | derived |
|
|
174
181
|
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/158/.SPEC.js` | `test/filename-case.js` | derived |
|
|
182
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/2d26e87a0a23.js` | `test/filename-case.js` | derived |
|
|
183
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/33f30d1bf742.js` | `test/filename-case.js` | derived |
|
|
184
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/39b635d302fe.vue` | `test/filename-case.js` | derived |
|
|
185
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/3e9dd61f8fa5.vue` | `test/filename-case.js` | derived |
|
|
186
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/437dfa0cae52.js` | `test/filename-case.js` | derived |
|
|
187
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/450fdf6100cf.js` | `test/filename-case.js` | derived |
|
|
188
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/4ebfa70f8a0b.vue` | `test/filename-case.js` | derived |
|
|
189
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/53fba3fcf7dd.vue` | `test/filename-case.js` | derived |
|
|
190
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/602748334ecf.vue` | `test/filename-case.js` | derived |
|
|
191
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/603fe13a0b05` | `test/filename-case.js` | derived |
|
|
192
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/60588a1a1ca8.mjs` | `test/filename-case.js` | derived |
|
|
193
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/72c9766d8470.js` | `test/filename-case.js` | derived |
|
|
194
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/8bb73935d039.js` | `test/filename-case.js` | derived |
|
|
195
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/8c46ea638bb7.tsx` | `test/filename-case.js` | derived |
|
|
196
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/8e49ed877feb.vue` | `test/filename-case.js` | derived |
|
|
197
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/97a4a593102b` | `test/filename-case.js` | derived |
|
|
198
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/a7e0a6633b8a.js` | `test/filename-case.js` | derived |
|
|
199
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/b261ff7fac00.js` | `test/filename-case.js` | derived |
|
|
200
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/b66dfd152690.js` | `test/filename-case.js` | derived |
|
|
201
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/b69aa47eecea.vue` | `test/filename-case.js` | derived |
|
|
202
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/bb9f2aa9a984.js` | `test/filename-case.js` | derived |
|
|
203
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/bf6345e9bb57.js` | `test/filename-case.js` | derived |
|
|
204
|
+
| `upstream/eslint-plugin-unicorn/fixtures/filename-case/c125bff6c234.js` | `test/filename-case.js` | derived |
|
|
175
205
|
| `upstream/eslint-plugin-unicorn/fixtures/no-null/001.js` | `test/no-null.js` | derived |
|
|
176
206
|
| `upstream/eslint-plugin-unicorn/fixtures/no-null/002.js` | `test/no-null.js` | derived |
|
|
177
207
|
| `upstream/eslint-plugin-unicorn/fixtures/no-null/003.js` | `test/no-null.js` | derived |
|
|
@@ -295,3 +325,10 @@ Paths are relative to the pack directory, `packs/javascript/`.
|
|
|
295
325
|
| `upstream/eslint-plugin-unicorn/fixtures/prefer-node-protocol/063.ts` | `test/prefer-node-protocol.js` | derived |
|
|
296
326
|
| `upstream/eslint-plugin-unicorn/fixtures/prefer-node-protocol/064.ts` | `test/prefer-node-protocol.js` | derived |
|
|
297
327
|
| `upstream/eslint-plugin-unicorn/fixtures/prefer-node-protocol/065.ts` | `test/prefer-node-protocol.js` | derived |
|
|
328
|
+
|
|
329
|
+
> `recording.json` is a port readiness recording, and no file of this pack, so it is recorded here rather than in the
|
|
330
|
+
> table above: the tool-pack's `recording.lock` names it and a GitHub release holds the bytes (docs/port-readiness.md).
|
|
331
|
+
> It carries excerpts of this upstream's tests (`test/*.js`: the `code` of each RuleTester case), redistributed under
|
|
332
|
+
> the licence above, together with Rerail's Apache-2.0; the LICENSE beside this file is this upstream's own, at the
|
|
333
|
+
> pinned commit.
|
|
334
|
+
|
package/pack.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "rerail.rule-pack/v1",
|
|
3
3
|
"id": "javascript",
|
|
4
|
-
"name": "JavaScript",
|
|
4
|
+
"name": "JavaScript and TypeScript (ESLint core)",
|
|
5
5
|
"category": "language",
|
|
6
|
-
"covers": "
|
|
7
|
-
"reason": "matches JavaScript",
|
|
6
|
+
"covers": "71 ESLint core rules ported to Rerail, 24 of them on and 47 off until turned on, each scored against ESLint's own recorded findings on its test cases.",
|
|
7
|
+
"reason": "matches JavaScript or TypeScript source",
|
|
8
8
|
"match": {
|
|
9
9
|
"any": [
|
|
10
10
|
{
|
|
@@ -76,6 +76,13 @@
|
|
|
76
76
|
"group": "ESLint",
|
|
77
77
|
"on": false
|
|
78
78
|
},
|
|
79
|
+
{
|
|
80
|
+
"id": "eslint-curly",
|
|
81
|
+
"document": "rules/eslint-curly.json",
|
|
82
|
+
"title": "ESLint curly: Enforce consistent brace style for all control statements",
|
|
83
|
+
"group": "ESLint",
|
|
84
|
+
"on": false
|
|
85
|
+
},
|
|
79
86
|
{
|
|
80
87
|
"id": "eslint-default-case",
|
|
81
88
|
"document": "rules/eslint-default-case.json",
|
|
@@ -234,6 +241,13 @@
|
|
|
234
241
|
"group": "ESLint",
|
|
235
242
|
"on": false
|
|
236
243
|
},
|
|
244
|
+
{
|
|
245
|
+
"id": "eslint-no-labels",
|
|
246
|
+
"document": "rules/eslint-no-labels.json",
|
|
247
|
+
"title": "ESLint no-labels: Disallow labeled statements",
|
|
248
|
+
"group": "ESLint",
|
|
249
|
+
"on": false
|
|
250
|
+
},
|
|
237
251
|
{
|
|
238
252
|
"id": "eslint-no-loss-of-precision",
|
|
239
253
|
"document": "rules/eslint-no-loss-of-precision.json",
|
|
@@ -281,6 +295,13 @@
|
|
|
281
295
|
"title": "ESLint no-nonoctal-decimal-escape: Disallow \\8 and \\9 escape sequences in string literals",
|
|
282
296
|
"group": "ESLint"
|
|
283
297
|
},
|
|
298
|
+
{
|
|
299
|
+
"id": "eslint-no-object-constructor",
|
|
300
|
+
"document": "rules/eslint-no-object-constructor.json",
|
|
301
|
+
"title": "ESLint no-object-constructor: Disallow calls to the Object constructor without an argument",
|
|
302
|
+
"group": "ESLint",
|
|
303
|
+
"on": false
|
|
304
|
+
},
|
|
284
305
|
{
|
|
285
306
|
"id": "eslint-no-octal",
|
|
286
307
|
"document": "rules/eslint-no-octal.json",
|
|
@@ -335,6 +356,13 @@
|
|
|
335
356
|
"group": "ESLint",
|
|
336
357
|
"on": false
|
|
337
358
|
},
|
|
359
|
+
{
|
|
360
|
+
"id": "eslint-no-sequences",
|
|
361
|
+
"document": "rules/eslint-no-sequences.json",
|
|
362
|
+
"title": "ESLint no-sequences: Disallow comma operators",
|
|
363
|
+
"group": "ESLint",
|
|
364
|
+
"on": false
|
|
365
|
+
},
|
|
338
366
|
{
|
|
339
367
|
"id": "eslint-no-setter-return",
|
|
340
368
|
"document": "rules/eslint-no-setter-return.json",
|
|
@@ -380,6 +408,18 @@
|
|
|
380
408
|
"title": "ESLint no-unsafe-negation: Disallow negating the left operand of relational operators",
|
|
381
409
|
"group": "ESLint"
|
|
382
410
|
},
|
|
411
|
+
{
|
|
412
|
+
"id": "eslint-no-unused-labels",
|
|
413
|
+
"document": "rules/eslint-no-unused-labels.json",
|
|
414
|
+
"title": "ESLint no-unused-labels: Disallow unused labels",
|
|
415
|
+
"group": "ESLint"
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"id": "eslint-no-unused-private-class-members",
|
|
419
|
+
"document": "rules/eslint-no-unused-private-class-members.json",
|
|
420
|
+
"title": "ESLint no-unused-private-class-members: Disallow unused private class members",
|
|
421
|
+
"group": "ESLint"
|
|
422
|
+
},
|
|
383
423
|
{
|
|
384
424
|
"id": "eslint-no-useless-call",
|
|
385
425
|
"document": "rules/eslint-no-useless-call.json",
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-curly","revision":2,"mode":"steer","description":"Port of ESLint's `curly` rule (default options: all). Every if/else/loop body must be a block; fixes by wrapping the body. Options are declared in the `options` define (the rule's defaults); a variant is a config patch.","scope":{"include":["**/*"],"exclude":[]},"clauses":[{"id":"options","define":{"options":{"option":{"type":"string","nullable":true,"default":null},"option2":{"type":"string","nullable":true,"default":null}}}},{"id":"shared","define":{"language":"typescript","utils":{"before-else":{"any":[{"precedes":{"kind":"else_clause"}},{"inside":{"any":[{"kind":"for_statement"},{"kind":"for_in_statement"},{"kind":"while_statement"},{"kind":"labeled_statement"},{"kind":"with_statement"}],"stopBy":"neighbor","matches":"before-else"}},{"inside":{"kind":"else_clause","stopBy":"neighbor","inside":{"kind":"if_statement","stopBy":"neighbor","matches":"before-else"}}}]},"braces-necessary":{"all":[{"matches":"one-statement-block"},{"any":[{"has":{"stopBy":"neighbor","any":[{"any":[{"kind":"lexical_declaration"},{"kind":"function_declaration"},{"kind":"generator_function_declaration"},{"kind":"class_declaration"}]},{"matches":"using-declaration"}]}},{"all":[{"has":{"stopBy":"neighbor","matches":"unsafe-if"}},{"matches":"before-else"}]}]}]},"chain-requires-block":{"kind":"if_statement","any":[{"has":{"stopBy":"neighbor","all":[{"matches":"if-body"},{"matches":"requires-block"}]}},{"has":{"stopBy":"neighbor","kind":"else_clause","has":{"stopBy":"neighbor","any":[{"all":[{"matches":"else-body"},{"matches":"requires-block"}]},{"matches":"chain-requires-block"}]}}}]},"chain-top-requires-block":{"kind":"if_statement","any":[{"all":[{"not":{"matches":"r15"}},{"matches":"chain-requires-block"}]},{"inside":{"stopBy":"neighbor","matches":"r10"}}]},"collapsed":{"any":[{"kind":"empty_statement"},{"all":[{"layout":{"before":{"to":"token","breaks":{"eq":0}}}},{"matches":"one-liner"}]}]},"do-body":{"all":[{"inside":{"kind":"do_statement","stopBy":"neighbor"}},{"follows":{"stopBy":{"not":{"kind":"comment"}},"all":[{"not":{"kind":"comment"}},{"regex":"^do$"}]}}]},"else-body":{"all":[{"not":{"kind":"comment"}},{"matches":"r15"},{"follows":{"stopBy":{"not":{"kind":"comment"}},"all":[{"not":{"kind":"comment"}},{"regex":"^else$"}]}},{"not":{"kind":"if_statement"}}]},"for-body":{"all":[{"inside":{"kind":"for_statement","stopBy":"neighbor"}},{"matches":"r7"}]},"for-in-body":{"all":[{"inside":{"kind":"for_in_statement","stopBy":"neighbor","has":{"regex":"^in$"}}},{"matches":"r7"}]},"for-of-body":{"all":[{"inside":{"kind":"for_in_statement","stopBy":"neighbor","has":{"regex":"^of$"}}},{"matches":"r7"}]},"hazard-next":{"any":[{"precedes":{"stopBy":{"not":{"kind":"comment"}},"all":[{"not":{"kind":"comment"}},{"regex":"^[(\\[/`+\\-]"}]}},{"not":{"matches":"r8"},"inside":{"stopBy":"neighbor","matches":"hazard-next"}}]},"if-body":{"all":[{"inside":{"kind":"if_statement","stopBy":"neighbor"}},{"matches":"r9"}]},"in-chain-requiring-block":{"inside":{"stopBy":"neighbor","any":[{"matches":"r12"},{"matches":"r10"}]}},"one-liner":{"any":[{"layout":{"span":{"eq":0}}},{"all":[{"has":{"regex":"^;$","not":{"matches":"r8"}}},{"not":{"has":{"all":[{"not":{"kind":"comment"}},{"not":{"regex":"^;$"}},{"layout":{"span":{"min":1}}}]}}},{"not":{"has":{"all":[{"not":{"kind":"comment"}},{"not":{"regex":"^;$"}},{"follows":{"stopBy":"end","not":{"kind":"comment"}}},{"matches":"r13"}]}}}]}]},"one-statement-block":{"kind":"statement_block","has":{"stopBy":"neighbor","matches":"statement"},"not":{"has":{"stopBy":"neighbor","all":[{"matches":"statement"},{"precedes":{"stopBy":"end","matches":"statement"}}]}}},"requires-block":{"all":[{"kind":"statement_block"},{"any":[{"not":{"matches":"one-statement-block"}},{"matches":"braces-necessary"}]}]},"statement":{"all":[{"not":{"kind":"comment"}},{"not":{"regex":"^[{}]$"}}]},"unsafe-if":{"any":[{"kind":"if_statement","not":{"has":{"kind":"else_clause"}}},{"kind":"if_statement","has":{"kind":"else_clause","has":{"matches":"unsafe-if"}}},{"any":[{"kind":"for_statement"},{"kind":"for_in_statement"},{"kind":"while_statement"},{"kind":"labeled_statement"},{"kind":"with_statement"}],"has":{"matches":"unsafe-if"}}]},"using-declaration":{"kind":"expression_statement","has":{"stopBy":"neighbor","any":[{"matches":"r11"},{"kind":"await_expression","has":{"stopBy":"neighbor","matches":"r11"}}]}},"while-body":{"all":[{"inside":{"kind":"while_statement","stopBy":"neighbor"}},{"matches":"r9"}]},"r1":{"all":[{"matches":"one-statement-block"},{"any":[{"has":{"kind":"comment","precedes":{"matches":"statement","stopBy":"end"},"stopBy":"neighbor"}},{"has":{"all":[{"matches":"statement"},{"not":{"matches":"one-liner"}}],"stopBy":"neighbor"}}]}]},"r2":{"any":[{"regex":"(?s);(?:\\s|//[^\\n]*\\n|/\\*.*?\\*/)*\\}$"},{"all":[{"not":{"matches":"r8"}},{"not":{"inside":{"stopBy":"end","matches":"r8"}}}]},{"all":[{"pattern":"$UBQ"},{"has":{"all":[{"not":{"inside":{"any":[{"kind":"function_expression"},{"kind":"arrow_function"},{"kind":"generator_function"},{"kind":"method_definition"}],"stopBy":"neighbor"}}},{"not":{"inside":{"not":{"pattern":"$UBQ"},"precedes":{"stopBy":"end","matches":"r14"},"stopBy":{"pattern":"$UBQ"}}}}],"kind":"statement_block","not":{"precedes":{"stopBy":"end","matches":"r14"}},"stopBy":"end"}}]},{"all":[{"has":{"any":[{"matches":"r13"},{"layout":{"after":{"breaks":{"min":1},"to":"token"}}}],"regex":"^\\}$"}},{"not":{"has":{"all":[{"not":{"kind":"comment"}},{"not":{"regex":"^\\}$"}},{"not":{"precedes":{"all":[{"not":{"kind":"comment"}},{"not":{"regex":"^\\}$"}}],"stopBy":"end"}}},{"regex":"(?:\\+\\+|--)$"}]}}},{"not":{"matches":"hazard-next"}}]}]},"r3":{"all":[{"not":{"kind":"statement_block"}},{"not":{"kind":"empty_statement"}},{"not":{"matches":"one-liner"}}]},"r4":{"all":[{"not":{"kind":"statement_block"}},{"not":{"matches":"collapsed"}}]},"r5":{"any":[{"matches":"requires-block"},{"matches":"r3"},{"matches":"r1"}]},"r6":{"any":[{"all":[{"matches":"r2"},{"pattern":"$UBF"}]},{"pattern":"$UBN"}]},"r7":{"follows":{"all":[{"not":{"kind":"comment"}},{"regex":"^\\)$"}],"stopBy":{"not":{"kind":"comment"}}}},"r8":{"precedes":{"not":{"kind":"comment"},"stopBy":"end"}},"r9":{"follows":{"all":[{"not":{"kind":"comment"}},{"kind":"parenthesized_expression"}],"stopBy":{"not":{"kind":"comment"}}}},"r10":{"inside":{"stopBy":"neighbor","matches":"r12"},"kind":"else_clause"},"r11":{"has":{"regex":"^using$","stopBy":"neighbor"},"kind":"assignment_expression"},"r12":{"kind":"if_statement","matches":"chain-top-requires-block"},"r13":{"layout":{"before":{"breaks":{"min":1},"to":"token"}}},"r14":{"not":{"any":[{"kind":"comment"},{"regex":"^\\}$"}]}},"r15":{"inside":{"kind":"else_clause","stopBy":"neighbor"}}}}},{"id":"if-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"if-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"$option":"option2","cases":{"consistent":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}},"default":{"matches":"requires-block"}}},"default":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"$option":"option2","cases":{"consistent":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}},"default":{"matches":"requires-block"}}},"default":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"$option":"option2","cases":{"consistent":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}},"default":{"matches":"requires-block"}}},"default":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'if' condition.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"if-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"if-body"},{"matches":"one-statement-block"},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}}]},"default":[]}},"default":[{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}}],"spread":true},{"$option":"option2","cases":{"consistent":[{"not":{"matches":"in-chain-requiring-block"}}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"not":{"matches":"r5"}}]}},"default":[],"spread":true},{"matches":"r6"}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'if' condition.","fix":"$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"else-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"else-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"$option":"option2","cases":{"consistent":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}},"default":{"matches":"requires-block"}}},"default":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"$option":"option2","cases":{"consistent":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}},"default":{"matches":"requires-block"}}},"default":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"$option":"option2","cases":{"consistent":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}},"default":{"matches":"requires-block"}}},"default":{"any":[{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":{"matches":"r5"}},"default":{"matches":"requires-block"}}},"default":{"matches":"requires-block"}},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}]},"default":[]}},"default":[{"$option":"option2","cases":{"consistent":{"matches":"in-chain-requiring-block"}},"default":{"matches":"r4"}}],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r3"}]}},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"matches":"r1"}]}},"default":[],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'else'.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"else-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"else-body"},{"matches":"one-statement-block"},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}}]},"default":[]}},"default":[{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}}],"spread":true},{"$option":"option2","cases":{"consistent":[{"not":{"matches":"in-chain-requiring-block"}}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-or-nest":{"$option":"option2","cases":{"consistent":[]},"default":[{"not":{"matches":"r5"}}]}},"default":[],"spread":true},{"matches":"r6"}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'else'.","fix":"$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"while-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"while-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'while' condition.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"while-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"while-body"},{"matches":"one-statement-block"},{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}},{"matches":"r6"}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'while' condition.","fix":"$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"do-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"do-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'do'.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"do-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"do-body"},{"matches":"one-statement-block"},{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}},{"any":[{"all":[{"matches":"r2"},{"pattern":"$UBF"},{"any":[{"inside":{"stopBy":"neighbor","kind":"do_statement","regex":"^do\\{\\s*[\\w$\\\\]","pattern":"$DOADJ"}},{"kind":"statement_block"}]}]},{"pattern":"$UBN"}]}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}},"SP":{"replace":{"source":"$DOADJ","replace":"(?s)^.*$","by":" "}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'do'.","fix":"$SP$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"for-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"for-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'for' condition.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"for-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"for-body"},{"matches":"one-statement-block"},{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}},{"matches":"r6"}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'for' condition.","fix":"$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"for-in-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"for-in-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'for-in'.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"for-in-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"for-in-body"},{"matches":"one-statement-block"},{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}},{"matches":"r6"}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'for-in'.","fix":"$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"for-of-missing","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"for-of-body"},{"not":{"kind":"comment"}},{"not":{"kind":"statement_block"}},{"$option":"option","cases":{"multi":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-line":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}],"multi-or-nest":[{"$option":"option","cases":{"multi":{"matches":"requires-block"}},"default":{"any":[{"matches":"requires-block"},{"$option":"option","cases":{"multi-line":[{"matches":"r4"}]},"default":[],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r3"}],"spread":true},{"$option":"option","cases":{"multi-line":[]},"default":[{"matches":"r1"}],"spread":true}]}}]},"default":[],"spread":true},{"pattern":"$BODY"}]}}},"violation":{"anchor":"witness.span","code":"curly","message":"Expected { after 'for-of'.","fix":"{$BODY}","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}},{"id":"for-of-unexpected","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"for-of-body"},{"matches":"one-statement-block"},{"not":{"$option":"option","cases":{"multi-or-nest":{"matches":"r5"}},"default":{"matches":"requires-block"}}},{"matches":"r6"}]},"transform":{"IN":{"replace":{"source":"$UBF","replace":"(?s)^\\{(.*)\\}$","by":"${1}"}},"ORIG":{"replace":{"source":"$UBN","replace":"(?s)^(.*)$","by":"${1}"}}},"when":{"option":{"option":{"in":["multi","multi-or-nest"]}}}}},"violation":{"anchor":"witness.span","code":"curly","message":"Unnecessary { after 'for-of'.","fix":"$IN$ORIG","suppress":{"eslint":{"rules":["curly"]},"oxlint":{"rules":["curly"]},"biome":{"rules":["lint/style/useBlockStatements"]}}}}]}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "rerail.policy/v1",
|
|
3
3
|
"id": "eslint-no-dupe-keys",
|
|
4
|
-
"revision":
|
|
4
|
+
"revision": 7,
|
|
5
5
|
"mode": "steer",
|
|
6
6
|
"description": "ESLint 10.11.0 no-dupe-keys, default options. Port of ESLint's `no-dupe-keys` rule (https://eslint.org/docs/latest/rules/no-dupe-keys). Flags an object-literal property whose static key (ESLint's getStaticPropertyName, via `compare` text `key`) repeats an earlier property of the same object; a getter may pair with a setter, and a non-computed `__proto__: value` is not a key.",
|
|
7
7
|
"scope": {
|
|
8
8
|
"include": [
|
|
9
|
-
"**/*.ts",
|
|
10
|
-
"**/*.tsx",
|
|
11
|
-
"**/*.mts",
|
|
12
|
-
"**/*.cts",
|
|
13
9
|
"**/*.js",
|
|
14
10
|
"**/*.jsx",
|
|
15
11
|
"**/*.mjs",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-no-labels","revision":3,"mode":"steer","description":"Port of ESLint's `no-labels` rule (https://eslint.org/docs/latest/rules/no-labels). Flags every labeled statement and every labeled break/continue. Options are declared in the `options` define (the rule's defaults); a variant is a config patch.","scope":{"include":["**/*"],"exclude":[]},"clauses":[{"id":"options","define":{"options":{"allowLoop":{"type":"boolean","nullable":true,"default":null},"allowSwitch":{"type":"boolean","nullable":true,"default":null}}}},{"id":"shared","define":{"language":"typescript","utils":{"r1":{"any":[{"kind":"function_declaration"},{"kind":"function_expression"},{"kind":"arrow_function"},{"kind":"generator_function_declaration"},{"kind":"generator_function"},{"kind":"method_definition"},{"kind":"class_static_block"}]},"r2":{"has":{"kind":"statement_identifier","pattern":"$L","stopBy":"neighbor"}}}}},{"id":"labeled-statement","forbid":{"ast":{"language":"typescript","rule":{"$option":"allowLoop","cases":{"true":{"all":[{"kind":"labeled_statement"},{"not":{"has":{"stopBy":"neighbor","any":[{"$option":"allowLoop","cases":{"true":[{"kind":"for_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"for_in_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"while_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"do_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[]},"default":[{"kind":"switch_statement"}],"spread":true}]}}}]}},"default":{"$option":"allowSwitch","cases":{"true":{"all":[{"kind":"labeled_statement"},{"not":{"has":{"stopBy":"neighbor","any":[{"$option":"allowLoop","cases":{"true":[{"kind":"for_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"for_in_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"while_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"do_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[]},"default":[{"kind":"switch_statement"}],"spread":true}]}}}]}},"default":{"kind":"labeled_statement"}}}}},"violation":{"anchor":"witness.span","code":"no-labels","message":"Unexpected labeled statement.","suppress":{"eslint":{"rules":["no-labels"]},"oxlint":{"rules":["no-labels"]}}}},{"id":"label-in-break","forbid":{"ast":{"language":"typescript","rule":{"all":[{"kind":"break_statement"},{"matches":"r2"},{"$option":"allowLoop","cases":{"true":[{"not":{"inside":{"stopBy":{"matches":"r1"},"all":[{"kind":"labeled_statement"},{"matches":"r2"},{"has":{"stopBy":"neighbor","any":[{"$option":"allowLoop","cases":{"true":[{"kind":"for_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"for_in_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"while_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"do_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[]},"default":[{"kind":"switch_statement"}],"spread":true}]}}]}}}]},"default":{"$option":"allowSwitch","cases":{"true":[{"not":{"inside":{"stopBy":{"matches":"r1"},"all":[{"kind":"labeled_statement"},{"matches":"r2"},{"has":{"stopBy":"neighbor","any":[{"$option":"allowLoop","cases":{"true":[{"kind":"for_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"for_in_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"while_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"do_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[]},"default":[{"kind":"switch_statement"}],"spread":true}]}}]}}}]},"default":[]},"spread":true}]}}},"violation":{"anchor":"witness.span","code":"no-labels","message":"Unexpected label in break statement.","suppress":{"eslint":{"rules":["no-labels"]},"oxlint":{"rules":["no-labels"]}}}},{"id":"label-in-continue","forbid":{"ast":{"language":"typescript","rule":{"all":[{"kind":"continue_statement"},{"matches":"r2"},{"$option":"allowLoop","cases":{"true":[{"not":{"inside":{"stopBy":{"matches":"r1"},"all":[{"kind":"labeled_statement"},{"matches":"r2"},{"has":{"stopBy":"neighbor","any":[{"$option":"allowLoop","cases":{"true":[{"kind":"for_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"for_in_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"while_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"do_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[]},"default":[{"kind":"switch_statement"}],"spread":true}]}}]}}}]},"default":{"$option":"allowSwitch","cases":{"true":[{"not":{"inside":{"stopBy":{"matches":"r1"},"all":[{"kind":"labeled_statement"},{"matches":"r2"},{"has":{"stopBy":"neighbor","any":[{"$option":"allowLoop","cases":{"true":[{"kind":"for_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"for_in_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"while_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[{"kind":"do_statement"}]},"default":[],"spread":true},{"$option":"allowLoop","cases":{"true":[]},"default":[{"kind":"switch_statement"}],"spread":true}]}}]}}}]},"default":[]},"spread":true}]}}},"violation":{"anchor":"witness.span","code":"no-labels","message":"Unexpected label in continue statement.","suppress":{"eslint":{"rules":["no-labels"]},"oxlint":{"rules":["no-labels"]}}}}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-no-object-constructor","revision":1,"mode":"steer","description":"Port of ESLint's `no-object-constructor` rule (https://eslint.org/docs/latest/rules/no-object-constructor). Flags `Object()` / `new Object` without arguments when `Object` is the global (resolved with `resolves`). ESLint offers only a suggestion, so no fix is declared.","scope":{"include":["**/*"],"exclude":[]},"clauses":[{"id":"object-constructor","forbid":{"ast":{"language":"typescript","languageOptions":{},"rule":{"all":[{"any":[{"kind":"call_expression"},{"kind":"new_expression"}]},{"has":{"matches":"object-callee"}},{"not":{"has":{"kind":"template_string"}}},{"not":{"has":{"kind":"arguments","has":{"matches":"arg"}}}}]},"utils":{"object-callee":{"any":[{"kind":"identifier","resolves":{"global":["Object"],"directives":"eslint"}},{"kind":"parenthesized_expression","has":{"matches":"object-callee"}}]},"arg":{"not":{"any":[{"regex":"^[(),]$"},{"kind":"comment"}]}}}}},"violation":{"anchor":"witness.span","code":"no-object-constructor","message":"The object literal notation {} is preferable.","suppress":{"eslint":{"rules":["no-object-constructor"]},"oxlint":{"rules":["no-object-constructor"]}}}}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-no-sequences","revision":2,"mode":"steer","description":"Port of ESLint's `no-sequences` rule (https://eslint.org/docs/latest/rules/no-sequences). Default options (allowInParentheses: true): flags the comma operator except in for-loop init/update and when the sequence is wrapped in parentheses (doubled where the grammar already requires them). Options are declared in the `options` define (the rule's defaults); a variant is a config patch.","scope":{"include":["**/*"],"exclude":[]},"clauses":[{"id":"options","define":{"options":{"allowInParentheses":{"type":"boolean","nullable":true,"default":null}}}},{"id":"comma-operator","forbid":{"ast":{"language":"typescript","rule":{"regex":"^,$","not":{"follows":{"regex":"^,$","stopBy":"end"}},"inside":{"kind":"sequence_expression","stopBy":"neighbor","not":{"any":[{"matches":"for-init-or-update"},{"$option":"allowInParentheses","cases":{"false":[]},"default":[{"matches":"intent-parens"}],"spread":true}]}}},"utils":{"for-init-or-update":{"any":[{"inside":{"kind":"for_statement","stopBy":"neighbor"},"any":[{"follows":{"regex":"^\\($","stopBy":"neighbor"}},{"precedes":{"regex":"^\\)$","stopBy":"neighbor"}}]},{"inside":{"kind":"parenthesized_expression","stopBy":"neighbor","matches":"for-init-or-update"}}]},"intent-parens":{"inside":{"kind":"parenthesized_expression","stopBy":"neighbor","any":[{"not":{"inside":{"stopBy":"neighbor","any":[{"kind":"if_statement"},{"kind":"while_statement"},{"kind":"do_statement"},{"kind":"switch_statement"},{"kind":"with_statement"},{"kind":"arrow_function"}]}}},{"inside":{"kind":"parenthesized_expression","stopBy":"neighbor"}}]}}}}},"violation":{"anchor":"witness.span","code":"no-sequences","message":"Unexpected use of comma operator.","suppress":{"eslint":{"rules":["no-sequences"]},"oxlint":{"rules":["no-sequences"]},"biome":{"rules":["lint/complexity/noCommaOperator"]}}}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"format":"rerail.policy/v1","id":"eslint-no-setter-return","revision":3,"mode":"steer","description":"Port of ESLint's `no-setter-return` rule (https://eslint.org/docs/latest/rules/no-setter-return). Flags `return <value>` in a setter (class or object `set` accessor, or the `set` function of a property descriptor passed to Object.defineProperty, Reflect.defineProperty, Object.defineProperties or Object.create), and an arrow descriptor setter's expression body. `Object` and `Reflect` must resolve to declared globals (`resolves` under `ast.languageOptions`).","scope":{"include":["**/*"],"exclude":[]},"clauses":[{"id":"return-value","forbid":{"ast":{"language":"typescript","languageOptions":{},"rule":{"kind":"return_statement","has":{"stopBy":"neighbor","not":{"regex":"^(return|;)$"}},"inside":{"stopBy":{"any":[{"kind":"function_declaration"},{"kind":"generator_function_declaration"},{"kind":"function_expression"},{"kind":"generator_function"},{"kind":"arrow_function"},{"kind":"method_definition"}]},"matches":"setter"}},"utils":{"callee-Object-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-defineProperty"}}]},"callee-Reflect-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Reflect-defineProperty"}}]},"callee-Object-create-defineProperties":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(create|defineProperties)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](create|defineProperties)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-create-defineProperties"}}]},"descriptor":{"kind":"object","any":[{"inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-defineProperty"},{"matches":"callee-Reflect-defineProperty"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":2,"max":2}},{"inside":{"kind":"pair","stopBy":"neighbor","inside":{"kind":"object","stopBy":"neighbor","inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-create-defineProperties"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":1,"max":1}}}}]},"setter":{"any":[{"kind":"method_definition","has":{"regex":"^set$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}},{"kind":"method_definition","all":[{"not":{"has":{"regex":"^get$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}]}}],"inside":{"stopBy":"neighbor","matches":"descriptor"}},{"any":[{"kind":"function_expression"},{"kind":"generator_function"},{"kind":"arrow_function"}],"inside":{"kind":"pair","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}},"inside":{"stopBy":"neighbor","matches":"descriptor"}}}]}}}},"violation":{"anchor":"witness.span","code":"no-setter-return","message":"Setter cannot return a value.","suppress":{"eslint":{"rules":["no-setter-return"]},"oxlint":{"rules":["no-setter-return"]},"biome":{"rules":["lint/correctness/noSetterReturn"]}}}},{"id":"arrow-expression-body","forbid":{"ast":{"language":"typescript","languageOptions":{},"rule":{"not":{"any":[{"kind":"statement_block"},{"regex":"^=>$"}]},"follows":{"regex":"^=>$","stopBy":"neighbor"},"inside":{"stopBy":"neighbor","kind":"arrow_function","matches":"setter"}},"utils":{"callee-Object-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-defineProperty"}}]},"callee-Reflect-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Reflect-defineProperty"}}]},"callee-Object-create-defineProperties":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(create|defineProperties)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](create|defineProperties)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-create-defineProperties"}}]},"descriptor":{"kind":"object","any":[{"inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-defineProperty"},{"matches":"callee-Reflect-defineProperty"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":2,"max":2}},{"inside":{"kind":"pair","stopBy":"neighbor","inside":{"kind":"object","stopBy":"neighbor","inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-create-defineProperties"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":1,"max":1}}}}]},"setter":{"any":[{"kind":"method_definition","has":{"regex":"^set$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}},{"kind":"method_definition","all":[{"not":{"has":{"regex":"^get$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}]}}],"inside":{"stopBy":"neighbor","matches":"descriptor"}},{"any":[{"kind":"function_expression"},{"kind":"generator_function"},{"kind":"arrow_function"}],"inside":{"kind":"pair","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}},"inside":{"stopBy":"neighbor","matches":"descriptor"}}}]}}}},"violation":{"anchor":"witness.span","code":"no-setter-return","message":"Setter cannot return a value.","suppress":{"eslint":{"rules":["no-setter-return"]},"oxlint":{"rules":["no-setter-return"]},"biome":{"rules":["lint/correctness/noSetterReturn"]}}}}]}
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-no-setter-return","revision":4,"mode":"steer","description":"Port of ESLint's `no-setter-return` rule (https://eslint.org/docs/latest/rules/no-setter-return). Flags `return <value>` in a setter (class or object `set` accessor, or the `set` function of a property descriptor passed to Object.defineProperty, Reflect.defineProperty, Object.defineProperties or Object.create), and an arrow descriptor setter's expression body. `Object` and `Reflect` must resolve to declared globals (`resolves` under `ast.languageOptions`).","scope":{"include":["**/*.js","**/*.jsx","**/*.mjs","**/*.cjs"],"exclude":[]},"clauses":[{"id":"return-value","forbid":{"ast":{"language":"typescript","languageOptions":{},"rule":{"kind":"return_statement","has":{"stopBy":"neighbor","not":{"regex":"^(return|;)$"}},"inside":{"stopBy":{"any":[{"kind":"function_declaration"},{"kind":"generator_function_declaration"},{"kind":"function_expression"},{"kind":"generator_function"},{"kind":"arrow_function"},{"kind":"method_definition"}]},"matches":"setter"}},"utils":{"callee-Object-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-defineProperty"}}]},"callee-Reflect-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Reflect-defineProperty"}}]},"callee-Object-create-defineProperties":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(create|defineProperties)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](create|defineProperties)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-create-defineProperties"}}]},"descriptor":{"kind":"object","any":[{"inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-defineProperty"},{"matches":"callee-Reflect-defineProperty"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":2,"max":2}},{"inside":{"kind":"pair","stopBy":"neighbor","inside":{"kind":"object","stopBy":"neighbor","inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-create-defineProperties"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":1,"max":1}}}}]},"setter":{"any":[{"kind":"method_definition","has":{"regex":"^set$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}},{"kind":"method_definition","all":[{"not":{"has":{"regex":"^get$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}]}}],"inside":{"stopBy":"neighbor","matches":"descriptor"}},{"any":[{"kind":"function_expression"},{"kind":"generator_function"},{"kind":"arrow_function"}],"inside":{"kind":"pair","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}},"inside":{"stopBy":"neighbor","matches":"descriptor"}}}]}}}},"violation":{"anchor":"witness.span","code":"no-setter-return","message":"Setter cannot return a value.","suppress":{"eslint":{"rules":["no-setter-return"]},"oxlint":{"rules":["no-setter-return"]},"biome":{"rules":["lint/correctness/noSetterReturn"]}}}},{"id":"arrow-expression-body","forbid":{"ast":{"language":"typescript","languageOptions":{},"rule":{"not":{"any":[{"kind":"statement_block"},{"regex":"^=>$"}]},"follows":{"regex":"^=>$","stopBy":"neighbor"},"inside":{"stopBy":"neighbor","kind":"arrow_function","matches":"setter"}},"utils":{"callee-Object-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-defineProperty"}}]},"callee-Reflect-defineProperty":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(defineProperty)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Reflect"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](defineProperty)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Reflect-defineProperty"}}]},"callee-Object-create-defineProperties":{"any":[{"kind":"member_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","kind":"property_identifier","regex":"^(create|defineProperties)$"}}]},{"kind":"subscript_expression","all":[{"has":{"stopBy":"neighbor","any":[{"kind":"identifier"},{"kind":"parenthesized_expression"}],"resolves":{"global":["Object"],"directives":"eslint"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string"}],"regex":"^['\"`](create|defineProperties)['\"`]$"}}]},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","matches":"callee-Object-create-defineProperties"}}]},"descriptor":{"kind":"object","any":[{"inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-defineProperty"},{"matches":"callee-Reflect-defineProperty"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":2,"max":2}},{"inside":{"kind":"pair","stopBy":"neighbor","inside":{"kind":"object","stopBy":"neighbor","inside":{"kind":"arguments","stopBy":"neighbor","inside":{"kind":"call_expression","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"matches":"callee-Object-create-defineProperties"}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}}}},"count":{"follows":{"regex":"^,$","stopBy":"end"},"min":1,"max":1}}}}]},"setter":{"any":[{"kind":"method_definition","has":{"regex":"^set$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}},{"kind":"method_definition","all":[{"not":{"has":{"regex":"^get$","not":{"kind":"property_identifier"},"stopBy":"neighbor"}}},{"has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}]}}],"inside":{"stopBy":"neighbor","matches":"descriptor"}},{"any":[{"kind":"function_expression"},{"kind":"generator_function"},{"kind":"arrow_function"}],"inside":{"kind":"pair","stopBy":"neighbor","has":{"stopBy":"neighbor","any":[{"kind":"property_identifier","regex":"^set$"},{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"computed_property_name","has":{"stopBy":"neighbor","any":[{"kind":"string","regex":"^['\"]set['\"]$"},{"kind":"template_string","regex":"^`set`$"}]}}],"not":{"follows":{"regex":"[\\s\\S]","stopBy":"neighbor"}}},"inside":{"stopBy":"neighbor","matches":"descriptor"}}}]}}}},"violation":{"anchor":"witness.span","code":"no-setter-return","message":"Setter cannot return a value.","suppress":{"eslint":{"rules":["no-setter-return"]},"oxlint":{"rules":["no-setter-return"]},"biome":{"rules":["lint/correctness/noSetterReturn"]}}}}]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"format":"rerail.policy/v1","id":"eslint-no-unsafe-negation","revision":
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-no-unsafe-negation","revision":5,"mode":"steer","description":"Port of ESLint's `no-unsafe-negation` rule (https://eslint.org/docs/latest/rules/no-unsafe-negation). Reports an unparenthesized `!x` as the left operand of `in` or `instanceof`. Options are declared in the `options` define (the rule's defaults); a variant is a config patch.","scope":{"include":["**/*.js","**/*.jsx","**/*.mjs","**/*.cjs"],"exclude":[]},"clauses":[{"id":"options","define":{"options":{"enforceForOrderingRelations":{"type":"boolean","nullable":true,"default":null}}}},{"id":"negated-left-operand-of-in","forbid":{"ast":{"language":"typescript","rule":{"kind":"unary_expression","has":{"regex":"^!$","stopBy":"neighbor"},"precedes":{"regex":"^in$","stopBy":"neighbor"},"inside":{"kind":"binary_expression","stopBy":"neighbor"}}}},"violation":{"anchor":"witness.span","code":"no-unsafe-negation","message":"Unexpected negating the left operand of 'in' operator.","suppress":{"eslint":{"rules":["no-unsafe-negation"]},"oxlint":{"rules":["no-unsafe-negation"]},"biome":{"rules":["lint/suspicious/noUnsafeNegation"]}}}},{"id":"negated-left-operand-of-instanceof","forbid":{"ast":{"language":"typescript","rule":{"kind":"unary_expression","has":{"regex":"^!$","stopBy":"neighbor"},"precedes":{"regex":"^instanceof$","stopBy":"neighbor"},"inside":{"kind":"binary_expression","stopBy":"neighbor"}}}},"violation":{"anchor":"witness.span","code":"no-unsafe-negation","message":"Unexpected negating the left operand of 'instanceof' operator.","suppress":{"eslint":{"rules":["no-unsafe-negation"]},"oxlint":{"rules":["no-unsafe-negation"]},"biome":{"rules":["lint/suspicious/noUnsafeNegation"]}}}},{"id":"negated-left-operand-of-lt","forbid":{"ast":{"language":"typescript","rule":{"kind":"unary_expression","has":{"regex":"^!$","stopBy":"neighbor"},"precedes":{"regex":"^<$","stopBy":"neighbor"},"inside":{"kind":"binary_expression","stopBy":"neighbor"}},"when":{"option":{"enforceForOrderingRelations":true}}}},"violation":{"anchor":"witness.span","code":"no-unsafe-negation","message":"Unexpected negating the left operand of '<' operator.","suppress":{"eslint":{"rules":["no-unsafe-negation"]},"oxlint":{"rules":["no-unsafe-negation"]},"biome":{"rules":["lint/suspicious/noUnsafeNegation"]}}}},{"id":"negated-left-operand-of-gt","forbid":{"ast":{"language":"typescript","rule":{"kind":"unary_expression","has":{"regex":"^!$","stopBy":"neighbor"},"precedes":{"regex":"^>$","stopBy":"neighbor"},"inside":{"kind":"binary_expression","stopBy":"neighbor"}},"when":{"option":{"enforceForOrderingRelations":true}}}},"violation":{"anchor":"witness.span","code":"no-unsafe-negation","message":"Unexpected negating the left operand of '>' operator.","suppress":{"eslint":{"rules":["no-unsafe-negation"]},"oxlint":{"rules":["no-unsafe-negation"]},"biome":{"rules":["lint/suspicious/noUnsafeNegation"]}}}},{"id":"negated-left-operand-of-le","forbid":{"ast":{"language":"typescript","rule":{"kind":"unary_expression","has":{"regex":"^!$","stopBy":"neighbor"},"precedes":{"regex":"^<=$","stopBy":"neighbor"},"inside":{"kind":"binary_expression","stopBy":"neighbor"}},"when":{"option":{"enforceForOrderingRelations":true}}}},"violation":{"anchor":"witness.span","code":"no-unsafe-negation","message":"Unexpected negating the left operand of '<=' operator.","suppress":{"eslint":{"rules":["no-unsafe-negation"]},"oxlint":{"rules":["no-unsafe-negation"]},"biome":{"rules":["lint/suspicious/noUnsafeNegation"]}}}},{"id":"negated-left-operand-of-ge","forbid":{"ast":{"language":"typescript","rule":{"kind":"unary_expression","has":{"regex":"^!$","stopBy":"neighbor"},"precedes":{"regex":"^>=$","stopBy":"neighbor"},"inside":{"kind":"binary_expression","stopBy":"neighbor"}},"when":{"option":{"enforceForOrderingRelations":true}}}},"violation":{"anchor":"witness.span","code":"no-unsafe-negation","message":"Unexpected negating the left operand of '>=' operator.","suppress":{"eslint":{"rules":["no-unsafe-negation"]},"oxlint":{"rules":["no-unsafe-negation"]},"biome":{"rules":["lint/suspicious/noUnsafeNegation"]}}}}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"format":"rerail.policy/v1","id":"eslint-no-unused-labels","revision":2,"mode":"steer","description":"Port of ESLint's `no-unused-labels` rule (https://eslint.org/docs/latest/rules/no-unused-labels). Flags a label no `break`/`continue` in its body names; removes the label when no comment sits between label and body, the body cannot become a directive, and removal creates no ASI hazard.","scope":{"include":["**/*"],"exclude":[]},"clauses":[{"id":"unused-label-fixable","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"unused"},{"matches":"body"},{"not":{"matches":"unfixable"}}]},"utils":{"unused":{"all":[{"kind":"labeled_statement"},{"has":{"kind":"statement_identifier","pattern":"$L","stopBy":"neighbor"}},{"not":{"has":{"stopBy":{"any":[{"kind":"function_declaration"},{"kind":"function_expression"},{"kind":"arrow_function"},{"kind":"generator_function_declaration"},{"kind":"generator_function"},{"kind":"method_definition"},{"kind":"class_static_block"}]},"any":[{"kind":"break_statement"},{"kind":"continue_statement"}],"has":{"kind":"statement_identifier","pattern":"$L","stopBy":"neighbor"}}}}]},"body":{"has":{"stopBy":"neighbor","pattern":"$BODY","not":{"any":[{"kind":"statement_identifier"},{"kind":"comment"}]}}},"directive-body":{"all":[{"kind":"expression_statement"},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string","not":{"has":{"kind":"template_substitution","stopBy":"neighbor"}}},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string","not":{"has":{"kind":"template_substitution","stopBy":"neighbor"}}}]}}]}}]},"unfixable":{"any":[{"has":{"kind":"comment","stopBy":"neighbor"}},{"all":[{"has":{"stopBy":"neighbor","matches":"directive-body"}},{"inside":{"stopBy":{"not":{"kind":"labeled_statement"}},"any":[{"kind":"program"},{"kind":"statement_block","inside":{"stopBy":"neighbor","any":[{"kind":"function_declaration"},{"kind":"function_expression"},{"kind":"arrow_function"},{"kind":"generator_function_declaration"},{"kind":"generator_function"},{"kind":"method_definition"}]}}]}}]},{"all":[{"has":{"stopBy":"neighbor","not":{"any":[{"kind":"statement_identifier"},{"kind":"comment"}]},"regex":"^[(\\[\\-+/`]"}},{"follows":{"stopBy":{"not":{"kind":"comment"}},"not":{"kind":"comment"},"regex":"[^;{:]$"}}]}]}}}},"violation":{"anchor":"capture.L","code":"no-unused-labels","message":"'$L:' is defined but never used.","fix":"$BODY","suppress":{"eslint":{"rules":["no-unused-labels"]},"oxlint":{"rules":["no-unused-labels"]},"biome":{"rules":["lint/correctness/noUnusedLabels"]}}}},{"id":"unused-label","forbid":{"ast":{"language":"typescript","rule":{"all":[{"matches":"unused"},{"matches":"unfixable"}]},"utils":{"unused":{"all":[{"kind":"labeled_statement"},{"has":{"kind":"statement_identifier","pattern":"$L","stopBy":"neighbor"}},{"not":{"has":{"stopBy":{"any":[{"kind":"function_declaration"},{"kind":"function_expression"},{"kind":"arrow_function"},{"kind":"generator_function_declaration"},{"kind":"generator_function"},{"kind":"method_definition"},{"kind":"class_static_block"}]},"any":[{"kind":"break_statement"},{"kind":"continue_statement"}],"has":{"kind":"statement_identifier","pattern":"$L","stopBy":"neighbor"}}}}]},"directive-body":{"all":[{"kind":"expression_statement"},{"has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string","not":{"has":{"kind":"template_substitution","stopBy":"neighbor"}}},{"kind":"parenthesized_expression","has":{"stopBy":"neighbor","any":[{"kind":"string"},{"kind":"template_string","not":{"has":{"kind":"template_substitution","stopBy":"neighbor"}}}]}}]}}]},"unfixable":{"any":[{"has":{"kind":"comment","stopBy":"neighbor"}},{"all":[{"has":{"stopBy":"neighbor","matches":"directive-body"}},{"inside":{"stopBy":{"not":{"kind":"labeled_statement"}},"any":[{"kind":"program"},{"kind":"statement_block","inside":{"stopBy":"neighbor","any":[{"kind":"function_declaration"},{"kind":"function_expression"},{"kind":"arrow_function"},{"kind":"generator_function_declaration"},{"kind":"generator_function"},{"kind":"method_definition"}]}}]}}]},{"all":[{"has":{"stopBy":"neighbor","not":{"any":[{"kind":"statement_identifier"},{"kind":"comment"}]},"regex":"^[(\\[\\-+/`]"}},{"follows":{"stopBy":{"not":{"kind":"comment"}},"not":{"kind":"comment"},"regex":"[^;{:]$"}}]}]}}}},"violation":{"anchor":"capture.L","code":"no-unused-labels","message":"'$L:' is defined but never used.","suppress":{"eslint":{"rules":["no-unused-labels"]},"oxlint":{"rules":["no-unused-labels"]},"biome":{"rules":["lint/correctness/noUnusedLabels"]}}}}]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "rerail.policy/v1",
|
|
3
|
+
"id": "eslint-no-unused-private-class-members",
|
|
4
|
+
"revision": 2,
|
|
5
|
+
"mode": "steer",
|
|
6
|
+
"description": "ESLint 10.11.0 no-unused-private-class-members, default options. Port of ESLint's `no-unused-private-class-members` rule (https://eslint.org/docs/latest/rules/no-unused-private-class-members). A private field, method or accessor that no reference in its class body uses (`binds.used: false` on the private name: writes only count for fields and methods, any reference for accessors), reported at its last declaration.",
|
|
7
|
+
"scope": {
|
|
8
|
+
"include": [
|
|
9
|
+
"**/*.ts",
|
|
10
|
+
"**/*.tsx",
|
|
11
|
+
"**/*.mts",
|
|
12
|
+
"**/*.cts",
|
|
13
|
+
"**/*.js",
|
|
14
|
+
"**/*.jsx",
|
|
15
|
+
"**/*.mjs",
|
|
16
|
+
"**/*.cjs"
|
|
17
|
+
],
|
|
18
|
+
"exclude": []
|
|
19
|
+
},
|
|
20
|
+
"clauses": [
|
|
21
|
+
{
|
|
22
|
+
"id": "unused-private-member",
|
|
23
|
+
"forbid": {
|
|
24
|
+
"ast": {
|
|
25
|
+
"language": "typescript",
|
|
26
|
+
"rule": {
|
|
27
|
+
"kind": "private_property_identifier",
|
|
28
|
+
"pattern": "$N",
|
|
29
|
+
"binds": {
|
|
30
|
+
"used": false
|
|
31
|
+
},
|
|
32
|
+
"not": {
|
|
33
|
+
"inside": {
|
|
34
|
+
"stopBy": "neighbor",
|
|
35
|
+
"any": [
|
|
36
|
+
{
|
|
37
|
+
"kind": "public_field_definition"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"kind": "method_definition"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"precedes": {
|
|
44
|
+
"stopBy": "end",
|
|
45
|
+
"any": [
|
|
46
|
+
{
|
|
47
|
+
"kind": "public_field_definition"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"kind": "method_definition"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"has": {
|
|
54
|
+
"stopBy": "neighbor",
|
|
55
|
+
"kind": "private_property_identifier",
|
|
56
|
+
"pattern": "$N"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"violation": {
|
|
65
|
+
"anchor": "capture.N",
|
|
66
|
+
"code": "no-unused-private-class-members",
|
|
67
|
+
"message": "'$N' is defined but never used.",
|
|
68
|
+
"suppress": {
|
|
69
|
+
"eslint": {
|
|
70
|
+
"rules": [
|
|
71
|
+
"no-unused-private-class-members"
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
"oxlint": {
|
|
75
|
+
"rules": [
|
|
76
|
+
"no-unused-private-class-members"
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
]
|
|
83
|
+
}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"format": "rerail.policy/v1",
|
|
3
3
|
"id": "eslint-no-with",
|
|
4
|
-
"revision":
|
|
4
|
+
"revision": 4,
|
|
5
5
|
"mode": "steer",
|
|
6
6
|
"description": "Port of ESLint's `no-with` rule (https://eslint.org/docs/latest/rules/no-with). Reports every `with` statement, at its `with` keyword.",
|
|
7
7
|
"scope": {
|
|
8
8
|
"include": [
|
|
9
|
-
"
|
|
9
|
+
"**/*.js",
|
|
10
|
+
"**/*.jsx",
|
|
11
|
+
"**/*.mjs",
|
|
12
|
+
"**/*.cjs"
|
|
10
13
|
],
|
|
11
14
|
"exclude": []
|
|
12
15
|
},
|