@ncontiero/eslint-config 8.0.0-beta.0 → 8.0.0-beta.2
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/index.d.mts +3 -4
- package/dist/index.mjs +27 -10
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -16375,7 +16375,7 @@ type Yoda = [] | [("always" | "never")] | [("always" | "never"), {
|
|
|
16375
16375
|
exceptRange?: boolean;
|
|
16376
16376
|
onlyEquality?: boolean;
|
|
16377
16377
|
}]; // Names of all the configs
|
|
16378
|
-
type ConfigNames = 'ncontiero/gitignore' | 'ncontiero/global-ignores' | 'ncontiero/javascript/rules' | 'ncontiero/javascript/cli-rules' | 'ncontiero/javascript/test-rules' | 'ncontiero/comments/rules' | 'ncontiero/jsdoc/setup' | 'ncontiero/jsdoc/rules' | 'ncontiero/imports/rules' | 'ncontiero/imports/allow-default-export' | 'ncontiero/node/setup' | 'ncontiero/node/rules' | 'ncontiero/promise/setup' | 'ncontiero/promise/rules' | 'ncontiero/command/rules' | 'ncontiero/perfectionist/rules' | 'ncontiero/de-morgan' | 'ncontiero/unicorn/rules' | 'ncontiero/typescript/setup' | 'ncontiero/typescript/parser' | 'ncontiero/typescript/rules' | 'ncontiero/typescript/dts-rules' | 'ncontiero/typescript/cjs-rules' | 'ncontiero/jsonc/recommended' | 'ncontiero/jsonc/recommended' | 'ncontiero/jsonc/recommended' | 'ncontiero/jsonc/rules' | 'ncontiero/sort/package-json' | 'ncontiero/sort/tsconfig' | 'ncontiero/yml/setup' | 'ncontiero/yml/rules' | 'ncontiero/yml/pnpm-workspace' | 'ncontiero/toml/setup' | 'ncontiero/toml/rules' | 'ncontiero/markdown/setup' | 'ncontiero/markdown/processor' | 'ncontiero/markdown/parser' | 'ncontiero/markdown/rules' | 'ncontiero/regexp/rules' | 'ncontiero/react/setup' | 'ncontiero/tanstack-query' | 'ncontiero/react/rules' | 'ncontiero/nextjs/rules' | 'ncontiero/html/setup' | 'ncontiero/html/rules' | 'ncontiero/tailwindcss/setup' | 'ncontiero/tailwindcss/rules' | 'ncontiero/prettier/setup' | 'ncontiero/prettier/disables' | 'ncontiero/prettier/rules' | 'ncontiero/prettier/markdown' | 'ncontiero/prettier/css' | 'ncontiero/prettier/scss' | 'ncontiero/prettier/less';
|
|
16378
|
+
type ConfigNames = 'ncontiero/gitignore' | 'ncontiero/global-ignores' | 'ncontiero/javascript/rules' | 'ncontiero/javascript/cli-rules' | 'ncontiero/javascript/test-rules' | 'ncontiero/comments/rules' | 'ncontiero/jsdoc/setup' | 'ncontiero/jsdoc/rules' | 'ncontiero/imports/rules' | 'ncontiero/imports/allow-default-export' | 'ncontiero/node/setup' | 'ncontiero/node/rules' | 'ncontiero/promise/setup' | 'ncontiero/promise/rules' | 'ncontiero/command/rules' | 'ncontiero/perfectionist/rules' | 'ncontiero/de-morgan' | 'ncontiero/unicorn/rules' | 'ncontiero/typescript/setup' | 'ncontiero/typescript/parser' | 'ncontiero/typescript/rules' | 'ncontiero/typescript/dts-rules' | 'ncontiero/typescript/cjs-rules' | 'ncontiero/jsonc/recommended' | 'ncontiero/jsonc/recommended' | 'ncontiero/jsonc/recommended' | 'ncontiero/jsonc/rules' | 'ncontiero/sort/package-json' | 'ncontiero/sort/tsconfig' | 'ncontiero/yml/setup' | 'ncontiero/yml/rules' | 'ncontiero/yml/pnpm-workspace' | 'ncontiero/toml/setup' | 'ncontiero/toml/rules' | 'ncontiero/markdown/setup' | 'ncontiero/markdown/processor' | 'ncontiero/markdown/parser' | 'ncontiero/markdown/rules' | 'ncontiero/regexp/rules' | 'ncontiero/react/setup' | 'ncontiero/tanstack-query' | 'ncontiero/react/rules' | 'ncontiero/react/typescript' | 'ncontiero/nextjs/rules' | 'ncontiero/html/setup' | 'ncontiero/html/rules' | 'ncontiero/tailwindcss/setup' | 'ncontiero/tailwindcss/rules' | 'ncontiero/prettier/setup' | 'ncontiero/prettier/disables' | 'ncontiero/prettier/rules' | 'ncontiero/prettier/markdown' | 'ncontiero/prettier/css' | 'ncontiero/prettier/scss' | 'ncontiero/prettier/less';
|
|
16379
16379
|
//#endregion
|
|
16380
16380
|
//#region src/types.d.ts
|
|
16381
16381
|
type Awaitable<T> = T | Promise<T>;
|
|
@@ -16634,7 +16634,7 @@ declare function prettier(options?: PrettierOptions): Promise<FlatConfigItem[]>;
|
|
|
16634
16634
|
declare function promise(): Promise<FlatConfigItem[]>;
|
|
16635
16635
|
//#endregion
|
|
16636
16636
|
//#region src/configs/react.d.ts
|
|
16637
|
-
declare function react(options?: OptionsOverrides & OptionsFiles & OptionsHasTanStackReactQuery): Promise<FlatConfigItem[]>;
|
|
16637
|
+
declare function react(options?: OptionsTypeScriptParserOptions & OptionsTypeScriptWithTypes & OptionsOverrides & OptionsFiles & OptionsHasTanStackReactQuery): Promise<FlatConfigItem[]>;
|
|
16638
16638
|
//#endregion
|
|
16639
16639
|
//#region src/configs/regexp.d.ts
|
|
16640
16640
|
declare function regexp(options?: OptionsOverrides): FlatConfigItem[];
|
|
@@ -16690,7 +16690,6 @@ declare const GLOB_JS = "**/*.?([cm])js";
|
|
|
16690
16690
|
declare const GLOB_JSX = "**/*.?([cm])jsx";
|
|
16691
16691
|
declare const GLOB_TS = "**/*.?([cm])ts";
|
|
16692
16692
|
declare const GLOB_TSX = "**/*.?([cm])tsx";
|
|
16693
|
-
declare const GLOB_REACT = "**/*.?([cm])?(j|t)sx";
|
|
16694
16693
|
declare const GLOB_STYLE = "**/*.{c,le,sc}ss";
|
|
16695
16694
|
declare const GLOB_CSS = "**/*.css";
|
|
16696
16695
|
declare const GLOB_POSTCSS = "**/*.{p,post}css";
|
|
@@ -16790,4 +16789,4 @@ declare function composer({
|
|
|
16790
16789
|
}: ComposerOptions): Promise<FlatConfigItem[]>;
|
|
16791
16790
|
declare function toArray<T>(value: T | T[]): T[];
|
|
16792
16791
|
//#endregion
|
|
16793
|
-
export { Awaitable, ComposerOptions, type ConfigNames, FlatConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_DIST, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_NODE_MODULES, GLOB_POSTCSS,
|
|
16792
|
+
export { Awaitable, ComposerOptions, type ConfigNames, FlatConfigItem, GLOB_ALL_SRC, GLOB_CSS, GLOB_DIST, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_NODE_MODULES, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_YAML, HTMLOptions, OptionsConfig, OptionsFiles, OptionsHasNextJs, OptionsHasRegexp, OptionsHasTanStackReactQuery, OptionsHasTypeScript, OptionsOverrides, OptionsTailwindCSS, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes, OptionsTypescript, OptionsUnicorn, type PrettierOptions, ResolvedOptions, Rules, StyleConfig, StyleOptions, combine, command, comments, composer, deMorgan, defaultPluginRenaming, ensurePackages, getOverrides, hasNextJs, hasReact, hasTailwind, hasTanStackReactQuery, hasTypeScript, html, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, ncontiero, nextJs, node, parserPlain, perfectionist, prettier, promise, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, restrictedSyntaxJs, sortPackageJson, sortPnpmWorkspace, sortTsconfig, tailwindcss, toArray, toml, typescript, unicorn, yml };
|
package/dist/index.mjs
CHANGED
|
@@ -50,7 +50,6 @@ const GLOB_JS = "**/*.?([cm])js";
|
|
|
50
50
|
const GLOB_JSX = "**/*.?([cm])jsx";
|
|
51
51
|
const GLOB_TS = "**/*.?([cm])ts";
|
|
52
52
|
const GLOB_TSX = "**/*.?([cm])tsx";
|
|
53
|
-
const GLOB_REACT = "**/*.?([cm])?(j|t)sx";
|
|
54
53
|
const GLOB_STYLE = "**/*.{c,le,sc}ss";
|
|
55
54
|
const GLOB_CSS = "**/*.css";
|
|
56
55
|
const GLOB_POSTCSS = "**/*.{p,post}css";
|
|
@@ -612,7 +611,7 @@ async function markdown(options = {}) {
|
|
|
612
611
|
//#endregion
|
|
613
612
|
//#region src/configs/nextjs.ts
|
|
614
613
|
async function nextJs(options = {}) {
|
|
615
|
-
const { files = [
|
|
614
|
+
const { files = [GLOB_SRC], overrides = {} } = options;
|
|
616
615
|
return [{
|
|
617
616
|
files,
|
|
618
617
|
name: "ncontiero/nextjs/rules",
|
|
@@ -809,8 +808,13 @@ const ReactRouterPackages = [
|
|
|
809
808
|
];
|
|
810
809
|
const NextJsPackages = ["next"];
|
|
811
810
|
async function react(options = {}) {
|
|
812
|
-
const { files = [
|
|
811
|
+
const { files = [GLOB_SRC], filesTypeAware = [GLOB_TS, GLOB_TSX], ignoresTypeAware = [`${GLOB_MARKDOWN}/**`], overrides = {}, reactQuery, tsconfigPath } = options;
|
|
813
812
|
if (reactQuery) ensurePackages(["@tanstack/eslint-plugin-query"]);
|
|
813
|
+
const isTypeAware = !!tsconfigPath;
|
|
814
|
+
const typeAwareRules = {
|
|
815
|
+
"react/no-leaked-conditional-rendering": "error",
|
|
816
|
+
"react/no-unused-props": "warn"
|
|
817
|
+
};
|
|
814
818
|
const [pluginA11y, pluginReact, pluginReactRefresh] = await Promise.all([
|
|
815
819
|
interopDefault(import("eslint-plugin-jsx-a11y")),
|
|
816
820
|
interopDefault(import("@eslint-react/eslint-plugin")),
|
|
@@ -999,21 +1003,32 @@ async function react(options = {}) {
|
|
|
999
1003
|
}],
|
|
1000
1004
|
"react/dom-no-missing-button-type": "warn",
|
|
1001
1005
|
"react/dom-no-missing-iframe-sandbox": "warn",
|
|
1002
|
-
"react/dom-no-unknown-property": "warn",
|
|
1003
1006
|
"react/dom-no-unsafe-target-blank": "warn",
|
|
1004
1007
|
"react/globals": "warn",
|
|
1005
1008
|
"react/immutability": "warn",
|
|
1006
1009
|
"react/jsx-no-useless-fragment": "warn",
|
|
1007
1010
|
"react/no-duplicate-key": "warn",
|
|
1008
|
-
"react/no-leaked-conditional-rendering": "error",
|
|
1009
1011
|
"react/no-missing-component-display-name": "warn",
|
|
1010
1012
|
"react/no-unstable-context-value": "warn",
|
|
1011
1013
|
"react/no-unstable-default-props": "warn",
|
|
1012
|
-
"react/no-unused-props": "warn",
|
|
1013
1014
|
"react/refs": "warn",
|
|
1014
1015
|
...overrides
|
|
1015
1016
|
}
|
|
1016
|
-
}
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
files: filesTypeAware,
|
|
1020
|
+
name: "ncontiero/react/typescript",
|
|
1021
|
+
rules: {
|
|
1022
|
+
"react/dom-no-string-style-prop": "off",
|
|
1023
|
+
"react/dom-no-unknown-property": "off"
|
|
1024
|
+
}
|
|
1025
|
+
},
|
|
1026
|
+
...isTypeAware ? [{
|
|
1027
|
+
files: filesTypeAware,
|
|
1028
|
+
ignores: ignoresTypeAware,
|
|
1029
|
+
name: "ncontiero/react/type-aware-rules",
|
|
1030
|
+
rules: { ...typeAwareRules }
|
|
1031
|
+
}] : []
|
|
1017
1032
|
];
|
|
1018
1033
|
}
|
|
1019
1034
|
//#endregion
|
|
@@ -1290,7 +1305,7 @@ async function tailwindcss(options = {}) {
|
|
|
1290
1305
|
tailwindConfig: configPath
|
|
1291
1306
|
} }
|
|
1292
1307
|
}, {
|
|
1293
|
-
files: [
|
|
1308
|
+
files: [GLOB_SRC, GLOB_HTML],
|
|
1294
1309
|
name: "ncontiero/tailwindcss/rules",
|
|
1295
1310
|
rules: {
|
|
1296
1311
|
"tailwindcss/enforce-consistent-class-order": "warn",
|
|
@@ -1739,8 +1754,10 @@ function ncontiero(options = {}, ...userConfigs) {
|
|
|
1739
1754
|
if (options.markdown ?? true) configs.push(markdown({ overrides: getOverrides(options, "markdown") }));
|
|
1740
1755
|
if (enableRegexp) configs.push(regexp(typeof enableRegexp === "boolean" ? {} : enableRegexp));
|
|
1741
1756
|
if (enableReact) configs.push(react({
|
|
1757
|
+
...typescriptOptions,
|
|
1742
1758
|
overrides: getOverrides(options, "react"),
|
|
1743
|
-
reactQuery: !!enableTanStackReactQuery
|
|
1759
|
+
reactQuery: !!enableTanStackReactQuery,
|
|
1760
|
+
tsconfigPath
|
|
1744
1761
|
}));
|
|
1745
1762
|
if (enableNextJs) configs.push(nextJs({ overrides: getOverrides(options, "nextjs") }));
|
|
1746
1763
|
if (options.html ?? true) configs.push(html({
|
|
@@ -1764,4 +1781,4 @@ function ncontiero(options = {}, ...userConfigs) {
|
|
|
1764
1781
|
});
|
|
1765
1782
|
}
|
|
1766
1783
|
//#endregion
|
|
1767
|
-
export { GLOB_ALL_SRC, GLOB_CSS, GLOB_DIST, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_NODE_MODULES, GLOB_POSTCSS,
|
|
1784
|
+
export { GLOB_ALL_SRC, GLOB_CSS, GLOB_DIST, GLOB_EXCLUDE, GLOB_HTML, GLOB_JS, GLOB_JSON, GLOB_JSON5, GLOB_JSONC, GLOB_JSX, GLOB_LESS, GLOB_LOCKFILE, GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN, GLOB_NODE_MODULES, GLOB_POSTCSS, GLOB_SCSS, GLOB_SRC, GLOB_SRC_EXT, GLOB_STYLE, GLOB_TOML, GLOB_TS, GLOB_TSX, GLOB_YAML, combine, command, comments, composer, deMorgan, defaultPluginRenaming, ensurePackages, getOverrides, hasNextJs, hasReact, hasTailwind, hasTanStackReactQuery, hasTypeScript, html, ignores, imports, interopDefault, javascript, jsdoc, jsonc, markdown, ncontiero, nextJs, node, parserPlain, perfectionist, prettier, promise, react, regexp, renamePluginInConfigs, renameRules, resolveSubOptions, restrictedSyntaxJs, sortPackageJson, sortPnpmWorkspace, sortTsconfig, tailwindcss, toArray, toml, typescript, unicorn, yml };
|