@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 +18 -2
- package/lib/index.js +37 -33
- package/package.json +10 -10
- package/src/config.d.ts +1 -1
- package/src/configs/typescript.ts +38 -31
- package/src/rules.d.ts +17 -1
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.
|
|
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
|
|
1151
|
-
const isTypeAware =
|
|
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("
|
|
1184
|
-
generateTsConfig("
|
|
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.
|
|
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.
|
|
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.
|
|
62
|
+
"typescript-eslint": "8.43.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
65
|
"@eslint/config-inspector": "1.2.0",
|
|
66
|
-
"@eslint/js": "9.
|
|
66
|
+
"@eslint/js": "9.35.0",
|
|
67
67
|
"@types/eslint-config-prettier": "6.11.3",
|
|
68
|
-
"@typescript-eslint/types": "8.
|
|
69
|
-
"@vitest/eslint-plugin": "1.3.
|
|
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.
|
|
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.
|
|
81
|
-
"@bfra.me/
|
|
82
|
-
"@bfra.me/
|
|
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 =
|
|
78
|
-
|
|
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
|