@standard-config/eslint 1.6.1 → 2.0.1
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 +4 -25
- package/dist/{index-C8CpEqE5.d.mts → eslint-Bm8LJN21.d.mts} +12 -10
- package/dist/eslint-Bm8LJN21.d.mts.map +1 -0
- package/dist/index.d.mts +4 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +28 -47
- package/dist/index.mjs.map +1 -1
- package/dist/{rules-react-DgqgnQ-O.mjs → rules-react-CX3lvpmg.mjs} +19 -78
- package/dist/rules-react-CX3lvpmg.mjs.map +1 -0
- package/dist/utilities.d.mts +35 -40
- package/dist/utilities.d.mts.map +1 -1
- package/dist/utilities.mjs +102 -66
- package/dist/utilities.mjs.map +1 -1
- package/package.json +30 -27
- package/dist/index-C8CpEqE5.d.mts.map +0 -1
- package/dist/rules-react-DgqgnQ-O.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
[](https://www.npmjs.com/package/@standard-config/eslint)
|
|
2
|
-
[](https://github.com/standard-config/eslint/actions/workflows/test.yaml)
|
|
3
|
-
[](https://codecov.io/github/standard-config/eslint)
|
|
1
|
+
[](https://www.npmjs.com/package/@standard-config/eslint) [](https://github.com/standard-config/eslint/actions/workflows/test.yaml) [](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 {
|
|
49
|
-
import { defineConfig } from '@standard-config/oxlint';
|
|
46
|
+
import { defineOxlintConfig } from '@standard-config/eslint/utilities';
|
|
50
47
|
|
|
51
|
-
|
|
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
|
-
|
|
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/
|
|
5
|
-
type
|
|
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
|
-
|
|
20
|
-
|
|
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 { StandardConfigOptions as i, LinterConfigRules as n, StandardConfigArray as r, LinterConfigEntry as t };
|
|
22
|
+
//# sourceMappingURL=eslint-Bm8LJN21.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-Bm8LJN21.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 {
|
|
1
|
+
import { r as StandardConfigArray, t as LinterConfigEntry } from "./eslint-Bm8LJN21.mjs";
|
|
2
2
|
import { Config } from "eslint/config";
|
|
3
3
|
|
|
4
|
-
//#region src/config-base/
|
|
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/
|
|
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/
|
|
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.
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config-base/
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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/
|
|
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/
|
|
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$
|
|
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
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
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
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["rulesCore","rulesPerfectionist","rulesStylistic","config","rulesPerfectionist","config","rulesPerfectionist","rulesReact","
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
348
|
-
const rules
|
|
349
|
-
"react-
|
|
350
|
-
"react-
|
|
351
|
-
"react-
|
|
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/
|
|
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
|
-
|
|
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
|
-
//#
|
|
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"}
|
package/dist/utilities.d.mts
CHANGED
|
@@ -1,50 +1,45 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as StandardConfigOptions, n as LinterConfigRules } from "./eslint-Bm8LJN21.mjs";
|
|
2
2
|
import { Linter } from "eslint";
|
|
3
3
|
import { ExternalPluginEntry, OxlintConfig, OxlintOverride } from "oxlint";
|
|
4
4
|
|
|
5
|
-
//#region src/
|
|
5
|
+
//#region src/config-base/oxlint.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Standard Config’s ESLint config translated for Oxlint.
|
|
8
|
+
*
|
|
9
|
+
* Primary config entry. Does not include React-related rules.
|
|
10
|
+
*/
|
|
11
|
+
declare const config: OxlintConfig;
|
|
12
|
+
//#endregion
|
|
13
|
+
//#region src/types/oxlint.d.ts
|
|
6
14
|
type OxlintOverrideEntry = Pick<OxlintOverride, 'rules'>;
|
|
7
|
-
type
|
|
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
|
-
};
|
|
15
|
+
type OxlintPluginEntry = Exclude<ExternalPluginEntry, string>;
|
|
16
|
+
type StandardConfig = OxlintConfig & StandardConfigOptions;
|
|
33
17
|
//#endregion
|
|
34
|
-
//#region src/
|
|
18
|
+
//#region src/config-config-files/oxlint.d.ts
|
|
35
19
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
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
|
|
40
|
-
react,
|
|
41
|
-
stylistic
|
|
42
|
-
}?: OxlintConfigEntriesOptions): OxlintConfigEntries;
|
|
25
|
+
declare const config$2: OxlintOverrideEntry;
|
|
43
26
|
//#endregion
|
|
44
|
-
//#region src/
|
|
45
|
-
|
|
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: StandardConfig[]): 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 {
|
|
62
|
+
export { defineOxlintConfig, config as oxlintConfigBase, config$1 as oxlintConfigBaseReact, config$2 as oxlintConfigConfigFiles, transformPlugin, transformRules };
|
|
68
63
|
//# sourceMappingURL=utilities.d.mts.map
|
package/dist/utilities.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.mts","names":["OxlintConfig","OxlintOverride","
|
|
1
|
+
{"version":3,"file":"utilities.d.mts","names":["ExternalPluginEntry","OxlintConfig","OxlintOverride","StandardConfigOptions","OxlintOverrideEntry","Pick","OxlintPluginEntry","Exclude","StandardConfig"],"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":";;;;;;;;;AAA2C;cAarC,MAAA,EAAQ,YAAA;;;KCVFI,mBAAAA,GAAsBC,IAAAA,CAAKH,cAAAA;AAAAA,KAE3BI,iBAAAA,GAAoBC,OAAAA,CAAQP,mBAAAA;AAAAA,KAE5BQ,cAAAA,GAAiBP,YAAAA,GAAeE,qBAAAA;;;;;;;ADPD;;cESrC,QAAA,EAAQ,mBAAA;;;;;;;AFT6B;cGarC,QAAA,EAAQ,YAAA;;;;;;AHb6B;iBIgBnB,kBAAA,CAAA,GACpB,OAAA,EAAS,cAAA,KACV,YAAA;;;;;;;AJlBwC;iBKQnB,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"}
|
package/dist/utilities.mjs
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
-
import { a as
|
|
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
|
-
|
|
3
|
+
//#region src/config-config-files/oxlint.ts
|
|
4
|
+
/**
|
|
5
|
+
* Standard Config’s ESLint config translated for Oxlint.
|
|
6
|
+
*
|
|
7
|
+
* Optional config entry containing rules that target config files. Intended for
|
|
8
|
+
* explicit overrides.
|
|
9
|
+
*/
|
|
10
|
+
const config$2 = { rules: { ...rules } };
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/utilities/transform-plugin/index.ts
|
|
5
13
|
/**
|
|
6
14
|
* Resolve an external plugin specifier.
|
|
7
15
|
*
|
|
@@ -16,74 +24,102 @@ function transformPlugin(name, specifier) {
|
|
|
16
24
|
specifier
|
|
17
25
|
};
|
|
18
26
|
}
|
|
19
|
-
|
|
20
27
|
//#endregion
|
|
21
|
-
//#region src/
|
|
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";
|
|
28
|
+
//#region src/utilities/transform-rules/index.ts
|
|
29
29
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
30
|
+
* Modify a set of ESLint rules.
|
|
31
|
+
*
|
|
32
|
+
* @deprecated Not covered by semver.
|
|
32
33
|
*/
|
|
33
|
-
function
|
|
34
|
-
|
|
35
|
-
const
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
};
|
|
47
|
-
configConfigFiles.rules = { ...transformRules(rules$3, { prefix: PREFIX_PERFECTIONIST }) };
|
|
48
|
-
configBase.overrides = [{
|
|
49
|
-
files: ["**/*.config.{ts,cts,mts}"],
|
|
50
|
-
...configConfigFiles
|
|
51
|
-
}];
|
|
34
|
+
function transformRules(rules, options) {
|
|
35
|
+
if (!rules) return {};
|
|
36
|
+
const { omit, prefix, severity } = options;
|
|
37
|
+
const omittedRules = new Set(omit);
|
|
38
|
+
const transformedRules = {};
|
|
39
|
+
for (const [ruleName, ruleConfig] of Object.entries(rules)) {
|
|
40
|
+
if (omittedRules.has(ruleName)) continue;
|
|
41
|
+
if (!Array.isArray(ruleConfig)) {
|
|
42
|
+
transformedRules[ruleName] = severity ?? ruleConfig ?? "off";
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const [ruleSeverity, ...ruleOptions] = ruleConfig;
|
|
46
|
+
transformedRules[ruleName] = [severity ?? ruleSeverity, ...ruleOptions];
|
|
52
47
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
}];
|
|
48
|
+
return typeof prefix === "string" ? prefixRules(transformedRules, prefix) : transformedRules;
|
|
49
|
+
}
|
|
50
|
+
function prefixRules(rules, prefix) {
|
|
51
|
+
const prefixedRules = {};
|
|
52
|
+
for (const [ruleName, ruleConfig] of Object.entries(rules)) {
|
|
53
|
+
const name = ruleName.replace(/^.*?\//, "");
|
|
54
|
+
prefixedRules[`${prefix}/${name}`] = ruleConfig;
|
|
79
55
|
}
|
|
80
|
-
return
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
56
|
+
return prefixedRules;
|
|
57
|
+
}
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/config-base/oxlint.ts
|
|
60
|
+
/**
|
|
61
|
+
* Standard Config’s ESLint config translated for Oxlint.
|
|
62
|
+
*
|
|
63
|
+
* Primary config entry. Does not include React-related rules.
|
|
64
|
+
*/
|
|
65
|
+
const config = {
|
|
66
|
+
jsPlugins: [transformPlugin("stylistic", "@stylistic/eslint-plugin"), transformPlugin("perfectionist", "eslint-plugin-perfectionist")],
|
|
67
|
+
settings: { react: { version: "19.2.4" } },
|
|
68
|
+
rules: {
|
|
69
|
+
...transformRules(rules$1, { prefix: "eslint" }),
|
|
70
|
+
...transformRules(rules$2, { omit: ["perfectionist/sort-classes"] }),
|
|
71
|
+
...transformRules(rules$3, { prefix: "stylistic" })
|
|
72
|
+
},
|
|
73
|
+
overrides: [{
|
|
74
|
+
files: ["**/*.config.{ts,cts,mts}"],
|
|
75
|
+
...config$2
|
|
76
|
+
}]
|
|
77
|
+
};
|
|
78
|
+
//#endregion
|
|
79
|
+
//#region src/clone/index.ts
|
|
80
|
+
function clone(value) {
|
|
81
|
+
try {
|
|
82
|
+
value = structuredClone(value);
|
|
83
|
+
} catch {}
|
|
84
|
+
return value;
|
|
85
85
|
}
|
|
86
|
-
|
|
87
86
|
//#endregion
|
|
88
|
-
|
|
87
|
+
//#region src/config-react/oxlint.ts
|
|
88
|
+
/**
|
|
89
|
+
* Standard Config’s ESLint config translated for Oxlint.
|
|
90
|
+
*
|
|
91
|
+
* Primary config entry. Includes React-related rules.
|
|
92
|
+
*/
|
|
93
|
+
const config$1 = {
|
|
94
|
+
...clone(config),
|
|
95
|
+
settings: { react: { version: "19.2.4" } }
|
|
96
|
+
};
|
|
97
|
+
config$1.jsPlugins.push(transformPlugin("react-x", "eslint-plugin-react-x"));
|
|
98
|
+
config$1.overrides.push({
|
|
99
|
+
files: ["**/*.tsx"],
|
|
100
|
+
rules: {
|
|
101
|
+
...rules$4,
|
|
102
|
+
...transformRules(rules$5, { omit: ["react-x/no-implicit-key", "react-x/no-leaked-conditional-rendering"] })
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region src/utilities/define-oxlint-config/index.ts
|
|
107
|
+
let oxlintConfig;
|
|
108
|
+
try {
|
|
109
|
+
oxlintConfig = await import("@standard-config/oxlint");
|
|
110
|
+
} catch {}
|
|
111
|
+
/**
|
|
112
|
+
* Wrapper around `defineConfig` from `@standard-config/oxlint` that combines
|
|
113
|
+
* Standard Config’s Oxlint and ESLint configs, with optional overrides.
|
|
114
|
+
*/
|
|
115
|
+
function defineOxlintConfig(...configs) {
|
|
116
|
+
const { defineConfig } = oxlintConfig ?? {};
|
|
117
|
+
if (typeof defineConfig !== "function") throw new Error("Standard Config error: `@standard-config/oxlint` is missing");
|
|
118
|
+
let includeReactConfig = false;
|
|
119
|
+
for (const { react } of configs) if (react !== void 0) includeReactConfig = react;
|
|
120
|
+
return defineConfig(includeReactConfig ? config$1 : config, ...configs);
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
export { defineOxlintConfig, config as oxlintConfigBase, config$1 as oxlintConfigBaseReact, config$2 as oxlintConfigConfigFiles, transformPlugin, transformRules };
|
|
124
|
+
|
|
89
125
|
//# sourceMappingURL=utilities.mjs.map
|
package/dist/utilities.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.mjs","names":["
|
|
1
|
+
{"version":3,"file":"utilities.mjs","names":["config","rulesPerfectionist","rulesCore","rulesPerfectionist","rulesStylistic","oxlintConfigConfigFiles","config","oxlintConfigBase","rulesPerfectionist","rulesReact","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 type { StandardConfig } from '../../types/oxlint.d.ts';\nimport oxlintConfigBase from '../../config-base/oxlint.ts';\nimport oxlintConfigBaseReact from '../../config-react/oxlint.ts';\n\n/* oxlint-disable-next-line typescript/consistent-type-imports */\nlet oxlintConfig: typeof import('@standard-config/oxlint') | undefined;\n\ntry {\n\toxlintConfig = await import('@standard-config/oxlint');\n} catch {}\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: StandardConfig[]\n): OxlintConfig {\n\tconst { defineConfig } = oxlintConfig ?? {};\n\n\tif (typeof defineConfig !== 'function') {\n\t\t/* oxlint-disable-next-line eslint-plugin-unicorn/prefer-type-error */\n\t\tthrow new Error(\n\t\t\t'Standard Config error: `@standard-config/oxlint` is missing'\n\t\t);\n\t}\n\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 defineConfig(\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;;;AChCF,IAAI;AAEJ,IAAI;AACH,gBAAe,MAAM,OAAO;QACrB;;;;;AAMR,SAAwB,mBACvB,GAAG,SACY;CACf,MAAM,EAAE,iBAAiB,gBAAgB,EAAE;AAE3C,KAAI,OAAO,iBAAiB,WAE3B,OAAM,IAAI,MACT,8DACA;CAGF,IAAI,qBAAqB;AAEzB,MAAK,MAAM,EAAE,WAAW,QACvB,KAAI,UAAU,KAAA,EACb,sBAAqB;AAIvB,QAAO,aACN,qBAAqBC,WAAwBC,QAC7C,GAAG,QACH"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@standard-config/eslint",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
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": ">=
|
|
42
|
+
"node": ">=22"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@eslint
|
|
46
|
-
"
|
|
47
|
-
"eslint-plugin-
|
|
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.
|
|
56
|
-
"eslint": ">=
|
|
57
|
-
"typescript": ">=
|
|
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
|
-
"@
|
|
66
|
-
"@standard-config/
|
|
67
|
-
"@standard-config/
|
|
68
|
-
"@
|
|
69
|
-
"@
|
|
70
|
-
"
|
|
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.
|
|
74
|
-
"oxlint-tsgolint": "^0.
|
|
75
|
+
"oxlint": "^1.56.0",
|
|
76
|
+
"oxlint-tsgolint": "^0.17.3",
|
|
75
77
|
"prettier": "^3.8.1",
|
|
76
|
-
"publint": "^0.3.
|
|
78
|
+
"publint": "^0.3.18",
|
|
77
79
|
"react": "^19.2.4",
|
|
78
|
-
"tsdown": "^0.
|
|
79
|
-
"typescript": "^
|
|
80
|
-
"
|
|
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
|
|
88
|
-
"lint:check": "oxlint --deny-warnings --
|
|
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"}
|