@bfra.me/eslint-config 0.28.2 → 0.28.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/lib/index.d.ts CHANGED
@@ -1522,7 +1522,7 @@ interface Rules {
1522
1522
  * Reports invalid alignment of JSDoc block asterisks.
1523
1523
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header
1524
1524
  */
1525
- 'jsdoc/check-alignment'?: Linter.RuleEntry<[]>
1525
+ 'jsdoc/check-alignment'?: Linter.RuleEntry<JsdocCheckAlignment>
1526
1526
  /**
1527
1527
  * Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.
1528
1528
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header
@@ -3577,6 +3577,11 @@ interface Rules {
3577
3577
  * @see https://eslint.org/docs/latest/rules/prefer-template
3578
3578
  */
3579
3579
  'prefer-template'?: Linter.RuleEntry<[]>
3580
+ /**
3581
+ * Disallow losing originally caught error when re-throwing custom errors
3582
+ * @see https://eslint.org/docs/latest/rules/preserve-caught-error
3583
+ */
3584
+ 'preserve-caught-error'?: Linter.RuleEntry<PreserveCaughtError>
3580
3585
  /**
3581
3586
  * @see https://github.com/prettier/eslint-plugin-prettier#options
3582
3587
  */
@@ -7248,6 +7253,10 @@ type IndentLegacy = []|[("tab" | number)]|[("tab" | number), {
7248
7253
  type InitDeclarations = ([]|["always"] | []|["never"]|["never", {
7249
7254
  ignoreForLoopInit?: boolean
7250
7255
  }])
7256
+ // ----- jsdoc/check-alignment -----
7257
+ type JsdocCheckAlignment = []|[{
7258
+ innerIndent?: number
7259
+ }]
7251
7260
  // ----- jsdoc/check-examples -----
7252
7261
  type JsdocCheckExamples = []|[{
7253
7262
  allowInlineConfig?: boolean
@@ -7537,6 +7546,7 @@ type JsdocRequireJsdoc = []|[{
7537
7546
  enableFixer?: boolean
7538
7547
  exemptEmptyConstructors?: boolean
7539
7548
  exemptEmptyFunctions?: boolean
7549
+ exemptOverloadedImplementations?: boolean
7540
7550
  fixerMessage?: string
7541
7551
  minLineCount?: number
7542
7552
  publicOnly?: (boolean | {
@@ -7553,6 +7563,7 @@ type JsdocRequireJsdoc = []|[{
7553
7563
  FunctionExpression?: boolean
7554
7564
  MethodDefinition?: boolean
7555
7565
  }
7566
+ skipInterveningOverloadedDeclarations?: boolean
7556
7567
  }]
7557
7568
  // ----- jsdoc/require-param -----
7558
7569
  type JsdocRequireParam = []|[{
@@ -12337,6 +12348,11 @@ type PreferReflect = []|[{
12337
12348
  type PreferRegexLiterals = []|[{
12338
12349
  disallowRedundantWrapping?: boolean
12339
12350
  }]
12351
+ // ----- preserve-caught-error -----
12352
+ type PreserveCaughtError = []|[{
12353
+
12354
+ requireCatchParameter?: boolean
12355
+ }]
12340
12356
  // ----- prettier/prettier -----
12341
12357
  type PrettierPrettier = []|[{
12342
12358
  [k: string]: unknown | undefined
@@ -13333,8 +13349,8 @@ type ConfigNames =
13333
13349
  | '@bfra.me/perfectionist'
13334
13350
  | '@bfra.me/unicorn'
13335
13351
  | '@bfra.me/typescript/plugins'
13336
- | '@bfra.me/typescript/parser'
13337
13352
  | '@bfra.me/typescript/type-aware-parser'
13353
+ | '@bfra.me/typescript/parser'
13338
13354
  | '@bfra.me/typescript/rules'
13339
13355
  | '@bfra.me/typescript/type-aware-rules'
13340
13356
  | '@bfra.me/regexp'
package/lib/index.js CHANGED
@@ -68,7 +68,7 @@ var GLOB_EXCLUDE = [
68
68
  import { fileURLToPath } from "url";
69
69
 
70
70
  // package.json
71
- var version = "0.28.2";
71
+ var version = "0.28.3";
72
72
 
73
73
  // src/parsers/any-parser.ts
74
74
  var lineBreakPattern = /\r\n|[\n\r\u2028\u2029]/u;
@@ -1113,6 +1113,38 @@ import process2 from "process";
1113
1113
  var TypeAwareRules = {
1114
1114
  "@typescript-eslint/await-thenable": "error",
1115
1115
  "@typescript-eslint/dot-notation": ["error", { allowKeywords: true }],
1116
+ "@typescript-eslint/naming-convention": [
1117
+ "error",
1118
+ {
1119
+ format: ["camelCase", "PascalCase", "UPPER_CASE"],
1120
+ selector: "variableLike"
1121
+ },
1122
+ {
1123
+ format: ["PascalCase"],
1124
+ selector: "typeLike"
1125
+ },
1126
+ {
1127
+ filter: {
1128
+ match: false,
1129
+ regex: "(Component|Icon)$"
1130
+ },
1131
+ format: ["camelCase"],
1132
+ leadingUnderscore: "allow",
1133
+ selector: "parameter"
1134
+ },
1135
+ {
1136
+ format: ["PascalCase"],
1137
+ selector: "class"
1138
+ },
1139
+ {
1140
+ custom: {
1141
+ match: false,
1142
+ regex: "^I[A-Z]"
1143
+ },
1144
+ format: ["PascalCase"],
1145
+ selector: "interface"
1146
+ }
1147
+ ],
1116
1148
  "@typescript-eslint/no-floating-promises": "error",
1117
1149
  "@typescript-eslint/no-for-in-array": "error",
1118
1150
  "@typescript-eslint/no-implied-eval": "error",
@@ -1147,8 +1179,8 @@ async function typescript(options = {}) {
1147
1179
  const files = options.files ?? [GLOB_TS, GLOB_TSX];
1148
1180
  const typeAwareFiles = typeAware.files ?? [GLOB_TS, GLOB_TSX];
1149
1181
  const typeAwareIgnores = typeAware.ignores ?? [`${GLOB_MARKDOWN}/**`, GLOB_ASTRO_TS];
1150
- const tsconfigPath = options.tsconfigPath ?? void 0;
1151
- const isTypeAware = Boolean(tsconfigPath);
1182
+ const tsconfigPath = typeof options.tsconfigPath === "string" && options.tsconfigPath.trim().length > 0 ? options.tsconfigPath : void 0;
1183
+ const isTypeAware = typeof tsconfigPath === "string";
1152
1184
  return requireOf(
1153
1185
  ["typescript-eslint"],
1154
1186
  async () => {
@@ -1180,8 +1212,8 @@ async function typescript(options = {}) {
1180
1212
  plugins: { "@typescript-eslint": tselint.plugin }
1181
1213
  },
1182
1214
  ...isTypeAware ? [
1183
- generateTsConfig("default", files, typeAwareFiles),
1184
- generateTsConfig("type-aware", typeAwareFiles, typeAwareIgnores)
1215
+ generateTsConfig("type-aware", typeAwareFiles, typeAwareIgnores),
1216
+ generateTsConfig("default", files, typeAwareFiles)
1185
1217
  ] : [generateTsConfig("default", files)],
1186
1218
  {
1187
1219
  name: "@bfra.me/typescript/rules",
@@ -1217,34 +1249,6 @@ async function typescript(options = {}) {
1217
1249
  }
1218
1250
  ],
1219
1251
  "@typescript-eslint/method-signature-style": ["error", "property"],
1220
- "@typescript-eslint/naming-convention": [
1221
- "error",
1222
- {
1223
- format: ["camelCase", "PascalCase", "UPPER_CASE"],
1224
- selector: "variableLike"
1225
- },
1226
- {
1227
- format: ["PascalCase"],
1228
- selector: "typeLike"
1229
- },
1230
- {
1231
- format: ["camelCase"],
1232
- leadingUnderscore: "allow",
1233
- selector: "parameter"
1234
- },
1235
- {
1236
- format: ["PascalCase"],
1237
- selector: "class"
1238
- },
1239
- {
1240
- custom: {
1241
- match: false,
1242
- regex: "^I[A-Z]"
1243
- },
1244
- format: ["PascalCase"],
1245
- selector: "interface"
1246
- }
1247
- ],
1248
1252
  "@typescript-eslint/no-array-constructor": "error",
1249
1253
  "@typescript-eslint/no-dupe-class-members": "error",
1250
1254
  "@typescript-eslint/no-dynamic-delete": "off",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bfra.me/eslint-config",
3
- "version": "0.28.2",
3
+ "version": "0.28.3",
4
4
  "description": "Shared ESLint configuration for bfra.me",
5
5
  "keywords": [
6
6
  "bfra.me",
@@ -44,7 +44,7 @@
44
44
  "eslint-merge-processors": "2.0.0",
45
45
  "eslint-plugin-command": "3.3.1",
46
46
  "eslint-plugin-import-x": "4.16.1",
47
- "eslint-plugin-jsdoc": "54.3.1",
47
+ "eslint-plugin-jsdoc": "54.7.0",
48
48
  "eslint-plugin-json-schema-validator": "5.4.1",
49
49
  "eslint-plugin-jsonc": "2.20.1",
50
50
  "eslint-plugin-n": "17.21.3",
@@ -59,16 +59,16 @@
59
59
  "local-pkg": "1.1.2",
60
60
  "package-directory": "8.1.0",
61
61
  "package-manager-detector": "1.3.0",
62
- "typescript-eslint": "8.42.0"
62
+ "typescript-eslint": "8.43.0"
63
63
  },
64
64
  "devDependencies": {
65
65
  "@eslint/config-inspector": "1.2.0",
66
- "@eslint/js": "9.34.0",
66
+ "@eslint/js": "9.35.0",
67
67
  "@types/eslint-config-prettier": "6.11.3",
68
- "@typescript-eslint/types": "8.42.0",
69
- "@vitest/eslint-plugin": "1.3.8",
68
+ "@typescript-eslint/types": "8.43.0",
69
+ "@vitest/eslint-plugin": "1.3.9",
70
70
  "astro-eslint-parser": "1.2.2",
71
- "eslint": "9.34.0",
71
+ "eslint": "9.35.0",
72
72
  "eslint-config-prettier": "10.1.8",
73
73
  "eslint-plugin-astro": "1.3.1",
74
74
  "eslint-plugin-node-dependencies": "1.1.2",
@@ -77,9 +77,9 @@
77
77
  "eslint-typegen": "2.3.0",
78
78
  "tsup": "8.5.0",
79
79
  "tsx": "4.20.5",
80
- "@bfra.me/eslint-config": "0.28.2",
81
- "@bfra.me/prettier-config": "0.16.1",
82
- "@bfra.me/tsconfig": "0.12.0"
80
+ "@bfra.me/eslint-config": "0.28.3",
81
+ "@bfra.me/tsconfig": "0.12.0",
82
+ "@bfra.me/prettier-config": "0.16.1"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "@vitest/eslint-plugin": "^1.1.21",
package/src/config.d.ts CHANGED
@@ -37,8 +37,8 @@ export type ConfigNames =
37
37
  | '@bfra.me/perfectionist'
38
38
  | '@bfra.me/unicorn'
39
39
  | '@bfra.me/typescript/plugins'
40
- | '@bfra.me/typescript/parser'
41
40
  | '@bfra.me/typescript/type-aware-parser'
41
+ | '@bfra.me/typescript/parser'
42
42
  | '@bfra.me/typescript/rules'
43
43
  | '@bfra.me/typescript/type-aware-rules'
44
44
  | '@bfra.me/regexp'
@@ -16,6 +16,38 @@ import {fallback} from './fallback'
16
16
  const TypeAwareRules: Config['rules'] = {
17
17
  '@typescript-eslint/await-thenable': 'error',
18
18
  '@typescript-eslint/dot-notation': ['error', {allowKeywords: true}],
19
+ '@typescript-eslint/naming-convention': [
20
+ 'error',
21
+ {
22
+ format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
23
+ selector: 'variableLike',
24
+ },
25
+ {
26
+ format: ['PascalCase'],
27
+ selector: 'typeLike',
28
+ },
29
+ {
30
+ filter: {
31
+ match: false,
32
+ regex: '(Component|Icon)$',
33
+ },
34
+ format: ['camelCase'],
35
+ leadingUnderscore: 'allow',
36
+ selector: 'parameter',
37
+ },
38
+ {
39
+ format: ['PascalCase'],
40
+ selector: 'class',
41
+ },
42
+ {
43
+ custom: {
44
+ match: false,
45
+ regex: '^I[A-Z]',
46
+ },
47
+ format: ['PascalCase'],
48
+ selector: 'interface',
49
+ },
50
+ ],
19
51
  '@typescript-eslint/no-floating-promises': 'error',
20
52
  '@typescript-eslint/no-for-in-array': 'error',
21
53
  '@typescript-eslint/no-implied-eval': 'error',
@@ -74,8 +106,11 @@ export async function typescript(options: TypeScriptOptions = {}): Promise<Confi
74
106
  const files = options.files ?? [GLOB_TS, GLOB_TSX]
75
107
  const typeAwareFiles = typeAware.files ?? [GLOB_TS, GLOB_TSX]
76
108
  const typeAwareIgnores = typeAware.ignores ?? [`${GLOB_MARKDOWN}/**`, GLOB_ASTRO_TS]
77
- const tsconfigPath = options.tsconfigPath ?? undefined
78
- const isTypeAware = Boolean(tsconfigPath)
109
+ const tsconfigPath =
110
+ typeof options.tsconfigPath === 'string' && options.tsconfigPath.trim().length > 0
111
+ ? options.tsconfigPath
112
+ : undefined
113
+ const isTypeAware = typeof tsconfigPath === 'string'
79
114
 
80
115
  return requireOf(
81
116
  ['typescript-eslint'],
@@ -118,8 +153,8 @@ export async function typescript(options: TypeScriptOptions = {}): Promise<Confi
118
153
 
119
154
  ...(isTypeAware
120
155
  ? [
121
- generateTsConfig('default', files, typeAwareFiles),
122
156
  generateTsConfig('type-aware', typeAwareFiles, typeAwareIgnores),
157
+ generateTsConfig('default', files, typeAwareFiles),
123
158
  ]
124
159
  : [generateTsConfig('default', files)]),
125
160
 
@@ -160,34 +195,6 @@ export async function typescript(options: TypeScriptOptions = {}): Promise<Confi
160
195
  },
161
196
  ],
162
197
  '@typescript-eslint/method-signature-style': ['error', 'property'],
163
- '@typescript-eslint/naming-convention': [
164
- 'error',
165
- {
166
- format: ['camelCase', 'PascalCase', 'UPPER_CASE'],
167
- selector: 'variableLike',
168
- },
169
- {
170
- format: ['PascalCase'],
171
- selector: 'typeLike',
172
- },
173
- {
174
- format: ['camelCase'],
175
- leadingUnderscore: 'allow',
176
- selector: 'parameter',
177
- },
178
- {
179
- format: ['PascalCase'],
180
- selector: 'class',
181
- },
182
- {
183
- custom: {
184
- match: false,
185
- regex: '^I[A-Z]',
186
- },
187
- format: ['PascalCase'],
188
- selector: 'interface',
189
- },
190
- ],
191
198
  '@typescript-eslint/no-array-constructor': 'error',
192
199
  '@typescript-eslint/no-dupe-class-members': 'error',
193
200
  '@typescript-eslint/no-dynamic-delete': 'off',
package/src/rules.d.ts CHANGED
@@ -1515,7 +1515,7 @@ export interface Rules {
1515
1515
  * Reports invalid alignment of JSDoc block asterisks.
1516
1516
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header
1517
1517
  */
1518
- 'jsdoc/check-alignment'?: Linter.RuleEntry<[]>
1518
+ 'jsdoc/check-alignment'?: Linter.RuleEntry<JsdocCheckAlignment>
1519
1519
  /**
1520
1520
  * Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules.
1521
1521
  * @see https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-examples.md#repos-sticky-header
@@ -3570,6 +3570,11 @@ export interface Rules {
3570
3570
  * @see https://eslint.org/docs/latest/rules/prefer-template
3571
3571
  */
3572
3572
  'prefer-template'?: Linter.RuleEntry<[]>
3573
+ /**
3574
+ * Disallow losing originally caught error when re-throwing custom errors
3575
+ * @see https://eslint.org/docs/latest/rules/preserve-caught-error
3576
+ */
3577
+ 'preserve-caught-error'?: Linter.RuleEntry<PreserveCaughtError>
3573
3578
  /**
3574
3579
  * @see https://github.com/prettier/eslint-plugin-prettier#options
3575
3580
  */
@@ -7241,6 +7246,10 @@ type IndentLegacy = []|[("tab" | number)]|[("tab" | number), {
7241
7246
  type InitDeclarations = ([]|["always"] | []|["never"]|["never", {
7242
7247
  ignoreForLoopInit?: boolean
7243
7248
  }])
7249
+ // ----- jsdoc/check-alignment -----
7250
+ type JsdocCheckAlignment = []|[{
7251
+ innerIndent?: number
7252
+ }]
7244
7253
  // ----- jsdoc/check-examples -----
7245
7254
  type JsdocCheckExamples = []|[{
7246
7255
  allowInlineConfig?: boolean
@@ -7530,6 +7539,7 @@ type JsdocRequireJsdoc = []|[{
7530
7539
  enableFixer?: boolean
7531
7540
  exemptEmptyConstructors?: boolean
7532
7541
  exemptEmptyFunctions?: boolean
7542
+ exemptOverloadedImplementations?: boolean
7533
7543
  fixerMessage?: string
7534
7544
  minLineCount?: number
7535
7545
  publicOnly?: (boolean | {
@@ -7546,6 +7556,7 @@ type JsdocRequireJsdoc = []|[{
7546
7556
  FunctionExpression?: boolean
7547
7557
  MethodDefinition?: boolean
7548
7558
  }
7559
+ skipInterveningOverloadedDeclarations?: boolean
7549
7560
  }]
7550
7561
  // ----- jsdoc/require-param -----
7551
7562
  type JsdocRequireParam = []|[{
@@ -12330,6 +12341,11 @@ type PreferReflect = []|[{
12330
12341
  type PreferRegexLiterals = []|[{
12331
12342
  disallowRedundantWrapping?: boolean
12332
12343
  }]
12344
+ // ----- preserve-caught-error -----
12345
+ type PreserveCaughtError = []|[{
12346
+
12347
+ requireCatchParameter?: boolean
12348
+ }]
12333
12349
  // ----- prettier/prettier -----
12334
12350
  type PrettierPrettier = []|[{
12335
12351
  [k: string]: unknown | undefined