@vp-tw/eslint-config 0.0.9 → 0.0.11
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 +32 -1
- package/dist/configs/mdx.d.ts +22 -4
- package/dist/configs/mdx.js +72 -18
- package/dist/configs/prettier.d.ts +18 -1
- package/dist/configs/prettier.js +27 -4
- package/dist/configs/storybook.d.ts +24 -1
- package/dist/configs/storybook.js +68 -24
- package/dist/eslint-typegen.js +1 -1
- package/dist/esm/configs/mdx.d.ts +22 -4
- package/dist/esm/configs/mdx.mjs +82 -18
- package/dist/esm/configs/prettier.d.ts +18 -1
- package/dist/esm/configs/prettier.mjs +27 -3
- package/dist/esm/configs/storybook.d.ts +24 -1
- package/dist/esm/configs/storybook.mjs +72 -14
- package/dist/esm/eslint-typegen.mjs +1 -1
- package/dist/esm/extends/_utils.d.ts +2 -0
- package/dist/esm/extends/_utils.mjs +2 -0
- package/dist/esm/extends/imports.d.ts +25 -0
- package/dist/esm/extends/imports.mjs +87 -0
- package/dist/esm/extends/javascript.d.ts +21 -0
- package/dist/esm/extends/javascript.mjs +51 -0
- package/dist/esm/extends/jsonc.d.ts +30 -0
- package/dist/esm/extends/jsonc.mjs +149 -0
- package/dist/esm/extends/react.d.ts +21 -0
- package/dist/esm/extends/react.mjs +58 -0
- package/dist/esm/extends/typescript.d.ts +21 -0
- package/dist/esm/extends/typescript.mjs +52 -0
- package/dist/esm/extends/yaml.d.ts +25 -0
- package/dist/esm/extends/yaml.mjs +71 -0
- package/dist/esm/globs.d.ts +6 -0
- package/dist/esm/globs.mjs +12 -0
- package/dist/esm/types.d.ts +35 -1
- package/dist/esm/utils/extendsConfig.d.ts +4 -0
- package/dist/esm/utils/extendsConfig.mjs +56 -0
- package/dist/esm/vdustr.d.ts +21 -4
- package/dist/esm/vdustr.mjs +37 -141
- package/dist/extends/_utils.d.ts +2 -0
- package/dist/extends/_utils.js +7 -0
- package/dist/extends/imports.d.ts +25 -0
- package/dist/extends/imports.js +71 -0
- package/dist/extends/javascript.d.ts +21 -0
- package/dist/extends/javascript.js +53 -0
- package/dist/extends/jsonc.d.ts +30 -0
- package/dist/extends/jsonc.js +135 -0
- package/dist/extends/react.d.ts +21 -0
- package/dist/extends/react.js +60 -0
- package/dist/extends/typescript.d.ts +21 -0
- package/dist/extends/typescript.js +56 -0
- package/dist/extends/yaml.d.ts +25 -0
- package/dist/extends/yaml.js +66 -0
- package/dist/globs.d.ts +6 -0
- package/dist/globs.js +11 -0
- package/dist/types.d.ts +35 -1
- package/dist/utils/extendsConfig.d.ts +4 -0
- package/dist/utils/extendsConfig.js +53 -0
- package/dist/vdustr.d.ts +21 -4
- package/dist/vdustr.js +30 -132
- package/package.json +6 -3
|
@@ -1,21 +1,79 @@
|
|
|
1
1
|
import { ensurePackages, interopDefault } from "@antfu/eslint-config";
|
|
2
|
-
import {
|
|
3
|
-
const
|
|
2
|
+
import { pick } from "es-toolkit";
|
|
3
|
+
const configNamesMapSource = {
|
|
4
|
+
setup: "vdustr/stroybook/setup",
|
|
5
|
+
storiesRules: "vdustr/storybook/stories-rules",
|
|
6
|
+
mainRules: "vdustr/storybook/main-rules"
|
|
7
|
+
};
|
|
8
|
+
const storybookInternal = async (options) => {
|
|
4
9
|
await ensurePackages(["eslint-plugin-storybook"]);
|
|
5
10
|
const storybookPlugin = await interopDefault(
|
|
6
11
|
import("eslint-plugin-storybook")
|
|
7
12
|
);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
const inheritingConfigs = storybookPlugin.configs["flat/csf-strict"];
|
|
14
|
+
const originalSetupConfig = inheritingConfigs[0];
|
|
15
|
+
const originalStoryRulesConfig = inheritingConfigs[1];
|
|
16
|
+
const originalMainRulesConfig = inheritingConfigs[2];
|
|
17
|
+
const originalCsfStrictConfig = inheritingConfigs[3];
|
|
18
|
+
if (!originalSetupConfig) throw new Error("Missing setup config");
|
|
19
|
+
if (!originalStoryRulesConfig) throw new Error("Missing story rules config");
|
|
20
|
+
if (!originalMainRulesConfig) throw new Error("Missing main rules config");
|
|
21
|
+
if (!originalCsfStrictConfig) throw new Error("Missing csf strict config");
|
|
22
|
+
const setupConfig = {
|
|
23
|
+
...pick(originalSetupConfig, ["plugins"]),
|
|
24
|
+
name: configNamesMapSource.setup
|
|
25
|
+
};
|
|
26
|
+
const storyRulesConfig = {
|
|
27
|
+
/**
|
|
28
|
+
* Inherited.
|
|
29
|
+
*/
|
|
30
|
+
...originalStoryRulesConfig,
|
|
31
|
+
...originalCsfStrictConfig,
|
|
32
|
+
/**
|
|
33
|
+
* Default.
|
|
34
|
+
*/
|
|
35
|
+
name: configNamesMapSource.storiesRules,
|
|
36
|
+
/**
|
|
37
|
+
* Overridable.
|
|
38
|
+
*/
|
|
39
|
+
...options?.storiesConfig,
|
|
40
|
+
rules: {
|
|
41
|
+
/**
|
|
42
|
+
* Inherited.
|
|
43
|
+
*/
|
|
44
|
+
...originalStoryRulesConfig.rules,
|
|
45
|
+
...originalCsfStrictConfig.rules,
|
|
46
|
+
/**
|
|
47
|
+
* Default.
|
|
48
|
+
*/
|
|
49
|
+
"import/no-default-export": "off",
|
|
50
|
+
/**
|
|
51
|
+
* Overridable.
|
|
52
|
+
*/
|
|
53
|
+
...options?.storiesConfig?.rules
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const mainRulesConfig = {
|
|
57
|
+
/**
|
|
58
|
+
* Inherited.
|
|
59
|
+
*/
|
|
60
|
+
...originalMainRulesConfig,
|
|
61
|
+
/**
|
|
62
|
+
* Default.
|
|
63
|
+
*/
|
|
64
|
+
name: configNamesMapSource.mainRules,
|
|
65
|
+
/**
|
|
66
|
+
* Overridable.
|
|
67
|
+
*/
|
|
68
|
+
...options?.mainConfig
|
|
69
|
+
};
|
|
70
|
+
return [
|
|
71
|
+
setupConfig,
|
|
72
|
+
storyRulesConfig,
|
|
73
|
+
mainRulesConfig
|
|
74
|
+
];
|
|
20
75
|
};
|
|
76
|
+
const storybook = Object.assign(storybookInternal, {
|
|
77
|
+
configNamesMapSource
|
|
78
|
+
});
|
|
21
79
|
export { storybook };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//
|
|
1
|
+
// Placeholder for `eslint-typegen.d.ts`.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConfigNames, TypedFlatConfigItem } from "@antfu/eslint-config";
|
|
2
|
+
import type { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
3
|
+
import type { ConfigOverrides, ResolveConfigNamesMap } from "../types";
|
|
4
|
+
declare const configNamesMapSource: {
|
|
5
|
+
readonly imports: "vdustr/imports/rules";
|
|
6
|
+
readonly noDefaultExport: "vdustr/no-default-export/rules";
|
|
7
|
+
};
|
|
8
|
+
declare module "../types" {
|
|
9
|
+
interface ConfigNamesMap extends ResolveConfigNamesMap<imports.ConfigNamesMapSource> {
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
declare namespace imports {
|
|
13
|
+
type ConfigNamesMapSource = typeof configNamesMapSource;
|
|
14
|
+
interface Options {
|
|
15
|
+
imports?: ConfigOverrides;
|
|
16
|
+
noDefaultExport: ConfigOverrides;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
declare const imports: ((composer: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>, options?: imports.Options) => void) & {
|
|
20
|
+
configNamesMapSource: {
|
|
21
|
+
readonly imports: "vdustr/imports/rules";
|
|
22
|
+
readonly noDefaultExport: "vdustr/no-default-export/rules";
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export { imports };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import {
|
|
2
|
+
GLOB_ASTRO_TS,
|
|
3
|
+
GLOB_JS,
|
|
4
|
+
GLOB_JSX,
|
|
5
|
+
GLOB_MARKDOWN_CODE,
|
|
6
|
+
GLOB_TS,
|
|
7
|
+
GLOB_TSX
|
|
8
|
+
} from "@antfu/eslint-config";
|
|
9
|
+
import { omit } from "es-toolkit";
|
|
10
|
+
import { GLOB_CONFIG_JS } from "../globs.mjs";
|
|
11
|
+
import { extendsConfig } from "../utils/extendsConfig.mjs";
|
|
12
|
+
import { ignoreKeys } from "./_utils.mjs";
|
|
13
|
+
const configNamesMapSource = {
|
|
14
|
+
imports: "vdustr/imports/rules",
|
|
15
|
+
noDefaultExport: "vdustr/no-default-export/rules"
|
|
16
|
+
};
|
|
17
|
+
const importsInternal = (composer, options) => {
|
|
18
|
+
extendsConfig(composer, "antfu/imports/rules", (config) => [
|
|
19
|
+
config,
|
|
20
|
+
{
|
|
21
|
+
/**
|
|
22
|
+
* Inherited.
|
|
23
|
+
*/
|
|
24
|
+
...omit(config, ignoreKeys),
|
|
25
|
+
/**
|
|
26
|
+
* Default.
|
|
27
|
+
*/
|
|
28
|
+
name: configNamesMapSource.imports,
|
|
29
|
+
/**
|
|
30
|
+
* Overridable.
|
|
31
|
+
*/
|
|
32
|
+
...options?.imports,
|
|
33
|
+
rules: {
|
|
34
|
+
/**
|
|
35
|
+
* Default.
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Forbid `import {} from "module"`.
|
|
39
|
+
*/
|
|
40
|
+
"import/no-empty-named-blocks": "error",
|
|
41
|
+
/**
|
|
42
|
+
* Wildcard imports can prevent tree shaking and cause name conflicts.
|
|
43
|
+
* Consider using named imports instead.
|
|
44
|
+
*/
|
|
45
|
+
"import/no-namespace": "error",
|
|
46
|
+
/**
|
|
47
|
+
* Overridable.
|
|
48
|
+
*/
|
|
49
|
+
...options?.imports?.rules
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: configNamesMapSource.noDefaultExport,
|
|
54
|
+
/**
|
|
55
|
+
* Overridable.
|
|
56
|
+
*/
|
|
57
|
+
...options?.noDefaultExport,
|
|
58
|
+
rules: {
|
|
59
|
+
/**
|
|
60
|
+
* Enforcing named exports improves consistency, enhances auto-completion and refactoring, and avoids issues
|
|
61
|
+
* with default export renaming. Additionally, default exports might lead to different behavior when transformed
|
|
62
|
+
* to CJS.
|
|
63
|
+
*/
|
|
64
|
+
"import/no-default-export": "error",
|
|
65
|
+
...options?.noDefaultExport?.rules
|
|
66
|
+
},
|
|
67
|
+
files: [
|
|
68
|
+
GLOB_JS,
|
|
69
|
+
GLOB_JSX,
|
|
70
|
+
GLOB_TS,
|
|
71
|
+
GLOB_TSX,
|
|
72
|
+
...options?.noDefaultExport?.files || []
|
|
73
|
+
],
|
|
74
|
+
ignores: [
|
|
75
|
+
// Configuration files
|
|
76
|
+
GLOB_CONFIG_JS,
|
|
77
|
+
GLOB_MARKDOWN_CODE,
|
|
78
|
+
GLOB_ASTRO_TS,
|
|
79
|
+
...options?.noDefaultExport?.ignores || []
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
]);
|
|
83
|
+
};
|
|
84
|
+
const imports = Object.assign(importsInternal, {
|
|
85
|
+
configNamesMapSource
|
|
86
|
+
});
|
|
87
|
+
export { imports };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ConfigNames, TypedFlatConfigItem } from "@antfu/eslint-config";
|
|
2
|
+
import type { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
3
|
+
import type { ConfigOverrides, ResolveConfigNamesMap } from "../types";
|
|
4
|
+
declare const configNamesMapSource: {
|
|
5
|
+
readonly rules: "vdustr/javascript/rules";
|
|
6
|
+
};
|
|
7
|
+
declare module "../types" {
|
|
8
|
+
interface ConfigNamesMap extends ResolveConfigNamesMap<javascript.ConfigNamesMapSource> {
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
declare namespace javascript {
|
|
12
|
+
type ConfigNamesMapSource = typeof configNamesMapSource;
|
|
13
|
+
interface Options extends ConfigOverrides {
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
declare const javascript: ((composer: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>, options?: javascript.Options) => void) & {
|
|
17
|
+
configNamesMapSource: {
|
|
18
|
+
readonly rules: "vdustr/javascript/rules";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export { javascript };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { omit } from "es-toolkit";
|
|
2
|
+
import { extendsConfig } from "../utils/extendsConfig.mjs";
|
|
3
|
+
import { ignoreKeys } from "./_utils.mjs";
|
|
4
|
+
const configNamesMapSource = {
|
|
5
|
+
rules: "vdustr/javascript/rules"
|
|
6
|
+
};
|
|
7
|
+
const javascriptInternal = (composer, options) => {
|
|
8
|
+
extendsConfig(composer, "antfu/javascript/rules", (config) => [
|
|
9
|
+
config,
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* Inherited.
|
|
13
|
+
*/
|
|
14
|
+
...omit(config, ignoreKeys),
|
|
15
|
+
/**
|
|
16
|
+
* Default.
|
|
17
|
+
*/
|
|
18
|
+
name: configNamesMapSource.rules,
|
|
19
|
+
/**
|
|
20
|
+
* Overridable.
|
|
21
|
+
*/
|
|
22
|
+
...options,
|
|
23
|
+
rules: {
|
|
24
|
+
/**
|
|
25
|
+
* Default.
|
|
26
|
+
*/
|
|
27
|
+
/**
|
|
28
|
+
* Some callbacks are purposefully named to make the code self-documenting.
|
|
29
|
+
*/
|
|
30
|
+
"prefer-arrow-callback": "off",
|
|
31
|
+
/**
|
|
32
|
+
* This rule does not integrate well with JSDoc `@link` tags. It's advised
|
|
33
|
+
* to verify its behavior with TypeScript instead.
|
|
34
|
+
*/
|
|
35
|
+
"no-unused-vars": "off",
|
|
36
|
+
"unused-imports/no-unused-vars": "off",
|
|
37
|
+
"unused-imports/no-unused-imports-ts": "off",
|
|
38
|
+
"unused-imports/no-unused-vars-ts": "off",
|
|
39
|
+
"unused-imports/no-unused-imports": "off",
|
|
40
|
+
/**
|
|
41
|
+
* Overridable.
|
|
42
|
+
*/
|
|
43
|
+
...options?.rules
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
]);
|
|
47
|
+
};
|
|
48
|
+
const javascript = Object.assign(javascriptInternal, {
|
|
49
|
+
configNamesMapSource
|
|
50
|
+
});
|
|
51
|
+
export { javascript };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ConfigNames, TypedFlatConfigItem } from "@antfu/eslint-config";
|
|
2
|
+
import type { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
3
|
+
import type { ConfigOverrides, ResolveConfigNamesMap } from "../types";
|
|
4
|
+
declare const configNamesMapSource: {
|
|
5
|
+
readonly rules: "vdustr/jsonc/rules";
|
|
6
|
+
readonly sortArrayValues: "vdustr/jsonc/sortArrayValues";
|
|
7
|
+
readonly packageJsonSetup: "vdustr/package-json/setup";
|
|
8
|
+
readonly packageJsonRules: "vdustr/package-json/rules";
|
|
9
|
+
};
|
|
10
|
+
declare module "../types" {
|
|
11
|
+
interface ConfigNamesMap extends ResolveConfigNamesMap<jsonc.ConfigNamesMapSource> {
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
declare namespace jsonc {
|
|
15
|
+
type ConfigNamesMapSource = typeof configNamesMapSource;
|
|
16
|
+
interface Options {
|
|
17
|
+
jsonc?: ConfigOverrides;
|
|
18
|
+
packageJson?: ConfigOverrides;
|
|
19
|
+
sortArrayValues: ConfigOverrides;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
declare const jsonc: ((composer: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>, options?: jsonc.Options) => void) & {
|
|
23
|
+
configNamesMapSource: {
|
|
24
|
+
readonly rules: "vdustr/jsonc/rules";
|
|
25
|
+
readonly sortArrayValues: "vdustr/jsonc/sortArrayValues";
|
|
26
|
+
readonly packageJsonSetup: "vdustr/package-json/setup";
|
|
27
|
+
readonly packageJsonRules: "vdustr/package-json/rules";
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export { jsonc };
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { omit } from "es-toolkit";
|
|
2
|
+
import packageJson from "eslint-plugin-package-json/configs/recommended";
|
|
3
|
+
import {
|
|
4
|
+
GLOB_CODE_WORKSPACE,
|
|
5
|
+
GLOB_CSPELL_JSON,
|
|
6
|
+
GLOB_PACKAGE_JSON
|
|
7
|
+
} from "../globs.mjs";
|
|
8
|
+
import { extendsConfig } from "../utils/extendsConfig.mjs";
|
|
9
|
+
import { ignoreKeys } from "./_utils.mjs";
|
|
10
|
+
const configNamesMapSource = {
|
|
11
|
+
rules: "vdustr/jsonc/rules",
|
|
12
|
+
sortArrayValues: "vdustr/jsonc/sortArrayValues",
|
|
13
|
+
packageJsonSetup: "vdustr/package-json/setup",
|
|
14
|
+
packageJsonRules: "vdustr/package-json/rules"
|
|
15
|
+
};
|
|
16
|
+
const jsoncInternal = (composer, options) => {
|
|
17
|
+
extendsConfig(
|
|
18
|
+
composer,
|
|
19
|
+
"antfu/jsonc/rules",
|
|
20
|
+
(config) => {
|
|
21
|
+
config = {
|
|
22
|
+
...config,
|
|
23
|
+
files: [
|
|
24
|
+
/**
|
|
25
|
+
* Inherited.
|
|
26
|
+
*/
|
|
27
|
+
...config.files ?? [],
|
|
28
|
+
/**
|
|
29
|
+
* Default.
|
|
30
|
+
*/
|
|
31
|
+
GLOB_CODE_WORKSPACE,
|
|
32
|
+
/**
|
|
33
|
+
* Overridable.
|
|
34
|
+
*/
|
|
35
|
+
...options?.jsonc?.files ?? []
|
|
36
|
+
],
|
|
37
|
+
ignores: [
|
|
38
|
+
/**
|
|
39
|
+
* Inherited.
|
|
40
|
+
*/
|
|
41
|
+
...config.ignores ?? [],
|
|
42
|
+
/**
|
|
43
|
+
* Default.
|
|
44
|
+
*/
|
|
45
|
+
GLOB_PACKAGE_JSON,
|
|
46
|
+
/**
|
|
47
|
+
* Overridable.
|
|
48
|
+
*/
|
|
49
|
+
...options?.jsonc?.ignores ?? []
|
|
50
|
+
]
|
|
51
|
+
};
|
|
52
|
+
return [
|
|
53
|
+
config,
|
|
54
|
+
{
|
|
55
|
+
/**
|
|
56
|
+
* Inherited.
|
|
57
|
+
*/
|
|
58
|
+
...omit(config, ignoreKeys),
|
|
59
|
+
/**
|
|
60
|
+
* Default.
|
|
61
|
+
*/
|
|
62
|
+
name: configNamesMapSource.rules,
|
|
63
|
+
files: [...config.files ?? []],
|
|
64
|
+
ignores: [...config.ignores ?? []],
|
|
65
|
+
/**
|
|
66
|
+
* Overridable.
|
|
67
|
+
*/
|
|
68
|
+
...omit(options?.jsonc ?? {}, ["files", "ignores"]),
|
|
69
|
+
rules: {
|
|
70
|
+
/**
|
|
71
|
+
* Default.
|
|
72
|
+
*/
|
|
73
|
+
"jsonc/sort-keys": "error",
|
|
74
|
+
/**
|
|
75
|
+
* Overridable.
|
|
76
|
+
*/
|
|
77
|
+
...options?.jsonc?.rules
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
plugins: packageJson.plugins,
|
|
82
|
+
name: configNamesMapSource.packageJsonSetup
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
/**
|
|
86
|
+
* Inherited.
|
|
87
|
+
*/
|
|
88
|
+
...omit(packageJson, ["plugins"]),
|
|
89
|
+
/**
|
|
90
|
+
* Default.
|
|
91
|
+
*/
|
|
92
|
+
name: configNamesMapSource.packageJsonRules,
|
|
93
|
+
/**
|
|
94
|
+
* Overridable.
|
|
95
|
+
*/
|
|
96
|
+
...options?.packageJson,
|
|
97
|
+
plugins: {
|
|
98
|
+
/**
|
|
99
|
+
* Inherited.
|
|
100
|
+
*/
|
|
101
|
+
...packageJson.plugins,
|
|
102
|
+
/**
|
|
103
|
+
* Overridable.
|
|
104
|
+
*/
|
|
105
|
+
...options?.packageJson?.plugins
|
|
106
|
+
},
|
|
107
|
+
rules: {
|
|
108
|
+
/**
|
|
109
|
+
* Inherited.
|
|
110
|
+
*/
|
|
111
|
+
...packageJson.rules,
|
|
112
|
+
/**
|
|
113
|
+
* Overridable.
|
|
114
|
+
*/
|
|
115
|
+
...options?.packageJson?.rules
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
/**
|
|
120
|
+
* Default.
|
|
121
|
+
*/
|
|
122
|
+
name: configNamesMapSource.sortArrayValues,
|
|
123
|
+
/**
|
|
124
|
+
* Overridable.
|
|
125
|
+
*/
|
|
126
|
+
...options?.sortArrayValues,
|
|
127
|
+
files: [GLOB_CSPELL_JSON, ...options?.sortArrayValues?.files ?? []],
|
|
128
|
+
rules: {
|
|
129
|
+
"jsonc/sort-array-values": [
|
|
130
|
+
"error",
|
|
131
|
+
{
|
|
132
|
+
pathPattern: ".*",
|
|
133
|
+
order: {
|
|
134
|
+
type: "asc"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
...options?.sortArrayValues?.rules
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
];
|
|
142
|
+
},
|
|
143
|
+
["antfu/sort/package-json", "antfu/sort/tsconfig-json"]
|
|
144
|
+
);
|
|
145
|
+
};
|
|
146
|
+
const jsonc = Object.assign(jsoncInternal, {
|
|
147
|
+
configNamesMapSource
|
|
148
|
+
});
|
|
149
|
+
export { jsonc };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ConfigNames, TypedFlatConfigItem } from "@antfu/eslint-config";
|
|
2
|
+
import type { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
3
|
+
import type { ConfigOverrides, ResolveConfigNamesMap } from "../types";
|
|
4
|
+
declare const configNamesMapSource: {
|
|
5
|
+
readonly rules: "vdustr/react/rules";
|
|
6
|
+
};
|
|
7
|
+
declare module "../types" {
|
|
8
|
+
interface ConfigNamesMap extends ResolveConfigNamesMap<react.ConfigNamesMapSource> {
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
declare namespace react {
|
|
12
|
+
type ConfigNamesMapSource = typeof configNamesMapSource;
|
|
13
|
+
interface Options extends ConfigOverrides {
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
declare const react: ((composer: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>, options?: react.Options) => void) & {
|
|
17
|
+
configNamesMapSource: {
|
|
18
|
+
readonly rules: "vdustr/react/rules";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export { react };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { omit } from "es-toolkit";
|
|
2
|
+
import { reactCompiler } from "../lib/eslint-plugin-react-compiler.mjs";
|
|
3
|
+
import { extendsConfig } from "../utils/extendsConfig.mjs";
|
|
4
|
+
import { ignoreKeys } from "./_utils.mjs";
|
|
5
|
+
const configNamesMapSource = {
|
|
6
|
+
rules: "vdustr/react/rules"
|
|
7
|
+
};
|
|
8
|
+
const reactInternal = (composer, options) => {
|
|
9
|
+
extendsConfig(composer, "antfu/react/rules", async (config) => [
|
|
10
|
+
config,
|
|
11
|
+
{
|
|
12
|
+
/**
|
|
13
|
+
* Inherited.
|
|
14
|
+
*/
|
|
15
|
+
...omit(config, ignoreKeys),
|
|
16
|
+
/**
|
|
17
|
+
* Default.
|
|
18
|
+
*/
|
|
19
|
+
name: configNamesMapSource.rules,
|
|
20
|
+
plugins: {
|
|
21
|
+
/**
|
|
22
|
+
* Inherited.
|
|
23
|
+
*/
|
|
24
|
+
...config.plugins,
|
|
25
|
+
/**
|
|
26
|
+
* Default.
|
|
27
|
+
*/
|
|
28
|
+
"react-compiler": await reactCompiler(),
|
|
29
|
+
/**
|
|
30
|
+
* Overridable.
|
|
31
|
+
*/
|
|
32
|
+
...options?.plugins
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* Overridable.
|
|
36
|
+
*/
|
|
37
|
+
...options,
|
|
38
|
+
rules: {
|
|
39
|
+
/**
|
|
40
|
+
* Default.
|
|
41
|
+
*/
|
|
42
|
+
"react-compiler/react-compiler": "error",
|
|
43
|
+
/**
|
|
44
|
+
* Not all destructuring assignments are more readable than their alternatives.
|
|
45
|
+
*/
|
|
46
|
+
"react/prefer-destructuring-assignment": "off",
|
|
47
|
+
/**
|
|
48
|
+
* Overridable.
|
|
49
|
+
*/
|
|
50
|
+
...options?.rules
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
]);
|
|
54
|
+
};
|
|
55
|
+
const react = Object.assign(reactInternal, {
|
|
56
|
+
configNamesMapSource
|
|
57
|
+
});
|
|
58
|
+
export { react };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ConfigNames, TypedFlatConfigItem } from "@antfu/eslint-config";
|
|
2
|
+
import type { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
3
|
+
import type { ConfigOverrides, ResolveConfigNamesMap } from "../types";
|
|
4
|
+
declare const configNamesMapSource: {
|
|
5
|
+
readonly rules: "vdustr/typescript/rules";
|
|
6
|
+
};
|
|
7
|
+
declare module "../types" {
|
|
8
|
+
interface ConfigNamesMap extends ResolveConfigNamesMap<typescript.ConfigNamesMapSource> {
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
declare namespace typescript {
|
|
12
|
+
type ConfigNamesMapSource = typeof configNamesMapSource;
|
|
13
|
+
interface Options extends ConfigOverrides {
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
declare const typescript: ((composer: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>, options?: typescript.Options) => void) & {
|
|
17
|
+
configNamesMapSource: {
|
|
18
|
+
readonly rules: "vdustr/typescript/rules";
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export { typescript };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { omit } from "es-toolkit";
|
|
2
|
+
import { extendsConfig } from "../utils/extendsConfig.mjs";
|
|
3
|
+
import { ignoreKeys } from "./_utils.mjs";
|
|
4
|
+
const configNamesMapSource = {
|
|
5
|
+
rules: "vdustr/typescript/rules"
|
|
6
|
+
};
|
|
7
|
+
const typescriptInternal = (composer, options) => {
|
|
8
|
+
extendsConfig(composer, "antfu/typescript/rules", (config) => [
|
|
9
|
+
config,
|
|
10
|
+
{
|
|
11
|
+
/**
|
|
12
|
+
* Inherited.
|
|
13
|
+
*/
|
|
14
|
+
...omit(config, ignoreKeys),
|
|
15
|
+
/**
|
|
16
|
+
* Default.
|
|
17
|
+
*/
|
|
18
|
+
name: configNamesMapSource.rules,
|
|
19
|
+
/**
|
|
20
|
+
* Overridable.
|
|
21
|
+
*/
|
|
22
|
+
...options,
|
|
23
|
+
rules: {
|
|
24
|
+
/**
|
|
25
|
+
* Default.
|
|
26
|
+
*/
|
|
27
|
+
"ts/array-type": ["error", { default: "generic" }],
|
|
28
|
+
/**
|
|
29
|
+
* Namespaces are useful for centralizing the management of types. Just avoid
|
|
30
|
+
* overusing them with runtime code.
|
|
31
|
+
*
|
|
32
|
+
* - References:
|
|
33
|
+
* - <https://x.com/mattpocockuk/status/1805606072167940167>
|
|
34
|
+
*/
|
|
35
|
+
"ts/no-namespace": "off",
|
|
36
|
+
"ts/no-redeclare": "off",
|
|
37
|
+
/**
|
|
38
|
+
* Check for unused variables in TypeScript.
|
|
39
|
+
*/
|
|
40
|
+
"ts/no-unused-vars": "off",
|
|
41
|
+
/**
|
|
42
|
+
* Overridable.
|
|
43
|
+
*/
|
|
44
|
+
...options?.rules
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]);
|
|
48
|
+
};
|
|
49
|
+
const typescript = Object.assign(typescriptInternal, {
|
|
50
|
+
configNamesMapSource
|
|
51
|
+
});
|
|
52
|
+
export { typescript };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConfigNames, TypedFlatConfigItem } from "@antfu/eslint-config";
|
|
2
|
+
import type { FlatConfigComposer } from "eslint-flat-config-utils";
|
|
3
|
+
import type { ConfigOverrides, ResolveConfigNamesMap } from "../types";
|
|
4
|
+
declare const configNamesMapSource: {
|
|
5
|
+
readonly rules: "vdustr/yaml/rules";
|
|
6
|
+
readonly sortKeys: "vdustr/yaml/sortKeys";
|
|
7
|
+
};
|
|
8
|
+
declare module "../types" {
|
|
9
|
+
interface ConfigNamesMap extends ResolveConfigNamesMap<yaml.ConfigNamesMapSource> {
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
declare namespace yaml {
|
|
13
|
+
type ConfigNamesMapSource = typeof configNamesMapSource;
|
|
14
|
+
interface Options {
|
|
15
|
+
yaml?: ConfigOverrides;
|
|
16
|
+
sortKeys?: ConfigOverrides;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
declare const yaml: ((composer: FlatConfigComposer<TypedFlatConfigItem, ConfigNames>, options?: yaml.Options) => void) & {
|
|
20
|
+
configNamesMapSource: {
|
|
21
|
+
readonly rules: "vdustr/yaml/rules";
|
|
22
|
+
readonly sortKeys: "vdustr/yaml/sortKeys";
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export { yaml };
|