@stride.it/appoint-lint-governance 0.1.27 → 0.1.30
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/LICENSE +1 -1
- package/README.md +0 -1
- package/dist/index.d.ts +30 -1816
- package/dist/index.js +188 -2
- package/dist/index.js.map +1 -1
- package/package.json +5 -1
package/dist/index.js
CHANGED
|
@@ -1,3 +1,182 @@
|
|
|
1
|
+
// src/configs/framework/a11y/index.ts
|
|
2
|
+
import jsxA11yPlugin from "eslint-plugin-jsx-a11y";
|
|
3
|
+
|
|
4
|
+
// src/configs/framework/a11y/definitions/jsx-a11y-r.ts
|
|
5
|
+
var jsxA11yRules = {
|
|
6
|
+
"jsx-a11y/alt-text": "error",
|
|
7
|
+
"jsx-a11y/anchor-has-content": "error",
|
|
8
|
+
"jsx-a11y/anchor-is-valid": "error",
|
|
9
|
+
"jsx-a11y/aria-activedescendant-has-tabindex": "error",
|
|
10
|
+
"jsx-a11y/aria-props": "error",
|
|
11
|
+
"jsx-a11y/aria-proptypes": "error",
|
|
12
|
+
"jsx-a11y/aria-role": "error",
|
|
13
|
+
"jsx-a11y/aria-unsupported-elements": "error",
|
|
14
|
+
"jsx-a11y/autocomplete-valid": "error",
|
|
15
|
+
"jsx-a11y/click-events-have-key-events": "error",
|
|
16
|
+
"jsx-a11y/heading-has-content": "error",
|
|
17
|
+
"jsx-a11y/html-has-lang": "error",
|
|
18
|
+
"jsx-a11y/iframe-has-title": "error",
|
|
19
|
+
"jsx-a11y/img-redundant-alt": "error",
|
|
20
|
+
"jsx-a11y/interactive-supports-focus": "error",
|
|
21
|
+
"jsx-a11y/label-has-associated-control": "error",
|
|
22
|
+
"jsx-a11y/media-has-caption": "error",
|
|
23
|
+
"jsx-a11y/mouse-events-have-key-events": "error",
|
|
24
|
+
"jsx-a11y/no-access-key": "error",
|
|
25
|
+
"jsx-a11y/no-autofocus": "error",
|
|
26
|
+
"jsx-a11y/no-distracting-elements": "error",
|
|
27
|
+
"jsx-a11y/no-interactive-element-to-noninteractive-role": "error",
|
|
28
|
+
"jsx-a11y/no-noninteractive-element-interactions": "error",
|
|
29
|
+
"jsx-a11y/no-noninteractive-element-to-interactive-role": "error",
|
|
30
|
+
"jsx-a11y/no-noninteractive-tabindex": "error",
|
|
31
|
+
"jsx-a11y/no-redundant-roles": "error",
|
|
32
|
+
"jsx-a11y/no-static-element-interactions": "error",
|
|
33
|
+
"jsx-a11y/role-has-required-aria-props": "error",
|
|
34
|
+
"jsx-a11y/role-supports-aria-props": "error",
|
|
35
|
+
"jsx-a11y/scope": "error",
|
|
36
|
+
"jsx-a11y/tabindex-no-positive": "error"
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// src/configs/framework/a11y/index.ts
|
|
40
|
+
function a11y(options = {}) {
|
|
41
|
+
const files = options.files ?? ["**/*.{jsx,tsx}"];
|
|
42
|
+
return [
|
|
43
|
+
{
|
|
44
|
+
files,
|
|
45
|
+
plugins: {
|
|
46
|
+
"jsx-a11y": jsxA11yPlugin
|
|
47
|
+
},
|
|
48
|
+
rules: {
|
|
49
|
+
...jsxA11yRules
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// src/configs/framework/a11y/recommended.ts
|
|
56
|
+
var a11yRecommended = a11y();
|
|
57
|
+
|
|
58
|
+
// src/configs/framework/nextjs/index.ts
|
|
59
|
+
import nextPlugin from "@next/eslint-plugin-next";
|
|
60
|
+
|
|
61
|
+
// src/configs/framework/nextjs/definitions/core-next-r.ts
|
|
62
|
+
var nextCoreRules = {
|
|
63
|
+
"@next/next/google-font-display": "error",
|
|
64
|
+
"@next/next/google-font-preconnect": "error",
|
|
65
|
+
"@next/next/inline-script-id": "error",
|
|
66
|
+
"@next/next/next-script-for-ga": "error",
|
|
67
|
+
"@next/next/no-assign-module-variable": "error",
|
|
68
|
+
"@next/next/no-async-client-component": "warn",
|
|
69
|
+
"@next/next/no-before-interactive-script-outside-document": "error",
|
|
70
|
+
"@next/next/no-css-tags": "error",
|
|
71
|
+
"@next/next/no-document-import-in-page": "error",
|
|
72
|
+
"@next/next/no-duplicate-head": "error",
|
|
73
|
+
"@next/next/no-head-element": "error",
|
|
74
|
+
"@next/next/no-head-import-in-document": "error",
|
|
75
|
+
"@next/next/no-html-link-for-pages": "error",
|
|
76
|
+
"@next/next/no-img-element": "error",
|
|
77
|
+
"@next/next/no-page-custom-font": "error",
|
|
78
|
+
"@next/next/no-script-component-in-head": "error",
|
|
79
|
+
"@next/next/no-styled-jsx-in-document": "error",
|
|
80
|
+
"@next/next/no-sync-scripts": "error",
|
|
81
|
+
"@next/next/no-title-in-document-head": "error",
|
|
82
|
+
"@next/next/no-typos": "error",
|
|
83
|
+
"@next/next/no-unwanted-polyfillio": "error"
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// src/configs/framework/nextjs/index.ts
|
|
87
|
+
function nextjs(options = {}) {
|
|
88
|
+
const files = options.files ?? ["**/*.{js,jsx,ts,tsx}"];
|
|
89
|
+
return [
|
|
90
|
+
{
|
|
91
|
+
files,
|
|
92
|
+
plugins: {
|
|
93
|
+
"@next/next": nextPlugin
|
|
94
|
+
},
|
|
95
|
+
rules: {
|
|
96
|
+
...nextCoreRules
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/configs/framework/react/index.ts
|
|
103
|
+
import reactPlugin from "eslint-plugin-react";
|
|
104
|
+
import reactHooksPlugin from "eslint-plugin-react-hooks";
|
|
105
|
+
|
|
106
|
+
// src/configs/framework/react/definitions/core-r.ts
|
|
107
|
+
var reactCoreRules = {
|
|
108
|
+
"react/display-name": "error",
|
|
109
|
+
"react/jsx-key": "error",
|
|
110
|
+
"react/jsx-no-comment-textnodes": "error",
|
|
111
|
+
"react/jsx-no-duplicate-props": "error",
|
|
112
|
+
"react/jsx-no-target-blank": "error",
|
|
113
|
+
"react/jsx-no-undef": "error",
|
|
114
|
+
"react/jsx-uses-react": "off",
|
|
115
|
+
// Not needed in React 17+
|
|
116
|
+
"react/jsx-uses-vars": "error",
|
|
117
|
+
"react/no-children-prop": "error",
|
|
118
|
+
"react/no-danger-with-children": "error",
|
|
119
|
+
"react/no-deprecated": "error",
|
|
120
|
+
"react/no-direct-mutation-state": "error",
|
|
121
|
+
"react/no-find-dom-node": "error",
|
|
122
|
+
"react/no-is-mounted": "error",
|
|
123
|
+
"react/no-render-return-value": "error",
|
|
124
|
+
"react/no-string-refs": "error",
|
|
125
|
+
"react/no-unknown-property": "error",
|
|
126
|
+
"react/no-unsafe": "off",
|
|
127
|
+
"react/prop-types": "off",
|
|
128
|
+
// We use TypeScript
|
|
129
|
+
"react/react-in-jsx-scope": "off",
|
|
130
|
+
// Not needed in React 17+
|
|
131
|
+
"react/require-render-return": "error"
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// src/configs/framework/react/definitions/hooks-r.ts
|
|
135
|
+
var reactHooksRules = {
|
|
136
|
+
"react-hooks/rules-of-hooks": "error",
|
|
137
|
+
"react-hooks/exhaustive-deps": "warn"
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
// src/configs/framework/react/index.ts
|
|
141
|
+
function react(options = {}) {
|
|
142
|
+
const files = options.files ?? ["**/*.{jsx,tsx}"];
|
|
143
|
+
return [
|
|
144
|
+
{
|
|
145
|
+
files,
|
|
146
|
+
plugins: {
|
|
147
|
+
react: reactPlugin,
|
|
148
|
+
"react-hooks": reactHooksPlugin
|
|
149
|
+
},
|
|
150
|
+
languageOptions: {
|
|
151
|
+
parserOptions: {
|
|
152
|
+
ecmaFeatures: {
|
|
153
|
+
jsx: true
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
settings: {
|
|
158
|
+
react: {
|
|
159
|
+
version: "detect"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
rules: {
|
|
163
|
+
...reactCoreRules,
|
|
164
|
+
...reactHooksRules
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// src/configs/framework/react/recommended.ts
|
|
171
|
+
var reactRecommended = react();
|
|
172
|
+
|
|
173
|
+
// src/configs/framework/nextjs/recommended.ts
|
|
174
|
+
var nextjsRecommended = [
|
|
175
|
+
...reactRecommended,
|
|
176
|
+
...a11yRecommended,
|
|
177
|
+
...nextjs()
|
|
178
|
+
];
|
|
179
|
+
|
|
1
180
|
// src/configs/typescript/base.ts
|
|
2
181
|
import tseslint from "typescript-eslint";
|
|
3
182
|
function typescriptBase(options = {}) {
|
|
@@ -136,10 +315,11 @@ var IMPORTS_RULES = {
|
|
|
136
315
|
"tests/**",
|
|
137
316
|
"**/*.config.{js,ts,mjs}",
|
|
138
317
|
"**/*.stories.tsx",
|
|
139
|
-
"scripts/**"
|
|
318
|
+
"scripts/**",
|
|
319
|
+
"src/configs/framework/**"
|
|
140
320
|
],
|
|
141
321
|
optionalDependencies: false,
|
|
142
|
-
peerDependencies:
|
|
322
|
+
peerDependencies: true
|
|
143
323
|
}
|
|
144
324
|
],
|
|
145
325
|
"simple-import-sort/imports": "error",
|
|
@@ -399,7 +579,13 @@ var plugin = {
|
|
|
399
579
|
rules: {}
|
|
400
580
|
};
|
|
401
581
|
export {
|
|
582
|
+
a11y,
|
|
583
|
+
a11yRecommended,
|
|
584
|
+
nextjs,
|
|
585
|
+
nextjsRecommended,
|
|
402
586
|
plugin,
|
|
587
|
+
react,
|
|
588
|
+
reactRecommended,
|
|
403
589
|
typescriptBase,
|
|
404
590
|
typescriptConventions,
|
|
405
591
|
typescriptMinimal,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/configs/typescript/base.ts","../src/configs/typescript/conventions.ts","../src/configs/typescript/docs.ts","../src/configs/typescript/functional.ts","../src/configs/typescript/imports.ts","../src/configs/typescript/minimal.ts","../src/configs/typescript/naming-env.ts","../src/configs/typescript/prettier.ts","../src/configs/typescript/recommended.ts","../src/configs/typescript/quality.ts","../src/configs/typescript/security.ts","../src/configs/typescript/size-complexity.ts","../src/configs/typescript/type-aware.ts","../src/plugin/index.ts"],"sourcesContent":["import tseslint from \"typescript-eslint\";\n\nexport type TypescriptBaseOptions = {\n files?: string[];\n};\n\nexport function typescriptBase(options: TypescriptBaseOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n languageOptions: {\n parser: tseslint.parser,\n parserOptions: {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n },\n },\n rules: {\n \"@typescript-eslint/consistent-type-imports\": \"error\",\n \"@typescript-eslint/no-unused-vars\": \"error\",\n \"@typescript-eslint/no-shadow\": \"error\",\n \"@typescript-eslint/ban-ts-comment\": \"error\",\n \"@typescript-eslint/no-explicit-any\": \"warn\",\n \"@typescript-eslint/no-inferrable-types\": \"error\",\n \"no-undef\": \"off\",\n \"no-unused-vars\": \"off\",\n \"no-var\": \"error\",\n \"prefer-const\": \"error\",\n eqeqeq: [\"error\", \"always\", { null: \"ignore\" }],\n \"no-implicit-coercion\": \"error\",\n },\n },\n ];\n}\n","import importPlugin from \"eslint-plugin-import\";\n\nexport type TypescriptConventionsOptions = {\n files?: string[];\n};\n\nexport function typescriptConventions(\n options: TypescriptConventionsOptions = {}\n) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n import: importPlugin,\n },\n rules: {\n // 6.1 Rule table\n \"import/no-default-export\": \"error\",\n \"@typescript-eslint/consistent-type-definitions\": [\"error\", \"type\"],\n \"@typescript-eslint/consistent-type-imports\": \"error\",\n \"prefer-arrow-callback\": \"error\",\n },\n },\n // 6.2 Overrides\n {\n files: [\n \"**/*.config.{js,mjs,ts}\",\n \"**/app/**/{page,layout,template,not-found,global-error,loading,error}.tsx\",\n \"**/*.stories.tsx\",\n \"**/*.d.ts\",\n ],\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n ];\n}\n","import comments from \"@eslint-community/eslint-plugin-eslint-comments\";\nimport jsdoc from \"eslint-plugin-jsdoc\";\n\nexport type TypescriptDocsOptions = {\n files?: string[];\n};\n\nexport function typescriptDocs(options: TypescriptDocsOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n jsdoc: jsdoc,\n \"eslint-comments\": comments,\n },\n rules: {\n \"eslint-comments/no-unused-disable\": \"error\",\n \"eslint-comments/no-unlimited-disable\": \"error\",\n \"eslint-comments/require-description\": \"error\",\n \"eslint-comments/disable-enable-pair\": \"error\",\n \"jsdoc/check-alignment\": \"error\",\n \"jsdoc/require-param\": \"error\",\n \"jsdoc/require-returns\": \"error\",\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport tseslint from \"typescript-eslint\";\n\nexport type TypescriptFunctionalOptions = {\n files?: string[];\n};\n\nconst FUNCTIONAL_RULES: Linter.RulesRecord = {\n // Type Safety\n \"@typescript-eslint/explicit-module-boundary-types\": \"warn\",\n\n // Modern Syntax\n \"@typescript-eslint/default-param-last\": \"error\",\n \"prefer-rest-params\": \"error\",\n \"prefer-spread\": \"error\",\n \"no-new-func\": \"error\",\n\n // Clean Code\n \"@typescript-eslint/no-empty-function\": \"error\",\n};\n\nexport function typescriptFunctional(\n options: TypescriptFunctionalOptions = {}\n) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n rules: FUNCTIONAL_RULES,\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport importPlugin from \"eslint-plugin-import\";\nimport simpleImportSort from \"eslint-plugin-simple-import-sort\";\n\nconst IMPORTS_RULES: Linter.RulesRecord = {\n \"import/no-duplicates\": \"error\",\n \"import/no-cycle\": \"error\",\n \"import/no-mutable-exports\": \"error\",\n \"import/first\": \"error\",\n \"import/newline-after-import\": \"error\",\n \"import/no-extraneous-dependencies\": [\n \"error\",\n {\n devDependencies: [\n \"**/*.test.ts\",\n \"**/*.spec.ts\",\n \"test/**\",\n \"tests/**\",\n \"**/*.config.{js,ts,mjs}\",\n \"**/*.stories.tsx\",\n \"scripts/**\",\n ],\n optionalDependencies: false,\n peerDependencies: false,\n },\n ],\n\n \"simple-import-sort/imports\": \"error\",\n \"simple-import-sort/exports\": \"error\",\n\n \"import/no-deprecated\": \"error\",\n \"no-restricted-imports\": \"off\",\n};\n\nexport type TypescriptImportsOptions = {\n files?: string[];\n};\n\nexport function typescriptImports(options: TypescriptImportsOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n import: importPlugin,\n \"simple-import-sort\": simpleImportSort,\n },\n settings: {\n \"import/parsers\": {\n \"@typescript-eslint/parser\": [\".ts\", \".tsx\", \".mts\", \".cts\"],\n },\n \"import/resolver\": {\n typescript: {\n alwaysTryTypes: true,\n project: [\"tsconfig.json\", \"*/tsconfig.json\"],\n },\n node: true,\n },\n },\n rules: IMPORTS_RULES,\n },\n ];\n}\n","import { typescriptBase } from \"./base.js\";\n\nexport type TypescriptConfigFiles = string[];\n\nexport type TypescriptMinimalOptions = {\n files?: TypescriptConfigFiles;\n}\n\n/**\n * MVP TypeScript profile.\n *\n * Intentionally minimal: enables TypeScript parsing and one rule to prove\n * end-to-end packaging + consumption.\n * @param options - Configuration options.\n * @returns The ESLint configuration.\n */\nexport function typescriptMinimal(options: TypescriptMinimalOptions = {}) {\n return typescriptBase(options);\n}\n","import type { Linter } from \"eslint\";\nimport unicorn from \"eslint-plugin-unicorn\";\n\nexport type TypescriptNamingEnvOptions = {\n files?: string[];\n};\n\nconst NAMING_RULES: Linter.RulesRecord = {\n \"unicorn/filename-case\": [\n \"error\",\n {\n cases: {\n kebabCase: true,\n pascalCase: true,\n },\n ignore: [\"NEXT_\", \"README\", \"CHANGELOG\", \"LICENSE\", \"Dockerfile\", \"^_\"],\n },\n ],\n \"no-restricted-globals\": [\"error\", \"event\", \"fdescribe\"],\n};\n\nexport function typescriptNamingEnv(options: TypescriptNamingEnvOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n unicorn,\n },\n rules: NAMING_RULES,\n },\n ];\n}\n","import eslintConfigPrettier from \"eslint-config-prettier\";\n\nexport type TypescriptPrettierOptions = {\n files?: string[];\n};\n\nexport function typescriptPrettierInterop(\n options: TypescriptPrettierOptions = {}\n) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n rules: {\n ...eslintConfigPrettier.rules,\n },\n },\n ];\n}\n","import tseslint from \"typescript-eslint\";\n\nimport { typescriptBase } from \"./base.js\";\nimport { typescriptConventions } from \"./conventions.js\";\nimport { typescriptDocs } from \"./docs.js\";\nimport { typescriptFunctional } from \"./functional.js\";\nimport { typescriptImports } from \"./imports.js\";\nimport { typescriptNamingEnv } from \"./naming-env.js\";\nimport { typescriptQuality } from \"./quality.js\";\nimport { typescriptSecurity } from \"./security.js\";\nimport { typescriptSizeComplexity } from \"./size-complexity.js\";\nimport { typescriptTypeAware } from \"./type-aware.js\";\n\nexport type TypescriptRecommendedOptions = {\n /**\n * When set, enables type-aware rules (more powerful, can be slower).\n *\n * Recommended for mature codebases, but not required for MVP.\n */\n typeChecked?: boolean;\n\n /**\n * Type-aware linting requires a project TSConfig.\n * Example: \"./tsconfig.json\".\n */\n tsconfigPath?: string | string[];\n\n /**\n * tsconfigRootDir should usually be import.meta.dirname from the consumer repo.\n */\n tsconfigRootDir?: string;\n\n files?: string[];\n\n /**\n * When true (default), enables strict conventions (e.g. no default exports).\n */\n enableConventions?: boolean;\n};\n\nexport function typescriptRecommended(\n options: TypescriptRecommendedOptions = {}\n) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n const enableConventions = options.enableConventions ?? true;\n\n const upstreamConfigs = options.typeChecked\n ? tseslint.configs.recommendedTypeChecked\n : tseslint.configs.recommended;\n\n const typeAwareConfig = options.typeChecked\n ? typescriptTypeAware({\n files,\n tsconfigPath: options.tsconfigPath,\n tsconfigRootDir: options.tsconfigRootDir,\n })\n : [];\n\n const conventionsConfig = enableConventions\n ? typescriptConventions({ files })\n : [];\n\n return [\n ...typescriptBase({ files }),\n ...typescriptQuality({ files }),\n ...typescriptImports({ files }),\n ...typescriptSecurity({ files }),\n ...typescriptNamingEnv({ files }),\n ...typescriptFunctional({ files }),\n ...typescriptDocs({ files }),\n ...typescriptSizeComplexity({ files }),\n ...conventionsConfig,\n ...typeAwareConfig,\n ...upstreamConfigs.map((config) => ({\n ...config,\n files,\n })),\n ];\n}\n","import sonarjs from \"eslint-plugin-sonarjs\";\nimport unicorn from \"eslint-plugin-unicorn\";\n\nexport type TypescriptQualityOptions = {\n files?: string[];\n};\n\nconst UNICORN_ABBREVIATIONS = {\n allowList: {\n Props: true,\n props: true,\n Ref: true,\n ref: true,\n Src: true,\n src: true,\n Params: true,\n params: true,\n Env: true,\n env: true,\n Args: true,\n args: true,\n Docs: true,\n docs: true,\n arg: true,\n err: true,\n req: true,\n res: true,\n ctx: true,\n val: true,\n },\n};\n\nexport function typescriptQuality(options: TypescriptQualityOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n unicorn,\n sonarjs,\n },\n rules: {\n // Unicorn\n \"unicorn/prefer-node-protocol\": \"error\",\n \"unicorn/no-useless-undefined\": \"error\",\n \"unicorn/no-lonely-if\": \"error\",\n \"unicorn/prefer-optional-catch-binding\": \"error\",\n \"unicorn/prefer-string-replace-all\": \"error\",\n \"unicorn/prevent-abbreviations\": [\"warn\", UNICORN_ABBREVIATIONS],\n\n // Best Practices\n \"consistent-return\": \"error\",\n \"no-implicit-coercion\": \"error\",\n\n // SonarJS\n \"sonarjs/cognitive-complexity\": [\"error\", 15],\n \"sonarjs/no-identical-functions\": \"error\",\n \"sonarjs/no-duplicated-branches\": \"error\",\n \"sonarjs/no-redundant-boolean\": \"error\",\n \"sonarjs/no-inverted-boolean-check\": \"error\",\n },\n },\n ];\n}\n","import regexpPlugin from \"eslint-plugin-regexp\";\nimport securityPlugin from \"eslint-plugin-security\";\nimport type { FlatConfig } from \"typescript-eslint\";\n\nexport type TypescriptSecurityOptions = {\n files?: string[];\n};\n\nexport function typescriptSecurity(options: TypescriptSecurityOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n security: securityPlugin as unknown as FlatConfig.Plugin,\n regexp: regexpPlugin,\n },\n rules: {\n // eslint-plugin-security\n \"security/detect-object-injection\": \"error\",\n \"security/detect-unsafe-regex\": \"error\",\n\n // eslint-plugin-regexp\n \"regexp/no-super-linear-backtracking\": \"error\",\n \"regexp/no-useless-escape\": \"error\",\n \"regexp/no-empty-capturing-group\": \"error\",\n },\n },\n ];\n}\n","export type TypescriptSizeComplexityOptions = {\n files?: string[];\n};\n\nexport function typescriptSizeComplexity(\n options: TypescriptSizeComplexityOptions = {}\n) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n rules: {\n \"max-lines\": [\n \"error\",\n { max: 100, skipBlankLines: true, skipComments: true },\n ],\n \"max-lines-per-function\": [\n \"error\",\n { max: 50, skipBlankLines: true, skipComments: true },\n ],\n complexity: [\"error\", 15],\n \"max-params\": [\"error\", 3],\n \"max-depth\": [\"error\", 4],\n \"no-var\": \"error\",\n \"prefer-const\": \"warn\",\n },\n },\n ];\n}\n","import tseslint from \"typescript-eslint\";\n\nexport type TypescriptTypeAwareOptions = {\n /**\n * Type-aware linting requires a project TSConfig.\n * Example: \"./tsconfig.json\".\n */\n tsconfigPath?: string | string[];\n\n /**\n * tsconfigRootDir should usually be import.meta.dirname from the consumer repo.\n */\n tsconfigRootDir?: string;\n\n files?: string[];\n};\n\nexport function typescriptTypeAware(options: TypescriptTypeAwareOptions = {}) {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n languageOptions: {\n parserOptions: {\n project: options.tsconfigPath ?? \"./tsconfig.json\",\n tsconfigRootDir: options.tsconfigRootDir,\n },\n },\n rules: {\n \"@typescript-eslint/require-await\": \"error\",\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"error\",\n \"@typescript-eslint/restrict-template-expressions\": \"error\",\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n \"@typescript-eslint/no-deprecated\": \"error\",\n \"@typescript-eslint/consistent-type-exports\": \"error\",\n },\n },\n ];\n}\n","import type { ESLint } from \"eslint\";\n\n/**\n * Placeholder for future custom rules.\n *\n * Exporting a plugin object now keeps the package structure stable as you add\n * domain-specific rules later.\n */\nexport const plugin: ESLint.Plugin = {\n rules: {},\n};\n"],"mappings":"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","names":["tseslint","importPlugin","tseslint","unicorn","tseslint","tseslint"]}
|
|
1
|
+
{"version":3,"sources":["../src/configs/framework/a11y/index.ts","../src/configs/framework/a11y/definitions/jsx-a11y-r.ts","../src/configs/framework/a11y/recommended.ts","../src/configs/framework/nextjs/index.ts","../src/configs/framework/nextjs/definitions/core-next-r.ts","../src/configs/framework/react/index.ts","../src/configs/framework/react/definitions/core-r.ts","../src/configs/framework/react/definitions/hooks-r.ts","../src/configs/framework/react/recommended.ts","../src/configs/framework/nextjs/recommended.ts","../src/configs/typescript/base.ts","../src/configs/typescript/conventions.ts","../src/configs/typescript/docs.ts","../src/configs/typescript/functional.ts","../src/configs/typescript/imports.ts","../src/configs/typescript/minimal.ts","../src/configs/typescript/naming-env.ts","../src/configs/typescript/prettier.ts","../src/configs/typescript/recommended.ts","../src/configs/typescript/quality.ts","../src/configs/typescript/security.ts","../src/configs/typescript/size-complexity.ts","../src/configs/typescript/type-aware.ts","../src/plugin/index.ts"],"sourcesContent":["import type { Linter } from \"eslint\";\nimport jsxA11yPlugin from \"eslint-plugin-jsx-a11y\";\n\nimport { jsxA11yRules } from \"./definitions/jsx-a11y-r\";\n\nexport type A11yOptions = {\n files?: string[];\n};\n\nexport function a11y(options: A11yOptions = {}): Linter.Config[] {\n const files = options.files ?? [\"**/*.{jsx,tsx}\"];\n\n return [\n {\n files,\n plugins: {\n \"jsx-a11y\": jsxA11yPlugin,\n },\n rules: {\n ...jsxA11yRules,\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\n\nexport const jsxA11yRules: Linter.RulesRecord = {\n \"jsx-a11y/alt-text\": \"error\",\n \"jsx-a11y/anchor-has-content\": \"error\",\n \"jsx-a11y/anchor-is-valid\": \"error\",\n \"jsx-a11y/aria-activedescendant-has-tabindex\": \"error\",\n \"jsx-a11y/aria-props\": \"error\",\n \"jsx-a11y/aria-proptypes\": \"error\",\n \"jsx-a11y/aria-role\": \"error\",\n \"jsx-a11y/aria-unsupported-elements\": \"error\",\n \"jsx-a11y/autocomplete-valid\": \"error\",\n \"jsx-a11y/click-events-have-key-events\": \"error\",\n \"jsx-a11y/heading-has-content\": \"error\",\n \"jsx-a11y/html-has-lang\": \"error\",\n \"jsx-a11y/iframe-has-title\": \"error\",\n \"jsx-a11y/img-redundant-alt\": \"error\",\n \"jsx-a11y/interactive-supports-focus\": \"error\",\n \"jsx-a11y/label-has-associated-control\": \"error\",\n \"jsx-a11y/media-has-caption\": \"error\",\n \"jsx-a11y/mouse-events-have-key-events\": \"error\",\n \"jsx-a11y/no-access-key\": \"error\",\n \"jsx-a11y/no-autofocus\": \"error\",\n \"jsx-a11y/no-distracting-elements\": \"error\",\n \"jsx-a11y/no-interactive-element-to-noninteractive-role\": \"error\",\n \"jsx-a11y/no-noninteractive-element-interactions\": \"error\",\n \"jsx-a11y/no-noninteractive-element-to-interactive-role\": \"error\",\n \"jsx-a11y/no-noninteractive-tabindex\": \"error\",\n \"jsx-a11y/no-redundant-roles\": \"error\",\n \"jsx-a11y/no-static-element-interactions\": \"error\",\n \"jsx-a11y/role-has-required-aria-props\": \"error\",\n \"jsx-a11y/role-supports-aria-props\": \"error\",\n \"jsx-a11y/scope\": \"error\",\n \"jsx-a11y/tabindex-no-positive\": \"error\",\n};\n","import { a11y } from \"./index\";\n\nexport const a11yRecommended = a11y();\n","import nextPlugin from \"@next/eslint-plugin-next\";\nimport type { Linter } from \"eslint\";\n\nimport { nextCoreRules } from \"./definitions/core-next-r\";\n\nexport type NextjsOptions = {\n files?: string[];\n};\n\nexport function nextjs(options: NextjsOptions = {}): Linter.Config[] {\n const files = options.files ?? [\"**/*.{js,jsx,ts,tsx}\"];\n\n return [\n {\n files,\n plugins: {\n \"@next/next\": nextPlugin,\n },\n rules: {\n ...nextCoreRules,\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\n\nexport const nextCoreRules: Linter.RulesRecord = {\n \"@next/next/google-font-display\": \"error\",\n \"@next/next/google-font-preconnect\": \"error\",\n \"@next/next/inline-script-id\": \"error\",\n \"@next/next/next-script-for-ga\": \"error\",\n \"@next/next/no-assign-module-variable\": \"error\",\n \"@next/next/no-async-client-component\": \"warn\",\n \"@next/next/no-before-interactive-script-outside-document\": \"error\",\n \"@next/next/no-css-tags\": \"error\",\n \"@next/next/no-document-import-in-page\": \"error\",\n \"@next/next/no-duplicate-head\": \"error\",\n \"@next/next/no-head-element\": \"error\",\n \"@next/next/no-head-import-in-document\": \"error\",\n \"@next/next/no-html-link-for-pages\": \"error\",\n \"@next/next/no-img-element\": \"error\",\n \"@next/next/no-page-custom-font\": \"error\",\n \"@next/next/no-script-component-in-head\": \"error\",\n \"@next/next/no-styled-jsx-in-document\": \"error\",\n \"@next/next/no-sync-scripts\": \"error\",\n \"@next/next/no-title-in-document-head\": \"error\",\n \"@next/next/no-typos\": \"error\",\n \"@next/next/no-unwanted-polyfillio\": \"error\",\n};\n","import type { Linter } from \"eslint\";\nimport reactPlugin from \"eslint-plugin-react\";\nimport reactHooksPlugin from \"eslint-plugin-react-hooks\";\n\nimport { reactCoreRules } from \"./definitions/core-r\";\nimport { reactHooksRules } from \"./definitions/hooks-r\";\n\nexport type ReactOptions = {\n files?: string[];\n};\n\nexport function react(options: ReactOptions = {}): Linter.Config[] {\n const files = options.files ?? [\"**/*.{jsx,tsx}\"];\n\n return [\n {\n files,\n plugins: {\n react: reactPlugin,\n \"react-hooks\": reactHooksPlugin,\n },\n languageOptions: {\n parserOptions: {\n ecmaFeatures: {\n jsx: true,\n },\n },\n },\n settings: {\n react: {\n version: \"detect\",\n },\n },\n rules: {\n ...reactCoreRules,\n ...reactHooksRules,\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\n\n/**\n * Core React rules (validation, JSX, etc).\n * Disables rules that conflict with TypeScript or new React versions.\n */\nexport const reactCoreRules: Linter.RulesRecord = {\n \"react/display-name\": \"error\",\n \"react/jsx-key\": \"error\",\n \"react/jsx-no-comment-textnodes\": \"error\",\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-target-blank\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/jsx-uses-react\": \"off\", // Not needed in React 17+\n \"react/jsx-uses-vars\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-deprecated\": \"error\",\n \"react/no-direct-mutation-state\": \"error\",\n \"react/no-find-dom-node\": \"error\",\n \"react/no-is-mounted\": \"error\",\n \"react/no-render-return-value\": \"error\",\n \"react/no-string-refs\": \"error\",\n \"react/no-unknown-property\": \"error\",\n \"react/no-unsafe\": \"off\",\n \"react/prop-types\": \"off\", // We use TypeScript\n \"react/react-in-jsx-scope\": \"off\", // Not needed in React 17+\n \"react/require-render-return\": \"error\",\n};\n","import type { Linter } from \"eslint\";\n\nexport const reactHooksRules: Linter.RulesRecord = {\n \"react-hooks/rules-of-hooks\": \"error\",\n \"react-hooks/exhaustive-deps\": \"warn\",\n};\n","import { react } from \"./index\";\n\nexport const reactRecommended = react();\n","import { a11yRecommended } from \"../a11y/recommended\";\nimport { reactRecommended } from \"../react/recommended\";\nimport { nextjs } from \"./index\";\n\nexport const nextjsRecommended = [\n ...reactRecommended,\n ...a11yRecommended,\n ...nextjs(),\n];\n","import type { Linter } from \"eslint\";\nimport tseslint from \"typescript-eslint\";\n\nexport type TypescriptBaseOptions = {\n files?: string[];\n};\n\nexport function typescriptBase(\n options: TypescriptBaseOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n languageOptions: {\n parser: tseslint.parser,\n parserOptions: {\n ecmaVersion: \"latest\",\n sourceType: \"module\",\n },\n },\n rules: {\n \"@typescript-eslint/consistent-type-imports\": \"error\",\n \"@typescript-eslint/no-unused-vars\": \"error\",\n \"@typescript-eslint/no-shadow\": \"error\",\n \"@typescript-eslint/ban-ts-comment\": \"error\",\n \"@typescript-eslint/no-explicit-any\": \"warn\",\n \"@typescript-eslint/no-inferrable-types\": \"error\",\n \"no-undef\": \"off\",\n \"no-unused-vars\": \"off\",\n \"no-var\": \"error\",\n \"prefer-const\": \"error\",\n eqeqeq: [\"error\", \"always\", { null: \"ignore\" }],\n \"no-implicit-coercion\": \"error\",\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport importPlugin from \"eslint-plugin-import\";\n\nexport type TypescriptConventionsOptions = {\n files?: string[];\n};\n\nexport function typescriptConventions(\n options: TypescriptConventionsOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n import: importPlugin,\n },\n rules: {\n // 6.1 Rule table\n \"import/no-default-export\": \"error\",\n \"@typescript-eslint/consistent-type-definitions\": [\"error\", \"type\"],\n \"@typescript-eslint/consistent-type-imports\": \"error\",\n \"prefer-arrow-callback\": \"error\",\n },\n },\n // 6.2 Overrides\n {\n files: [\n \"**/*.config.{js,mjs,ts}\",\n \"**/app/**/{page,layout,template,not-found,global-error,loading,error}.tsx\",\n \"**/*.stories.tsx\",\n \"**/*.d.ts\",\n ],\n rules: {\n \"import/no-default-export\": \"off\",\n },\n },\n ];\n}\n","import comments from \"@eslint-community/eslint-plugin-eslint-comments\";\nimport type { Linter } from \"eslint\";\nimport jsdoc from \"eslint-plugin-jsdoc\";\n\nexport type TypescriptDocsOptions = {\n files?: string[];\n};\n\nexport function typescriptDocs(\n options: TypescriptDocsOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n jsdoc: jsdoc,\n \"eslint-comments\": comments,\n },\n rules: {\n \"eslint-comments/no-unused-disable\": \"error\",\n \"eslint-comments/no-unlimited-disable\": \"error\",\n \"eslint-comments/require-description\": \"error\",\n \"eslint-comments/disable-enable-pair\": \"error\",\n \"jsdoc/check-alignment\": \"error\",\n \"jsdoc/require-param\": \"error\",\n \"jsdoc/require-returns\": \"error\",\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport tseslint from \"typescript-eslint\";\n\nexport type TypescriptFunctionalOptions = {\n files?: string[];\n};\n\nconst FUNCTIONAL_RULES: Linter.RulesRecord = {\n // Type Safety\n \"@typescript-eslint/explicit-module-boundary-types\": \"warn\",\n\n // Modern Syntax\n \"@typescript-eslint/default-param-last\": \"error\",\n \"prefer-rest-params\": \"error\",\n \"prefer-spread\": \"error\",\n \"no-new-func\": \"error\",\n\n // Clean Code\n \"@typescript-eslint/no-empty-function\": \"error\",\n};\n\nexport function typescriptFunctional(\n options: TypescriptFunctionalOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n rules: FUNCTIONAL_RULES,\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport importPlugin from \"eslint-plugin-import\";\nimport simpleImportSort from \"eslint-plugin-simple-import-sort\";\n\nconst IMPORTS_RULES: Linter.RulesRecord = {\n \"import/no-duplicates\": \"error\",\n \"import/no-cycle\": \"error\",\n \"import/no-mutable-exports\": \"error\",\n \"import/first\": \"error\",\n \"import/newline-after-import\": \"error\",\n \"import/no-extraneous-dependencies\": [\n \"error\",\n {\n devDependencies: [\n \"**/*.test.ts\",\n \"**/*.spec.ts\",\n \"test/**\",\n \"tests/**\",\n \"**/*.config.{js,ts,mjs}\",\n \"**/*.stories.tsx\",\n \"scripts/**\",\n \"src/configs/framework/**\",\n ],\n optionalDependencies: false,\n peerDependencies: true,\n },\n ],\n\n \"simple-import-sort/imports\": \"error\",\n \"simple-import-sort/exports\": \"error\",\n\n \"import/no-deprecated\": \"error\",\n \"no-restricted-imports\": \"off\",\n};\n\nexport type TypescriptImportsOptions = {\n files?: string[];\n};\n\nexport function typescriptImports(\n options: TypescriptImportsOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n import: importPlugin,\n \"simple-import-sort\": simpleImportSort,\n },\n settings: {\n \"import/parsers\": {\n \"@typescript-eslint/parser\": [\".ts\", \".tsx\", \".mts\", \".cts\"],\n },\n \"import/resolver\": {\n typescript: {\n alwaysTryTypes: true,\n project: [\"tsconfig.json\", \"*/tsconfig.json\"],\n },\n node: true,\n },\n },\n rules: IMPORTS_RULES,\n },\n ];\n}\n","import type { Linter } from \"eslint\";\n\nimport { typescriptBase } from \"./base.js\";\n\nexport type TypescriptConfigFiles = string[];\n\nexport type TypescriptMinimalOptions = {\n files?: TypescriptConfigFiles;\n};\n\n/**\n * MVP TypeScript profile.\n *\n * Intentionally minimal: enables TypeScript parsing and one rule to prove\n * end-to-end packaging + consumption.\n * @param options - Configuration options.\n * @returns The ESLint configuration.\n */\nexport function typescriptMinimal(\n options: TypescriptMinimalOptions = {},\n): Linter.Config[] {\n return typescriptBase(options);\n}\n","import type { Linter } from \"eslint\";\nimport unicorn from \"eslint-plugin-unicorn\";\n\nexport type TypescriptNamingEnvOptions = {\n files?: string[];\n};\n\nconst NAMING_RULES: Linter.RulesRecord = {\n \"unicorn/filename-case\": [\n \"error\",\n {\n cases: {\n kebabCase: true,\n pascalCase: true,\n },\n ignore: [\"NEXT_\", \"README\", \"CHANGELOG\", \"LICENSE\", \"Dockerfile\", \"^_\"],\n },\n ],\n \"no-restricted-globals\": [\"error\", \"event\", \"fdescribe\"],\n};\n\nexport function typescriptNamingEnv(\n options: TypescriptNamingEnvOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n unicorn,\n },\n rules: NAMING_RULES,\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport eslintConfigPrettier from \"eslint-config-prettier\";\n\nexport type TypescriptPrettierOptions = {\n files?: string[];\n};\n\nexport function typescriptPrettierInterop(\n options: TypescriptPrettierOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n rules: {\n ...eslintConfigPrettier.rules,\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport tseslint from \"typescript-eslint\";\n\nimport { typescriptBase } from \"./base.js\";\nimport { typescriptConventions } from \"./conventions.js\";\nimport { typescriptDocs } from \"./docs.js\";\nimport { typescriptFunctional } from \"./functional.js\";\nimport { typescriptImports } from \"./imports.js\";\nimport { typescriptNamingEnv } from \"./naming-env.js\";\nimport { typescriptQuality } from \"./quality.js\";\nimport { typescriptSecurity } from \"./security.js\";\nimport { typescriptSizeComplexity } from \"./size-complexity.js\";\nimport { typescriptTypeAware } from \"./type-aware.js\";\n\nexport type TypescriptRecommendedOptions = {\n /**\n * When set, enables type-aware rules (more powerful, can be slower).\n *\n * Recommended for mature codebases, but not required for MVP.\n */\n typeChecked?: boolean;\n\n /**\n * Type-aware linting requires a project TSConfig.\n * Example: \"./tsconfig.json\".\n */\n tsconfigPath?: string | string[];\n\n /**\n * tsconfigRootDir should usually be import.meta.dirname from the consumer repo.\n */\n tsconfigRootDir?: string;\n\n files?: string[];\n\n /**\n * When true (default), enables strict conventions (e.g. no default exports).\n */\n enableConventions?: boolean;\n};\n\nexport function typescriptRecommended(\n options: TypescriptRecommendedOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n const enableConventions = options.enableConventions ?? true;\n\n const upstreamConfigs = (\n options.typeChecked\n ? tseslint.configs.recommendedTypeChecked\n : tseslint.configs.recommended\n ) as Linter.Config[];\n\n const typeAwareConfig: Linter.Config[] = options.typeChecked\n ? typescriptTypeAware({\n files,\n tsconfigPath: options.tsconfigPath,\n tsconfigRootDir: options.tsconfigRootDir,\n })\n : [];\n\n const conventionsConfig: Linter.Config[] = enableConventions\n ? typescriptConventions({ files })\n : [];\n\n return [\n ...typescriptBase({ files }),\n ...(typescriptQuality({ files }) as Linter.Config[]),\n ...typescriptImports({ files }),\n ...typescriptSecurity({ files }),\n ...typescriptNamingEnv({ files }),\n ...typescriptFunctional({ files }),\n ...typescriptDocs({ files }),\n ...typescriptSizeComplexity({ files }),\n ...conventionsConfig,\n ...typeAwareConfig,\n ...(upstreamConfigs.map((config) => ({\n ...config,\n files,\n })) as Linter.Config[]),\n ];\n}\n","import sonarjs from \"eslint-plugin-sonarjs\";\nimport unicorn from \"eslint-plugin-unicorn\";\n\nexport type TypescriptQualityOptions = {\n files?: string[];\n};\n\nconst UNICORN_ABBREVIATIONS = {\n allowList: {\n Props: true,\n props: true,\n Ref: true,\n ref: true,\n Src: true,\n src: true,\n Params: true,\n params: true,\n Env: true,\n env: true,\n Args: true,\n args: true,\n Docs: true,\n docs: true,\n arg: true,\n err: true,\n req: true,\n res: true,\n ctx: true,\n val: true,\n },\n};\n\nexport function typescriptQuality(\n options: TypescriptQualityOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n unicorn,\n sonarjs,\n },\n rules: {\n // Unicorn\n \"unicorn/prefer-node-protocol\": \"error\",\n \"unicorn/no-useless-undefined\": \"error\",\n \"unicorn/no-lonely-if\": \"error\",\n \"unicorn/prefer-optional-catch-binding\": \"error\",\n \"unicorn/prefer-string-replace-all\": \"error\",\n \"unicorn/prevent-abbreviations\": [\"warn\", UNICORN_ABBREVIATIONS],\n\n // Best Practices\n \"consistent-return\": \"error\",\n \"no-implicit-coercion\": \"error\",\n\n // SonarJS\n \"sonarjs/cognitive-complexity\": [\"error\", 15],\n \"sonarjs/no-identical-functions\": \"error\",\n \"sonarjs/no-duplicated-branches\": \"error\",\n \"sonarjs/no-redundant-boolean\": \"error\",\n \"sonarjs/no-inverted-boolean-check\": \"error\",\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport regexpPlugin from \"eslint-plugin-regexp\";\nimport securityPlugin from \"eslint-plugin-security\";\n\nexport type TypescriptSecurityOptions = {\n files?: string[];\n};\n\nexport function typescriptSecurity(\n options: TypescriptSecurityOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n security: securityPlugin,\n regexp: regexpPlugin,\n },\n rules: {\n // eslint-plugin-security\n \"security/detect-object-injection\": \"error\",\n \"security/detect-unsafe-regex\": \"error\",\n\n // eslint-plugin-regexp\n \"regexp/no-super-linear-backtracking\": \"error\",\n \"regexp/no-useless-escape\": \"error\",\n \"regexp/no-empty-capturing-group\": \"error\",\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\n\nexport type TypescriptSizeComplexityOptions = {\n files?: string[];\n};\n\nexport function typescriptSizeComplexity(\n options: TypescriptSizeComplexityOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n rules: {\n \"max-lines\": [\n \"error\",\n { max: 100, skipBlankLines: true, skipComments: true },\n ],\n \"max-lines-per-function\": [\n \"error\",\n { max: 50, skipBlankLines: true, skipComments: true },\n ],\n complexity: [\"error\", 15],\n \"max-params\": [\"error\", 3],\n \"max-depth\": [\"error\", 4],\n \"no-var\": \"error\",\n \"prefer-const\": \"warn\",\n },\n },\n ];\n}\n","import type { Linter } from \"eslint\";\nimport tseslint from \"typescript-eslint\";\n\nexport type TypescriptTypeAwareOptions = {\n /**\n * Type-aware linting requires a project TSConfig.\n * Example: \"./tsconfig.json\".\n */\n tsconfigPath?: string | string[];\n\n /**\n * tsconfigRootDir should usually be import.meta.dirname from the consumer repo.\n */\n tsconfigRootDir?: string;\n\n files?: string[];\n};\n\nexport function typescriptTypeAware(\n options: TypescriptTypeAwareOptions = {},\n): Linter.Config[] {\n const files = options.files ?? [\"**/*.{ts,tsx,mts,cts}\"];\n\n return [\n {\n files,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n languageOptions: {\n parserOptions: {\n project: options.tsconfigPath ?? \"./tsconfig.json\",\n tsconfigRootDir: options.tsconfigRootDir,\n },\n },\n rules: {\n \"@typescript-eslint/require-await\": \"error\",\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-misused-promises\": \"error\",\n \"@typescript-eslint/await-thenable\": \"error\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"error\",\n \"@typescript-eslint/restrict-template-expressions\": \"error\",\n \"@typescript-eslint/prefer-nullish-coalescing\": \"error\",\n \"@typescript-eslint/prefer-optional-chain\": \"error\",\n \"@typescript-eslint/switch-exhaustiveness-check\": \"error\",\n \"@typescript-eslint/no-deprecated\": \"error\",\n \"@typescript-eslint/consistent-type-exports\": \"error\",\n },\n },\n ];\n}\n","import type { ESLint } from \"eslint\";\n\n/**\n * Placeholder for future custom rules.\n *\n * Exporting a plugin object now keeps the package structure stable as you add\n * domain-specific rules later.\n */\nexport const plugin: ESLint.Plugin = {\n rules: {},\n};\n"],"mappings":"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","names":["tseslint","importPlugin","tseslint","unicorn","tseslint","tseslint"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stride.it/appoint-lint-governance",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.30",
|
|
4
4
|
"description": "Shareable ESLint flat-config profiles (MVP: TypeScript) for normalizing lint across repos.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -43,10 +43,14 @@
|
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
|
|
46
|
+
"@next/eslint-plugin-next": "^16.1.3",
|
|
46
47
|
"eslint-config-prettier": "^10.1.8",
|
|
47
48
|
"eslint-import-resolver-typescript": "^4.4.4",
|
|
48
49
|
"eslint-plugin-import": "^2.32.0",
|
|
49
50
|
"eslint-plugin-jsdoc": "^62.0.0",
|
|
51
|
+
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
52
|
+
"eslint-plugin-react": "^7.37.5",
|
|
53
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
50
54
|
"eslint-plugin-regexp": "^2.10.0",
|
|
51
55
|
"eslint-plugin-security": "^3.0.1",
|
|
52
56
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|