@standard-config/eslint 1.6.1 → 2.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.
package/README.md CHANGED
@@ -1,6 +1,4 @@
1
- [![](https://img.shields.io/npm/v/%40standard-config%2Feslint)](https://www.npmjs.com/package/@standard-config/eslint)
2
- [![](https://img.shields.io/github/actions/workflow/status/standard-config/eslint/test.yaml)](https://github.com/standard-config/eslint/actions/workflows/test.yaml)
3
- [![](https://img.shields.io/codecov/c/github/standard-config/eslint)](https://codecov.io/github/standard-config/eslint)
1
+ [![](https://img.shields.io/npm/v/%40standard-config%2Feslint)](https://www.npmjs.com/package/@standard-config/eslint) [![](https://img.shields.io/github/actions/workflow/status/standard-config/eslint/test.yaml)](https://github.com/standard-config/eslint/actions/workflows/test.yaml) [![](https://img.shields.io/codecov/c/github/standard-config/eslint)](https://codecov.io/github/standard-config/eslint)
4
2
 
5
3
  # @standard-config/eslint
6
4
 
@@ -45,32 +43,13 @@ Standard Config comes with a set of utilities that can translate this config to
45
43
  In your `oxlint.config.ts`:
46
44
 
47
45
  ```ts
48
- import { getOxlintConfigs } from '@standard-config/eslint/utilities';
49
- import { defineConfig } from '@standard-config/oxlint';
46
+ import { defineOxlintConfig } from '@standard-config/eslint/utilities';
50
47
 
51
- const { configBase, configConfigFiles } = getOxlintConfigs({
52
- // Optional, as above
53
- react: true,
54
- });
55
-
56
- // Merge `configBase` at the root of your config, as it defines
57
- // all supported third-party rules from this config, including
58
- // the resolved `jsPlugins`
59
- export default defineConfig(configBase, {
48
+ export default defineOxlintConfig({
60
49
  react: true,
61
50
  rules: {
62
- // Example override
63
- 'react-js/function-component-definition': 'off',
51
+ /* Optional overrides */
64
52
  },
65
- overrides: [
66
- {
67
- // `configConfigFiles` is an optional override entry
68
- // intended for config files other than `**/*.config.ts`
69
- // (those are already covered by `configBase`)
70
- files: ['config/**/*.ts'],
71
- ...configConfigFiles,
72
- },
73
- ],
74
53
  });
75
54
  ```
76
55
 
@@ -1,20 +1,22 @@
1
1
  import { defineConfig } from "eslint/config";
2
2
  import { Linter } from "eslint";
3
3
 
4
- //#region src/types/index.d.ts
5
- type LinterConfigEntry = Omit<Linter.Config, 'files'>;
6
- type LinterConfigRuleEntry = Linter.RuleSeverity | [Linter.RuleSeverity, ...unknown[]];
7
- type LinterConfigRules = Record<string, LinterConfigRuleEntry>;
8
- type InfiniteLinterConfig = Parameters<typeof defineConfig>[number];
9
- type StandardConfig = Exclude<InfiniteLinterConfig, unknown[]> & {
4
+ //#region src/types/common.d.ts
5
+ type StandardConfigOptions = {
10
6
  /**
11
7
  * Enable React-specific rules.
12
8
  * @default false
13
9
  */
14
10
  react?: boolean;
15
11
  };
16
- type InfiniteLinterConfigs = [StandardConfig, ...InfiniteLinterConfig[]];
17
- type StandardConfigArray = InfiniteLinterConfig[] | InfiniteLinterConfigs | [InfiniteLinterConfigs, ...InfiniteLinterConfig[]];
18
12
  //#endregion
19
- export { StandardConfigArray as i, LinterConfigRules as n, StandardConfig as r, LinterConfigEntry as t };
20
- //# sourceMappingURL=index-C8CpEqE5.d.mts.map
13
+ //#region src/types/eslint.d.ts
14
+ type LinterConfigEntry = Omit<Linter.Config, 'files'>;
15
+ type LinterConfigRuleEntry = Linter.RuleSeverity | [Linter.RuleSeverity, ...unknown[]];
16
+ type LinterConfigRules = Record<string, LinterConfigRuleEntry>;
17
+ type InfiniteLinterConfig = Parameters<typeof defineConfig>[number];
18
+ type StandardConfig = Exclude<InfiniteLinterConfig, unknown[]> & StandardConfigOptions;
19
+ type StandardConfigArray = Array<StandardConfig | StandardConfig[]>;
20
+ //#endregion
21
+ export { LinterConfigRules as n, StandardConfigArray as r, LinterConfigEntry as t };
22
+ //# sourceMappingURL=eslint-B2bS8oCs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint-B2bS8oCs.d.mts","names":["StandardConfigOptions","react","Linter","defineConfig","eslintDefineConfig","StandardConfigOptions","LinterConfigEntry","Config","Omit","LinterConfigRuleEntry","RuleSeverity","LinterConfigRules","Record","InfiniteLinterConfig","Parameters","StandardConfig","Exclude","StandardConfigArray","Array"],"sources":["../src/types/common.d.ts","../src/types/eslint.d.ts"],"mappings":";;;;KAAYA,qBAAAA;;;;AAAZ;EAKCC,KAAAA;AAAAA;;;KCDWK,iBAAAA,GAAoBE,IAAAA,CAAKN,MAAAA,CAAOK,MAAAA;AAAAA,KAEvCE,qBAAAA,GACFP,MAAAA,CAAOQ,YAAAA,IACNR,MAAAA,CAAOQ,YAAAA;AAAAA,KAECC,iBAAAA,GAAoBC,MAAAA,SAAeH,qBAAAA;AAAAA,KAE1CI,oBAAAA,GAAuBC,UAAAA,QAAkBV,YAAAA;AAAAA,KAElCW,cAAAA,GAAiBC,OAAAA,CAAQH,oBAAAA,eACpCR,qBAAAA;AAAAA,KAEWY,mBAAAA,GAAsBC,KAAAA,CAAMH,cAAAA,GAAiBA,cAAAA"}
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { i as StandardConfigArray, t as LinterConfigEntry } from "./index-C8CpEqE5.mjs";
1
+ import { r as StandardConfigArray, t as LinterConfigEntry } from "./eslint-B2bS8oCs.mjs";
2
2
  import { Config } from "eslint/config";
3
3
 
4
- //#region src/config-base/index.d.ts
4
+ //#region src/config-base/eslint.d.ts
5
5
  /**
6
6
  * Primary config entry.
7
7
  *
@@ -10,7 +10,7 @@ import { Config } from "eslint/config";
10
10
  */
11
11
  declare const config: LinterConfigEntry;
12
12
  //#endregion
13
- //#region src/config-config-files/index.d.ts
13
+ //#region src/config-config-files/eslint.d.ts
14
14
  /**
15
15
  * Optional config entry containing rules that target config files. Intended for
16
16
  * explicit overrides.
@@ -20,7 +20,7 @@ declare const config: LinterConfigEntry;
20
20
  */
21
21
  declare const config$1: LinterConfigEntry;
22
22
  //#endregion
23
- //#region src/config-react/index.d.ts
23
+ //#region src/config-react/eslint.d.ts
24
24
  /**
25
25
  * Optional config entry containing rules that target `*.tsx` files. Intended
26
26
  * for explicit overrides.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/config-base/index.ts","../src/config-config-files/index.ts","../src/config-react/index.ts","../src/define-config/index.ts"],"mappings":";;;;;;;AAA6D;;;cAcvD,MAAA,EAAQ,iBAAA;;;;;;AAd+C;;;;cCWvD,QAAA,EAAQ,iBAAA;;;;;;ADX+C;;;;cEoBvD,QAAA,EAAQ,iBAAA;;;;;AFpB+C;iBGWrC,YAAA,CAAA,GACpB,OAAA,EAAS,mBAAA,GACV,MAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/config-base/eslint.ts","../src/config-config-files/eslint.ts","../src/config-react/eslint.ts","../src/define-config/index.ts"],"mappings":";;;;;;;AAA8D;;;cAaxD,MAAA,EAAQ,iBAAA;;;;;;AAbgD;;;;cCWxD,QAAA,EAAQ,iBAAA;;;;;;ADXgD;;;;cEaxD,QAAA,EAAQ,iBAAA;;;;;AFbgD;iBGUtC,YAAA,CAAA,GACpB,OAAA,EAAS,mBAAA,GACV,MAAA"}
package/dist/index.mjs CHANGED
@@ -1,17 +1,9 @@
1
- import { c as rules$2, i as rules$6, l as rules$1, n as rules$8, o as rules$4, r as rules$7, s as rules$3, t as rules$5, u as rules } from "./rules-react-DgqgnQ-O.mjs";
1
+ import { a as rules$1, i as rules$2, n as rules$4, o as rules, r as rules$3, t as rules$5 } from "./rules-react-CX3lvpmg.mjs";
2
2
  import pluginStylistic from "@stylistic/eslint-plugin";
3
3
  import pluginPerfectionist from "eslint-plugin-perfectionist";
4
- import tseslint from "typescript-eslint";
5
- import pluginReact from "eslint-plugin-react";
6
- import pluginReactHooks from "eslint-plugin-react-hooks";
7
- import pluginReactNamingConvention from "eslint-plugin-react-naming-convention";
8
- import pluginReactX from "eslint-plugin-react-x";
4
+ import pluginReact from "eslint-plugin-react-x";
9
5
  import { defineConfig as defineConfig$1 } from "eslint/config";
10
- import { includeIgnoreFile } from "@eslint/compat";
11
- import fs from "node:fs";
12
- import path from "node:path";
13
-
14
- //#region src/config-base/index.ts
6
+ //#region src/config-base/eslint.ts
15
7
  /**
16
8
  * Primary config entry.
17
9
  *
@@ -24,13 +16,6 @@ const config = {
24
16
  "@stylistic": pluginStylistic,
25
17
  "perfectionist": pluginPerfectionist
26
18
  },
27
- languageOptions: {
28
- parser: tseslint.parser,
29
- parserOptions: {
30
- projectService: true,
31
- warnOnUnsupportedTypeScriptVersion: false
32
- }
33
- },
34
19
  linterOptions: {
35
20
  reportUnusedDisableDirectives: "error",
36
21
  reportUnusedInlineConfigs: "error"
@@ -41,9 +26,19 @@ const config = {
41
26
  ...rules$2
42
27
  }
43
28
  };
44
-
29
+ let tseslint;
30
+ try {
31
+ tseslint = await import("typescript-eslint");
32
+ } catch {}
33
+ if (tseslint && Object.hasOwn(tseslint, "parser")) config.languageOptions = {
34
+ parser: tseslint.parser,
35
+ parserOptions: {
36
+ projectService: true,
37
+ warnOnUnsupportedTypeScriptVersion: false
38
+ }
39
+ };
45
40
  //#endregion
46
- //#region src/config-config-files/index.ts
41
+ //#region src/config-config-files/eslint.ts
47
42
  /**
48
43
  * Optional config entry containing rules that target config files. Intended for
49
44
  * explicit overrides.
@@ -56,9 +51,8 @@ const config$1 = {
56
51
  plugins: { perfectionist: pluginPerfectionist },
57
52
  rules: { ...rules$3 }
58
53
  };
59
-
60
54
  //#endregion
61
- //#region src/config-react/index.ts
55
+ //#region src/config-react/eslint.ts
62
56
  /**
63
57
  * Optional config entry containing rules that target `*.tsx` files. Intended
64
58
  * for explicit overrides.
@@ -70,26 +64,15 @@ const config$2 = {
70
64
  name: "React",
71
65
  plugins: {
72
66
  "perfectionist": pluginPerfectionist,
73
- "react": pluginReact,
74
- "react-hooks": pluginReactHooks,
75
- "react-naming-convention": pluginReactNamingConvention,
76
- "react-x": pluginReactX
67
+ "react-x": pluginReact
77
68
  },
78
69
  settings: { react: { version: "detect" } },
79
70
  rules: {
80
71
  ...rules$4,
81
72
  ...rules$5,
82
- ...rules$6,
83
- ...rules$7,
84
- ...rules$8
73
+ ...rules$5
85
74
  }
86
75
  };
87
-
88
- //#endregion
89
- //#region src/config-ignores/index.ts
90
- const configPath = path.resolve(".gitignore");
91
- const config$3 = fs.existsSync(configPath) ? includeIgnoreFile(configPath, ".gitignore") : {};
92
-
93
76
  //#endregion
94
77
  //#region src/define-config/index.ts
95
78
  /**
@@ -100,7 +83,6 @@ function defineConfig(...configs) {
100
83
  name: "Standard Config",
101
84
  files: ["**/*.{ts,tsx,cts,mts}"],
102
85
  extends: [
103
- config$3,
104
86
  config,
105
87
  {
106
88
  files: ["**/*.config.{ts,cts,mts}"],
@@ -111,21 +93,20 @@ function defineConfig(...configs) {
111
93
  });
112
94
  }
113
95
  function normalizeExtensionConfigs(configs) {
114
- const configArray = configs.flat();
115
- const extensions = [];
116
- if (configArray.length === 0) return extensions;
117
- if (configArray[0].react) extensions.push({
96
+ const extensionConfigs = [];
97
+ let includeReactConfig = false;
98
+ for (const config of configs.flat()) {
99
+ const { react, ...otherConfig } = config;
100
+ if (Object.keys(otherConfig).length > 0) extensionConfigs.push(defineConfig$1(otherConfig));
101
+ if (react !== void 0) includeReactConfig = react;
102
+ }
103
+ if (includeReactConfig) extensionConfigs.unshift({
118
104
  files: ["**/*.tsx"],
119
105
  ...config$2
120
106
  });
121
- extensions.push(defineConfig$1(configArray.map((configEntry) => {
122
- if (Array.isArray(configEntry)) return configEntry;
123
- const { react, ...config } = configEntry;
124
- return config;
125
- })));
126
- return extensions;
107
+ return extensionConfigs;
127
108
  }
128
-
129
109
  //#endregion
130
110
  export { config as configBase, config$1 as configConfigFiles, config$2 as configReact, defineConfig };
111
+
131
112
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["rulesCore","rulesPerfectionist","rulesStylistic","config","rulesPerfectionist","config","rulesPerfectionist","rulesReact","rulesReactHooks","rulesReactNamingConvention","rulesReactX","config","eslintDefineConfig","configIgnores","configBase","configConfigFiles","configReact"],"sources":["../src/config-base/index.ts","../src/config-config-files/index.ts","../src/config-react/index.ts","../src/config-ignores/index.ts","../src/define-config/index.ts"],"sourcesContent":["import type { LinterConfigEntry } from '../types/index.d.ts';\nimport pluginStylistic from '@stylistic/eslint-plugin';\nimport pluginPerfectionist from 'eslint-plugin-perfectionist';\nimport tseslint from 'typescript-eslint';\nimport rulesCore from './rules-core.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesStylistic from './rules-stylistic.ts';\n\n/**\n * Primary config entry.\n *\n * This config is intentionally limited to rules not supported by Oxlint\n * and stylistic rules outside of Prettier’s scope.\n */\nconst config: LinterConfigEntry = {\n\tname: 'Base Config',\n\tplugins: {\n\t\t'@stylistic': pluginStylistic,\n\t\t'perfectionist': pluginPerfectionist,\n\t},\n\tlanguageOptions: {\n\t\tparser: tseslint.parser,\n\t\tparserOptions: {\n\t\t\tprojectService: true,\n\t\t\twarnOnUnsupportedTypeScriptVersion: false,\n\t\t},\n\t},\n\tlinterOptions: {\n\t\treportUnusedDisableDirectives: 'error',\n\t\treportUnusedInlineConfigs: 'error',\n\t},\n\trules: {\n\t\t...rulesCore,\n\t\t...rulesPerfectionist,\n\t\t...rulesStylistic,\n\t},\n};\n\nexport default config;\n","import type { LinterConfigEntry } from '../types/index.d.ts';\nimport pluginPerfectionist from 'eslint-plugin-perfectionist';\nimport rulesPerfectionist from './rules-perfectionist.ts';\n\n/**\n * Optional config entry containing rules that target config files. Intended for\n * explicit overrides.\n *\n * This config is intentionally limited to rules not supported by Oxlint\n * and stylistic rules outside of Prettier’s scope.\n */\nconst config: LinterConfigEntry = {\n\tname: 'Config Files',\n\tplugins: {\n\t\tperfectionist: pluginPerfectionist,\n\t},\n\trules: {\n\t\t...rulesPerfectionist,\n\t},\n};\n\nexport default config;\n","import type { ESLint } from 'eslint';\nimport type { LinterConfigEntry } from '../types/index.d.ts';\nimport pluginPerfectionist from 'eslint-plugin-perfectionist';\nimport pluginReact from 'eslint-plugin-react';\nimport pluginReactHooks from 'eslint-plugin-react-hooks';\nimport pluginReactNamingConvention from 'eslint-plugin-react-naming-convention';\nimport pluginReactX from 'eslint-plugin-react-x';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesReactHooks from './rules-react-hooks.ts';\nimport rulesReactNamingConvention from './rules-react-naming-convention.ts';\nimport rulesReactX from './rules-react-x.ts';\nimport rulesReact from './rules-react.ts';\n\n/**\n * Optional config entry containing rules that target `*.tsx` files. Intended\n * for explicit overrides.\n *\n * This config is intentionally limited to rules not supported by Oxlint\n * and stylistic rules outside of Prettier’s scope.\n */\nconst config: LinterConfigEntry = {\n\tname: 'React',\n\tplugins: {\n\t\t'perfectionist': pluginPerfectionist,\n\t\t'react': pluginReact,\n\t\t'react-hooks': pluginReactHooks as ESLint.Plugin,\n\t\t'react-naming-convention': pluginReactNamingConvention,\n\t\t'react-x': pluginReactX,\n\t},\n\tsettings: {\n\t\treact: {\n\t\t\tversion: 'detect',\n\t\t},\n\t},\n\trules: {\n\t\t...rulesPerfectionist,\n\t\t...rulesReact,\n\t\t...rulesReactHooks,\n\t\t...rulesReactNamingConvention,\n\t\t...rulesReactX,\n\t},\n};\n\nexport default config;\n","import type { LinterConfigEntry } from '../types/index.d.ts';\nimport { includeIgnoreFile } from '@eslint/compat';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nconst configPath = path.resolve('.gitignore');\nconst configExists = fs.existsSync(configPath);\n\nconst config: LinterConfigEntry = configExists\n\t? includeIgnoreFile(configPath, '.gitignore')\n\t: {};\n\nexport default config;\n","import type { Config } from 'eslint/config';\nimport type { StandardConfig, StandardConfigArray } from '../types/index.d.ts';\nimport { defineConfig as eslintDefineConfig } from 'eslint/config';\nimport configBase from '../config-base/index.ts';\nimport configConfigFiles from '../config-config-files/index.ts';\nimport configIgnores from '../config-ignores/index.ts';\nimport configReact from '../config-react/index.ts';\n\n/**\n * Combine Standard Config with optional additional config.\n */\nexport default function defineConfig(\n\t...configs: StandardConfigArray\n): Config[] {\n\treturn eslintDefineConfig({\n\t\tname: 'Standard Config',\n\t\tfiles: ['**/*.{ts,tsx,cts,mts}'],\n\t\textends: [\n\t\t\tconfigIgnores,\n\t\t\tconfigBase,\n\t\t\t{\n\t\t\t\tfiles: ['**/*.config.{ts,cts,mts}'],\n\t\t\t\t...configConfigFiles,\n\t\t\t},\n\t\t\t...normalizeExtensionConfigs(configs),\n\t\t],\n\t});\n}\n\nfunction normalizeExtensionConfigs(configs: StandardConfigArray) {\n\tconst configArray = configs.flat();\n\tconst extensions: Array<Config | Config[]> = [];\n\n\tif (configArray.length === 0) {\n\t\treturn extensions;\n\t}\n\n\tif ((configArray[0] as StandardConfig).react) {\n\t\textensions.push({\n\t\t\tfiles: ['**/*.tsx'],\n\t\t\t...configReact,\n\t\t});\n\t}\n\n\textensions.push(\n\t\teslintDefineConfig(\n\t\t\t// Ensure `react` doesn’t break the expected config structure\n\t\t\tconfigArray.map((configEntry) => {\n\t\t\t\tif (Array.isArray(configEntry)) {\n\t\t\t\t\treturn configEntry;\n\t\t\t\t}\n\n\t\t\t\t/* oxlint-disable-next-line eslint/no-unused-vars */\n\t\t\t\tconst { react, ...config } = configEntry as StandardConfig;\n\t\t\t\treturn config;\n\t\t\t})\n\t\t)\n\t);\n\n\treturn extensions;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAcA,MAAM,SAA4B;CACjC,MAAM;CACN,SAAS;EACR,cAAc;EACd,iBAAiB;EACjB;CACD,iBAAiB;EAChB,QAAQ,SAAS;EACjB,eAAe;GACd,gBAAgB;GAChB,oCAAoC;GACpC;EACD;CACD,eAAe;EACd,+BAA+B;EAC/B,2BAA2B;EAC3B;CACD,OAAO;EACN,GAAGA;EACH,GAAGC;EACH,GAAGC;EACH;CACD;;;;;;;;;;;ACzBD,MAAMC,WAA4B;CACjC,MAAM;CACN,SAAS,EACR,eAAe,qBACf;CACD,OAAO,EACN,GAAGC,SACH;CACD;;;;;;;;;;;ACCD,MAAMC,WAA4B;CACjC,MAAM;CACN,SAAS;EACR,iBAAiB;EACjB,SAAS;EACT,eAAe;EACf,2BAA2B;EAC3B,WAAW;EACX;CACD,UAAU,EACT,OAAO,EACN,SAAS,UACT,EACD;CACD,OAAO;EACN,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH,GAAGC;EACH;CACD;;;;ACpCD,MAAM,aAAa,KAAK,QAAQ,aAAa;AAG7C,MAAMC,WAFe,GAAG,WAAW,WAAW,GAG3C,kBAAkB,YAAY,aAAa,GAC3C,EAAE;;;;;;;ACCL,SAAwB,aACvB,GAAG,SACQ;AACX,QAAOC,eAAmB;EACzB,MAAM;EACN,OAAO,CAAC,wBAAwB;EAChC,SAAS;GACRC;GACAC;GACA;IACC,OAAO,CAAC,2BAA2B;IACnC,GAAGC;IACH;GACD,GAAG,0BAA0B,QAAQ;GACrC;EACD,CAAC;;AAGH,SAAS,0BAA0B,SAA8B;CAChE,MAAM,cAAc,QAAQ,MAAM;CAClC,MAAM,aAAuC,EAAE;AAE/C,KAAI,YAAY,WAAW,EAC1B,QAAO;AAGR,KAAK,YAAY,GAAsB,MACtC,YAAW,KAAK;EACf,OAAO,CAAC,WAAW;EACnB,GAAGC;EACH,CAAC;AAGH,YAAW,KACVJ,eAEC,YAAY,KAAK,gBAAgB;AAChC,MAAI,MAAM,QAAQ,YAAY,CAC7B,QAAO;EAIR,MAAM,EAAE,OAAO,GAAG,WAAW;AAC7B,SAAO;GACN,CACF,CACD;AAED,QAAO"}
1
+ {"version":3,"file":"index.mjs","names":["rulesCore","rulesPerfectionist","rulesStylistic","config","rulesPerfectionist","config","rulesPerfectionist","rulesReact","eslintDefineConfig","configBase","configConfigFiles","configReact"],"sources":["../src/config-base/eslint.ts","../src/config-config-files/eslint.ts","../src/config-react/eslint.ts","../src/define-config/index.ts"],"sourcesContent":["import type { LinterConfigEntry } from '../types/eslint.d.ts';\nimport pluginStylistic from '@stylistic/eslint-plugin';\nimport pluginPerfectionist from 'eslint-plugin-perfectionist';\nimport rulesCore from './rules-core.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesStylistic from './rules-stylistic.ts';\n\n/**\n * Primary config entry.\n *\n * This config is intentionally limited to rules not supported by Oxlint\n * and stylistic rules outside of Prettier’s scope.\n */\nconst config: LinterConfigEntry = {\n\tname: 'Base Config',\n\tplugins: {\n\t\t'@stylistic': pluginStylistic,\n\t\t'perfectionist': pluginPerfectionist,\n\t},\n\tlinterOptions: {\n\t\treportUnusedDisableDirectives: 'error',\n\t\treportUnusedInlineConfigs: 'error',\n\t},\n\trules: {\n\t\t...rulesCore,\n\t\t...rulesPerfectionist,\n\t\t...rulesStylistic,\n\t},\n};\n\n/* oxlint-disable-next-line typescript/consistent-type-imports */\nlet tseslint: typeof import('typescript-eslint') | undefined;\n\ntry {\n\ttseslint = await import('typescript-eslint');\n} catch {}\n\nif (tseslint && Object.hasOwn(tseslint, 'parser')) {\n\tconfig.languageOptions = {\n\t\tparser: tseslint.parser,\n\t\tparserOptions: {\n\t\t\tprojectService: true,\n\t\t\twarnOnUnsupportedTypeScriptVersion: false,\n\t\t},\n\t};\n}\n\nexport default config;\n","import type { LinterConfigEntry } from '../types/eslint.d.ts';\nimport pluginPerfectionist from 'eslint-plugin-perfectionist';\nimport rulesPerfectionist from './rules-perfectionist.ts';\n\n/**\n * Optional config entry containing rules that target config files. Intended for\n * explicit overrides.\n *\n * This config is intentionally limited to rules not supported by Oxlint\n * and stylistic rules outside of Prettier’s scope.\n */\nconst config: LinterConfigEntry = {\n\tname: 'Config Files',\n\tplugins: {\n\t\tperfectionist: pluginPerfectionist,\n\t},\n\trules: {\n\t\t...rulesPerfectionist,\n\t},\n};\n\nexport default config;\n","import type { LinterConfigEntry } from '../types/eslint.d.ts';\nimport pluginPerfectionist from 'eslint-plugin-perfectionist';\nimport pluginReact from 'eslint-plugin-react-x';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesReact from './rules-react.ts';\n\n/**\n * Optional config entry containing rules that target `*.tsx` files. Intended\n * for explicit overrides.\n *\n * This config is intentionally limited to rules not supported by Oxlint\n * and stylistic rules outside of Prettier’s scope.\n */\nconst config: LinterConfigEntry = {\n\tname: 'React',\n\tplugins: {\n\t\t'perfectionist': pluginPerfectionist,\n\t\t'react-x': pluginReact,\n\t},\n\tsettings: {\n\t\treact: {\n\t\t\tversion: 'detect',\n\t\t},\n\t},\n\trules: {\n\t\t...rulesPerfectionist,\n\t\t...rulesReact,\n\t\t...rulesReact,\n\t},\n};\n\nexport default config;\n","import type { Config } from 'eslint/config';\nimport type { StandardConfigArray } from '../types/eslint.d.ts';\nimport { defineConfig as eslintDefineConfig } from 'eslint/config';\nimport configBase from '../config-base/eslint.ts';\nimport configConfigFiles from '../config-config-files/eslint.ts';\nimport configReact from '../config-react/eslint.ts';\n\n/**\n * Combine Standard Config with optional additional config.\n */\nexport default function defineConfig(\n\t...configs: StandardConfigArray\n): Config[] {\n\treturn eslintDefineConfig({\n\t\tname: 'Standard Config',\n\t\tfiles: ['**/*.{ts,tsx,cts,mts}'],\n\t\textends: [\n\t\t\tconfigBase,\n\t\t\t{\n\t\t\t\tfiles: ['**/*.config.{ts,cts,mts}'],\n\t\t\t\t...configConfigFiles,\n\t\t\t},\n\t\t\t...normalizeExtensionConfigs(configs),\n\t\t],\n\t});\n}\n\nfunction normalizeExtensionConfigs(configs: StandardConfigArray) {\n\tconst extensionConfigs: Array<Config | Config[]> = [];\n\tlet includeReactConfig = false;\n\n\tfor (const config of configs.flat()) {\n\t\tconst { react, ...otherConfig } = config;\n\n\t\tif (Object.keys(otherConfig).length > 0) {\n\t\t\textensionConfigs.push(eslintDefineConfig(otherConfig));\n\t\t}\n\n\t\tif (react !== undefined) {\n\t\t\tincludeReactConfig = react;\n\t\t}\n\t}\n\n\tif (includeReactConfig) {\n\t\textensionConfigs.unshift({\n\t\t\tfiles: ['**/*.tsx'],\n\t\t\t...configReact,\n\t\t});\n\t}\n\n\treturn extensionConfigs;\n}\n"],"mappings":";;;;;;;;;;;;AAaA,MAAM,SAA4B;CACjC,MAAM;CACN,SAAS;EACR,cAAc;EACd,iBAAiB;EACjB;CACD,eAAe;EACd,+BAA+B;EAC/B,2BAA2B;EAC3B;CACD,OAAO;EACN,GAAGA;EACH,GAAGC;EACH,GAAGC;EACH;CACD;AAGD,IAAI;AAEJ,IAAI;AACH,YAAW,MAAM,OAAO;QACjB;AAER,IAAI,YAAY,OAAO,OAAO,UAAU,SAAS,CAChD,QAAO,kBAAkB;CACxB,QAAQ,SAAS;CACjB,eAAe;EACd,gBAAgB;EAChB,oCAAoC;EACpC;CACD;;;;;;;;;;ACjCF,MAAMC,WAA4B;CACjC,MAAM;CACN,SAAS,EACR,eAAe,qBACf;CACD,OAAO,EACN,GAAGC,SACH;CACD;;;;;;;;;;ACND,MAAMC,WAA4B;CACjC,MAAM;CACN,SAAS;EACR,iBAAiB;EACjB,WAAW;EACX;CACD,UAAU,EACT,OAAO,EACN,SAAS,UACT,EACD;CACD,OAAO;EACN,GAAGC;EACH,GAAGC;EACH,GAAGA;EACH;CACD;;;;;;ACnBD,SAAwB,aACvB,GAAG,SACQ;AACX,QAAOC,eAAmB;EACzB,MAAM;EACN,OAAO,CAAC,wBAAwB;EAChC,SAAS;GACRC;GACA;IACC,OAAO,CAAC,2BAA2B;IACnC,GAAGC;IACH;GACD,GAAG,0BAA0B,QAAQ;GACrC;EACD,CAAC;;AAGH,SAAS,0BAA0B,SAA8B;CAChE,MAAM,mBAA6C,EAAE;CACrD,IAAI,qBAAqB;AAEzB,MAAK,MAAM,UAAU,QAAQ,MAAM,EAAE;EACpC,MAAM,EAAE,OAAO,GAAG,gBAAgB;AAElC,MAAI,OAAO,KAAK,YAAY,CAAC,SAAS,EACrC,kBAAiB,KAAKF,eAAmB,YAAY,CAAC;AAGvD,MAAI,UAAU,KAAA,EACb,sBAAqB;;AAIvB,KAAI,mBACH,kBAAiB,QAAQ;EACxB,OAAO,CAAC,WAAW;EACnB,GAAGG;EACH,CAAC;AAGH,QAAO"}
@@ -1,7 +1,5 @@
1
- import pluginReactHooks from "eslint-plugin-react-hooks";
2
-
3
1
  //#region src/config-base/rules-core.ts
4
- const rules$8 = {
2
+ const rules$5 = {
5
3
  "camelcase": ["error", { properties: "always" }],
6
4
  "func-name-matching": [
7
5
  "error",
@@ -9,10 +7,9 @@ const rules$8 = {
9
7
  { considerPropertyDescriptor: true }
10
8
  ]
11
9
  };
12
-
13
10
  //#endregion
14
11
  //#region src/config-base/rules-perfectionist.ts
15
- const rules$7 = {
12
+ const rules$4 = {
16
13
  "perfectionist/sort-array-includes": ["error", { type: "natural" }],
17
14
  "perfectionist/sort-classes": ["error", {
18
15
  groups: ["property", "constructor"],
@@ -112,10 +109,9 @@ const rules$7 = {
112
109
  type: "natural"
113
110
  }]
114
111
  };
115
-
116
112
  //#endregion
117
113
  //#region src/config-base/rules-stylistic.ts
118
- const rules$6 = {
114
+ const rules$3 = {
119
115
  "@stylistic/lines-between-class-members": [
120
116
  "error",
121
117
  "always",
@@ -204,10 +200,9 @@ const rules$6 = {
204
200
  }
205
201
  ]
206
202
  };
207
-
208
203
  //#endregion
209
204
  //#region src/config-config-files/rules-perfectionist.ts
210
- const rules$5 = { "perfectionist/sort-objects": ["error", {
205
+ const rules$2 = { "perfectionist/sort-objects": ["error", {
211
206
  customGroups: [
212
207
  {
213
208
  groupName: "extends",
@@ -261,10 +256,9 @@ const rules$5 = { "perfectionist/sort-objects": ["error", {
261
256
  newlinesBetween: 0,
262
257
  type: "natural"
263
258
  }] };
264
-
265
259
  //#endregion
266
260
  //#region src/config-react/rules-perfectionist.ts
267
- const rules$4 = { "perfectionist/sort-jsx-props": ["error", {
261
+ const rules$1 = { "perfectionist/sort-jsx-props": ["error", {
268
262
  customGroups: [
269
263
  {
270
264
  groupName: "as",
@@ -303,65 +297,17 @@ const rules$4 = { "perfectionist/sort-jsx-props": ["error", {
303
297
  ],
304
298
  type: "unsorted"
305
299
  }] };
306
-
307
- //#endregion
308
- //#region src/transform-rules/index.ts
309
- /**
310
- * Modify a set of ESLint rules.
311
- *
312
- * @deprecated Not covered by semver.
313
- */
314
- function transformRules(rules, options) {
315
- if (!rules) return {};
316
- const { omit, prefix, severity } = options;
317
- const omittedRules = new Set(omit);
318
- const transformedRules = {};
319
- for (const [ruleName, ruleConfig] of Object.entries(rules)) {
320
- if (omittedRules.has(ruleName)) continue;
321
- if (!Array.isArray(ruleConfig)) {
322
- transformedRules[ruleName] = severity ?? ruleConfig ?? "off";
323
- continue;
324
- }
325
- const [ruleSeverity, ...ruleOptions] = ruleConfig;
326
- transformedRules[ruleName] = [severity ?? ruleSeverity, ...ruleOptions];
327
- }
328
- return typeof prefix === "string" ? prefixRules(transformedRules, prefix) : transformedRules;
329
- }
330
- function prefixRules(rules, prefix) {
331
- const prefixedRules = {};
332
- for (const [ruleName, ruleConfig] of Object.entries(rules)) {
333
- const name = ruleName.replace(/^.*?\//, "");
334
- prefixedRules[`${prefix}/${name}`] = ruleConfig;
335
- }
336
- return prefixedRules;
337
- }
338
-
339
- //#endregion
340
- //#region src/config-react/rules-react-hooks.ts
341
- const rules$3 = transformRules(pluginReactHooks.configs.flat["recommended-latest"].rules, {
342
- omit: ["react-hooks/exhaustive-deps", "react-hooks/rules-of-hooks"],
343
- severity: "error"
344
- });
345
-
346
300
  //#endregion
347
- //#region src/config-react/rules-react-naming-convention.ts
348
- const rules$2 = {
349
- "react-naming-convention/component-name": "error",
350
- "react-naming-convention/context-name": "error",
351
- "react-naming-convention/ref-name": "error",
352
- "react-naming-convention/use-state": "error"
353
- };
354
-
355
- //#endregion
356
- //#region src/config-react/rules-react-x.ts
357
- const rules$1 = {
301
+ //#region src/config-react/rules-react.ts
302
+ const rules = {
303
+ "react-x/component-hook-factories": "error",
304
+ "react-x/error-boundaries": "error",
305
+ "react-x/immutability": "error",
358
306
  "react-x/jsx-dollar": "error",
359
307
  "react-x/jsx-key-before-spread": "error",
360
- "react-x/jsx-no-iife": "error",
361
308
  "react-x/no-access-state-in-setstate": "error",
362
309
  "react-x/no-class-component": "error",
363
310
  "react-x/no-context-provider": "error",
364
- "react-x/no-default-props": "error",
365
311
  "react-x/no-duplicate-key": "error",
366
312
  "react-x/no-forward-ref": "error",
367
313
  "react-x/no-implicit-key": "error",
@@ -369,26 +315,21 @@ const rules$1 = {
369
315
  "react-x/no-misused-capture-owner-stack": "error",
370
316
  "react-x/no-nested-component-definitions": "error",
371
317
  "react-x/no-nested-lazy-component-declarations": "error",
372
- "react-x/no-prop-types": "error",
373
318
  "react-x/no-unnecessary-use-callback": "error",
374
319
  "react-x/no-unnecessary-use-memo": "error",
375
320
  "react-x/no-unstable-context-value": "error",
376
321
  "react-x/no-unstable-default-props": "error",
377
322
  "react-x/no-use-context": "error",
378
323
  "react-x/prefer-destructuring-assignment": "error",
379
- "react-x/prefer-use-state-lazy-initialization": "error"
324
+ "react-x/purity": "error",
325
+ "react-x/refs": "error",
326
+ "react-x/set-state-in-effect": "error",
327
+ "react-x/set-state-in-render": "error",
328
+ "react-x/unsupported-syntax": "error",
329
+ "react-x/use-memo": "error",
330
+ "react-x/use-state": "error"
380
331
  };
381
-
382
332
  //#endregion
383
- //#region src/config-react/rules-react.ts
384
- const rules = {
385
- "react/function-component-definition": ["error", {
386
- namedComponents: ["arrow-function", "function-declaration"],
387
- unnamedComponents: "arrow-function"
388
- }],
389
- "react/no-adjacent-inline-elements": "error"
390
- };
333
+ export { rules$4 as a, rules$3 as i, rules$1 as n, rules$5 as o, rules$2 as r, rules as t };
391
334
 
392
- //#endregion
393
- export { transformRules as a, rules$6 as c, rules$3 as i, rules$7 as l, rules$1 as n, rules$4 as o, rules$2 as r, rules$5 as s, rules as t, rules$8 as u };
394
- //# sourceMappingURL=rules-react-DgqgnQ-O.mjs.map
335
+ //# sourceMappingURL=rules-react-CX3lvpmg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules-react-CX3lvpmg.mjs","names":["rules","rules","rules","rules","rules"],"sources":["../src/config-base/rules-core.ts","../src/config-base/rules-perfectionist.ts","../src/config-base/rules-stylistic.ts","../src/config-config-files/rules-perfectionist.ts","../src/config-react/rules-perfectionist.ts","../src/config-react/rules-react.ts"],"sourcesContent":["import type { LinterConfigRules } from '../types/eslint.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'camelcase': ['error', { properties: 'always' }],\n\t'func-name-matching': [\n\t\t'error',\n\t\t'never',\n\t\t{ considerPropertyDescriptor: true },\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/eslint.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'perfectionist/sort-array-includes': ['error', { type: 'natural' }],\n\t'perfectionist/sort-classes': [\n\t\t'error',\n\t\t{\n\t\t\tgroups: ['property', 'constructor'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-exports': ['error', { type: 'natural' }],\n\t'perfectionist/sort-imports': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'mock-side-effect',\n\t\t\t\t\telementNamePattern: '^.*/_*(mocks)_*/.*$',\n\t\t\t\t\tselector: 'side-effect',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'mock',\n\t\t\t\t\telementNamePattern: '^.*/_*(mocks)_*/.*$',\n\t\t\t\t\tselector: 'import',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: [\n\t\t\t\t'mock-side-effect',\n\t\t\t\t'mock',\n\t\t\t\t['type-builtin', 'type-external'],\n\t\t\t\t'type-internal',\n\t\t\t\t['type-parent', 'type-sibling', 'type-index'],\n\t\t\t\t['value-builtin', 'value-external'],\n\t\t\t\t'value-internal',\n\t\t\t\t['value-parent', 'value-sibling', 'value-index'],\n\t\t\t\t'unknown',\n\t\t\t\t'style',\n\t\t\t\t'side-effect',\n\t\t\t\t'side-effect-style',\n\t\t\t],\n\t\t\tinternalPattern: ['^(#|@/).*'],\n\t\t\tnewlinesBetween: 0,\n\t\t\tsortSideEffects: true,\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-interfaces': [\n\t\t'error',\n\t\t{\n\t\t\tgroups: ['index-signature', 'unknown', 'method'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-intersection-types': ['error', { type: 'natural' }],\n\t'perfectionist/sort-named-exports': ['error', { type: 'natural' }],\n\t'perfectionist/sort-named-imports': ['error', { type: 'natural' }],\n\t'perfectionist/sort-object-types': [\n\t\t'error',\n\t\t{\n\t\t\tgroups: ['index-signature', 'unknown', 'method'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-objects': [\n\t\t'error',\n\t\t{\n\t\t\ttype: 'natural',\n\t\t\tuseConfigurationIf: {\n\t\t\t\tobjectType: 'destructured',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'unsorted',\n\t\t\tuseConfigurationIf: {\n\t\t\t\tobjectType: 'non-destructured',\n\t\t\t},\n\t\t},\n\t],\n\t'perfectionist/sort-union-types': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'false',\n\t\t\t\t\telementNamePattern: '^false$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'never',\n\t\t\t\t\telementNamePattern: '^never$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'react',\n\t\t\t\t\telementNamePattern: '^react.+',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: ['react', 'unknown', 'tuple', 'false', 'nullish', 'never'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/eslint.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'@stylistic/lines-between-class-members': [\n\t\t'error',\n\t\t'always',\n\t\t{ exceptAfterSingleLine: true },\n\t],\n\t'@stylistic/padding-line-between-statements': [\n\t\t'error',\n\t\t{\n\t\t\tblankLine: 'always',\n\t\t\tnext: '*',\n\t\t\tprev: [\n\t\t\t\t'block-like',\n\t\t\t\t'directive',\n\t\t\t\t'export',\n\t\t\t\t'function',\n\t\t\t\t'import',\n\t\t\t\t'interface',\n\t\t\t\t'type',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tblankLine: 'always',\n\t\t\tnext: [\n\t\t\t\t'block-like',\n\t\t\t\t'directive',\n\t\t\t\t'export',\n\t\t\t\t'function',\n\t\t\t\t'import',\n\t\t\t\t'interface',\n\t\t\t\t'type',\n\t\t\t],\n\t\t\tprev: '*',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: ['break', 'continue', 'return', 'throw'],\n\t\t\tprev: 'block-like',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'always',\n\t\t\tnext: '*',\n\t\t\tprev: ['case', 'default'],\n\t\t},\n\t\t{\n\t\t\tblankLine: 'never',\n\t\t\tnext: 'directive',\n\t\t\tprev: 'directive',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: 'export',\n\t\t\tprev: 'export',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'never',\n\t\t\tnext: ['function', 'function-overload'],\n\t\t\tprev: 'function-overload',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'never',\n\t\t\tnext: 'import',\n\t\t\tprev: 'import',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: 'interface',\n\t\t\tprev: 'interface',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: 'type',\n\t\t\tprev: 'type',\n\t\t},\n\t],\n\t'@stylistic/spaced-comment': [\n\t\t'error',\n\t\t'always',\n\t\t{\n\t\t\tblock: {\n\t\t\t\tbalanced: true,\n\t\t\t},\n\t\t\tline: {\n\t\t\t\tmarkers: ['/'],\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/eslint.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'perfectionist/sort-objects': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'extends',\n\t\t\t\t\telementNamePattern: '^extends$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'files',\n\t\t\t\t\telementNamePattern: '^files$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'ignores',\n\t\t\t\t\telementNamePattern: '^(ignores|ignorePatterns)$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'name',\n\t\t\t\t\telementNamePattern: '^(name|groupName)$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'overrides',\n\t\t\t\t\telementNamePattern: '^overrides$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'parser',\n\t\t\t\t\telementNamePattern: '^parser$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'plugins',\n\t\t\t\t\telementNamePattern: '^plugins$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'rules',\n\t\t\t\t\telementNamePattern: '^rules$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'test',\n\t\t\t\t\telementNamePattern: '^(test|tests)$',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: [\n\t\t\t\t'name',\n\t\t\t\t'files',\n\t\t\t\t'extends',\n\t\t\t\t'ignores',\n\t\t\t\t'plugins',\n\t\t\t\t'parser',\n\t\t\t\t'test',\n\t\t\t\t'unknown',\n\t\t\t\t'rules',\n\t\t\t\t'overrides',\n\t\t\t],\n\t\t\tnewlinesBetween: 0,\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/eslint.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'perfectionist/sort-jsx-props': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'as',\n\t\t\t\t\telementNamePattern: '^as$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'callback',\n\t\t\t\t\telementNamePattern: '^on.+',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'children',\n\t\t\t\t\telementNamePattern: '^children$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'key',\n\t\t\t\t\telementNamePattern: '^key$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'ref',\n\t\t\t\t\telementNamePattern: '^ref$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'unsafe',\n\t\t\t\t\telementNamePattern: '^dangerously.+',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: [\n\t\t\t\t'key',\n\t\t\t\t'ref',\n\t\t\t\t'as',\n\t\t\t\t'unknown',\n\t\t\t\t'shorthand-prop',\n\t\t\t\t'callback',\n\t\t\t\t'children',\n\t\t\t\t'unsafe',\n\t\t\t],\n\t\t\ttype: 'unsorted',\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/eslint.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'react-x/component-hook-factories': 'error',\n\t'react-x/error-boundaries': 'error',\n\t'react-x/immutability': 'error',\n\t'react-x/jsx-dollar': 'error',\n\t'react-x/jsx-key-before-spread': 'error',\n\t'react-x/no-access-state-in-setstate': 'error',\n\t'react-x/no-class-component': 'error',\n\t'react-x/no-context-provider': 'error',\n\t'react-x/no-duplicate-key': 'error',\n\t'react-x/no-forward-ref': 'error',\n\t'react-x/no-implicit-key': 'error',\n\t'react-x/no-leaked-conditional-rendering': 'error',\n\t'react-x/no-misused-capture-owner-stack': 'error',\n\t'react-x/no-nested-component-definitions': 'error',\n\t'react-x/no-nested-lazy-component-declarations': 'error',\n\t'react-x/no-unnecessary-use-callback': 'error',\n\t'react-x/no-unnecessary-use-memo': 'error',\n\t'react-x/no-unstable-context-value': 'error',\n\t'react-x/no-unstable-default-props': 'error',\n\t'react-x/no-use-context': 'error',\n\t'react-x/prefer-destructuring-assignment': 'error',\n\t'react-x/purity': 'error',\n\t'react-x/refs': 'error',\n\t'react-x/set-state-in-effect': 'error',\n\t'react-x/set-state-in-render': 'error',\n\t'react-x/unsupported-syntax': 'error',\n\t'react-x/use-memo': 'error',\n\t'react-x/use-state': 'error',\n};\n\nexport default rules;\n"],"mappings":";AAEA,MAAMA,UAA2B;CAChC,aAAa,CAAC,SAAS,EAAE,YAAY,UAAU,CAAC;CAChD,sBAAsB;EACrB;EACA;EACA,EAAE,4BAA4B,MAAM;EACpC;CACD;;;ACPD,MAAMC,UAA2B;CAChC,qCAAqC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CACnE,8BAA8B,CAC7B,SACA;EACC,QAAQ,CAAC,YAAY,cAAc;EACnC,MAAM;EACN,CACD;CACD,8BAA8B,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CAC5D,8BAA8B,CAC7B,SACA;EACC,cAAc,CACb;GACC,WAAW;GACX,oBAAoB;GACpB,UAAU;GACV,EACD;GACC,WAAW;GACX,oBAAoB;GACpB,UAAU;GACV,CACD;EACD,QAAQ;GACP;GACA;GACA,CAAC,gBAAgB,gBAAgB;GACjC;GACA;IAAC;IAAe;IAAgB;IAAa;GAC7C,CAAC,iBAAiB,iBAAiB;GACnC;GACA;IAAC;IAAgB;IAAiB;IAAc;GAChD;GACA;GACA;GACA;GACA;EACD,iBAAiB,CAAC,YAAY;EAC9B,iBAAiB;EACjB,iBAAiB;EACjB,MAAM;EACN,CACD;CACD,iCAAiC,CAChC,SACA;EACC,QAAQ;GAAC;GAAmB;GAAW;GAAS;EAChD,MAAM;EACN,CACD;CACD,yCAAyC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CACvE,oCAAoC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CAClE,oCAAoC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CAClE,mCAAmC,CAClC,SACA;EACC,QAAQ;GAAC;GAAmB;GAAW;GAAS;EAChD,MAAM;EACN,CACD;CACD,8BAA8B;EAC7B;EACA;GACC,MAAM;GACN,oBAAoB,EACnB,YAAY,gBACZ;GACD;EACD;GACC,MAAM;GACN,oBAAoB,EACnB,YAAY,oBACZ;GACD;EACD;CACD,kCAAkC,CACjC,SACA;EACC,cAAc;GACb;IACC,WAAW;IACX,oBAAoB;IACpB;GACD;IACC,WAAW;IACX,oBAAoB;IACpB;GACD;IACC,WAAW;IACX,oBAAoB;IACpB;GACD;EACD,QAAQ;GAAC;GAAS;GAAW;GAAS;GAAS;GAAW;GAAQ;EAClE,MAAM;EACN,CACD;CACD;;;AClGD,MAAMC,UAA2B;CAChC,0CAA0C;EACzC;EACA;EACA,EAAE,uBAAuB,MAAM;EAC/B;CACD,8CAA8C;EAC7C;EACA;GACC,WAAW;GACX,MAAM;GACN,MAAM;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD;GACC,WAAW;GACX,MAAM;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;IAAC;IAAS;IAAY;IAAU;IAAQ;GAC9C,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM,CAAC,QAAQ,UAAU;GACzB;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM,CAAC,YAAY,oBAAoB;GACvC,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;CACD,6BAA6B;EAC5B;EACA;EACA;GACC,OAAO,EACN,UAAU,MACV;GACD,MAAM,EACL,SAAS,CAAC,IAAI,EACd;GACD;EACD;CACD;;;ACvFD,MAAMC,UAA2B,EAChC,8BAA8B,CAC7B,SACA;CACC,cAAc;EACb;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;CACD,QAAQ;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,iBAAiB;CACjB,MAAM;CACN,CACD,EACD;;;AC1DD,MAAMC,UAA2B,EAChC,gCAAgC,CAC/B,SACA;CACC,cAAc;EACb;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;CACD,QAAQ;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,MAAM;CACN,CACD,EACD;;;AC3CD,MAAM,QAA2B;CAChC,oCAAoC;CACpC,4BAA4B;CAC5B,wBAAwB;CACxB,sBAAsB;CACtB,iCAAiC;CACjC,uCAAuC;CACvC,8BAA8B;CAC9B,+BAA+B;CAC/B,4BAA4B;CAC5B,0BAA0B;CAC1B,2BAA2B;CAC3B,2CAA2C;CAC3C,0CAA0C;CAC1C,2CAA2C;CAC3C,iDAAiD;CACjD,uCAAuC;CACvC,mCAAmC;CACnC,qCAAqC;CACrC,qCAAqC;CACrC,0BAA0B;CAC1B,2CAA2C;CAC3C,kBAAkB;CAClB,gBAAgB;CAChB,+BAA+B;CAC/B,+BAA+B;CAC/B,8BAA8B;CAC9B,oBAAoB;CACpB,qBAAqB;CACrB"}
@@ -1,50 +1,45 @@
1
- import { n as LinterConfigRules, r as StandardConfig } from "./index-C8CpEqE5.mjs";
1
+ import { n as LinterConfigRules } from "./eslint-B2bS8oCs.mjs";
2
+ import { defineConfig } from "@standard-config/oxlint";
2
3
  import { Linter } from "eslint";
3
4
  import { ExternalPluginEntry, OxlintConfig, OxlintOverride } from "oxlint";
4
5
 
5
- //#region src/get-oxlint-configs/types.d.ts
6
+ //#region src/config-base/oxlint.d.ts
7
+ /**
8
+ * Standard Config’s ESLint config translated for Oxlint.
9
+ *
10
+ * Primary config entry. Does not include React-related rules.
11
+ */
12
+ declare const config: OxlintConfig;
13
+ //#endregion
14
+ //#region src/types/oxlint.d.ts
6
15
  type OxlintOverrideEntry = Pick<OxlintOverride, 'rules'>;
7
- type OxlintConfigEntriesOptions = Pick<StandardConfig, 'react'> & {
8
- /**
9
- * Enable stylistic rules.
10
- * @default true
11
- */
12
- stylistic?: boolean;
13
- };
14
- type OxlintConfigEntries = {
15
- /**
16
- * Primary config defining base rules and JS plugins shared across all
17
- * configs. Meant to be merged with the root config.
18
- */
19
- configBase: OxlintConfig;
20
- /**
21
- * Optional override entry containing stylistic rules that target config
22
- * files. Intended for explicit overrides, as `configBase` already includes
23
- * these rules when `stylistic` is enabled.
24
- */
25
- configConfigFiles: OxlintOverrideEntry;
26
- /**
27
- * Optional override entry containing rules that target `*.tsx` files.
28
- * Intended for explicit overrides, as `configBase` already includes these
29
- * rules when `react` is enabled.
30
- */
31
- configReact: OxlintOverrideEntry;
32
- };
16
+ type OxlintPluginEntry = Exclude<ExternalPluginEntry, string>;
33
17
  //#endregion
34
- //#region src/get-oxlint-configs/index.d.ts
18
+ //#region src/config-config-files/oxlint.d.ts
35
19
  /**
36
- * Translate Standard Config’s own ESLint config to Oxlint config entries.
37
- * Relies on Oxlint’s experimental `jsPlugins` support.
20
+ * Standard Config’s ESLint config translated for Oxlint.
21
+ *
22
+ * Optional config entry containing rules that target config files. Intended for
23
+ * explicit overrides.
38
24
  */
39
- declare function getOxlintConfigs({
40
- react,
41
- stylistic
42
- }?: OxlintConfigEntriesOptions): OxlintConfigEntries;
25
+ declare const config$2: OxlintOverrideEntry;
43
26
  //#endregion
44
- //#region src/transform-plugin/types.d.ts
45
- type OxlintPluginEntry = Exclude<ExternalPluginEntry, string>;
27
+ //#region src/config-react/oxlint.d.ts
28
+ /**
29
+ * Standard Config’s ESLint config translated for Oxlint.
30
+ *
31
+ * Primary config entry. Includes React-related rules.
32
+ */
33
+ declare const config$1: OxlintConfig;
34
+ //#endregion
35
+ //#region src/utilities/define-oxlint-config/index.d.ts
36
+ /**
37
+ * Wrapper around `defineConfig` from `@standard-config/oxlint` that combines
38
+ * Standard Config’s Oxlint and ESLint configs, with optional overrides.
39
+ */
40
+ declare function defineOxlintConfig(...configs: Parameters<typeof defineConfig>): OxlintConfig;
46
41
  //#endregion
47
- //#region src/transform-plugin/index.d.ts
42
+ //#region src/utilities/transform-plugin/index.d.ts
48
43
  /**
49
44
  * Resolve an external plugin specifier.
50
45
  *
@@ -52,7 +47,7 @@ type OxlintPluginEntry = Exclude<ExternalPluginEntry, string>;
52
47
  */
53
48
  declare function transformPlugin(name: string, specifier: string): OxlintPluginEntry;
54
49
  //#endregion
55
- //#region src/transform-rules/index.d.ts
50
+ //#region src/utilities/transform-rules/index.d.ts
56
51
  /**
57
52
  * Modify a set of ESLint rules.
58
53
  *
@@ -64,5 +59,5 @@ declare function transformRules(rules: Linter.Config['rules'], options: {
64
59
  severity?: Linter.StringSeverity;
65
60
  }): LinterConfigRules;
66
61
  //#endregion
67
- export { getOxlintConfigs, transformPlugin, transformRules };
62
+ export { defineOxlintConfig, config as oxlintConfigBase, config$1 as oxlintConfigBaseReact, config$2 as oxlintConfigConfigFiles, transformPlugin, transformRules };
68
63
  //# sourceMappingURL=utilities.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.d.mts","names":["OxlintConfig","OxlintOverride","StandardConfig","OxlintOverrideEntry","Pick","OxlintConfigEntriesOptions","stylistic","OxlintConfigEntries","configBase","configConfigFiles","configReact","ExternalPluginEntry","OxlintPluginEntry","Exclude"],"sources":["../src/get-oxlint-configs/types.d.ts","../src/get-oxlint-configs/index.ts","../src/transform-plugin/types.d.ts","../src/transform-plugin/index.ts","../src/transform-rules/index.ts"],"mappings":";;;;;KAGYG,mBAAAA,GAAsBC,IAAAA,CAAKH,cAAAA;AAAAA,KAE3BI,0BAAAA,GAA6BD,IAAAA,CAAKF,cAAAA;EAFf;;;;EAO9BI,SAAAA;AAAAA;AAAAA,KAGWC,mBAAAA;;;;;EAKXC,UAAAA,EAAYR,YAAAA;EALb;;;;;EAWCS,iBAAAA,EAAmBN,mBAAAA;;;;;;EAMnBO,WAAAA,EAAaP,mBAAAA;AAAAA;;;;;;;iBCAU,gBAAA,CAAA;EACvB,KAAA;EACA;AAAA,IACE,0BAAA,GAAkC,mBAAA;;;KC/BzBS,iBAAAA,GAAoBC,OAAAA,CAAQF,mBAAAA;;;;;;;AFCxC;iBGKwB,eAAA,CACvB,IAAA,UACA,SAAA,WACE,iBAAA;;;;;;AHRH;;iBIKwB,cAAA,CACvB,KAAA,EAAO,MAAA,CAAO,MAAA,WACd,OAAA;EACC,IAAA,GAAO,aAAA;EACP,MAAA;EACA,QAAA,GAAW,MAAA,CAAO,cAAA;AAAA,IAEjB,iBAAA"}
1
+ {"version":3,"file":"utilities.d.mts","names":["ExternalPluginEntry","OxlintConfig","OxlintOverride","OxlintOverrideEntry","Pick","OxlintPluginEntry","Exclude"],"sources":["../src/config-base/oxlint.ts","../src/types/oxlint.d.ts","../src/config-config-files/oxlint.ts","../src/config-react/oxlint.ts","../src/utilities/define-oxlint-config/index.ts","../src/utilities/transform-plugin/index.ts","../src/utilities/transform-rules/index.ts"],"mappings":";;;;;;;;;;;cAaM,MAAA,EAAQ,YAAA;;;KCXFG,mBAAAA,GAAsBC,IAAAA,CAAKF,cAAAA;AAAAA,KAE3BG,iBAAAA,GAAoBC,OAAAA,CAAQN,mBAAAA;;;;;;;;ADJG;cESrC,QAAA,EAAQ,mBAAA;;;;;;;;cCIR,QAAA,EAAQ,YAAA;;;;;;;iBCJU,kBAAA,CAAA,GACpB,OAAA,EAAS,UAAA,QAAkB,YAAA,IAC5B,YAAA;;;;;;;;iBCHqB,eAAA,CACvB,IAAA,UACA,SAAA,WACE,iBAAA;;;;;;;ALXwC;iBMQnB,cAAA,CACvB,KAAA,EAAO,MAAA,CAAO,MAAA,WACd,OAAA;EACC,IAAA,GAAO,aAAA;EACP,MAAA;EACA,QAAA,GAAW,MAAA,CAAO,cAAA;AAAA,IAEjB,iBAAA"}
@@ -1,7 +1,16 @@
1
- import { a as transformRules, c as rules$2, i as rules$5, l as rules$1, n as rules$7, o as rules$8, r as rules$6, s as rules$3, t as rules$4, u as rules } from "./rules-react-DgqgnQ-O.mjs";
1
+ import { a as rules$2, i as rules$3, n as rules$4, o as rules$1, r as rules, t as rules$5 } from "./rules-react-CX3lvpmg.mjs";
2
2
  import { fileURLToPath } from "node:url";
3
-
4
- //#region src/transform-plugin/index.ts
3
+ import { defineConfig } from "@standard-config/oxlint";
4
+ //#region src/config-config-files/oxlint.ts
5
+ /**
6
+ * Standard Config’s ESLint config translated for Oxlint.
7
+ *
8
+ * Optional config entry containing rules that target config files. Intended for
9
+ * explicit overrides.
10
+ */
11
+ const config$2 = { rules: { ...rules } };
12
+ //#endregion
13
+ //#region src/utilities/transform-plugin/index.ts
5
14
  /**
6
15
  * Resolve an external plugin specifier.
7
16
  *
@@ -16,74 +25,96 @@ function transformPlugin(name, specifier) {
16
25
  specifier
17
26
  };
18
27
  }
19
-
20
28
  //#endregion
21
- //#region src/get-oxlint-configs/index.ts
22
- const PREFIX_ESLINT = "eslint";
23
- const PREFIX_PERFECTIONIST = "perfectionist";
24
- const PREFIX_REACT = "react-js";
25
- const PREFIX_REACT_HOOKS = "react-hooks-js";
26
- const PREFIX_REACT_NAMING_CONVENTION = "react-naming-convention";
27
- const PREFIX_REACT_X = "react-x";
28
- const PREFIX_STYLISTIC = "stylistic";
29
+ //#region src/utilities/transform-rules/index.ts
29
30
  /**
30
- * Translate Standard Config’s own ESLint config to Oxlint config entries.
31
- * Relies on Oxlint’s experimental `jsPlugins` support.
31
+ * Modify a set of ESLint rules.
32
+ *
33
+ * @deprecated Not covered by semver.
32
34
  */
33
- function getOxlintConfigs({ react = false, stylistic = true } = {}) {
34
- const configBase = { rules: transformRules(rules, { prefix: PREFIX_ESLINT }) };
35
- const configConfigFiles = {};
36
- const configReact = {};
37
- if (stylistic) {
38
- configBase.jsPlugins = [transformPlugin(PREFIX_STYLISTIC, "@stylistic/eslint-plugin"), transformPlugin(PREFIX_PERFECTIONIST, "eslint-plugin-perfectionist")];
39
- configBase.rules = {
40
- ...configBase.rules,
41
- ...transformRules(rules$1, {
42
- prefix: PREFIX_PERFECTIONIST,
43
- omit: ["perfectionist/sort-classes"]
44
- }),
45
- ...transformRules(rules$2, { prefix: PREFIX_STYLISTIC })
46
- };
47
- configConfigFiles.rules = { ...transformRules(rules$3, { prefix: PREFIX_PERFECTIONIST }) };
48
- configBase.overrides = [{
49
- files: ["**/*.config.{ts,cts,mts}"],
50
- ...configConfigFiles
51
- }];
35
+ function transformRules(rules, options) {
36
+ if (!rules) return {};
37
+ const { omit, prefix, severity } = options;
38
+ const omittedRules = new Set(omit);
39
+ const transformedRules = {};
40
+ for (const [ruleName, ruleConfig] of Object.entries(rules)) {
41
+ if (omittedRules.has(ruleName)) continue;
42
+ if (!Array.isArray(ruleConfig)) {
43
+ transformedRules[ruleName] = severity ?? ruleConfig ?? "off";
44
+ continue;
45
+ }
46
+ const [ruleSeverity, ...ruleOptions] = ruleConfig;
47
+ transformedRules[ruleName] = [severity ?? ruleSeverity, ...ruleOptions];
52
48
  }
53
- if (react) {
54
- configBase.settings = { react: { version: "19.2.4" } };
55
- configBase.jsPlugins = [
56
- ...configBase.jsPlugins ?? [],
57
- transformPlugin(PREFIX_REACT, "eslint-plugin-react"),
58
- transformPlugin(PREFIX_REACT_HOOKS, "eslint-plugin-react-hooks"),
59
- transformPlugin(PREFIX_REACT_NAMING_CONVENTION, "eslint-plugin-react-naming-convention"),
60
- transformPlugin(PREFIX_REACT_X, "eslint-plugin-react-x")
61
- ];
62
- configReact.rules = {
63
- ...transformRules(rules$4, { prefix: PREFIX_REACT }),
64
- ...transformRules(rules$5, { prefix: PREFIX_REACT_HOOKS }),
65
- ...transformRules(rules$6, { prefix: PREFIX_REACT_NAMING_CONVENTION }),
66
- ...transformRules(rules$7, {
67
- prefix: PREFIX_REACT_X,
68
- omit: ["react-x/no-implicit-key", "react-x/no-leaked-conditional-rendering"]
69
- })
70
- };
71
- if (stylistic) configReact.rules = {
72
- ...configReact.rules,
73
- ...transformRules(rules$8, { prefix: PREFIX_PERFECTIONIST })
74
- };
75
- configBase.overrides = [...configBase.overrides ?? [], {
76
- files: ["**/*.tsx"],
77
- ...configReact
78
- }];
49
+ return typeof prefix === "string" ? prefixRules(transformedRules, prefix) : transformedRules;
50
+ }
51
+ function prefixRules(rules, prefix) {
52
+ const prefixedRules = {};
53
+ for (const [ruleName, ruleConfig] of Object.entries(rules)) {
54
+ const name = ruleName.replace(/^.*?\//, "");
55
+ prefixedRules[`${prefix}/${name}`] = ruleConfig;
79
56
  }
80
- return {
81
- configBase,
82
- configConfigFiles,
83
- configReact
84
- };
57
+ return prefixedRules;
58
+ }
59
+ //#endregion
60
+ //#region src/config-base/oxlint.ts
61
+ /**
62
+ * Standard Config’s ESLint config translated for Oxlint.
63
+ *
64
+ * Primary config entry. Does not include React-related rules.
65
+ */
66
+ const config = {
67
+ jsPlugins: [transformPlugin("stylistic", "@stylistic/eslint-plugin"), transformPlugin("perfectionist", "eslint-plugin-perfectionist")],
68
+ settings: { react: { version: "19.2.4" } },
69
+ rules: {
70
+ ...transformRules(rules$1, { prefix: "eslint" }),
71
+ ...transformRules(rules$2, { omit: ["perfectionist/sort-classes"] }),
72
+ ...transformRules(rules$3, { prefix: "stylistic" })
73
+ },
74
+ overrides: [{
75
+ files: ["**/*.config.{ts,cts,mts}"],
76
+ ...config$2
77
+ }]
78
+ };
79
+ //#endregion
80
+ //#region src/clone/index.ts
81
+ function clone(value) {
82
+ try {
83
+ value = structuredClone(value);
84
+ } catch {}
85
+ return value;
85
86
  }
86
-
87
87
  //#endregion
88
- export { getOxlintConfigs, transformPlugin, transformRules };
88
+ //#region src/config-react/oxlint.ts
89
+ /**
90
+ * Standard Config’s ESLint config translated for Oxlint.
91
+ *
92
+ * Primary config entry. Includes React-related rules.
93
+ */
94
+ const config$1 = {
95
+ ...clone(config),
96
+ settings: { react: { version: "19.2.4" } }
97
+ };
98
+ config$1.jsPlugins.push(transformPlugin("react-x", "eslint-plugin-react-x"));
99
+ config$1.overrides.push({
100
+ files: ["**/*.tsx"],
101
+ rules: {
102
+ ...rules$4,
103
+ ...transformRules(rules$5, { omit: ["react-x/no-implicit-key", "react-x/no-leaked-conditional-rendering"] })
104
+ }
105
+ });
106
+ //#endregion
107
+ //#region src/utilities/define-oxlint-config/index.ts
108
+ /**
109
+ * Wrapper around `defineConfig` from `@standard-config/oxlint` that combines
110
+ * Standard Config’s Oxlint and ESLint configs, with optional overrides.
111
+ */
112
+ function defineOxlintConfig(...configs) {
113
+ let includeReactConfig = false;
114
+ for (const { react } of configs) if (react !== void 0) includeReactConfig = react;
115
+ return defineConfig(includeReactConfig ? config$1 : config, ...configs);
116
+ }
117
+ //#endregion
118
+ export { defineOxlintConfig, config as oxlintConfigBase, config$1 as oxlintConfigBaseReact, config$2 as oxlintConfigConfigFiles, transformPlugin, transformRules };
119
+
89
120
  //# sourceMappingURL=utilities.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.mjs","names":["configBaseRulesCore","configBaseRulesPerfectionist","configBaseRulesStylistic","configConfigFilesRulesPerfectionist","configReactRulesReact","configReactRulesReactHooks","configReactRulesReactNamingConvention","configReactRulesReactX","configReactRulesPerfectionist"],"sources":["../src/transform-plugin/index.ts","../src/get-oxlint-configs/index.ts"],"sourcesContent":["import type { OxlintPluginEntry } from './types.d.ts';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Resolve an external plugin specifier.\n *\n * @deprecated Not covered by semver.\n */\nexport default function transformPlugin(\n\tname: string,\n\tspecifier: string\n): OxlintPluginEntry {\n\ttry {\n\t\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\t\tspecifier = fileURLToPath(import.meta.resolve(specifier));\n\t} catch {}\n\n\treturn { name, specifier };\n}\n","import type { OxlintConfig } from 'oxlint';\nimport type {\n\tOxlintConfigEntries,\n\tOxlintConfigEntriesOptions,\n\tOxlintOverrideEntry,\n} from './types.d.ts';\nimport configBaseRulesCore from '../config-base/rules-core.ts';\nimport configBaseRulesPerfectionist from '../config-base/rules-perfectionist.ts';\nimport configBaseRulesStylistic from '../config-base/rules-stylistic.ts';\nimport configConfigFilesRulesPerfectionist from '../config-config-files/rules-perfectionist.ts';\nimport configReactRulesPerfectionist from '../config-react/rules-perfectionist.ts';\nimport configReactRulesReactHooks from '../config-react/rules-react-hooks.ts';\nimport configReactRulesReactNamingConvention from '../config-react/rules-react-naming-convention.ts';\nimport configReactRulesReactX from '../config-react/rules-react-x.ts';\nimport configReactRulesReact from '../config-react/rules-react.ts';\nimport transformPlugin from '../transform-plugin/index.ts';\nimport transformRules from '../transform-rules/index.ts';\n\nconst PREFIX_ESLINT = 'eslint';\nconst PREFIX_PERFECTIONIST = 'perfectionist';\nconst PREFIX_REACT = 'react-js';\nconst PREFIX_REACT_HOOKS = 'react-hooks-js';\nconst PREFIX_REACT_NAMING_CONVENTION = 'react-naming-convention';\nconst PREFIX_REACT_X = 'react-x';\nconst PREFIX_STYLISTIC = 'stylistic';\n\n/**\n * Translate Standard Config’s own ESLint config to Oxlint config entries.\n * Relies on Oxlint’s experimental `jsPlugins` support.\n */\nexport default function getOxlintConfigs({\n\treact = false,\n\tstylistic = true,\n}: OxlintConfigEntriesOptions = {}): OxlintConfigEntries {\n\tconst configBase: OxlintConfig = {\n\t\trules: transformRules(configBaseRulesCore, {\n\t\t\tprefix: PREFIX_ESLINT,\n\t\t}),\n\t};\n\n\tconst configConfigFiles: OxlintOverrideEntry = {};\n\tconst configReact: OxlintOverrideEntry = {};\n\n\tif (stylistic) {\n\t\tconfigBase.jsPlugins = [\n\t\t\ttransformPlugin(PREFIX_STYLISTIC, '@stylistic/eslint-plugin'),\n\t\t\ttransformPlugin(\n\t\t\t\tPREFIX_PERFECTIONIST,\n\t\t\t\t'eslint-plugin-perfectionist'\n\t\t\t),\n\t\t];\n\n\t\tconfigBase.rules = {\n\t\t\t...configBase.rules,\n\t\t\t...transformRules(configBaseRulesPerfectionist, {\n\t\t\t\tprefix: PREFIX_PERFECTIONIST,\n\t\t\t\tomit: [\n\t\t\t\t\t// Crashes Oxlint at the moment\n\t\t\t\t\t'perfectionist/sort-classes',\n\t\t\t\t],\n\t\t\t}),\n\t\t\t...transformRules(configBaseRulesStylistic, {\n\t\t\t\tprefix: PREFIX_STYLISTIC,\n\t\t\t}),\n\t\t};\n\n\t\tconfigConfigFiles.rules = {\n\t\t\t...transformRules(configConfigFilesRulesPerfectionist, {\n\t\t\t\tprefix: PREFIX_PERFECTIONIST,\n\t\t\t}),\n\t\t};\n\n\t\tconfigBase.overrides = [\n\t\t\t{\n\t\t\t\tfiles: ['**/*.config.{ts,cts,mts}'],\n\t\t\t\t...configConfigFiles,\n\t\t\t},\n\t\t];\n\t}\n\n\tif (react) {\n\t\tconfigBase.settings = {\n\t\t\treact: {\n\t\t\t\t// Oxlint doesn’t support `detect`\n\t\t\t\tversion: '19.2.4',\n\t\t\t},\n\t\t};\n\n\t\tconfigBase.jsPlugins = [\n\t\t\t...(configBase.jsPlugins ?? []),\n\t\t\ttransformPlugin(PREFIX_REACT, 'eslint-plugin-react'),\n\t\t\ttransformPlugin(PREFIX_REACT_HOOKS, 'eslint-plugin-react-hooks'),\n\t\t\ttransformPlugin(\n\t\t\t\tPREFIX_REACT_NAMING_CONVENTION,\n\t\t\t\t'eslint-plugin-react-naming-convention'\n\t\t\t),\n\t\t\ttransformPlugin(PREFIX_REACT_X, 'eslint-plugin-react-x'),\n\t\t];\n\n\t\tconfigReact.rules = {\n\t\t\t...transformRules(configReactRulesReact, {\n\t\t\t\tprefix: PREFIX_REACT,\n\t\t\t}),\n\t\t\t...transformRules(configReactRulesReactHooks, {\n\t\t\t\tprefix: PREFIX_REACT_HOOKS,\n\t\t\t}),\n\t\t\t...transformRules(configReactRulesReactNamingConvention, {\n\t\t\t\tprefix: PREFIX_REACT_NAMING_CONVENTION,\n\t\t\t}),\n\t\t\t...transformRules(configReactRulesReactX, {\n\t\t\t\tprefix: PREFIX_REACT_X,\n\t\t\t\tomit: [\n\t\t\t\t\t// Oxlint doesn’t support type-aware rules\n\t\t\t\t\t'react-x/no-implicit-key',\n\t\t\t\t\t'react-x/no-leaked-conditional-rendering',\n\t\t\t\t],\n\t\t\t}),\n\t\t};\n\n\t\tif (stylistic) {\n\t\t\tconfigReact.rules = {\n\t\t\t\t...configReact.rules,\n\t\t\t\t...transformRules(configReactRulesPerfectionist, {\n\t\t\t\t\tprefix: PREFIX_PERFECTIONIST,\n\t\t\t\t}),\n\t\t\t};\n\t\t}\n\n\t\tconfigBase.overrides = [\n\t\t\t...(configBase.overrides ?? []),\n\t\t\t{\n\t\t\t\tfiles: ['**/*.tsx'],\n\t\t\t\t...configReact,\n\t\t\t},\n\t\t];\n\t}\n\n\treturn {\n\t\tconfigBase,\n\t\tconfigConfigFiles,\n\t\tconfigReact,\n\t};\n}\n"],"mappings":";;;;;;;;;AAQA,SAAwB,gBACvB,MACA,WACoB;AACpB,KAAI;AAEH,cAAY,cAAc,OAAO,KAAK,QAAQ,UAAU,CAAC;SAClD;AAER,QAAO;EAAE;EAAM;EAAW;;;;;ACC3B,MAAM,gBAAgB;AACtB,MAAM,uBAAuB;AAC7B,MAAM,eAAe;AACrB,MAAM,qBAAqB;AAC3B,MAAM,iCAAiC;AACvC,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;;;;;AAMzB,SAAwB,iBAAiB,EACxC,QAAQ,OACR,YAAY,SACmB,EAAE,EAAuB;CACxD,MAAM,aAA2B,EAChC,OAAO,eAAeA,OAAqB,EAC1C,QAAQ,eACR,CAAC,EACF;CAED,MAAM,oBAAyC,EAAE;CACjD,MAAM,cAAmC,EAAE;AAE3C,KAAI,WAAW;AACd,aAAW,YAAY,CACtB,gBAAgB,kBAAkB,2BAA2B,EAC7D,gBACC,sBACA,8BACA,CACD;AAED,aAAW,QAAQ;GAClB,GAAG,WAAW;GACd,GAAG,eAAeC,SAA8B;IAC/C,QAAQ;IACR,MAAM,CAEL,6BACA;IACD,CAAC;GACF,GAAG,eAAeC,SAA0B,EAC3C,QAAQ,kBACR,CAAC;GACF;AAED,oBAAkB,QAAQ,EACzB,GAAG,eAAeC,SAAqC,EACtD,QAAQ,sBACR,CAAC,EACF;AAED,aAAW,YAAY,CACtB;GACC,OAAO,CAAC,2BAA2B;GACnC,GAAG;GACH,CACD;;AAGF,KAAI,OAAO;AACV,aAAW,WAAW,EACrB,OAAO,EAEN,SAAS,UACT,EACD;AAED,aAAW,YAAY;GACtB,GAAI,WAAW,aAAa,EAAE;GAC9B,gBAAgB,cAAc,sBAAsB;GACpD,gBAAgB,oBAAoB,4BAA4B;GAChE,gBACC,gCACA,wCACA;GACD,gBAAgB,gBAAgB,wBAAwB;GACxD;AAED,cAAY,QAAQ;GACnB,GAAG,eAAeC,SAAuB,EACxC,QAAQ,cACR,CAAC;GACF,GAAG,eAAeC,SAA4B,EAC7C,QAAQ,oBACR,CAAC;GACF,GAAG,eAAeC,SAAuC,EACxD,QAAQ,gCACR,CAAC;GACF,GAAG,eAAeC,SAAwB;IACzC,QAAQ;IACR,MAAM,CAEL,2BACA,0CACA;IACD,CAAC;GACF;AAED,MAAI,UACH,aAAY,QAAQ;GACnB,GAAG,YAAY;GACf,GAAG,eAAeC,SAA+B,EAChD,QAAQ,sBACR,CAAC;GACF;AAGF,aAAW,YAAY,CACtB,GAAI,WAAW,aAAa,EAAE,EAC9B;GACC,OAAO,CAAC,WAAW;GACnB,GAAG;GACH,CACD;;AAGF,QAAO;EACN;EACA;EACA;EACA"}
1
+ {"version":3,"file":"utilities.mjs","names":["config","rulesPerfectionist","rulesCore","rulesPerfectionist","rulesStylistic","oxlintConfigConfigFiles","config","oxlintConfigBase","rulesPerfectionist","rulesReact","standardDefineConfig","oxlintConfigBaseReact","oxlintConfigBase"],"sources":["../src/config-config-files/oxlint.ts","../src/utilities/transform-plugin/index.ts","../src/utilities/transform-rules/index.ts","../src/config-base/oxlint.ts","../src/clone/index.ts","../src/config-react/oxlint.ts","../src/utilities/define-oxlint-config/index.ts"],"sourcesContent":["import type { OxlintOverrideEntry } from '../types/oxlint.d.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Optional config entry containing rules that target config files. Intended for\n * explicit overrides.\n */\nconst config: OxlintOverrideEntry = {\n\trules: {\n\t\t...rulesPerfectionist,\n\t},\n};\n\nexport default config;\n","import type { OxlintPluginEntry } from '../../types/oxlint.d.ts';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Resolve an external plugin specifier.\n *\n * @deprecated Not covered by semver.\n */\nexport default function transformPlugin(\n\tname: string,\n\tspecifier: string\n): OxlintPluginEntry {\n\ttry {\n\t\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\t\tspecifier = fileURLToPath(import.meta.resolve(specifier));\n\t} catch {}\n\n\treturn { name, specifier };\n}\n","import type { Linter } from 'eslint';\nimport type { LinterConfigRules } from '../../types/eslint.d.ts';\n\n/**\n * Modify a set of ESLint rules.\n *\n * @deprecated Not covered by semver.\n */\nexport default function transformRules(\n\trules: Linter.Config['rules'],\n\toptions: {\n\t\tomit?: ReadonlyArray<string>;\n\t\tprefix?: string;\n\t\tseverity?: Linter.StringSeverity;\n\t}\n): LinterConfigRules {\n\tif (!rules) {\n\t\treturn {};\n\t}\n\n\tconst { omit, prefix, severity } = options;\n\tconst omittedRules = new Set(omit);\n\n\tconst transformedRules: LinterConfigRules = {};\n\n\tfor (const [ruleName, ruleConfig] of Object.entries(rules)) {\n\t\tif (omittedRules.has(ruleName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!Array.isArray(ruleConfig)) {\n\t\t\ttransformedRules[ruleName] = severity ?? ruleConfig ?? 'off';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [ruleSeverity, ...ruleOptions] = ruleConfig;\n\n\t\ttransformedRules[ruleName] = [severity ?? ruleSeverity, ...ruleOptions];\n\t}\n\n\treturn typeof prefix === 'string'\n\t\t? prefixRules(transformedRules, prefix)\n\t\t: transformedRules;\n}\n\nfunction prefixRules(rules: LinterConfigRules, prefix: string) {\n\tconst prefixedRules: LinterConfigRules = {};\n\n\tfor (const [ruleName, ruleConfig] of Object.entries(rules)) {\n\t\tconst name = ruleName.replace(/^.*?\\//, '');\n\n\t\tprefixedRules[`${prefix}/${name}`] = ruleConfig;\n\t}\n\n\treturn prefixedRules;\n}\n","import type { OxlintConfig } from 'oxlint';\nimport oxlintConfigConfigFiles from '../config-config-files/oxlint.ts';\nimport transformPlugin from '../utilities/transform-plugin/index.ts';\nimport transformRules from '../utilities/transform-rules/index.ts';\nimport rulesCore from './rules-core.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesStylistic from './rules-stylistic.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Primary config entry. Does not include React-related rules.\n */\nconst config: OxlintConfig = {\n\tjsPlugins: [\n\t\ttransformPlugin('stylistic', '@stylistic/eslint-plugin'),\n\t\ttransformPlugin('perfectionist', 'eslint-plugin-perfectionist'),\n\t],\n\tsettings: {\n\t\treact: {\n\t\t\t// Oxlint doesn’t support `detect`\n\t\t\tversion: '19.2.4',\n\t\t},\n\t},\n\trules: {\n\t\t...transformRules(rulesCore, {\n\t\t\tprefix: 'eslint',\n\t\t}),\n\t\t...transformRules(rulesPerfectionist, {\n\t\t\tomit: [\n\t\t\t\t// Likely to crash Oxlint\n\t\t\t\t'perfectionist/sort-classes',\n\t\t\t],\n\t\t}),\n\t\t...transformRules(rulesStylistic, {\n\t\t\tprefix: 'stylistic',\n\t\t}),\n\t},\n\toverrides: [\n\t\t{\n\t\t\tfiles: ['**/*.config.{ts,cts,mts}'],\n\t\t\t...oxlintConfigConfigFiles,\n\t\t},\n\t],\n};\n\nexport default config;\n","export default function clone<T>(value: T): T {\n\ttry {\n\t\t/* oxlint-disable-next-line eslint/no-param-reassign */\n\t\tvalue = structuredClone(value);\n\t} catch {}\n\n\treturn value;\n}\n","import type { OxlintConfig } from 'oxlint';\nimport clone from '../clone/index.ts';\nimport oxlintConfigBase from '../config-base/oxlint.ts';\nimport transformPlugin from '../utilities/transform-plugin/index.ts';\nimport transformRules from '../utilities/transform-rules/index.ts';\nimport rulesPerfectionist from './rules-perfectionist.ts';\nimport rulesReact from './rules-react.ts';\n\n/**\n * Standard Config’s ESLint config translated for Oxlint.\n *\n * Primary config entry. Includes React-related rules.\n */\nconst config: OxlintConfig = {\n\t...clone(oxlintConfigBase),\n\n\tsettings: {\n\t\treact: {\n\t\t\t// Oxlint doesn’t support `detect`\n\t\t\tversion: '19.2.4',\n\t\t},\n\t},\n};\n\nconfig.jsPlugins!.push(transformPlugin('react-x', 'eslint-plugin-react-x'));\n\nconfig.overrides!.push({\n\tfiles: ['**/*.tsx'],\n\trules: {\n\t\t...rulesPerfectionist,\n\t\t...transformRules(rulesReact, {\n\t\t\tomit: [\n\t\t\t\t// Oxlint doesn’t support type-aware rules\n\t\t\t\t'react-x/no-implicit-key',\n\t\t\t\t'react-x/no-leaked-conditional-rendering',\n\t\t\t],\n\t\t}),\n\t},\n});\n\nexport default config;\n","import type { OxlintConfig } from 'oxlint';\nimport { defineConfig as standardDefineConfig } from '@standard-config/oxlint';\nimport oxlintConfigBase from '../../config-base/oxlint.ts';\nimport oxlintConfigBaseReact from '../../config-react/oxlint.ts';\n\n/**\n * Wrapper around `defineConfig` from `@standard-config/oxlint` that combines\n * Standard Config’s Oxlint and ESLint configs, with optional overrides.\n */\nexport default function defineOxlintConfig(\n\t...configs: Parameters<typeof standardDefineConfig>\n): OxlintConfig {\n\tlet includeReactConfig = false;\n\n\tfor (const { react } of configs) {\n\t\tif (react !== undefined) {\n\t\t\tincludeReactConfig = react;\n\t\t}\n\t}\n\n\treturn standardDefineConfig(\n\t\tincludeReactConfig ? oxlintConfigBaseReact : oxlintConfigBase,\n\t\t...configs\n\t);\n}\n"],"mappings":";;;;;;;;;;AASA,MAAMA,WAA8B,EACnC,OAAO,EACN,GAAGC,OACH,EACD;;;;;;;;ACLD,SAAwB,gBACvB,MACA,WACoB;AACpB,KAAI;AAEH,cAAY,cAAc,OAAO,KAAK,QAAQ,UAAU,CAAC;SAClD;AAER,QAAO;EAAE;EAAM;EAAW;;;;;;;;;ACT3B,SAAwB,eACvB,OACA,SAKoB;AACpB,KAAI,CAAC,MACJ,QAAO,EAAE;CAGV,MAAM,EAAE,MAAM,QAAQ,aAAa;CACnC,MAAM,eAAe,IAAI,IAAI,KAAK;CAElC,MAAM,mBAAsC,EAAE;AAE9C,MAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;AAC3D,MAAI,aAAa,IAAI,SAAS,CAC7B;AAGD,MAAI,CAAC,MAAM,QAAQ,WAAW,EAAE;AAC/B,oBAAiB,YAAY,YAAY,cAAc;AACvD;;EAGD,MAAM,CAAC,cAAc,GAAG,eAAe;AAEvC,mBAAiB,YAAY,CAAC,YAAY,cAAc,GAAG,YAAY;;AAGxE,QAAO,OAAO,WAAW,WACtB,YAAY,kBAAkB,OAAO,GACrC;;AAGJ,SAAS,YAAY,OAA0B,QAAgB;CAC9D,MAAM,gBAAmC,EAAE;AAE3C,MAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;EAC3D,MAAM,OAAO,SAAS,QAAQ,UAAU,GAAG;AAE3C,gBAAc,GAAG,OAAO,GAAG,UAAU;;AAGtC,QAAO;;;;;;;;;ACzCR,MAAM,SAAuB;CAC5B,WAAW,CACV,gBAAgB,aAAa,2BAA2B,EACxD,gBAAgB,iBAAiB,8BAA8B,CAC/D;CACD,UAAU,EACT,OAAO,EAEN,SAAS,UACT,EACD;CACD,OAAO;EACN,GAAG,eAAeC,SAAW,EAC5B,QAAQ,UACR,CAAC;EACF,GAAG,eAAeC,SAAoB,EACrC,MAAM,CAEL,6BACA,EACD,CAAC;EACF,GAAG,eAAeC,SAAgB,EACjC,QAAQ,aACR,CAAC;EACF;CACD,WAAW,CACV;EACC,OAAO,CAAC,2BAA2B;EACnC,GAAGC;EACH,CACD;CACD;;;AC5CD,SAAwB,MAAS,OAAa;AAC7C,KAAI;AAEH,UAAQ,gBAAgB,MAAM;SACvB;AAER,QAAO;;;;;;;;;ACOR,MAAMC,WAAuB;CAC5B,GAAG,MAAMC,OAAiB;CAE1B,UAAU,EACT,OAAO,EAEN,SAAS,UACT,EACD;CACD;AAEDD,SAAO,UAAW,KAAK,gBAAgB,WAAW,wBAAwB,CAAC;AAE3EA,SAAO,UAAW,KAAK;CACtB,OAAO,CAAC,WAAW;CACnB,OAAO;EACN,GAAGE;EACH,GAAG,eAAeC,SAAY,EAC7B,MAAM,CAEL,2BACA,0CACA,EACD,CAAC;EACF;CACD,CAAC;;;;;;;AC7BF,SAAwB,mBACvB,GAAG,SACY;CACf,IAAI,qBAAqB;AAEzB,MAAK,MAAM,EAAE,WAAW,QACvB,KAAI,UAAU,KAAA,EACb,sBAAqB;AAIvB,QAAOC,aACN,qBAAqBC,WAAwBC,QAC7C,GAAG,QACH"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@standard-config/eslint",
3
- "version": "1.6.1",
3
+ "version": "2.0.0",
4
4
  "description": "TypeScript-first ESLint config designed to complement Oxlint",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -39,53 +39,56 @@
39
39
  }
40
40
  },
41
41
  "engines": {
42
- "node": ">=20"
42
+ "node": ">=22"
43
43
  },
44
44
  "dependencies": {
45
- "@eslint/compat": "^2.0.2",
46
- "@stylistic/eslint-plugin": "^5.9.0",
47
- "eslint-plugin-perfectionist": "^5.6.0",
48
- "eslint-plugin-react": "^7.37.5",
49
- "eslint-plugin-react-hooks": "^7.0.1",
50
- "eslint-plugin-react-naming-convention": "^2.13.0",
51
- "eslint-plugin-react-x": "^2.13.0",
52
- "typescript-eslint": "^8.56.1"
45
+ "@stylistic/eslint-plugin": "^5.10.0",
46
+ "eslint-plugin-perfectionist": "^5.7.0",
47
+ "eslint-plugin-react-x": "^3.0.0"
53
48
  },
54
49
  "peerDependencies": {
55
- "@standard-config/oxlint": ">=1.2.2",
56
- "eslint": ">=9",
57
- "typescript": ">=5"
50
+ "@standard-config/oxlint": ">=1.3.0",
51
+ "eslint": ">=10.0.0",
52
+ "typescript-eslint": ">=8.56.0"
58
53
  },
59
54
  "peerDependenciesMeta": {
60
55
  "@standard-config/oxlint": {
61
56
  "optional": true
57
+ },
58
+ "eslint": {
59
+ "optional": true
60
+ },
61
+ "typescript-eslint": {
62
+ "optional": true
62
63
  }
63
64
  },
64
65
  "devDependencies": {
65
- "@standard-config/oxlint": "^1.2.2",
66
- "@standard-config/prettier": "^1.9.1",
67
- "@standard-config/tsconfig": "^2.0.2",
68
- "@types/node": "^22.19.11",
69
- "@vitest/coverage-v8": "^4.0.18",
70
- "eslint": "^9.39.3",
66
+ "@eslint/compat": "^2.0.3",
67
+ "@standard-config/oxlint": "^1.6.0",
68
+ "@standard-config/prettier": "^1.11.1",
69
+ "@standard-config/tsconfig": "^3.1.0",
70
+ "@types/node": "^22.19.15",
71
+ "@vitest/coverage-v8": "^4.1.1",
72
+ "eslint": "^10.1.0",
71
73
  "husky": "^9.1.7",
72
74
  "jiti": "^2.6.1",
73
- "oxlint": "^1.50.0",
74
- "oxlint-tsgolint": "^0.15.0",
75
+ "oxlint": "^1.56.0",
76
+ "oxlint-tsgolint": "^0.17.3",
75
77
  "prettier": "^3.8.1",
76
- "publint": "^0.3.17",
78
+ "publint": "^0.3.18",
77
79
  "react": "^19.2.4",
78
- "tsdown": "^0.20.3",
79
- "typescript": "^5.9.3",
80
- "vitest": "^4.0.18"
80
+ "tsdown": "^0.21.4",
81
+ "typescript": "^6.0.2",
82
+ "typescript-eslint": "^8.57.2",
83
+ "vitest": "^4.1.1"
81
84
  },
82
85
  "scripts": {
83
86
  "build": "tsdown",
84
87
  "fix": "pnpm format && pnpm lint && pnpm format",
85
88
  "format": "prettier --ignore-unknown --log-level=warn --write .",
86
89
  "format:check": "prettier --check --ignore-unknown .",
87
- "lint": "oxlint --fix --report-unused-disable-directives --type-aware --type-check && eslint --fix .",
88
- "lint:check": "oxlint --deny-warnings --report-unused-disable-directives --type-aware --type-check && eslint .",
90
+ "lint": "oxlint --fix && eslint --fix .",
91
+ "lint:check": "oxlint --deny-warnings --type-check && eslint .",
89
92
  "test": "vitest run",
90
93
  "typecheck": "tsc --noEmit"
91
94
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-C8CpEqE5.d.mts","names":["Linter","defineConfig","eslintDefineConfig","LinterConfigEntry","Config","Omit","LinterConfigRuleEntry","RuleSeverity","LinterConfigRules","Record","InfiniteLinterConfig","Parameters","StandardConfig","Exclude","react","InfiniteLinterConfigs","StandardConfigArray"],"sources":["../src/types/index.d.ts"],"mappings":";;;;KAGYG,iBAAAA,GAAoBE,IAAAA,CAAKL,MAAAA,CAAOI,MAAAA;AAAAA,KAEvCE,qBAAAA,GACFN,MAAAA,CAAOO,YAAAA,IACNP,MAAAA,CAAOO,YAAAA;AAAAA,KAECC,iBAAAA,GAAoBC,MAAAA,SAAeH,qBAAAA;AAAAA,KAE1CI,oBAAAA,GAAuBC,UAAAA,QAAkBT,YAAAA;AAAAA,KAElCU,cAAAA,GAAiBC,OAAAA,CAAQH,oBAAAA;EARX;;;;EAazBI,KAAAA;AAAAA;AAAAA,KAGIC,qBAAAA,IAAyBH,cAAAA,KAAmBF,oBAAAA;AAAAA,KAErCM,mBAAAA,GACTN,oBAAAA,KACAK,qBAAAA,IACCA,qBAAAA,KAA0BL,oBAAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rules-react-DgqgnQ-O.mjs","names":["rules","rules","rules","rules","rules","rules","rules","rules"],"sources":["../src/config-base/rules-core.ts","../src/config-base/rules-perfectionist.ts","../src/config-base/rules-stylistic.ts","../src/config-config-files/rules-perfectionist.ts","../src/config-react/rules-perfectionist.ts","../src/transform-rules/index.ts","../src/config-react/rules-react-hooks.ts","../src/config-react/rules-react-naming-convention.ts","../src/config-react/rules-react-x.ts","../src/config-react/rules-react.ts"],"sourcesContent":["import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'camelcase': ['error', { properties: 'always' }],\n\t'func-name-matching': [\n\t\t'error',\n\t\t'never',\n\t\t{ considerPropertyDescriptor: true },\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'perfectionist/sort-array-includes': ['error', { type: 'natural' }],\n\t'perfectionist/sort-classes': [\n\t\t'error',\n\t\t{\n\t\t\tgroups: ['property', 'constructor'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-exports': ['error', { type: 'natural' }],\n\t'perfectionist/sort-imports': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'mock-side-effect',\n\t\t\t\t\telementNamePattern: '^.*/_*(mocks)_*/.*$',\n\t\t\t\t\tselector: 'side-effect',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'mock',\n\t\t\t\t\telementNamePattern: '^.*/_*(mocks)_*/.*$',\n\t\t\t\t\tselector: 'import',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: [\n\t\t\t\t'mock-side-effect',\n\t\t\t\t'mock',\n\t\t\t\t['type-builtin', 'type-external'],\n\t\t\t\t'type-internal',\n\t\t\t\t['type-parent', 'type-sibling', 'type-index'],\n\t\t\t\t['value-builtin', 'value-external'],\n\t\t\t\t'value-internal',\n\t\t\t\t['value-parent', 'value-sibling', 'value-index'],\n\t\t\t\t'unknown',\n\t\t\t\t'style',\n\t\t\t\t'side-effect',\n\t\t\t\t'side-effect-style',\n\t\t\t],\n\t\t\tinternalPattern: ['^(#|@/).*'],\n\t\t\tnewlinesBetween: 0,\n\t\t\tsortSideEffects: true,\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-interfaces': [\n\t\t'error',\n\t\t{\n\t\t\tgroups: ['index-signature', 'unknown', 'method'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-intersection-types': ['error', { type: 'natural' }],\n\t'perfectionist/sort-named-exports': ['error', { type: 'natural' }],\n\t'perfectionist/sort-named-imports': ['error', { type: 'natural' }],\n\t'perfectionist/sort-object-types': [\n\t\t'error',\n\t\t{\n\t\t\tgroups: ['index-signature', 'unknown', 'method'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n\t'perfectionist/sort-objects': [\n\t\t'error',\n\t\t{\n\t\t\ttype: 'natural',\n\t\t\tuseConfigurationIf: {\n\t\t\t\tobjectType: 'destructured',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttype: 'unsorted',\n\t\t\tuseConfigurationIf: {\n\t\t\t\tobjectType: 'non-destructured',\n\t\t\t},\n\t\t},\n\t],\n\t'perfectionist/sort-union-types': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'false',\n\t\t\t\t\telementNamePattern: '^false$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'never',\n\t\t\t\t\telementNamePattern: '^never$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'react',\n\t\t\t\t\telementNamePattern: '^react.+',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: ['react', 'unknown', 'tuple', 'false', 'nullish', 'never'],\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'@stylistic/lines-between-class-members': [\n\t\t'error',\n\t\t'always',\n\t\t{ exceptAfterSingleLine: true },\n\t],\n\t'@stylistic/padding-line-between-statements': [\n\t\t'error',\n\t\t{\n\t\t\tblankLine: 'always',\n\t\t\tnext: '*',\n\t\t\tprev: [\n\t\t\t\t'block-like',\n\t\t\t\t'directive',\n\t\t\t\t'export',\n\t\t\t\t'function',\n\t\t\t\t'import',\n\t\t\t\t'interface',\n\t\t\t\t'type',\n\t\t\t],\n\t\t},\n\t\t{\n\t\t\tblankLine: 'always',\n\t\t\tnext: [\n\t\t\t\t'block-like',\n\t\t\t\t'directive',\n\t\t\t\t'export',\n\t\t\t\t'function',\n\t\t\t\t'import',\n\t\t\t\t'interface',\n\t\t\t\t'type',\n\t\t\t],\n\t\t\tprev: '*',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: ['break', 'continue', 'return', 'throw'],\n\t\t\tprev: 'block-like',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'always',\n\t\t\tnext: '*',\n\t\t\tprev: ['case', 'default'],\n\t\t},\n\t\t{\n\t\t\tblankLine: 'never',\n\t\t\tnext: 'directive',\n\t\t\tprev: 'directive',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: 'export',\n\t\t\tprev: 'export',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'never',\n\t\t\tnext: ['function', 'function-overload'],\n\t\t\tprev: 'function-overload',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'never',\n\t\t\tnext: 'import',\n\t\t\tprev: 'import',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: 'interface',\n\t\t\tprev: 'interface',\n\t\t},\n\t\t{\n\t\t\tblankLine: 'any',\n\t\t\tnext: 'type',\n\t\t\tprev: 'type',\n\t\t},\n\t],\n\t'@stylistic/spaced-comment': [\n\t\t'error',\n\t\t'always',\n\t\t{\n\t\t\tblock: {\n\t\t\t\tbalanced: true,\n\t\t\t},\n\t\t\tline: {\n\t\t\t\tmarkers: ['/'],\n\t\t\t},\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'perfectionist/sort-objects': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'extends',\n\t\t\t\t\telementNamePattern: '^extends$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'files',\n\t\t\t\t\telementNamePattern: '^files$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'ignores',\n\t\t\t\t\telementNamePattern: '^(ignores|ignorePatterns)$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'name',\n\t\t\t\t\telementNamePattern: '^(name|groupName)$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'overrides',\n\t\t\t\t\telementNamePattern: '^overrides$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'parser',\n\t\t\t\t\telementNamePattern: '^parser$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'plugins',\n\t\t\t\t\telementNamePattern: '^plugins$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'rules',\n\t\t\t\t\telementNamePattern: '^rules$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'test',\n\t\t\t\t\telementNamePattern: '^(test|tests)$',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: [\n\t\t\t\t'name',\n\t\t\t\t'files',\n\t\t\t\t'extends',\n\t\t\t\t'ignores',\n\t\t\t\t'plugins',\n\t\t\t\t'parser',\n\t\t\t\t'test',\n\t\t\t\t'unknown',\n\t\t\t\t'rules',\n\t\t\t\t'overrides',\n\t\t\t],\n\t\t\tnewlinesBetween: 0,\n\t\t\ttype: 'natural',\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'perfectionist/sort-jsx-props': [\n\t\t'error',\n\t\t{\n\t\t\tcustomGroups: [\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'as',\n\t\t\t\t\telementNamePattern: '^as$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'callback',\n\t\t\t\t\telementNamePattern: '^on.+',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'children',\n\t\t\t\t\telementNamePattern: '^children$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'key',\n\t\t\t\t\telementNamePattern: '^key$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'ref',\n\t\t\t\t\telementNamePattern: '^ref$',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tgroupName: 'unsafe',\n\t\t\t\t\telementNamePattern: '^dangerously.+',\n\t\t\t\t},\n\t\t\t],\n\t\t\tgroups: [\n\t\t\t\t'key',\n\t\t\t\t'ref',\n\t\t\t\t'as',\n\t\t\t\t'unknown',\n\t\t\t\t'shorthand-prop',\n\t\t\t\t'callback',\n\t\t\t\t'children',\n\t\t\t\t'unsafe',\n\t\t\t],\n\t\t\ttype: 'unsorted',\n\t\t},\n\t],\n};\n\nexport default rules;\n","import type { Linter } from 'eslint';\nimport type { LinterConfigRules } from '../types/index.d.ts';\n\n/**\n * Modify a set of ESLint rules.\n *\n * @deprecated Not covered by semver.\n */\nexport default function transformRules(\n\trules: Linter.Config['rules'],\n\toptions: {\n\t\tomit?: ReadonlyArray<string>;\n\t\tprefix?: string;\n\t\tseverity?: Linter.StringSeverity;\n\t}\n): LinterConfigRules {\n\tif (!rules) {\n\t\treturn {};\n\t}\n\n\tconst { omit, prefix, severity } = options;\n\tconst omittedRules = new Set(omit);\n\n\tconst transformedRules: LinterConfigRules = {};\n\n\tfor (const [ruleName, ruleConfig] of Object.entries(rules)) {\n\t\tif (omittedRules.has(ruleName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!Array.isArray(ruleConfig)) {\n\t\t\ttransformedRules[ruleName] = severity ?? ruleConfig ?? 'off';\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst [ruleSeverity, ...ruleOptions] = ruleConfig;\n\n\t\ttransformedRules[ruleName] = [severity ?? ruleSeverity, ...ruleOptions];\n\t}\n\n\treturn typeof prefix === 'string'\n\t\t? prefixRules(transformedRules, prefix)\n\t\t: transformedRules;\n}\n\nfunction prefixRules(rules: LinterConfigRules, prefix: string) {\n\tconst prefixedRules: LinterConfigRules = {};\n\n\tfor (const [ruleName, ruleConfig] of Object.entries(rules)) {\n\t\tconst name = ruleName.replace(/^.*?\\//, '');\n\n\t\tprefixedRules[`${prefix}/${name}`] = ruleConfig;\n\t}\n\n\treturn prefixedRules;\n}\n","import type { LinterConfigRules } from '../types/index.d.ts';\nimport pluginReactHooks from 'eslint-plugin-react-hooks';\nimport transformRules from '../transform-rules/index.ts';\n\nconst rules: LinterConfigRules = transformRules(\n\tpluginReactHooks.configs.flat['recommended-latest'].rules,\n\t{\n\t\tomit: [\n\t\t\t/* prettier-ignore */\n\t\t\t'react-hooks/exhaustive-deps',\n\t\t\t'react-hooks/rules-of-hooks',\n\t\t],\n\t\tseverity: 'error',\n\t}\n);\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'react-naming-convention/component-name': 'error',\n\t'react-naming-convention/context-name': 'error',\n\t'react-naming-convention/ref-name': 'error',\n\t'react-naming-convention/use-state': 'error',\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'react-x/jsx-dollar': 'error',\n\t'react-x/jsx-key-before-spread': 'error',\n\t'react-x/jsx-no-iife': 'error',\n\t'react-x/no-access-state-in-setstate': 'error',\n\t'react-x/no-class-component': 'error',\n\t'react-x/no-context-provider': 'error',\n\t'react-x/no-default-props': 'error',\n\t'react-x/no-duplicate-key': 'error',\n\t'react-x/no-forward-ref': 'error',\n\t'react-x/no-implicit-key': 'error',\n\t'react-x/no-leaked-conditional-rendering': 'error',\n\t'react-x/no-misused-capture-owner-stack': 'error',\n\t'react-x/no-nested-component-definitions': 'error',\n\t'react-x/no-nested-lazy-component-declarations': 'error',\n\t'react-x/no-prop-types': 'error',\n\t'react-x/no-unnecessary-use-callback': 'error',\n\t'react-x/no-unnecessary-use-memo': 'error',\n\t'react-x/no-unstable-context-value': 'error',\n\t'react-x/no-unstable-default-props': 'error',\n\t'react-x/no-use-context': 'error',\n\t'react-x/prefer-destructuring-assignment': 'error',\n\t'react-x/prefer-use-state-lazy-initialization': 'error',\n};\n\nexport default rules;\n","import type { LinterConfigRules } from '../types/index.d.ts';\n\nconst rules: LinterConfigRules = {\n\t'react/function-component-definition': [\n\t\t'error',\n\t\t{\n\t\t\tnamedComponents: ['arrow-function', 'function-declaration'],\n\t\t\tunnamedComponents: 'arrow-function',\n\t\t},\n\t],\n\t'react/no-adjacent-inline-elements': 'error',\n};\n\nexport default rules;\n"],"mappings":";;;AAEA,MAAMA,UAA2B;CAChC,aAAa,CAAC,SAAS,EAAE,YAAY,UAAU,CAAC;CAChD,sBAAsB;EACrB;EACA;EACA,EAAE,4BAA4B,MAAM;EACpC;CACD;;;;ACPD,MAAMC,UAA2B;CAChC,qCAAqC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CACnE,8BAA8B,CAC7B,SACA;EACC,QAAQ,CAAC,YAAY,cAAc;EACnC,MAAM;EACN,CACD;CACD,8BAA8B,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CAC5D,8BAA8B,CAC7B,SACA;EACC,cAAc,CACb;GACC,WAAW;GACX,oBAAoB;GACpB,UAAU;GACV,EACD;GACC,WAAW;GACX,oBAAoB;GACpB,UAAU;GACV,CACD;EACD,QAAQ;GACP;GACA;GACA,CAAC,gBAAgB,gBAAgB;GACjC;GACA;IAAC;IAAe;IAAgB;IAAa;GAC7C,CAAC,iBAAiB,iBAAiB;GACnC;GACA;IAAC;IAAgB;IAAiB;IAAc;GAChD;GACA;GACA;GACA;GACA;EACD,iBAAiB,CAAC,YAAY;EAC9B,iBAAiB;EACjB,iBAAiB;EACjB,MAAM;EACN,CACD;CACD,iCAAiC,CAChC,SACA;EACC,QAAQ;GAAC;GAAmB;GAAW;GAAS;EAChD,MAAM;EACN,CACD;CACD,yCAAyC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CACvE,oCAAoC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CAClE,oCAAoC,CAAC,SAAS,EAAE,MAAM,WAAW,CAAC;CAClE,mCAAmC,CAClC,SACA;EACC,QAAQ;GAAC;GAAmB;GAAW;GAAS;EAChD,MAAM;EACN,CACD;CACD,8BAA8B;EAC7B;EACA;GACC,MAAM;GACN,oBAAoB,EACnB,YAAY,gBACZ;GACD;EACD;GACC,MAAM;GACN,oBAAoB,EACnB,YAAY,oBACZ;GACD;EACD;CACD,kCAAkC,CACjC,SACA;EACC,cAAc;GACb;IACC,WAAW;IACX,oBAAoB;IACpB;GACD;IACC,WAAW;IACX,oBAAoB;IACpB;GACD;IACC,WAAW;IACX,oBAAoB;IACpB;GACD;EACD,QAAQ;GAAC;GAAS;GAAW;GAAS;GAAS;GAAW;GAAQ;EAClE,MAAM;EACN,CACD;CACD;;;;AClGD,MAAMC,UAA2B;CAChC,0CAA0C;EACzC;EACA;EACA,EAAE,uBAAuB,MAAM;EAC/B;CACD,8CAA8C;EAC7C;EACA;GACC,WAAW;GACX,MAAM;GACN,MAAM;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD;EACD;GACC,WAAW;GACX,MAAM;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;IAAC;IAAS;IAAY;IAAU;IAAQ;GAC9C,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM,CAAC,QAAQ,UAAU;GACzB;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM,CAAC,YAAY,oBAAoB;GACvC,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;GACC,WAAW;GACX,MAAM;GACN,MAAM;GACN;EACD;CACD,6BAA6B;EAC5B;EACA;EACA;GACC,OAAO,EACN,UAAU,MACV;GACD,MAAM,EACL,SAAS,CAAC,IAAI,EACd;GACD;EACD;CACD;;;;ACvFD,MAAMC,UAA2B,EAChC,8BAA8B,CAC7B,SACA;CACC,cAAc;EACb;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;CACD,QAAQ;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,iBAAiB;CACjB,MAAM;CACN,CACD,EACD;;;;AC1DD,MAAMC,UAA2B,EAChC,gCAAgC,CAC/B,SACA;CACC,cAAc;EACb;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;GACC,WAAW;GACX,oBAAoB;GACpB;EACD;CACD,QAAQ;EACP;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD,MAAM;CACN,CACD,EACD;;;;;;;;;ACrCD,SAAwB,eACvB,OACA,SAKoB;AACpB,KAAI,CAAC,MACJ,QAAO,EAAE;CAGV,MAAM,EAAE,MAAM,QAAQ,aAAa;CACnC,MAAM,eAAe,IAAI,IAAI,KAAK;CAElC,MAAM,mBAAsC,EAAE;AAE9C,MAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;AAC3D,MAAI,aAAa,IAAI,SAAS,CAC7B;AAGD,MAAI,CAAC,MAAM,QAAQ,WAAW,EAAE;AAC/B,oBAAiB,YAAY,YAAY,cAAc;AACvD;;EAGD,MAAM,CAAC,cAAc,GAAG,eAAe;AAEvC,mBAAiB,YAAY,CAAC,YAAY,cAAc,GAAG,YAAY;;AAGxE,QAAO,OAAO,WAAW,WACtB,YAAY,kBAAkB,OAAO,GACrC;;AAGJ,SAAS,YAAY,OAA0B,QAAgB;CAC9D,MAAM,gBAAmC,EAAE;AAE3C,MAAK,MAAM,CAAC,UAAU,eAAe,OAAO,QAAQ,MAAM,EAAE;EAC3D,MAAM,OAAO,SAAS,QAAQ,UAAU,GAAG;AAE3C,gBAAc,GAAG,OAAO,GAAG,UAAU;;AAGtC,QAAO;;;;;AClDR,MAAMC,UAA2B,eAChC,iBAAiB,QAAQ,KAAK,sBAAsB,OACpD;CACC,MAAM,CAEL,+BACA,6BACA;CACD,UAAU;CACV,CACD;;;;ACZD,MAAMC,UAA2B;CAChC,0CAA0C;CAC1C,wCAAwC;CACxC,oCAAoC;CACpC,qCAAqC;CACrC;;;;ACLD,MAAMC,UAA2B;CAChC,sBAAsB;CACtB,iCAAiC;CACjC,uBAAuB;CACvB,uCAAuC;CACvC,8BAA8B;CAC9B,+BAA+B;CAC/B,4BAA4B;CAC5B,4BAA4B;CAC5B,0BAA0B;CAC1B,2BAA2B;CAC3B,2CAA2C;CAC3C,0CAA0C;CAC1C,2CAA2C;CAC3C,iDAAiD;CACjD,yBAAyB;CACzB,uCAAuC;CACvC,mCAAmC;CACnC,qCAAqC;CACrC,qCAAqC;CACrC,0BAA0B;CAC1B,2CAA2C;CAC3C,gDAAgD;CAChD;;;;ACvBD,MAAM,QAA2B;CAChC,uCAAuC,CACtC,SACA;EACC,iBAAiB,CAAC,kBAAkB,uBAAuB;EAC3D,mBAAmB;EACnB,CACD;CACD,qCAAqC;CACrC"}