exadev-eslint-config 2.33.0 → 2.33.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -335,14 +335,14 @@ The plugin's own full-canonicalization rule ([`no-insignificant-whitespace`](htt
335
335
 
336
336
  A hand-picked subset of [`@stylistic/eslint-plugin`](https://eslint.style) is bundled unconditionally, the same way jsdoc/tsdoc and RFC 8785 JSON support are: `@stylistic/eslint-plugin` is a plain dependency of this package, so every consumer already has it, and every rule below matches purely on comment shape, statement/class-member placement, or JSX prop/tag conventions, never on formatting (indentation, quotes, semicolons, trailing commas, line wrapping, bracket spacing), which stays Prettier's job in every consumer of this package. None of these rules appears in [`eslint-config-prettier`](https://github.com/prettier/eslint-config-prettier)'s own disabled-rules list.
337
337
 
338
- - **[`multiline-comment-style`](https://eslint.style/rules/multiline-comment-style)** is deliberately NOT enabled: the installed release's own directive-comment filter only recognises the `eslint`/`jshint`/`jslint`/`istanbul`/`globals`/`exported`/`jscs` family, so a run of `//` lines mixed with a `prettier-ignore`, `c8 ignore`/`v8 ignore`, `@ts-expect-error`/`@ts-ignore`/`@ts-nocheck`/`@ts-check`, or `TODO`/`FIXME` comment gets merged into one block and the directive lost (a lost `prettier-ignore` then lets Prettier reformat the code it protected), and two or more consecutive triple-slash reference/AMD directives break the same way regardless of file extension. This is a confirmed upstream defect, [issue #1249](https://github.com/eslint-stylistic/eslint-stylistic/issues/1249), fixed by the merged [PR #1251](https://github.com/eslint-stylistic/eslint-stylistic/pull/1251); the triple-slash gap is also tracked upstream in [issue #1285](https://github.com/eslint-stylistic/eslint-stylistic/issues/1285). This rule is re-enabled once a stable release contains PR #1251's fix, tracked at [ExaDev/eslint-config#45](https://github.com/ExaDev/eslint-config/issues/45).
339
- - **[`spaced-comment`](https://eslint.style/rules/spaced-comment)**: requires a space after `//`/`/*`, without fighting a `/**`-opening doc comment or a shebang line. Adds `{ block: { markers: ['!'] } }` on top of the bare default so a `/*!` license/banner block is not flagged either. A SPACED triple-slash reference/AMD directive (`/// <reference types="..." />`, TypeScript's own compiler-emitted spelling) is exempted by the installed rule's own hard-coded check; a no-space directive (`///<reference types="..." />`, also valid TypeScript syntax) is not, and gets rewritten by `--fix` into a broken `// /<reference ...>` comment TypeScript no longer recognises. Confirmed directly against the installed rule with no config-level workaround available (`markers`/`exceptions` both still require real whitespace immediately after the marker, which the no-space form never has); tracked at [ExaDev/eslint-config#47](https://github.com/ExaDev/eslint-config/issues/47). Also adds `{ line: { markers: ['#', '#region', '#endregion'] } }`: without it, the bare default rewrites a `//# sourceMappingURL=...`/`//# sourceURL=...` source-map comment into `// # sourceMappingURL=...`, which browsers and Node no longer recognise, and a bare `line: { markers: ['#'] }` alone would instead rewrite an unspaced `//#region`/`//#endregion` editor fold marker into `//# region`, which VS Code's own folding regex no longer matches. Listing all three markers together, confirmed directly against the installed rule, leaves every one of those four shapes untouched.
338
+ - **[`multiline-comment-style`](https://eslint.style/rules/multiline-comment-style)** is deliberately NOT enabled, because its `bare-block` fixer still merges a `TODO`/`FIXME` line in a run of `//` prose into one block comment. The installed 6.0.0-beta.6 carries the fix from [PR #1251](https://github.com/eslint-stylistic/eslint-stylistic/pull/1251) for [issue #1249](https://github.com/eslint-stylistic/eslint-stylistic/issues/1249), so `prettier-ignore`, `c8 ignore`/`v8 ignore`, `istanbul ignore`, `@ts-expect-error`/`@ts-ignore`/`@ts-nocheck`/`@ts-check` and triple-slash reference/AMD directives (including the consecutive pair [issue #1285](https://github.com/eslint-stylistic/eslint-stylistic/issues/1285) reports) now stay standalone lines, but `TODO`/`FIXME` are not in the plugin's directive list and the rule has no option to add them. With the rule on, `exadev/prefer-doc-comment` stops converting the prose below a `TODO` into the declaration's doc comment, because the merged block it is left with contains a directive, so an exported declaration silently loses its doc comment. The fixer also writes a bare `\n` inside the merged block in a CRLF file. Tracked at [ExaDev/eslint-config#45](https://github.com/ExaDev/eslint-config/issues/45).
339
+ - **[`spaced-comment`](https://eslint.style/rules/spaced-comment)**: requires a space after `//`/`/*`, without fighting a `/**`-opening doc comment or a shebang line. Adds `{ block: { markers: ['!'] } }` on top of the bare default so a `/*!` license/banner block is not flagged either. A triple-slash reference/AMD directive is exempted by the rule itself in both its spaced form (`/// <reference types="..." />`, TypeScript's own compiler-emitted spelling) and its no-space form (`///<reference types="..." />`, also valid TypeScript syntax); before `@stylistic/eslint-plugin` 6.0.0, `--fix` rewrote the no-space form into a broken `// /<reference ...>` comment ([ExaDev/eslint-config#47](https://github.com/ExaDev/eslint-config/issues/47)). Also adds `{ line: { markers: ['#', '#region', '#endregion'] } }`: without it, the bare default rewrites a `//# sourceMappingURL=...`/`//# sourceURL=...` source-map comment into `// # sourceMappingURL=...`, which browsers and Node no longer recognise, and a bare `line: { markers: ['#'] }` alone would instead rewrite an unspaced `//#region`/`//#endregion` editor fold marker into `//# region`, which VS Code's own folding regex no longer matches. Listing all three markers together, confirmed directly against the installed rule, leaves every one of those four shapes untouched.
340
340
  - **[`lines-between-class-members`](https://eslint.style/rules/lines-between-class-members)** at its bare default: a blank line between class members, except after a `.d.ts`-style method overload signature.
341
341
  - **[`line-comment-position`](https://eslint.style/rules/line-comment-position)** at `'above'`: a `//` comment belongs above the code it describes, never trailing beside it on the same line. Not autofixable; a flagged trailing comment needs moving by hand. A trailing `// cspell:disable-line` is exempt (`ignorePattern`): cspell honours that directive only on the line it suppresses, so moving it above, as the report demands, would silently disable spell-checking for the wrong line. Every other directive this package recognises applies to the line(s) below it and is correctly relocated.
342
342
  - **[`padding-line-between-statements`](https://eslint.style/rules/padding-line-between-statements)**: a blank line is required after the last statement of a directive prologue (not between two consecutive directives), after the last CommonJS or ES import in a run (not between two consecutive imports), and before a `return` statement.
343
- - **[`jsx-curly-brace-presence`](https://eslint.style/rules/jsx-curly-brace-presence)**, **[`jsx-pascal-case`](https://eslint.style/rules/jsx-pascal-case)**, and **[`jsx-self-closing-comp`](https://eslint.style/rules/jsx-self-closing-comp)**, each at its own bare default: none of the three has any dependency on `eslint-plugin-react` or React itself (confirmed directly against `@stylistic/eslint-plugin`'s own `package.json`, whose only `peerDependencies` entry is `eslint`), since each matches purely on a JSX AST node shape and is a structural no-op on every non-JSX file.
343
+ - **[`jsx-curly-brace-presence`](https://eslint.style/rules/jsx-curly-brace-presence)**, **[`jsx-pascal-case`](https://eslint.style/rules/jsx-pascal-case)**, and **[`jsx-self-closing-comp`](https://eslint.style/rules/jsx-self-closing-comp)**, each at its own bare default: none of the three has any dependency on `eslint-plugin-react` or React itself (confirmed directly against `@stylistic/eslint-plugin`'s own `package.json`, whose `peerDependencies` are `eslint` and `oxlint`, both optional), since each matches purely on a JSX AST node shape and is a structural no-op on every non-JSX file.
344
344
 
345
- `@stylistic/eslint-plugin` has no rule covering JSX's shorthand-boolean-prop convention (`<Foo enabled />` vs `<Foo enabled={true} />`) or shorthand-fragment syntax (`<>...</>` vs `<React.Fragment>...</React.Fragment>`); those are `eslint-plugin-react`'s own `react/jsx-boolean-value` and `react/jsx-fragments`, which stay entirely within the optional [React support](#optional-react-and-nextjs-support) gate above, not this unconditional bundle.
345
+ JSX's shorthand-boolean-prop convention (`<Foo enabled />` vs `<Foo enabled={true} />`) and shorthand-fragment syntax (`<>...</>` vs `<React.Fragment>...</React.Fragment>`) are not enforced: neither `@stylistic/eslint-plugin`'s own [`jsx-shorthand-boolean`](https://eslint.style/rules/jsx-shorthand-boolean) and [`jsx-shorthand-fragment`](https://eslint.style/rules/jsx-shorthand-fragment) nor `eslint-plugin-react`'s `react/jsx-boolean-value` and `react/jsx-fragments` are enabled, here or in the optional [React support](#optional-react-and-nextjs-support) gate above.
346
346
 
347
347
  This package's own **`exadev/prefer-doc-comment`** rule (see [Rules](#rules)) is wired alongside these, in the same unconditional bundle.
348
348
 
@@ -1463,7 +1463,7 @@ turboConfig({
1463
1463
  ### Build, test, and lint
1464
1464
 
1465
1465
  ```sh
1466
- pnpm install # requires Node >=20 and the pnpm version pinned in package.json's packageManager field
1466
+ pnpm install # requires Node ^20.19.0 || ^22.13.0 || >=24 and the pnpm version pinned in package.json's packageManager field
1467
1467
  pnpm lint
1468
1468
  pnpm typecheck
1469
1469
  pnpm test
package/dist/index.cjs CHANGED
@@ -185,7 +185,7 @@ function buildGitignoreConfig(options = {}) {
185
185
  }
186
186
  //#endregion
187
187
  //#region package.json
188
- var version = "2.33.0";
188
+ var version = "2.33.1";
189
189
  //#endregion
190
190
  //#region src/is-record.ts
191
191
  /**
package/dist/index.js CHANGED
@@ -150,7 +150,7 @@ function buildGitignoreConfig(options = {}) {
150
150
  }
151
151
  //#endregion
152
152
  //#region package.json
153
- var version = "2.33.0";
153
+ var version = "2.33.1";
154
154
  //#endregion
155
155
  //#region src/is-record.ts
156
156
  /**
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "exadev-eslint-config",
3
3
  "description": "Shared custom ESLint rules and plugin for ExaDev projects",
4
- "version": "2.33.0",
4
+ "version": "2.33.1",
5
5
  "dependencies": {
6
6
  "@eslint/js": "^10.0.1",
7
7
  "@microsoft/tsdoc": "0.17.0",
8
- "@stylistic/eslint-plugin": "5.10.0",
8
+ "@stylistic/eslint-plugin": "6.0.0-beta.6",
9
9
  "@typescript-eslint/typescript-estree": "8.67.0",
10
10
  "@typescript-eslint/utils": "8.67.0",
11
11
  "eslint-plugin-jsdoc": "64.3.6",
@@ -51,7 +51,7 @@
51
51
  "vitest": "^4.1.10"
52
52
  },
53
53
  "engines": {
54
- "node": ">=20"
54
+ "node": "^20.19.0 || ^22.13.0 || >=24"
55
55
  },
56
56
  "exports": {
57
57
  ".": {