@touchspot/eslint-config 5.0.8 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-D7D4PA-g.mjs +13 -0
- package/dist/env-P7bBQuYF.mjs +108 -0
- package/dist/env-P7bBQuYF.mjs.map +1 -0
- package/dist/frameworks/next.d.mts +7 -0
- package/dist/frameworks/next.d.mts.map +1 -0
- package/dist/frameworks/next.mjs +17 -0
- package/dist/frameworks/next.mjs.map +1 -0
- package/dist/frameworks/react.d.mts +7 -0
- package/dist/frameworks/react.d.mts.map +1 -0
- package/dist/frameworks/react.mjs +2 -0
- package/dist/frameworks/tailwindcss.d.mts +27 -0
- package/dist/frameworks/tailwindcss.d.mts.map +1 -0
- package/dist/frameworks/tailwindcss.mjs +39 -0
- package/dist/frameworks/tailwindcss.mjs.map +1 -0
- package/dist/functional-D_M95gZL.mjs +48 -0
- package/dist/functional-D_M95gZL.mjs.map +1 -0
- package/dist/index.d.mts +30 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +233 -0
- package/dist/index.mjs.map +1 -0
- package/dist/react-DgMKdgTt.mjs +45 -0
- package/dist/react-DgMKdgTt.mjs.map +1 -0
- package/dist/types-DzD7blyE.d.mts +8 -0
- package/dist/types-DzD7blyE.d.mts.map +1 -0
- package/package.json +26 -22
- package/dist/lib/default.d.ts +0 -4
- package/dist/lib/default.d.ts.map +0 -1
- package/dist/lib/default.js +0 -3
- package/dist/lib/default.js.map +0 -1
- package/dist/lib/frameworks/next.d.ts +0 -2
- package/dist/lib/frameworks/next.d.ts.map +0 -1
- package/dist/lib/frameworks/next.js +0 -2
- package/dist/lib/frameworks/next.js.map +0 -1
- package/dist/lib/frameworks/react.d.ts +0 -2
- package/dist/lib/frameworks/react.d.ts.map +0 -1
- package/dist/lib/frameworks/react.js +0 -2
- package/dist/lib/frameworks/react.js.map +0 -1
- package/dist/lib/frameworks/tailwindcss.d.ts +0 -2
- package/dist/lib/frameworks/tailwindcss.d.ts.map +0 -1
- package/dist/lib/frameworks/tailwindcss.js +0 -2
- package/dist/lib/frameworks/tailwindcss.js.map +0 -1
- package/dist/src/config.d.ts +0 -13
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -36
- package/dist/src/config.js.map +0 -1
- package/dist/src/env.d.ts +0 -7
- package/dist/src/env.d.ts.map +0 -1
- package/dist/src/env.js +0 -21
- package/dist/src/env.js.map +0 -1
- package/dist/src/frameworks/next.d.ts +0 -3
- package/dist/src/frameworks/next.d.ts.map +0 -1
- package/dist/src/frameworks/next.js +0 -8
- package/dist/src/frameworks/next.js.map +0 -1
- package/dist/src/frameworks/react.d.ts +0 -3
- package/dist/src/frameworks/react.d.ts.map +0 -1
- package/dist/src/frameworks/react.js +0 -6
- package/dist/src/frameworks/react.js.map +0 -1
- package/dist/src/frameworks/tailwindcss.d.ts +0 -22
- package/dist/src/frameworks/tailwindcss.d.ts.map +0 -1
- package/dist/src/frameworks/tailwindcss.js +0 -4
- package/dist/src/frameworks/tailwindcss.js.map +0 -1
- package/dist/src/rulesets/better-tailwindcss.d.ts +0 -3
- package/dist/src/rulesets/better-tailwindcss.d.ts.map +0 -1
- package/dist/src/rulesets/better-tailwindcss.js +0 -37
- package/dist/src/rulesets/better-tailwindcss.js.map +0 -1
- package/dist/src/rulesets/check-file.d.ts +0 -3
- package/dist/src/rulesets/check-file.d.ts.map +0 -1
- package/dist/src/rulesets/check-file.js +0 -38
- package/dist/src/rulesets/check-file.js.map +0 -1
- package/dist/src/rulesets/eslint.d.ts +0 -2
- package/dist/src/rulesets/eslint.d.ts.map +0 -1
- package/dist/src/rulesets/eslint.js +0 -25
- package/dist/src/rulesets/eslint.js.map +0 -1
- package/dist/src/rulesets/functional.d.ts +0 -5
- package/dist/src/rulesets/functional.d.ts.map +0 -1
- package/dist/src/rulesets/functional.js +0 -54
- package/dist/src/rulesets/functional.js.map +0 -1
- package/dist/src/rulesets/import-x.d.ts +0 -3
- package/dist/src/rulesets/import-x.d.ts.map +0 -1
- package/dist/src/rulesets/import-x.js +0 -52
- package/dist/src/rulesets/import-x.js.map +0 -1
- package/dist/src/rulesets/next.d.ts +0 -2
- package/dist/src/rulesets/next.d.ts.map +0 -1
- package/dist/src/rulesets/next.js +0 -8
- package/dist/src/rulesets/next.js.map +0 -1
- package/dist/src/rulesets/no-relative-import-paths.d.ts +0 -2
- package/dist/src/rulesets/no-relative-import-paths.d.ts.map +0 -1
- package/dist/src/rulesets/no-relative-import-paths.js +0 -14
- package/dist/src/rulesets/no-relative-import-paths.js.map +0 -1
- package/dist/src/rulesets/perfectionist.d.ts +0 -2
- package/dist/src/rulesets/perfectionist.d.ts.map +0 -1
- package/dist/src/rulesets/perfectionist.js +0 -22
- package/dist/src/rulesets/perfectionist.js.map +0 -1
- package/dist/src/rulesets/react-hooks.d.ts +0 -2
- package/dist/src/rulesets/react-hooks.d.ts.map +0 -1
- package/dist/src/rulesets/react-hooks.js +0 -13
- package/dist/src/rulesets/react-hooks.js.map +0 -1
- package/dist/src/rulesets/react.d.ts +0 -2
- package/dist/src/rulesets/react.d.ts.map +0 -1
- package/dist/src/rulesets/react.js +0 -30
- package/dist/src/rulesets/react.js.map +0 -1
- package/dist/src/rulesets/tseslint.d.ts +0 -4
- package/dist/src/rulesets/tseslint.d.ts.map +0 -1
- package/dist/src/rulesets/tseslint.js +0 -99
- package/dist/src/rulesets/tseslint.js.map +0 -1
- package/dist/src/rulesets/unicorn.d.ts +0 -2
- package/dist/src/rulesets/unicorn.d.ts.map +0 -1
- package/dist/src/rulesets/unicorn.js +0 -17
- package/dist/src/rulesets/unicorn.js.map +0 -1
- package/dist/src/rulesets/unused-imports.d.ts +0 -2
- package/dist/src/rulesets/unused-imports.d.ts.map +0 -1
- package/dist/src/rulesets/unused-imports.js +0 -18
- package/dist/src/rulesets/unused-imports.js.map +0 -1
- package/dist/src/types.d.ts +0 -4
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __exportAll = (all, no_symbols) => {
|
|
4
|
+
let target = {};
|
|
5
|
+
for (var name in all) __defProp(target, name, {
|
|
6
|
+
get: all[name],
|
|
7
|
+
enumerable: true
|
|
8
|
+
});
|
|
9
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
10
|
+
return target;
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { __exportAll as t };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { t as __exportAll } from "./chunk-D7D4PA-g.mjs";
|
|
2
|
+
import { defineConfig } from "eslint/config";
|
|
3
|
+
import CheckFile from "eslint-plugin-check-file";
|
|
4
|
+
import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
|
|
5
|
+
import ImportX from "eslint-plugin-import-x";
|
|
6
|
+
import Globals from "globals";
|
|
7
|
+
//#region src/rulesets/check-file.ts
|
|
8
|
+
const checkFileRuleset = () => defineConfig({
|
|
9
|
+
name: "@touchspot/eslint-config/rulesets/check-file",
|
|
10
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
11
|
+
ignores: ["**/*.d.*"],
|
|
12
|
+
plugins: { "check-file": CheckFile },
|
|
13
|
+
rules: {
|
|
14
|
+
"check-file/folder-naming-convention": [
|
|
15
|
+
"error",
|
|
16
|
+
{ "**": "KEBAB_CASE" },
|
|
17
|
+
{ ignoreWords: [
|
|
18
|
+
".agents",
|
|
19
|
+
".claude",
|
|
20
|
+
".codex",
|
|
21
|
+
".opencode",
|
|
22
|
+
"__tests__"
|
|
23
|
+
] }
|
|
24
|
+
],
|
|
25
|
+
"check-file/filename-naming-convention": [
|
|
26
|
+
"error",
|
|
27
|
+
{ "**": "KEBAB_CASE" },
|
|
28
|
+
{ ignoreMiddleExtensions: true }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const checkFileRulesetNext = () => defineConfig({
|
|
33
|
+
name: "@touchspot/eslint-config/rulesets/check-file/next",
|
|
34
|
+
files: ["{src/,}app/**/*.{ts,tsx}"],
|
|
35
|
+
rules: { "check-file/folder-naming-convention": ["error", { "**": "NEXT_JS_APP_ROUTER_CASE" }] }
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region src/rulesets/import-x.ts
|
|
39
|
+
const importXRuleset = () => defineConfig({
|
|
40
|
+
name: "@touchspot/eslint-config/rulesets/import-x",
|
|
41
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
42
|
+
extends: [ImportX.flatConfigs.recommended],
|
|
43
|
+
settings: {
|
|
44
|
+
"import-x/internal-regex": "^#.+",
|
|
45
|
+
"import-x/resolver-next": [createTypeScriptImportResolver()]
|
|
46
|
+
},
|
|
47
|
+
rules: {
|
|
48
|
+
"import-x/export": "off",
|
|
49
|
+
"import-x/first": "error",
|
|
50
|
+
"import-x/namespace": "off",
|
|
51
|
+
"import-x/newline-after-import": "error",
|
|
52
|
+
"import-x/no-anonymous-default-export": ["error", {
|
|
53
|
+
allowArray: true,
|
|
54
|
+
allowObject: true
|
|
55
|
+
}],
|
|
56
|
+
"import-x/no-duplicates": "error",
|
|
57
|
+
"import-x/no-named-as-default": "off",
|
|
58
|
+
"import-x/no-named-as-default-member": "off",
|
|
59
|
+
"import-x/no-unresolved": "off",
|
|
60
|
+
"import-x/no-useless-path-segments": "error"
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
name: "@touchspot/eslint-config/rulesets/import-x/typescript",
|
|
64
|
+
files: ["**/*.{ts,tsx,mts,cts}"],
|
|
65
|
+
extends: [ImportX.flatConfigs.typescript],
|
|
66
|
+
rules: {
|
|
67
|
+
"import-x/consistent-type-specifier-style": "error",
|
|
68
|
+
"import-x/no-default-export": "error"
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
name: "@touchspot/eslint-config/rulesets/import-x/typescript/allow-default-export",
|
|
72
|
+
files: [
|
|
73
|
+
"*.config.ts",
|
|
74
|
+
"*.config.*.ts",
|
|
75
|
+
"**/*.d.*",
|
|
76
|
+
"**/global-setup.ts"
|
|
77
|
+
],
|
|
78
|
+
rules: { "import-x/no-default-export": "off" }
|
|
79
|
+
}, {
|
|
80
|
+
name: "@touchspot/eslint-config/rulesets/import-x/cjs",
|
|
81
|
+
files: ["**/*.{cjs,cts}"],
|
|
82
|
+
rules: { "import-x/no-import-module-exports": "error" }
|
|
83
|
+
});
|
|
84
|
+
const importXRulesetNext = () => defineConfig({
|
|
85
|
+
name: "@touchspot/eslint-config/rulesets/import-x/next",
|
|
86
|
+
files: ["{src/,}app/**/*.{ts,tsx}"],
|
|
87
|
+
rules: { "import-x/no-default-export": "off" }
|
|
88
|
+
});
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/env.ts
|
|
91
|
+
var env_exports = /* @__PURE__ */ __exportAll({
|
|
92
|
+
browser: () => browser,
|
|
93
|
+
node: () => node
|
|
94
|
+
});
|
|
95
|
+
const browser = ({ files = ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"] } = {}) => defineConfig({
|
|
96
|
+
name: "@touchspot/eslint-config/env/browser",
|
|
97
|
+
files: [...files],
|
|
98
|
+
languageOptions: { globals: { ...Globals.browser } }
|
|
99
|
+
});
|
|
100
|
+
const node = ({ files = ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"] } = {}) => defineConfig({
|
|
101
|
+
name: "@touchspot/eslint-config/env/node",
|
|
102
|
+
files: [...files],
|
|
103
|
+
languageOptions: { globals: { ...Globals.node } }
|
|
104
|
+
});
|
|
105
|
+
//#endregion
|
|
106
|
+
export { importXRulesetNext as a, importXRuleset as i, env_exports as n, checkFileRuleset as o, node as r, checkFileRulesetNext as s, browser as t };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=env-P7bBQuYF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-P7bBQuYF.mjs","names":[],"sources":["../src/rulesets/check-file.ts","../src/rulesets/import-x.ts","../src/env.ts"],"sourcesContent":["import CheckFile from \"eslint-plugin-check-file\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const checkFileRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/check-file\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tignores: [\"**/*.d.*\"],\n\t\tplugins: {\n\t\t\t\"check-file\": CheckFile,\n\t\t},\n\t\trules: {\n\t\t\t\"check-file/folder-naming-convention\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\t\"**\": \"KEBAB_CASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tignoreWords: [\".agents\", \".claude\", \".codex\", \".opencode\", \"__tests__\"],\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"check-file/filename-naming-convention\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\t\"**\": \"KEBAB_CASE\",\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tignoreMiddleExtensions: true,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t});\n\nexport const checkFileRulesetNext = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/check-file/next\",\n\t\tfiles: [\"{src/,}app/**/*.{ts,tsx}\"],\n\t\trules: {\n\t\t\t\"check-file/folder-naming-convention\": [\"error\", { \"**\": \"NEXT_JS_APP_ROUTER_CASE\" }],\n\t\t},\n\t});\n","import { createTypeScriptImportResolver } from \"eslint-import-resolver-typescript\";\nimport ImportX from \"eslint-plugin-import-x\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const importXRuleset = () =>\n\tdefineConfig(\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/rulesets/import-x\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\t\textends: [ImportX.flatConfigs.recommended],\n\t\t\tsettings: {\n\t\t\t\t\"import-x/internal-regex\": \"^#.+\",\n\t\t\t\t\"import-x/resolver-next\": [createTypeScriptImportResolver()],\n\t\t\t},\n\t\t\trules: {\n\t\t\t\t\"import-x/export\": \"off\",\n\t\t\t\t\"import-x/first\": \"error\",\n\t\t\t\t\"import-x/namespace\": \"off\",\n\t\t\t\t\"import-x/newline-after-import\": \"error\",\n\t\t\t\t\"import-x/no-anonymous-default-export\": [\"error\", { allowArray: true, allowObject: true }],\n\t\t\t\t\"import-x/no-duplicates\": \"error\",\n\t\t\t\t\"import-x/no-named-as-default\": \"off\",\n\t\t\t\t\"import-x/no-named-as-default-member\": \"off\",\n\t\t\t\t\"import-x/no-unresolved\": \"off\",\n\t\t\t\t\"import-x/no-useless-path-segments\": \"error\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/rulesets/import-x/typescript\",\n\t\t\tfiles: [\"**/*.{ts,tsx,mts,cts}\"],\n\t\t\textends: [ImportX.flatConfigs.typescript],\n\t\t\trules: {\n\t\t\t\t\"import-x/consistent-type-specifier-style\": \"error\",\n\t\t\t\t\"import-x/no-default-export\": \"error\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/rulesets/import-x/typescript/allow-default-export\",\n\t\t\tfiles: [\"*.config.ts\", \"*.config.*.ts\", \"**/*.d.*\", \"**/global-setup.ts\"],\n\t\t\trules: {\n\t\t\t\t\"import-x/no-default-export\": \"off\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/rulesets/import-x/cjs\",\n\t\t\tfiles: [\"**/*.{cjs,cts}\"],\n\t\t\trules: {\n\t\t\t\t\"import-x/no-import-module-exports\": \"error\",\n\t\t\t},\n\t\t},\n\t);\n\nexport const importXRulesetNext = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/import-x/next\",\n\t\tfiles: [\"{src/,}app/**/*.{ts,tsx}\"],\n\t\trules: {\n\t\t\t\"import-x/no-default-export\": \"off\",\n\t\t},\n\t});\n","import { defineConfig } from \"eslint/config\";\nimport Globals from \"globals\";\n\nexport const browser = ({\n\tfiles = [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n}: {\n\treadonly files?: readonly string[];\n} = {}) =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/env/browser\",\n\t\tfiles: [...files],\n\t\tlanguageOptions: {\n\t\t\tglobals: {\n\t\t\t\t...Globals.browser,\n\t\t\t},\n\t\t},\n\t});\n\nexport const node = ({\n\tfiles = [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n}: {\n\treadonly files?: readonly string[];\n} = {}) =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/env/node\",\n\t\tfiles: [...files],\n\t\tlanguageOptions: {\n\t\t\tglobals: {\n\t\t\t\t...Globals.node,\n\t\t\t},\n\t\t},\n\t});\n"],"mappings":";;;;;;;AAGA,MAAa,yBACZ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,sCAAsC;CAC9C,SAAS,CAAC,UAAU;CACpB,SAAS,EACR,cAAc,UACf;CACA,OAAO;EACN,uCAAuC;GACtC;GACA,EACC,MAAM,aACP;GACA,EACC,aAAa;IAAC;IAAW;IAAW;IAAU;IAAa;GAAW,EACvE;EACD;EACA,yCAAyC;GACxC;GACA,EACC,MAAM,aACP;GACA,EACC,wBAAwB,KACzB;EACD;CACD;AACD,CAAC;AAEF,MAAa,6BACZ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,0BAA0B;CAClC,OAAO,EACN,uCAAuC,CAAC,SAAS,EAAE,MAAM,0BAA0B,CAAC,EACrF;AACD,CAAC;;;ACpCF,MAAa,uBACZ,aACC;CACC,MAAM;CACN,OAAO,CAAC,sCAAsC;CAC9C,SAAS,CAAC,QAAQ,YAAY,WAAW;CACzC,UAAU;EACT,2BAA2B;EAC3B,0BAA0B,CAAC,+BAA+B,CAAC;CAC5D;CACA,OAAO;EACN,mBAAmB;EACnB,kBAAkB;EAClB,sBAAsB;EACtB,iCAAiC;EACjC,wCAAwC,CAAC,SAAS;GAAE,YAAY;GAAM,aAAa;EAAK,CAAC;EACzF,0BAA0B;EAC1B,gCAAgC;EAChC,uCAAuC;EACvC,0BAA0B;EAC1B,qCAAqC;CACtC;AACD,GACA;CACC,MAAM;CACN,OAAO,CAAC,uBAAuB;CAC/B,SAAS,CAAC,QAAQ,YAAY,UAAU;CACxC,OAAO;EACN,4CAA4C;EAC5C,8BAA8B;CAC/B;AACD,GACA;CACC,MAAM;CACN,OAAO;EAAC;EAAe;EAAiB;EAAY;CAAoB;CACxE,OAAO,EACN,8BAA8B,MAC/B;AACD,GACA;CACC,MAAM;CACN,OAAO,CAAC,gBAAgB;CACxB,OAAO,EACN,qCAAqC,QACtC;AACD,CACD;AAED,MAAa,2BACZ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,0BAA0B;CAClC,OAAO,EACN,8BAA8B,MAC/B;AACD,CAAC;;;;;;;ACxDF,MAAa,WAAW,EACvB,QAAQ,CAAC,sCAAsC,MAG5C,CAAC,MACJ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,GAAG,KAAK;CAChB,iBAAiB,EAChB,SAAS,EACR,GAAG,QAAQ,QACZ,EACD;AACD,CAAC;AAEF,MAAa,QAAQ,EACpB,QAAQ,CAAC,sCAAsC,MAG5C,CAAC,MACJ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,GAAG,KAAK;CAChB,iBAAiB,EAChB,SAAS,EACR,GAAG,QAAQ,KACZ,EACD;AACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.d.mts","names":[],"sources":["../../src/frameworks/next.ts"],"mappings":";;;cASa,IAAA,QAAW,WACsF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { a as importXRulesetNext, r as node, s as checkFileRulesetNext, t as browser } from "../env-P7bBQuYF.mjs";
|
|
2
|
+
import { t as react } from "../react-DgMKdgTt.mjs";
|
|
3
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
4
|
+
import Next from "@next/eslint-plugin-next";
|
|
5
|
+
//#region src/rulesets/next.ts
|
|
6
|
+
const nextRuleset = () => defineConfig(globalIgnores([".next/", "out/"]), {
|
|
7
|
+
name: "@touchspot/eslint-config/rulesets/next",
|
|
8
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
9
|
+
extends: [Next.configs["core-web-vitals"]]
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/frameworks/next.ts
|
|
13
|
+
const next = () => defineConfig(browser(), node(), react(), nextRuleset(), checkFileRulesetNext(), importXRulesetNext());
|
|
14
|
+
//#endregion
|
|
15
|
+
export { next as default };
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=next.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.mjs","names":["env.browser","env.node"],"sources":["../../src/rulesets/next.ts","../../src/frameworks/next.ts"],"sourcesContent":["import Next from \"@next/eslint-plugin-next\";\nimport { defineConfig, globalIgnores } from \"eslint/config\";\n\nexport const nextRuleset = () =>\n\tdefineConfig(globalIgnores([\".next/\", \"out/\"]), {\n\t\tname: \"@touchspot/eslint-config/rulesets/next\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\textends: [Next.configs[\"core-web-vitals\"]],\n\t});\n","import { defineConfig } from \"eslint/config\";\n\nimport * as env from \"#src/env.js\";\nimport { react } from \"#src/frameworks/react.js\";\nimport { checkFileRulesetNext } from \"#src/rulesets/check-file.js\";\nimport { importXRulesetNext } from \"#src/rulesets/import-x.js\";\nimport { nextRuleset } from \"#src/rulesets/next.js\";\nimport type { ConfigArray } from \"#src/types.js\";\n\nexport const next = (): ConfigArray =>\n\tdefineConfig(env.browser(), env.node(), react(), nextRuleset(), checkFileRulesetNext(), importXRulesetNext());\n"],"mappings":";;;;;AAGA,MAAa,oBACZ,aAAa,cAAc,CAAC,UAAU,MAAM,CAAC,GAAG;CAC/C,MAAM;CACN,OAAO,CAAC,sCAAsC;CAC9C,SAAS,CAAC,KAAK,QAAQ,kBAAkB;AAC1C,CAAC;;;ACCF,MAAa,aACZ,aAAaA,QAAY,GAAGC,KAAS,GAAG,MAAM,GAAG,YAAY,GAAG,qBAAqB,GAAG,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.d.mts","names":[],"sources":["../../src/frameworks/react.ts"],"mappings":";;;cAOa,KAAA,QAAY,WAA0F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { n as ConfigArray } from "../types-DzD7blyE.mjs";
|
|
2
|
+
import { ObjectKeyMatcher, ObjectValueMatcher, Selector, StringMatcher } from "eslint-plugin-better-tailwindcss/api/types";
|
|
3
|
+
|
|
4
|
+
//#region src/frameworks/tailwindcss.d.ts
|
|
5
|
+
declare namespace tailwindcss {
|
|
6
|
+
type Matcher = ObjectKeyMatcher | ObjectValueMatcher | StringMatcher;
|
|
7
|
+
type CommonOptions = {
|
|
8
|
+
readonly selectors?: readonly Selector[] | undefined;
|
|
9
|
+
readonly attributes?: readonly Matcher[] | undefined;
|
|
10
|
+
readonly callees?: readonly Matcher[] | undefined;
|
|
11
|
+
readonly variables?: readonly Matcher[] | undefined;
|
|
12
|
+
readonly tags?: readonly Matcher[] | undefined;
|
|
13
|
+
};
|
|
14
|
+
type V4Options = {
|
|
15
|
+
readonly version?: 4;
|
|
16
|
+
readonly entry: string;
|
|
17
|
+
};
|
|
18
|
+
type V3Options = {
|
|
19
|
+
readonly version: 3;
|
|
20
|
+
readonly config?: string;
|
|
21
|
+
};
|
|
22
|
+
type Options = CommonOptions & (V3Options | V4Options);
|
|
23
|
+
}
|
|
24
|
+
declare const tailwindcss: (options: tailwindcss.Options) => ConfigArray;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { tailwindcss as default };
|
|
27
|
+
//# sourceMappingURL=tailwindcss.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwindcss.d.mts","names":[],"sources":["../../src/frameworks/tailwindcss.ts"],"mappings":";;;;kBAWyB,WAAA;EAAA,KACnB,OAAA,GAAU,gBAAA,GAAmB,kBAAA,GAAqB,aAAA;EAAA,KAElD,aAAA;IAAA,SACK,SAAA,YAAqB,QAAA;IAAA,SACrB,UAAA,YAAsB,OAAA;IAAA,SACtB,OAAA,YAAmB,OAAA;IAAA,SACnB,SAAA,YAAqB,OAAA;IAAA,SACrB,IAAA,YAAgB,OAAA;EAAA;EAAA,KAGrB,SAAA;IAAA,SACK,OAAA;IAAA,SACA,KAAA;EAAA;EAAA,KAGL,SAAA;IAAA,SACK,OAAA;IAAA,SACA,MAAA;EAAA;EAAA,KAGL,OAAA,GAAU,aAAA,IAAiB,SAAA,GAAY,SAAA;AAAA;AAAA,cAGhC,WAAA,GAAe,OAAA,EAAS,WAAA,CAAY,OAAA,KAAU,WACV"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { defineConfig } from "eslint/config";
|
|
2
|
+
import BetterTailwindCSS from "eslint-plugin-better-tailwindcss";
|
|
3
|
+
//#region src/rulesets/better-tailwindcss.ts
|
|
4
|
+
const betterTailwindCSSRulesets = ({ attributes, callees, selectors, variables, tags, ...options }) => defineConfig({
|
|
5
|
+
name: "@touchspot/eslint-config/rulesets/better-tailwindcss",
|
|
6
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
7
|
+
plugins: { "better-tailwindcss": BetterTailwindCSS },
|
|
8
|
+
settings: { "better-tailwindcss": {
|
|
9
|
+
...options.version === 3 ? { tailwindConfig: options.config ?? "tailwind.config.js" } : { entryPoint: options.entry },
|
|
10
|
+
...selectors == null ? {
|
|
11
|
+
...attributes != null && { attributes },
|
|
12
|
+
...callees != null && { callees },
|
|
13
|
+
...variables != null && { variables },
|
|
14
|
+
...tags != null && { tags }
|
|
15
|
+
} : { selectors }
|
|
16
|
+
} },
|
|
17
|
+
rules: {
|
|
18
|
+
"better-tailwindcss/enforce-logical-properties": "error",
|
|
19
|
+
"better-tailwindcss/enforce-shorthand-classes": "error",
|
|
20
|
+
"better-tailwindcss/no-deprecated-classes": "error",
|
|
21
|
+
"better-tailwindcss/no-duplicate-classes": "error",
|
|
22
|
+
"better-tailwindcss/no-unknown-classes": "error",
|
|
23
|
+
"better-tailwindcss/no-unnecessary-whitespace": ["error", { allowMultiline: false }],
|
|
24
|
+
...options.version === 3 ? {
|
|
25
|
+
"better-tailwindcss/enforce-consistent-important-position": "error",
|
|
26
|
+
"better-tailwindcss/enforce-consistent-variable-syntax": "error"
|
|
27
|
+
} : {
|
|
28
|
+
"better-tailwindcss/enforce-canonical-classes": "error",
|
|
29
|
+
"better-tailwindcss/no-conflicting-classes": "error"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region src/frameworks/tailwindcss.ts
|
|
35
|
+
const tailwindcss = (options) => defineConfig(betterTailwindCSSRulesets(options));
|
|
36
|
+
//#endregion
|
|
37
|
+
export { tailwindcss as default };
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=tailwindcss.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tailwindcss.mjs","names":[],"sources":["../../src/rulesets/better-tailwindcss.ts","../../src/frameworks/tailwindcss.ts"],"sourcesContent":["import BetterTailwindCSS from \"eslint-plugin-better-tailwindcss\";\nimport { defineConfig } from \"eslint/config\";\n\nimport type { tailwindcss } from \"#src/frameworks/tailwindcss.js\";\n\nexport const betterTailwindCSSRulesets = ({\n\tattributes,\n\tcallees,\n\tselectors,\n\tvariables,\n\ttags,\n\t...options\n}: tailwindcss.Options) =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/better-tailwindcss\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tplugins: {\n\t\t\t\"better-tailwindcss\": BetterTailwindCSS,\n\t\t},\n\t\tsettings: {\n\t\t\t\"better-tailwindcss\": {\n\t\t\t\t...(options.version === 3\n\t\t\t\t\t? { tailwindConfig: options.config ?? \"tailwind.config.js\" }\n\t\t\t\t\t: { entryPoint: options.entry }),\n\t\t\t\t...(selectors == null\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...(attributes != null && { attributes }),\n\t\t\t\t\t\t\t...(callees != null && { callees }),\n\t\t\t\t\t\t\t...(variables != null && { variables }),\n\t\t\t\t\t\t\t...(tags != null && { tags }),\n\t\t\t\t\t\t}\n\t\t\t\t\t: { selectors }),\n\t\t\t},\n\t\t},\n\t\trules: {\n\t\t\t\"better-tailwindcss/enforce-logical-properties\": \"error\",\n\t\t\t\"better-tailwindcss/enforce-shorthand-classes\": \"error\",\n\t\t\t\"better-tailwindcss/no-deprecated-classes\": \"error\",\n\t\t\t\"better-tailwindcss/no-duplicate-classes\": \"error\",\n\t\t\t\"better-tailwindcss/no-unknown-classes\": \"error\",\n\t\t\t\"better-tailwindcss/no-unnecessary-whitespace\": [\"error\", { allowMultiline: false }],\n\t\t\t...(options.version === 3\n\t\t\t\t? {\n\t\t\t\t\t\t\"better-tailwindcss/enforce-consistent-important-position\": \"error\",\n\t\t\t\t\t\t\"better-tailwindcss/enforce-consistent-variable-syntax\": \"error\",\n\t\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\t\t\"better-tailwindcss/enforce-canonical-classes\": \"error\",\n\t\t\t\t\t\t\"better-tailwindcss/no-conflicting-classes\": \"error\",\n\t\t\t\t\t}),\n\t\t},\n\t});\n","import type {\n\tObjectKeyMatcher,\n\tObjectValueMatcher,\n\tSelector,\n\tStringMatcher,\n} from \"eslint-plugin-better-tailwindcss/api/types\";\nimport { defineConfig } from \"eslint/config\";\n\nimport { betterTailwindCSSRulesets } from \"#src/rulesets/better-tailwindcss.js\";\nimport type { ConfigArray } from \"#src/types.js\";\n\nexport declare namespace tailwindcss {\n\ttype Matcher = ObjectKeyMatcher | ObjectValueMatcher | StringMatcher;\n\n\ttype CommonOptions = {\n\t\treadonly selectors?: readonly Selector[] | undefined;\n\t\treadonly attributes?: readonly Matcher[] | undefined;\n\t\treadonly callees?: readonly Matcher[] | undefined;\n\t\treadonly variables?: readonly Matcher[] | undefined;\n\t\treadonly tags?: readonly Matcher[] | undefined;\n\t};\n\n\ttype V4Options = {\n\t\treadonly version?: 4;\n\t\treadonly entry: string;\n\t};\n\n\ttype V3Options = {\n\t\treadonly version: 3;\n\t\treadonly config?: string;\n\t};\n\n\ttype Options = CommonOptions & (V3Options | V4Options);\n}\n\nexport const tailwindcss = (options: tailwindcss.Options): ConfigArray =>\n\tdefineConfig(betterTailwindCSSRulesets(options));\n"],"mappings":";;;AAKA,MAAa,6BAA6B,EACzC,YACA,SACA,WACA,WACA,MACA,GAAG,cAEH,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,sCAAsC;CAC9C,SAAS,EACR,sBAAsB,kBACvB;CACA,UAAU,EACT,sBAAsB;EACrB,GAAI,QAAQ,YAAY,IACrB,EAAE,gBAAgB,QAAQ,UAAU,qBAAqB,IACzD,EAAE,YAAY,QAAQ,MAAM;EAC/B,GAAI,aAAa,OACd;GACA,GAAI,cAAc,QAAQ,EAAE,WAAW;GACvC,GAAI,WAAW,QAAQ,EAAE,QAAQ;GACjC,GAAI,aAAa,QAAQ,EAAE,UAAU;GACrC,GAAI,QAAQ,QAAQ,EAAE,KAAK;EAC5B,IACC,EAAE,UAAU;CAChB,EACD;CACA,OAAO;EACN,iDAAiD;EACjD,gDAAgD;EAChD,4CAA4C;EAC5C,2CAA2C;EAC3C,yCAAyC;EACzC,gDAAgD,CAAC,SAAS,EAAE,gBAAgB,MAAM,CAAC;EACnF,GAAI,QAAQ,YAAY,IACrB;GACA,4DAA4D;GAC5D,yDAAyD;EAC1D,IACC;GACA,gDAAgD;GAChD,6CAA6C;EAC9C;CACH;AACD,CAAC;;;AChBF,MAAa,eAAe,YAC3B,aAAa,0BAA0B,OAAO,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { defineConfig } from "eslint/config";
|
|
2
|
+
import Functional from "eslint-plugin-functional";
|
|
3
|
+
//#region src/rulesets/functional.ts
|
|
4
|
+
const functionalRuleset = () => defineConfig({
|
|
5
|
+
name: "@touchspot/eslint-config/rulesets/functional",
|
|
6
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
7
|
+
ignores: ["**/*.d.*"],
|
|
8
|
+
plugins: { functional: Functional },
|
|
9
|
+
rules: {
|
|
10
|
+
"functional/immutable-data": ["error", {
|
|
11
|
+
ignoreImmediateMutation: true,
|
|
12
|
+
ignoreNonConstDeclarations: { treatParametersAsConst: true }
|
|
13
|
+
}],
|
|
14
|
+
"functional/prefer-property-signatures": "error",
|
|
15
|
+
"functional/prefer-readonly-type": "error"
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const functionalRulesetReact = () => defineConfig({
|
|
19
|
+
name: "@touchspot/eslint-config/rulesets/functional/react",
|
|
20
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
21
|
+
ignores: ["**/*.d.*"],
|
|
22
|
+
rules: { "functional/immutable-data": ["error", {
|
|
23
|
+
ignoreImmediateMutation: true,
|
|
24
|
+
ignoreNonConstDeclarations: { treatParametersAsConst: true },
|
|
25
|
+
ignoreAccessorPattern: [
|
|
26
|
+
"ref.current",
|
|
27
|
+
"*Ref.current",
|
|
28
|
+
"*Atom.*"
|
|
29
|
+
]
|
|
30
|
+
}] }
|
|
31
|
+
});
|
|
32
|
+
const autoDisableTypeAwareFunctionalRules = (options) => {
|
|
33
|
+
if (options.enableTypeAwareRules === false) return defineConfig({
|
|
34
|
+
name: "@touchspot/eslint-config/rulesets/functional/disable-type-aware/all",
|
|
35
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
36
|
+
extends: [Functional.configs.disableTypeChecked]
|
|
37
|
+
});
|
|
38
|
+
if (options.enableTypeAwareRules?.js == null) return defineConfig({
|
|
39
|
+
name: "@touchspot/eslint-config/rulesets/functional/disable-type-aware/js",
|
|
40
|
+
files: ["**/*.{js,jsx,mjs,cjs}"],
|
|
41
|
+
extends: [Functional.configs.disableTypeChecked]
|
|
42
|
+
});
|
|
43
|
+
return [];
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { functionalRuleset as n, functionalRulesetReact as r, autoDisableTypeAwareFunctionalRules as t };
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=functional-D_M95gZL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functional-D_M95gZL.mjs","names":[],"sources":["../src/rulesets/functional.ts"],"sourcesContent":["import Functional from \"eslint-plugin-functional\";\nimport { defineConfig } from \"eslint/config\";\n\nimport type { config } from \"#src/config.js\";\n\nexport const functionalRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/functional\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tignores: [\"**/*.d.*\"],\n\t\tplugins: {\n\t\t\tfunctional: Functional,\n\t\t},\n\t\trules: {\n\t\t\t\"functional/immutable-data\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\tignoreImmediateMutation: true,\n\t\t\t\t\tignoreNonConstDeclarations: { treatParametersAsConst: true },\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"functional/prefer-property-signatures\": \"error\",\n\t\t\t\"functional/prefer-readonly-type\": \"error\",\n\t\t},\n\t});\n\nexport const functionalRulesetReact = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/functional/react\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tignores: [\"**/*.d.*\"],\n\t\trules: {\n\t\t\t\"functional/immutable-data\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\tignoreImmediateMutation: true,\n\t\t\t\t\tignoreNonConstDeclarations: { treatParametersAsConst: true },\n\t\t\t\t\tignoreAccessorPattern: [\"ref.current\", \"*Ref.current\", \"*Atom.*\"],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t});\n\nexport const autoDisableTypeAwareFunctionalRules = (options: config.Options) => {\n\tif (options.enableTypeAwareRules === false) {\n\t\treturn defineConfig({\n\t\t\tname: \"@touchspot/eslint-config/rulesets/functional/disable-type-aware/all\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\t\textends: [Functional.configs.disableTypeChecked],\n\t\t});\n\t}\n\tif (options.enableTypeAwareRules?.js == null) {\n\t\treturn defineConfig({\n\t\t\tname: \"@touchspot/eslint-config/rulesets/functional/disable-type-aware/js\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs}\"],\n\t\t\textends: [Functional.configs.disableTypeChecked],\n\t\t});\n\t}\n\treturn [];\n};\n"],"mappings":";;;AAKA,MAAa,0BACZ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,sCAAsC;CAC9C,SAAS,CAAC,UAAU;CACpB,SAAS,EACR,YAAY,WACb;CACA,OAAO;EACN,6BAA6B,CAC5B,SACA;GACC,yBAAyB;GACzB,4BAA4B,EAAE,wBAAwB,KAAK;EAC5D,CACD;EACA,yCAAyC;EACzC,mCAAmC;CACpC;AACD,CAAC;AAEF,MAAa,+BACZ,aAAa;CACZ,MAAM;CACN,OAAO,CAAC,sCAAsC;CAC9C,SAAS,CAAC,UAAU;CACpB,OAAO,EACN,6BAA6B,CAC5B,SACA;EACC,yBAAyB;EACzB,4BAA4B,EAAE,wBAAwB,KAAK;EAC3D,uBAAuB;GAAC;GAAe;GAAgB;EAAS;CACjE,CACD,EACD;AACD,CAAC;AAEF,MAAa,uCAAuC,YAA4B;CAC/E,IAAI,QAAQ,yBAAyB,OACpC,OAAO,aAAa;EACnB,MAAM;EACN,OAAO,CAAC,sCAAsC;EAC9C,SAAS,CAAC,WAAW,QAAQ,kBAAkB;CAChD,CAAC;CAEF,IAAI,QAAQ,sBAAsB,MAAM,MACvC,OAAO,aAAa;EACnB,MAAM;EACN,OAAO,CAAC,uBAAuB;EAC/B,SAAS,CAAC,WAAW,QAAQ,kBAAkB;CAChD,CAAC;CAEF,OAAO,CAAC;AACT"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { n as ConfigArray, t as Config } from "./types-DzD7blyE.mjs";
|
|
2
|
+
import { ConfigWithExtendsArray } from "@eslint/config-helpers";
|
|
3
|
+
|
|
4
|
+
//#region src/config.d.ts
|
|
5
|
+
declare namespace config {
|
|
6
|
+
type Options = {
|
|
7
|
+
readonly rootDir: string;
|
|
8
|
+
readonly tsconfig?: string;
|
|
9
|
+
readonly enableTypeAwareRules?: {
|
|
10
|
+
readonly js?: "all" | "auto";
|
|
11
|
+
} | false;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
declare const config: (options: config.Options, ...addons: ConfigWithExtendsArray) => ConfigArray;
|
|
15
|
+
declare namespace env_d_exports {
|
|
16
|
+
export { browser, node };
|
|
17
|
+
}
|
|
18
|
+
declare const browser: ({
|
|
19
|
+
files
|
|
20
|
+
}?: {
|
|
21
|
+
readonly files?: readonly string[];
|
|
22
|
+
}) => import("eslint/config").Config[];
|
|
23
|
+
declare const node: ({
|
|
24
|
+
files
|
|
25
|
+
}?: {
|
|
26
|
+
readonly files?: readonly string[];
|
|
27
|
+
}) => import("eslint/config").Config[];
|
|
28
|
+
//#endregion
|
|
29
|
+
export { type Config, type ConfigArray, config as default, env_d_exports as env };
|
|
30
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config.ts","../src/env.ts"],"mappings":";;;;kBAeyB,MAAA;EAAA,KACnB,OAAA;IAAA,SACK,OAAA;IAAA,SACA,QAAA;IAAA,SACA,oBAAA;MAAA,SAAkC,EAAA;IAAA;EAAA;AAAA;AAAA,cAIhC,MAAA,GAAU,OAAA,EAAS,MAAA,CAAO,OAAA,KAAY,MAAA,EAAQ,sBAAA,KAAyB,WAAA;AAAA;;;cCpBvE,OAAA;EAAW;AAAA;EAAA,SAGd,KAAA;AAAA,8BACJ,MAAA;AAAA,cAWO,IAAA;EAAQ;AAAA;EAAA,SAGX,KAAA;AAAA,8BACJ,MAAA"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { i as importXRuleset, n as env_exports, o as checkFileRuleset } from "./env-P7bBQuYF.mjs";
|
|
2
|
+
import { n as functionalRuleset, t as autoDisableTypeAwareFunctionalRules } from "./functional-D_M95gZL.mjs";
|
|
3
|
+
import Prettier from "eslint-config-prettier";
|
|
4
|
+
import { defineConfig, globalIgnores } from "eslint/config";
|
|
5
|
+
import ESLint from "@eslint/js";
|
|
6
|
+
import { fixupPluginRules } from "@eslint/compat";
|
|
7
|
+
import NoRelativeImportPaths from "eslint-plugin-no-relative-import-paths";
|
|
8
|
+
import Perfectionist from "eslint-plugin-perfectionist";
|
|
9
|
+
import * as TSESLint from "typescript-eslint";
|
|
10
|
+
import Unicorn from "eslint-plugin-unicorn";
|
|
11
|
+
import UnusedImports from "eslint-plugin-unused-imports";
|
|
12
|
+
//#region src/rulesets/eslint.ts
|
|
13
|
+
const eslintRuleset = () => defineConfig({
|
|
14
|
+
name: "@touchspot/eslint-config/rulesets/eslint",
|
|
15
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
16
|
+
extends: [ESLint.configs.recommended],
|
|
17
|
+
rules: {
|
|
18
|
+
"arrow-body-style": ["error"],
|
|
19
|
+
eqeqeq: [
|
|
20
|
+
"error",
|
|
21
|
+
"always",
|
|
22
|
+
{ null: "never" }
|
|
23
|
+
],
|
|
24
|
+
"max-params": "error",
|
|
25
|
+
"no-console": ["warn", { allow: ["warn", "error"] }],
|
|
26
|
+
"no-lone-blocks": "error",
|
|
27
|
+
"no-lonely-if": "error",
|
|
28
|
+
"no-loop-func": "error",
|
|
29
|
+
"no-param-reassign": "error",
|
|
30
|
+
"no-restricted-imports": ["error", { patterns: [{
|
|
31
|
+
group: ["**/_*", "!./_*"],
|
|
32
|
+
message: "Do not import directory-private module."
|
|
33
|
+
}] }],
|
|
34
|
+
"no-useless-rename": "error",
|
|
35
|
+
"object-shorthand": "error",
|
|
36
|
+
"prefer-destructuring": "error"
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region src/rulesets/no-relative-import-paths.ts
|
|
41
|
+
const noRelativeImportPathsRuleset = () => defineConfig({
|
|
42
|
+
name: "@touchspot/eslint-config/rulesets/no-relative-import-paths",
|
|
43
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
44
|
+
ignores: ["**/*.d.*"],
|
|
45
|
+
plugins: { "no-relative-import-paths": fixupPluginRules(NoRelativeImportPaths) },
|
|
46
|
+
rules: { "no-relative-import-paths/no-relative-import-paths": ["error", { allowSameFolder: true }] }
|
|
47
|
+
});
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/rulesets/perfectionist.ts
|
|
50
|
+
const perfectionistRuleset = () => defineConfig({
|
|
51
|
+
name: "@touchspot/eslint-config/rulesets/perfectionist",
|
|
52
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
53
|
+
plugins: { perfectionist: Perfectionist },
|
|
54
|
+
rules: {
|
|
55
|
+
"perfectionist/sort-exports": ["error", { type: "natural" }],
|
|
56
|
+
"perfectionist/sort-imports": ["error", {
|
|
57
|
+
type: "natural",
|
|
58
|
+
groups: [
|
|
59
|
+
"side-effect",
|
|
60
|
+
"builtin",
|
|
61
|
+
"external",
|
|
62
|
+
"subpath",
|
|
63
|
+
[
|
|
64
|
+
"parent",
|
|
65
|
+
"sibling",
|
|
66
|
+
"index"
|
|
67
|
+
],
|
|
68
|
+
"unknown"
|
|
69
|
+
]
|
|
70
|
+
}],
|
|
71
|
+
"perfectionist/sort-named-exports": ["error", { type: "natural" }],
|
|
72
|
+
"perfectionist/sort-named-imports": ["error", { type: "natural" }]
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/rulesets/tseslint.ts
|
|
77
|
+
const tseslintRuleset = (options) => defineConfig({
|
|
78
|
+
name: "@touchspot/eslint-config/rulesets/tseslint",
|
|
79
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
80
|
+
extends: [TSESLint.configs.base, TSESLint.configs.eslintRecommended],
|
|
81
|
+
languageOptions: { parserOptions: {
|
|
82
|
+
tsconfigRootDir: options.rootDir,
|
|
83
|
+
projectService: options.enableTypeAwareRules === false ? false : {
|
|
84
|
+
defaultProject: options.tsconfig ?? "tsconfig.json",
|
|
85
|
+
allowDefaultProject: options.enableTypeAwareRules?.js === "auto" ? ["*.{js,jsx,mjs,cjs}"] : []
|
|
86
|
+
}
|
|
87
|
+
} }
|
|
88
|
+
}, {
|
|
89
|
+
name: "@touchspot/eslint-config/rulesets/tseslint/base",
|
|
90
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
91
|
+
ignores: ["**/*.d.*"],
|
|
92
|
+
extends: [TSESLint.configs.strictTypeChecked, TSESLint.configs.stylisticTypeChecked],
|
|
93
|
+
rules: {
|
|
94
|
+
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
|
|
95
|
+
"@typescript-eslint/consistent-type-exports": "error",
|
|
96
|
+
"@typescript-eslint/consistent-type-imports": "error",
|
|
97
|
+
"@typescript-eslint/explicit-member-accessibility": ["error", { accessibility: "no-public" }],
|
|
98
|
+
"@typescript-eslint/naming-convention": [
|
|
99
|
+
"error",
|
|
100
|
+
{
|
|
101
|
+
selector: "default",
|
|
102
|
+
format: [
|
|
103
|
+
"camelCase",
|
|
104
|
+
"PascalCase",
|
|
105
|
+
"UPPER_CASE"
|
|
106
|
+
],
|
|
107
|
+
leadingUnderscore: "forbid",
|
|
108
|
+
trailingUnderscore: "forbid"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
selector: ["parameter", "variable"],
|
|
112
|
+
format: [
|
|
113
|
+
"camelCase",
|
|
114
|
+
"PascalCase",
|
|
115
|
+
"UPPER_CASE"
|
|
116
|
+
],
|
|
117
|
+
leadingUnderscore: "allow",
|
|
118
|
+
trailingUnderscore: "forbid"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
selector: "typeLike",
|
|
122
|
+
format: ["PascalCase", "UPPER_CASE"],
|
|
123
|
+
leadingUnderscore: "forbid",
|
|
124
|
+
trailingUnderscore: "forbid"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
selector: "default",
|
|
128
|
+
modifiers: ["requiresQuotes"],
|
|
129
|
+
format: null
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
selector: "property",
|
|
133
|
+
filter: {
|
|
134
|
+
regex: "^(_tag|__typename)$",
|
|
135
|
+
match: true
|
|
136
|
+
},
|
|
137
|
+
format: null
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"@typescript-eslint/no-namespace": ["error", { allowDeclarations: true }],
|
|
141
|
+
"@typescript-eslint/no-import-type-side-effects": "error",
|
|
142
|
+
"no-shadow": "off",
|
|
143
|
+
"@typescript-eslint/no-shadow": ["error", { allow: ["_", "it"] }],
|
|
144
|
+
"@typescript-eslint/no-unnecessary-condition": ["error", { allowConstantLoopConditions: true }],
|
|
145
|
+
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
|
146
|
+
"@typescript-eslint/no-unused-vars": "off",
|
|
147
|
+
"@typescript-eslint/no-useless-empty-export": "error",
|
|
148
|
+
"@typescript-eslint/parameter-properties": "error",
|
|
149
|
+
"@typescript-eslint/prefer-nullish-coalescing": ["error", { ignoreTernaryTests: true }],
|
|
150
|
+
"@typescript-eslint/prefer-readonly": "error",
|
|
151
|
+
"@typescript-eslint/restrict-template-expressions": ["error", { allowNumber: true }],
|
|
152
|
+
"@typescript-eslint/return-await": ["error", "always"],
|
|
153
|
+
"@typescript-eslint/strict-boolean-expressions": ["error", {
|
|
154
|
+
allowString: false,
|
|
155
|
+
allowNumber: false,
|
|
156
|
+
allowNullableObject: false
|
|
157
|
+
}],
|
|
158
|
+
"@typescript-eslint/switch-exhaustiveness-check": "error"
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
const autoDisableTypeAwareTseslintRules = (options) => {
|
|
162
|
+
if (options.enableTypeAwareRules === false) return defineConfig({
|
|
163
|
+
name: "@touchspot/eslint-config/rulesets/tseslint/disable-type-aware/all",
|
|
164
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
165
|
+
extends: [TSESLint.configs.disableTypeChecked]
|
|
166
|
+
});
|
|
167
|
+
if (options.enableTypeAwareRules?.js == null) return defineConfig({
|
|
168
|
+
name: "@touchspot/eslint-config/rulesets/tseslint/disable-type-aware/js",
|
|
169
|
+
files: ["**/*.{js,jsx,mjs,cjs}"],
|
|
170
|
+
extends: [TSESLint.configs.disableTypeChecked]
|
|
171
|
+
});
|
|
172
|
+
return [];
|
|
173
|
+
};
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/rulesets/unicorn.ts
|
|
176
|
+
const unicornRuleset = () => defineConfig({
|
|
177
|
+
name: "@touchspot/eslint-config/rulesets/unicorn",
|
|
178
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
179
|
+
extends: [Unicorn.configs.recommended],
|
|
180
|
+
rules: {
|
|
181
|
+
"unicorn/consistent-function-scoping": ["error", { checkArrowFunctions: false }],
|
|
182
|
+
"unicorn/filename-case": "off",
|
|
183
|
+
"unicorn/no-array-callback-reference": "off",
|
|
184
|
+
"unicorn/no-array-reduce": "off",
|
|
185
|
+
"unicorn/no-null": "off",
|
|
186
|
+
"unicorn/prefer-object-from-entries": "off",
|
|
187
|
+
"unicorn/prevent-abbreviations": "off"
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
//#endregion
|
|
191
|
+
//#region src/rulesets/unused-imports.ts
|
|
192
|
+
const unusedImportsRuleset = () => defineConfig({
|
|
193
|
+
name: "@touchspot/eslint-config/rulesets/unused-imports",
|
|
194
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
195
|
+
plugins: { "unused-imports": UnusedImports },
|
|
196
|
+
rules: {
|
|
197
|
+
"no-unused-vars": "off",
|
|
198
|
+
"unused-imports/no-unused-imports": "error",
|
|
199
|
+
"unused-imports/no-unused-vars": ["error", {
|
|
200
|
+
args: "after-used",
|
|
201
|
+
argsIgnorePattern: "^_",
|
|
202
|
+
vars: "all",
|
|
203
|
+
varsIgnorePattern: "^_"
|
|
204
|
+
}]
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
//#endregion
|
|
208
|
+
//#region src/config.ts
|
|
209
|
+
const config = (options, ...addons) => defineConfig(globalIgnores([
|
|
210
|
+
".cache/",
|
|
211
|
+
".turbo/",
|
|
212
|
+
"coverage/",
|
|
213
|
+
"dist/"
|
|
214
|
+
]), {
|
|
215
|
+
name: "@touchspot/eslint-config/linter",
|
|
216
|
+
linterOptions: { reportUnusedDisableDirectives: "error" }
|
|
217
|
+
}, {
|
|
218
|
+
name: "@touchspot/eslint-config/language",
|
|
219
|
+
files: ["**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}"],
|
|
220
|
+
languageOptions: { ecmaVersion: "latest" }
|
|
221
|
+
}, {
|
|
222
|
+
name: "@touchspot/eslint-config/language/esm",
|
|
223
|
+
files: ["**/*.{js,jsx,mjs,ts,tsx,mts}"],
|
|
224
|
+
languageOptions: { sourceType: "module" }
|
|
225
|
+
}, {
|
|
226
|
+
name: "@touchspot/eslint-config/language/cjs",
|
|
227
|
+
files: ["**/*.{cjs,cts}"],
|
|
228
|
+
languageOptions: { sourceType: "commonjs" }
|
|
229
|
+
}, eslintRuleset(), tseslintRuleset(options), unicornRuleset(), importXRuleset(), unusedImportsRuleset(), noRelativeImportPathsRuleset(), functionalRuleset(), perfectionistRuleset(), checkFileRuleset(), addons, autoDisableTypeAwareTseslintRules(options), autoDisableTypeAwareFunctionalRules(options), Prettier);
|
|
230
|
+
//#endregion
|
|
231
|
+
export { config as default, env_exports as env };
|
|
232
|
+
|
|
233
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../src/rulesets/eslint.ts","../src/rulesets/no-relative-import-paths.ts","../src/rulesets/perfectionist.ts","../src/rulesets/tseslint.ts","../src/rulesets/unicorn.ts","../src/rulesets/unused-imports.ts","../src/config.ts"],"sourcesContent":["import ESLint from \"@eslint/js\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const eslintRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/eslint\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\textends: [ESLint.configs.recommended],\n\t\trules: {\n\t\t\t\"arrow-body-style\": [\"error\"],\n\t\t\teqeqeq: [\"error\", \"always\", { null: \"never\" }],\n\t\t\t\"max-params\": \"error\",\n\t\t\t\"no-console\": [\"warn\", { allow: [\"warn\", \"error\"] }],\n\t\t\t\"no-lone-blocks\": \"error\",\n\t\t\t\"no-lonely-if\": \"error\",\n\t\t\t\"no-loop-func\": \"error\",\n\t\t\t\"no-param-reassign\": \"error\",\n\t\t\t\"no-restricted-imports\": [\n\t\t\t\t\"error\",\n\t\t\t\t{ patterns: [{ group: [\"**/_*\", \"!./_*\"], message: \"Do not import directory-private module.\" }] },\n\t\t\t],\n\t\t\t\"no-useless-rename\": \"error\",\n\t\t\t\"object-shorthand\": \"error\",\n\t\t\t\"prefer-destructuring\": \"error\",\n\t\t},\n\t});\n","import { fixupPluginRules } from \"@eslint/compat\";\nimport NoRelativeImportPaths from \"eslint-plugin-no-relative-import-paths\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const noRelativeImportPathsRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/no-relative-import-paths\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tignores: [\"**/*.d.*\"],\n\t\tplugins: {\n\t\t\t\"no-relative-import-paths\": fixupPluginRules(NoRelativeImportPaths),\n\t\t},\n\t\trules: {\n\t\t\t\"no-relative-import-paths/no-relative-import-paths\": [\"error\", { allowSameFolder: true }],\n\t\t},\n\t});\n","import Perfectionist from \"eslint-plugin-perfectionist\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const perfectionistRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/perfectionist\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tplugins: {\n\t\t\tperfectionist: Perfectionist,\n\t\t},\n\t\trules: {\n\t\t\t\"perfectionist/sort-exports\": [\"error\", { type: \"natural\" }],\n\t\t\t\"perfectionist/sort-imports\": [\n\t\t\t\t\"error\",\n\t\t\t\t{\n\t\t\t\t\ttype: \"natural\",\n\t\t\t\t\tgroups: [\"side-effect\", \"builtin\", \"external\", \"subpath\", [\"parent\", \"sibling\", \"index\"], \"unknown\"],\n\t\t\t\t},\n\t\t\t],\n\t\t\t\"perfectionist/sort-named-exports\": [\"error\", { type: \"natural\" }],\n\t\t\t\"perfectionist/sort-named-imports\": [\"error\", { type: \"natural\" }],\n\t\t},\n\t});\n","import { defineConfig } from \"eslint/config\";\nimport * as TSESLint from \"typescript-eslint\";\n\nimport type { config } from \"#src/config.js\";\n\nexport const tseslintRuleset = (options: config.Options) =>\n\tdefineConfig(\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/rulesets/tseslint\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\t\textends: [TSESLint.configs.base, TSESLint.configs.eslintRecommended],\n\t\t\tlanguageOptions: {\n\t\t\t\tparserOptions: {\n\t\t\t\t\ttsconfigRootDir: options.rootDir,\n\t\t\t\t\tprojectService:\n\t\t\t\t\t\toptions.enableTypeAwareRules === false\n\t\t\t\t\t\t\t? false\n\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\tdefaultProject: options.tsconfig ?? \"tsconfig.json\",\n\t\t\t\t\t\t\t\t\tallowDefaultProject: options.enableTypeAwareRules?.js === \"auto\" ? [\"*.{js,jsx,mjs,cjs}\"] : [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/rulesets/tseslint/base\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\t\tignores: [\"**/*.d.*\"],\n\t\t\textends: [TSESLint.configs.strictTypeChecked, TSESLint.configs.stylisticTypeChecked],\n\t\t\trules: {\n\t\t\t\t\"@typescript-eslint/consistent-type-definitions\": [\"error\", \"type\"],\n\t\t\t\t\"@typescript-eslint/consistent-type-exports\": \"error\",\n\t\t\t\t\"@typescript-eslint/consistent-type-imports\": \"error\",\n\t\t\t\t\"@typescript-eslint/explicit-member-accessibility\": [\"error\", { accessibility: \"no-public\" }],\n\t\t\t\t\"@typescript-eslint/naming-convention\": [\n\t\t\t\t\t\"error\",\n\t\t\t\t\t{\n\t\t\t\t\t\tselector: \"default\",\n\t\t\t\t\t\tformat: [\"camelCase\", \"PascalCase\", \"UPPER_CASE\"],\n\t\t\t\t\t\tleadingUnderscore: \"forbid\",\n\t\t\t\t\t\ttrailingUnderscore: \"forbid\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tselector: [\"parameter\", \"variable\"],\n\t\t\t\t\t\tformat: [\"camelCase\", \"PascalCase\", \"UPPER_CASE\"],\n\t\t\t\t\t\tleadingUnderscore: \"allow\",\n\t\t\t\t\t\ttrailingUnderscore: \"forbid\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tselector: \"typeLike\",\n\t\t\t\t\t\tformat: [\"PascalCase\", \"UPPER_CASE\"],\n\t\t\t\t\t\tleadingUnderscore: \"forbid\",\n\t\t\t\t\t\ttrailingUnderscore: \"forbid\",\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tselector: \"default\",\n\t\t\t\t\t\tmodifiers: [\"requiresQuotes\"],\n\t\t\t\t\t\tformat: null,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tselector: \"property\",\n\t\t\t\t\t\tfilter: {\n\t\t\t\t\t\t\tregex: \"^(_tag|__typename)$\",\n\t\t\t\t\t\t\tmatch: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tformat: null,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t\"@typescript-eslint/no-namespace\": [\"error\", { allowDeclarations: true }],\n\t\t\t\t\"@typescript-eslint/no-import-type-side-effects\": \"error\",\n\t\t\t\t\"no-shadow\": \"off\",\n\t\t\t\t\"@typescript-eslint/no-shadow\": [\"error\", { allow: [\"_\", \"it\"] }],\n\t\t\t\t\"@typescript-eslint/no-unnecessary-condition\": [\"error\", { allowConstantLoopConditions: true }],\n\t\t\t\t\"@typescript-eslint/no-unnecessary-qualifier\": \"error\",\n\t\t\t\t\"@typescript-eslint/no-unused-vars\": \"off\",\n\t\t\t\t\"@typescript-eslint/no-useless-empty-export\": \"error\",\n\t\t\t\t\"@typescript-eslint/parameter-properties\": \"error\",\n\t\t\t\t\"@typescript-eslint/prefer-nullish-coalescing\": [\"error\", { ignoreTernaryTests: true }],\n\t\t\t\t\"@typescript-eslint/prefer-readonly\": \"error\",\n\t\t\t\t\"@typescript-eslint/restrict-template-expressions\": [\"error\", { allowNumber: true }],\n\t\t\t\t\"@typescript-eslint/return-await\": [\"error\", \"always\"],\n\t\t\t\t\"@typescript-eslint/strict-boolean-expressions\": [\n\t\t\t\t\t\"error\",\n\t\t\t\t\t{ allowString: false, allowNumber: false, allowNullableObject: false },\n\t\t\t\t],\n\t\t\t\t\"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n\t\t\t},\n\t\t},\n\t);\n\nexport const autoDisableTypeAwareTseslintRules = (options: config.Options) => {\n\tif (options.enableTypeAwareRules === false) {\n\t\treturn defineConfig({\n\t\t\tname: \"@touchspot/eslint-config/rulesets/tseslint/disable-type-aware/all\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\t\textends: [TSESLint.configs.disableTypeChecked],\n\t\t});\n\t}\n\tif (options.enableTypeAwareRules?.js == null) {\n\t\treturn defineConfig({\n\t\t\tname: \"@touchspot/eslint-config/rulesets/tseslint/disable-type-aware/js\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs}\"],\n\t\t\textends: [TSESLint.configs.disableTypeChecked],\n\t\t});\n\t}\n\treturn [];\n};\n","import Unicorn from \"eslint-plugin-unicorn\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const unicornRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/unicorn\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\textends: [Unicorn.configs.recommended],\n\t\trules: {\n\t\t\t\"unicorn/consistent-function-scoping\": [\"error\", { checkArrowFunctions: false }],\n\t\t\t\"unicorn/filename-case\": \"off\",\n\t\t\t\"unicorn/no-array-callback-reference\": \"off\",\n\t\t\t\"unicorn/no-array-reduce\": \"off\",\n\t\t\t\"unicorn/no-null\": \"off\",\n\t\t\t\"unicorn/prefer-object-from-entries\": \"off\",\n\t\t\t\"unicorn/prevent-abbreviations\": \"off\",\n\t\t},\n\t});\n","import UnusedImports from \"eslint-plugin-unused-imports\";\nimport { defineConfig } from \"eslint/config\";\n\nexport const unusedImportsRuleset = () =>\n\tdefineConfig({\n\t\tname: \"@touchspot/eslint-config/rulesets/unused-imports\",\n\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\tplugins: {\n\t\t\t\"unused-imports\": UnusedImports,\n\t\t},\n\t\trules: {\n\t\t\t\"no-unused-vars\": \"off\",\n\t\t\t\"unused-imports/no-unused-imports\": \"error\",\n\t\t\t\"unused-imports/no-unused-vars\": [\n\t\t\t\t\"error\",\n\t\t\t\t{ args: \"after-used\", argsIgnorePattern: \"^_\", vars: \"all\", varsIgnorePattern: \"^_\" },\n\t\t\t],\n\t\t},\n\t});\n","import type { ConfigWithExtendsArray } from \"@eslint/config-helpers\";\nimport Prettier from \"eslint-config-prettier\";\nimport { defineConfig, globalIgnores } from \"eslint/config\";\n\nimport { checkFileRuleset } from \"#src/rulesets/check-file.js\";\nimport { eslintRuleset } from \"#src/rulesets/eslint.js\";\nimport { autoDisableTypeAwareFunctionalRules, functionalRuleset } from \"#src/rulesets/functional.js\";\nimport { importXRuleset } from \"#src/rulesets/import-x.js\";\nimport { noRelativeImportPathsRuleset } from \"#src/rulesets/no-relative-import-paths.js\";\nimport { perfectionistRuleset } from \"#src/rulesets/perfectionist.js\";\nimport { autoDisableTypeAwareTseslintRules, tseslintRuleset } from \"#src/rulesets/tseslint.js\";\nimport { unicornRuleset } from \"#src/rulesets/unicorn.js\";\nimport { unusedImportsRuleset } from \"#src/rulesets/unused-imports.js\";\nimport type { ConfigArray } from \"#src/types.js\";\n\nexport declare namespace config {\n\ttype Options = {\n\t\treadonly rootDir: string;\n\t\treadonly tsconfig?: string;\n\t\treadonly enableTypeAwareRules?: { readonly js?: \"all\" | \"auto\" } | false;\n\t};\n}\n\nexport const config = (options: config.Options, ...addons: ConfigWithExtendsArray): ConfigArray =>\n\tdefineConfig(\n\t\tglobalIgnores([\".cache/\", \".turbo/\", \"coverage/\", \"dist/\"]),\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/linter\",\n\t\t\tlinterOptions: {\n\t\t\t\treportUnusedDisableDirectives: \"error\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/language\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,cjs,ts,tsx,mts,cts}\"],\n\t\t\tlanguageOptions: {\n\t\t\t\tecmaVersion: \"latest\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/language/esm\",\n\t\t\tfiles: [\"**/*.{js,jsx,mjs,ts,tsx,mts}\"],\n\t\t\tlanguageOptions: {\n\t\t\t\tsourceType: \"module\",\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tname: \"@touchspot/eslint-config/language/cjs\",\n\t\t\tfiles: [\"**/*.{cjs,cts}\"],\n\t\t\tlanguageOptions: {\n\t\t\t\tsourceType: \"commonjs\",\n\t\t\t},\n\t\t},\n\t\teslintRuleset(),\n\t\ttseslintRuleset(options),\n\t\tunicornRuleset(),\n\t\timportXRuleset(),\n\t\tunusedImportsRuleset(),\n\t\tnoRelativeImportPathsRuleset(),\n\t\tfunctionalRuleset(),\n\t\tperfectionistRuleset(),\n\t\tcheckFileRuleset(),\n\t\taddons,\n\t\tautoDisableTypeAwareTseslintRules(options),\n\t\tautoDisableTypeAwareFunctionalRules(options),\n\t\tPrettier,\n\t);\n"],"mappings":"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"}
|