@jsse/eslint-config 0.2.20 → 0.2.22
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/dist/cli.cjs +1 -1
- package/dist/cli.js +1 -1
- package/dist/esm/cli.d.ts +1 -0
- package/dist/esm/cli.js +96 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/config-fns.d.ts +56 -0
- package/dist/esm/config-fns.js +76 -0
- package/dist/esm/config-fns.js.map +1 -0
- package/dist/esm/configs/antfu.d.ts +4 -0
- package/dist/esm/configs/antfu.js +31 -0
- package/dist/esm/configs/antfu.js.map +1 -0
- package/dist/esm/configs/comments.d.ts +2 -0
- package/dist/esm/configs/comments.js +17 -0
- package/dist/esm/configs/comments.js.map +1 -0
- package/dist/esm/configs/gql.d.ts +2 -0
- package/dist/esm/configs/gql.js +5 -0
- package/dist/esm/configs/gql.js.map +1 -0
- package/dist/esm/configs/ignores.d.ts +2 -0
- package/dist/esm/configs/ignores.js +10 -0
- package/dist/esm/configs/ignores.js.map +1 -0
- package/dist/esm/configs/imports.d.ts +2 -0
- package/dist/esm/configs/imports.js +30 -0
- package/dist/esm/configs/imports.js.map +1 -0
- package/dist/esm/configs/javascript.d.ts +6 -0
- package/dist/esm/configs/javascript.js +263 -0
- package/dist/esm/configs/javascript.js.map +1 -0
- package/dist/esm/configs/jsdoc.d.ts +2 -0
- package/dist/esm/configs/jsdoc.js +32 -0
- package/dist/esm/configs/jsdoc.js.map +1 -0
- package/dist/esm/configs/jsonc.d.ts +4 -0
- package/dist/esm/configs/jsonc.js +77 -0
- package/dist/esm/configs/jsonc.js.map +1 -0
- package/dist/esm/configs/markdown.d.ts +4 -0
- package/dist/esm/configs/markdown.js +123 -0
- package/dist/esm/configs/markdown.js.map +1 -0
- package/dist/esm/configs/n.d.ts +2 -0
- package/dist/esm/configs/n.js +22 -0
- package/dist/esm/configs/n.js.map +1 -0
- package/dist/esm/configs/no-only-tests.d.ts +4 -0
- package/dist/esm/configs/no-only-tests.js +32 -0
- package/dist/esm/configs/no-only-tests.js.map +1 -0
- package/dist/esm/configs/perfectionist.d.ts +7 -0
- package/dist/esm/configs/perfectionist.js +61 -0
- package/dist/esm/configs/perfectionist.js.map +1 -0
- package/dist/esm/configs/prettier.d.ts +7 -0
- package/dist/esm/configs/prettier.js +127 -0
- package/dist/esm/configs/prettier.js.map +1 -0
- package/dist/esm/configs/react.d.ts +6 -0
- package/dist/esm/configs/react.js +302 -0
- package/dist/esm/configs/react.js.map +1 -0
- package/dist/esm/configs/sort-package-json.d.ts +7 -0
- package/dist/esm/configs/sort-package-json.js +90 -0
- package/dist/esm/configs/sort-package-json.js.map +1 -0
- package/dist/esm/configs/sort-tsconfig.d.ts +14 -0
- package/dist/esm/configs/sort-tsconfig.js +134 -0
- package/dist/esm/configs/sort-tsconfig.js.map +1 -0
- package/dist/esm/configs/stylistic.d.ts +2 -0
- package/dist/esm/configs/stylistic.js +38 -0
- package/dist/esm/configs/stylistic.js.map +1 -0
- package/dist/esm/configs/tailwind.d.ts +2 -0
- package/dist/esm/configs/tailwind.js +49 -0
- package/dist/esm/configs/tailwind.js.map +1 -0
- package/dist/esm/configs/toml.d.ts +2 -0
- package/dist/esm/configs/toml.js +51 -0
- package/dist/esm/configs/toml.js.map +1 -0
- package/dist/esm/configs/ts/parser.d.ts +7 -0
- package/dist/esm/configs/ts/parser.js +66 -0
- package/dist/esm/configs/ts/parser.js.map +1 -0
- package/dist/esm/configs/ts/requires-type-checking.d.ts +1 -0
- package/dist/esm/configs/ts/requires-type-checking.js +58 -0
- package/dist/esm/configs/ts/requires-type-checking.js.map +1 -0
- package/dist/esm/configs/ts/typescript-language-options.d.ts +2 -0
- package/dist/esm/configs/ts/typescript-language-options.js +23 -0
- package/dist/esm/configs/ts/typescript-language-options.js.map +1 -0
- package/dist/esm/configs/ts/typescript-rules.d.ts +6 -0
- package/dist/esm/configs/ts/typescript-rules.js +416 -0
- package/dist/esm/configs/ts/typescript-rules.js.map +1 -0
- package/dist/esm/configs/ts/typescript.d.ts +4 -0
- package/dist/esm/configs/ts/typescript.js +110 -0
- package/dist/esm/configs/ts/typescript.js.map +1 -0
- package/dist/esm/configs/tsdoc.d.ts +2 -0
- package/dist/esm/configs/tsdoc.js +17 -0
- package/dist/esm/configs/tsdoc.js.map +1 -0
- package/dist/esm/configs/unicorn.d.ts +2 -0
- package/dist/esm/configs/unicorn.js +116 -0
- package/dist/esm/configs/unicorn.js.map +1 -0
- package/dist/esm/configs/vitest.d.ts +4 -0
- package/dist/esm/configs/vitest.js +30 -0
- package/dist/esm/configs/vitest.js.map +1 -0
- package/dist/esm/configs/yml.d.ts +4 -0
- package/dist/esm/configs/yml.js +52 -0
- package/dist/esm/configs/yml.js.map +1 -0
- package/dist/esm/const.d.ts +5 -0
- package/dist/esm/const.js +12 -0
- package/dist/esm/const.js.map +1 -0
- package/dist/esm/define-config.d.ts +7 -0
- package/dist/esm/define-config.js +234 -0
- package/dist/esm/define-config.js.map +1 -0
- package/dist/esm/dev.d.ts +4 -0
- package/dist/esm/dev.js +26 -0
- package/dist/esm/dev.js.map +1 -0
- package/dist/esm/fixable.d.ts +1 -0
- package/dist/esm/fixable.js +390 -0
- package/dist/esm/fixable.js.map +1 -0
- package/dist/esm/globs.d.ts +25 -0
- package/dist/esm/globs.js +74 -0
- package/dist/esm/globs.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lager.d.ts +31 -0
- package/dist/esm/lager.js +87 -0
- package/dist/esm/lager.js.map +1 -0
- package/dist/esm/plugindex.d.ts +7 -0
- package/dist/esm/plugindex.js +61 -0
- package/dist/esm/plugindex.js.map +1 -0
- package/dist/esm/plugins-all.d.ts +23 -0
- package/dist/esm/plugins-all.js +27 -0
- package/dist/esm/plugins-all.js.map +1 -0
- package/dist/esm/plugins.d.ts +983 -0
- package/dist/esm/plugins.js +113 -0
- package/dist/esm/plugins.js.map +1 -0
- package/dist/esm/presets.d.ts +2 -0
- package/dist/esm/presets.js +13 -0
- package/dist/esm/presets.js.map +1 -0
- package/dist/esm/types.d.ts +255 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +51 -0
- package/dist/esm/utils.js +157 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/index.cjs +188 -143
- package/dist/index.d.cts +204 -206
- package/dist/index.d.ts +204 -206
- package/dist/index.js +193 -151
- package/package.json +25 -18
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { err, ok } from "neverthrow";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment,@typescript-eslint/explicit-function-return-type */
|
|
3
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
4
|
+
// @ts-nocheck
|
|
5
|
+
import { interopDefault } from "./utils.js";
|
|
6
|
+
// @ts-expect-error - bad types
|
|
7
|
+
export { default as pluginEslintComments } from "@eslint-community/eslint-plugin-eslint-comments";
|
|
8
|
+
export { default as pluginTs } from "@typescript-eslint/eslint-plugin";
|
|
9
|
+
export * as parserTs from "@typescript-eslint/parser";
|
|
10
|
+
export { default as pluginAntfu } from "eslint-plugin-antfu";
|
|
11
|
+
// @ts-expect-error - bad types mr jones
|
|
12
|
+
export * as pluginImport from "eslint-plugin-import-x";
|
|
13
|
+
export { default as pluginN } from "eslint-plugin-n";
|
|
14
|
+
export { default as pluginPerfectionist } from "eslint-plugin-perfectionist";
|
|
15
|
+
export { default as pluginUnicorn } from "eslint-plugin-unicorn";
|
|
16
|
+
export { default as pluginUnusedImports } from "eslint-plugin-unused-imports";
|
|
17
|
+
export async function importPluginReact() {
|
|
18
|
+
const pluginReact = await interopDefault(import("eslint-plugin-react"));
|
|
19
|
+
return {
|
|
20
|
+
pluginReact,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export async function importPluginReactHooks() {
|
|
24
|
+
const pluginReactHooks = await interopDefault(
|
|
25
|
+
// @ts-expect-error - bad types
|
|
26
|
+
import("eslint-plugin-react-hooks"));
|
|
27
|
+
return {
|
|
28
|
+
pluginReactHooks,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export async function importPluginReactRefresh() {
|
|
32
|
+
const pluginReactRefresh = await interopDefault(
|
|
33
|
+
// @ts-expect-error - bad types
|
|
34
|
+
import("eslint-plugin-react-refresh"));
|
|
35
|
+
return {
|
|
36
|
+
pluginReactRefresh,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export async function importReactPlugins() {
|
|
40
|
+
const [pluginReact, pluginReactHooks, pluginReactRefresh] = await Promise.all([
|
|
41
|
+
interopDefault(import("eslint-plugin-react")),
|
|
42
|
+
// @ts-expect-error - bad types
|
|
43
|
+
interopDefault(import("eslint-plugin-react-hooks")),
|
|
44
|
+
// @ts-expect-error - bad types
|
|
45
|
+
interopDefault(import("eslint-plugin-react-refresh")),
|
|
46
|
+
]);
|
|
47
|
+
return { pluginReact, pluginReactHooks, pluginReactRefresh };
|
|
48
|
+
}
|
|
49
|
+
export async function importParserJsonc() {
|
|
50
|
+
const parserJsonc = await interopDefault(import("jsonc-eslint-parser"));
|
|
51
|
+
return {
|
|
52
|
+
parserJsonc,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export async function importPluginJsonc() {
|
|
56
|
+
const pluginJsonc = await interopDefault(import("eslint-plugin-jsonc"));
|
|
57
|
+
return {
|
|
58
|
+
pluginJsonc,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export async function importJsoncLibs() {
|
|
62
|
+
const [{ parserJsonc }, { pluginJsonc }] = await Promise.all([
|
|
63
|
+
importParserJsonc(),
|
|
64
|
+
importPluginJsonc(),
|
|
65
|
+
]);
|
|
66
|
+
return { parserJsonc, pluginJsonc };
|
|
67
|
+
}
|
|
68
|
+
export async function importYmlLibs() {
|
|
69
|
+
const [pluginYaml, parserYaml] = await Promise.all([
|
|
70
|
+
interopDefault(import("eslint-plugin-yml")),
|
|
71
|
+
interopDefault(import("yaml-eslint-parser")),
|
|
72
|
+
]);
|
|
73
|
+
return { parserYaml, pluginYaml };
|
|
74
|
+
}
|
|
75
|
+
export async function importPluginMarkdown() {
|
|
76
|
+
const pluginMarkdown = await interopDefault(import("@eslint/markdown"));
|
|
77
|
+
return {
|
|
78
|
+
pluginMarkdown,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export async function importPluginJsdoc() {
|
|
82
|
+
const pluginJsdoc = await interopDefault(import("eslint-plugin-jsdoc"));
|
|
83
|
+
// get the import path
|
|
84
|
+
return {
|
|
85
|
+
pluginJsdoc,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export async function importPluginTsdoc() {
|
|
89
|
+
const pluginTsdoc = (await interopDefault(import("eslint-plugin-tsdoc")));
|
|
90
|
+
return {
|
|
91
|
+
pluginTsdoc,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export async function importPluginStylistic() {
|
|
95
|
+
const pluginStylistic = await interopDefault(import("@stylistic/eslint-plugin"));
|
|
96
|
+
return { pluginStylistic };
|
|
97
|
+
}
|
|
98
|
+
export async function importPluginTailwind() {
|
|
99
|
+
const pluginTailwind = await interopDefault(
|
|
100
|
+
// @ts-expect-error - bad types
|
|
101
|
+
import("eslint-plugin-tailwindcss"));
|
|
102
|
+
return { pluginTailwind };
|
|
103
|
+
}
|
|
104
|
+
export async function safeImportPluginTailwind() {
|
|
105
|
+
try {
|
|
106
|
+
const plugin = await importPluginTailwind();
|
|
107
|
+
return ok(plugin);
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
return err(new Error(`Failed to import \`eslint-plugin-tailwindcss\`. You might need to install it. ${e}`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsse } from "./define-config.js";
|
|
2
|
+
export const jsseReact = (options, ...configs) => {
|
|
3
|
+
return jsse({
|
|
4
|
+
react: true,
|
|
5
|
+
reactRefresh: true,
|
|
6
|
+
tailwind: true,
|
|
7
|
+
typescript: {
|
|
8
|
+
tsconfig: ["./tsconfig.json", "./tsconfig.eslint.json"],
|
|
9
|
+
},
|
|
10
|
+
...options,
|
|
11
|
+
}, ...configs);
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/presets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,CAAC,MAAM,SAAS,GAAiB,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE;IAC7D,OAAO,IAAI,CACT;QACE,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE;YACV,QAAQ,EAAE,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACxD;QACD,GAAG,OAAO;KACX,EACD,GAAG,OAAO,CACX,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import type { ParserOptions } from "@typescript-eslint/parser";
|
|
2
|
+
import type { Linter } from "eslint";
|
|
3
|
+
import type { FlatGitignoreOptions } from "eslint-config-flat-gitignore";
|
|
4
|
+
import type { RuleOptionsUnion as RuleOptions } from "./generated/rule-options.js";
|
|
5
|
+
export type Awaitable<T> = T | Promise<T>;
|
|
6
|
+
export type Rules = RuleOptions;
|
|
7
|
+
export type LanguageOptions = Linter.Config["languageOptions"];
|
|
8
|
+
export type TypedFlatConfigItem = Omit<Linter.Config<Linter.RulesRecord & Rules>, "plugins"> & {
|
|
9
|
+
/**
|
|
10
|
+
* Custom name of each config item
|
|
11
|
+
*/
|
|
12
|
+
name?: string;
|
|
13
|
+
/**
|
|
14
|
+
* An object containing a name-value mapping of plugin names to plugin objects. When `files` is specified, these plugins are only available to the matching files.
|
|
15
|
+
*
|
|
16
|
+
* @see [Using plugins in your configuration](https://eslint.org/docs/latest/user-guide/configuring/configuration-files-new#using-plugins-in-your-configuration)
|
|
17
|
+
*/
|
|
18
|
+
plugins?: Record<string, any>;
|
|
19
|
+
};
|
|
20
|
+
export type RuleName = keyof Rules;
|
|
21
|
+
export type TypedFlatConfigItemWithId = TypedFlatConfigItem & {
|
|
22
|
+
name: string;
|
|
23
|
+
};
|
|
24
|
+
export type OptionsCommon = {
|
|
25
|
+
debug?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The prefix for the name of the config item.
|
|
28
|
+
*
|
|
29
|
+
* @default "jsse"
|
|
30
|
+
*/
|
|
31
|
+
rootName?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Type of the project. `lib` will enable more strict rules for libraries.
|
|
34
|
+
*
|
|
35
|
+
* @default 'lib'
|
|
36
|
+
*/
|
|
37
|
+
type?: "app" | "lib";
|
|
38
|
+
};
|
|
39
|
+
export type OptionsComponentExts = {
|
|
40
|
+
/**
|
|
41
|
+
* Additional extensions for components.
|
|
42
|
+
*
|
|
43
|
+
* @example ['vue']
|
|
44
|
+
* @default []
|
|
45
|
+
*/
|
|
46
|
+
componentExts?: string[];
|
|
47
|
+
};
|
|
48
|
+
export type PromiseFlatConfigItem = Promise<TypedFlatConfigItemWithId[]>;
|
|
49
|
+
export type EslintConfigFn<T = undefined> = (options?: T) => PromiseFlatConfigItem;
|
|
50
|
+
export type OptionsFiles = {
|
|
51
|
+
/**
|
|
52
|
+
* Override the `files` option to provide custom globs.
|
|
53
|
+
*/
|
|
54
|
+
files?: string[];
|
|
55
|
+
};
|
|
56
|
+
export type OptionsTypeScriptParserOptions = {
|
|
57
|
+
/**
|
|
58
|
+
* Additional parser options for TypeScript.
|
|
59
|
+
*/
|
|
60
|
+
parserOptions?: Partial<ParserOptions>;
|
|
61
|
+
/**
|
|
62
|
+
* Flag to use `projectService` for type-aware linting (default: `false`).
|
|
63
|
+
*
|
|
64
|
+
* If `true` use fancy new `projectService` for type-aware linting
|
|
65
|
+
* If `false` use classic `project` configuration
|
|
66
|
+
*/
|
|
67
|
+
useProjectService?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Glob patterns for files that should be type aware.
|
|
70
|
+
* @default ['**\/*.{ts,tsx}']
|
|
71
|
+
*/
|
|
72
|
+
filesTypeAware?: string[];
|
|
73
|
+
/**
|
|
74
|
+
* Glob patterns for files that should not be type aware.
|
|
75
|
+
* @default ['**\/*.md\/**']
|
|
76
|
+
*/
|
|
77
|
+
ignoresTypeAware?: string[];
|
|
78
|
+
};
|
|
79
|
+
export type OptionsTypeScriptWithTypes = {
|
|
80
|
+
/**
|
|
81
|
+
* When this options is provided, type aware rules will be enabled.
|
|
82
|
+
* @see https://typescript-eslint.io/linting/typed-linting/
|
|
83
|
+
*/
|
|
84
|
+
tsconfig?: string | string[];
|
|
85
|
+
typeAware?: boolean;
|
|
86
|
+
};
|
|
87
|
+
export type OptionsTypescript = (OptionsTypeScriptWithTypes & OptionsOverrides) | (OptionsTypeScriptParserOptions & OptionsOverrides);
|
|
88
|
+
export type OptionsHasTypeScript = {
|
|
89
|
+
typescript?: boolean;
|
|
90
|
+
};
|
|
91
|
+
export type OptionsStylistic = {
|
|
92
|
+
stylistic?: boolean | StylisticConfig;
|
|
93
|
+
};
|
|
94
|
+
export type StylisticConfig = {
|
|
95
|
+
indent?: number | "tab";
|
|
96
|
+
quotes?: "single" | "double";
|
|
97
|
+
jsx?: boolean;
|
|
98
|
+
};
|
|
99
|
+
export type OptionsPrefix = {
|
|
100
|
+
prefix?: {
|
|
101
|
+
from: string;
|
|
102
|
+
to: string;
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
export type OptionsOverrides = {
|
|
106
|
+
overrides?: TypedFlatConfigItem["rules"];
|
|
107
|
+
};
|
|
108
|
+
export type OptionsIsInEditor = {
|
|
109
|
+
isInEditor?: boolean;
|
|
110
|
+
};
|
|
111
|
+
export type OptionsReact = {
|
|
112
|
+
react?: boolean;
|
|
113
|
+
reactRefresh?: boolean;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Tailwind CSS ESLint settings
|
|
117
|
+
*/
|
|
118
|
+
export type TailwindEslintSettings = {
|
|
119
|
+
/**
|
|
120
|
+
* call expressions to check for tailwind classes
|
|
121
|
+
* @default ["classnames", "clsx", "ctl", "cn", "cx", "twMerge", "twJoin"]
|
|
122
|
+
*/
|
|
123
|
+
callees: string[];
|
|
124
|
+
classRegex: string;
|
|
125
|
+
config: string;
|
|
126
|
+
cssFiles: string[];
|
|
127
|
+
cssFilesRefreshRate: number;
|
|
128
|
+
removeDuplicates: boolean;
|
|
129
|
+
skipClassAttribute: boolean;
|
|
130
|
+
tags: string[];
|
|
131
|
+
whitelist: string[];
|
|
132
|
+
};
|
|
133
|
+
export type TailwindOptions = Partial<TailwindEslintSettings> | boolean | undefined;
|
|
134
|
+
export type OptionsConfig = {
|
|
135
|
+
/**
|
|
136
|
+
* Enable debug mode.
|
|
137
|
+
*/
|
|
138
|
+
debug?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Enable reporting of unused disable directives.
|
|
141
|
+
*
|
|
142
|
+
* @default true
|
|
143
|
+
*/
|
|
144
|
+
reportUnusedDisableDirectives?: boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Array of rules to turn off.
|
|
147
|
+
*/
|
|
148
|
+
off?: string[];
|
|
149
|
+
/**
|
|
150
|
+
* Enable fast mode.
|
|
151
|
+
*
|
|
152
|
+
* This will disable some rules to speed up linting.
|
|
153
|
+
*/
|
|
154
|
+
fast?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Enable Prettier config rules to disable conflicting ESLint rules
|
|
157
|
+
*
|
|
158
|
+
* THIS DOES NOT ENABLE PRETTIER FORMATTING. YOU DO THAT, BUT I
|
|
159
|
+
* RECOMMEND USING PRETTIER TO FORMAT AND NOT THE ESLINT PRETTIER
|
|
160
|
+
* PLUGIN!.
|
|
161
|
+
*/
|
|
162
|
+
prettier?: boolean;
|
|
163
|
+
tailwind?: TailwindOptions;
|
|
164
|
+
/**
|
|
165
|
+
* The prefix for the name of the config item.
|
|
166
|
+
* @default "jsse"
|
|
167
|
+
*/
|
|
168
|
+
rootId?: string;
|
|
169
|
+
/**
|
|
170
|
+
* Optional function to run before the final config is returned.
|
|
171
|
+
*/
|
|
172
|
+
preReturn?: (configs: TypedFlatConfigItem[]) => TypedFlatConfigItem[] | Awaitable<TypedFlatConfigItem[]>;
|
|
173
|
+
/**
|
|
174
|
+
* Enable gitignore support.
|
|
175
|
+
*
|
|
176
|
+
* Passing an object to configure the options.
|
|
177
|
+
*
|
|
178
|
+
* @see https://github.com/antfu/eslint-config-flat-gitignore
|
|
179
|
+
* @default true
|
|
180
|
+
*/
|
|
181
|
+
gitignore?: boolean | FlatGitignoreOptions;
|
|
182
|
+
tsPrefix?: string;
|
|
183
|
+
/**
|
|
184
|
+
* Glob patterns for ADDITIONAL tsconfig files to lint (aka sort)
|
|
185
|
+
*/
|
|
186
|
+
extendTsconfigLintGlobs?: string[];
|
|
187
|
+
typeAware?: boolean;
|
|
188
|
+
/**
|
|
189
|
+
* Enable TypeScript support.
|
|
190
|
+
*
|
|
191
|
+
* Passing an object to enable TypeScript Language Server support.
|
|
192
|
+
*
|
|
193
|
+
* @default auto-detect based on the dependencies
|
|
194
|
+
*/
|
|
195
|
+
typescript?: boolean | OptionsTypeScriptWithTypes;
|
|
196
|
+
react?: boolean;
|
|
197
|
+
reactRefresh?: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* Enable JSX related rules.
|
|
200
|
+
*
|
|
201
|
+
* Currently only stylistic rules are included.
|
|
202
|
+
*
|
|
203
|
+
* @default true
|
|
204
|
+
*/
|
|
205
|
+
jsx?: boolean;
|
|
206
|
+
/**
|
|
207
|
+
* Enable test support.
|
|
208
|
+
*
|
|
209
|
+
* @default true
|
|
210
|
+
*/
|
|
211
|
+
test?: boolean;
|
|
212
|
+
/**
|
|
213
|
+
* Enable JSONC support.
|
|
214
|
+
*
|
|
215
|
+
* @default true
|
|
216
|
+
*/
|
|
217
|
+
jsonc?: boolean;
|
|
218
|
+
/**
|
|
219
|
+
* Enable YAML support.
|
|
220
|
+
*
|
|
221
|
+
* @default true
|
|
222
|
+
*/
|
|
223
|
+
yaml?: boolean;
|
|
224
|
+
/**
|
|
225
|
+
* Enable Markdown support.
|
|
226
|
+
*
|
|
227
|
+
* @default true
|
|
228
|
+
*/
|
|
229
|
+
markdown?: boolean;
|
|
230
|
+
/**
|
|
231
|
+
* Enable stylistic rules.
|
|
232
|
+
*
|
|
233
|
+
* @default true
|
|
234
|
+
*/
|
|
235
|
+
stylistic?: boolean | StylisticConfig;
|
|
236
|
+
/**
|
|
237
|
+
* Control to disable some rules in editors.
|
|
238
|
+
* @default auto-detect based on the process.env
|
|
239
|
+
*/
|
|
240
|
+
isInEditor?: boolean;
|
|
241
|
+
/**
|
|
242
|
+
* Provide overrides for rules for each integration.
|
|
243
|
+
*/
|
|
244
|
+
overrides?: {
|
|
245
|
+
javascript?: TypedFlatConfigItem["rules"];
|
|
246
|
+
typescript?: TypedFlatConfigItem["rules"];
|
|
247
|
+
test?: TypedFlatConfigItem["rules"];
|
|
248
|
+
jsonc?: TypedFlatConfigItem["rules"];
|
|
249
|
+
markdown?: TypedFlatConfigItem["rules"];
|
|
250
|
+
yaml?: TypedFlatConfigItem["rules"];
|
|
251
|
+
};
|
|
252
|
+
} & OptionsComponentExts & OptionsTypeScriptParserOptions;
|
|
253
|
+
export type RenamePefix<T extends Record<string, unknown>, FromPref extends string, ToPref extends string> = {
|
|
254
|
+
[K in keyof T as K extends `${FromPref}${infer Rest}` ? `${ToPref}${Rest}` : K]: T[K];
|
|
255
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Linter } from "eslint";
|
|
2
|
+
import type { Awaitable, TypedFlatConfigItem } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Combine array and non-array configs into a single array.
|
|
5
|
+
*/
|
|
6
|
+
export declare function combine(...configs: Awaitable<TypedFlatConfigItem | TypedFlatConfigItem[]>[]): Promise<TypedFlatConfigItem[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Combine array and non-array configs into a single array.
|
|
9
|
+
*/
|
|
10
|
+
export declare function combineAsync<T>(...configs: Awaitable<T | T[]>[]): Promise<T[]>;
|
|
11
|
+
export declare function renameRules<TRule = unknown>(rules: Record<string, TRule>, from: string, to: string): Record<string, TRule>;
|
|
12
|
+
export declare function interopDefault<T>(m: Awaitable<T>): Promise<T extends {
|
|
13
|
+
default: infer U;
|
|
14
|
+
} ? U : T>;
|
|
15
|
+
export declare function isCI(): boolean;
|
|
16
|
+
export declare function isInEditor(): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Make an array of strings unique maintaining order.
|
|
19
|
+
* @param strings strings to make unique
|
|
20
|
+
* @returns unique strings
|
|
21
|
+
*/
|
|
22
|
+
export declare function uniqueStrings(...strings: (string | string[])[]): string[];
|
|
23
|
+
export declare const parserPlain: {
|
|
24
|
+
meta: {
|
|
25
|
+
name: string;
|
|
26
|
+
};
|
|
27
|
+
parseForESLint: (code: string) => {
|
|
28
|
+
ast: {
|
|
29
|
+
body: never[];
|
|
30
|
+
comments: never[];
|
|
31
|
+
loc: {
|
|
32
|
+
end: number;
|
|
33
|
+
start: number;
|
|
34
|
+
};
|
|
35
|
+
range: number[];
|
|
36
|
+
tokens: never[];
|
|
37
|
+
type: string;
|
|
38
|
+
};
|
|
39
|
+
scopeManager: undefined;
|
|
40
|
+
services: {
|
|
41
|
+
isPlain: boolean;
|
|
42
|
+
};
|
|
43
|
+
visitorKeys: {
|
|
44
|
+
Program: never[];
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export declare function turnOffRules(configs: TypedFlatConfigItem[], off: string[]): TypedFlatConfigItem[];
|
|
49
|
+
export declare function changeRuleEntrySeverity(ruleConfig: Linter.RuleEntry<any>, level: Linter.RuleSeverity): Linter.RuleEntry<any>;
|
|
50
|
+
export declare function error2warn<T extends TypedFlatConfigItem>(configs: T[]): T[];
|
|
51
|
+
export declare function warn2error<T extends TypedFlatConfigItem>(configs: T[]): T[];
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { log } from "./lager.js";
|
|
3
|
+
/**
|
|
4
|
+
* Combine array and non-array configs into a single array.
|
|
5
|
+
*/
|
|
6
|
+
export async function combine(...configs) {
|
|
7
|
+
const resolved = await Promise.all(configs);
|
|
8
|
+
return resolved.flat();
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Combine array and non-array configs into a single array.
|
|
12
|
+
*/
|
|
13
|
+
export async function combineAsync(...configs) {
|
|
14
|
+
const resolved = await Promise.all(configs);
|
|
15
|
+
return resolved.flatMap((config) => Array.isArray(config) ? config : [config]);
|
|
16
|
+
}
|
|
17
|
+
export function renameRules(rules, from, to) {
|
|
18
|
+
if (from === to) {
|
|
19
|
+
return rules;
|
|
20
|
+
}
|
|
21
|
+
return Object.fromEntries(Object.entries(rules).map(([key, value]) => {
|
|
22
|
+
if (key.startsWith(from)) {
|
|
23
|
+
return [to + key.slice(from.length), value];
|
|
24
|
+
}
|
|
25
|
+
return [key, value];
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
export async function interopDefault(m) {
|
|
29
|
+
const resolved = await m;
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
|
|
31
|
+
return resolved.default || resolved;
|
|
32
|
+
}
|
|
33
|
+
export function isCI() {
|
|
34
|
+
return !!process.env.CI;
|
|
35
|
+
}
|
|
36
|
+
export function isInEditor() {
|
|
37
|
+
return !!((process.env.VSCODE_PID || process.env.JETBRAINS_IDE) && !isCI());
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Make an array of strings unique maintaining order.
|
|
41
|
+
* @param strings strings to make unique
|
|
42
|
+
* @returns unique strings
|
|
43
|
+
*/
|
|
44
|
+
export function uniqueStrings(...strings) {
|
|
45
|
+
const set = new Set();
|
|
46
|
+
for (const item of strings) {
|
|
47
|
+
if (typeof item === "string") {
|
|
48
|
+
set.add(item);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
for (const str of item) {
|
|
52
|
+
set.add(str);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return [...set];
|
|
57
|
+
}
|
|
58
|
+
export const parserPlain = {
|
|
59
|
+
meta: {
|
|
60
|
+
name: "parser-plain",
|
|
61
|
+
},
|
|
62
|
+
parseForESLint: (code) => ({
|
|
63
|
+
ast: {
|
|
64
|
+
body: [],
|
|
65
|
+
comments: [],
|
|
66
|
+
loc: { end: code.length, start: 0 },
|
|
67
|
+
range: [0, code.length],
|
|
68
|
+
tokens: [],
|
|
69
|
+
type: "Program",
|
|
70
|
+
},
|
|
71
|
+
scopeManager: undefined,
|
|
72
|
+
services: { isPlain: true },
|
|
73
|
+
visitorKeys: {
|
|
74
|
+
Program: [],
|
|
75
|
+
},
|
|
76
|
+
}),
|
|
77
|
+
};
|
|
78
|
+
export function turnOffRules(configs, off) {
|
|
79
|
+
if (off && off.length > 0) {
|
|
80
|
+
// turrning off rules
|
|
81
|
+
// duplicate off rules
|
|
82
|
+
for (const rule of off) {
|
|
83
|
+
log.debug(`turning-off: ${rule}`);
|
|
84
|
+
}
|
|
85
|
+
const currentlyActiveRules = new Set();
|
|
86
|
+
for (const config of configs) {
|
|
87
|
+
for (const rule of Object.keys(config.rules ?? {}))
|
|
88
|
+
currentlyActiveRules.add(rule);
|
|
89
|
+
}
|
|
90
|
+
// warn if off is not in currentlyActiveRules
|
|
91
|
+
for (const rule of off) {
|
|
92
|
+
if (!currentlyActiveRules.has(rule)) {
|
|
93
|
+
log.info(`Rule \`${rule}\` is not active in the current config, you can remove it from the off list`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
for (const config of configs) {
|
|
97
|
+
// turn off each rule...
|
|
98
|
+
const cfgRules = config.rules;
|
|
99
|
+
if (cfgRules) {
|
|
100
|
+
for (const rule of off) {
|
|
101
|
+
if (cfgRules[rule] !== undefined &&
|
|
102
|
+
cfgRules[rule] !== "off" &&
|
|
103
|
+
cfgRules[rule] !== 0) {
|
|
104
|
+
cfgRules[rule] = "off";
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return configs;
|
|
111
|
+
}
|
|
112
|
+
export function changeRuleEntrySeverity(
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
114
|
+
ruleConfig, level) {
|
|
115
|
+
if (Array.isArray(ruleConfig)) {
|
|
116
|
+
// here its [level, options]
|
|
117
|
+
if (ruleConfig[0] !== level) {
|
|
118
|
+
ruleConfig[0] = level;
|
|
119
|
+
}
|
|
120
|
+
return ruleConfig;
|
|
121
|
+
}
|
|
122
|
+
return level;
|
|
123
|
+
}
|
|
124
|
+
export function error2warn(configs) {
|
|
125
|
+
for (const config of configs) {
|
|
126
|
+
if (config.rules) {
|
|
127
|
+
config.rules = Object.fromEntries(Object.entries(config.rules).map(([key, value]) => {
|
|
128
|
+
if (value === "error" || value === 2) {
|
|
129
|
+
return [key, changeRuleEntrySeverity(value, "warn")];
|
|
130
|
+
}
|
|
131
|
+
if (Array.isArray(value) &&
|
|
132
|
+
(value[0] === "error" || value[0] === 2)) {
|
|
133
|
+
return [key, changeRuleEntrySeverity(value, "warn")];
|
|
134
|
+
}
|
|
135
|
+
return [key, value];
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return configs;
|
|
140
|
+
}
|
|
141
|
+
export function warn2error(configs) {
|
|
142
|
+
for (const config of configs) {
|
|
143
|
+
if (config.rules) {
|
|
144
|
+
config.rules = Object.fromEntries(Object.entries(config.rules).map(([key, value]) => {
|
|
145
|
+
if (value === "warn" || value === 1) {
|
|
146
|
+
return [key, changeRuleEntrySeverity(value, "error")];
|
|
147
|
+
}
|
|
148
|
+
if (Array.isArray(value) && (value[0] === "warn" || value[0] === 1)) {
|
|
149
|
+
return [key, changeRuleEntrySeverity(value, "error")];
|
|
150
|
+
}
|
|
151
|
+
return [key, value];
|
|
152
|
+
}));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return configs;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|