@dimensional-innovations/tool-config 4.0.0 → 5.0.1
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 +7 -120
- package/dist/cli/index.js +1812 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/index.d.ts +401 -0
- package/dist/index.js +2644 -0
- package/dist/index.js.map +1 -0
- package/package.json +22 -15
- package/bin/lib/ci-setup.js +0 -142
- package/bin/lib/formatting.js +0 -103
- package/bin/lib/handlers/eslint.js +0 -61
- package/bin/lib/handlers/prettier.js +0 -83
- package/bin/lib/handlers/semantic-release.js +0 -60
- package/bin/lib/handlers/stylelint.js +0 -85
- package/bin/lib/handlers/typescript.js +0 -156
- package/bin/lib/package-manager.js +0 -201
- package/bin/lib/ui.js +0 -239
- package/bin/lib/uninstall.js +0 -199
- package/bin/lib/validators.js +0 -28
- package/bin/setup-tool-config.js +0 -442
- package/src/detectors.js +0 -286
- package/src/index.js +0 -69
- package/src/tools/eslint/index.js +0 -282
- package/src/tools/eslint/presets/base.js +0 -75
- package/src/tools/eslint/presets/environments/browser.js +0 -16
- package/src/tools/eslint/presets/environments/node.js +0 -21
- package/src/tools/eslint/presets/environments/universal.js +0 -18
- package/src/tools/eslint/presets/frameworks/angular.js +0 -80
- package/src/tools/eslint/presets/frameworks/astro.js +0 -43
- package/src/tools/eslint/presets/frameworks/node.js +0 -63
- package/src/tools/eslint/presets/frameworks/react.js +0 -81
- package/src/tools/eslint/presets/frameworks/solid.js +0 -50
- package/src/tools/eslint/presets/frameworks/svelte.js +0 -65
- package/src/tools/eslint/presets/frameworks/vanilla.js +0 -22
- package/src/tools/eslint/presets/frameworks/vue.js +0 -159
- package/src/tools/eslint/presets/imports.js +0 -47
- package/src/tools/eslint/presets/typescript.js +0 -142
- package/src/tools/prettier/README.md +0 -398
- package/src/tools/prettier/index.js +0 -132
- package/src/tools/prettier/presets/base.js +0 -36
- package/src/tools/prettier/presets/frameworks/astro.js +0 -15
- package/src/tools/prettier/presets/frameworks/react.js +0 -15
- package/src/tools/prettier/presets/frameworks/svelte.js +0 -22
- package/src/tools/prettier/presets/frameworks/vanilla.js +0 -13
- package/src/tools/prettier/presets/frameworks/vue.js +0 -21
- package/src/tools/prettier/presets/prettierignore.js +0 -57
- package/src/tools/semantic-release/CI_SETUP.md +0 -66
- package/src/tools/semantic-release/README.md +0 -533
- package/src/tools/semantic-release/index.js +0 -130
- package/src/tools/semantic-release/presets/default.js +0 -37
- package/src/tools/semantic-release/presets/library.js +0 -58
- package/src/tools/semantic-release/presets/monorepo.js +0 -48
- package/src/tools/semantic-release/templates/.gitlab-ci.yml +0 -89
- package/src/tools/semantic-release/templates/bitbucket-pipelines.yml +0 -100
- package/src/tools/semantic-release/templates/github-workflow.yml +0 -107
- package/src/tools/stylelint/README.md +0 -425
- package/src/tools/stylelint/index.js +0 -195
- package/src/tools/stylelint/presets/base.js +0 -50
- package/src/tools/stylelint/presets/css-modules.js +0 -43
- package/src/tools/stylelint/presets/frameworks/react.js +0 -18
- package/src/tools/stylelint/presets/frameworks/svelte.js +0 -28
- package/src/tools/stylelint/presets/frameworks/vanilla.js +0 -14
- package/src/tools/stylelint/presets/frameworks/vue.js +0 -38
- package/src/tools/stylelint/presets/scss.js +0 -83
- package/src/tools/stylelint/presets/tailwind.js +0 -49
- package/src/tools/typescript/README.md +0 -665
- package/src/tools/typescript/checker-detection.js +0 -113
- package/src/tools/typescript/index.js +0 -202
- package/src/tools/typescript/presets/base.js +0 -58
- package/src/tools/typescript/presets/environments/browser.js +0 -10
- package/src/tools/typescript/presets/environments/node.js +0 -11
- package/src/tools/typescript/presets/environments/universal.js +0 -11
- package/src/tools/typescript/presets/frameworks/angular.js +0 -11
- package/src/tools/typescript/presets/frameworks/astro.js +0 -11
- package/src/tools/typescript/presets/frameworks/electron.js +0 -100
- package/src/tools/typescript/presets/frameworks/node.js +0 -12
- package/src/tools/typescript/presets/frameworks/react.js +0 -10
- package/src/tools/typescript/presets/frameworks/solid.js +0 -11
- package/src/tools/typescript/presets/frameworks/svelte.js +0 -10
- package/src/tools/typescript/presets/frameworks/vanilla.js +0 -9
- package/src/tools/typescript/presets/frameworks/vue.js +0 -17
- package/src/utils/ignore-patterns.js +0 -157
- package/src/utils/package-reader.js +0 -42
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { existsSync } from 'fs'
|
|
2
|
-
import { join } from 'path'
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Detect which TypeScript checker to use
|
|
6
|
-
* Priority: tsgo (fastest) -> vue-tsc (Vue SFCs) -> tsc (fallback)
|
|
7
|
-
*
|
|
8
|
-
* @param {string} framework - Detected framework
|
|
9
|
-
* @param {string} preference - User preference: 'auto' | 'modern' | 'legacy'
|
|
10
|
-
* @param {string} cwd - Current working directory
|
|
11
|
-
* @returns {string} Checker to use: 'tsgo' | 'vue-tsc' | 'tsc'
|
|
12
|
-
*/
|
|
13
|
-
export function detectTypeChecker(framework, preference = 'auto', cwd = process.cwd()) {
|
|
14
|
-
// User explicitly requested legacy
|
|
15
|
-
if (preference === 'legacy') {
|
|
16
|
-
return framework === 'vue' ? 'vue-tsc' : 'tsc'
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// User explicitly requested modern
|
|
20
|
-
if (preference === 'modern') {
|
|
21
|
-
return 'tsgo'
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Auto-detection (default)
|
|
25
|
-
if (preference === 'auto') {
|
|
26
|
-
// Vue needs vue-tsc for SFC support (tsgo doesn't support .vue yet)
|
|
27
|
-
if (framework === 'vue') {
|
|
28
|
-
const hasVueTsc = hasPackageInstalled('vue-tsc', cwd)
|
|
29
|
-
if (hasVueTsc) return 'vue-tsc'
|
|
30
|
-
|
|
31
|
-
console.warn(
|
|
32
|
-
'⚠️ Vue project detected but vue-tsc not found.\n' +
|
|
33
|
-
' Install with: npm install -D vue-tsc\n' +
|
|
34
|
-
" Falling back to tsgo/tsc (won't check .vue files)"
|
|
35
|
-
)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Check if tsgo is available
|
|
39
|
-
const hasTsgo = hasPackageInstalled('@typescript/native-preview', cwd)
|
|
40
|
-
if (hasTsgo) {
|
|
41
|
-
return 'tsgo'
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// Fallback to standard tsc
|
|
45
|
-
return 'tsc'
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
throw new Error(`Unknown checker preference: ${preference}`)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Check if package is installed in node_modules
|
|
53
|
-
*
|
|
54
|
-
* @param {string} packageName - Package to check for
|
|
55
|
-
* @param {string} cwd - Current working directory
|
|
56
|
-
* @returns {boolean} True if package is installed
|
|
57
|
-
*/
|
|
58
|
-
function hasPackageInstalled(packageName, cwd) {
|
|
59
|
-
try {
|
|
60
|
-
const packagePath = join(cwd, 'node_modules', packageName, 'package.json')
|
|
61
|
-
return existsSync(packagePath)
|
|
62
|
-
} catch {
|
|
63
|
-
return false
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Get the command to run for type checking
|
|
69
|
-
*
|
|
70
|
-
* @param {string} checker - Checker to use: 'tsgo' | 'tsc' | 'vue-tsc'
|
|
71
|
-
* @param {Object} options - Command options
|
|
72
|
-
* @param {boolean} [options.watch=false] - Enable watch mode
|
|
73
|
-
* @param {boolean} [options.noEmit=true] - Skip emit (type check only)
|
|
74
|
-
* @param {string} [options.project='.'] - Project path
|
|
75
|
-
* @returns {string} Command string
|
|
76
|
-
*/
|
|
77
|
-
export function getTypeCheckCommand(checker, options = {}) {
|
|
78
|
-
const { watch = false, noEmit = true, project = '.' } = options
|
|
79
|
-
|
|
80
|
-
const baseCmd = checker // 'tsgo', 'tsc', or 'vue-tsc'
|
|
81
|
-
const flags = []
|
|
82
|
-
|
|
83
|
-
if (noEmit) flags.push('--noEmit')
|
|
84
|
-
if (watch) flags.push('--watch')
|
|
85
|
-
if (project !== '.') flags.push(`-p ${project}`)
|
|
86
|
-
|
|
87
|
-
return `${baseCmd} ${flags.join(' ')}`.trim()
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Get fallback chain for script generation
|
|
92
|
-
* Example: "tsgo --noEmit || tsc --noEmit"
|
|
93
|
-
*
|
|
94
|
-
* @param {string} checker - Primary checker to use
|
|
95
|
-
* @param {string} framework - Framework name
|
|
96
|
-
* @returns {string} Command with fallback
|
|
97
|
-
*/
|
|
98
|
-
export function getTypeCheckCommandWithFallback(checker, framework) {
|
|
99
|
-
const primary = getTypeCheckCommand(checker, { noEmit: true })
|
|
100
|
-
|
|
101
|
-
// No fallback needed for vue-tsc or tsc (they're already fallbacks)
|
|
102
|
-
if (checker === 'vue-tsc' || checker === 'tsc') {
|
|
103
|
-
return primary
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// tsgo with fallback
|
|
107
|
-
const fallback =
|
|
108
|
-
framework === 'vue'
|
|
109
|
-
? getTypeCheckCommand('vue-tsc', { noEmit: true })
|
|
110
|
-
: getTypeCheckCommand('tsc', { noEmit: true })
|
|
111
|
-
|
|
112
|
-
return `${primary} || ${fallback}`
|
|
113
|
-
}
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
import { autoDetect } from '../../detectors.js'
|
|
2
|
-
|
|
3
|
-
import { detectTypeChecker } from './checker-detection.js'
|
|
4
|
-
import basePreset from './presets/base.js'
|
|
5
|
-
import browserEnv from './presets/environments/browser.js'
|
|
6
|
-
import nodeEnv from './presets/environments/node.js'
|
|
7
|
-
import universalEnv from './presets/environments/universal.js'
|
|
8
|
-
import angularFramework from './presets/frameworks/angular.js'
|
|
9
|
-
import astroFramework from './presets/frameworks/astro.js'
|
|
10
|
-
import electronFramework from './presets/frameworks/electron.js'
|
|
11
|
-
import nodeFramework from './presets/frameworks/node.js'
|
|
12
|
-
import reactFramework from './presets/frameworks/react.js'
|
|
13
|
-
import solidFramework from './presets/frameworks/solid.js'
|
|
14
|
-
import svelteFramework from './presets/frameworks/svelte.js'
|
|
15
|
-
import vanillaFramework from './presets/frameworks/vanilla.js'
|
|
16
|
-
import vueFramework from './presets/frameworks/vue.js'
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Create TypeScript configuration with auto-detection
|
|
20
|
-
*
|
|
21
|
-
* @param {Object} options - Configuration options
|
|
22
|
-
* @param {string} [options.framework='auto'] - Framework to configure for
|
|
23
|
-
* @param {string} [options.environment='auto'] - Target environment
|
|
24
|
-
* @param {boolean} [options.typescript=true] - Enable TypeScript (always true for this tool)
|
|
25
|
-
* @param {string} [options.checker='auto'] - Which checker: 'auto', 'modern' (tsgo), 'legacy' (tsc)
|
|
26
|
-
* @param {boolean} [options.strict=true] - Enable strict mode
|
|
27
|
-
* @param {Object} [options.compilerOptions={}] - User compiler option overrides
|
|
28
|
-
* @param {string} [options.cwd=process.cwd()] - Working directory
|
|
29
|
-
* @returns {Object} TypeScript configuration object
|
|
30
|
-
*/
|
|
31
|
-
export function createTypescriptConfig(options = {}) {
|
|
32
|
-
const {
|
|
33
|
-
framework: frameworkOption = 'auto',
|
|
34
|
-
environment: environmentOption = 'auto',
|
|
35
|
-
checker: checkerPreference = 'auto',
|
|
36
|
-
strict = true,
|
|
37
|
-
electron: electronOption,
|
|
38
|
-
renderer: rendererOption,
|
|
39
|
-
compilerOptions: userCompilerOptions = {},
|
|
40
|
-
cwd = process.cwd()
|
|
41
|
-
} = options
|
|
42
|
-
|
|
43
|
-
// Auto-detect framework, environment, and Electron
|
|
44
|
-
const detected =
|
|
45
|
-
frameworkOption === 'auto' || environmentOption === 'auto' || electronOption === undefined
|
|
46
|
-
? autoDetect(cwd)
|
|
47
|
-
: { framework: frameworkOption, environment: environmentOption, electron: electronOption }
|
|
48
|
-
|
|
49
|
-
const framework = frameworkOption === 'auto' ? detected.framework : frameworkOption
|
|
50
|
-
const environment = environmentOption === 'auto' ? detected.environment : environmentOption
|
|
51
|
-
const isElectron = electronOption !== undefined ? electronOption : detected.electron
|
|
52
|
-
|
|
53
|
-
// Handle Electron multi-config
|
|
54
|
-
if (isElectron) {
|
|
55
|
-
const renderer = rendererOption || framework
|
|
56
|
-
const checker = detectTypeChecker(framework, checkerPreference, cwd)
|
|
57
|
-
|
|
58
|
-
console.log(
|
|
59
|
-
`⚡ Electron TypeScript Config: ${renderer} renderer | Checker: ${checker}${checker === 'tsgo' ? ' (10x faster!)' : ''}`
|
|
60
|
-
)
|
|
61
|
-
|
|
62
|
-
const configs = electronFramework(renderer)
|
|
63
|
-
|
|
64
|
-
return {
|
|
65
|
-
...configs,
|
|
66
|
-
_meta: {
|
|
67
|
-
framework: 'electron',
|
|
68
|
-
renderer,
|
|
69
|
-
checker,
|
|
70
|
-
multiConfig: true,
|
|
71
|
-
experimental: checker === 'tsgo',
|
|
72
|
-
generatedBy: '@dimensional-innovations/tool-config'
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Detect which type checker to use
|
|
78
|
-
const checker = detectTypeChecker(framework, checkerPreference, cwd)
|
|
79
|
-
|
|
80
|
-
// Log detection
|
|
81
|
-
console.log(
|
|
82
|
-
`🔍 TypeScript Config: ${framework} | ${environment} | Checker: ${checker}${checker === 'tsgo' ? ' (10x faster!)' : ''}`
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
// Load presets
|
|
86
|
-
const config = loadPresets(framework, environment, strict)
|
|
87
|
-
|
|
88
|
-
// Merge user overrides
|
|
89
|
-
if (userCompilerOptions && Object.keys(userCompilerOptions).length > 0) {
|
|
90
|
-
config.compilerOptions = {
|
|
91
|
-
...config.compilerOptions,
|
|
92
|
-
...userCompilerOptions
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Add metadata
|
|
97
|
-
config._meta = {
|
|
98
|
-
framework,
|
|
99
|
-
environment,
|
|
100
|
-
checker,
|
|
101
|
-
experimental: checker === 'tsgo',
|
|
102
|
-
generatedBy: '@dimensional-innovations/tool-config'
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return config
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Load and merge configuration presets
|
|
110
|
-
*
|
|
111
|
-
* @param {string} framework - Framework name
|
|
112
|
-
* @param {string} environment - Environment name
|
|
113
|
-
* @param {boolean} strict - Enable strict mode
|
|
114
|
-
* @returns {Object} Merged configuration
|
|
115
|
-
*/
|
|
116
|
-
function loadPresets(framework, environment, strict) {
|
|
117
|
-
const config = JSON.parse(JSON.stringify(basePreset)) // Deep clone
|
|
118
|
-
|
|
119
|
-
// Load environment preset (synchronous imports)
|
|
120
|
-
const envPreset = loadEnvironmentPreset(environment)
|
|
121
|
-
mergeConfig(config, envPreset)
|
|
122
|
-
|
|
123
|
-
// Load framework preset (synchronous imports)
|
|
124
|
-
const frameworkPreset = loadFrameworkPreset(framework)
|
|
125
|
-
mergeConfig(config, frameworkPreset)
|
|
126
|
-
|
|
127
|
-
// Apply strict mode overrides if disabled
|
|
128
|
-
if (!strict) {
|
|
129
|
-
config.compilerOptions.strict = false
|
|
130
|
-
config.compilerOptions.noImplicitAny = false
|
|
131
|
-
// Keep other strict checks, just disable the master switch
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return config
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Load environment-specific preset
|
|
139
|
-
*
|
|
140
|
-
* @param {string} environment - Environment name
|
|
141
|
-
* @returns {Object} Environment preset
|
|
142
|
-
*/
|
|
143
|
-
function loadEnvironmentPreset(environment) {
|
|
144
|
-
switch (environment) {
|
|
145
|
-
case 'browser':
|
|
146
|
-
return browserEnv
|
|
147
|
-
case 'node':
|
|
148
|
-
return nodeEnv
|
|
149
|
-
case 'universal':
|
|
150
|
-
return universalEnv
|
|
151
|
-
default:
|
|
152
|
-
return {}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Load framework-specific preset
|
|
158
|
-
*
|
|
159
|
-
* @param {string} framework - Framework name
|
|
160
|
-
* @returns {Object} Framework preset
|
|
161
|
-
*/
|
|
162
|
-
function loadFrameworkPreset(framework) {
|
|
163
|
-
switch (framework) {
|
|
164
|
-
case 'react':
|
|
165
|
-
return reactFramework
|
|
166
|
-
case 'vue':
|
|
167
|
-
return vueFramework
|
|
168
|
-
case 'svelte':
|
|
169
|
-
return svelteFramework
|
|
170
|
-
case 'solid':
|
|
171
|
-
return solidFramework
|
|
172
|
-
case 'astro':
|
|
173
|
-
return astroFramework
|
|
174
|
-
case 'angular':
|
|
175
|
-
return angularFramework
|
|
176
|
-
case 'node':
|
|
177
|
-
return nodeFramework
|
|
178
|
-
case 'vanilla':
|
|
179
|
-
default:
|
|
180
|
-
return vanillaFramework
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Deep merge configuration objects
|
|
186
|
-
*
|
|
187
|
-
* @param {Object} target - Target configuration
|
|
188
|
-
* @param {Object} source - Source configuration to merge
|
|
189
|
-
*/
|
|
190
|
-
function mergeConfig(target, source) {
|
|
191
|
-
for (const key in source) {
|
|
192
|
-
if (key === 'compilerOptions' && target.compilerOptions) {
|
|
193
|
-
Object.assign(target.compilerOptions, source.compilerOptions)
|
|
194
|
-
} else if (key === 'include' && Array.isArray(source.include)) {
|
|
195
|
-
target.include = [...new Set([...(target.include || []), ...source.include])]
|
|
196
|
-
} else if (key === 'exclude' && Array.isArray(source.exclude)) {
|
|
197
|
-
target.exclude = [...new Set([...(target.exclude || []), ...source.exclude])]
|
|
198
|
-
} else {
|
|
199
|
-
target[key] = source[key]
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base TypeScript configuration
|
|
3
|
-
* Strict, modern defaults that work across all frameworks
|
|
4
|
-
*
|
|
5
|
-
* Based on TypeScript 5.x best practices with ES2022 target
|
|
6
|
-
*/
|
|
7
|
-
export default {
|
|
8
|
-
compilerOptions: {
|
|
9
|
-
// Language and Environment
|
|
10
|
-
target: 'ES2022',
|
|
11
|
-
lib: ['ES2022'],
|
|
12
|
-
|
|
13
|
-
// Modules
|
|
14
|
-
module: 'ESNext',
|
|
15
|
-
moduleResolution: 'Bundler',
|
|
16
|
-
resolveJsonModule: true,
|
|
17
|
-
|
|
18
|
-
// Emit
|
|
19
|
-
declaration: true,
|
|
20
|
-
declarationMap: true,
|
|
21
|
-
sourceMap: true,
|
|
22
|
-
removeComments: false,
|
|
23
|
-
|
|
24
|
-
// Interop Constraints
|
|
25
|
-
esModuleInterop: true,
|
|
26
|
-
allowSyntheticDefaultImports: true,
|
|
27
|
-
forceConsistentCasingInFileNames: true,
|
|
28
|
-
isolatedModules: true,
|
|
29
|
-
|
|
30
|
-
// Type Checking (Strict Mode)
|
|
31
|
-
strict: true,
|
|
32
|
-
noImplicitAny: true,
|
|
33
|
-
strictNullChecks: true,
|
|
34
|
-
strictFunctionTypes: true,
|
|
35
|
-
strictBindCallApply: true,
|
|
36
|
-
strictPropertyInitialization: true,
|
|
37
|
-
noImplicitThis: true,
|
|
38
|
-
alwaysStrict: true,
|
|
39
|
-
|
|
40
|
-
// Additional Checks
|
|
41
|
-
noUnusedLocals: true,
|
|
42
|
-
noUnusedParameters: true,
|
|
43
|
-
noImplicitReturns: true,
|
|
44
|
-
noFallthroughCasesInSwitch: true,
|
|
45
|
-
noUncheckedIndexedAccess: true,
|
|
46
|
-
noImplicitOverride: true,
|
|
47
|
-
noPropertyAccessFromIndexSignature: false,
|
|
48
|
-
|
|
49
|
-
// Completeness
|
|
50
|
-
skipLibCheck: true, // Faster, skip checking .d.ts files
|
|
51
|
-
|
|
52
|
-
// Advanced
|
|
53
|
-
allowUnusedLabels: false,
|
|
54
|
-
allowUnreachableCode: false
|
|
55
|
-
},
|
|
56
|
-
include: ['src/**/*'],
|
|
57
|
-
exclude: ['node_modules', 'dist', 'build', 'out', 'coverage', '.nyc_output']
|
|
58
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Universal (SSR/Isomorphic) environment TypeScript configuration
|
|
3
|
-
* For applications that run in both browser and Node.js contexts
|
|
4
|
-
*/
|
|
5
|
-
export default {
|
|
6
|
-
compilerOptions: {
|
|
7
|
-
lib: ['ES2022', 'DOM', 'DOM.Iterable'],
|
|
8
|
-
target: 'ES2020',
|
|
9
|
-
types: ['node'] // Include Node types for server-side code
|
|
10
|
-
}
|
|
11
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Astro TypeScript configuration
|
|
3
|
-
* Multi-framework support with islands architecture
|
|
4
|
-
*/
|
|
5
|
-
export default {
|
|
6
|
-
compilerOptions: {
|
|
7
|
-
jsx: 'react-jsx', // Astro uses React-style JSX
|
|
8
|
-
lib: ['ES2022', 'DOM', 'DOM.Iterable'],
|
|
9
|
-
types: ['astro/client']
|
|
10
|
-
}
|
|
11
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Electron TypeScript preset - generates multi-config setup
|
|
3
|
-
* Replaces @electron-toolkit/tsconfig with framework-aware configs
|
|
4
|
-
*
|
|
5
|
-
* Generates 4 separate tsconfig files:
|
|
6
|
-
* - tsconfig.json: Root orchestrator with project references
|
|
7
|
-
* - tsconfig.node.json: Main process + Preload scripts (Node.js environment)
|
|
8
|
-
* - tsconfig.web.json: Renderer process (browser environment with framework)
|
|
9
|
-
* - tsconfig.tests.json: Test environment (Vitest + Playwright)
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Create Electron multi-config preset
|
|
14
|
-
* @param {string} renderer - Renderer framework ('vue', 'react', 'svelte', 'vanilla')
|
|
15
|
-
* @returns {Object} Object containing all 4 tsconfig configurations
|
|
16
|
-
*/
|
|
17
|
-
export default function createElectronPreset(renderer = 'vue') {
|
|
18
|
-
// Determine renderer-specific file extensions
|
|
19
|
-
const rendererExtensions = renderer === 'vue' ? ['src/renderer/**/*.vue'] : []
|
|
20
|
-
|
|
21
|
-
return {
|
|
22
|
-
// Root tsconfig.json - orchestrator with project references
|
|
23
|
-
root: {
|
|
24
|
-
files: [],
|
|
25
|
-
references: [{ path: './tsconfig.node.json' }, { path: './tsconfig.web.json' }]
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
// tsconfig.node.json - Main process + Preload scripts
|
|
29
|
-
node: {
|
|
30
|
-
$schema: 'https://json.schemastore.org/tsconfig',
|
|
31
|
-
include: ['electron.vite.config.*', 'package.json', 'src/main/*', 'src/preload/*'],
|
|
32
|
-
compilerOptions: {
|
|
33
|
-
composite: true,
|
|
34
|
-
target: 'ES2024',
|
|
35
|
-
lib: ['ES2024', 'ESNext'],
|
|
36
|
-
module: 'NodeNext',
|
|
37
|
-
moduleResolution: 'NodeNext',
|
|
38
|
-
types: ['electron-vite/node'],
|
|
39
|
-
baseUrl: '.',
|
|
40
|
-
paths: {
|
|
41
|
-
'@/*': ['src/*'],
|
|
42
|
-
'@main/*': ['src/main/*'],
|
|
43
|
-
'@preload/*': ['src/preload/*']
|
|
44
|
-
},
|
|
45
|
-
resolveJsonModule: true
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
// tsconfig.web.json - Renderer process (browser)
|
|
50
|
-
web: {
|
|
51
|
-
$schema: 'https://json.schemastore.org/tsconfig',
|
|
52
|
-
include: [
|
|
53
|
-
'src/renderer/env.d.ts',
|
|
54
|
-
'src/renderer/**/*',
|
|
55
|
-
...rendererExtensions,
|
|
56
|
-
'src/preload/*.d.ts',
|
|
57
|
-
'package.json'
|
|
58
|
-
],
|
|
59
|
-
compilerOptions: {
|
|
60
|
-
composite: true,
|
|
61
|
-
target: 'ES2024',
|
|
62
|
-
lib: ['ES2024', 'ESNext', 'DOM', 'DOM.Iterable'],
|
|
63
|
-
baseUrl: '.',
|
|
64
|
-
paths: {
|
|
65
|
-
'@/*': ['src/*'],
|
|
66
|
-
'@renderer/*': ['src/renderer/*'],
|
|
67
|
-
'@main/*': ['src/main/*'],
|
|
68
|
-
'@preload/*': ['src/preload/*']
|
|
69
|
-
},
|
|
70
|
-
strict: true,
|
|
71
|
-
noUnusedParameters: true,
|
|
72
|
-
noFallthroughCasesInSwitch: true,
|
|
73
|
-
noUncheckedIndexedAccess: true
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
|
|
77
|
-
// tsconfig.tests.json - Test environment
|
|
78
|
-
tests: {
|
|
79
|
-
$schema: 'https://json.schemastore.org/tsconfig',
|
|
80
|
-
include: ['tests/**/*', 'src/renderer/**/*.vue', 'src/renderer/env.d.ts'],
|
|
81
|
-
compilerOptions: {
|
|
82
|
-
composite: true,
|
|
83
|
-
baseUrl: '.',
|
|
84
|
-
paths: {
|
|
85
|
-
'@/*': ['src/*'],
|
|
86
|
-
'@renderer/*': ['src/renderer/*'],
|
|
87
|
-
'@main/*': ['src/main/*'],
|
|
88
|
-
'@preload/*': ['src/preload/*'],
|
|
89
|
-
'@tests/*': ['tests/*'],
|
|
90
|
-
'@unit/*': ['tests/unit/*'],
|
|
91
|
-
'@integration/*': ['tests/integration/*'],
|
|
92
|
-
'@fixtures/*': ['tests/fixtures/*'],
|
|
93
|
-
'@setup/*': ['tests/setup/*']
|
|
94
|
-
},
|
|
95
|
-
types: ['vitest/globals', '@playwright/test'],
|
|
96
|
-
strict: false
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Vue.js TypeScript configuration
|
|
3
|
-
* Requires vue-tsc for Single File Component (.vue) support
|
|
4
|
-
*/
|
|
5
|
-
export default {
|
|
6
|
-
compilerOptions: {
|
|
7
|
-
jsx: 'preserve', // Vue compiler handles JSX transformation
|
|
8
|
-
jsxImportSource: 'vue',
|
|
9
|
-
lib: ['ES2022', 'DOM', 'DOM.Iterable'],
|
|
10
|
-
types: ['vite/client'] // Common for Vue + Vite projects
|
|
11
|
-
},
|
|
12
|
-
// Vue-specific options (for vue-tsc)
|
|
13
|
-
vueCompilerOptions: {
|
|
14
|
-
extensions: ['.vue'],
|
|
15
|
-
vitePressExtensions: ['.md']
|
|
16
|
-
}
|
|
17
|
-
}
|