@dimensional-innovations/tool-config 5.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/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 +3 -2
|
@@ -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/core/package-reader.ts","../../src/core/detectors.ts","../../src/tools/typescript/index.ts","../../src/cli/formatting.ts","../../src/cli/handlers/eslint.ts","../../src/cli/handlers/prettier.ts","../../src/core/ignore-patterns.ts","../../src/cli/handlers/semantic-release.ts","../../src/cli/handlers/stylelint.ts","../../src/cli/handlers/typescript.ts","../../src/cli/package-manager.ts","../../src/cli/ui.ts","../../src/cli/uninstall.ts","../../src/cli/validators.ts","../../src/cli/index.ts"],"names":["join","existsSync","nodePreset","node_default","init_node","checker","generateConfigContent","getConfigFilename","getScripts","writeConfig","writeFileSync","typescript_exports","createTypescriptConfig","readFileSync","createProgress","SYMBOLS","colors","detected","removedCount","response","summary"],"mappings":"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","file":"index.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 with: npm install -D vue-tsc\\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 { existsSync, readFileSync } from 'fs'\nimport { join } from 'path'\n\nimport type { PackageJson } from './types.js'\n\n/**\n * Read and parse package.json from a directory\n * @param cwd - Directory path\n * @returns Parsed package.json or null if not found\n */\nexport function readPackageJson(cwd: string): PackageJson | null {\n const packagePath = join(cwd, 'package.json')\n\n if (!existsSync(packagePath)) {\n return null\n }\n\n try {\n const content = readFileSync(packagePath, 'utf8')\n return JSON.parse(content) as PackageJson\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n console.warn(`Warning: Failed to read package.json: ${message}`)\n return null\n }\n}\n\n/**\n * Get all dependencies from package.json\n * Includes both dependencies and devDependencies, since frameworks\n * can be in either location depending on the project setup.\n * @param pkg - Parsed package.json\n * @returns All dependencies (production + development)\n */\nexport function getAllDependencies(pkg: PackageJson | null): Record<string, string> {\n if (!pkg) {\n return {}\n }\n\n // Include both dependencies and devDependencies for framework detection\n // Many projects (especially monorepos) have frameworks in devDependencies\n return {\n ...pkg.dependencies,\n ...pkg.devDependencies\n }\n}\n","import { execSync } from 'child_process'\nimport { existsSync } from 'fs'\nimport { join } from 'path'\n\nimport { getAllDependencies, readPackageJson } from './package-reader.js'\nimport type {\n CssTypeResult,\n DetectionResult,\n GitProvider,\n PackageJson,\n ResolvedEnvironment,\n ResolvedFramework\n} from './types.js'\n\n/**\n * Check for React meta-frameworks\n */\nfunction detectReactMetaFramework(deps: Record<string, string>): boolean {\n return !!(\n deps.next ||\n deps['@next/core'] ||\n deps.remix ||\n deps['@remix-run/react'] ||\n deps['@remix-run/node'] ||\n deps.gatsby ||\n deps['gatsby-link']\n )\n}\n\n/**\n * Check for Vue meta-frameworks\n */\nfunction detectVueMetaFramework(deps: Record<string, string>): boolean {\n return !!(deps.nuxt || deps['nuxt3'])\n}\n\n/**\n * Check for Svelte meta-frameworks\n */\nfunction detectSvelteMetaFramework(deps: Record<string, string>): boolean {\n return !!deps['@sveltejs/kit']\n}\n\n/**\n * Check for base framework dependencies\n */\nfunction detectBaseFramework(deps: Record<string, string>): ResolvedFramework | null {\n if (deps.react || deps['react-dom']) return 'react'\n if (deps.vue || deps['@vue/runtime-core'] || deps['vue-router'] || deps.pinia) return 'vue'\n if (deps['@angular/core']) return 'angular'\n if (deps.svelte) return 'svelte'\n if (deps['solid-js']) return 'solid'\n if (deps.astro) return 'astro'\n return null\n}\n\n/**\n * Check if project is a Node.js backend\n */\nfunction isNodeBackend(pkg: PackageJson, deps: Record<string, string>, cwd: string): boolean {\n if (pkg.type !== 'module') return false\n\n const hasNodeFramework = !!(deps.express || deps.fastify || deps.koa || deps['@hapi/hapi'])\n const hasServerFiles =\n existsSync(join(cwd, 'server.js')) ||\n existsSync(join(cwd, 'app.js')) ||\n (existsSync(join(cwd, 'index.js')) && existsSync(join(cwd, 'routes')))\n\n return hasNodeFramework || hasServerFiles\n}\n\n/**\n * Detect the framework being used in the project\n * @param cwd - Current working directory\n * @returns Detected framework name\n */\nexport function detectFramework(cwd: string = process.cwd()): ResolvedFramework {\n const pkg = readPackageJson(cwd)\n\n if (!pkg) {\n console.warn('Could not find package.json, defaulting to vanilla JavaScript')\n return 'vanilla'\n }\n\n const deps = getAllDependencies(pkg)\n\n // Check meta-frameworks first\n if (detectReactMetaFramework(deps)) return 'react'\n if (detectVueMetaFramework(deps)) return 'vue'\n if (detectSvelteMetaFramework(deps)) return 'svelte'\n\n // Check base frameworks\n const baseFramework = detectBaseFramework(deps)\n if (baseFramework) return baseFramework\n\n // Check Node.js backend\n if (isNodeBackend(pkg, deps, cwd)) return 'node'\n\n // Default to vanilla JavaScript\n return 'vanilla'\n}\n\n/**\n * Detect the environment (browser, node, or universal)\n * @param framework - Detected framework\n * @param cwd - Current working directory\n * @returns Environment type\n */\nexport function detectEnvironment(\n framework: ResolvedFramework,\n cwd: string = process.cwd()\n): ResolvedEnvironment {\n // Framework-specific defaults\n if (framework === 'node') {\n return 'node'\n }\n\n // Frontend frameworks default to browser\n if (['react', 'vue', 'svelte', 'solid', 'angular'].includes(framework)) {\n return 'browser'\n }\n\n // Astro uses islands architecture (both browser and node)\n if (framework === 'astro') {\n return 'universal'\n }\n\n // Check for mixed environment indicators\n const hasServerCode =\n existsSync(join(cwd, 'server')) ||\n existsSync(join(cwd, 'api')) ||\n existsSync(join(cwd, 'backend'))\n\n if (hasServerCode) {\n return 'universal'\n }\n\n // Default to browser for frontend projects\n return 'browser'\n}\n\n/**\n * Detect if TypeScript is being used\n * @param cwd - Current working directory\n * @returns True if TypeScript is detected\n */\nexport function detectTypeScript(cwd: string = process.cwd()): boolean {\n // Check for tsconfig.json\n if (existsSync(join(cwd, 'tsconfig.json'))) {\n return true\n }\n\n // Check for TypeScript in dependencies or devDependencies\n const pkg = readPackageJson(cwd)\n if (!pkg) return false\n\n // TypeScript is typically a devDependency\n return !!(pkg.dependencies?.typescript || pkg.devDependencies?.typescript)\n}\n\n/**\n * Detect Git provider from repository URL\n * @param cwd - Current working directory\n * @returns Git provider ('gitlab', 'github', 'bitbucket', or null)\n */\nexport function detectGitProvider(cwd: string = process.cwd()): GitProvider {\n // Try package.json repository field first\n const pkg = readPackageJson(cwd)\n if (pkg?.repository) {\n const repoUrl = typeof pkg.repository === 'string' ? pkg.repository : pkg.repository.url || ''\n\n if (repoUrl.includes('gitlab.com')) return 'gitlab'\n if (repoUrl.includes('github.com')) return 'github'\n if (repoUrl.includes('bitbucket.org')) return 'bitbucket'\n\n // If repository field exists but provider not recognized, return null\n // Don't fallback to git remote if package.json explicitly specifies a repo\n return null\n }\n\n // Try git remote as fallback only if no repository field in package.json\n try {\n const remoteUrl = execSync('git remote get-url origin', {\n cwd,\n encoding: 'utf8',\n stdio: ['pipe', 'pipe', 'ignore']\n }).trim()\n\n if (remoteUrl.includes('gitlab.com')) return 'gitlab'\n if (remoteUrl.includes('github.com')) return 'github'\n if (remoteUrl.includes('bitbucket.org')) return 'bitbucket'\n } catch (error) {\n // Git command failed or not a git repository\n const message = error instanceof Error ? error.message : String(error)\n console.warn(`Warning: Could not detect git provider from remote: ${message}`)\n }\n\n // Default to null (no provider detected)\n return null\n}\n\n/**\n * Detect CSS type and variants\n * @param cwd - Current working directory\n * @returns CSS type detection results\n */\nexport function detectCssType(cwd: string = process.cwd()): CssTypeResult {\n const pkg = readPackageJson(cwd)\n\n const results: CssTypeResult = {\n preprocessor: null, // 'scss', 'sass', 'less', null\n tailwind: false,\n modules: false,\n postcss: false\n }\n\n // Detect SCSS/Sass\n const hasSass =\n pkg?.dependencies?.sass ||\n pkg?.devDependencies?.sass ||\n pkg?.dependencies?.['node-sass'] ||\n pkg?.devDependencies?.['node-sass'] ||\n pkg?.dependencies?.['sass-embedded'] ||\n pkg?.devDependencies?.['sass-embedded']\n\n if (hasSass) {\n results.preprocessor = 'scss'\n }\n\n // Detect Less\n const hasLess = pkg?.dependencies?.less || pkg?.devDependencies?.less\n\n if (hasLess && !hasSass) {\n // SCSS takes precedence if both exist\n results.preprocessor = 'less'\n }\n\n // Detect Tailwind CSS\n const hasTailwind = pkg?.dependencies?.tailwindcss || pkg?.devDependencies?.tailwindcss\n\n if (hasTailwind) {\n // Check for config file\n results.tailwind =\n existsSync(join(cwd, 'tailwind.config.js')) ||\n existsSync(join(cwd, 'tailwind.config.ts')) ||\n existsSync(join(cwd, 'tailwind.config.mjs')) ||\n existsSync(join(cwd, 'tailwind.config.cjs'))\n }\n\n // Detect PostCSS config\n results.postcss =\n existsSync(join(cwd, 'postcss.config.js')) ||\n existsSync(join(cwd, 'postcss.config.cjs')) ||\n existsSync(join(cwd, 'postcss.config.mjs')) ||\n existsSync(join(cwd, '.postcssrc')) ||\n existsSync(join(cwd, '.postcssrc.json'))\n\n // Note: CSS Modules detection is tricky without scanning files\n // Framework-based heuristic: React/Next.js projects often use CSS Modules\n // Will be set to true if React/Next.js detected (handled in Stylelint factory)\n\n return results\n}\n\n/**\n * Detect if project is an Electron application\n * @param cwd - Current working directory\n * @returns True if Electron project detected\n */\nexport function detectElectron(cwd: string = process.cwd()): boolean {\n const pkg = readPackageJson(cwd)\n if (!pkg) return false\n\n const deps = getAllDependencies(pkg)\n return !!(deps.electron || deps['@electron-toolkit/utils'] || deps['@electron-toolkit/preload'])\n}\n\n/**\n * Auto-detect all configuration options\n * @param cwd - Current working directory\n * @returns Detected configuration\n */\nexport function autoDetect(cwd: string = process.cwd()): DetectionResult {\n const framework = detectFramework(cwd)\n const environment = detectEnvironment(framework, cwd)\n const typescript = detectTypeScript(cwd)\n const gitProvider = detectGitProvider(cwd)\n const cssType = detectCssType(cwd)\n const electron = detectElectron(cwd)\n\n return {\n framework,\n environment,\n typescript,\n gitProvider,\n cssType,\n electron\n }\n}\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","/**\n * Formatting utilities for CLI output\n * Standardized box drawing with consistent width\n */\n\nimport pc from 'picocolors'\n\nconst BOX_WIDTH = 70 // Standard width for all boxes\n\nexport const BOX = {\n topLeft: 'ā',\n topRight: 'ā',\n bottomLeft: 'ā',\n bottomRight: 'ā',\n vertical: 'ā',\n horizontal: 'ā',\n separator: 'ā',\n width: BOX_WIDTH\n}\n\n/**\n * Create a box with standard width (70 chars)\n * @param lines - Array of content lines\n * @param title - Optional title for top border\n * @returns Formatted box\n */\nexport function createBox(lines: string[], title = ''): string {\n const width = BOX.width\n const contentWidth = width - 4 // Remove: ā + space + space + ā\n\n // Create top border\n let top: string\n if (title) {\n const titlePart = `ā ${title} `\n const remaining = width - 2 - titlePart.length // -2 for corners\n top = BOX.topLeft + titlePart + BOX.horizontal.repeat(remaining) + BOX.topRight\n } else {\n top = BOX.topLeft + BOX.horizontal.repeat(width - 2) + BOX.topRight\n }\n\n // Create content lines - pad each to exact width\n const content = lines.map(line => {\n const padded = line.slice(0, contentWidth).padEnd(contentWidth)\n return `${BOX.vertical} ${padded} ${BOX.vertical}`\n })\n\n // Create bottom border\n const bottom = BOX.bottomLeft + BOX.horizontal.repeat(width - 2) + BOX.bottomRight\n\n return [top, ...content, bottom].join('\\n')\n}\n\n/**\n * Create a separator line\n * @returns Separator line\n */\nexport function createSeparator(): string {\n return BOX.separator.repeat(BOX.width)\n}\n\n/**\n * Create a simple indented list\n * @param items - Array of items\n * @param bullet - Bullet character (default: 'ā¢')\n * @returns Formatted list\n */\nexport function createList(items: string[], bullet = 'ā¢'): string {\n return items.map(item => ` ${bullet} ${item}`).join('\\n')\n}\n\n/**\n * Create a progress indicator\n * @param current - Current step\n * @param total - Total steps\n * @param label - Label for this step\n * @returns Progress line\n */\nexport function createProgress(current: number, total: number, label: string): string {\n return ` [${current}/${total}] ${label}`\n}\n\n/**\n * Color symbols for CLI output\n */\nexport const SYMBOLS = {\n success: pc.green('ā'),\n warning: pc.yellow('ā '),\n error: pc.red('ā'),\n info: pc.blue('ā¹')\n}\n\n/**\n * Color helper functions\n */\nexport const colors = {\n success: pc.green,\n warning: pc.yellow,\n error: pc.red,\n info: pc.blue,\n dim: pc.dim,\n bold: pc.bold,\n cyan: pc.cyan\n}\n","/**\n * ESLint handler for setup-tool-config CLI\n */\n\nimport { existsSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport type { DetectionResult } from '#core/types.js'\n\n/**\n * Get config filename\n */\nexport function getConfigFilename(): string {\n return 'eslint.config.js'\n}\n\n/**\n * Generate config file content with detected values\n */\nexport function generateConfigContent(detected: DetectionResult): string {\n return `import { createConfig } from '@dimensional-innovations/tool-config'\n\nexport default await createConfig('eslint', {\n // āā Detected Configuration āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n framework: '${detected.framework}',\n environment: '${detected.environment}',\n typescript: ${detected.typescript},\n\n // āā Customization āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n // ignorePaths: [],\n // rules: {},\n})\n`\n}\n\n/**\n * Get npm scripts\n */\nexport function getScripts(_detected: DetectionResult): Record<string, string> {\n return {\n lint: 'eslint .',\n 'lint:fix': 'eslint --fix .'\n }\n}\n\n/**\n * Write config file\n */\nexport function writeConfig(cwd: string, detected: DetectionResult, dryRun = false): boolean {\n const filename = getConfigFilename()\n const filepath = join(cwd, filename)\n const content = generateConfigContent(detected)\n\n if (existsSync(filepath)) {\n console.log(` ā ļø ${filename} already exists - skipping`)\n return false\n }\n\n if (dryRun) {\n console.log(` š Would create: ${filename}`)\n return true\n }\n\n try {\n writeFileSync(filepath, content, 'utf8')\n console.log(` ā
Created: ${filename}`)\n return true\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(` ā Failed to create ${filename}:`, errorMessage)\n return false\n }\n}\n","/**\n * Prettier handler for setup-tool-config CLI\n */\n\nimport { existsSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport { getPrettierIgnoreContent } from '#core/ignore-patterns.js'\nimport type { DetectionResult } from '#core/types.js'\n\n/**\n * Get config filename\n */\nexport function getConfigFilename(): string {\n return 'prettier.config.js'\n}\n\n/**\n * Generate config file content with detected values\n */\nexport function generateConfigContent(detected: DetectionResult): string {\n return `import { createConfig } from '@dimensional-innovations/tool-config'\n\nexport default createConfig('prettier', {\n // āā Detected Configuration āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n framework: '${detected.framework}',\n\n // āā Customization āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n // printWidth: 100,\n // semi: false,\n // singleQuote: true,\n // overrides: [],\n})\n`\n}\n\n/**\n * Get npm scripts\n */\nexport function getScripts(_detected: DetectionResult): Record<string, string> {\n return {\n 'prettier:fix': 'prettier --write .',\n prettier: 'prettier --check .'\n }\n}\n\n/**\n * Write config file\n */\nexport function writeConfig(cwd: string, detected: DetectionResult, dryRun = false): boolean {\n const filename = getConfigFilename()\n const filepath = join(cwd, filename)\n const content = generateConfigContent(detected)\n\n if (existsSync(filepath)) {\n console.log(` ā ļø ${filename} already exists - skipping`)\n return false\n }\n\n if (dryRun) {\n console.log(` š Would create: ${filename}`)\n\n // Prettier also creates .prettierignore\n const ignoreFile = '.prettierignore'\n const ignoreExists = existsSync(join(cwd, ignoreFile))\n if (!ignoreExists) {\n console.log(` š Would create: ${ignoreFile}`)\n }\n\n return true\n }\n\n try {\n writeFileSync(filepath, content, 'utf8')\n console.log(` ā
Created: ${filename}`)\n\n // Prettier also creates .prettierignore\n const ignoreFile = '.prettierignore'\n const ignorePath = join(cwd, ignoreFile)\n\n if (!existsSync(ignorePath)) {\n writeFileSync(ignorePath, getPrettierIgnoreContent(), 'utf8')\n console.log(` ā
Created: ${ignoreFile}`)\n } else {\n console.log(` ā ļø ${ignoreFile} already exists - skipping`)\n }\n\n return true\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(` ā Failed to create ${filename}:`, errorMessage)\n return false\n }\n}\n","/**\n * Shared ignore patterns for all tools\n *\n * Provides consistent ignore patterns across ESLint, Prettier, and Stylelint\n * to prevent processing build outputs, dependencies, and generated files.\n */\n\n/**\n * Common directories that should be ignored by all tools\n */\nexport const COMMON_IGNORE_DIRS: readonly string[] = [\n 'node_modules',\n 'dist',\n 'build',\n 'out',\n 'coverage',\n '.nyc_output'\n]\n\n/**\n * Framework-specific build outputs\n */\nexport const FRAMEWORK_BUILD_DIRS: readonly string[] = [\n '.next', // Next.js\n '.nuxt', // Nuxt\n '.output', // Nitro/Nuxt3\n '.vercel', // Vercel\n '.netlify', // Netlify\n '.cache', // Gatsby/Parcel\n '.parcel-cache', // Parcel\n '.turbo', // Turborepo\n '.vite', // Vite\n '.vitepress', // VitePress\n '.svelte-kit' // SvelteKit\n]\n\n/**\n * Lock files and generated files\n */\nexport const GENERATED_FILES: readonly string[] = [\n 'package-lock.json',\n 'pnpm-lock.yaml',\n 'yarn.lock',\n 'bun.lockb',\n 'CHANGELOG.md'\n]\n\n/**\n * Minified files\n */\nexport const MINIFIED_FILES: readonly string[] = ['*.min.js', '*.min.css', '*.min.mjs']\n\n/**\n * Get ignore patterns for linting tools (ESLint, Stylelint)\n * @param customIgnores - Additional patterns to include\n * @returns Array of glob patterns\n */\nfunction getIgnorePatterns(customIgnores: string[] = []): string[] {\n return [\n ...COMMON_IGNORE_DIRS.map(dir => `**/${dir}/**`),\n ...FRAMEWORK_BUILD_DIRS.map(dir => `**/${dir}/**`),\n ...MINIFIED_FILES.map(pattern => `**/${pattern}`),\n ...customIgnores\n ]\n}\n\n/**\n * Get ESLint ignore patterns (flat config format)\n * @param customIgnores - Additional patterns to include\n * @returns Array of glob patterns for ESLint ignores array\n */\nexport const getEslintIgnores = getIgnorePatterns\n\n/**\n * Get Stylelint ignore patterns (ignoreFiles format)\n * @param customIgnores - Additional patterns to include\n * @returns Array of glob patterns for Stylelint ignoreFiles\n */\nexport const getStylelintIgnores = getIgnorePatterns\n\n/**\n * Get Prettier ignore content (.prettierignore file format)\n * @returns .prettierignore file content\n */\nexport function getPrettierIgnoreContent(): string {\n return `# Dependencies\nnode_modules/\n.pnp/\n.pnp.js\n\n# Build outputs\n${COMMON_IGNORE_DIRS.filter(dir => dir !== 'node_modules' && dir !== 'coverage')\n .map(dir => `${dir}/`)\n .join('\\n')}\n${FRAMEWORK_BUILD_DIRS.map(dir => `${dir}/`).join('\\n')}\n\n# Coverage\ncoverage/\n.nyc_output/\n*.lcov\n\n# Lock files\n${GENERATED_FILES.filter(f => f.includes('lock') || f.includes('.lock')).join('\\n')}\n\n# Generated files\nCHANGELOG.md\n\n# Cache directories\n.cache/\n.parcel-cache/\n.turbo/\n.vite/\n\n# Environment files (may contain secrets)\n.env\n.env.local\n.env.*.local\n\n# IDE\n.vscode/\n.idea/\n\n# OS files\n.DS_Store\nThumbs.db\n`\n}\n\n/**\n * Get Stylelint ignore content (.stylelintignore file format)\n * @returns .stylelintignore file content\n */\nexport function getStylelintIgnoreContent(): string {\n return `# Dependencies\nnode_modules/\n\n# Build outputs\n${COMMON_IGNORE_DIRS.filter(dir => dir !== 'node_modules' && dir !== 'coverage')\n .map(dir => `${dir}/`)\n .join('\\n')}\n${FRAMEWORK_BUILD_DIRS.map(dir => `${dir}/`).join('\\n')}\n\n# Coverage\ncoverage/\n.nyc_output/\n\n# Minified files\n${MINIFIED_FILES.join('\\n')}\n`\n}\n\nexport default {\n COMMON_IGNORE_DIRS,\n FRAMEWORK_BUILD_DIRS,\n GENERATED_FILES,\n MINIFIED_FILES,\n getEslintIgnores,\n getStylelintIgnores,\n getPrettierIgnoreContent,\n getStylelintIgnoreContent\n}\n","/**\n * semantic-release handler for setup-tool-config CLI\n */\n\nimport { existsSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport type { DetectionResult } from '#core/types.js'\n\n/**\n * Get config filename\n */\nexport function getConfigFilename(): string {\n return 'release.config.js'\n}\n\n/**\n * Generate config file content with detected values\n */\nexport function generateConfigContent(detected: DetectionResult): string {\n const gitProviderValue = detected.gitProvider === null ? 'null' : `'${detected.gitProvider}'`\n\n return `import { createConfig } from '@dimensional-innovations/tool-config'\n\nexport default createConfig('semantic-release', {\n // āā Detected Configuration āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n preset: 'default',\n gitProvider: ${gitProviderValue},\n\n // āā Customization āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n // branches: [],\n // plugins: [],\n})\n`\n}\n\n/**\n * Get npm scripts\n */\nexport function getScripts(_detected: DetectionResult): Record<string, string> {\n return {\n release: 'semantic-release'\n }\n}\n\n/**\n * Write config file\n */\nexport function writeConfig(cwd: string, detected: DetectionResult, dryRun = false): boolean {\n const filename = getConfigFilename()\n const filepath = join(cwd, filename)\n const content = generateConfigContent(detected)\n\n if (existsSync(filepath)) {\n console.log(` ā ļø ${filename} already exists - skipping`)\n return false\n }\n\n if (dryRun) {\n console.log(` š Would create: ${filename}`)\n return true\n }\n\n try {\n writeFileSync(filepath, content, 'utf8')\n console.log(` ā
Created: ${filename}`)\n return true\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(` ā Failed to create ${filename}:`, errorMessage)\n return false\n }\n}\n","/**\n * Stylelint handler for setup-tool-config CLI\n */\n\nimport { existsSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport type { CssTypeResult, DetectionResult, ResolvedFramework } from '#core/types.js'\n\n/**\n * Get config filename\n */\nexport function getConfigFilename(): string {\n return 'stylelint.config.js'\n}\n\n/**\n * Generate config file content with detected values\n */\nexport function generateConfigContent(detected: DetectionResult): string {\n return `import { createConfig } from '@dimensional-innovations/tool-config'\n\nexport default createConfig('stylelint', {\n // āā Detected Configuration āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n framework: '${detected.framework}',\n\n // āā Customization āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n // extends: [],\n // rules: {},\n // overrides: [],\n})\n`\n}\n\n/**\n * Get file extensions for Stylelint based on framework and CSS type\n */\nfunction getStylelintExtensions(framework: ResolvedFramework, cssType: CssTypeResult): string[] {\n const extensions = ['css']\n\n // Add preprocessor extensions\n if (cssType.preprocessor === 'scss') {\n extensions.push('scss')\n } else if (cssType.preprocessor === 'less') {\n extensions.push('less')\n }\n\n // Add framework-specific extensions\n if (framework === 'vue') extensions.push('vue')\n if (framework === 'svelte') extensions.push('svelte')\n\n return extensions\n}\n\n/**\n * Get npm scripts based on detected framework and CSS type\n */\nexport function getScripts(detected: DetectionResult): Record<string, string> {\n const extensions = getStylelintExtensions(detected.framework, detected.cssType)\n const pattern =\n extensions.length === 1 ? `**/*.${extensions[0]}` : `**/*.{${extensions.join(',')}}`\n\n return {\n style: `stylelint \"${pattern}\" --allow-empty-input`,\n 'style:fix': `stylelint \"${pattern}\" --fix --allow-empty-input`\n }\n}\n\n/**\n * Write config file\n */\nexport function writeConfig(cwd: string, detected: DetectionResult, dryRun = false): boolean {\n const filename = getConfigFilename()\n const filepath = join(cwd, filename)\n const content = generateConfigContent(detected)\n\n if (existsSync(filepath)) {\n console.log(` ā ļø ${filename} already exists - skipping`)\n return false\n }\n\n if (dryRun) {\n console.log(` š Would create: ${filename}`)\n return true\n }\n\n try {\n writeFileSync(filepath, content, 'utf8')\n console.log(` ā
Created: ${filename}`)\n return true\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(` ā Failed to create ${filename}:`, errorMessage)\n return false\n }\n}\n","/**\n * TypeScript handler for setup-tool-config CLI\n */\n\nimport { existsSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport { detectTypeChecker, getTypeCheckCommand } from '../../tools/typescript/checker-detection.js'\n\nimport type { DetectionResult } from '#core/types.js'\n\n/**\n * Get config filename\n */\nexport function getConfigFilename(): string {\n return 'tsconfig.json'\n}\n\n/**\n * Generate config file content for standard (non-Electron) projects\n */\nexport function generateConfigContent(_detected: DetectionResult): string {\n return JSON.stringify(\n {\n $schema: 'https://json.schemastore.org/tsconfig',\n compilerOptions: {\n target: 'ES2022',\n lib: ['ES2022'],\n module: 'ESNext',\n moduleResolution: 'Bundler',\n strict: true,\n esModuleInterop: true,\n skipLibCheck: true,\n forceConsistentCasingInFileNames: true,\n resolveJsonModule: true\n },\n include: ['src/**/*'],\n exclude: ['node_modules', 'dist', 'build', 'out', 'coverage']\n },\n null,\n 2\n )\n}\n\n/**\n * Get npm scripts based on detected framework and type checker\n */\nexport function getScripts(detected: DetectionResult): Record<string, string> {\n // Electron uses tsc --build for project references\n if (detected.electron) {\n return {\n typecheck: 'tsc --build',\n 'typecheck:watch': 'tsc --build --watch'\n }\n }\n\n // Standard single-config\n const checker = detectTypeChecker(detected.framework, 'auto')\n const cmd = getTypeCheckCommand(checker)\n const watchCmd = getTypeCheckCommand(checker, { watch: true })\n\n return {\n typecheck: cmd,\n 'typecheck:watch': watchCmd\n }\n}\n\n/**\n * Electron config file structure\n */\ninterface ElectronConfigFile {\n name: string\n key: string\n desc: string\n}\n\n/**\n * Write Electron multi-config TypeScript files\n */\nasync function writeElectronConfigs(\n detected: DetectionResult,\n cwd: string,\n dryRun = false\n): Promise<boolean> {\n const files: ElectronConfigFile[] = [\n { name: 'tsconfig.json', key: 'root', desc: 'root orchestrator' },\n { name: 'tsconfig.node.json', key: 'node', desc: 'main process' },\n { name: 'tsconfig.web.json', key: 'web', desc: 'renderer process' },\n { name: 'tsconfig.tests.json', key: 'tests', desc: 'test environment' }\n ]\n\n if (dryRun) {\n for (const file of files) {\n console.log(` š Would create: ${file.name} (${file.desc})`)\n }\n return true\n }\n\n try {\n // Import the factory and generate configs\n const { createTypescriptConfig } = await import('../../tools/typescript/index.js')\n const configs = await createTypescriptConfig({\n electron: true,\n renderer: detected.framework,\n cwd\n })\n\n // Write all 4 files\n let created = 0\n for (const file of files) {\n const filepath = join(cwd, file.name)\n\n if (existsSync(filepath)) {\n console.log(` ā ļø ${file.name} already exists - skipping`)\n continue\n }\n\n const content = JSON.stringify(configs[file.key as keyof typeof configs], null, 2)\n writeFileSync(filepath, `${content}\\n`, 'utf8')\n console.log(` ā
Created: ${file.name} (${file.desc})`)\n created++\n }\n\n return created > 0\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(' ā Failed to create Electron configs:', errorMessage)\n return false\n }\n}\n\n/**\n * Write config file\n */\nexport function writeConfig(\n cwd: string,\n detected: DetectionResult,\n dryRun = false\n): boolean | Promise<boolean> {\n // TypeScript tool requires TypeScript to be detected\n if (!detected.typescript) {\n console.log(' ā ļø TypeScript not detected - skipping tsconfig generation')\n return false\n }\n\n // Special handling for TypeScript with Electron\n if (detected.electron) {\n return writeElectronConfigs(detected, cwd, dryRun)\n }\n\n const filename = getConfigFilename()\n const filepath = join(cwd, filename)\n const content = generateConfigContent(detected)\n\n if (existsSync(filepath)) {\n console.log(` ā ļø ${filename} already exists - skipping`)\n return false\n }\n\n if (dryRun) {\n console.log(` š Would create: ${filename}`)\n return true\n }\n\n try {\n writeFileSync(filepath, content, 'utf8')\n console.log(` ā
Created: ${filename}`)\n console.log('')\n console.log(' To customize TypeScript options, add compilerOptions:')\n console.log('')\n console.log(' {')\n console.log(' \"compilerOptions\": {')\n console.log(' \"baseUrl\": \"./src\",')\n console.log(' \"paths\": { \"@/*\": [\"*\"] }')\n console.log(' }')\n console.log(' }')\n console.log('')\n return true\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(` ā Failed to create ${filename}:`, errorMessage)\n return false\n }\n}\n","/**\n * Package.json script management for setup-tool-config CLI\n */\n\nimport { existsSync, readFileSync, writeFileSync } from 'fs'\nimport { join } from 'path'\n\nimport type { DetectionResult, ToolName } from '#core/types.js'\n\n// Map tool names to their check script names\nconst CHECK_SCRIPT_MAP: Record<string, string> = {\n prettier: 'prettier',\n stylelint: 'style',\n eslint: 'lint',\n typescript: 'typecheck'\n}\n\n// Order tools from fastest/least critical to slowest/most critical\nconst CHECK_ORDER: ToolName[] = ['prettier', 'stylelint', 'eslint', 'typescript']\n\n/**\n * Function type for getting scripts from a tool\n */\nexport type GetScriptsFn = (tool: ToolName, detected: DetectionResult) => Record<string, string>\n\n/**\n * Context object for script operations\n */\nexport interface ScriptContext {\n detected: DetectionResult\n cwd: string\n dryRun?: boolean\n}\n\n/**\n * Generate check-all script command\n * @param installedTools - Tools that were successfully installed\n * @returns Command string or null if less than 2 tools\n */\nfunction generateCheckAllScript(installedTools: ToolName[]): string | null {\n const commands = CHECK_ORDER.filter(tool => installedTools.includes(tool))\n .map(tool => `yarn ${CHECK_SCRIPT_MAP[tool]}`)\n .join(' && ')\n\n return commands || null\n}\n\n/**\n * Update package.json with scripts for tools\n * @param tools - Array of tool names that successfully created configs\n * @param getScriptsFn - Function that returns scripts for a tool\n * @param context - Context object with detected, cwd, dryRun\n */\nexport function updatePackageJsonScripts(\n tools: ToolName[],\n getScriptsFn: GetScriptsFn,\n context: ScriptContext\n): void {\n const { detected, cwd, dryRun = false } = context\n const packageJsonPath = join(cwd, 'package.json')\n\n if (!existsSync(packageJsonPath)) {\n console.log(' ā ļø No package.json found - skipping script injection')\n return\n }\n\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'))\n\n if (!packageJson.scripts) {\n packageJson.scripts = {}\n }\n\n const scriptsToAdd: Record<string, string> = {}\n for (const tool of tools) {\n const toolScripts = getScriptsFn(tool, detected)\n for (const [name, command] of Object.entries(toolScripts)) {\n if (!packageJson.scripts[name]) {\n scriptsToAdd[name] = command\n }\n }\n }\n\n // Add or update check-all script if multiple tools installed\n // Determine which tools are installed (both existing and new)\n const installedTools: ToolName[] = []\n if (packageJson.scripts.lint || scriptsToAdd.lint) installedTools.push('eslint')\n if (packageJson.scripts.prettier || scriptsToAdd.prettier) installedTools.push('prettier')\n if (packageJson.scripts.style || scriptsToAdd.style) installedTools.push('stylelint')\n if (packageJson.scripts.typecheck || scriptsToAdd.typecheck) installedTools.push('typescript')\n\n if (installedTools.length >= 2) {\n const checkAllCmd = generateCheckAllScript(installedTools)\n if (checkAllCmd) {\n const existingCheckAll = packageJson.scripts['check-all']\n\n // Only add if doesn't exist, or update if it's our auto-generated pattern\n // Auto-generated scripts follow pattern: \"yarn X && yarn Y && ...\"\n const isAutoGenerated =\n existingCheckAll &&\n existingCheckAll.startsWith('yarn ') &&\n existingCheckAll.includes(' && yarn ')\n\n if (!existingCheckAll || isAutoGenerated) {\n scriptsToAdd['check-all'] = checkAllCmd\n }\n }\n }\n\n if (Object.keys(scriptsToAdd).length === 0) {\n console.log(' ā¹ļø All scripts already exist in package.json')\n return\n }\n\n if (dryRun) {\n console.log(' š Would add scripts to package.json:')\n for (const [name, command] of Object.entries(scriptsToAdd)) {\n console.log(` \"${name}\": \"${command}\"`)\n }\n return\n }\n\n Object.assign(packageJson.scripts, scriptsToAdd)\n\n writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf8')\n\n console.log(' ā
Updated package.json with scripts:')\n for (const name of Object.keys(scriptsToAdd)) {\n console.log(` - ${name}`)\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(' ā Failed to update package.json:', errorMessage)\n }\n}\n\n/**\n * Remove scripts from package.json for tools\n * @param tools - Array of tool names to remove scripts for\n * @param getScriptsFn - Function that returns scripts for a tool\n * @param context - Context object with detected, cwd, dryRun\n */\nexport function removePackageJsonScripts(\n tools: ToolName[],\n getScriptsFn: GetScriptsFn,\n context: ScriptContext\n): void {\n const { detected, cwd, dryRun = false } = context\n const packageJsonPath = join(cwd, 'package.json')\n\n if (!existsSync(packageJsonPath)) {\n console.log(' ā¹ļø No package.json found - skipping script removal')\n return\n }\n\n try {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'))\n\n if (!packageJson.scripts) {\n console.log(' ā¹ļø No scripts section in package.json')\n return\n }\n\n const scriptsToRemove: string[] = []\n\n // Collect script names to remove based on tools\n for (const tool of tools) {\n const toolScripts = getScriptsFn(tool, detected)\n for (const scriptName of Object.keys(toolScripts)) {\n const expectedCommand = toolScripts[scriptName]\n const actualCommand = packageJson.scripts[scriptName]\n\n // Only remove if the script exists and matches our expected command\n if (actualCommand === expectedCommand) {\n scriptsToRemove.push(scriptName)\n } else if (actualCommand) {\n console.log(` ā ļø Script \"${scriptName}\" has been modified - skipping for safety`)\n }\n }\n }\n\n // Handle check-all script separately\n const checkAllScript = packageJson.scripts['check-all']\n if (checkAllScript) {\n // Only remove if it's auto-generated (follows yarn X && yarn Y pattern)\n const isAutoGenerated =\n checkAllScript.startsWith('yarn ') && checkAllScript.includes(' && yarn ')\n\n if (isAutoGenerated) {\n scriptsToRemove.push('check-all')\n }\n }\n\n if (scriptsToRemove.length === 0) {\n console.log(' ā¹ļø No scripts to remove from package.json')\n return\n }\n\n if (dryRun) {\n console.log(' š Would remove scripts from package.json:')\n for (const name of scriptsToRemove) {\n console.log(` - ${name}`)\n }\n return\n }\n\n // Remove scripts\n for (const scriptName of scriptsToRemove) {\n delete packageJson.scripts[scriptName]\n }\n\n // Remove scripts section if empty\n if (Object.keys(packageJson.scripts).length === 0) {\n delete packageJson.scripts\n }\n\n writeFileSync(packageJsonPath, `${JSON.stringify(packageJson, null, 2)}\\n`, 'utf8')\n\n console.log(' ā
Removed scripts from package.json:')\n for (const name of scriptsToRemove) {\n console.log(` - ${name}`)\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(' ā Failed to update package.json:', errorMessage)\n }\n}\n","/**\n * UI utilities for setup-tool-config CLI\n * Handles help text, banners, and output formatting\n */\n\nimport { createBox, createSeparator, SYMBOLS, colors } from './formatting.js'\n\nimport type { DetectionResult, ToolName } from '#core/types.js'\n\nconst VERSION = '0.0.0-development'\n\n/**\n * Show help message\n */\nexport function showHelp(): void {\n console.log(`\nš¦ @dimensional-innovations/tool-config Setup Tool\n\nUsage:\n setup-tool-config [tool] [options]\n\nTools:\n eslint Setup ESLint only\n prettier Setup Prettier only\n stylelint Setup Stylelint only\n typescript Setup TypeScript only\n semantic-release Setup semantic-release only\n\nOptions:\n --all, -a Setup all tools (non-interactive)\n --uninstall Remove tool configuration and scripts\n --dry-run, -d Preview changes without writing files\n --help, -h Show this help message\n --version, -v Show version number\n\nExamples (Install):\n setup-tool-config # Interactive mode\n setup-tool-config eslint # Setup ESLint only\n setup-tool-config --all # Setup all tools\n setup-tool-config --dry-run # Preview without changes\n\nExamples (Uninstall):\n setup-tool-config --uninstall # Interactive uninstall\n setup-tool-config --uninstall eslint # Remove ESLint only\n setup-tool-config --uninstall --all # Remove all detected tools\n setup-tool-config --uninstall --dry-run # Preview uninstall\n\nFor more information, visit:\n https://gitlab.com/dimensional-innovations/tool-config\n`)\n}\n\n/**\n * Show version\n */\nexport function showVersion(): void {\n console.log(`@dimensional-innovations/tool-config v${VERSION}`)\n}\n\n/**\n * Show welcome and setup banner with detected configuration\n */\nexport function showBanner(detected: DetectionResult): void {\n console.log('')\n\n // Welcome box\n const welcome = [\n 'š Welcome to @dimensional-innovations/tool-config',\n '',\n 'Zero-config setup for ESLint, Prettier, Stylelint,',\n 'TypeScript, and semantic-release.',\n '',\n 'š” Navigation: āā to move, Space to select, Enter to continue'\n ]\n console.log(createBox(welcome))\n\n console.log('')\n\n // Condensed detection info\n const detectedParts: string[] = []\n if (detected.framework !== 'vanilla') {\n detectedParts.push(detected.framework.charAt(0).toUpperCase() + detected.framework.slice(1))\n }\n if (detected.typescript) {\n detectedParts.push('TypeScript')\n }\n if (detected.environment) {\n detectedParts.push(detected.environment.charAt(0).toUpperCase() + detected.environment.slice(1))\n }\n\n const detectedStr = detectedParts.length > 0 ? detectedParts.join(' ⢠') : 'JavaScript project'\n console.log(`š Auto-detected: ${detectedStr}`)\n console.log('')\n console.log('š” Recommended tools are pre-selected based on your project')\n console.log('')\n}\n\n/**\n * Show section header\n */\nexport function showSection(title: string): void {\n console.log('')\n console.log(`${title}`)\n console.log('')\n}\n\n/**\n * Show completion message with detailed summary\n * @param dryRun - Whether this was a dry run\n * @param createdFiles - Files that were created\n * @param scripts - Scripts that were added\n */\nexport function showCompletion(\n dryRun: boolean,\n createdFiles: string[] = [],\n scripts: string[] = []\n): void {\n console.log('')\n\n if (dryRun) {\n console.log(createSeparator())\n console.log('')\n const dryRunMsg = [\n `${SYMBOLS.info} DRY RUN MODE - Preview only, no files created`,\n '',\n 'Run without --dry-run to create these files'\n ]\n console.log(createBox(dryRunMsg))\n } else {\n console.log(createSeparator())\n console.log('')\n\n const completion = [colors.bold(colors.cyan('š All done! Your project is ready.'))]\n\n if (createdFiles.length > 0) {\n completion.push('')\n completion.push(\n `š Created ${createdFiles.length} config file${createdFiles.length > 1 ? 's' : ''}:`\n )\n createdFiles.forEach(file => {\n completion.push(` ⢠${file}`)\n })\n }\n\n if (scripts.length > 0) {\n completion.push('')\n completion.push(`š¦ Added ${scripts.length} npm script${scripts.length > 1 ? 's' : ''}:`)\n\n // Highlight check-all if present\n const checkAllIndex = scripts.indexOf('check-all')\n if (checkAllIndex !== -1) {\n completion.push(` ⢠check-all ā Run this to validate everything`)\n scripts\n .filter(s => s !== 'check-all')\n .forEach(script => {\n completion.push(` ⢠${script}`)\n })\n } else {\n scripts.forEach(script => {\n completion.push(` ⢠${script}`)\n })\n }\n }\n\n completion.push('')\n completion.push('š Quick start:')\n if (scripts.includes('check-all')) {\n completion.push(' npm run check-all')\n } else if (scripts.length > 0) {\n completion.push(` npm run ${scripts[0]}`)\n }\n\n console.log(createBox(completion))\n }\n\n console.log('')\n}\n\n/**\n * Show uninstall banner\n */\nexport function showUninstallBanner(installedTools: ToolName[]): void {\n console.log('')\n console.log('šļø @dimensional-innovations/tool-config Uninstall')\n console.log('ā'.repeat(50))\n console.log('')\n console.log('ā ļø WARNING: This will remove configuration files and scripts')\n console.log(' Make sure you have committed or backed up your changes first!')\n console.log('')\n\n if (installedTools.length > 0) {\n console.log('š¦ Detected tools:')\n for (const tool of installedTools) {\n console.log(` - ${tool}`)\n }\n console.log('')\n } else {\n console.log('ā¹ļø No tools detected')\n console.log('')\n }\n}\n\n/**\n * Show uninstall completion message\n */\nexport function showUninstallCompletion(dryRun: boolean, removedCount: number): void {\n console.log('')\n if (dryRun) {\n console.log(`${SYMBOLS.info} Dry run mode - no files were modified`)\n console.log(' Run without --dry-run to apply changes')\n } else if (removedCount > 0) {\n console.log(`${SYMBOLS.success} Uninstall complete!`)\n console.log(` Removed ${removedCount} file(s) and their associated scripts`)\n } else {\n console.log(`${SYMBOLS.info} Nothing was removed`)\n }\n console.log('')\n}\n","/**\n * Uninstall utilities for setup-tool-config CLI\n * Handles safe removal of config files and scripts\n */\n\nimport { existsSync, readFileSync, rmSync } from 'fs'\nimport { join } from 'path'\n\nimport type { DetectionResult, ToolName } from '#core/types.js'\n\n/**\n * Tool handler interface for uninstall operations\n */\nexport interface ToolHandler {\n getConfigFilename: () => string\n generateConfigContent: (detected: DetectionResult) => string\n getScripts?: (detected: DetectionResult) => Record<string, string>\n writeConfig?: (\n cwd: string,\n detected: DetectionResult,\n dryRun?: boolean\n ) => boolean | Promise<boolean>\n}\n\n/**\n * Detect which tools are currently installed\n * @param cwd - Current working directory\n * @returns Array of installed tool names\n */\nexport function detectInstalledTools(cwd: string): ToolName[] {\n const toolFiles: Record<ToolName, string> = {\n eslint: 'eslint.config.js',\n prettier: 'prettier.config.js',\n stylelint: 'stylelint.config.js',\n typescript: 'tsconfig.json',\n 'semantic-release': 'release.config.js'\n }\n\n const installed: ToolName[] = []\n for (const [tool, filename] of Object.entries(toolFiles) as Array<[ToolName, string]>) {\n if (existsSync(join(cwd, filename))) {\n installed.push(tool)\n }\n }\n\n return installed\n}\n\n/**\n * Check if a file's content matches the expected template\n * @param filepath - Path to file\n * @param expectedContent - Expected content\n * @returns True if content matches\n */\nfunction contentMatches(filepath: string, expectedContent: string): boolean {\n if (!existsSync(filepath)) {\n return false\n }\n\n try {\n const actualContent = readFileSync(filepath, 'utf8')\n return actualContent.trim() === expectedContent.trim()\n } catch {\n return false\n }\n}\n\n/**\n * Uninstall a tool by removing its config file\n * @param _tool - Tool name\n * @param handler - Tool handler with getConfigFilename and generateConfigContent\n * @param detected - Detection result for generating expected content\n * @param cwd - Current working directory\n * @param dryRun - Preview mode\n * @returns True if uninstalled successfully\n */\nexport function uninstallTool(\n _tool: ToolName,\n handler: ToolHandler,\n detected: DetectionResult,\n cwd: string,\n dryRun = false\n): boolean {\n const filename = handler.getConfigFilename()\n const filepath = join(cwd, filename)\n\n if (!existsSync(filepath)) {\n console.log(` ā¹ļø ${filename} not found - already uninstalled`)\n return false\n }\n\n // Check if file was modified by user\n const expectedContent = handler.generateConfigContent(detected)\n const isUnmodified = contentMatches(filepath, expectedContent)\n\n if (!isUnmodified) {\n console.log(` ā ļø ${filename} has been modified - skipping for safety`)\n console.log(' Remove manually if you want to delete it')\n return false\n }\n\n if (dryRun) {\n console.log(` šļø Would remove: ${filename}`)\n return true\n }\n\n try {\n rmSync(filepath)\n console.log(` ā
Removed: ${filename}`)\n return true\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n console.error(` ā Failed to remove ${filename}:`, errorMessage)\n return false\n }\n}\n","/**\n * Input validation for setup-tool-config CLI\n */\n\nimport type { ToolName } from '#core/types.js'\n\nexport const VALID_TOOLS: readonly ToolName[] = [\n 'eslint',\n 'prettier',\n 'stylelint',\n 'typescript',\n 'semantic-release'\n] as const\n\n/**\n * Validate tool name\n * @param tool - Tool name to validate\n * @throws Error if tool is invalid\n */\nexport function validateTool(tool: string): asserts tool is ToolName {\n if (!VALID_TOOLS.includes(tool as ToolName)) {\n throw new Error(`Unknown tool: ${tool}. Valid tools: ${VALID_TOOLS.join(', ')}`)\n }\n}\n","/**\n * @dimensional-innovations/tool-config CLI Setup Tool\n *\n * Interactive configuration generator for ESLint, Prettier, Stylelint, TypeScript, and semantic-release\n */\n\nimport prompts from 'prompts'\n\nimport * as eslintHandler from './handlers/eslint.js'\nimport * as prettierHandler from './handlers/prettier.js'\nimport * as semanticReleaseHandler from './handlers/semantic-release.js'\nimport * as stylelintHandler from './handlers/stylelint.js'\nimport * as typescriptHandler from './handlers/typescript.js'\nimport {\n removePackageJsonScripts,\n updatePackageJsonScripts,\n type GetScriptsFn\n} from './package-manager.js'\nimport {\n showBanner,\n showCompletion,\n showHelp,\n showSection,\n showUninstallBanner,\n showUninstallCompletion,\n showVersion\n} from './ui.js'\nimport { detectInstalledTools, uninstallTool } from './uninstall.js'\nimport { VALID_TOOLS, validateTool } from './validators.js'\n\nimport { autoDetect } from '#core/detectors.js'\nimport type { DetectionResult, ToolName } from '#core/types.js'\n\n/**\n * Tool handler interface with all required methods\n */\ninterface FullToolHandler {\n getConfigFilename: () => string\n generateConfigContent: (detected: DetectionResult) => string\n getScripts: (detected: DetectionResult) => Record<string, string>\n writeConfig: (\n cwd: string,\n detected: DetectionResult,\n dryRun?: boolean\n ) => boolean | Promise<boolean>\n}\n\n// Tool handler registry\nconst TOOL_HANDLERS: Record<ToolName, FullToolHandler> = {\n eslint: eslintHandler as FullToolHandler,\n prettier: prettierHandler as FullToolHandler,\n stylelint: stylelintHandler as FullToolHandler,\n typescript: typescriptHandler as FullToolHandler,\n 'semantic-release': semanticReleaseHandler as FullToolHandler\n}\n\n/**\n * Get tool scripts (wrapper for handler getScripts)\n */\nfunction getToolScripts(tool: ToolName, detected: DetectionResult): Record<string, string> {\n const handler = TOOL_HANDLERS[tool]\n return handler.getScripts ? handler.getScripts(detected) : {}\n}\n\n/**\n * Setup summary structure\n */\ninterface SetupSummary {\n files: string[]\n scripts: string[]\n}\n\n/**\n * Setup tools\n * @returns Summary of created files and scripts\n */\nasync function setupTools(\n tools: ToolName[],\n detected: DetectionResult,\n cwd: string,\n dryRun = false\n): Promise<SetupSummary> {\n const { createProgress, SYMBOLS, colors } = await import('./formatting.js')\n\n console.log('')\n console.log('Creating configuration files...')\n console.log('')\n\n // Track which tools successfully created configs\n const successfulTools: ToolName[] = []\n const createdFiles: string[] = []\n\n let current = 0\n for (const tool of tools) {\n current++\n const handler = TOOL_HANDLERS[tool]\n const filename = handler.getConfigFilename()\n\n const progressLine = colors.dim(createProgress(current, tools.length, filename))\n process.stdout.write(progressLine)\n\n const success = await handler.writeConfig(cwd, detected, dryRun)\n\n if (success) {\n successfulTools.push(tool)\n createdFiles.push(filename)\n console.log(` ${SYMBOLS.success}`)\n } else {\n console.log(` ${SYMBOLS.warning}`)\n }\n }\n\n // Only add scripts for tools that created configs\n const addedScripts: string[] = []\n if (successfulTools.length > 0) {\n console.log('')\n console.log('Adding npm scripts...')\n console.log('')\n\n // Collect all scripts that will be added\n for (const tool of successfulTools) {\n const scripts = getToolScripts(tool, detected)\n addedScripts.push(...Object.keys(scripts))\n }\n\n updatePackageJsonScripts(successfulTools, getToolScripts as GetScriptsFn, {\n detected,\n cwd,\n dryRun\n })\n }\n\n return {\n files: createdFiles,\n scripts: addedScripts\n }\n}\n\n/**\n * Uninstall tools\n */\nfunction uninstallTools(\n tools: ToolName[],\n detected: DetectionResult,\n cwd: string,\n dryRun = false\n): number {\n showSection('šļø Removing configuration files...')\n\n let removedCount = 0\n\n for (const tool of tools) {\n console.log(`${tool}:`)\n const handler = TOOL_HANDLERS[tool]\n const success = uninstallTool(tool, handler, detected, cwd, dryRun)\n if (success) {\n removedCount++\n }\n }\n\n // Remove scripts for successfully uninstalled tools\n if (tools.length > 0) {\n showSection('š¦ Removing package.json scripts...')\n removePackageJsonScripts(tools, getToolScripts as GetScriptsFn, { detected, cwd, dryRun })\n }\n\n return removedCount\n}\n\n/**\n * CLI flags structure\n */\ninterface CLIFlags {\n help: boolean\n version: boolean\n dryRun: boolean\n all: boolean\n uninstall: boolean\n}\n\n/**\n * Main CLI function\n */\nasync function main(): Promise<void> {\n // Parse CLI arguments\n const args = process.argv.slice(2)\n const flags: CLIFlags = {\n help: args.includes('--help') || args.includes('-h'),\n version: args.includes('--version') || args.includes('-v'),\n dryRun: args.includes('--dry-run') || args.includes('-d'),\n all: args.includes('--all') || args.includes('-a'),\n uninstall: args.includes('--uninstall')\n }\n\n // Single tool mode: setup-tool-config eslint\n const singleTool = args.find(arg => !arg.startsWith('-'))\n\n // Handle flags\n if (flags.help) {\n showHelp()\n process.exit(0)\n }\n\n if (flags.version) {\n showVersion()\n process.exit(0)\n }\n\n const cwd = process.cwd()\n\n // Handle uninstall mode\n if (flags.uninstall) {\n const detected = autoDetect(cwd)\n const installedTools = detectInstalledTools(cwd)\n\n showUninstallBanner(installedTools)\n\n // No tools detected\n if (installedTools.length === 0) {\n console.log('Nothing to uninstall.')\n process.exit(0)\n }\n\n // Handle --uninstall --all flag\n if (flags.all) {\n const removedCount = uninstallTools(installedTools, detected, cwd, flags.dryRun)\n showUninstallCompletion(flags.dryRun, removedCount)\n process.exit(0)\n }\n\n // Handle --uninstall <tool> flag\n if (singleTool) {\n if (!installedTools.includes(singleTool as ToolName)) {\n console.log(`ā ļø ${singleTool} is not installed`)\n process.exit(0)\n }\n\n const removedCount = uninstallTools([singleTool as ToolName], detected, cwd, flags.dryRun)\n showUninstallCompletion(flags.dryRun, removedCount)\n process.exit(0)\n }\n\n // Interactive uninstall mode\n const response = await prompts({\n type: 'multiselect',\n name: 'tools',\n message: 'Which tools would you like to uninstall?',\n choices: installedTools.map(tool => ({\n title: tool,\n value: tool,\n selected: false\n })),\n hint: '- Space to select. Return to submit'\n })\n\n if (!response.tools || response.tools.length === 0) {\n console.log('')\n console.log('ā No tools selected. Exiting.')\n process.exit(0)\n }\n\n const removedCount = uninstallTools(response.tools, detected, cwd, flags.dryRun)\n showUninstallCompletion(flags.dryRun, removedCount)\n process.exit(0)\n }\n\n // Show banner and auto-detect\n const detected = autoDetect(cwd)\n showBanner(detected)\n\n // Handle --all flag\n if (flags.all) {\n const summary = await setupTools([...VALID_TOOLS], detected, cwd, flags.dryRun)\n showCompletion(flags.dryRun, summary.files, summary.scripts)\n process.exit(0)\n }\n\n // Handle single tool mode\n if (singleTool) {\n validateTool(singleTool)\n const summary = await setupTools([singleTool as ToolName], detected, cwd, flags.dryRun)\n showCompletion(flags.dryRun, summary.files, summary.scripts)\n process.exit(0)\n }\n\n // Interactive mode\n const response = await prompts([\n {\n type: 'multiselect',\n name: 'tools',\n message: 'Select development tools to configure:',\n choices: [\n {\n title: 'ESLint Catch bugs and enforce standards',\n value: 'eslint',\n selected: true\n },\n {\n title: 'Prettier Auto-format code consistently',\n value: 'prettier',\n selected: true\n },\n {\n title: 'Stylelint Lint CSS, SCSS, and style files',\n value: 'stylelint',\n selected: false\n },\n {\n title: 'TypeScript Type safety and better tooling',\n value: 'typescript',\n selected: detected.typescript\n },\n {\n title: 'semantic-release Automated versioning & releases',\n value: 'semantic-release',\n selected: false\n }\n ],\n hint: ' (Recommended tools are pre-selected)'\n }\n ])\n\n if (!response.tools || response.tools.length === 0) {\n console.log('')\n console.log('ā No tools selected. Exiting.')\n process.exit(0)\n }\n\n const summary = await setupTools(response.tools, detected, cwd, flags.dryRun)\n showCompletion(flags.dryRun, summary.files, summary.scripts)\n}\n\n// Run CLI\nmain().catch(error => {\n console.error('')\n console.error('ā Error:', error.message)\n console.error('')\n process.exit(1)\n})\n"]}
|