@dimensional-innovations/tool-config 5.0.1 → 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/astro-6WHBKQFX.js +43 -0
- package/dist/astro-6WHBKQFX.js.map +1 -0
- package/dist/chunk-AKQIWLRC.js +446 -0
- package/dist/chunk-AKQIWLRC.js.map +1 -0
- package/dist/chunk-HAVDVZO3.js +624 -0
- package/dist/chunk-HAVDVZO3.js.map +1 -0
- package/dist/chunk-HUYPX7RZ.js +125 -0
- package/dist/chunk-HUYPX7RZ.js.map +1 -0
- package/dist/chunk-L7IN57ZC.js +167 -0
- package/dist/chunk-L7IN57ZC.js.map +1 -0
- package/dist/chunk-LRQFF2N5.js +141 -0
- package/dist/chunk-LRQFF2N5.js.map +1 -0
- package/dist/chunk-NRDWX5HH.js +363 -0
- package/dist/chunk-NRDWX5HH.js.map +1 -0
- package/dist/chunk-OMQFJOZZ.js +48 -0
- package/dist/chunk-OMQFJOZZ.js.map +1 -0
- package/dist/cli/index.js +72 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/eslint-DXHSX6VW.js +5 -0
- package/dist/eslint-DXHSX6VW.js.map +1 -0
- package/dist/index.js +14 -2589
- package/dist/index.js.map +1 -1
- package/dist/prettier-EYWEBRIS.js +4 -0
- package/dist/prettier-EYWEBRIS.js.map +1 -0
- package/dist/react-YIKJI3VA.js +91 -0
- package/dist/react-YIKJI3VA.js.map +1 -0
- package/dist/semantic-release-7XCPBEKO.js +4 -0
- package/dist/semantic-release-7XCPBEKO.js.map +1 -0
- package/dist/solid-F44BEBBP.js +54 -0
- package/dist/solid-F44BEBBP.js.map +1 -0
- package/dist/stylelint-UAZHFIUD.js +5 -0
- package/dist/stylelint-UAZHFIUD.js.map +1 -0
- package/dist/svelte-XEOX6WAQ.js +56 -0
- package/dist/svelte-XEOX6WAQ.js.map +1 -0
- package/dist/typescript-G4HYJJ7T.js +4 -0
- package/dist/typescript-G4HYJJ7T.js.map +1 -0
- package/dist/vue-DP7MCMOU.js +144 -0
- package/dist/vue-DP7MCMOU.js.map +1 -0
- package/package.json +12 -11
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import prettierConfig from 'eslint-config-prettier';
|
|
2
|
+
import { configs } from 'eslint-plugin-astro';
|
|
3
|
+
|
|
4
|
+
// src/tools/eslint/presets/frameworks/astro.ts
|
|
5
|
+
function createAstroPreset() {
|
|
6
|
+
return [
|
|
7
|
+
...configs.recommended,
|
|
8
|
+
...configs["jsx-a11y-recommended"],
|
|
9
|
+
{
|
|
10
|
+
files: ["**/*.astro"],
|
|
11
|
+
rules: {
|
|
12
|
+
// Component Best Practices (5 rules)
|
|
13
|
+
"astro/no-conflict-set-directives": "error",
|
|
14
|
+
// Avoid conflicting set directives
|
|
15
|
+
"astro/no-unused-define-vars-in-style": "error",
|
|
16
|
+
// Remove unused CSS variables
|
|
17
|
+
"astro/no-deprecated-astro-canonicalurl": "error",
|
|
18
|
+
// Use new canonical URL API
|
|
19
|
+
"astro/no-deprecated-astro-fetchcontent": "error",
|
|
20
|
+
// Use new content collections
|
|
21
|
+
"astro/no-deprecated-astro-resolve": "error",
|
|
22
|
+
// Use new module resolution
|
|
23
|
+
// Template Syntax (3 rules - formatting rules removed, handled by Prettier)
|
|
24
|
+
"astro/valid-compile": "error",
|
|
25
|
+
// Ensure valid Astro syntax
|
|
26
|
+
"astro/no-set-html-directive": "warn",
|
|
27
|
+
// Warn about XSS risk
|
|
28
|
+
"astro/prefer-class-list-directive": "error"
|
|
29
|
+
// Use class:list over className
|
|
30
|
+
// Note: astro/semi is a formatting rule disabled by eslint-config-prettier
|
|
31
|
+
// Accessibility (included from jsx-a11y-recommended preset)
|
|
32
|
+
// - alt-text, click-events-have-key-events, etc.
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
// Disable all formatting rules that conflict with Prettier
|
|
36
|
+
// This must be last to override any formatting rules from above
|
|
37
|
+
prettierConfig
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { createAstroPreset as default };
|
|
42
|
+
//# sourceMappingURL=astro-6WHBKQFX.js.map
|
|
43
|
+
//# sourceMappingURL=astro-6WHBKQFX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/eslint/presets/frameworks/astro.ts"],"names":[],"mappings":";;;;AAee,SAAR,iBAAA,GAAyD;AAC9D,EAAA,OAAO;AAAA,IACL,GAAG,OAAA,CAAQ,WAAA;AAAA,IACX,GAAG,QAAQ,sBAAsB,CAAA;AAAA,IACjC;AAAA,MACE,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA;AAAA,QAEL,kCAAA,EAAoC,OAAA;AAAA;AAAA,QACpC,sCAAA,EAAwC,OAAA;AAAA;AAAA,QACxC,wCAAA,EAA0C,OAAA;AAAA;AAAA,QAC1C,wCAAA,EAA0C,OAAA;AAAA;AAAA,QAC1C,mCAAA,EAAqC,OAAA;AAAA;AAAA;AAAA,QAGrC,qBAAA,EAAuB,OAAA;AAAA;AAAA,QACvB,6BAAA,EAA+B,MAAA;AAAA;AAAA,QAC/B,mCAAA,EAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAKvC,KACF;AAAA;AAAA;AAAA,IAIA;AAAA,GACF;AACF","file":"astro-6WHBKQFX.js","sourcesContent":["import prettierConfig from 'eslint-config-prettier'\nimport { configs } from 'eslint-plugin-astro'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Astro framework configuration\n * Rules for Astro components and island architecture\n *\n * Rules organized by category:\n * - Component best practices\n * - Island architecture\n * - Template syntax\n * - Accessibility\n */\nexport default function createAstroPreset(): EslintFlatConfig[] {\n return [\n ...configs.recommended,\n ...configs['jsx-a11y-recommended'],\n {\n files: ['**/*.astro'],\n rules: {\n // Component Best Practices (5 rules)\n 'astro/no-conflict-set-directives': 'error', // Avoid conflicting set directives\n 'astro/no-unused-define-vars-in-style': 'error', // Remove unused CSS variables\n 'astro/no-deprecated-astro-canonicalurl': 'error', // Use new canonical URL API\n 'astro/no-deprecated-astro-fetchcontent': 'error', // Use new content collections\n 'astro/no-deprecated-astro-resolve': 'error', // Use new module resolution\n\n // Template Syntax (3 rules - formatting rules removed, handled by Prettier)\n 'astro/valid-compile': 'error', // Ensure valid Astro syntax\n 'astro/no-set-html-directive': 'warn', // Warn about XSS risk\n 'astro/prefer-class-list-directive': 'error' // Use class:list over className\n // Note: astro/semi is a formatting rule disabled by eslint-config-prettier\n\n // Accessibility (included from jsx-a11y-recommended preset)\n // - alt-text, click-events-have-key-events, etc.\n }\n },\n\n // Disable all formatting rules that conflict with Prettier\n // This must be last to override any formatting rules from above\n prettierConfig\n ]\n}\n"]}
|
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
import { autoDetect } from './chunk-L7IN57ZC.js';
|
|
2
|
+
import { existsSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
|
|
5
|
+
// src/core/types.ts
|
|
6
|
+
var ConfigError = class _ConfigError extends Error {
|
|
7
|
+
context;
|
|
8
|
+
constructor(message, context) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "ConfigError";
|
|
11
|
+
this.context = context;
|
|
12
|
+
if (Error.captureStackTrace) {
|
|
13
|
+
Error.captureStackTrace(this, _ConfigError);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// src/tools/typescript/checker-detection.ts
|
|
19
|
+
function detectTypeChecker(framework, preference = "auto", cwd = process.cwd()) {
|
|
20
|
+
if (preference === "legacy") {
|
|
21
|
+
return framework === "vue" ? "vue-tsc" : "tsc";
|
|
22
|
+
}
|
|
23
|
+
if (preference === "modern") {
|
|
24
|
+
return "tsgo";
|
|
25
|
+
}
|
|
26
|
+
if (preference === "auto") {
|
|
27
|
+
if (framework === "vue") {
|
|
28
|
+
const hasVueTsc = hasPackageInstalled("vue-tsc", cwd);
|
|
29
|
+
if (hasVueTsc) return "vue-tsc";
|
|
30
|
+
console.warn(
|
|
31
|
+
"\u26A0\uFE0F Vue project detected but vue-tsc not found.\n Install vue-tsc as a dev dependency to enable .vue file checking.\n Falling back to tsgo/tsc (won't check .vue files)"
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
const hasTsgo = hasPackageInstalled("@typescript/native-preview", cwd);
|
|
35
|
+
if (hasTsgo) {
|
|
36
|
+
return "tsgo";
|
|
37
|
+
}
|
|
38
|
+
return "tsc";
|
|
39
|
+
}
|
|
40
|
+
throw new ConfigError(`Unknown checker preference: "${preference}"`, {
|
|
41
|
+
received: preference,
|
|
42
|
+
validOptions: ["auto", "modern", "legacy"]
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function hasPackageInstalled(packageName, cwd) {
|
|
46
|
+
try {
|
|
47
|
+
const packagePath = join(cwd, "node_modules", packageName, "package.json");
|
|
48
|
+
return existsSync(packagePath);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
51
|
+
console.warn(`Warning: Error checking for ${packageName}: ${message}`);
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// src/tools/typescript/presets/base.ts
|
|
57
|
+
var basePreset = {
|
|
58
|
+
compilerOptions: {
|
|
59
|
+
// Language and Environment
|
|
60
|
+
target: "ES2022",
|
|
61
|
+
lib: ["ES2022"],
|
|
62
|
+
// Modules
|
|
63
|
+
module: "ESNext",
|
|
64
|
+
moduleResolution: "Bundler",
|
|
65
|
+
resolveJsonModule: true,
|
|
66
|
+
// Emit
|
|
67
|
+
declaration: true,
|
|
68
|
+
declarationMap: true,
|
|
69
|
+
sourceMap: true,
|
|
70
|
+
removeComments: false,
|
|
71
|
+
// Interop Constraints
|
|
72
|
+
esModuleInterop: true,
|
|
73
|
+
allowSyntheticDefaultImports: true,
|
|
74
|
+
forceConsistentCasingInFileNames: true,
|
|
75
|
+
isolatedModules: true,
|
|
76
|
+
// Type Checking (Strict Mode)
|
|
77
|
+
strict: true,
|
|
78
|
+
noImplicitAny: true,
|
|
79
|
+
strictNullChecks: true,
|
|
80
|
+
strictFunctionTypes: true,
|
|
81
|
+
strictBindCallApply: true,
|
|
82
|
+
strictPropertyInitialization: true,
|
|
83
|
+
noImplicitThis: true,
|
|
84
|
+
alwaysStrict: true,
|
|
85
|
+
// Additional Checks
|
|
86
|
+
noUnusedLocals: true,
|
|
87
|
+
noUnusedParameters: true,
|
|
88
|
+
noImplicitReturns: true,
|
|
89
|
+
noFallthroughCasesInSwitch: true,
|
|
90
|
+
noUncheckedIndexedAccess: true,
|
|
91
|
+
noImplicitOverride: true,
|
|
92
|
+
noPropertyAccessFromIndexSignature: false,
|
|
93
|
+
// Completeness
|
|
94
|
+
skipLibCheck: true,
|
|
95
|
+
// Faster, skip checking .d.ts files
|
|
96
|
+
// Advanced
|
|
97
|
+
allowUnusedLabels: false,
|
|
98
|
+
allowUnreachableCode: false
|
|
99
|
+
},
|
|
100
|
+
include: ["src/**/*"],
|
|
101
|
+
exclude: ["node_modules", "dist", "build", "out", "coverage", ".nyc_output"]
|
|
102
|
+
};
|
|
103
|
+
var base_default = basePreset;
|
|
104
|
+
|
|
105
|
+
// src/tools/typescript/presets/environments/browser.ts
|
|
106
|
+
var browserPreset = {
|
|
107
|
+
compilerOptions: {
|
|
108
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
109
|
+
target: "ES2020"
|
|
110
|
+
// Good browser support
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var browser_default = browserPreset;
|
|
114
|
+
|
|
115
|
+
// src/tools/typescript/presets/environments/node.ts
|
|
116
|
+
var nodePreset = {
|
|
117
|
+
compilerOptions: {
|
|
118
|
+
lib: ["ES2024"],
|
|
119
|
+
target: "ES2024",
|
|
120
|
+
module: "NodeNext",
|
|
121
|
+
moduleResolution: "NodeNext",
|
|
122
|
+
types: ["node"]
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
var node_default = nodePreset;
|
|
126
|
+
|
|
127
|
+
// src/tools/typescript/presets/environments/universal.ts
|
|
128
|
+
var universalPreset = {
|
|
129
|
+
compilerOptions: {
|
|
130
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
131
|
+
target: "ES2022",
|
|
132
|
+
types: ["node"]
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
var universal_default = universalPreset;
|
|
136
|
+
|
|
137
|
+
// src/tools/typescript/presets/frameworks/angular.ts
|
|
138
|
+
var angularPreset = {
|
|
139
|
+
compilerOptions: {
|
|
140
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
141
|
+
experimentalDecorators: true,
|
|
142
|
+
emitDecoratorMetadata: true
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
var angular_default = angularPreset;
|
|
146
|
+
|
|
147
|
+
// src/tools/typescript/presets/frameworks/astro.ts
|
|
148
|
+
var astroPreset = {
|
|
149
|
+
compilerOptions: {
|
|
150
|
+
jsx: "react-jsx",
|
|
151
|
+
// Astro uses React-style JSX
|
|
152
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
153
|
+
types: ["astro/client"]
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
var astro_default = astroPreset;
|
|
157
|
+
|
|
158
|
+
// src/tools/typescript/presets/frameworks/electron.ts
|
|
159
|
+
function createElectronPreset(renderer = "vue") {
|
|
160
|
+
const rendererExtensions = renderer === "vue" ? ["src/renderer/**/*.vue"] : [];
|
|
161
|
+
const root = {
|
|
162
|
+
files: [],
|
|
163
|
+
references: [{ path: "./tsconfig.node.json" }, { path: "./tsconfig.web.json" }]
|
|
164
|
+
};
|
|
165
|
+
const node = {
|
|
166
|
+
$schema: "https://json.schemastore.org/tsconfig",
|
|
167
|
+
include: ["electron.vite.config.*", "package.json", "src/main/*", "src/preload/*"],
|
|
168
|
+
compilerOptions: {
|
|
169
|
+
composite: true,
|
|
170
|
+
target: "ES2024",
|
|
171
|
+
lib: ["ES2024", "ESNext"],
|
|
172
|
+
module: "NodeNext",
|
|
173
|
+
moduleResolution: "NodeNext",
|
|
174
|
+
types: ["electron-vite/node"],
|
|
175
|
+
baseUrl: ".",
|
|
176
|
+
paths: {
|
|
177
|
+
"@/*": ["src/*"],
|
|
178
|
+
"@main/*": ["src/main/*"],
|
|
179
|
+
"@preload/*": ["src/preload/*"]
|
|
180
|
+
},
|
|
181
|
+
resolveJsonModule: true
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const web = {
|
|
185
|
+
$schema: "https://json.schemastore.org/tsconfig",
|
|
186
|
+
include: [
|
|
187
|
+
"src/renderer/env.d.ts",
|
|
188
|
+
"src/renderer/**/*",
|
|
189
|
+
...rendererExtensions,
|
|
190
|
+
"src/preload/*.d.ts",
|
|
191
|
+
"package.json"
|
|
192
|
+
],
|
|
193
|
+
compilerOptions: {
|
|
194
|
+
composite: true,
|
|
195
|
+
target: "ES2024",
|
|
196
|
+
lib: ["ES2024", "ESNext", "DOM", "DOM.Iterable"],
|
|
197
|
+
baseUrl: ".",
|
|
198
|
+
paths: {
|
|
199
|
+
"@/*": ["src/*"],
|
|
200
|
+
"@renderer/*": ["src/renderer/*"],
|
|
201
|
+
"@main/*": ["src/main/*"],
|
|
202
|
+
"@preload/*": ["src/preload/*"]
|
|
203
|
+
},
|
|
204
|
+
strict: true,
|
|
205
|
+
noUnusedParameters: true,
|
|
206
|
+
noFallthroughCasesInSwitch: true,
|
|
207
|
+
noUncheckedIndexedAccess: true
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
const tests = {
|
|
211
|
+
$schema: "https://json.schemastore.org/tsconfig",
|
|
212
|
+
include: ["tests/**/*", "src/renderer/**/*.vue", "src/renderer/env.d.ts"],
|
|
213
|
+
compilerOptions: {
|
|
214
|
+
composite: true,
|
|
215
|
+
baseUrl: ".",
|
|
216
|
+
paths: {
|
|
217
|
+
"@/*": ["src/*"],
|
|
218
|
+
"@renderer/*": ["src/renderer/*"],
|
|
219
|
+
"@main/*": ["src/main/*"],
|
|
220
|
+
"@preload/*": ["src/preload/*"],
|
|
221
|
+
"@tests/*": ["tests/*"],
|
|
222
|
+
"@unit/*": ["tests/unit/*"],
|
|
223
|
+
"@integration/*": ["tests/integration/*"],
|
|
224
|
+
"@fixtures/*": ["tests/fixtures/*"],
|
|
225
|
+
"@setup/*": ["tests/setup/*"]
|
|
226
|
+
},
|
|
227
|
+
types: ["vitest/globals", "@playwright/test"],
|
|
228
|
+
strict: false
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
return { root, node, web, tests };
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// src/tools/typescript/presets/frameworks/node.ts
|
|
235
|
+
var nodePreset2 = {
|
|
236
|
+
compilerOptions: {
|
|
237
|
+
lib: ["ES2022"],
|
|
238
|
+
module: "NodeNext",
|
|
239
|
+
moduleResolution: "NodeNext",
|
|
240
|
+
types: ["node"]
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
var node_default2 = nodePreset2;
|
|
244
|
+
|
|
245
|
+
// src/tools/typescript/presets/frameworks/react.ts
|
|
246
|
+
var reactPreset = {
|
|
247
|
+
compilerOptions: {
|
|
248
|
+
jsx: "react-jsx",
|
|
249
|
+
// Modern React 17+ automatic runtime
|
|
250
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"]
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
var react_default = reactPreset;
|
|
254
|
+
|
|
255
|
+
// src/tools/typescript/presets/frameworks/solid.ts
|
|
256
|
+
var solidPreset = {
|
|
257
|
+
compilerOptions: {
|
|
258
|
+
jsx: "preserve",
|
|
259
|
+
// Solid uses its own JSX transform
|
|
260
|
+
jsxImportSource: "solid-js",
|
|
261
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"]
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
var solid_default = solidPreset;
|
|
265
|
+
|
|
266
|
+
// src/tools/typescript/presets/frameworks/svelte.ts
|
|
267
|
+
var sveltePreset = {
|
|
268
|
+
compilerOptions: {
|
|
269
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
270
|
+
types: ["svelte"]
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
var svelte_default = sveltePreset;
|
|
274
|
+
|
|
275
|
+
// src/tools/typescript/presets/frameworks/vanilla.ts
|
|
276
|
+
var vanillaPreset = {
|
|
277
|
+
compilerOptions: {
|
|
278
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"]
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
var vanilla_default = vanillaPreset;
|
|
282
|
+
|
|
283
|
+
// src/tools/typescript/presets/frameworks/vue.ts
|
|
284
|
+
var vuePreset = {
|
|
285
|
+
compilerOptions: {
|
|
286
|
+
jsx: "preserve",
|
|
287
|
+
// Vue compiler handles JSX transformation
|
|
288
|
+
jsxImportSource: "vue",
|
|
289
|
+
lib: ["ES2022", "DOM", "DOM.Iterable"],
|
|
290
|
+
types: ["vite/client"]
|
|
291
|
+
// Common for Vue + Vite projects
|
|
292
|
+
},
|
|
293
|
+
// Vue-specific options (for vue-tsc)
|
|
294
|
+
vueCompilerOptions: {
|
|
295
|
+
extensions: [".vue"],
|
|
296
|
+
vitePressExtensions: [".md"]
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
var vue_default = vuePreset;
|
|
300
|
+
|
|
301
|
+
// src/tools/typescript/index.ts
|
|
302
|
+
var VALID_RENDERERS = [
|
|
303
|
+
"react",
|
|
304
|
+
"vue",
|
|
305
|
+
"svelte",
|
|
306
|
+
"solid",
|
|
307
|
+
"astro",
|
|
308
|
+
"angular",
|
|
309
|
+
"vanilla"
|
|
310
|
+
];
|
|
311
|
+
async function createTypescriptConfig(options = {}) {
|
|
312
|
+
const {
|
|
313
|
+
framework: frameworkOption = "auto",
|
|
314
|
+
environment: environmentOption = "auto",
|
|
315
|
+
checker: checkerPreference = "auto",
|
|
316
|
+
strict = true,
|
|
317
|
+
electron: electronOption,
|
|
318
|
+
renderer: rendererOption,
|
|
319
|
+
compilerOptions: userCompilerOptions = {},
|
|
320
|
+
cwd = process.cwd()
|
|
321
|
+
} = options;
|
|
322
|
+
const detected = frameworkOption === "auto" || environmentOption === "auto" || electronOption === void 0 ? autoDetect(cwd) : { framework: frameworkOption, environment: environmentOption, electron: electronOption };
|
|
323
|
+
const framework = frameworkOption === "auto" ? detected.framework : frameworkOption;
|
|
324
|
+
const environment = environmentOption === "auto" ? detected.environment : environmentOption;
|
|
325
|
+
const isElectron = electronOption !== void 0 ? electronOption : detected.electron;
|
|
326
|
+
if (isElectron) {
|
|
327
|
+
const renderer = rendererOption || framework;
|
|
328
|
+
if (!VALID_RENDERERS.includes(renderer)) {
|
|
329
|
+
throw new ConfigError(
|
|
330
|
+
`Invalid renderer option for Electron: "${renderer}". Must be one of: ${VALID_RENDERERS.join(", ")}`,
|
|
331
|
+
{
|
|
332
|
+
received: renderer,
|
|
333
|
+
validRenderers: VALID_RENDERERS
|
|
334
|
+
}
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
const checker2 = detectTypeChecker(
|
|
338
|
+
framework,
|
|
339
|
+
checkerPreference,
|
|
340
|
+
cwd
|
|
341
|
+
);
|
|
342
|
+
console.log(
|
|
343
|
+
`\u26A1 Electron TypeScript Config: ${renderer} renderer | Checker: ${checker2}${checker2 === "tsgo" ? " (10x faster!)" : ""}`
|
|
344
|
+
);
|
|
345
|
+
const configs = createElectronPreset(renderer);
|
|
346
|
+
return {
|
|
347
|
+
...configs,
|
|
348
|
+
_meta: {
|
|
349
|
+
framework: "electron",
|
|
350
|
+
renderer,
|
|
351
|
+
checker: checker2,
|
|
352
|
+
multiConfig: true,
|
|
353
|
+
experimental: checker2 === "tsgo",
|
|
354
|
+
generatedBy: "@dimensional-innovations/tool-config"
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
const checker = detectTypeChecker(
|
|
359
|
+
framework,
|
|
360
|
+
checkerPreference,
|
|
361
|
+
cwd
|
|
362
|
+
);
|
|
363
|
+
console.log(
|
|
364
|
+
`\u{1F50D} TypeScript Config: ${framework} | ${environment} | Checker: ${checker}${checker === "tsgo" ? " (10x faster!)" : ""}`
|
|
365
|
+
);
|
|
366
|
+
const config = loadPresets(framework, environment, strict);
|
|
367
|
+
if (userCompilerOptions && Object.keys(userCompilerOptions).length > 0) {
|
|
368
|
+
config.compilerOptions = {
|
|
369
|
+
...config.compilerOptions,
|
|
370
|
+
...userCompilerOptions
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
config._meta = {
|
|
374
|
+
framework,
|
|
375
|
+
environment,
|
|
376
|
+
checker,
|
|
377
|
+
experimental: checker === "tsgo",
|
|
378
|
+
generatedBy: "@dimensional-innovations/tool-config"
|
|
379
|
+
};
|
|
380
|
+
return config;
|
|
381
|
+
}
|
|
382
|
+
function loadPresets(framework, environment, strict) {
|
|
383
|
+
const config = structuredClone(base_default);
|
|
384
|
+
const envPreset = loadEnvironmentPreset(environment);
|
|
385
|
+
mergeConfig(config, envPreset);
|
|
386
|
+
const frameworkPreset = loadFrameworkPreset(framework);
|
|
387
|
+
mergeConfig(config, frameworkPreset);
|
|
388
|
+
if (!strict) {
|
|
389
|
+
config.compilerOptions = config.compilerOptions || {};
|
|
390
|
+
config.compilerOptions.strict = false;
|
|
391
|
+
config.compilerOptions.noImplicitAny = false;
|
|
392
|
+
}
|
|
393
|
+
return config;
|
|
394
|
+
}
|
|
395
|
+
function loadEnvironmentPreset(environment) {
|
|
396
|
+
switch (environment) {
|
|
397
|
+
case "browser":
|
|
398
|
+
return browser_default;
|
|
399
|
+
case "node":
|
|
400
|
+
return node_default;
|
|
401
|
+
case "universal":
|
|
402
|
+
return universal_default;
|
|
403
|
+
default:
|
|
404
|
+
return {};
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
function loadFrameworkPreset(framework) {
|
|
408
|
+
switch (framework) {
|
|
409
|
+
case "react":
|
|
410
|
+
return react_default;
|
|
411
|
+
case "vue":
|
|
412
|
+
return vue_default;
|
|
413
|
+
case "svelte":
|
|
414
|
+
return svelte_default;
|
|
415
|
+
case "solid":
|
|
416
|
+
return solid_default;
|
|
417
|
+
case "astro":
|
|
418
|
+
return astro_default;
|
|
419
|
+
case "angular":
|
|
420
|
+
return angular_default;
|
|
421
|
+
case "node":
|
|
422
|
+
return node_default2;
|
|
423
|
+
case "vanilla":
|
|
424
|
+
default:
|
|
425
|
+
return vanilla_default;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
function mergeConfig(target, source) {
|
|
429
|
+
for (const key in source) {
|
|
430
|
+
const sourceKey = key;
|
|
431
|
+
if (key === "compilerOptions" && target.compilerOptions) {
|
|
432
|
+
Object.assign(target.compilerOptions, source.compilerOptions);
|
|
433
|
+
} else if (key === "include" && Array.isArray(source.include)) {
|
|
434
|
+
target.include = [.../* @__PURE__ */ new Set([...target.include || [], ...source.include])];
|
|
435
|
+
} else if (key === "exclude" && Array.isArray(source.exclude)) {
|
|
436
|
+
target.exclude = [.../* @__PURE__ */ new Set([...target.exclude || [], ...source.exclude])];
|
|
437
|
+
} else {
|
|
438
|
+
target[sourceKey] = source[sourceKey];
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
var typescript_default = createTypescriptConfig;
|
|
443
|
+
|
|
444
|
+
export { ConfigError, createTypescriptConfig, typescript_default };
|
|
445
|
+
//# sourceMappingURL=chunk-AKQIWLRC.js.map
|
|
446
|
+
//# sourceMappingURL=chunk-AKQIWLRC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/types.ts","../src/tools/typescript/checker-detection.ts","../src/tools/typescript/presets/base.ts","../src/tools/typescript/presets/environments/browser.ts","../src/tools/typescript/presets/environments/node.ts","../src/tools/typescript/presets/environments/universal.ts","../src/tools/typescript/presets/frameworks/angular.ts","../src/tools/typescript/presets/frameworks/astro.ts","../src/tools/typescript/presets/frameworks/electron.ts","../src/tools/typescript/presets/frameworks/node.ts","../src/tools/typescript/presets/frameworks/react.ts","../src/tools/typescript/presets/frameworks/solid.ts","../src/tools/typescript/presets/frameworks/svelte.ts","../src/tools/typescript/presets/frameworks/vanilla.ts","../src/tools/typescript/presets/frameworks/vue.ts","../src/tools/typescript/index.ts"],"names":["nodePreset","node_default","checker"],"mappings":"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","file":"chunk-AKQIWLRC.js","sourcesContent":["/**\n * Shared type definitions for @dimensional-innovations/tool-config\n */\n\n// Tool names\nexport type ToolName = 'eslint' | 'prettier' | 'stylelint' | 'typescript' | 'semantic-release'\n\n// Framework detection\nexport type Framework =\n | 'react'\n | 'vue'\n | 'svelte'\n | 'solid'\n | 'astro'\n | 'angular'\n | 'vanilla'\n | 'node'\n | 'auto'\n\n// Resolved framework (excludes 'auto')\nexport type ResolvedFramework = Exclude<Framework, 'auto'>\n\n// Environment types\nexport type Environment = 'browser' | 'node' | 'universal' | 'auto'\n\n// Resolved environment (excludes 'auto')\nexport type ResolvedEnvironment = Exclude<Environment, 'auto'>\n\n// Git providers\nexport type GitProvider = 'gitlab' | 'github' | 'bitbucket' | null\n\n// CSS preprocessor types\nexport type CssPreprocessor = 'scss' | 'sass' | 'less' | null\n\n// CSS type detection result\nexport interface CssTypeResult {\n preprocessor: CssPreprocessor\n tailwind: boolean\n modules: boolean\n postcss: boolean\n}\n\n// Full detection result from autoDetect()\nexport interface DetectionResult {\n framework: ResolvedFramework\n environment: ResolvedEnvironment\n typescript: boolean\n gitProvider: GitProvider\n cssType: CssTypeResult\n electron: boolean\n}\n\n// Package.json structure (minimal subset we use)\nexport interface PackageJson {\n name?: string\n version?: string\n type?: 'module' | 'commonjs'\n main?: string\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n repository?: string | { type?: string; url?: string }\n scripts?: Record<string, string>\n}\n\n// Base options shared by all tool factories\nexport interface BaseOptions {\n framework?: Framework\n environment?: Environment\n cwd?: string\n customIgnores?: string[]\n}\n\n// ESLint-specific options\nexport interface EslintOptions extends BaseOptions {\n typescript?: boolean | 'auto'\n ignorePaths?: string[]\n rules?: Record<string, unknown>\n}\n\n// Prettier-specific options\nexport interface PrettierOptions extends BaseOptions {\n // Prettier options can include any valid Prettier config option\n [key: string]: unknown\n}\n\n// Stylelint-specific options\nexport interface StylelintOptions extends BaseOptions {\n cssType?: CssTypeResult | 'auto'\n rules?: Record<string, unknown>\n extends?: string | string[]\n overrides?: unknown[]\n}\n\n// TypeScript tool-specific options\nexport interface TypescriptOptions extends BaseOptions {\n checker?: 'modern' | 'legacy' | 'auto'\n strict?: boolean\n electron?: boolean\n renderer?: ResolvedFramework\n compilerOptions?: Record<string, unknown>\n}\n\n// semantic-release-specific options\nexport type ReleasePreset = 'default' | 'library' | 'monorepo'\n\nexport interface SemanticReleaseOptions extends BaseOptions {\n preset?: ReleasePreset\n gitProvider?: GitProvider | 'auto'\n branches?: unknown[]\n plugins?: unknown[]\n}\n\n// Union type for all tool options\nexport type ToolOptions =\n | EslintOptions\n | PrettierOptions\n | StylelintOptions\n | TypescriptOptions\n | SemanticReleaseOptions\n\n// Type checker options\nexport type TypeChecker = 'tsgo' | 'vue-tsc' | 'tsc'\nexport type TypeCheckerPreference = 'modern' | 'legacy' | 'auto'\n\n// Config metadata added to TypeScript and semantic-release configs\nexport interface ConfigMeta {\n framework: ResolvedFramework\n environment?: ResolvedEnvironment\n checker?: TypeChecker\n experimental?: boolean\n renderer?: ResolvedFramework\n multiConfig?: boolean\n generatedBy?: string\n}\n\n// ESLint flat config object (simplified)\nexport interface EslintFlatConfig {\n name?: string\n files?: string[]\n ignores?: string[]\n languageOptions?: Record<string, unknown>\n plugins?: Record<string, unknown>\n rules?: Record<string, unknown>\n settings?: Record<string, unknown>\n processor?: unknown\n}\n\n// Prettier config object\nexport interface PrettierConfig {\n printWidth?: number\n tabWidth?: number\n useTabs?: boolean\n semi?: boolean\n singleQuote?: boolean\n quoteProps?: 'as-needed' | 'consistent' | 'preserve'\n jsxSingleQuote?: boolean\n trailingComma?: 'none' | 'es5' | 'all'\n bracketSpacing?: boolean\n bracketSameLine?: boolean\n arrowParens?: 'avoid' | 'always'\n proseWrap?: 'always' | 'never' | 'preserve'\n htmlWhitespaceSensitivity?: 'css' | 'strict' | 'ignore'\n endOfLine?: 'auto' | 'lf' | 'crlf' | 'cr'\n singleAttributePerLine?: boolean\n plugins?: string[]\n overrides?: Array<{\n files: string | string[]\n options?: Record<string, unknown>\n }>\n [key: string]: unknown\n}\n\n// Stylelint config object\nexport interface StylelintConfig {\n extends?: string | string[]\n plugins?: string[]\n rules?: Record<string, unknown>\n overrides?: Array<{\n files: string[]\n rules?: Record<string, unknown>\n customSyntax?: string\n }>\n ignoreFiles?: string[]\n customSyntax?: string\n [key: string]: unknown\n}\n\n// TypeScript config object (tsconfig.json structure)\nexport interface TypescriptConfig {\n $schema?: string\n files?: string[]\n compilerOptions?: Record<string, unknown>\n include?: string[]\n exclude?: string[]\n references?: Array<{ path: string }>\n _meta?: ConfigMeta\n}\n\n// Electron multi-config structure (4 separate tsconfig files)\nexport interface ElectronMultiConfig {\n root: TypescriptConfig\n node: TypescriptConfig\n web: TypescriptConfig\n tests: TypescriptConfig\n _meta?: ConfigMeta\n}\n\n// semantic-release config object\nexport interface SemanticReleaseConfig {\n branches?: unknown[]\n plugins?: unknown[]\n tagFormat?: string\n ci?: boolean\n _meta?: {\n preset: ReleasePreset\n gitProvider: GitProvider\n }\n [key: string]: unknown\n}\n\n// Custom error class for configuration errors\nexport class ConfigError extends Error {\n public readonly context?: Record<string, unknown>\n\n constructor(message: string, context?: Record<string, unknown>) {\n super(message)\n this.name = 'ConfigError'\n this.context = context\n\n // Maintain proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ConfigError)\n }\n }\n}\n","import { existsSync } from 'fs'\nimport { join } from 'path'\n\nimport {\n ConfigError,\n type ResolvedFramework,\n type TypeChecker,\n type TypeCheckerPreference\n} from '#core/types.js'\n\n/**\n * Detect which TypeScript checker to use\n * Priority: tsgo (fastest) -> vue-tsc (Vue SFCs) -> tsc (fallback)\n *\n * @param framework - Detected framework\n * @param preference - User preference: 'auto' | 'modern' | 'legacy'\n * @param cwd - Current working directory\n * @returns Checker to use: 'tsgo' | 'vue-tsc' | 'tsc'\n */\nexport function detectTypeChecker(\n framework: ResolvedFramework | string,\n preference: TypeCheckerPreference = 'auto',\n cwd: string = process.cwd()\n): TypeChecker {\n // User explicitly requested legacy\n if (preference === 'legacy') {\n return framework === 'vue' ? 'vue-tsc' : 'tsc'\n }\n\n // User explicitly requested modern\n if (preference === 'modern') {\n return 'tsgo'\n }\n\n // Auto-detection (default)\n if (preference === 'auto') {\n // Vue needs vue-tsc for SFC support (tsgo doesn't support .vue yet)\n if (framework === 'vue') {\n const hasVueTsc = hasPackageInstalled('vue-tsc', cwd)\n if (hasVueTsc) return 'vue-tsc'\n\n console.warn(\n '⚠️ Vue project detected but vue-tsc not found.\\n' +\n ' Install vue-tsc as a dev dependency to enable .vue file checking.\\n' +\n \" Falling back to tsgo/tsc (won't check .vue files)\"\n )\n }\n\n // Check if tsgo is available\n const hasTsgo = hasPackageInstalled('@typescript/native-preview', cwd)\n if (hasTsgo) {\n return 'tsgo'\n }\n\n // Fallback to standard tsc\n return 'tsc'\n }\n\n throw new ConfigError(`Unknown checker preference: \"${preference}\"`, {\n received: preference,\n validOptions: ['auto', 'modern', 'legacy']\n })\n}\n\n/**\n * Check if package is installed in node_modules\n *\n * @param packageName - Package to check for\n * @param cwd - Current working directory\n * @returns True if package is installed\n */\nfunction hasPackageInstalled(packageName: string, cwd: string): boolean {\n try {\n const packagePath = join(cwd, 'node_modules', packageName, 'package.json')\n return existsSync(packagePath)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n console.warn(`Warning: Error checking for ${packageName}: ${message}`)\n return false\n }\n}\n\n/**\n * Get the command to run for type checking\n *\n * @param checker - Checker to use: 'tsgo' | 'tsc' | 'vue-tsc'\n * @param options - Command options\n * @param options.watch - Enable watch mode\n * @param options.noEmit - Skip emit (type check only)\n * @param options.project - Project path\n * @returns Command string\n */\nexport function getTypeCheckCommand(\n checker: TypeChecker,\n options: { watch?: boolean; noEmit?: boolean; project?: string } = {}\n): string {\n const { watch = false, noEmit = true, project = '.' } = options\n\n const baseCmd = checker // 'tsgo', 'tsc', or 'vue-tsc'\n const flags: string[] = []\n\n if (noEmit) flags.push('--noEmit')\n if (watch) flags.push('--watch')\n if (project !== '.') flags.push(`-p ${project}`)\n\n return `${baseCmd} ${flags.join(' ')}`.trim()\n}\n\n/**\n * Get fallback chain for script generation\n * Example: \"tsgo --noEmit || tsc --noEmit\"\n *\n * @param checker - Primary checker to use\n * @param framework - Framework name\n * @returns Command with fallback\n */\nexport function getTypeCheckCommandWithFallback(\n checker: TypeChecker,\n framework: ResolvedFramework | string\n): string {\n const primary = getTypeCheckCommand(checker, { noEmit: true })\n\n // No fallback needed for vue-tsc or tsc (they're already fallbacks)\n if (checker === 'vue-tsc' || checker === 'tsc') {\n return primary\n }\n\n // tsgo with fallback\n const fallback =\n framework === 'vue'\n ? getTypeCheckCommand('vue-tsc', { noEmit: true })\n : getTypeCheckCommand('tsc', { noEmit: true })\n\n return `${primary} || ${fallback}`\n}\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Base TypeScript configuration\n * Strict, modern defaults that work across all frameworks\n *\n * Based on TypeScript 5.x best practices with ES2022 target\n */\nconst basePreset: TypescriptConfig = {\n compilerOptions: {\n // Language and Environment\n target: 'ES2022',\n lib: ['ES2022'],\n\n // Modules\n module: 'ESNext',\n moduleResolution: 'Bundler',\n resolveJsonModule: true,\n\n // Emit\n declaration: true,\n declarationMap: true,\n sourceMap: true,\n removeComments: false,\n\n // Interop Constraints\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n\n // Type Checking (Strict Mode)\n strict: true,\n noImplicitAny: true,\n strictNullChecks: true,\n strictFunctionTypes: true,\n strictBindCallApply: true,\n strictPropertyInitialization: true,\n noImplicitThis: true,\n alwaysStrict: true,\n\n // Additional Checks\n noUnusedLocals: true,\n noUnusedParameters: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n noUncheckedIndexedAccess: true,\n noImplicitOverride: true,\n noPropertyAccessFromIndexSignature: false,\n\n // Completeness\n skipLibCheck: true, // Faster, skip checking .d.ts files\n\n // Advanced\n allowUnusedLabels: false,\n allowUnreachableCode: false\n },\n include: ['src/**/*'],\n exclude: ['node_modules', 'dist', 'build', 'out', 'coverage', '.nyc_output']\n}\n\nexport default basePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Browser environment TypeScript configuration\n * For client-side applications running in web browsers\n */\nconst browserPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n target: 'ES2020' // Good browser support\n }\n}\n\nexport default browserPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Node.js environment TypeScript configuration\n * For server-side applications running in Node.js\n */\nconst nodePreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2024'],\n target: 'ES2024',\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n types: ['node']\n }\n}\n\nexport default nodePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Universal environment TypeScript configuration\n * For SSR/SSG applications (Next.js, Nuxt, Astro, SvelteKit)\n * Combines Node.js for server and browser for client\n */\nconst universalPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n target: 'ES2022',\n types: ['node']\n }\n}\n\nexport default universalPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Angular TypeScript configuration\n * Strict mode enabled by default (Angular best practice)\n */\nconst angularPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n experimentalDecorators: true,\n emitDecoratorMetadata: true\n }\n}\n\nexport default angularPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Astro TypeScript configuration\n * Multi-framework support with islands architecture\n */\nconst astroPreset: TypescriptConfig = {\n compilerOptions: {\n jsx: 'react-jsx', // Astro uses React-style JSX\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n types: ['astro/client']\n }\n}\n\nexport default astroPreset\n","import type { ElectronMultiConfig, ResolvedFramework, TypescriptConfig } from '#core/types.js'\n\n/**\n * Electron TypeScript preset - generates multi-config setup\n * Replaces @electron-toolkit/tsconfig with framework-aware configs\n *\n * Generates 4 separate tsconfig files:\n * - tsconfig.json: Root orchestrator with project references\n * - tsconfig.node.json: Main process + Preload scripts (Node.js environment)\n * - tsconfig.web.json: Renderer process (browser environment with framework)\n * - tsconfig.tests.json: Test environment (Vitest + Playwright)\n */\n\n/**\n * Create Electron multi-config preset\n * @param renderer - Renderer framework ('vue', 'react', 'svelte', 'vanilla')\n * @returns Object containing all 4 tsconfig configurations\n */\nexport default function createElectronPreset(\n renderer: ResolvedFramework = 'vue'\n): Omit<ElectronMultiConfig, '_meta'> {\n // Determine renderer-specific file extensions\n const rendererExtensions = renderer === 'vue' ? ['src/renderer/**/*.vue'] : []\n\n const root: TypescriptConfig = {\n files: [],\n references: [{ path: './tsconfig.node.json' }, { path: './tsconfig.web.json' }]\n }\n\n const node: TypescriptConfig = {\n $schema: 'https://json.schemastore.org/tsconfig',\n include: ['electron.vite.config.*', 'package.json', 'src/main/*', 'src/preload/*'],\n compilerOptions: {\n composite: true,\n target: 'ES2024',\n lib: ['ES2024', 'ESNext'],\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n types: ['electron-vite/node'],\n baseUrl: '.',\n paths: {\n '@/*': ['src/*'],\n '@main/*': ['src/main/*'],\n '@preload/*': ['src/preload/*']\n },\n resolveJsonModule: true\n }\n }\n\n const web: TypescriptConfig = {\n $schema: 'https://json.schemastore.org/tsconfig',\n include: [\n 'src/renderer/env.d.ts',\n 'src/renderer/**/*',\n ...rendererExtensions,\n 'src/preload/*.d.ts',\n 'package.json'\n ],\n compilerOptions: {\n composite: true,\n target: 'ES2024',\n lib: ['ES2024', 'ESNext', 'DOM', 'DOM.Iterable'],\n baseUrl: '.',\n paths: {\n '@/*': ['src/*'],\n '@renderer/*': ['src/renderer/*'],\n '@main/*': ['src/main/*'],\n '@preload/*': ['src/preload/*']\n },\n strict: true,\n noUnusedParameters: true,\n noFallthroughCasesInSwitch: true,\n noUncheckedIndexedAccess: true\n }\n }\n\n const tests: TypescriptConfig = {\n $schema: 'https://json.schemastore.org/tsconfig',\n include: ['tests/**/*', 'src/renderer/**/*.vue', 'src/renderer/env.d.ts'],\n compilerOptions: {\n composite: true,\n baseUrl: '.',\n paths: {\n '@/*': ['src/*'],\n '@renderer/*': ['src/renderer/*'],\n '@main/*': ['src/main/*'],\n '@preload/*': ['src/preload/*'],\n '@tests/*': ['tests/*'],\n '@unit/*': ['tests/unit/*'],\n '@integration/*': ['tests/integration/*'],\n '@fixtures/*': ['tests/fixtures/*'],\n '@setup/*': ['tests/setup/*']\n },\n types: ['vitest/globals', '@playwright/test'],\n strict: false\n }\n }\n\n return { root, node, web, tests }\n}\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Node.js backend TypeScript configuration\n * For server-side applications, APIs, and CLIs\n */\nconst nodePreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022'],\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n types: ['node']\n }\n}\n\nexport default nodePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * React TypeScript configuration\n * Supports modern React 17+ with automatic JSX runtime\n */\nconst reactPreset: TypescriptConfig = {\n compilerOptions: {\n jsx: 'react-jsx', // Modern React 17+ automatic runtime\n lib: ['ES2022', 'DOM', 'DOM.Iterable']\n }\n}\n\nexport default reactPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Solid.js TypeScript configuration\n * Uses JSX similar to React\n */\nconst solidPreset: TypescriptConfig = {\n compilerOptions: {\n jsx: 'preserve', // Solid uses its own JSX transform\n jsxImportSource: 'solid-js',\n lib: ['ES2022', 'DOM', 'DOM.Iterable']\n }\n}\n\nexport default solidPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Svelte TypeScript configuration\n * Note: Use svelte-check for .svelte file type checking\n */\nconst sveltePreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n types: ['svelte']\n }\n}\n\nexport default sveltePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Vanilla TypeScript configuration\n * Plain TypeScript without any framework\n */\nconst vanillaPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable']\n }\n}\n\nexport default vanillaPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Vue.js TypeScript configuration\n * Requires vue-tsc for Single File Component (.vue) support\n */\nconst vuePreset: TypescriptConfig & { vueCompilerOptions?: Record<string, unknown> } = {\n compilerOptions: {\n jsx: 'preserve', // Vue compiler handles JSX transformation\n jsxImportSource: 'vue',\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n types: ['vite/client'] // Common for Vue + Vite projects\n },\n // Vue-specific options (for vue-tsc)\n vueCompilerOptions: {\n extensions: ['.vue'],\n vitePressExtensions: ['.md']\n }\n}\n\nexport default vuePreset\n","import { detectTypeChecker } from './checker-detection.js'\nimport basePreset from './presets/base.js'\nimport browserEnv from './presets/environments/browser.js'\nimport nodeEnv from './presets/environments/node.js'\nimport universalEnv from './presets/environments/universal.js'\nimport angularFramework from './presets/frameworks/angular.js'\nimport astroFramework from './presets/frameworks/astro.js'\nimport electronFramework from './presets/frameworks/electron.js'\nimport nodeFramework from './presets/frameworks/node.js'\nimport reactFramework from './presets/frameworks/react.js'\nimport solidFramework from './presets/frameworks/solid.js'\nimport svelteFramework from './presets/frameworks/svelte.js'\nimport vanillaFramework from './presets/frameworks/vanilla.js'\nimport vueFramework from './presets/frameworks/vue.js'\n\nimport { autoDetect } from '#core/detectors.js'\nimport {\n ConfigError,\n type ElectronMultiConfig,\n type ResolvedEnvironment,\n type ResolvedFramework,\n type TypeChecker,\n type TypeCheckerPreference,\n type TypescriptConfig,\n type TypescriptOptions\n} from '#core/types.js'\n\n// Valid renderer framework options for Electron\nconst VALID_RENDERERS: readonly ResolvedFramework[] = [\n 'react',\n 'vue',\n 'svelte',\n 'solid',\n 'astro',\n 'angular',\n 'vanilla'\n] as const\n\n/**\n * Create TypeScript configuration with auto-detection\n *\n * @param options - Configuration options\n * @returns TypeScript configuration object\n *\n * @example\n * // Auto-detect framework\n * export default await createTypescriptConfig();\n *\n * @example\n * // Explicit framework\n * export default await createTypescriptConfig({ framework: 'react' });\n *\n * @example\n * // With custom compiler options\n * export default await createTypescriptConfig({\n * framework: 'react',\n * compilerOptions: { outDir: './build' }\n * });\n */\n// eslint-disable-next-line require-await -- async for API consistency with other tools\nexport async function createTypescriptConfig(\n options: TypescriptOptions = {}\n): Promise<TypescriptConfig | ElectronMultiConfig> {\n const {\n framework: frameworkOption = 'auto',\n environment: environmentOption = 'auto',\n checker: checkerPreference = 'auto',\n strict = true,\n electron: electronOption,\n renderer: rendererOption,\n compilerOptions: userCompilerOptions = {},\n cwd = process.cwd()\n } = options\n\n // Auto-detect framework, environment, and Electron\n const detected =\n frameworkOption === 'auto' || environmentOption === 'auto' || electronOption === undefined\n ? autoDetect(cwd)\n : { framework: frameworkOption, environment: environmentOption, electron: electronOption }\n\n const framework: ResolvedFramework =\n frameworkOption === 'auto'\n ? (detected.framework as ResolvedFramework)\n : (frameworkOption as ResolvedFramework)\n const environment: ResolvedEnvironment =\n environmentOption === 'auto'\n ? (detected.environment as ResolvedEnvironment)\n : (environmentOption as ResolvedEnvironment)\n const isElectron = electronOption !== undefined ? electronOption : detected.electron\n\n // Handle Electron multi-config\n if (isElectron) {\n const renderer = rendererOption || framework\n\n // Validate renderer option\n if (!VALID_RENDERERS.includes(renderer as ResolvedFramework)) {\n throw new ConfigError(\n `Invalid renderer option for Electron: \"${renderer}\". Must be one of: ${VALID_RENDERERS.join(', ')}`,\n {\n received: renderer,\n validRenderers: VALID_RENDERERS\n }\n )\n }\n\n const checker = detectTypeChecker(\n framework,\n checkerPreference as TypeCheckerPreference,\n cwd\n ) as TypeChecker\n\n console.log(\n `⚡ Electron TypeScript Config: ${renderer} renderer | Checker: ${checker}${checker === 'tsgo' ? ' (10x faster!)' : ''}`\n )\n\n const configs = electronFramework(renderer)\n\n return {\n ...configs,\n _meta: {\n framework: 'electron' as ResolvedFramework,\n renderer,\n checker,\n multiConfig: true,\n experimental: checker === 'tsgo',\n generatedBy: '@dimensional-innovations/tool-config'\n }\n }\n }\n\n // Detect which type checker to use\n const checker = detectTypeChecker(\n framework,\n checkerPreference as TypeCheckerPreference,\n cwd\n ) as TypeChecker\n\n // Log detection\n console.log(\n `🔍 TypeScript Config: ${framework} | ${environment} | Checker: ${checker}${checker === 'tsgo' ? ' (10x faster!)' : ''}`\n )\n\n // Load presets\n const config = loadPresets(framework, environment, strict)\n\n // Merge user overrides\n if (userCompilerOptions && Object.keys(userCompilerOptions).length > 0) {\n config.compilerOptions = {\n ...config.compilerOptions,\n ...userCompilerOptions\n }\n }\n\n // Add metadata\n config._meta = {\n framework,\n environment,\n checker,\n experimental: checker === 'tsgo',\n generatedBy: '@dimensional-innovations/tool-config'\n }\n\n return config\n}\n\n/**\n * Load and merge configuration presets\n *\n * @param framework - Framework name\n * @param environment - Environment name\n * @param strict - Enable strict mode\n * @returns Merged configuration\n */\nfunction loadPresets(\n framework: ResolvedFramework,\n environment: ResolvedEnvironment,\n strict: boolean\n): TypescriptConfig {\n const config: TypescriptConfig = structuredClone(basePreset)\n\n // Load environment preset (synchronous imports)\n const envPreset = loadEnvironmentPreset(environment)\n mergeConfig(config, envPreset)\n\n // Load framework preset (synchronous imports)\n const frameworkPreset = loadFrameworkPreset(framework)\n mergeConfig(config, frameworkPreset)\n\n // Apply strict mode overrides if disabled\n if (!strict) {\n config.compilerOptions = config.compilerOptions || {}\n config.compilerOptions.strict = false\n config.compilerOptions.noImplicitAny = false\n // Keep other strict checks, just disable the master switch\n }\n\n return config\n}\n\n/**\n * Load environment-specific preset\n *\n * @param environment - Environment name\n * @returns Environment preset\n */\nfunction loadEnvironmentPreset(environment: ResolvedEnvironment): TypescriptConfig {\n switch (environment) {\n case 'browser':\n return browserEnv\n case 'node':\n return nodeEnv\n case 'universal':\n return universalEnv\n default:\n return {}\n }\n}\n\n/**\n * Load framework-specific preset\n *\n * @param framework - Framework name\n * @returns Framework preset\n */\nfunction loadFrameworkPreset(framework: ResolvedFramework | string): TypescriptConfig {\n switch (framework) {\n case 'react':\n return reactFramework\n case 'vue':\n return vueFramework\n case 'svelte':\n return svelteFramework\n case 'solid':\n return solidFramework\n case 'astro':\n return astroFramework\n case 'angular':\n return angularFramework\n case 'node':\n return nodeFramework\n case 'vanilla':\n default:\n return vanillaFramework\n }\n}\n\n/**\n * Deep merge configuration objects\n *\n * @param target - Target configuration\n * @param source - Source configuration to merge\n */\nfunction mergeConfig(target: TypescriptConfig, source: TypescriptConfig): void {\n for (const key in source) {\n const sourceKey = key as keyof TypescriptConfig\n if (key === 'compilerOptions' && target.compilerOptions) {\n Object.assign(target.compilerOptions, source.compilerOptions)\n } else if (key === 'include' && Array.isArray(source.include)) {\n target.include = [...new Set([...(target.include || []), ...source.include])]\n } else if (key === 'exclude' && Array.isArray(source.exclude)) {\n target.exclude = [...new Set([...(target.exclude || []), ...source.exclude])]\n } else {\n ;(target as Record<string, unknown>)[sourceKey] = source[sourceKey]\n }\n }\n}\n\nexport default createTypescriptConfig\n"]}
|