oxlint-react-compiler-experimental 0.0.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,735 @@
1
+ //#region src-js/package/config.generated.d.ts
2
+ type AllowWarnDeny = ("allow" | "off" | "warn" | "error" | "deny") | number;
3
+ type GlobalValue = "readonly" | "writable" | "off";
4
+ type ExternalPluginEntry = string | {
5
+ /**
6
+ * Custom name/alias for the plugin.
7
+ *
8
+ * Note: The following plugin names are reserved because they are implemented natively in Rust within oxlint and cannot be used for JS plugins:
9
+ * - react (includes react-hooks)
10
+ * - unicorn
11
+ * - typescript (includes @typescript-eslint)
12
+ * - oxc
13
+ * - import (includes import-x)
14
+ * - jsdoc
15
+ * - jest
16
+ * - vitest
17
+ * - jsx-a11y
18
+ * - nextjs
19
+ * - react-perf
20
+ * - promise
21
+ * - node
22
+ * - vue
23
+ * - eslint
24
+ *
25
+ * If you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts.
26
+ */
27
+ name: string;
28
+ /**
29
+ * Path or package name of the plugin
30
+ */
31
+ specifier: string;
32
+ };
33
+ /**
34
+ * A set of glob patterns.
35
+ */
36
+ type GlobSet = string[];
37
+ type LintPluginOptionsSchema = "eslint" | "react" | "unicorn" | "typescript" | "oxc" | "import" | "jsdoc" | "jest" | "vitest" | "jsx-a11y" | "nextjs" | "react-perf" | "promise" | "node" | "vue";
38
+ type LintPlugins = LintPluginOptionsSchema[];
39
+ type DummyRule = AllowWarnDeny | unknown[];
40
+ type OxlintOverrides = OxlintOverride[];
41
+ type TagNamePreference = string | {
42
+ message: string;
43
+ replacement: string;
44
+ [k: string]: unknown;
45
+ } | {
46
+ message: string;
47
+ [k: string]: unknown;
48
+ } | boolean;
49
+ type OneOrManyFor_String = string | string[];
50
+ type CustomComponent = string | {
51
+ attribute: string;
52
+ name: string;
53
+ [k: string]: unknown;
54
+ } | {
55
+ attributes: string[];
56
+ name: string;
57
+ [k: string]: unknown;
58
+ };
59
+ /**
60
+ * Oxlint Configuration File
61
+ *
62
+ * This configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).
63
+ *
64
+ * Usage: `oxlint -c oxlintrc.json`
65
+ *
66
+ * Example
67
+ *
68
+ * `.oxlintrc.json`
69
+ *
70
+ * ```json
71
+ * {
72
+ * "$schema": "./node_modules/oxlint/configuration_schema.json",
73
+ * "plugins": [
74
+ * "import",
75
+ * "typescript",
76
+ * "unicorn"
77
+ * ],
78
+ * "env": {
79
+ * "browser": true
80
+ * },
81
+ * "globals": {
82
+ * "foo": "readonly"
83
+ * },
84
+ * "settings": {
85
+ * "react": {
86
+ * "version": "18.2.0"
87
+ * },
88
+ * "custom": {
89
+ * "option": true
90
+ * }
91
+ * },
92
+ * "rules": {
93
+ * "eqeqeq": "warn",
94
+ * "import/no-cycle": "error",
95
+ * "react/self-closing-comp": [
96
+ * "error",
97
+ * {
98
+ * "html": false
99
+ * }
100
+ * ]
101
+ * },
102
+ * "overrides": [
103
+ * {
104
+ * "files": [
105
+ * "*.test.ts",
106
+ * "*.spec.ts"
107
+ * ],
108
+ * "rules": {
109
+ * "@typescript-eslint/no-explicit-any": "off"
110
+ * }
111
+ * }
112
+ * ]
113
+ * }
114
+ * ```
115
+ *
116
+ * `oxlint.config.ts`
117
+ *
118
+ * ```ts
119
+ * import { defineConfig } from "oxlint";
120
+ *
121
+ * export default defineConfig({
122
+ * plugins: ["import", "typescript", "unicorn"],
123
+ * env: {
124
+ * "browser": true
125
+ * },
126
+ * globals: {
127
+ * "foo": "readonly"
128
+ * },
129
+ * settings: {
130
+ * react: {
131
+ * version: "18.2.0"
132
+ * },
133
+ * custom: { option: true }
134
+ * },
135
+ * rules: {
136
+ * "eqeqeq": "warn",
137
+ * "import/no-cycle": "error",
138
+ * "react/self-closing-comp": ["error", { "html": false }]
139
+ * },
140
+ * overrides: [
141
+ * {
142
+ * files: ["*.test.ts", "*.spec.ts"],
143
+ * rules: {
144
+ * "@typescript-eslint/no-explicit-any": "off"
145
+ * }
146
+ * }
147
+ * ]
148
+ * }
149
+ * });
150
+ * ```
151
+ *
152
+ * `oxlint.config.ts`
153
+ *
154
+ * ```ts
155
+ * import { defineConfig } from "oxlint";
156
+ *
157
+ * export default defineConfig({
158
+ * plugins: ["import", "typescript", "unicorn"],
159
+ * env: {
160
+ * "browser": true
161
+ * },
162
+ * globals: {
163
+ * "foo": "readonly"
164
+ * },
165
+ * settings: {
166
+ * react: {
167
+ * version: "18.2.0"
168
+ * },
169
+ * custom: { option: true }
170
+ * },
171
+ * rules: {
172
+ * "eqeqeq": "warn",
173
+ * "import/no-cycle": "error",
174
+ * "react/self-closing-comp": ["error", { "html": false }]
175
+ * },
176
+ * overrides: [
177
+ * {
178
+ * files: ["*.test.ts", "*.spec.ts"],
179
+ * rules: {
180
+ * "@typescript-eslint/no-explicit-any": "off"
181
+ * }
182
+ * }
183
+ * ]
184
+ * }
185
+ * });
186
+ * ```
187
+ */
188
+ interface Oxlintrc$1 {
189
+ /**
190
+ * Schema URI for editor tooling.
191
+ */
192
+ $schema?: string | null;
193
+ categories?: RuleCategories;
194
+ /**
195
+ * Environments enable and disable collections of global variables.
196
+ */
197
+ env?: OxlintEnv;
198
+ /**
199
+ * Paths of configuration files that this configuration file extends (inherits from). The files
200
+ * are resolved relative to the location of the configuration file that contains the `extends`
201
+ * property. The configuration files are merged from the first to the last, with the last file
202
+ * overriding the previous ones.
203
+ */
204
+ extends?: string[];
205
+ /**
206
+ * Enabled or disabled specific global variables.
207
+ */
208
+ globals?: OxlintGlobals;
209
+ /**
210
+ * Globs to ignore during linting. These are resolved from the configuration file path.
211
+ */
212
+ ignorePatterns?: string[];
213
+ /**
214
+ * JS plugins, allows usage of ESLint plugins with Oxlint.
215
+ *
216
+ * Read more about JS plugins in
217
+ * [the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).
218
+ *
219
+ * Note: JS plugins are experimental and not subject to semver.
220
+ *
221
+ * Examples:
222
+ *
223
+ * Basic usage with a local plugin path.
224
+ *
225
+ * ```json
226
+ * {
227
+ * "jsPlugins": [
228
+ * "./custom-plugin.js"
229
+ * ],
230
+ * "rules": {
231
+ * "custom/rule-name": "warn"
232
+ * }
233
+ * }
234
+ * ```
235
+ *
236
+ * Using a built-in Rust plugin alongside a JS plugin with the same name
237
+ * by giving the JS plugin an alias.
238
+ *
239
+ * ```json
240
+ * {
241
+ * "plugins": [
242
+ * "import"
243
+ * ],
244
+ * "jsPlugins": [
245
+ * {
246
+ * "name": "import-js",
247
+ * "specifier": "eslint-plugin-import"
248
+ * }
249
+ * ],
250
+ * "rules": {
251
+ * "import/no-cycle": "error",
252
+ * "import-js/no-unresolved": "warn"
253
+ * }
254
+ * }
255
+ * ```
256
+ */
257
+ jsPlugins?: null | ExternalPluginEntry[];
258
+ /**
259
+ * Oxlint config options.
260
+ */
261
+ options?: OxlintOptions;
262
+ /**
263
+ * Add, remove, or otherwise reconfigure rules for specific files or groups of files.
264
+ */
265
+ overrides?: OxlintOverrides;
266
+ /**
267
+ * Enabled built-in plugins for Oxlint.
268
+ * You can view the list of available plugins on
269
+ * [the website](https://oxc.rs/docs/guide/usage/linter/plugins.html#supported-plugins).
270
+ *
271
+ * NOTE: Setting the `plugins` field will overwrite the base set of plugins.
272
+ * The `plugins` array should reflect all of the plugins you want to use.
273
+ */
274
+ plugins?: LintPlugins | null;
275
+ /**
276
+ * Example
277
+ *
278
+ * `.oxlintrc.json`
279
+ *
280
+ * ```json
281
+ * {
282
+ * "$schema": "./node_modules/oxlint/configuration_schema.json",
283
+ * "rules": {
284
+ * "eqeqeq": "warn",
285
+ * "import/no-cycle": "error",
286
+ * "prefer-const": [
287
+ * "error",
288
+ * {
289
+ * "ignoreReadBeforeAssign": true
290
+ * }
291
+ * ]
292
+ * }
293
+ * }
294
+ * ```
295
+ *
296
+ * See [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html) for the list of
297
+ * rules.
298
+ */
299
+ rules?: DummyRuleMap;
300
+ /**
301
+ * Plugin-specific configuration for both built-in and custom plugins.
302
+ * This includes settings for built-in plugins such as `react` and `jsdoc`
303
+ * as well as configuring settings for JS custom plugins loaded via `jsPlugins`.
304
+ */
305
+ settings?: OxlintPluginSettings;
306
+ }
307
+ /**
308
+ * Configure an entire category of rules all at once.
309
+ *
310
+ * Rules enabled or disabled this way will be overwritten by individual rules in the `rules` field.
311
+ *
312
+ * Example
313
+ * ```json
314
+ * {
315
+ * "$schema": "./node_modules/oxlint/configuration_schema.json",
316
+ * "categories": {
317
+ * "correctness": "warn"
318
+ * },
319
+ * "rules": {
320
+ * "eslint/no-unused-vars": "error"
321
+ * }
322
+ * }
323
+ * ```
324
+ */
325
+ interface RuleCategories {
326
+ correctness?: AllowWarnDeny;
327
+ nursery?: AllowWarnDeny;
328
+ pedantic?: AllowWarnDeny;
329
+ perf?: AllowWarnDeny;
330
+ restriction?: AllowWarnDeny;
331
+ style?: AllowWarnDeny;
332
+ suspicious?: AllowWarnDeny;
333
+ }
334
+ /**
335
+ * Predefine global variables.
336
+ *
337
+ * Environments specify what global variables are predefined.
338
+ * See [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)
339
+ * for what environments are available and what each one provides.
340
+ */
341
+ interface OxlintEnv {
342
+ [k: string]: boolean;
343
+ }
344
+ /**
345
+ * Add or remove global variables.
346
+ *
347
+ * For each global variable, set the corresponding value equal to `"writable"`
348
+ * to allow the variable to be overwritten or `"readonly"` to disallow overwriting.
349
+ *
350
+ * Globals can be disabled by setting their value to `"off"`. For example, in
351
+ * an environment where most Es2015 globals are available but `Promise` is unavailable,
352
+ * you might use this config:
353
+ *
354
+ * ```json
355
+ * {
356
+ * "$schema": "./node_modules/oxlint/configuration_schema.json",
357
+ * "env": {
358
+ * "es6": true
359
+ * },
360
+ * "globals": {
361
+ * "Promise": "off"
362
+ * }
363
+ * }
364
+ * ```
365
+ *
366
+ * You may also use `"readable"` or `false` to represent `"readonly"`, and
367
+ * `"writeable"` or `true` to represent `"writable"`.
368
+ */
369
+ interface OxlintGlobals {
370
+ [k: string]: GlobalValue;
371
+ }
372
+ /**
373
+ * Options for the linter.
374
+ */
375
+ interface OxlintOptions {
376
+ /**
377
+ * Report unused disable directives (e.g. `// oxlint-disable-line` or `// eslint-disable-line`).
378
+ *
379
+ * Equivalent to passing `--report-unused-disable-directives-severity` on the CLI.
380
+ * CLI flags take precedence over this value when both are set.
381
+ * Only supported in the root configuration file.
382
+ */
383
+ reportUnusedDisableDirectives?: AllowWarnDeny | null;
384
+ /**
385
+ * Ensure warnings produce a non-zero exit code.
386
+ *
387
+ * Equivalent to passing `--deny-warnings` on the CLI.
388
+ */
389
+ denyWarnings?: boolean | null;
390
+ /**
391
+ * Specify a warning threshold. Exits with an error status if warnings exceed this value.
392
+ *
393
+ * Equivalent to passing `--max-warnings` on the CLI.
394
+ */
395
+ maxWarnings?: number | null;
396
+ /**
397
+ * Enable rules that require type information.
398
+ *
399
+ * Equivalent to passing `--type-aware` on the CLI.
400
+ *
401
+ * Note that this requires the `oxlint-tsgolint` package to be installed.
402
+ */
403
+ typeAware?: boolean | null;
404
+ /**
405
+ * Enable experimental type checking (includes TypeScript compiler diagnostics).
406
+ *
407
+ * Equivalent to passing `--type-check` on the CLI.
408
+ *
409
+ * Note that this requires the `oxlint-tsgolint` package to be installed.
410
+ */
411
+ typeCheck?: boolean | null;
412
+ }
413
+ interface OxlintOverride {
414
+ /**
415
+ * Environments enable and disable collections of global variables.
416
+ */
417
+ env?: OxlintEnv | null;
418
+ /**
419
+ * A list of glob patterns to override.
420
+ *
421
+ * ## Example
422
+ * `[ "*.test.ts", "*.spec.ts" ]`
423
+ */
424
+ files: GlobSet;
425
+ /**
426
+ * Enabled or disabled specific global variables.
427
+ */
428
+ globals?: OxlintGlobals | null;
429
+ /**
430
+ * JS plugins for this override, allows usage of ESLint plugins with Oxlint.
431
+ *
432
+ * Read more about JS plugins in
433
+ * [the docs](https://oxc.rs/docs/guide/usage/linter/js-plugins.html).
434
+ *
435
+ * Note: JS plugins are experimental and not subject to semver.
436
+ */
437
+ jsPlugins?: null | ExternalPluginEntry[];
438
+ /**
439
+ * Optionally change what plugins are enabled for this override. When
440
+ * omitted, the base config's plugins are used.
441
+ */
442
+ plugins?: LintPlugins | null;
443
+ rules?: DummyRuleMap;
444
+ }
445
+ /**
446
+ * See [Oxlint Rules](https://oxc.rs/docs/guide/usage/linter/rules.html)
447
+ */
448
+ interface DummyRuleMap {
449
+ [k: string]: DummyRule;
450
+ }
451
+ /**
452
+ * Configure the behavior of linter plugins.
453
+ *
454
+ * Here's an example if you're using Next.js in a monorepo:
455
+ *
456
+ * ```json
457
+ * {
458
+ * "settings": {
459
+ * "next": {
460
+ * "rootDir": "apps/dashboard/"
461
+ * },
462
+ * "react": {
463
+ * "linkComponents": [
464
+ * {
465
+ * "name": "Link",
466
+ * "linkAttribute": "to"
467
+ * }
468
+ * ]
469
+ * },
470
+ * "jsx-a11y": {
471
+ * "components": {
472
+ * "Link": "a",
473
+ * "Button": "button"
474
+ * }
475
+ * }
476
+ * }
477
+ * }
478
+ * ```
479
+ */
480
+ interface OxlintPluginSettings {
481
+ jsdoc?: JSDocPluginSettings;
482
+ "jsx-a11y"?: JSXA11YPluginSettings;
483
+ next?: NextPluginSettings;
484
+ react?: ReactPluginSettings;
485
+ vitest?: VitestPluginSettings;
486
+ [k: string]: unknown;
487
+ }
488
+ interface JSDocPluginSettings {
489
+ /**
490
+ * Only for `require-(yields|returns|description|example|param|throws)` rule
491
+ */
492
+ augmentsExtendsReplacesDocs?: boolean;
493
+ /**
494
+ * Only for `require-param-type` and `require-param-description` rule
495
+ */
496
+ exemptDestructuredRootsFromChecks?: boolean;
497
+ /**
498
+ * For all rules but NOT apply to `empty-tags` rule
499
+ */
500
+ ignoreInternal?: boolean;
501
+ /**
502
+ * For all rules but NOT apply to `check-access` and `empty-tags` rule
503
+ */
504
+ ignorePrivate?: boolean;
505
+ /**
506
+ * Only for `require-(yields|returns|description|example|param|throws)` rule
507
+ */
508
+ ignoreReplacesDocs?: boolean;
509
+ /**
510
+ * Only for `require-(yields|returns|description|example|param|throws)` rule
511
+ */
512
+ implementsReplacesDocs?: boolean;
513
+ /**
514
+ * Only for `require-(yields|returns|description|example|param|throws)` rule
515
+ */
516
+ overrideReplacesDocs?: boolean;
517
+ tagNamePreference?: {
518
+ [k: string]: TagNamePreference;
519
+ };
520
+ [k: string]: unknown;
521
+ }
522
+ /**
523
+ * Configure JSX A11y plugin rules.
524
+ *
525
+ * See
526
+ * [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s
527
+ * configuration for a full reference.
528
+ */
529
+ interface JSXA11YPluginSettings {
530
+ /**
531
+ * Map of attribute names to their DOM equivalents.
532
+ * This is useful for non-React frameworks that use different attribute names.
533
+ *
534
+ * Example:
535
+ *
536
+ * ```json
537
+ * {
538
+ * "settings": {
539
+ * "jsx-a11y": {
540
+ * "attributes": {
541
+ * "for": [
542
+ * "htmlFor",
543
+ * "for"
544
+ * ]
545
+ * }
546
+ * }
547
+ * }
548
+ * }
549
+ * ```
550
+ */
551
+ attributes?: {
552
+ [k: string]: string[];
553
+ };
554
+ /**
555
+ * To have your custom components be checked as DOM elements, you can
556
+ * provide a mapping of your component names to the DOM element name.
557
+ *
558
+ * Example:
559
+ *
560
+ * ```json
561
+ * {
562
+ * "settings": {
563
+ * "jsx-a11y": {
564
+ * "components": {
565
+ * "Link": "a",
566
+ * "IconButton": "button"
567
+ * }
568
+ * }
569
+ * }
570
+ * }
571
+ * ```
572
+ */
573
+ components?: {
574
+ [k: string]: string;
575
+ };
576
+ /**
577
+ * An optional setting that define the prop your code uses to create polymorphic components.
578
+ * This setting will be used to determine the element type in rules that
579
+ * require semantic context.
580
+ *
581
+ * For example, if you set the `polymorphicPropName` to `as`, then this element:
582
+ *
583
+ * ```jsx
584
+ * <Box as="h3">Hello</Box>
585
+ * ```
586
+ *
587
+ * Will be treated as an `h3`. If not set, this component will be treated
588
+ * as a `Box`.
589
+ */
590
+ polymorphicPropName?: string | null;
591
+ [k: string]: unknown;
592
+ }
593
+ /**
594
+ * Configure Next.js plugin rules.
595
+ */
596
+ interface NextPluginSettings {
597
+ /**
598
+ * The root directory of the Next.js project.
599
+ *
600
+ * This is particularly useful when you have a monorepo and your Next.js
601
+ * project is in a subfolder.
602
+ *
603
+ * Example:
604
+ *
605
+ * ```json
606
+ * {
607
+ * "settings": {
608
+ * "next": {
609
+ * "rootDir": "apps/dashboard/"
610
+ * }
611
+ * }
612
+ * }
613
+ * ```
614
+ */
615
+ rootDir?: OneOrManyFor_String;
616
+ [k: string]: unknown;
617
+ }
618
+ /**
619
+ * Configure React plugin rules.
620
+ *
621
+ * Derived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)
622
+ */
623
+ interface ReactPluginSettings {
624
+ /**
625
+ * Functions that wrap React components and should be treated as HOCs.
626
+ *
627
+ * Example:
628
+ *
629
+ * ```jsonc
630
+ * {
631
+ * "settings": {
632
+ * "react": {
633
+ * "componentWrapperFunctions": ["observer", "withRouter"]
634
+ * }
635
+ * }
636
+ * }
637
+ * ```
638
+ */
639
+ componentWrapperFunctions?: string[];
640
+ /**
641
+ * Components used as alternatives to `<form>` for forms, such as `<Formik>`.
642
+ *
643
+ * Example:
644
+ *
645
+ * ```jsonc
646
+ * {
647
+ * "settings": {
648
+ * "react": {
649
+ * "formComponents": [
650
+ * "CustomForm",
651
+ * // OtherForm is considered a form component and has an endpoint attribute
652
+ * { "name": "OtherForm", "formAttribute": "endpoint" },
653
+ * // allows specifying multiple properties if necessary
654
+ * { "name": "Form", "formAttribute": ["registerEndpoint", "loginEndpoint"] }
655
+ * ]
656
+ * }
657
+ * }
658
+ * }
659
+ * ```
660
+ */
661
+ formComponents?: CustomComponent[];
662
+ /**
663
+ * Components used as alternatives to `<a>` for linking, such as `<Link>`.
664
+ *
665
+ * Example:
666
+ *
667
+ * ```jsonc
668
+ * {
669
+ * "settings": {
670
+ * "react": {
671
+ * "linkComponents": [
672
+ * "HyperLink",
673
+ * // Use `linkAttribute` for components that use a different prop name
674
+ * // than `href`.
675
+ * { "name": "MyLink", "linkAttribute": "to" },
676
+ * // allows specifying multiple properties if necessary
677
+ * { "name": "Link", "linkAttribute": ["to", "href"] }
678
+ * ]
679
+ * }
680
+ * }
681
+ * }
682
+ * ```
683
+ */
684
+ linkComponents?: CustomComponent[];
685
+ /**
686
+ * React version to use for version-specific rules.
687
+ *
688
+ * Accepts semver versions (e.g., "18.2.0", "17.0").
689
+ *
690
+ * Example:
691
+ *
692
+ * ```jsonc
693
+ * {
694
+ * "settings": {
695
+ * "react": {
696
+ * "version": "18.2.0"
697
+ * }
698
+ * }
699
+ * }
700
+ * ```
701
+ */
702
+ version?: string | null;
703
+ [k: string]: unknown;
704
+ }
705
+ /**
706
+ * Configure Vitest plugin rules.
707
+ *
708
+ * See [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s
709
+ * configuration for a full reference.
710
+ */
711
+ interface VitestPluginSettings {
712
+ /**
713
+ * Whether to enable typecheck mode for Vitest rules.
714
+ * When enabled, some rules will skip certain checks for describe blocks
715
+ * to accommodate TypeScript type checking scenarios.
716
+ */
717
+ typecheck?: boolean;
718
+ [k: string]: unknown;
719
+ }
720
+ //#endregion
721
+ //#region src-js/package/config.d.ts
722
+ type Oxlintrc = Omit<Oxlintrc$1, "$schema" | "extends">;
723
+ type ExternalPluginsConfig = Exclude<Oxlintrc["jsPlugins"], undefined | null>;
724
+ interface OxlintConfig extends Oxlintrc {
725
+ extends?: OxlintConfig[];
726
+ }
727
+ /**
728
+ * Define an Oxlint configuration with type inference.
729
+ *
730
+ * @param config - Oxlint configuration
731
+ * @returns Config unchanged
732
+ */
733
+ declare function defineConfig<T extends OxlintConfig>(config: T): T;
734
+ //#endregion
735
+ export { type AllowWarnDeny, type DummyRule, type DummyRuleMap, type ExternalPluginEntry, type ExternalPluginsConfig, type OxlintConfig, type OxlintEnv, type OxlintGlobals, type OxlintOverride, type RuleCategories, defineConfig };