Skip to content

Commit 7283524

Browse files
committed
Tweaks
1 parent 55b6ae1 commit 7283524

8 files changed

Lines changed: 68 additions & 16 deletions

File tree

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,14 @@
7070
"eslint-plugin-jsdoc": "^62.8.1",
7171
"eslint-plugin-n": "^17.24.0",
7272
"eslint-plugin-regexp": "^3.1.0",
73-
"eslint-plugin-unicorn": "^63.0.0",
73+
"eslint-plugin-unicorn": "^64.0.0",
7474
"globals": "^17.4.0",
75-
"typescript-eslint": "^8.57.2"
75+
"typescript-eslint": "^8.58.0"
7676
},
7777
"devDependencies": {
7878
"ava": "^7.0.0",
7979
"eslint": "^10.1.0",
80-
"typescript": "^5.9.3"
80+
"typescript": "^6.0.2"
8181
},
8282
"peerDependencies": {
8383
"eslint": ">=10",

source/javascript-rules.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,9 @@ export const javascriptRules = {
107107
'dot-notation': 'error',
108108
'@stylistic/curly-newline': [
109109
'error',
110-
'always',
110+
{
111+
consistent: true,
112+
},
111113
],
112114
'@stylistic/dot-location': [
113115
'error',
@@ -266,7 +268,7 @@ export const javascriptRules = {
266268
'error',
267269
'1tbs',
268270
{
269-
allowSingleLine: false,
271+
allowSingleLine: true,
270272
},
271273
],
272274
camelcase: [

source/jsdoc.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,15 @@ export function getJsdocConfigs({files, tsFiles}) {
2525
rules: {
2626
// Validation
2727
'jsdoc/check-access': 'error',
28-
'jsdoc/check-alignment': 'error',
28+
29+
// Doesn't work when not prefixing lines with `*`.
30+
// 'jsdoc/check-alignment': [
31+
// 'error',
32+
// {
33+
// innerIndent: 0,
34+
// }
35+
// ],
36+
2937
'jsdoc/check-indentation': 'error',
3038
'jsdoc/check-line-alignment': 'error',
3139
'jsdoc/check-param-names': 'error',
@@ -49,7 +57,14 @@ export function getJsdocConfigs({files, tsFiles}) {
4957
'jsdoc/convert-to-jsdoc-comments': 'off',
5058
'jsdoc/empty-tags': 'error',
5159
'jsdoc/escape-inline-tags': 'error',
52-
'jsdoc/lines-before-block': 'error',
60+
61+
// The rule is dumb and doesn't handle:
62+
// export type Options = {
63+
// /**
64+
// Foo
65+
// */
66+
// 'jsdoc/lines-before-block': 'error',
67+
5368
'jsdoc/multiline-blocks': 'error',
5469
'jsdoc/no-bad-blocks': 'error',
5570
'jsdoc/no-blank-block-descriptions': 'error',
@@ -60,7 +75,7 @@ export function getJsdocConfigs({files, tsFiles}) {
6075
'never',
6176
],
6277
'jsdoc/sort-tags': 'off', // Too opinionated. Too much churn.
63-
'jsdoc/tag-lines': 'error',
78+
'jsdoc/tag-lines': ['error', 'any', {startLines: null}],
6479
'jsdoc/type-formatting': 'off', // It's marked as experimental.
6580

6681
// Content
@@ -86,7 +101,11 @@ export function getJsdocConfigs({files, tsFiles}) {
86101
// Requirements — these only apply to existing JSDoc comments,
87102
// except `require-jsdoc` which requires JSDoc to be present.
88103
'jsdoc/require-description': 'error',
89-
'jsdoc/require-description-complete-sentence': 'error',
104+
105+
// It's too naive. Requires dot at the end here:
106+
// Modifier: Make the text italic. *(Not widely supported)*
107+
// 'jsdoc/require-description-complete-sentence': 'error',
108+
90109
'jsdoc/require-example': 'off',
91110
'jsdoc/require-file-overview': 'off',
92111
'jsdoc/require-hyphen-before-param-description': 'off',

source/markdown.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import markdown from '@eslint/markdown';
33
const markdownRules = {
44
'markdown/fenced-code-language': 'error',
55
'markdown/heading-increment': 'error',
6-
'markdown/no-bare-urls': 'error',
6+
'markdown/no-bare-urls': 'off', // It's fine to write bare URLs
77
'markdown/no-duplicate-definitions': 'error',
88
'markdown/no-duplicate-headings': 'error',
99
'markdown/no-empty-definitions': 'error',
@@ -12,14 +12,25 @@ const markdownRules = {
1212
'markdown/no-html': 'off', // HTML is sometimes needed for advanced formatting
1313
'markdown/no-invalid-label-refs': 'error',
1414
'markdown/no-missing-atx-heading-space': 'error',
15-
'markdown/no-missing-label-refs': 'error',
15+
'markdown/no-missing-label-refs': [
16+
'error',
17+
{
18+
allowLabels: [
19+
'!NOTE',
20+
'!TIP',
21+
'!IMPORTANT',
22+
'!WARNING',
23+
'!CAUTION',
24+
],
25+
},
26+
],
1627
'markdown/no-missing-link-fragments': 'error',
1728
'markdown/no-multiple-h1': 'error',
1829
'markdown/no-reference-like-urls': 'error',
1930
'markdown/no-reversed-media-syntax': 'error',
2031
'markdown/no-space-in-emphasis': 'error',
2132
'markdown/no-unused-definitions': 'error',
22-
'markdown/require-alt-text': 'error',
33+
// 'markdown/require-alt-text': 'error', // Too much churn for now. Maybe will enable it in the future.
2334
'markdown/table-column-count': 'error',
2435
};
2536

source/plugins-rules.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,13 @@ export const pluginsRules = {
295295
'error',
296296
{
297297
ignore: [
298+
'eslint-enable',
298299
'eslint-disable-next-line',
299300
'eslint-disable-line',
301+
'eslint-env',
302+
'exported',
303+
'global',
304+
'globals',
300305
],
301306
},
302307
],

source/regexp.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,14 @@ export function getRegexpConfig({files}) {
9292
'regexp/grapheme-string-literal': 'error',
9393
'regexp/hexadecimal-escape': [
9494
'error',
95-
'always',
95+
'never', // We prefer the consistency of Unicode escapes.
9696
],
9797
'regexp/letter-case': [
9898
'error',
9999
{
100100
caseInsensitive: 'lowercase',
101-
unicodeEscape: 'lowercase',
102-
hexadecimalEscape: 'lowercase',
101+
unicodeEscape: 'ignore', // `unicorn/escape-case` already handles it.
102+
hexadecimalEscape: 'uppercase',
103103
controlEscape: 'uppercase',
104104
},
105105
],

source/typescript-rules.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ export const typescriptRules = {
520520
'@typescript-eslint/no-unsafe-function-type': 'error',
521521
'@typescript-eslint/no-unsafe-member-access': 'error',
522522
'@typescript-eslint/no-unsafe-return': 'error',
523-
'@typescript-eslint/no-unsafe-type-assertion': 'error',
523+
// '@typescript-eslint/no-unsafe-type-assertion': 'error', // TODO: Enable again when it's fixed for TS 6.
524524
'@typescript-eslint/no-useless-empty-export': 'error',
525525
'no-unused-expressions': 'off',
526526
'no-unused-private-class-members': 'off',

source/typescript.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,28 @@ export function getConfigs({optionRules, tsExtensions}) {
2727
rules: {
2828
...typescriptRules,
2929
'unicorn/import-style': 'off',
30+
// Both `import-x/extensions` and `n/file-extension-in-import` resolve imports to their actual
31+
// `.ts` file and then check/enforce the extension on the resolved file. This breaks TypeScript
32+
// ESM's convention of using `.js` extensions for `.ts` files — neither rule can model
33+
// "require `.js` for TypeScript imports". Disabled until the rules support this pattern.
34+
'import-x/extensions': 'off',
3035
'n/file-extension-in-import': 'off',
3136
// Disabled because it doesn't work correctly with TypeScript.
3237
'import-x/export': 'off',
3338
// Does not work when the TS definition exports a default const.
3439
'import-x/default': 'off',
3540
// Disabled as it doesn't work with TypeScript.
3641
'import-x/named': 'off',
42+
// Allow `=` at end of line for multi-line type definitions like `type Foo =\n | A\n | B`.
43+
'@stylistic/operator-linebreak': [
44+
'error',
45+
'before',
46+
{
47+
overrides: {
48+
'=': 'after',
49+
},
50+
},
51+
],
3752
...optionRules,
3853
},
3954
},

0 commit comments

Comments
 (0)