@dhzh/eslint-config 0.1.0

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.
@@ -0,0 +1,599 @@
1
+ import { FlatGitignoreOptions } from 'eslint-config-flat-gitignore';
2
+ import { ParserOptions } from '@typescript-eslint/parser';
3
+ import { Options } from 'eslint-processor-vue-blocks';
4
+ import { Linter } from 'eslint';
5
+ import { RuleConfig, MergeIntersection, RenamePrefix, VitestRules, YmlRules, NRules, Prefix, ReactHooksRules, ReactRules, ImportRules, EslintRules, JsoncRules, VueRules, EslintCommentsRules, FlatESLintConfigItem } from '@antfu/eslint-define-config';
6
+ import { RuleOptions as RuleOptions$1 } from '@eslint-types/jsdoc/types';
7
+ import { RuleOptions } from '@eslint-types/typescript-eslint/types';
8
+ import { RuleOptions as RuleOptions$2 } from '@eslint-types/unicorn/types';
9
+ import { Rules as Rules$1 } from 'eslint-plugin-antfu';
10
+ import { UnprefixedRuleOptions, StylisticCustomizeOptions } from '@stylistic/eslint-plugin';
11
+
12
+ /**
13
+ * Vendor types from Prettier so we don't rely on the dependency.
14
+ */
15
+ type VendoredPrettierOptions = Partial<VendoredPrettierOptionsRequired>;
16
+ interface VendoredPrettierOptionsRequired {
17
+ /**
18
+ * Specify the line length that the printer will wrap on.
19
+ * @default 120
20
+ */
21
+ printWidth: number;
22
+ /**
23
+ * Specify the number of spaces per indentation-level.
24
+ */
25
+ tabWidth: number;
26
+ /**
27
+ * Indent lines with tabs instead of spaces
28
+ */
29
+ useTabs?: boolean;
30
+ /**
31
+ * Print semicolons at the ends of statements.
32
+ */
33
+ semi: boolean;
34
+ /**
35
+ * Use single quotes instead of double quotes.
36
+ */
37
+ singleQuote: boolean;
38
+ /**
39
+ * Use single quotes in JSX.
40
+ */
41
+ jsxSingleQuote: boolean;
42
+ /**
43
+ * Print trailing commas wherever possible.
44
+ */
45
+ trailingComma: 'none' | 'es5' | 'all';
46
+ /**
47
+ * Print spaces between brackets in object literals.
48
+ */
49
+ bracketSpacing: boolean;
50
+ /**
51
+ * Put the `>` of a multi-line HTML (HTML, JSX, Vue, Angular) element at the end of the last line instead of being
52
+ * alone on the next line (does not apply to self closing elements).
53
+ */
54
+ bracketSameLine: boolean;
55
+ /**
56
+ * Put the `>` of a multi-line JSX element at the end of the last line instead of being alone on the next line.
57
+ * @deprecated use bracketSameLine instead
58
+ */
59
+ jsxBracketSameLine: boolean;
60
+ /**
61
+ * Format only a segment of a file.
62
+ */
63
+ rangeStart: number;
64
+ /**
65
+ * Format only a segment of a file.
66
+ * @default Number.POSITIVE_INFINITY
67
+ */
68
+ rangeEnd: number;
69
+ /**
70
+ * By default, Prettier will wrap markdown text as-is since some services use a linebreak-sensitive renderer.
71
+ * In some cases you may want to rely on editor/viewer soft wrapping instead, so this option allows you to opt out.
72
+ * @default "preserve"
73
+ */
74
+ proseWrap: 'always' | 'never' | 'preserve';
75
+ /**
76
+ * Include parentheses around a sole arrow function parameter.
77
+ * @default "always"
78
+ */
79
+ arrowParens: 'avoid' | 'always';
80
+ /**
81
+ * Provide ability to support new languages to prettier.
82
+ */
83
+ plugins: Array<string | any>;
84
+ /**
85
+ * How to handle whitespaces in HTML.
86
+ * @default "css"
87
+ */
88
+ htmlWhitespaceSensitivity: 'css' | 'strict' | 'ignore';
89
+ /**
90
+ * Which end of line characters to apply.
91
+ * @default "lf"
92
+ */
93
+ endOfLine: 'auto' | 'lf' | 'crlf' | 'cr';
94
+ /**
95
+ * Change when properties in objects are quoted.
96
+ * @default "as-needed"
97
+ */
98
+ quoteProps: 'as-needed' | 'consistent' | 'preserve';
99
+ /**
100
+ * Whether or not to indent the code inside <script> and <style> tags in Vue files.
101
+ * @default false
102
+ */
103
+ vueIndentScriptAndStyle: boolean;
104
+ /**
105
+ * Enforce single attribute per line in HTML, Vue and JSX.
106
+ * @default false
107
+ */
108
+ singleAttributePerLine: boolean;
109
+ }
110
+
111
+ type WrapRuleConfig<T extends {
112
+ [key: string]: any;
113
+ }> = {
114
+ [K in keyof T]: T[K] extends RuleConfig ? T[K] : RuleConfig<T[K]>;
115
+ };
116
+ type Awaitable<T> = T | Promise<T>;
117
+ type Rules = WrapRuleConfig<MergeIntersection<RenamePrefix<RuleOptions, '@typescript-eslint/', 'ts/'> & RenamePrefix<VitestRules, 'vitest/', 'test/'> & RenamePrefix<YmlRules, 'yml/', 'yaml/'> & RenamePrefix<NRules, 'n/', 'node/'> & Prefix<UnprefixedRuleOptions, 'style/'> & Prefix<Rules$1, 'antfu/'> & ReactHooksRules & ReactRules & RuleOptions$1 & ImportRules & EslintRules & JsoncRules & VueRules & RuleOptions$2 & EslintCommentsRules & {
118
+ 'test/no-only-tests': RuleConfig<[]>;
119
+ }>>;
120
+ type FlatConfigItem = Omit<FlatESLintConfigItem<Rules, false>, 'plugins'> & {
121
+ /**
122
+ * Custom name of each config item
123
+ */
124
+ name?: string;
125
+ /**
126
+ * An object containing a name-value mapping of plugin names to plugin objects. When `files` is specified, these plugins are only available to the matching files.
127
+ *
128
+ * @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration)
129
+ */
130
+ plugins?: Record<string, any>;
131
+ };
132
+ type UserConfigItem = FlatConfigItem | Linter.FlatConfig;
133
+ interface OptionsFiles {
134
+ /**
135
+ * Override the `files` option to provide custom globs.
136
+ */
137
+ files?: string[];
138
+ }
139
+ interface OptionsVue extends OptionsOverrides {
140
+ /**
141
+ * Create virtual files for Vue SFC blocks to enable linting.
142
+ *
143
+ * @see https://github.com/antfu/eslint-processor-vue-blocks
144
+ * @default true
145
+ */
146
+ sfcBlocks?: boolean | Options;
147
+ /**
148
+ * Vue version. Apply different rules set from `eslint-plugin-vue`.
149
+ *
150
+ * @default 3
151
+ */
152
+ vueVersion?: 2 | 3;
153
+ }
154
+ type OptionsTypescript = (OptionsTypeScriptWithTypes & OptionsOverrides) | (OptionsTypeScriptParserOptions & OptionsOverrides);
155
+ interface OptionsFormatters {
156
+ /**
157
+ * Enable formatting support for CSS, Less, Sass, and SCSS.
158
+ *
159
+ * Currently only support Prettier.
160
+ */
161
+ css?: 'prettier' | boolean;
162
+ /**
163
+ * Enable formatting support for HTML.
164
+ *
165
+ * Currently only support Prettier.
166
+ */
167
+ html?: 'prettier' | boolean;
168
+ /**
169
+ * Enable formatting support for Markdown.
170
+ *
171
+ * Support both Prettier and dprint.
172
+ *
173
+ * When set to `true`, it will use Prettier.
174
+ */
175
+ markdown?: 'prettier' | 'dprint' | boolean;
176
+ /**
177
+ * Enable formatting support for GraphQL.
178
+ */
179
+ graphql?: 'prettier' | boolean;
180
+ /**
181
+ * Custom options for Prettier.
182
+ *
183
+ * By default it's controlled by our own config.
184
+ */
185
+ prettierOptions?: VendoredPrettierOptions;
186
+ /**
187
+ * Custom options for dprint.
188
+ *
189
+ * By default it's controlled by our own config.
190
+ */
191
+ dprintOptions?: boolean;
192
+ /**
193
+ * Install the prettier plugin for handle Slidev markdown
194
+ *
195
+ * Only works when `markdown` is enabled with `prettier`.
196
+ */
197
+ slidev?: boolean | {
198
+ files?: string[];
199
+ };
200
+ /**
201
+ * Enable formatting support for Astro.
202
+ *
203
+ * Currently only support Prettier.
204
+ */
205
+ astro?: 'prettier' | boolean;
206
+ }
207
+ interface OptionsComponentExts {
208
+ /**
209
+ * Additional extensions for components.
210
+ *
211
+ * @example ['vue']
212
+ * @default []
213
+ */
214
+ componentExts?: string[];
215
+ }
216
+ interface OptionsTypeScriptParserOptions {
217
+ /**
218
+ * Additional parser options for TypeScript.
219
+ */
220
+ parserOptions?: Partial<ParserOptions>;
221
+ /**
222
+ * Glob patterns for files that should be type aware.
223
+ * @default ['**\/*.{ts,tsx}']
224
+ */
225
+ filesTypeAware?: string[];
226
+ }
227
+ interface OptionsTypeScriptWithTypes {
228
+ /**
229
+ * When this options is provided, type aware rules will be enabled.
230
+ * @see https://typescript-eslint.io/linting/typed-linting/
231
+ */
232
+ tsconfigPath?: string | string[];
233
+ }
234
+ interface OptionsHasTypeScript {
235
+ typescript?: boolean;
236
+ }
237
+ interface OptionsStylistic {
238
+ stylistic?: boolean | StylisticConfig;
239
+ }
240
+ interface StylisticConfig extends Pick<StylisticCustomizeOptions, 'indent' | 'quotes' | 'jsx' | 'semi'> {
241
+ }
242
+ interface OptionsOverrides {
243
+ overrides?: FlatConfigItem['rules'];
244
+ }
245
+ interface OptionsIsInEditor {
246
+ isInEditor?: boolean;
247
+ }
248
+ interface OptionsUnoCSS extends OptionsOverrides {
249
+ /**
250
+ * Enable attributify support.
251
+ * @default true
252
+ */
253
+ attributify?: boolean;
254
+ /**
255
+ * Enable strict mode by throwing errors about blocklisted classes.
256
+ * @default false
257
+ */
258
+ strict?: boolean;
259
+ }
260
+ interface OptionsConfig extends OptionsComponentExts {
261
+ /**
262
+ * Enable gitignore support.
263
+ *
264
+ * Passing an object to configure the options.
265
+ *
266
+ * @see https://github.com/antfu/eslint-config-flat-gitignore
267
+ * @default true
268
+ */
269
+ gitignore?: boolean | FlatGitignoreOptions;
270
+ /**
271
+ * Core rules. Can't be disabled.
272
+ */
273
+ javascript?: OptionsOverrides;
274
+ /**
275
+ * Enable TypeScript support.
276
+ *
277
+ * Passing an object to enable TypeScript Language Server support.
278
+ *
279
+ * @default auto-detect based on the dependencies
280
+ */
281
+ typescript?: boolean | OptionsTypescript;
282
+ /**
283
+ * Enable JSX related rules.
284
+ *
285
+ * Currently only stylistic rules are included.
286
+ *
287
+ * @default true
288
+ */
289
+ jsx?: boolean;
290
+ /**
291
+ * Enable test support.
292
+ *
293
+ * @default true
294
+ */
295
+ test?: boolean | OptionsOverrides;
296
+ /**
297
+ * Enable Vue support.
298
+ *
299
+ * @default auto-detect based on the dependencies
300
+ */
301
+ vue?: boolean | OptionsVue;
302
+ /**
303
+ * Enable JSONC support.
304
+ *
305
+ * @default true
306
+ */
307
+ jsonc?: boolean | OptionsOverrides;
308
+ /**
309
+ * Enable YAML support.
310
+ *
311
+ * @default true
312
+ */
313
+ yaml?: boolean | OptionsOverrides;
314
+ /**
315
+ * Enable TOML support.
316
+ *
317
+ * @default true
318
+ */
319
+ toml?: boolean | OptionsOverrides;
320
+ /**
321
+ * Enable ASTRO support.
322
+ *
323
+ * Requires installing:
324
+ * - `eslint-plugin-astro`
325
+ *
326
+ * Requires installing for formatting .astro:
327
+ * - `prettier-plugin-astro`
328
+ *
329
+ * @default false
330
+ */
331
+ astro?: boolean | OptionsOverrides;
332
+ /**
333
+ * Enable linting for **code snippets** in Markdown.
334
+ *
335
+ * For formatting Markdown content, enable also `formatters.markdown`.
336
+ *
337
+ * @default true
338
+ */
339
+ markdown?: boolean | OptionsOverrides;
340
+ /**
341
+ * Enable stylistic rules.
342
+ *
343
+ * @default true
344
+ */
345
+ stylistic?: boolean | (StylisticConfig & OptionsOverrides);
346
+ /**
347
+ * Enable react rules.
348
+ *
349
+ * Requires installing:
350
+ * - `eslint-plugin-react`
351
+ * - `eslint-plugin-react-hooks`
352
+ * - `eslint-plugin-react-refresh`
353
+ *
354
+ * @default false
355
+ */
356
+ react?: boolean | OptionsOverrides;
357
+ /**
358
+ * Enable svelte rules.
359
+ *
360
+ * Requires installing:
361
+ * - `eslint-plugin-svelte`
362
+ *
363
+ * @default false
364
+ */
365
+ svelte?: boolean;
366
+ /**
367
+ * Enable unocss rules.
368
+ *
369
+ * Requires installing:
370
+ * - `@unocss/eslint-plugin`
371
+ *
372
+ * @default false
373
+ */
374
+ unocss?: boolean | OptionsUnoCSS;
375
+ /**
376
+ * Use external formatters to format files.
377
+ *
378
+ * Requires installing:
379
+ * - `eslint-plugin-format`
380
+ *
381
+ * When set to `true`, it will enable all formatters.
382
+ *
383
+ * @default false
384
+ */
385
+ formatters?: boolean | OptionsFormatters;
386
+ /**
387
+ * Control to disable some rules in editors.
388
+ * @default auto-detect based on the process.env
389
+ */
390
+ isInEditor?: boolean;
391
+ /**
392
+ * Automatically rename plugins in the config.
393
+ *
394
+ * @default true
395
+ */
396
+ autoRenamePlugins?: boolean;
397
+ /**
398
+ * Provide overrides for rules for each integration.
399
+ *
400
+ * @deprecated use `overrides` option in each integration key instead
401
+ */
402
+ overrides?: {
403
+ stylistic?: FlatConfigItem['rules'];
404
+ javascript?: FlatConfigItem['rules'];
405
+ typescript?: FlatConfigItem['rules'];
406
+ test?: FlatConfigItem['rules'];
407
+ vue?: FlatConfigItem['rules'];
408
+ jsonc?: FlatConfigItem['rules'];
409
+ markdown?: FlatConfigItem['rules'];
410
+ yaml?: FlatConfigItem['rules'];
411
+ toml?: FlatConfigItem['rules'];
412
+ react?: FlatConfigItem['rules'];
413
+ svelte?: FlatConfigItem['rules'];
414
+ };
415
+ }
416
+
417
+ declare const defaultPluginRenaming: {
418
+ '@stylistic': string;
419
+ '@typescript-eslint': string;
420
+ 'import-x': string;
421
+ n: string;
422
+ vitest: string;
423
+ yml: string;
424
+ };
425
+ /**
426
+ * Construct an array of ESLint flat config items.
427
+ *
428
+ * @param {OptionsConfig & FlatConfigItem} options
429
+ * The options for generating the ESLint configurations.
430
+ * @param {Awaitable<UserConfigItem | UserConfigItem[]>[]} userConfigs
431
+ * The user configurations to be merged with the generated configurations.
432
+ * @returns {Promise<UserConfigItem[]>}
433
+ * The merged ESLint configurations.
434
+ */
435
+ declare function dhzh(options?: OptionsConfig & FlatConfigItem, ...userConfigs: Awaitable<UserConfigItem | UserConfigItem[]>[]): Promise<UserConfigItem[]>;
436
+ type ResolvedOptions<T> = T extends boolean ? never : NonNullable<T>;
437
+ declare function resolveSubOptions<K extends keyof OptionsConfig>(options: OptionsConfig, key: K): ResolvedOptions<OptionsConfig[K]>;
438
+ declare function getOverrides<K extends keyof OptionsConfig>(options: OptionsConfig, key: K): any;
439
+
440
+ declare function comments(): Promise<FlatConfigItem[]>;
441
+
442
+ declare function ignores(): Promise<FlatConfigItem[]>;
443
+
444
+ declare function imports(options?: OptionsStylistic): Promise<FlatConfigItem[]>;
445
+
446
+ declare function javascript(options?: OptionsIsInEditor & OptionsOverrides): Promise<FlatConfigItem[]>;
447
+
448
+ declare function jsdoc(options?: OptionsStylistic): Promise<FlatConfigItem[]>;
449
+
450
+ declare function jsonc(options?: OptionsFiles & OptionsStylistic & OptionsOverrides): Promise<FlatConfigItem[]>;
451
+
452
+ declare function markdown(options?: OptionsFiles & OptionsComponentExts & OptionsOverrides): Promise<FlatConfigItem[]>;
453
+
454
+ declare function node(): Promise<FlatConfigItem[]>;
455
+
456
+ /**
457
+ * Optional perfectionist plugin for props and items sorting.
458
+ *
459
+ * @see https://github.com/azat-io/eslint-plugin-perfectionist
460
+ */
461
+ declare function perfectionist(): Promise<FlatConfigItem[]>;
462
+
463
+ declare function formatters(options?: OptionsFormatters | true, stylistic?: StylisticConfig): Promise<FlatConfigItem[]>;
464
+
465
+ declare function react(options?: OptionsHasTypeScript & OptionsOverrides & OptionsFiles): Promise<FlatConfigItem[]>;
466
+
467
+ /**
468
+ * Sort package.json
469
+ *
470
+ * Requires `jsonc` config
471
+ */
472
+ declare function sortPackageJson(): Promise<FlatConfigItem[]>;
473
+ /**
474
+ * Sort tsconfig.json
475
+ *
476
+ * Requires `jsonc` config
477
+ */
478
+ declare function sortTsconfig(): FlatConfigItem[];
479
+
480
+ declare const StylisticConfigDefaults: StylisticConfig;
481
+ declare function stylistic(options?: StylisticConfig & OptionsOverrides): Promise<FlatConfigItem[]>;
482
+
483
+ declare function svelte(options?: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles): Promise<FlatConfigItem[]>;
484
+
485
+ declare function test(options?: OptionsFiles & OptionsIsInEditor & OptionsOverrides): Promise<FlatConfigItem[]>;
486
+
487
+ declare function typescript(options?: OptionsFiles & OptionsComponentExts & OptionsOverrides & OptionsTypeScriptWithTypes & OptionsTypeScriptParserOptions): Promise<FlatConfigItem[]>;
488
+
489
+ declare function unicorn(): Promise<FlatConfigItem[]>;
490
+
491
+ declare function unocss(options?: OptionsUnoCSS): Promise<FlatConfigItem[]>;
492
+
493
+ declare function vue(options?: OptionsVue & OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles): Promise<FlatConfigItem[]>;
494
+
495
+ declare function yaml(options?: OptionsOverrides & OptionsStylistic & OptionsFiles): Promise<FlatConfigItem[]>;
496
+
497
+ declare function toml(options?: OptionsOverrides & OptionsStylistic & OptionsFiles): Promise<FlatConfigItem[]>;
498
+
499
+ declare function astro(options?: OptionsOverrides & OptionsStylistic & OptionsFiles): Promise<FlatConfigItem[]>;
500
+
501
+ declare const GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
502
+ declare const GLOB_SRC = "**/*.?([cm])[jt]s?(x)";
503
+ declare const GLOB_JS = "**/*.?([cm])js";
504
+ declare const GLOB_JSX = "**/*.?([cm])jsx";
505
+ declare const GLOB_TS = "**/*.?([cm])ts";
506
+ declare const GLOB_TSX = "**/*.?([cm])tsx";
507
+ declare const GLOB_STYLE = "**/*.{c,le,sc}ss";
508
+ declare const GLOB_CSS = "**/*.css";
509
+ declare const GLOB_POSTCSS = "**/*.{p,post}css";
510
+ declare const GLOB_LESS = "**/*.less";
511
+ declare const GLOB_SCSS = "**/*.scss";
512
+ declare const GLOB_JSON = "**/*.json";
513
+ declare const GLOB_JSON5 = "**/*.json5";
514
+ declare const GLOB_JSONC = "**/*.jsonc";
515
+ declare const GLOB_MARKDOWN = "**/*.md";
516
+ declare const GLOB_MARKDOWN_IN_MARKDOWN = "**/*.md/*.md";
517
+ declare const GLOB_SVELTE = "**/*.svelte";
518
+ declare const GLOB_VUE = "**/*.vue";
519
+ declare const GLOB_YAML = "**/*.y?(a)ml";
520
+ declare const GLOB_TOML = "**/*.toml";
521
+ declare const GLOB_HTML = "**/*.htm?(l)";
522
+ declare const GLOB_ASTRO = "**/*.astro";
523
+ declare const GLOB_MARKDOWN_CODE = "**/*.md/**/*.?([cm])[jt]s?(x)";
524
+ declare const GLOB_TESTS: string[];
525
+ declare const GLOB_ALL_SRC: string[];
526
+ declare const GLOB_EXCLUDE: string[];
527
+
528
+ declare const parserPlain: {
529
+ meta: {
530
+ name: string;
531
+ };
532
+ parseForESLint: (code: string) => {
533
+ ast: {
534
+ body: never[];
535
+ comments: never[];
536
+ loc: {
537
+ end: number;
538
+ start: number;
539
+ };
540
+ range: number[];
541
+ tokens: never[];
542
+ type: string;
543
+ };
544
+ scopeManager: null;
545
+ services: {
546
+ isPlain: boolean;
547
+ };
548
+ visitorKeys: {
549
+ Program: never[];
550
+ };
551
+ };
552
+ };
553
+ /**
554
+ * Combine array and non-array configs into a single array.
555
+ */
556
+ declare function combine(...configs: Awaitable<UserConfigItem | UserConfigItem[]>[]): Promise<UserConfigItem[]>;
557
+ /**
558
+ * Rename plugin prefixes in a rule object.
559
+ * Accepts a map of prefixes to rename.
560
+ *
561
+ * @example
562
+ * ```ts
563
+ * import { renameRules } from '@dhzh/eslint-config'
564
+ *
565
+ * export default [{
566
+ * rules: renameRules(
567
+ * {
568
+ * '@typescript-eslint/indent': 'error'
569
+ * },
570
+ * { '@typescript-eslint': 'ts' }
571
+ * )
572
+ * }]
573
+ * ```
574
+ */
575
+ declare function renameRules(rules: Record<string, any>, map: Record<string, string>): {
576
+ [k: string]: any;
577
+ };
578
+ /**
579
+ * Rename plugin names a flat configs array
580
+ *
581
+ * @example
582
+ * ```ts
583
+ * import { renamePluginInConfigs } from '@dhzh/eslint-config'
584
+ * import someConfigs from './some-configs'
585
+ *
586
+ * export default renamePluginInConfigs(someConfigs, {
587
+ * '@typescript-eslint': 'ts',
588
+ * 'import-x': 'import',
589
+ * })
590
+ * ```
591
+ */
592
+ declare function renamePluginInConfigs(configs: UserConfigItem[], map: Record<string, string>): UserConfigItem[];
593
+ declare function toArray<T>(value: T | T[]): T[];
594
+ declare function interopDefault<T>(m: Awaitable<T>): Promise<T extends {
595
+ default: infer U;
596
+ } ? U : T>;
597
+ declare function ensurePackages(packages: (string | undefined)[]): Promise<void>;
598
+
599
+ export { type Awaitable, type FlatConfigItem, GLOB_ALL_SRC, GLOB_ASTRO, GLOB_CSS, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_SVELTE, GLOB_TESTS, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_VUE, GLOB_YAML, type OptionsComponentExts, type OptionsConfig, type OptionsFiles, type OptionsFormatters, type OptionsHasTypeScript, type OptionsIsInEditor, type OptionsOverrides, type OptionsStylistic, type OptionsTypeScriptParserOptions, type OptionsTypeScriptWithTypes, type OptionsTypescript, type OptionsUnoCSS, type OptionsVue, type ResolvedOptions, type Rules, type StylisticConfig, StylisticConfigDefaults, type UserConfigItem, type WrapRuleConfig, astro, combine, comments, dhzh as default, defaultPluginRenaming, dhzh, ensurePackages, formatters, getOverrides, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, node, parserPlain, perfectionist, react, renamePluginInConfigs, renameRules, resolveSubOptions, sortPackageJson, sortTsconfig, stylistic, svelte, test, toArray, toml, typescript, unicorn, unocss, vue, yaml };