@dimensional-innovations/tool-config 5.0.2 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-SZOB6JY7.js → chunk-AKQIWLRC.js} +3 -3
- package/dist/chunk-AKQIWLRC.js.map +1 -0
- package/dist/{chunk-ITGUBGO6.js → chunk-HAVDVZO3.js} +5 -6
- package/dist/chunk-HAVDVZO3.js.map +1 -0
- package/dist/{chunk-SY42COTI.js → chunk-NRDWX5HH.js} +3 -3
- package/dist/chunk-NRDWX5HH.js.map +1 -0
- package/dist/cli/index.js +72 -55
- package/dist/cli/index.js.map +1 -1
- package/dist/{eslint-YWWMMZDP.js → eslint-DXHSX6VW.js} +3 -3
- package/dist/{eslint-YWWMMZDP.js.map → eslint-DXHSX6VW.js.map} +1 -1
- package/dist/index.js +7 -7
- package/dist/{stylelint-ENTCYNXG.js → stylelint-UAZHFIUD.js} +3 -3
- package/dist/{stylelint-ENTCYNXG.js.map → stylelint-UAZHFIUD.js.map} +1 -1
- package/dist/typescript-G4HYJJ7T.js +4 -0
- package/dist/{typescript-ZJ7LECQN.js.map → typescript-G4HYJJ7T.js.map} +1 -1
- package/package.json +12 -11
- package/dist/chunk-ITGUBGO6.js.map +0 -1
- package/dist/chunk-SY42COTI.js.map +0 -1
- package/dist/chunk-SZOB6JY7.js.map +0 -1
- package/dist/typescript-ZJ7LECQN.js +0 -4
|
@@ -28,7 +28,7 @@ function detectTypeChecker(framework, preference = "auto", cwd = process.cwd())
|
|
|
28
28
|
const hasVueTsc = hasPackageInstalled("vue-tsc", cwd);
|
|
29
29
|
if (hasVueTsc) return "vue-tsc";
|
|
30
30
|
console.warn(
|
|
31
|
-
"\u26A0\uFE0F Vue project detected but vue-tsc not found.\n Install
|
|
31
|
+
"\u26A0\uFE0F Vue project detected but vue-tsc not found.\n Install vue-tsc as a dev dependency to enable .vue file checking.\n Falling back to tsgo/tsc (won't check .vue files)"
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
const hasTsgo = hasPackageInstalled("@typescript/native-preview", cwd);
|
|
@@ -442,5 +442,5 @@ function mergeConfig(target, source) {
|
|
|
442
442
|
var typescript_default = createTypescriptConfig;
|
|
443
443
|
|
|
444
444
|
export { ConfigError, createTypescriptConfig, typescript_default };
|
|
445
|
-
//# sourceMappingURL=chunk-
|
|
446
|
-
//# sourceMappingURL=chunk-
|
|
445
|
+
//# sourceMappingURL=chunk-AKQIWLRC.js.map
|
|
446
|
+
//# sourceMappingURL=chunk-AKQIWLRC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/types.ts","../src/tools/typescript/checker-detection.ts","../src/tools/typescript/presets/base.ts","../src/tools/typescript/presets/environments/browser.ts","../src/tools/typescript/presets/environments/node.ts","../src/tools/typescript/presets/environments/universal.ts","../src/tools/typescript/presets/frameworks/angular.ts","../src/tools/typescript/presets/frameworks/astro.ts","../src/tools/typescript/presets/frameworks/electron.ts","../src/tools/typescript/presets/frameworks/node.ts","../src/tools/typescript/presets/frameworks/react.ts","../src/tools/typescript/presets/frameworks/solid.ts","../src/tools/typescript/presets/frameworks/svelte.ts","../src/tools/typescript/presets/frameworks/vanilla.ts","../src/tools/typescript/presets/frameworks/vue.ts","../src/tools/typescript/index.ts"],"names":["nodePreset","node_default","checker"],"mappings":"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","file":"chunk-AKQIWLRC.js","sourcesContent":["/**\n * Shared type definitions for @dimensional-innovations/tool-config\n */\n\n// Tool names\nexport type ToolName = 'eslint' | 'prettier' | 'stylelint' | 'typescript' | 'semantic-release'\n\n// Framework detection\nexport type Framework =\n | 'react'\n | 'vue'\n | 'svelte'\n | 'solid'\n | 'astro'\n | 'angular'\n | 'vanilla'\n | 'node'\n | 'auto'\n\n// Resolved framework (excludes 'auto')\nexport type ResolvedFramework = Exclude<Framework, 'auto'>\n\n// Environment types\nexport type Environment = 'browser' | 'node' | 'universal' | 'auto'\n\n// Resolved environment (excludes 'auto')\nexport type ResolvedEnvironment = Exclude<Environment, 'auto'>\n\n// Git providers\nexport type GitProvider = 'gitlab' | 'github' | 'bitbucket' | null\n\n// CSS preprocessor types\nexport type CssPreprocessor = 'scss' | 'sass' | 'less' | null\n\n// CSS type detection result\nexport interface CssTypeResult {\n preprocessor: CssPreprocessor\n tailwind: boolean\n modules: boolean\n postcss: boolean\n}\n\n// Full detection result from autoDetect()\nexport interface DetectionResult {\n framework: ResolvedFramework\n environment: ResolvedEnvironment\n typescript: boolean\n gitProvider: GitProvider\n cssType: CssTypeResult\n electron: boolean\n}\n\n// Package.json structure (minimal subset we use)\nexport interface PackageJson {\n name?: string\n version?: string\n type?: 'module' | 'commonjs'\n main?: string\n dependencies?: Record<string, string>\n devDependencies?: Record<string, string>\n peerDependencies?: Record<string, string>\n repository?: string | { type?: string; url?: string }\n scripts?: Record<string, string>\n}\n\n// Base options shared by all tool factories\nexport interface BaseOptions {\n framework?: Framework\n environment?: Environment\n cwd?: string\n customIgnores?: string[]\n}\n\n// ESLint-specific options\nexport interface EslintOptions extends BaseOptions {\n typescript?: boolean | 'auto'\n ignorePaths?: string[]\n rules?: Record<string, unknown>\n}\n\n// Prettier-specific options\nexport interface PrettierOptions extends BaseOptions {\n // Prettier options can include any valid Prettier config option\n [key: string]: unknown\n}\n\n// Stylelint-specific options\nexport interface StylelintOptions extends BaseOptions {\n cssType?: CssTypeResult | 'auto'\n rules?: Record<string, unknown>\n extends?: string | string[]\n overrides?: unknown[]\n}\n\n// TypeScript tool-specific options\nexport interface TypescriptOptions extends BaseOptions {\n checker?: 'modern' | 'legacy' | 'auto'\n strict?: boolean\n electron?: boolean\n renderer?: ResolvedFramework\n compilerOptions?: Record<string, unknown>\n}\n\n// semantic-release-specific options\nexport type ReleasePreset = 'default' | 'library' | 'monorepo'\n\nexport interface SemanticReleaseOptions extends BaseOptions {\n preset?: ReleasePreset\n gitProvider?: GitProvider | 'auto'\n branches?: unknown[]\n plugins?: unknown[]\n}\n\n// Union type for all tool options\nexport type ToolOptions =\n | EslintOptions\n | PrettierOptions\n | StylelintOptions\n | TypescriptOptions\n | SemanticReleaseOptions\n\n// Type checker options\nexport type TypeChecker = 'tsgo' | 'vue-tsc' | 'tsc'\nexport type TypeCheckerPreference = 'modern' | 'legacy' | 'auto'\n\n// Config metadata added to TypeScript and semantic-release configs\nexport interface ConfigMeta {\n framework: ResolvedFramework\n environment?: ResolvedEnvironment\n checker?: TypeChecker\n experimental?: boolean\n renderer?: ResolvedFramework\n multiConfig?: boolean\n generatedBy?: string\n}\n\n// ESLint flat config object (simplified)\nexport interface EslintFlatConfig {\n name?: string\n files?: string[]\n ignores?: string[]\n languageOptions?: Record<string, unknown>\n plugins?: Record<string, unknown>\n rules?: Record<string, unknown>\n settings?: Record<string, unknown>\n processor?: unknown\n}\n\n// Prettier config object\nexport interface PrettierConfig {\n printWidth?: number\n tabWidth?: number\n useTabs?: boolean\n semi?: boolean\n singleQuote?: boolean\n quoteProps?: 'as-needed' | 'consistent' | 'preserve'\n jsxSingleQuote?: boolean\n trailingComma?: 'none' | 'es5' | 'all'\n bracketSpacing?: boolean\n bracketSameLine?: boolean\n arrowParens?: 'avoid' | 'always'\n proseWrap?: 'always' | 'never' | 'preserve'\n htmlWhitespaceSensitivity?: 'css' | 'strict' | 'ignore'\n endOfLine?: 'auto' | 'lf' | 'crlf' | 'cr'\n singleAttributePerLine?: boolean\n plugins?: string[]\n overrides?: Array<{\n files: string | string[]\n options?: Record<string, unknown>\n }>\n [key: string]: unknown\n}\n\n// Stylelint config object\nexport interface StylelintConfig {\n extends?: string | string[]\n plugins?: string[]\n rules?: Record<string, unknown>\n overrides?: Array<{\n files: string[]\n rules?: Record<string, unknown>\n customSyntax?: string\n }>\n ignoreFiles?: string[]\n customSyntax?: string\n [key: string]: unknown\n}\n\n// TypeScript config object (tsconfig.json structure)\nexport interface TypescriptConfig {\n $schema?: string\n files?: string[]\n compilerOptions?: Record<string, unknown>\n include?: string[]\n exclude?: string[]\n references?: Array<{ path: string }>\n _meta?: ConfigMeta\n}\n\n// Electron multi-config structure (4 separate tsconfig files)\nexport interface ElectronMultiConfig {\n root: TypescriptConfig\n node: TypescriptConfig\n web: TypescriptConfig\n tests: TypescriptConfig\n _meta?: ConfigMeta\n}\n\n// semantic-release config object\nexport interface SemanticReleaseConfig {\n branches?: unknown[]\n plugins?: unknown[]\n tagFormat?: string\n ci?: boolean\n _meta?: {\n preset: ReleasePreset\n gitProvider: GitProvider\n }\n [key: string]: unknown\n}\n\n// Custom error class for configuration errors\nexport class ConfigError extends Error {\n public readonly context?: Record<string, unknown>\n\n constructor(message: string, context?: Record<string, unknown>) {\n super(message)\n this.name = 'ConfigError'\n this.context = context\n\n // Maintain proper stack trace in V8 environments\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ConfigError)\n }\n }\n}\n","import { existsSync } from 'fs'\nimport { join } from 'path'\n\nimport {\n ConfigError,\n type ResolvedFramework,\n type TypeChecker,\n type TypeCheckerPreference\n} from '#core/types.js'\n\n/**\n * Detect which TypeScript checker to use\n * Priority: tsgo (fastest) -> vue-tsc (Vue SFCs) -> tsc (fallback)\n *\n * @param framework - Detected framework\n * @param preference - User preference: 'auto' | 'modern' | 'legacy'\n * @param cwd - Current working directory\n * @returns Checker to use: 'tsgo' | 'vue-tsc' | 'tsc'\n */\nexport function detectTypeChecker(\n framework: ResolvedFramework | string,\n preference: TypeCheckerPreference = 'auto',\n cwd: string = process.cwd()\n): TypeChecker {\n // User explicitly requested legacy\n if (preference === 'legacy') {\n return framework === 'vue' ? 'vue-tsc' : 'tsc'\n }\n\n // User explicitly requested modern\n if (preference === 'modern') {\n return 'tsgo'\n }\n\n // Auto-detection (default)\n if (preference === 'auto') {\n // Vue needs vue-tsc for SFC support (tsgo doesn't support .vue yet)\n if (framework === 'vue') {\n const hasVueTsc = hasPackageInstalled('vue-tsc', cwd)\n if (hasVueTsc) return 'vue-tsc'\n\n console.warn(\n '⚠️ Vue project detected but vue-tsc not found.\\n' +\n ' Install vue-tsc as a dev dependency to enable .vue file checking.\\n' +\n \" Falling back to tsgo/tsc (won't check .vue files)\"\n )\n }\n\n // Check if tsgo is available\n const hasTsgo = hasPackageInstalled('@typescript/native-preview', cwd)\n if (hasTsgo) {\n return 'tsgo'\n }\n\n // Fallback to standard tsc\n return 'tsc'\n }\n\n throw new ConfigError(`Unknown checker preference: \"${preference}\"`, {\n received: preference,\n validOptions: ['auto', 'modern', 'legacy']\n })\n}\n\n/**\n * Check if package is installed in node_modules\n *\n * @param packageName - Package to check for\n * @param cwd - Current working directory\n * @returns True if package is installed\n */\nfunction hasPackageInstalled(packageName: string, cwd: string): boolean {\n try {\n const packagePath = join(cwd, 'node_modules', packageName, 'package.json')\n return existsSync(packagePath)\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error)\n console.warn(`Warning: Error checking for ${packageName}: ${message}`)\n return false\n }\n}\n\n/**\n * Get the command to run for type checking\n *\n * @param checker - Checker to use: 'tsgo' | 'tsc' | 'vue-tsc'\n * @param options - Command options\n * @param options.watch - Enable watch mode\n * @param options.noEmit - Skip emit (type check only)\n * @param options.project - Project path\n * @returns Command string\n */\nexport function getTypeCheckCommand(\n checker: TypeChecker,\n options: { watch?: boolean; noEmit?: boolean; project?: string } = {}\n): string {\n const { watch = false, noEmit = true, project = '.' } = options\n\n const baseCmd = checker // 'tsgo', 'tsc', or 'vue-tsc'\n const flags: string[] = []\n\n if (noEmit) flags.push('--noEmit')\n if (watch) flags.push('--watch')\n if (project !== '.') flags.push(`-p ${project}`)\n\n return `${baseCmd} ${flags.join(' ')}`.trim()\n}\n\n/**\n * Get fallback chain for script generation\n * Example: \"tsgo --noEmit || tsc --noEmit\"\n *\n * @param checker - Primary checker to use\n * @param framework - Framework name\n * @returns Command with fallback\n */\nexport function getTypeCheckCommandWithFallback(\n checker: TypeChecker,\n framework: ResolvedFramework | string\n): string {\n const primary = getTypeCheckCommand(checker, { noEmit: true })\n\n // No fallback needed for vue-tsc or tsc (they're already fallbacks)\n if (checker === 'vue-tsc' || checker === 'tsc') {\n return primary\n }\n\n // tsgo with fallback\n const fallback =\n framework === 'vue'\n ? getTypeCheckCommand('vue-tsc', { noEmit: true })\n : getTypeCheckCommand('tsc', { noEmit: true })\n\n return `${primary} || ${fallback}`\n}\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Base TypeScript configuration\n * Strict, modern defaults that work across all frameworks\n *\n * Based on TypeScript 5.x best practices with ES2022 target\n */\nconst basePreset: TypescriptConfig = {\n compilerOptions: {\n // Language and Environment\n target: 'ES2022',\n lib: ['ES2022'],\n\n // Modules\n module: 'ESNext',\n moduleResolution: 'Bundler',\n resolveJsonModule: true,\n\n // Emit\n declaration: true,\n declarationMap: true,\n sourceMap: true,\n removeComments: false,\n\n // Interop Constraints\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n\n // Type Checking (Strict Mode)\n strict: true,\n noImplicitAny: true,\n strictNullChecks: true,\n strictFunctionTypes: true,\n strictBindCallApply: true,\n strictPropertyInitialization: true,\n noImplicitThis: true,\n alwaysStrict: true,\n\n // Additional Checks\n noUnusedLocals: true,\n noUnusedParameters: true,\n noImplicitReturns: true,\n noFallthroughCasesInSwitch: true,\n noUncheckedIndexedAccess: true,\n noImplicitOverride: true,\n noPropertyAccessFromIndexSignature: false,\n\n // Completeness\n skipLibCheck: true, // Faster, skip checking .d.ts files\n\n // Advanced\n allowUnusedLabels: false,\n allowUnreachableCode: false\n },\n include: ['src/**/*'],\n exclude: ['node_modules', 'dist', 'build', 'out', 'coverage', '.nyc_output']\n}\n\nexport default basePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Browser environment TypeScript configuration\n * For client-side applications running in web browsers\n */\nconst browserPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n target: 'ES2020' // Good browser support\n }\n}\n\nexport default browserPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Node.js environment TypeScript configuration\n * For server-side applications running in Node.js\n */\nconst nodePreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2024'],\n target: 'ES2024',\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n types: ['node']\n }\n}\n\nexport default nodePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Universal environment TypeScript configuration\n * For SSR/SSG applications (Next.js, Nuxt, Astro, SvelteKit)\n * Combines Node.js for server and browser for client\n */\nconst universalPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n target: 'ES2022',\n types: ['node']\n }\n}\n\nexport default universalPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Angular TypeScript configuration\n * Strict mode enabled by default (Angular best practice)\n */\nconst angularPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n experimentalDecorators: true,\n emitDecoratorMetadata: true\n }\n}\n\nexport default angularPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Astro TypeScript configuration\n * Multi-framework support with islands architecture\n */\nconst astroPreset: TypescriptConfig = {\n compilerOptions: {\n jsx: 'react-jsx', // Astro uses React-style JSX\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n types: ['astro/client']\n }\n}\n\nexport default astroPreset\n","import type { ElectronMultiConfig, ResolvedFramework, TypescriptConfig } from '#core/types.js'\n\n/**\n * Electron TypeScript preset - generates multi-config setup\n * Replaces @electron-toolkit/tsconfig with framework-aware configs\n *\n * Generates 4 separate tsconfig files:\n * - tsconfig.json: Root orchestrator with project references\n * - tsconfig.node.json: Main process + Preload scripts (Node.js environment)\n * - tsconfig.web.json: Renderer process (browser environment with framework)\n * - tsconfig.tests.json: Test environment (Vitest + Playwright)\n */\n\n/**\n * Create Electron multi-config preset\n * @param renderer - Renderer framework ('vue', 'react', 'svelte', 'vanilla')\n * @returns Object containing all 4 tsconfig configurations\n */\nexport default function createElectronPreset(\n renderer: ResolvedFramework = 'vue'\n): Omit<ElectronMultiConfig, '_meta'> {\n // Determine renderer-specific file extensions\n const rendererExtensions = renderer === 'vue' ? ['src/renderer/**/*.vue'] : []\n\n const root: TypescriptConfig = {\n files: [],\n references: [{ path: './tsconfig.node.json' }, { path: './tsconfig.web.json' }]\n }\n\n const node: TypescriptConfig = {\n $schema: 'https://json.schemastore.org/tsconfig',\n include: ['electron.vite.config.*', 'package.json', 'src/main/*', 'src/preload/*'],\n compilerOptions: {\n composite: true,\n target: 'ES2024',\n lib: ['ES2024', 'ESNext'],\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n types: ['electron-vite/node'],\n baseUrl: '.',\n paths: {\n '@/*': ['src/*'],\n '@main/*': ['src/main/*'],\n '@preload/*': ['src/preload/*']\n },\n resolveJsonModule: true\n }\n }\n\n const web: TypescriptConfig = {\n $schema: 'https://json.schemastore.org/tsconfig',\n include: [\n 'src/renderer/env.d.ts',\n 'src/renderer/**/*',\n ...rendererExtensions,\n 'src/preload/*.d.ts',\n 'package.json'\n ],\n compilerOptions: {\n composite: true,\n target: 'ES2024',\n lib: ['ES2024', 'ESNext', 'DOM', 'DOM.Iterable'],\n baseUrl: '.',\n paths: {\n '@/*': ['src/*'],\n '@renderer/*': ['src/renderer/*'],\n '@main/*': ['src/main/*'],\n '@preload/*': ['src/preload/*']\n },\n strict: true,\n noUnusedParameters: true,\n noFallthroughCasesInSwitch: true,\n noUncheckedIndexedAccess: true\n }\n }\n\n const tests: TypescriptConfig = {\n $schema: 'https://json.schemastore.org/tsconfig',\n include: ['tests/**/*', 'src/renderer/**/*.vue', 'src/renderer/env.d.ts'],\n compilerOptions: {\n composite: true,\n baseUrl: '.',\n paths: {\n '@/*': ['src/*'],\n '@renderer/*': ['src/renderer/*'],\n '@main/*': ['src/main/*'],\n '@preload/*': ['src/preload/*'],\n '@tests/*': ['tests/*'],\n '@unit/*': ['tests/unit/*'],\n '@integration/*': ['tests/integration/*'],\n '@fixtures/*': ['tests/fixtures/*'],\n '@setup/*': ['tests/setup/*']\n },\n types: ['vitest/globals', '@playwright/test'],\n strict: false\n }\n }\n\n return { root, node, web, tests }\n}\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Node.js backend TypeScript configuration\n * For server-side applications, APIs, and CLIs\n */\nconst nodePreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022'],\n module: 'NodeNext',\n moduleResolution: 'NodeNext',\n types: ['node']\n }\n}\n\nexport default nodePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * React TypeScript configuration\n * Supports modern React 17+ with automatic JSX runtime\n */\nconst reactPreset: TypescriptConfig = {\n compilerOptions: {\n jsx: 'react-jsx', // Modern React 17+ automatic runtime\n lib: ['ES2022', 'DOM', 'DOM.Iterable']\n }\n}\n\nexport default reactPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Solid.js TypeScript configuration\n * Uses JSX similar to React\n */\nconst solidPreset: TypescriptConfig = {\n compilerOptions: {\n jsx: 'preserve', // Solid uses its own JSX transform\n jsxImportSource: 'solid-js',\n lib: ['ES2022', 'DOM', 'DOM.Iterable']\n }\n}\n\nexport default solidPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Svelte TypeScript configuration\n * Note: Use svelte-check for .svelte file type checking\n */\nconst sveltePreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n types: ['svelte']\n }\n}\n\nexport default sveltePreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Vanilla TypeScript configuration\n * Plain TypeScript without any framework\n */\nconst vanillaPreset: TypescriptConfig = {\n compilerOptions: {\n lib: ['ES2022', 'DOM', 'DOM.Iterable']\n }\n}\n\nexport default vanillaPreset\n","import type { TypescriptConfig } from '#core/types.js'\n\n/**\n * Vue.js TypeScript configuration\n * Requires vue-tsc for Single File Component (.vue) support\n */\nconst vuePreset: TypescriptConfig & { vueCompilerOptions?: Record<string, unknown> } = {\n compilerOptions: {\n jsx: 'preserve', // Vue compiler handles JSX transformation\n jsxImportSource: 'vue',\n lib: ['ES2022', 'DOM', 'DOM.Iterable'],\n types: ['vite/client'] // Common for Vue + Vite projects\n },\n // Vue-specific options (for vue-tsc)\n vueCompilerOptions: {\n extensions: ['.vue'],\n vitePressExtensions: ['.md']\n }\n}\n\nexport default vuePreset\n","import { detectTypeChecker } from './checker-detection.js'\nimport basePreset from './presets/base.js'\nimport browserEnv from './presets/environments/browser.js'\nimport nodeEnv from './presets/environments/node.js'\nimport universalEnv from './presets/environments/universal.js'\nimport angularFramework from './presets/frameworks/angular.js'\nimport astroFramework from './presets/frameworks/astro.js'\nimport electronFramework from './presets/frameworks/electron.js'\nimport nodeFramework from './presets/frameworks/node.js'\nimport reactFramework from './presets/frameworks/react.js'\nimport solidFramework from './presets/frameworks/solid.js'\nimport svelteFramework from './presets/frameworks/svelte.js'\nimport vanillaFramework from './presets/frameworks/vanilla.js'\nimport vueFramework from './presets/frameworks/vue.js'\n\nimport { autoDetect } from '#core/detectors.js'\nimport {\n ConfigError,\n type ElectronMultiConfig,\n type ResolvedEnvironment,\n type ResolvedFramework,\n type TypeChecker,\n type TypeCheckerPreference,\n type TypescriptConfig,\n type TypescriptOptions\n} from '#core/types.js'\n\n// Valid renderer framework options for Electron\nconst VALID_RENDERERS: readonly ResolvedFramework[] = [\n 'react',\n 'vue',\n 'svelte',\n 'solid',\n 'astro',\n 'angular',\n 'vanilla'\n] as const\n\n/**\n * Create TypeScript configuration with auto-detection\n *\n * @param options - Configuration options\n * @returns TypeScript configuration object\n *\n * @example\n * // Auto-detect framework\n * export default await createTypescriptConfig();\n *\n * @example\n * // Explicit framework\n * export default await createTypescriptConfig({ framework: 'react' });\n *\n * @example\n * // With custom compiler options\n * export default await createTypescriptConfig({\n * framework: 'react',\n * compilerOptions: { outDir: './build' }\n * });\n */\n// eslint-disable-next-line require-await -- async for API consistency with other tools\nexport async function createTypescriptConfig(\n options: TypescriptOptions = {}\n): Promise<TypescriptConfig | ElectronMultiConfig> {\n const {\n framework: frameworkOption = 'auto',\n environment: environmentOption = 'auto',\n checker: checkerPreference = 'auto',\n strict = true,\n electron: electronOption,\n renderer: rendererOption,\n compilerOptions: userCompilerOptions = {},\n cwd = process.cwd()\n } = options\n\n // Auto-detect framework, environment, and Electron\n const detected =\n frameworkOption === 'auto' || environmentOption === 'auto' || electronOption === undefined\n ? autoDetect(cwd)\n : { framework: frameworkOption, environment: environmentOption, electron: electronOption }\n\n const framework: ResolvedFramework =\n frameworkOption === 'auto'\n ? (detected.framework as ResolvedFramework)\n : (frameworkOption as ResolvedFramework)\n const environment: ResolvedEnvironment =\n environmentOption === 'auto'\n ? (detected.environment as ResolvedEnvironment)\n : (environmentOption as ResolvedEnvironment)\n const isElectron = electronOption !== undefined ? electronOption : detected.electron\n\n // Handle Electron multi-config\n if (isElectron) {\n const renderer = rendererOption || framework\n\n // Validate renderer option\n if (!VALID_RENDERERS.includes(renderer as ResolvedFramework)) {\n throw new ConfigError(\n `Invalid renderer option for Electron: \"${renderer}\". Must be one of: ${VALID_RENDERERS.join(', ')}`,\n {\n received: renderer,\n validRenderers: VALID_RENDERERS\n }\n )\n }\n\n const checker = detectTypeChecker(\n framework,\n checkerPreference as TypeCheckerPreference,\n cwd\n ) as TypeChecker\n\n console.log(\n `⚡ Electron TypeScript Config: ${renderer} renderer | Checker: ${checker}${checker === 'tsgo' ? ' (10x faster!)' : ''}`\n )\n\n const configs = electronFramework(renderer)\n\n return {\n ...configs,\n _meta: {\n framework: 'electron' as ResolvedFramework,\n renderer,\n checker,\n multiConfig: true,\n experimental: checker === 'tsgo',\n generatedBy: '@dimensional-innovations/tool-config'\n }\n }\n }\n\n // Detect which type checker to use\n const checker = detectTypeChecker(\n framework,\n checkerPreference as TypeCheckerPreference,\n cwd\n ) as TypeChecker\n\n // Log detection\n console.log(\n `🔍 TypeScript Config: ${framework} | ${environment} | Checker: ${checker}${checker === 'tsgo' ? ' (10x faster!)' : ''}`\n )\n\n // Load presets\n const config = loadPresets(framework, environment, strict)\n\n // Merge user overrides\n if (userCompilerOptions && Object.keys(userCompilerOptions).length > 0) {\n config.compilerOptions = {\n ...config.compilerOptions,\n ...userCompilerOptions\n }\n }\n\n // Add metadata\n config._meta = {\n framework,\n environment,\n checker,\n experimental: checker === 'tsgo',\n generatedBy: '@dimensional-innovations/tool-config'\n }\n\n return config\n}\n\n/**\n * Load and merge configuration presets\n *\n * @param framework - Framework name\n * @param environment - Environment name\n * @param strict - Enable strict mode\n * @returns Merged configuration\n */\nfunction loadPresets(\n framework: ResolvedFramework,\n environment: ResolvedEnvironment,\n strict: boolean\n): TypescriptConfig {\n const config: TypescriptConfig = structuredClone(basePreset)\n\n // Load environment preset (synchronous imports)\n const envPreset = loadEnvironmentPreset(environment)\n mergeConfig(config, envPreset)\n\n // Load framework preset (synchronous imports)\n const frameworkPreset = loadFrameworkPreset(framework)\n mergeConfig(config, frameworkPreset)\n\n // Apply strict mode overrides if disabled\n if (!strict) {\n config.compilerOptions = config.compilerOptions || {}\n config.compilerOptions.strict = false\n config.compilerOptions.noImplicitAny = false\n // Keep other strict checks, just disable the master switch\n }\n\n return config\n}\n\n/**\n * Load environment-specific preset\n *\n * @param environment - Environment name\n * @returns Environment preset\n */\nfunction loadEnvironmentPreset(environment: ResolvedEnvironment): TypescriptConfig {\n switch (environment) {\n case 'browser':\n return browserEnv\n case 'node':\n return nodeEnv\n case 'universal':\n return universalEnv\n default:\n return {}\n }\n}\n\n/**\n * Load framework-specific preset\n *\n * @param framework - Framework name\n * @returns Framework preset\n */\nfunction loadFrameworkPreset(framework: ResolvedFramework | string): TypescriptConfig {\n switch (framework) {\n case 'react':\n return reactFramework\n case 'vue':\n return vueFramework\n case 'svelte':\n return svelteFramework\n case 'solid':\n return solidFramework\n case 'astro':\n return astroFramework\n case 'angular':\n return angularFramework\n case 'node':\n return nodeFramework\n case 'vanilla':\n default:\n return vanillaFramework\n }\n}\n\n/**\n * Deep merge configuration objects\n *\n * @param target - Target configuration\n * @param source - Source configuration to merge\n */\nfunction mergeConfig(target: TypescriptConfig, source: TypescriptConfig): void {\n for (const key in source) {\n const sourceKey = key as keyof TypescriptConfig\n if (key === 'compilerOptions' && target.compilerOptions) {\n Object.assign(target.compilerOptions, source.compilerOptions)\n } else if (key === 'include' && Array.isArray(source.include)) {\n target.include = [...new Set([...(target.include || []), ...source.include])]\n } else if (key === 'exclude' && Array.isArray(source.exclude)) {\n target.exclude = [...new Set([...(target.exclude || []), ...source.exclude])]\n } else {\n ;(target as Record<string, unknown>)[sourceKey] = source[sourceKey]\n }\n }\n}\n\nexport default createTypescriptConfig\n"]}
|
|
@@ -4,8 +4,7 @@ import js from '@eslint/js';
|
|
|
4
4
|
import tseslint from 'typescript-eslint';
|
|
5
5
|
import globals3 from 'globals';
|
|
6
6
|
import prettierConfig from 'eslint-config-prettier';
|
|
7
|
-
import
|
|
8
|
-
import importPlugin from 'eslint-plugin-import';
|
|
7
|
+
import importPlugin from 'eslint-plugin-import-x';
|
|
9
8
|
|
|
10
9
|
// src/tools/eslint/presets/base.ts
|
|
11
10
|
var basePreset = {
|
|
@@ -268,13 +267,13 @@ function createVanillaPreset() {
|
|
|
268
267
|
}
|
|
269
268
|
var importsPreset = {
|
|
270
269
|
plugins: {
|
|
271
|
-
import:
|
|
270
|
+
import: importPlugin
|
|
272
271
|
},
|
|
273
272
|
rules: {
|
|
274
273
|
// ============================================================
|
|
275
274
|
// IMPORT/MODULE RULES
|
|
276
275
|
// Module import/export best practices
|
|
277
|
-
// Documentation: https://github.com/
|
|
276
|
+
// Documentation: https://github.com/un-ts/eslint-plugin-import-x
|
|
278
277
|
// ============================================================
|
|
279
278
|
"import/order": [
|
|
280
279
|
"error",
|
|
@@ -621,5 +620,5 @@ async function createEslintConfig(options = {}) {
|
|
|
621
620
|
var eslint_default = createEslintConfig;
|
|
622
621
|
|
|
623
622
|
export { createEslintConfig, eslint_default };
|
|
624
|
-
//# sourceMappingURL=chunk-
|
|
625
|
-
//# sourceMappingURL=chunk-
|
|
623
|
+
//# sourceMappingURL=chunk-HAVDVZO3.js.map
|
|
624
|
+
//# sourceMappingURL=chunk-HAVDVZO3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/eslint/presets/base.ts","../src/tools/eslint/presets/environments/browser.ts","../src/tools/eslint/presets/environments/node.ts","../src/tools/eslint/presets/environments/universal.ts","../src/tools/eslint/presets/frameworks/angular.ts","../src/tools/eslint/presets/frameworks/node.ts","../src/tools/eslint/presets/frameworks/vanilla.ts","../src/tools/eslint/presets/imports.ts","../src/tools/eslint/presets/typescript.ts","../src/tools/eslint/index.ts"],"names":["globals","prettierConfig"],"mappings":"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","file":"chunk-HAVDVZO3.js","sourcesContent":["import type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Base JavaScript rules that apply to all projects\n * These are framework-agnostic and environment-agnostic\n */\nconst basePreset: EslintFlatConfig = {\n rules: {\n // ============================================================\n // MODERN JAVASCRIPT RULES\n // Best practices for ES2015+ code\n // Documentation: https://eslint.org/docs/rules/\n // ============================================================\n\n // Console and debugging\n 'no-console': ['warn', { allow: ['warn', 'error'] }], // Warn on console.log but allow console.warn/error for logging\n 'no-debugger': 'warn', // Warn on debugger statements (should be removed before commit)\n 'no-alert': 'error', // Disallow alert/confirm/prompt (use proper UI)\n\n // Modern syntax preferences\n 'prefer-const': 'error', // Use const for variables that are never reassigned\n 'no-var': 'error', // Use let/const instead of var\n 'prefer-arrow-callback': 'error', // Use arrow functions for callbacks\n 'prefer-template': 'error', // Use template literals instead of string concatenation\n 'prefer-destructuring': [\n 'error',\n {\n array: true,\n object: true\n },\n {\n enforceForRenamedProperties: false\n }\n ], // Use destructuring where possible\n 'prefer-rest-params': 'error', // Use rest parameters instead of arguments object\n 'prefer-spread': 'error', // Use spread operator instead of .apply()\n 'object-shorthand': 'error', // Use object shorthand syntax {x} instead of {x: x}\n // Note: arrow-body-style is a formatting rule disabled by eslint-config-prettier\n\n // Code quality\n eqeqeq: ['error', 'always'], // Always use === and !== instead of == and !=\n 'no-duplicate-imports': 'off', // Handled by import/no-duplicates (better type + value import support)\n 'no-useless-computed-key': 'error', // Disallow unnecessary computed property keys\n 'no-useless-constructor': 'error', // Disallow unnecessary constructors\n 'no-useless-rename': 'error', // Disallow renaming import/export/destructured assignments to same name\n 'no-nested-ternary': 'error', // Disallow nested ternary expressions (hard to read)\n 'no-unneeded-ternary': 'error', // Disallow ternary operators when simpler alternatives exist\n 'prefer-object-spread': 'error', // Use object spread instead of Object.assign\n\n // Async/Promise best practices\n 'no-return-await': 'error', // Disallow unnecessary return await\n 'require-await': 'warn', // Warn on async functions without await (allow for plugin patterns)\n 'no-promise-executor-return': 'error', // Disallow returning values from Promise executor functions\n\n // ============================================================\n // CODE QUALITY & COMPLEXITY\n // Maintainability and readability rules\n // Documentation: https://eslint.org/docs/rules/\n // ============================================================\n\n // Complexity (warnings to identify areas needing refactoring)\n complexity: ['warn', 15], // Warn on high cyclomatic complexity\n 'max-depth': ['warn', 4], // Warn on deeply nested blocks\n 'max-lines': ['warn', 500], // Warn on files exceeding 500 lines\n 'max-lines-per-function': [\n 'warn',\n {\n max: 100,\n skipBlankLines: true,\n skipComments: true\n }\n ], // Warn on functions exceeding 100 lines\n 'max-params': ['warn', 4] // Warn on functions with more than 4 parameters\n\n // Note: spaced-comment is a formatting rule disabled by eslint-config-prettier\n }\n}\n\nexport default basePreset\n","import globals from 'globals'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Browser environment configuration\n * Adds browser global variables (window, document, etc.)\n * ECMAScript 2025 (ES2025) support\n */\nconst browserEnv: EslintFlatConfig = {\n languageOptions: {\n ecmaVersion: 2025,\n sourceType: 'module',\n globals: {\n ...globals.browser\n }\n }\n}\n\nexport default browserEnv\n","import globals from 'globals'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Node.js environment configuration\n * Adds Node.js global variables (process, __dirname, require, etc.)\n * ECMAScript 2025 (ES2025) support\n */\nconst nodeEnv: EslintFlatConfig = {\n languageOptions: {\n ecmaVersion: 2025,\n sourceType: 'module',\n globals: {\n ...globals.node\n }\n },\n rules: {\n // Node.js-specific rule adjustments\n 'no-console': 'off', // Console is normal in Node.js\n '@typescript-eslint/no-var-requires': 'off' // Allow require() in .js files\n }\n}\n\nexport default nodeEnv\n","import globals from 'globals'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Universal environment configuration\n * Combines both browser and Node.js globals for fullstack apps\n * Useful for: Astro, Electron, fullstack monorepos\n * ECMAScript 2025 (ES2025) support\n */\nconst universalEnv: EslintFlatConfig = {\n languageOptions: {\n ecmaVersion: 2025,\n sourceType: 'module',\n globals: {\n ...globals.browser,\n ...globals.node\n }\n }\n}\n\nexport default universalEnv\n","import prettierConfig from 'eslint-config-prettier'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Angular configuration (basic TypeScript linting)\n *\n * Note: This provides basic TypeScript linting for Angular projects.\n * For Angular-specific template and component rules, install:\n * @angular-eslint/eslint-plugin\n *\n * See: https://github.com/angular-eslint/angular-eslint\n */\nexport default function createAngularPreset(): EslintFlatConfig[] {\n return [\n {\n files: ['**/*.ts'],\n rules: {\n // ============================================================\n // ANGULAR-FRIENDLY TYPESCRIPT RULES\n // Basic rules that work well with Angular patterns\n // ============================================================\n\n // Angular uses decorators extensively\n '@typescript-eslint/no-extraneous-class': 'off',\n\n // Angular components often have empty constructors for DI\n '@typescript-eslint/no-empty-function': [\n 'error',\n {\n allow: ['constructors']\n }\n ],\n\n // Angular uses ! for definite assignment (properties set by Angular)\n '@typescript-eslint/no-non-null-assertion': 'warn',\n\n // Angular services and components use 'any' in some cases\n '@typescript-eslint/no-explicit-any': 'warn',\n\n // Parameter properties are common in Angular (constructor(private foo: Foo))\n '@typescript-eslint/parameter-properties': 'off',\n '@typescript-eslint/explicit-member-accessibility': 'off',\n\n // Angular uses both interfaces and types\n '@typescript-eslint/consistent-type-definitions': 'off',\n\n // Naming conventions for Angular\n '@typescript-eslint/naming-convention': [\n 'error',\n {\n selector: 'default',\n format: ['camelCase'],\n leadingUnderscore: 'allow',\n trailingUnderscore: 'allow'\n },\n {\n selector: 'variable',\n format: ['camelCase', 'UPPER_CASE', 'PascalCase'],\n leadingUnderscore: 'allow'\n },\n {\n selector: 'typeLike',\n format: ['PascalCase']\n },\n {\n selector: 'enumMember',\n format: ['PascalCase', 'UPPER_CASE']\n },\n {\n selector: 'property',\n format: null // Allow any format for properties (Angular templates use various patterns)\n }\n ]\n }\n },\n\n // Disable all formatting rules that conflict with Prettier\n // This must be last to override any formatting rules from above\n prettierConfig\n ]\n}\n","import prettierConfig from 'eslint-config-prettier'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Node.js backend configuration\n * Conservative rules for Node.js/Express/Fastify backend services\n */\nexport default function createNodePreset(): EslintFlatConfig[] {\n return [\n {\n files: ['**/*.js', '**/*.ts', '**/*.mjs'],\n rules: {\n // ============================================================\n // NODE.JS BACKEND RULES\n // Best practices for server-side JavaScript/TypeScript\n // ============================================================\n\n // Console usage is normal in Node.js\n 'no-console': 'off',\n\n // Process and __dirname are standard in Node\n 'no-process-env': 'off',\n 'no-process-exit': 'warn',\n\n // Async patterns\n 'no-async-promise-executor': 'error',\n 'require-atomic-updates': 'error',\n\n // Error handling\n 'no-throw-literal': 'error',\n 'prefer-promise-reject-errors': 'error',\n\n // Node.js specific\n 'callback-return': 'off', // Modern Node uses async/await\n 'handle-callback-err': 'off', // Modern Node uses async/await\n 'no-mixed-requires': 'off', // ES modules don't have this issue\n 'no-new-require': 'error',\n 'no-path-concat': 'error', // Use path.join() instead\n\n // Security\n 'no-eval': 'error',\n 'no-implied-eval': 'error',\n 'no-new-func': 'error',\n\n // Best practices for backend\n 'no-unused-vars': [\n 'error',\n {\n args: 'after-used',\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_'\n }\n ],\n\n // Allow both require and import\n '@typescript-eslint/no-var-requires': 'off'\n }\n },\n\n // Disable all formatting rules that conflict with Prettier\n // This must be last to override any formatting rules from above\n prettierConfig\n ]\n}\n","import prettierConfig from 'eslint-config-prettier'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Vanilla JavaScript/TypeScript configuration\n * No framework-specific rules - just modern JavaScript best practices\n * Perfect for: libraries, utilities, Node.js apps without frameworks\n */\nexport default function createVanillaPreset(): EslintFlatConfig[] {\n return [\n {\n files: ['**/*.js', '**/*.ts', '**/*.tsx'],\n rules: {\n // No framework-specific rules\n // All rules come from base.js and typescript.js presets\n }\n },\n\n // Disable all formatting rules that conflict with Prettier\n // This must be last to override any formatting rules from above\n prettierConfig\n ]\n}\n","import importPlugin from 'eslint-plugin-import-x'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Import/export rules configuration\n * Uses eslint-plugin-import-x which natively supports flat config\n */\nconst importsPreset: EslintFlatConfig = {\n plugins: {\n import: importPlugin\n },\n rules: {\n // ============================================================\n // IMPORT/MODULE RULES\n // Module import/export best practices\n // Documentation: https://github.com/un-ts/eslint-plugin-import-x\n // ============================================================\n\n 'import/order': [\n 'error',\n {\n groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index'],\n 'newlines-between': 'always',\n alphabetize: {\n order: 'asc',\n caseInsensitive: true\n }\n }\n ], // Enforce consistent import order with alphabetization\n 'import/no-duplicates': [\n 'error',\n {\n 'prefer-inline': true,\n considerQueryString: false\n }\n ], // Prevent duplicate imports (allows type + value imports from same module)\n 'import/no-unresolved': 'off', // TypeScript handles this better\n 'import/named': 'off', // TypeScript handles this better\n 'import/namespace': 'off', // TypeScript handles this better\n 'import/default': 'off', // TypeScript handles this better\n 'import/no-named-as-default': 'warn', // Warn on potentially confusing imports\n 'import/no-named-as-default-member': 'warn', // Warn on confusing member access\n 'import/newline-after-import': 'error', // Require blank line after imports\n 'import/no-webpack-loader-syntax': 'error', // No webpack loader syntax in imports\n 'import/first': 'error' // Imports must be at the top of the file\n }\n}\n\nexport default importsPreset\n","import type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * TypeScript-specific rules\n * Only included when TypeScript is detected or explicitly enabled\n */\nconst typescriptPreset: EslintFlatConfig = {\n rules: {\n // ============================================================\n // TYPESCRIPT RULES\n // TypeScript-specific linting and type safety\n // Documentation: https://typescript-eslint.io/rules/\n // ============================================================\n\n // Type safety\n '@typescript-eslint/no-explicit-any': 'warn', // Warn on any usage (allow when necessary)\n // Note: Type-checked rules (no-unsafe-*) require TypeScript project configuration\n // They are disabled here but available in recommended-type-checked preset\n\n // Type annotations\n '@typescript-eslint/explicit-function-return-type': 'off', // Too strict - TS can infer return types\n '@typescript-eslint/explicit-module-boundary-types': 'off', // Too strict - TS can infer exports\n '@typescript-eslint/typedef': [\n 'error',\n {\n arrayDestructuring: false,\n arrowParameter: false,\n memberVariableDeclaration: false,\n objectDestructuring: false,\n parameter: false,\n propertyDeclaration: true, // Require type annotations on class properties\n variableDeclaration: false,\n variableDeclarationIgnoreFunction: true\n }\n ], // Require type annotations in specific places\n\n // Best practices\n '@typescript-eslint/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_', // Allow unused args prefixed with _\n varsIgnorePattern: '^_' // Allow unused vars prefixed with _\n }\n ],\n '@typescript-eslint/prefer-for-of': 'error', // Prefer for-of over standard for loop with index\n '@typescript-eslint/no-non-null-assertion': 'warn', // Warn on non-null assertions (! operator)\n\n // Consistency\n '@typescript-eslint/consistent-type-definitions': ['error', 'interface'], // Prefer interface over type alias\n '@typescript-eslint/consistent-type-imports': [\n 'error',\n {\n prefer: 'type-imports', // Use import type for type-only imports\n disallowTypeAnnotations: false\n }\n ],\n\n // ============================================================\n // NAMING CONVENTIONS\n // Enforce consistent naming patterns across the codebase\n // Documentation: https://typescript-eslint.io/rules/naming-convention/\n //\n // Patterns enforced:\n // - camelCase: variables, functions, methods, parameters\n // - PascalCase: classes, interfaces, types, enums\n // - UPPER_CASE: constants and enum members\n // - underscore prefix: private members, unused parameters\n // ============================================================\n\n '@typescript-eslint/naming-convention': [\n 'error',\n // Default: camelCase for most identifiers\n {\n selector: 'default',\n format: ['camelCase'],\n leadingUnderscore: 'allow',\n trailingUnderscore: 'forbid'\n },\n // Variables: camelCase or UPPER_CASE for constants\n {\n selector: 'variable',\n format: ['camelCase', 'UPPER_CASE', 'PascalCase'], // PascalCase for components\n leadingUnderscore: 'allow'\n },\n // Functions and methods: camelCase\n {\n selector: ['function', 'method'],\n format: ['camelCase']\n },\n // Classes, interfaces, types, enums: PascalCase\n {\n selector: 'typeLike',\n format: ['PascalCase']\n },\n // Type parameters: PascalCase with T prefix\n {\n selector: 'typeParameter',\n format: ['PascalCase'],\n prefix: ['T']\n },\n // Enum members: PascalCase or UPPER_CASE\n {\n selector: 'enumMember',\n format: ['PascalCase', 'UPPER_CASE']\n },\n // Object properties: allow camelCase, PascalCase, or UPPER_CASE (for API responses, component props, env vars)\n {\n selector: 'property',\n format: ['camelCase', 'PascalCase', 'UPPER_CASE'],\n leadingUnderscore: 'allow',\n filter: {\n // Allow properties with special characters (ESLint rule names, path aliases, env vars)\n regex: '^(@|no-|prefer-|max-|vue/|import/|spaced-|react/|[A-Z_]+).*$',\n match: false\n }\n },\n // Object literal properties: allow any format (path aliases like @renderer, @main, @preload)\n {\n selector: 'objectLiteralProperty',\n format: null\n },\n // Imports: allow camelCase or PascalCase (Vue component imports)\n {\n selector: 'import',\n format: ['camelCase', 'PascalCase'],\n leadingUnderscore: 'allow'\n },\n // Private class members: require underscore prefix\n {\n selector: 'memberLike',\n modifiers: ['private'],\n format: ['camelCase'],\n leadingUnderscore: 'require'\n },\n // Unused parameters: require underscore prefix\n {\n selector: 'parameter',\n modifiers: ['unused'],\n format: ['camelCase'],\n leadingUnderscore: 'require'\n }\n ]\n }\n}\n\nexport default typescriptPreset\n","import js from '@eslint/js'\nimport tseslint from 'typescript-eslint'\n\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 createAngularPreset from './presets/frameworks/angular.js'\nimport createNodePreset from './presets/frameworks/node.js'\nimport createVanillaPreset from './presets/frameworks/vanilla.js'\nimport importsPreset from './presets/imports.js'\nimport typescriptPreset from './presets/typescript.js'\n\nimport { autoDetect } from '#core/detectors.js'\nimport { getEslintIgnores } from '#core/ignore-patterns.js'\nimport type {\n EslintFlatConfig,\n EslintOptions,\n ResolvedEnvironment,\n ResolvedFramework\n} from '#core/types.js'\n\n/**\n * File patterns for all supported source file types\n */\nconst SOURCE_FILES: string[] = [\n '**/*.js',\n '**/*.ts',\n '**/*.tsx',\n '**/*.vue',\n '**/*.jsx',\n '**/*.svelte',\n '**/*.astro'\n]\n\n/**\n * Add framework-specific configuration to config array\n * Supports lazy loading for Svelte, Solid, and Astro to avoid requiring optional peer dependencies\n */\nasync function addFrameworkConfig(\n config: EslintFlatConfig[],\n framework: ResolvedFramework\n): Promise<void> {\n switch (framework) {\n case 'react': {\n const { default: createReactPreset } = await import('./presets/frameworks/react.js')\n config.push(...createReactPreset())\n break\n }\n case 'vue': {\n const { default: createVuePreset } = await import('./presets/frameworks/vue.js')\n config.push(...createVuePreset())\n break\n }\n case 'svelte': {\n const { default: createSveltePreset } = await import('./presets/frameworks/svelte.js')\n config.push(...createSveltePreset())\n break\n }\n case 'solid': {\n const { default: createSolidPreset } = await import('./presets/frameworks/solid.js')\n config.push(...createSolidPreset())\n break\n }\n case 'astro': {\n const { default: createAstroPreset } = await import('./presets/frameworks/astro.js')\n config.push(...createAstroPreset())\n break\n }\n case 'vanilla':\n config.push(...createVanillaPreset())\n break\n case 'node':\n config.push(...createNodePreset())\n break\n case 'angular':\n config.push(...createAngularPreset())\n break\n default:\n console.warn(`⚠️ Unknown framework \"${framework}\", defaulting to vanilla JavaScript`)\n config.push(...createVanillaPreset())\n break\n }\n}\n\n/**\n * Get environment configuration based on detected or specified environment\n * Returns globals and languageOptions for browser, node, or universal environments\n */\nfunction getEnvironmentConfig(environment: ResolvedEnvironment): EslintFlatConfig {\n switch (environment) {\n case 'node':\n return nodeEnv\n case 'universal':\n return universalEnv\n case 'browser':\n default:\n return browserEnv\n }\n}\n\n/**\n * Add TypeScript configuration to config array\n * Includes recommended TypeScript rules with relaxed settings for .d.ts and .js files\n */\nfunction addTypeScriptConfig(config: EslintFlatConfig[]): void {\n config.push(...(tseslint.configs.recommended as EslintFlatConfig[]))\n config.push({\n files: SOURCE_FILES,\n ...typescriptPreset\n })\n\n config.push({\n files: ['**/*.d.ts'],\n rules: {\n '@typescript-eslint/no-explicit-any': 'off'\n }\n })\n\n config.push({\n files: ['**/*.js'],\n rules: {\n '@typescript-eslint/no-var-requires': 'off'\n }\n })\n}\n\n/**\n * Add test and script overrides to config array\n * Relaxes rules for test files and CLI scripts, and applies user-provided rule overrides\n */\nfunction addOverrides(config: EslintFlatConfig[], options: EslintOptions): void {\n // Test files override\n config.push({\n files: ['tests/**/*.{js,ts,jsx,tsx,vue,svelte,astro}'],\n rules: {\n 'no-console': 'off',\n 'max-lines-per-function': 'off',\n complexity: 'off',\n 'max-statements': 'off',\n 'max-nested-callbacks': 'off',\n 'no-magic-numbers': 'off',\n '@typescript-eslint/no-explicit-any': 'off'\n }\n })\n\n // Node.js scripts override\n config.push({\n files: ['**/bin/**/*.js', '**/scripts/**/*.js'],\n languageOptions: {\n globals: {\n ...(nodeEnv.languageOptions?.globals as Record<string, unknown>)\n }\n },\n rules: {\n 'no-console': 'off',\n 'max-lines-per-function': 'off'\n }\n })\n\n // User-provided rule overrides\n if (options.rules && Object.keys(options.rules).length > 0) {\n config.push({\n files: SOURCE_FILES,\n rules: options.rules\n })\n }\n}\n\n/**\n * Create an ESLint flat config\n *\n * Supports: React, Vue.js, Svelte, Solid, Astro, Angular, Vanilla JS/TS, and auto-detection\n *\n * @param options - Configuration options\n * @returns ESLint flat config array\n *\n * @example\n * // Zero config - auto-detects everything\n * import { createEslintConfig } from '@dimensional-innovations/tool-config';\n * export default await createEslintConfig();\n *\n * @example\n * // Explicit configuration\n * import { createEslintConfig } from '@dimensional-innovations/tool-config';\n * export default await createEslintConfig({\n * framework: 'react',\n * environment: 'browser',\n * typescript: true\n * });\n *\n * @example\n * // With custom rules\n * import { createEslintConfig } from '@dimensional-innovations/tool-config';\n * export default await createEslintConfig({\n * rules: {\n * 'no-console': 'off'\n * }\n * });\n */\nexport async function createEslintConfig(options: EslintOptions = {}): Promise<EslintFlatConfig[]> {\n const cwd = options.cwd || process.cwd()\n const detected = autoDetect(cwd)\n\n const framework: ResolvedFramework =\n options.framework === 'auto' || !options.framework ? detected.framework : options.framework\n const environment: ResolvedEnvironment =\n options.environment === 'auto' || !options.environment\n ? detected.environment\n : options.environment\n const typescript: boolean =\n options.typescript === 'auto' || options.typescript === undefined\n ? detected.typescript\n : options.typescript\n\n console.log(\n `📦 ESLint Config: ${framework} | ${environment} | TypeScript: ${typescript ? 'Yes' : 'No'}`\n )\n\n if (framework === 'angular') {\n console.warn(\n '\\n⚠️ Angular detected. This package provides basic TypeScript linting.\\n' +\n ' For Angular-specific rules, install: @angular-eslint/eslint-plugin\\n' +\n ' See: https://github.com/angular-eslint/angular-eslint\\n'\n )\n }\n\n const defaultIgnorePaths = getEslintIgnores()\n const allIgnorePaths = [...defaultIgnorePaths, ...(options.ignorePaths || [])]\n\n const config: EslintFlatConfig[] = []\n\n // 1. Ignore paths\n config.push({ ignores: allIgnorePaths })\n\n // 2. ESLint recommended rules\n config.push(js.configs.recommended)\n\n // 3. TypeScript configuration\n if (typescript) {\n addTypeScriptConfig(config)\n }\n\n // 4. Environment configuration\n const envConfig = getEnvironmentConfig(environment)\n config.push({\n files: SOURCE_FILES,\n ...envConfig\n })\n\n // 5. Base JavaScript rules\n config.push({\n files: SOURCE_FILES,\n ...basePreset\n })\n\n // 6. Import/export rules\n config.push({\n files: SOURCE_FILES,\n ...importsPreset\n })\n\n // 7. Framework-specific configuration\n await addFrameworkConfig(config, framework)\n\n // 8. Test files and script overrides\n addOverrides(config, options)\n\n return config\n}\n\nexport default createEslintConfig\n"]}
|
|
@@ -97,7 +97,7 @@ var svelte_default = sveltePreset;
|
|
|
97
97
|
|
|
98
98
|
// src/tools/stylelint/presets/frameworks/vue.ts
|
|
99
99
|
var vuePreset = {
|
|
100
|
-
extends: ["stylelint-config-
|
|
100
|
+
extends: ["stylelint-config-recommended-vue"],
|
|
101
101
|
overrides: [
|
|
102
102
|
{
|
|
103
103
|
files: ["**/*.vue"],
|
|
@@ -359,5 +359,5 @@ async function createStylelintConfig(options = {}) {
|
|
|
359
359
|
var stylelint_default = createStylelintConfig;
|
|
360
360
|
|
|
361
361
|
export { createStylelintConfig, stylelint_default };
|
|
362
|
-
//# sourceMappingURL=chunk-
|
|
363
|
-
//# sourceMappingURL=chunk-
|
|
362
|
+
//# sourceMappingURL=chunk-NRDWX5HH.js.map
|
|
363
|
+
//# sourceMappingURL=chunk-NRDWX5HH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/stylelint/presets/base.ts","../src/tools/stylelint/presets/css-modules.ts","../src/tools/stylelint/presets/frameworks/react.ts","../src/tools/stylelint/presets/frameworks/svelte.ts","../src/tools/stylelint/presets/frameworks/vue.ts","../src/tools/stylelint/presets/scss.ts","../src/tools/stylelint/presets/tailwind.ts","../src/tools/stylelint/index.ts"],"names":[],"mappings":"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","file":"chunk-NRDWX5HH.js","sourcesContent":["import type { StylelintConfig } from '#core/types.js'\n\n/**\n * Base Stylelint preset\n *\n * Standard CSS linting rules for all projects.\n * Focuses on code quality and best practices, NOT formatting (that's Prettier's job).\n *\n * Key principles:\n * - Use modern CSS practices\n * - Avoid common mistakes\n * - Maintain consistency\n * - Don't fight with Prettier\n */\nconst basePreset: StylelintConfig = {\n extends: ['stylelint-config-standard'],\n\n rules: {\n // Color rules\n 'color-hex-length': 'short',\n 'color-named': 'never',\n\n // Property rules\n 'declaration-block-no-redundant-longhand-properties': true,\n 'shorthand-property-no-redundant-values': true,\n\n // Selector rules\n 'selector-max-id': 0,\n 'selector-no-qualifying-type': true,\n 'selector-class-pattern': [\n '^[a-z]([a-z0-9-]+)?(__([a-z0-9]+-?)+)?(--([a-z0-9]+-?)+){0,2}$',\n {\n message: 'Expected class selector to be kebab-case or BEM format'\n }\n ],\n\n // Nesting\n 'max-nesting-depth': 3,\n\n // Specificity\n 'no-descending-specificity': null,\n\n // At-rules\n 'at-rule-no-unknown': [\n true,\n {\n ignoreAtRules: ['tailwind', 'apply', 'variants', 'responsive', 'screen']\n }\n ]\n }\n}\n\nexport default basePreset\n","import type { StylelintConfig } from '#core/types.js'\n\n/**\n * CSS Modules Stylelint preset\n *\n * Configuration for projects using CSS Modules.\n * Allows CSS Modules-specific pseudo-classes and conventions.\n *\n * Key principles:\n * - Support :global() and :local() pseudo-classes\n * - Allow composition with composes\n * - Support @value imports\n * - Work alongside regular CSS/SCSS\n */\nconst cssModulesPreset: StylelintConfig = {\n rules: {\n // Allow CSS Modules pseudo-classes\n 'selector-pseudo-class-no-unknown': [\n true,\n {\n ignorePseudoClasses: ['global', 'local', 'export', 'import']\n }\n ],\n\n // Allow @value (CSS Modules constants)\n 'at-rule-no-unknown': [\n true,\n {\n ignoreAtRules: ['value']\n }\n ],\n\n // Allow 'composes' property (CSS Modules composition)\n 'property-no-unknown': [\n true,\n {\n ignoreProperties: ['composes', 'compose-with']\n }\n ],\n\n // CSS Modules often use camelCase\n 'selector-class-pattern': null // Disable pattern check for modules\n }\n}\n\nexport default cssModulesPreset\n","import type { StylelintConfig } from '#core/types.js'\n\n/**\n * React/Solid-specific Stylelint preset\n *\n * Note: Most React/Solid projects use CSS-in-JS (styled-components, emotion, etc.)\n * which is better linted by ESLint plugins, not Stylelint.\n *\n * This preset is for React/Solid projects that use separate CSS files.\n * If you're using CSS-in-JS exclusively, you don't need Stylelint.\n *\n * CSS Modules support is added conditionally in the factory function\n * when Tailwind CSS is not detected.\n */\nconst reactPreset: StylelintConfig = {\n // No special rules needed for React/Solid CSS files\n // They use standard CSS, so base preset is sufficient\n rules: {}\n}\n\nexport default reactPreset\n","import type { StylelintConfig } from '#core/types.js'\n\n/**\n * Svelte-specific Stylelint preset\n *\n * Handles <style> blocks in Svelte components (.svelte files)\n *\n * Requires: postcss-html (peer dependency)\n */\nconst sveltePreset: StylelintConfig = {\n extends: ['stylelint-config-standard'],\n\n overrides: [\n {\n files: ['**/*.svelte'],\n customSyntax: 'postcss-html'\n }\n ],\n\n rules: {\n // Allow Svelte :global() pseudo-class\n 'selector-pseudo-class-no-unknown': [\n true,\n {\n ignorePseudoClasses: ['global']\n }\n ]\n }\n}\n\nexport default sveltePreset\n","import type { StylelintConfig } from '#core/types.js'\n\n/**\n * Vue-specific Stylelint preset\n *\n * Handles <style> blocks in Vue Single File Components (.vue files)\n *\n * Requires:\n * - stylelint-config-recommended-vue\n * - postcss-html (peer dependencies)\n */\nconst vuePreset: StylelintConfig = {\n extends: ['stylelint-config-recommended-vue'],\n\n overrides: [\n {\n files: ['**/*.vue'],\n customSyntax: 'postcss-html'\n }\n ],\n\n rules: {\n // Allow Vue-specific pseudo-classes\n 'selector-pseudo-class-no-unknown': [\n true,\n {\n ignorePseudoClasses: ['deep', 'global', 'slotted']\n }\n ],\n\n // Allow Vue-specific pseudo-elements\n 'selector-pseudo-element-no-unknown': [\n true,\n {\n ignorePseudoElements: ['v-deep', 'v-global', 'v-slotted']\n }\n ]\n }\n}\n\nexport default vuePreset\n","import type { StylelintConfig } from '#core/types.js'\n\n/**\n * SCSS/Sass Stylelint preset\n *\n * Standard SCSS linting rules for projects using Sass.\n * Extends the standard SCSS configuration with additional quality rules.\n *\n * Key principles:\n * - Support SCSS syntax (variables, mixins, nesting, etc.)\n * - Enforce modern SCSS practices\n * - Avoid common SCSS mistakes\n * - Maintain consistency with CSS base rules\n */\nconst scssPreset: StylelintConfig = {\n extends: ['stylelint-config-standard-scss'],\n\n rules: {\n // Color rules\n 'color-hex-length': 'short',\n\n // Variables\n 'scss/dollar-variable-colon-space-after': 'always',\n 'scss/dollar-variable-colon-space-before': 'never',\n 'scss/dollar-variable-pattern': [\n '^[a-z][a-zA-Z0-9]*(-[a-z][a-zA-Z0-9]*)*$',\n {\n message: 'Expected variable to be kebab-case'\n }\n ],\n\n // Operators\n 'scss/operator-no-newline-after': true,\n 'scss/operator-no-unspaced': true,\n\n // Nesting\n 'max-nesting-depth': 4, // Allow one more level for SCSS\n\n // At-rules (allow Tailwind if present)\n 'scss/at-rule-no-unknown': [\n true,\n {\n ignoreAtRules: ['tailwind', 'apply', 'variants', 'responsive', 'screen', 'layer']\n }\n ],\n\n // Mixins\n 'scss/at-mixin-pattern': [\n '^[a-z][a-zA-Z0-9]*(-[a-z][a-zA-Z0-9]*)*$',\n {\n message: 'Expected mixin name to be kebab-case'\n }\n ],\n\n // Functions\n 'scss/at-function-pattern': [\n '^[a-z][a-zA-Z0-9]*(-[a-z][a-zA-Z0-9]*)*$',\n {\n message: 'Expected function name to be kebab-case'\n }\n ],\n\n // Placeholder selectors\n 'scss/percent-placeholder-pattern': [\n '^[a-z][a-zA-Z0-9]*(-[a-z][a-zA-Z0-9]*)*$',\n {\n message: 'Expected placeholder to be kebab-case'\n }\n ],\n\n // Selector rules (inherit from base)\n 'selector-max-id': 0,\n 'selector-no-qualifying-type': true,\n 'selector-class-pattern': [\n '^[a-z]([a-z0-9-]+)?(__([a-z0-9]+-?)+)?(--([a-z0-9]+-?)+){0,2}$',\n {\n message: 'Expected class selector to be kebab-case or BEM format'\n }\n ],\n\n // Disable some rules that conflict with SCSS\n 'no-descending-specificity': null\n }\n}\n\nexport default scssPreset\n","import type { StylelintConfig } from '#core/types.js'\n\n/**\n * Tailwind CSS Stylelint preset\n *\n * Configuration for projects using Tailwind CSS.\n * Disables rules that conflict with Tailwind's utility-first approach.\n *\n * Key principles:\n * - Allow Tailwind directives (@tailwind, @apply, @layer, etc.)\n * - Disable rules that conflict with utility classes\n * - Support arbitrary values and variants\n * - Work alongside regular CSS/SCSS\n */\nconst tailwindPreset: StylelintConfig = {\n // Note: We don't extend stylelint-config-tailwindcss because it's too opinionated\n // Instead, we selectively disable conflicting rules\n\n rules: {\n // Allow Tailwind at-rules\n 'at-rule-no-unknown': [\n true,\n {\n ignoreAtRules: ['tailwind', 'apply', 'layer', 'variants', 'responsive', 'screen', 'config']\n }\n ],\n\n // Allow Tailwind functions\n 'function-no-unknown': [\n true,\n {\n ignoreFunctions: ['theme', 'screen']\n }\n ],\n\n // Disable rules that conflict with Tailwind's utility classes\n 'selector-class-pattern': null, // Tailwind uses various patterns\n 'selector-max-id': null, // Allow IDs (though not recommended)\n 'no-descending-specificity': null, // Utility classes have complex specificity\n 'declaration-block-no-redundant-longhand-properties': null, // Utilities may look redundant\n\n // Allow unknown properties (Tailwind CSS variables)\n 'property-no-unknown': [\n true,\n {\n ignoreProperties: ['/^--/'] // Allow CSS custom properties\n }\n ]\n }\n}\n\nexport default tailwindPreset\n","/**\n * Stylelint configuration factory\n *\n * Creates Stylelint configurations with framework-aware defaults for CSS linting.\n *\n * Note: Stylelint is for CSS files and component styles (Vue, Svelte).\n * CSS-in-JS (React styled-components, emotion) should use ESLint plugins instead.\n */\n\nimport basePreset from './presets/base.js'\nimport cssModulesPreset from './presets/css-modules.js'\nimport reactPreset from './presets/frameworks/react.js'\nimport sveltePreset from './presets/frameworks/svelte.js'\nimport vuePreset from './presets/frameworks/vue.js'\nimport scssPreset from './presets/scss.js'\nimport tailwindPreset from './presets/tailwind.js'\n\nimport { autoDetect, detectCssType } from '#core/detectors.js'\nimport { getStylelintIgnores } from '#core/ignore-patterns.js'\nimport type { CssTypeResult, Framework, StylelintConfig, StylelintOptions } from '#core/types.js'\n\n/**\n * Normalize extends to array\n */\nfunction normalizeExtends(value: string | string[] | undefined): string[] {\n if (!value) return []\n return Array.isArray(value) ? value : [value]\n}\n\n/**\n * Merge array values, ensuring both are arrays and concatenating them\n */\nfunction mergeArrays<T>(target: T | T[] | undefined, source: T | T[] | undefined): T[] {\n let targetArray: T[]\n if (Array.isArray(target)) {\n targetArray = target\n } else if (target) {\n targetArray = [target]\n } else {\n targetArray = []\n }\n\n let sourceArray: T[]\n if (Array.isArray(source)) {\n sourceArray = source\n } else if (source) {\n sourceArray = [source]\n } else {\n sourceArray = []\n }\n\n return [...targetArray, ...sourceArray]\n}\n\n/**\n * Merge framework preset into config\n */\nfunction mergePreset(config: StylelintConfig, preset: StylelintConfig): void {\n if (preset.extends) {\n const presetExtends = normalizeExtends(preset.extends)\n const configExtends = normalizeExtends(config.extends)\n config.extends = [...configExtends, ...presetExtends]\n }\n if (preset.overrides) {\n config.overrides = [...(config.overrides || []), ...preset.overrides]\n }\n if (preset.rules) {\n config.rules = { ...config.rules, ...preset.rules }\n }\n}\n\n/**\n * Apply user overrides to config\n */\nfunction applyUserOverrides(config: StylelintConfig, userOverrides: Record<string, unknown>): void {\n // Handle arrays (extends, plugins, overrides)\n if (userOverrides.extends) {\n config.extends = mergeArrays(config.extends, userOverrides.extends as string | string[])\n delete userOverrides.extends\n }\n if (userOverrides.plugins) {\n config.plugins = mergeArrays(config.plugins, userOverrides.plugins as string | string[])\n delete userOverrides.plugins\n }\n if (userOverrides.overrides) {\n config.overrides = mergeArrays(\n config.overrides,\n userOverrides.overrides as NonNullable<StylelintConfig['overrides']> | undefined\n )\n delete userOverrides.overrides\n }\n if (userOverrides.rules) {\n config.rules = { ...config.rules, ...(userOverrides.rules as Record<string, unknown>) }\n delete userOverrides.rules\n }\n\n // Merge remaining overrides\n Object.assign(config, userOverrides)\n}\n\n/**\n * Create a Stylelint configuration\n *\n * @param options - Configuration options\n * @returns Stylelint configuration object\n *\n * @example\n * // Auto-detect framework\n * export default await createStylelintConfig();\n *\n * @example\n * // Explicit framework\n * export default await createStylelintConfig({ framework: 'vue' });\n *\n * @example\n * // Explicit CSS type\n * export default await createStylelintConfig({ cssType: 'scss' });\n *\n * @example\n * // With overrides\n * export default await createStylelintConfig({\n * framework: 'vue',\n * cssType: 'scss',\n * rules: {\n * 'color-hex-length': 'long'\n * }\n * });\n */\n// eslint-disable-next-line require-await -- async for API consistency with other tools\nexport async function createStylelintConfig(\n options: StylelintOptions = {}\n): Promise<StylelintConfig> {\n const {\n framework: explicitFramework = 'auto',\n cssType: explicitCssType = 'auto',\n cwd = process.cwd(),\n ...userOverrides\n } = options\n\n // Auto-detect framework if needed\n const framework: Framework =\n explicitFramework === 'auto' ? autoDetect(cwd).framework : explicitFramework\n\n // Auto-detect CSS type if needed\n const cssType: CssTypeResult | string =\n explicitCssType === 'auto' ? detectCssType(cwd) : explicitCssType\n\n // Normalize cssType to CssTypeResult\n let cssTypeResult: CssTypeResult | null\n if (typeof cssType === 'string') {\n cssTypeResult =\n cssType === 'scss'\n ? { preprocessor: 'scss' as const, tailwind: false, modules: false, postcss: false }\n : null\n } else {\n cssTypeResult = cssType\n }\n\n // Start with appropriate base configuration (SCSS or plain CSS)\n const config: StylelintConfig =\n cssTypeResult?.preprocessor === 'scss'\n ? { ...scssPreset, customSyntax: 'postcss-scss' }\n : { ...basePreset }\n\n // Add default ignore patterns\n config.ignoreFiles = getStylelintIgnores()\n\n // Apply Tailwind preset if detected\n if (cssTypeResult?.tailwind) {\n mergePreset(config, tailwindPreset)\n }\n\n // CSS Modules support (for React/Next.js projects)\n if ((framework === 'react' || framework === 'solid') && !cssTypeResult?.tailwind) {\n mergePreset(config, cssModulesPreset)\n }\n\n // Build CSS type description\n let cssTypeDesc = cssTypeResult?.preprocessor === 'scss' ? 'SCSS' : 'CSS'\n if (cssTypeResult?.tailwind) cssTypeDesc += ' + Tailwind'\n if ((framework === 'react' || framework === 'solid') && !cssTypeResult?.tailwind) {\n cssTypeDesc += ' Modules'\n }\n\n // Apply framework-specific preset\n switch (framework) {\n case 'vue': {\n mergePreset(config, vuePreset)\n console.warn(`🎨 Stylelint: Detected Vue.js - linting .vue component styles (${cssTypeDesc})`)\n break\n }\n\n case 'svelte': {\n mergePreset(config, sveltePreset)\n console.warn(\n `🎨 Stylelint: Detected Svelte - linting .svelte component styles (${cssTypeDesc})`\n )\n break\n }\n\n case 'react':\n case 'solid': {\n mergePreset(config, reactPreset)\n console.warn(\n `🎨 Stylelint: Detected ${framework} - linting ${cssTypeDesc} (CSS-in-JS uses ESLint)`\n )\n break\n }\n\n case 'angular':\n case 'node':\n case 'vanilla':\n case 'astro': {\n console.warn(`🎨 Stylelint: Detected ${framework} - linting ${cssTypeDesc} files`)\n break\n }\n\n default: {\n console.warn(`⚠️ Unknown framework \"${framework}\", using base ${cssTypeDesc} linting`)\n }\n }\n\n // Apply user overrides (excluding internal options)\n const {\n framework: _f,\n cssType: _ct,\n cwd: _c,\n customIgnores: _ci,\n ...restOverrides\n } = userOverrides as Record<string, unknown>\n applyUserOverrides(config, restOverrides)\n\n return config\n}\n\nexport default createStylelintConfig\n"]}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { existsSync,
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync, rmSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
import { execSync } from 'child_process';
|
|
5
5
|
import pc from 'picocolors';
|
|
@@ -44,7 +44,7 @@ function detectTypeChecker(framework, preference = "auto", cwd = process.cwd())
|
|
|
44
44
|
const hasVueTsc = hasPackageInstalled("vue-tsc", cwd);
|
|
45
45
|
if (hasVueTsc) return "vue-tsc";
|
|
46
46
|
console.warn(
|
|
47
|
-
"\u26A0\uFE0F Vue project detected but vue-tsc not found.\n Install
|
|
47
|
+
"\u26A0\uFE0F Vue project detected but vue-tsc not found.\n Install vue-tsc as a dev dependency to enable .vue file checking.\n Falling back to tsgo/tsc (won't check .vue files)"
|
|
48
48
|
);
|
|
49
49
|
}
|
|
50
50
|
const hasTsgo = hasPackageInstalled("@typescript/native-preview", cwd);
|
|
@@ -1259,8 +1259,17 @@ var CHECK_SCRIPT_MAP = {
|
|
|
1259
1259
|
typescript: "typecheck"
|
|
1260
1260
|
};
|
|
1261
1261
|
var CHECK_ORDER = ["prettier", "stylelint", "eslint", "typescript"];
|
|
1262
|
-
function
|
|
1263
|
-
|
|
1262
|
+
function detectPackageManager(cwd = process.cwd()) {
|
|
1263
|
+
if (existsSync(join(cwd, "pnpm-lock.yaml"))) return "pnpm";
|
|
1264
|
+
if (existsSync(join(cwd, "yarn.lock"))) return "yarn";
|
|
1265
|
+
return "npm";
|
|
1266
|
+
}
|
|
1267
|
+
function getRunCommand(pm, script) {
|
|
1268
|
+
if (pm === "npm") return `npm run ${script}`;
|
|
1269
|
+
return `${pm} ${script}`;
|
|
1270
|
+
}
|
|
1271
|
+
function generateCheckAllScript(installedTools, pm) {
|
|
1272
|
+
const commands = CHECK_ORDER.filter((tool) => installedTools.includes(tool)).map((tool) => getRunCommand(pm, CHECK_SCRIPT_MAP[tool])).join(" && ");
|
|
1264
1273
|
return commands || null;
|
|
1265
1274
|
}
|
|
1266
1275
|
function updatePackageJsonScripts(tools, getScriptsFn, context) {
|
|
@@ -1289,11 +1298,12 @@ function updatePackageJsonScripts(tools, getScriptsFn, context) {
|
|
|
1289
1298
|
if (packageJson.scripts.prettier || scriptsToAdd.prettier) installedTools.push("prettier");
|
|
1290
1299
|
if (packageJson.scripts.style || scriptsToAdd.style) installedTools.push("stylelint");
|
|
1291
1300
|
if (packageJson.scripts.typecheck || scriptsToAdd.typecheck) installedTools.push("typescript");
|
|
1301
|
+
const pm = detectPackageManager(cwd);
|
|
1292
1302
|
if (installedTools.length >= 2) {
|
|
1293
|
-
const checkAllCmd = generateCheckAllScript(installedTools);
|
|
1303
|
+
const checkAllCmd = generateCheckAllScript(installedTools, pm);
|
|
1294
1304
|
if (checkAllCmd) {
|
|
1295
1305
|
const existingCheckAll = packageJson.scripts["check-all"];
|
|
1296
|
-
const isAutoGenerated = existingCheckAll &&
|
|
1306
|
+
const isAutoGenerated = existingCheckAll && /^(npm run|yarn|pnpm) .+ && (npm run|yarn|pnpm) /.test(existingCheckAll);
|
|
1297
1307
|
if (!existingCheckAll || isAutoGenerated) {
|
|
1298
1308
|
scriptsToAdd["check-all"] = checkAllCmd;
|
|
1299
1309
|
}
|
|
@@ -1350,7 +1360,7 @@ function removePackageJsonScripts(tools, getScriptsFn, context) {
|
|
|
1350
1360
|
}
|
|
1351
1361
|
const checkAllScript = packageJson.scripts["check-all"];
|
|
1352
1362
|
if (checkAllScript) {
|
|
1353
|
-
const isAutoGenerated =
|
|
1363
|
+
const isAutoGenerated = /^(npm run|yarn|pnpm) .+ && (npm run|yarn|pnpm) /.test(checkAllScript);
|
|
1354
1364
|
if (isAutoGenerated) {
|
|
1355
1365
|
scriptsToRemove.push("check-all");
|
|
1356
1366
|
}
|
|
@@ -1460,7 +1470,7 @@ function showSection(title) {
|
|
|
1460
1470
|
console.log(`${title}`);
|
|
1461
1471
|
console.log("");
|
|
1462
1472
|
}
|
|
1463
|
-
function showCompletion(dryRun, createdFiles = [], scripts = []) {
|
|
1473
|
+
function showCompletion(dryRun, createdFiles = [], scripts = [], pm = "npm") {
|
|
1464
1474
|
console.log("");
|
|
1465
1475
|
if (dryRun) {
|
|
1466
1476
|
console.log(createSeparator());
|
|
@@ -1502,9 +1512,9 @@ function showCompletion(dryRun, createdFiles = [], scripts = []) {
|
|
|
1502
1512
|
completion.push("");
|
|
1503
1513
|
completion.push("\u{1F680} Quick start:");
|
|
1504
1514
|
if (scripts.includes("check-all")) {
|
|
1505
|
-
completion.push(
|
|
1515
|
+
completion.push(` ${getRunCommand(pm, "check-all")}`);
|
|
1506
1516
|
} else if (scripts.length > 0) {
|
|
1507
|
-
completion.push(`
|
|
1517
|
+
completion.push(` ${getRunCommand(pm, scripts[0])}`);
|
|
1508
1518
|
}
|
|
1509
1519
|
console.log(createBox(completion));
|
|
1510
1520
|
}
|
|
@@ -1569,7 +1579,8 @@ function contentMatches(filepath, expectedContent) {
|
|
|
1569
1579
|
return false;
|
|
1570
1580
|
}
|
|
1571
1581
|
}
|
|
1572
|
-
function uninstallTool(_tool, handler,
|
|
1582
|
+
function uninstallTool(_tool, handler, context) {
|
|
1583
|
+
const { detected, cwd, dryRun = false } = context;
|
|
1573
1584
|
const filename = handler.getConfigFilename();
|
|
1574
1585
|
const filepath = join(cwd, filename);
|
|
1575
1586
|
if (!existsSync(filepath)) {
|
|
@@ -1670,11 +1681,12 @@ async function setupTools(tools, detected, cwd, dryRun = false) {
|
|
|
1670
1681
|
}
|
|
1671
1682
|
function uninstallTools(tools, detected, cwd, dryRun = false) {
|
|
1672
1683
|
showSection("\u{1F5D1}\uFE0F Removing configuration files...");
|
|
1684
|
+
const context = { detected, cwd, dryRun };
|
|
1673
1685
|
let removedCount = 0;
|
|
1674
1686
|
for (const tool of tools) {
|
|
1675
1687
|
console.log(`${tool}:`);
|
|
1676
1688
|
const handler = TOOL_HANDLERS[tool];
|
|
1677
|
-
const success = uninstallTool(tool, handler,
|
|
1689
|
+
const success = uninstallTool(tool, handler, context);
|
|
1678
1690
|
if (success) {
|
|
1679
1691
|
removedCount++;
|
|
1680
1692
|
}
|
|
@@ -1685,6 +1697,48 @@ function uninstallTools(tools, detected, cwd, dryRun = false) {
|
|
|
1685
1697
|
}
|
|
1686
1698
|
return removedCount;
|
|
1687
1699
|
}
|
|
1700
|
+
async function handleUninstall(cwd, flags, singleTool) {
|
|
1701
|
+
const detected = autoDetect(cwd);
|
|
1702
|
+
const installedTools = detectInstalledTools(cwd);
|
|
1703
|
+
showUninstallBanner(installedTools);
|
|
1704
|
+
if (installedTools.length === 0) {
|
|
1705
|
+
console.log("Nothing to uninstall.");
|
|
1706
|
+
process.exit(0);
|
|
1707
|
+
}
|
|
1708
|
+
if (flags.all) {
|
|
1709
|
+
const removedCount2 = uninstallTools(installedTools, detected, cwd, flags.dryRun);
|
|
1710
|
+
showUninstallCompletion(flags.dryRun, removedCount2);
|
|
1711
|
+
process.exit(0);
|
|
1712
|
+
}
|
|
1713
|
+
if (singleTool) {
|
|
1714
|
+
if (!installedTools.includes(singleTool)) {
|
|
1715
|
+
console.log(`\u26A0\uFE0F ${singleTool} is not installed`);
|
|
1716
|
+
process.exit(0);
|
|
1717
|
+
}
|
|
1718
|
+
const removedCount2 = uninstallTools([singleTool], detected, cwd, flags.dryRun);
|
|
1719
|
+
showUninstallCompletion(flags.dryRun, removedCount2);
|
|
1720
|
+
process.exit(0);
|
|
1721
|
+
}
|
|
1722
|
+
const response = await prompts({
|
|
1723
|
+
type: "multiselect",
|
|
1724
|
+
name: "tools",
|
|
1725
|
+
message: "Which tools would you like to uninstall?",
|
|
1726
|
+
choices: installedTools.map((tool) => ({
|
|
1727
|
+
title: tool,
|
|
1728
|
+
value: tool,
|
|
1729
|
+
selected: false
|
|
1730
|
+
})),
|
|
1731
|
+
hint: "- Space to select. Return to submit"
|
|
1732
|
+
});
|
|
1733
|
+
if (!response.tools || response.tools.length === 0) {
|
|
1734
|
+
console.log("");
|
|
1735
|
+
console.log("\u274C No tools selected. Exiting.");
|
|
1736
|
+
process.exit(0);
|
|
1737
|
+
}
|
|
1738
|
+
const removedCount = uninstallTools(response.tools, detected, cwd, flags.dryRun);
|
|
1739
|
+
showUninstallCompletion(flags.dryRun, removedCount);
|
|
1740
|
+
process.exit(0);
|
|
1741
|
+
}
|
|
1688
1742
|
async function main() {
|
|
1689
1743
|
const args = process.argv.slice(2);
|
|
1690
1744
|
const flags = {
|
|
@@ -1705,58 +1759,21 @@ async function main() {
|
|
|
1705
1759
|
}
|
|
1706
1760
|
const cwd = process.cwd();
|
|
1707
1761
|
if (flags.uninstall) {
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
showUninstallBanner(installedTools);
|
|
1711
|
-
if (installedTools.length === 0) {
|
|
1712
|
-
console.log("Nothing to uninstall.");
|
|
1713
|
-
process.exit(0);
|
|
1714
|
-
}
|
|
1715
|
-
if (flags.all) {
|
|
1716
|
-
const removedCount2 = uninstallTools(installedTools, detected2, cwd, flags.dryRun);
|
|
1717
|
-
showUninstallCompletion(flags.dryRun, removedCount2);
|
|
1718
|
-
process.exit(0);
|
|
1719
|
-
}
|
|
1720
|
-
if (singleTool) {
|
|
1721
|
-
if (!installedTools.includes(singleTool)) {
|
|
1722
|
-
console.log(`\u26A0\uFE0F ${singleTool} is not installed`);
|
|
1723
|
-
process.exit(0);
|
|
1724
|
-
}
|
|
1725
|
-
const removedCount2 = uninstallTools([singleTool], detected2, cwd, flags.dryRun);
|
|
1726
|
-
showUninstallCompletion(flags.dryRun, removedCount2);
|
|
1727
|
-
process.exit(0);
|
|
1728
|
-
}
|
|
1729
|
-
const response2 = await prompts({
|
|
1730
|
-
type: "multiselect",
|
|
1731
|
-
name: "tools",
|
|
1732
|
-
message: "Which tools would you like to uninstall?",
|
|
1733
|
-
choices: installedTools.map((tool) => ({
|
|
1734
|
-
title: tool,
|
|
1735
|
-
value: tool,
|
|
1736
|
-
selected: false
|
|
1737
|
-
})),
|
|
1738
|
-
hint: "- Space to select. Return to submit"
|
|
1739
|
-
});
|
|
1740
|
-
if (!response2.tools || response2.tools.length === 0) {
|
|
1741
|
-
console.log("");
|
|
1742
|
-
console.log("\u274C No tools selected. Exiting.");
|
|
1743
|
-
process.exit(0);
|
|
1744
|
-
}
|
|
1745
|
-
const removedCount = uninstallTools(response2.tools, detected2, cwd, flags.dryRun);
|
|
1746
|
-
showUninstallCompletion(flags.dryRun, removedCount);
|
|
1747
|
-
process.exit(0);
|
|
1762
|
+
await handleUninstall(cwd, flags, singleTool);
|
|
1763
|
+
return;
|
|
1748
1764
|
}
|
|
1749
1765
|
const detected = autoDetect(cwd);
|
|
1750
1766
|
showBanner(detected);
|
|
1767
|
+
const pm = detectPackageManager(cwd);
|
|
1751
1768
|
if (flags.all) {
|
|
1752
1769
|
const summary2 = await setupTools([...VALID_TOOLS], detected, cwd, flags.dryRun);
|
|
1753
|
-
showCompletion(flags.dryRun, summary2.files, summary2.scripts);
|
|
1770
|
+
showCompletion(flags.dryRun, summary2.files, summary2.scripts, pm);
|
|
1754
1771
|
process.exit(0);
|
|
1755
1772
|
}
|
|
1756
1773
|
if (singleTool) {
|
|
1757
1774
|
validateTool(singleTool);
|
|
1758
1775
|
const summary2 = await setupTools([singleTool], detected, cwd, flags.dryRun);
|
|
1759
|
-
showCompletion(flags.dryRun, summary2.files, summary2.scripts);
|
|
1776
|
+
showCompletion(flags.dryRun, summary2.files, summary2.scripts, pm);
|
|
1760
1777
|
process.exit(0);
|
|
1761
1778
|
}
|
|
1762
1779
|
const response = await prompts([
|
|
@@ -1800,7 +1817,7 @@ async function main() {
|
|
|
1800
1817
|
process.exit(0);
|
|
1801
1818
|
}
|
|
1802
1819
|
const summary = await setupTools(response.tools, detected, cwd, flags.dryRun);
|
|
1803
|
-
showCompletion(flags.dryRun, summary.files, summary.scripts);
|
|
1820
|
+
showCompletion(flags.dryRun, summary.files, summary.scripts, pm);
|
|
1804
1821
|
}
|
|
1805
1822
|
main().catch((error) => {
|
|
1806
1823
|
console.error("");
|