@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/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/react.ts","../src/tools/eslint/presets/frameworks/vanilla.ts","../src/tools/eslint/presets/frameworks/vue.ts","../src/tools/eslint/presets/imports.ts","../src/tools/eslint/presets/typescript.ts","../src/core/package-reader.ts","../src/core/detectors.ts","../src/core/ignore-patterns.ts","../src/tools/eslint/presets/frameworks/svelte.ts","../src/tools/eslint/presets/frameworks/solid.ts","../src/tools/eslint/presets/frameworks/astro.ts","../src/tools/eslint/index.ts","../src/tools/prettier/presets/base.ts","../src/tools/prettier/presets/frameworks/astro.ts","../src/tools/prettier/presets/frameworks/react.ts","../src/tools/prettier/presets/frameworks/svelte.ts","../src/tools/prettier/presets/frameworks/vanilla.ts","../src/tools/prettier/presets/frameworks/vue.ts","../src/tools/prettier/index.ts","../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","../src/tools/semantic-release/presets/default.ts","../src/tools/semantic-release/presets/library.ts","../src/tools/semantic-release/presets/monorepo.ts","../src/tools/semantic-release/index.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","../src/index.ts"],"names":["globals","prettierConfig","init_node","existsSync","join","tseslint","createSveltePreset","createSolidPreset","createAstroPreset","basePreset","base_default","init_base","init_astro","init_react","init_svelte","init_vanilla","init_vue","reactPreset","react_default","sveltePreset","svelte_default","vuePreset","vue_default","browser_default","init_browser","node_default","universal_default","init_universal","init_angular","astroPreset","astro_default","nodePreset","init_solid","vanillaPreset","vanilla_default","typescript_default","checker","configs","init_typescript","createEslintConfig","createPrettierConfig","createStylelintConfig","createReleaseConfig","createTypescriptConfig"],"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 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'\nimport react from 'eslint-plugin-react'\nimport reactHooks from 'eslint-plugin-react-hooks'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * React configuration (conservative)\n * Includes React + React Hooks plugins with essential rules\n */\nexport default function createReactPreset(): EslintFlatConfig[] {\n return [\n // React recommended configuration\n react.configs.flat.recommended,\n react.configs.flat['jsx-runtime'], // Disable React-in-scope for React 17+\n\n // React Hooks rules\n {\n files: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'],\n plugins: {\n 'react-hooks': reactHooks\n },\n rules: reactHooks.configs.recommended.rules\n },\n\n // Custom opinionated React rules\n {\n files: ['**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx'],\n settings: {\n react: {\n version: 'detect' // Automatically detect React version\n }\n },\n rules: {\n // ============================================================\n // REACT RULES (Conservative - Essential Only)\n // React best practices for modern React 17+\n // Documentation: https://github.com/jsx-eslint/eslint-plugin-react\n // ============================================================\n\n // Modern React (17+) adjustments\n 'react/react-in-jsx-scope': 'off', // Not needed in React 17+ with new JSX transform\n 'react/jsx-uses-react': 'off', // Not needed in React 17+ with new JSX transform\n\n // TypeScript integration\n 'react/prop-types': 'off', // TypeScript handles prop validation\n\n // JSX best practices\n 'react/jsx-uses-vars': 'error', // Prevent variables used in JSX being marked as unused\n 'react/jsx-curly-brace-presence': ['error', { props: 'never', children: 'never' }], // Use strings when possible: prop=\"value\" not prop={\"value\"}\n 'react/self-closing-comp': 'error', // Use <Component /> instead of <Component></Component>\n 'react/jsx-boolean-value': ['error', 'never'], // Use prop instead of prop={true}\n 'react/jsx-fragments': ['error', 'syntax'], // Use <> instead of <Fragment>\n 'react/jsx-no-useless-fragment': 'error', // Disallow unnecessary fragments\n\n // Component definition\n 'react/function-component-definition': [\n 'error',\n {\n namedComponents: 'arrow-function', // const Component = () => ...\n unnamedComponents: 'arrow-function'\n }\n ],\n\n // Hooks (enforced by react-hooks plugin)\n // - react-hooks/rules-of-hooks: error\n // - react-hooks/exhaustive-deps: warn\n\n // Best practices\n 'react/no-array-index-key': 'warn', // Warn when using array index as key (can cause issues)\n 'react/jsx-key': 'error', // Require key prop in iterators\n 'react/no-children-prop': 'error', // Prevent passing children as props\n 'react/no-danger': 'warn', // Warn on dangerouslySetInnerHTML (XSS risk)\n 'react/no-deprecated': 'error', // Prevent usage of deprecated methods\n 'react/no-unknown-property': 'error' // Prevent usage of unknown DOM properties\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 prettierConfig from 'eslint-config-prettier'\nimport vuePlugin from 'eslint-plugin-vue'\nimport tseslint from 'typescript-eslint'\nimport vueParser from 'vue-eslint-parser'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Vue.js 3 custom rules\n * Vue 3 best practices and conventions\n * Documentation: https://eslint.vuejs.org/rules/\n */\nconst vueCustomRules: Record<string, unknown> = {\n // Component naming\n 'vue/component-name-in-template-casing': ['error', 'PascalCase'],\n 'vue/multi-word-component-names': 'off',\n 'vue/component-definition-name-casing': ['error', 'PascalCase'],\n\n // Template best practices\n 'vue/html-self-closing': [\n 'error',\n {\n html: {\n void: 'any',\n normal: 'always',\n component: 'always'\n }\n }\n ],\n 'vue/max-attributes-per-line': [\n 'error',\n {\n singleline: 3,\n multiline: 1\n }\n ],\n 'vue/first-attribute-linebreak': [\n 'error',\n {\n singleline: 'ignore',\n multiline: 'below'\n }\n ],\n 'vue/html-closing-bracket-newline': [\n 'error',\n {\n singleline: 'never',\n multiline: 'always'\n }\n ],\n\n // Disable formatting rules that conflict with Prettier\n 'vue/multiline-html-element-content-newline': 'off',\n 'vue/singleline-html-element-content-newline': 'off',\n\n // Vue 3 Composition API\n 'vue/no-deprecated-v-on-native-modifier': 'error',\n 'vue/no-deprecated-slot-attribute': 'error',\n 'vue/require-explicit-emits': 'error',\n 'vue/no-setup-props-reactivity-loss': 'error',\n 'vue/component-api-style': ['error', ['script-setup']],\n 'vue/define-macros-order': [\n 'error',\n {\n order: ['defineProps', 'defineEmits']\n }\n ],\n 'vue/define-emits-declaration': ['error', 'type-based'],\n\n // Directives\n 'vue/no-v-html': 'warn',\n 'vue/v-on-event-hyphenation': ['error', 'always'],\n 'vue/v-bind-style': ['error', 'shorthand'],\n 'vue/v-on-style': ['error', 'shorthand'],\n\n // Attributes\n 'vue/attribute-hyphenation': ['error', 'always'],\n 'vue/prop-name-casing': ['error', 'camelCase'],\n\n // Order and organization\n 'vue/order-in-components': [\n 'error',\n {\n order: [\n 'el',\n 'name',\n 'parent',\n 'functional',\n ['delimiters', 'comments'],\n ['components', 'directives', 'filters'],\n 'extends',\n 'mixins',\n 'inheritAttrs',\n 'model',\n ['props', 'propsData'],\n 'data',\n 'computed',\n 'watch',\n 'LIFECYCLE_HOOKS',\n 'methods',\n ['template', 'render'],\n 'renderError'\n ]\n }\n ]\n}\n\n/**\n * Vue.js 3 configuration\n * Includes Vue plugin and Vue-specific rules\n */\nexport default function createVuePreset(): EslintFlatConfig[] {\n return [\n // Vue recommended configuration (flat config)\n ...vuePlugin.configs['flat/recommended'],\n\n // Vue-specific custom rules\n {\n files: ['**/*.vue', '**/*.js', '**/*.ts', '**/*.tsx'],\n rules: vueCustomRules\n },\n\n // Vue-specific parser configuration for TypeScript in <script> tags\n // We must explicitly set vue-eslint-parser as the main parser, then configure\n // it to use TypeScript parser for <script> blocks via parserOptions.parser\n {\n files: ['**/*.vue'],\n languageOptions: {\n parser: vueParser,\n parserOptions: {\n parser: tseslint.parser,\n extraFileExtensions: ['.vue'],\n ecmaVersion: 'latest',\n sourceType: 'module'\n }\n }\n },\n\n // Disable TypeScript naming convention for Vue files (allows onUpdate:modelValue pattern)\n // IMPORTANT: Must also set parser to maintain vue-eslint-parser\n {\n files: ['**/*.vue'],\n languageOptions: {\n parser: vueParser,\n parserOptions: {\n parser: tseslint.parser,\n extraFileExtensions: ['.vue'],\n ecmaVersion: 'latest',\n sourceType: 'module'\n }\n },\n rules: {\n '@typescript-eslint/naming-convention': '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 { fixupPluginRules } from '@eslint/compat'\nimport importPlugin from 'eslint-plugin-import'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Import/export rules configuration\n * Uses @eslint/compat for flat config compatibility\n */\nconst importsPreset: EslintFlatConfig = {\n plugins: {\n import: fixupPluginRules(importPlugin)\n },\n rules: {\n // ============================================================\n // IMPORT/MODULE RULES\n // Module import/export best practices\n // Documentation: https://github.com/import-js/eslint-plugin-import\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 { 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","/**\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","import prettierConfig from 'eslint-config-prettier'\nimport svelte from 'eslint-plugin-svelte'\nimport svelteParser from 'svelte-eslint-parser'\nimport tseslint from 'typescript-eslint'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Svelte.js framework configuration\n * Comprehensive rules for Svelte 5 (runes, snippets) and SvelteKit projects\n *\n * Rules organized by category:\n * - Core Svelte best practices\n * - Svelte 5 runes mode\n * - Code style and formatting\n *\n * Note: Accessibility checks are handled by Svelte compiler warnings via svelte/valid-compile\n */\nexport default function createSveltePreset(): EslintFlatConfig[] {\n return [\n ...svelte.configs['flat/recommended'],\n {\n files: ['**/*.svelte'],\n languageOptions: {\n parser: svelteParser,\n parserOptions: {\n parser: tseslint.parser,\n extraFileExtensions: ['.svelte']\n }\n },\n rules: {\n // Core Svelte Best Practices (7 rules)\n 'svelte/no-at-html-tags': 'error',\n 'svelte/no-target-blank': 'error',\n 'svelte/no-reactive-reassign': 'error',\n 'svelte/require-store-reactive-access': 'error',\n 'svelte/valid-compile': 'error',\n 'svelte/no-unused-svelte-ignore': 'error',\n 'svelte/no-useless-mustaches': 'error',\n 'svelte/require-optimized-style-attribute': 'error',\n\n // Svelte 5 (runes mode) - 4 rules\n 'svelte/block-lang': [\n 'error',\n {\n script: 'ts',\n style: null\n }\n ],\n 'svelte/no-dom-manipulating': 'error',\n 'svelte/no-export-load-in-svelte-module-in-kit-pages': 'error',\n 'svelte/no-store-async': 'error',\n\n // Code Style (3 rules - formatting rules removed, handled by Prettier)\n 'svelte/shorthand-attribute': 'error',\n 'svelte/shorthand-directive': 'error',\n 'svelte/no-spaces-around-equal-signs-in-attribute': 'error'\n // Note: svelte/html-quotes, svelte/indent, svelte/first-attribute-linebreak\n // are formatting rules disabled by eslint-config-prettier\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'\nimport solid from 'eslint-plugin-solid/configs/typescript'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Solid.js framework configuration\n * Conservative rules for Solid reactive primitives and JSX\n *\n * Rules organized by category:\n * - Reactive primitives (signals, effects, memos)\n * - JSX best practices\n * - Component patterns\n */\nexport default function createSolidPreset(): EslintFlatConfig[] {\n return [\n {\n files: ['**/*.jsx', '**/*.tsx'],\n ...solid,\n rules: {\n ...solid.rules,\n\n // Reactive Primitives (7 rules)\n 'solid/reactivity': 'error', // Enforce reactive dependencies\n 'solid/no-destructure': 'error', // Don't destructure props (loses reactivity)\n 'solid/prefer-for': 'error', // Use <For> over .map()\n 'solid/no-innerhtml': ['error', { allowStatic: true }], // Prevent XSS\n 'solid/event-handlers': [\n 'error',\n {\n // Consistent event handler naming\n ignoreCase: false,\n warnOnSpread: false\n }\n ],\n 'solid/jsx-no-undef': 'error', // Undefined components\n 'solid/jsx-uses-vars': 'error', // Mark JSX vars as used\n\n // Component Best Practices (5 rules)\n 'solid/components-return-once': 'error', // Single return per component\n 'solid/no-unknown-namespaces': 'error', // Validate JSX namespaces\n 'solid/prefer-show': 'error', // Use <Show> over ternary\n 'solid/self-closing-comp': 'error', // Self-close components without children\n 'solid/style-prop': ['error', { styleProps: ['style', 'css'] }] // Validate style prop\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'\nimport { configs } from 'eslint-plugin-astro'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Astro framework configuration\n * Rules for Astro components and island architecture\n *\n * Rules organized by category:\n * - Component best practices\n * - Island architecture\n * - Template syntax\n * - Accessibility\n */\nexport default function createAstroPreset(): EslintFlatConfig[] {\n return [\n ...configs.recommended,\n ...configs['jsx-a11y-recommended'],\n {\n files: ['**/*.astro'],\n rules: {\n // Component Best Practices (5 rules)\n 'astro/no-conflict-set-directives': 'error', // Avoid conflicting set directives\n 'astro/no-unused-define-vars-in-style': 'error', // Remove unused CSS variables\n 'astro/no-deprecated-astro-canonicalurl': 'error', // Use new canonical URL API\n 'astro/no-deprecated-astro-fetchcontent': 'error', // Use new content collections\n 'astro/no-deprecated-astro-resolve': 'error', // Use new module resolution\n\n // Template Syntax (3 rules - formatting rules removed, handled by Prettier)\n 'astro/valid-compile': 'error', // Ensure valid Astro syntax\n 'astro/no-set-html-directive': 'warn', // Warn about XSS risk\n 'astro/prefer-class-list-directive': 'error' // Use class:list over className\n // Note: astro/semi is a formatting rule disabled by eslint-config-prettier\n\n // Accessibility (included from jsx-a11y-recommended preset)\n // - alt-text, click-events-have-key-events, etc.\n }\n },\n\n // Disable all formatting rules that conflict with Prettier\n // This must be last to override any formatting rules from above\n prettierConfig\n ]\n}\n","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 createReactPreset from './presets/frameworks/react.js'\nimport createVanillaPreset from './presets/frameworks/vanilla.js'\nimport createVuePreset from './presets/frameworks/vue.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 config.push(...createReactPreset())\n break\n case 'vue':\n config.push(...createVuePreset())\n break\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","import type { PrettierConfig } from '#core/types.js'\n\n/**\n * Base Prettier preset\n *\n * Opinionated defaults aligned with CLAUDE.md style guide:\n * - No semicolons (cleaner syntax)\n * - Single quotes (consistent with ESLint config)\n * - No trailing commas (simpler diffs)\n * - 100 character line width (readable but not too long)\n * - 2 space indentation (standard)\n * - LF line endings (Unix standard)\n *\n * These settings work universally across all frameworks and can be\n * overridden by framework-specific presets or user configuration.\n */\nconst basePreset: PrettierConfig = {\n // Code style\n semi: false,\n singleQuote: true,\n trailingComma: 'none',\n\n // Line formatting\n printWidth: 100,\n tabWidth: 2,\n useTabs: false,\n proseWrap: 'preserve',\n\n // Syntax preferences\n arrowParens: 'avoid',\n bracketSpacing: true,\n bracketSameLine: false,\n singleAttributePerLine: true,\n\n // Line endings\n endOfLine: 'lf'\n}\n\nexport default basePreset\n","import type { PrettierConfig } from '#core/types.js'\n\n/**\n * Astro-specific Prettier preset\n *\n * Configures Prettier for Astro components (.astro files)\n *\n * Requires: prettier-plugin-astro (optional peer dependency)\n */\nconst astroPreset: PrettierConfig = {\n // Use Astro plugin for .astro files\n plugins: ['prettier-plugin-astro']\n // Astro plugin handles all formatting automatically\n // No additional options needed\n}\n\nexport default astroPreset\n","import type { PrettierConfig } from '#core/types.js'\n\n/**\n * React/Solid-specific Prettier preset\n *\n * Configures Prettier for JSX files used in React and Solid.js projects\n *\n * No plugins required - Prettier has built-in JSX support via babel parser\n */\nconst reactPreset: PrettierConfig = {\n // JSX-specific options\n // Use double quotes in JSX attributes (React convention)\n jsxSingleQuote: false\n\n // Note: bracketSameLine is now in base preset\n}\n\nexport default reactPreset\n","import type { PrettierConfig } from '#core/types.js'\n\n/**\n * Svelte-specific Prettier preset\n *\n * Configures Prettier for Svelte components (.svelte files)\n *\n * Requires: prettier-plugin-svelte (optional peer dependency)\n */\nconst sveltePreset: PrettierConfig = {\n // Use Svelte plugin for .svelte files\n plugins: ['prettier-plugin-svelte'],\n\n // Component block ordering: options, scripts, markup, styles\n // This is the standard Svelte convention\n svelteSortOrder: 'options-scripts-markup-styles',\n\n // Don't enforce strict mode (allow flexibility)\n svelteStrictMode: false,\n\n // Indent <script> and <style> tags for consistency\n svelteIndentScriptAndStyle: true\n}\n\nexport default sveltePreset\n","import type { PrettierConfig } from '#core/types.js'\n\n/**\n * Vanilla JavaScript/Node.js/Angular Prettier preset\n *\n * For frameworks that don't need special Prettier configuration,\n * this preset is essentially empty and relies on the base preset.\n *\n * Used for: Vanilla JS, Node.js backends, Angular projects\n */\nconst vanillaPreset: PrettierConfig = {\n // No framework-specific options needed\n // Base preset provides everything required\n}\n\nexport default vanillaPreset\n","import type { PrettierConfig } from '#core/types.js'\n\n/**\n * Vue-specific Prettier preset\n *\n * Configures Prettier for Vue 3 Single File Components (.vue files)\n *\n * Prettier 3.x has built-in Vue SFC support via its HTML parser.\n * No external plugin is required.\n */\nconst vuePreset: PrettierConfig = {\n // Don't indent <script> and <style> tags\n // This keeps them aligned with <template> for consistency\n vueIndentScriptAndStyle: false,\n\n // Ignore whitespace sensitivity in HTML\n // Prevents issues with Vue's template whitespace handling\n htmlWhitespaceSensitivity: 'ignore'\n}\n\nexport default vuePreset\n","/**\n * Prettier configuration factory\n *\n * Creates Prettier configurations with framework-aware defaults and auto-detection.\n */\n\nimport basePreset from './presets/base.js'\nimport astroPreset from './presets/frameworks/astro.js'\nimport reactPreset from './presets/frameworks/react.js'\nimport sveltePreset from './presets/frameworks/svelte.js'\nimport vanillaPreset from './presets/frameworks/vanilla.js'\nimport vuePreset from './presets/frameworks/vue.js'\n\nimport { autoDetect } from '#core/detectors.js'\nimport type { Framework, PrettierConfig, PrettierOptions } from '#core/types.js'\n\n/**\n * Create a Prettier configuration\n *\n * @param options - Configuration options\n * @returns Prettier configuration object\n *\n * @example\n * // Auto-detect framework\n * export default await createPrettierConfig();\n *\n * @example\n * // Explicit framework\n * export default await createPrettierConfig({ framework: 'vue' });\n *\n * @example\n * // With overrides\n * export default await createPrettierConfig({\n * framework: 'react',\n * printWidth: 120,\n * semi: true\n * });\n */\n// eslint-disable-next-line require-await -- async for API consistency with other tools\nexport async function createPrettierConfig(options: PrettierOptions = {}): Promise<PrettierConfig> {\n const { framework: explicitFramework = 'auto', cwd = process.cwd(), ...userOverrides } = options\n\n // Auto-detect framework if needed\n const framework: Framework =\n explicitFramework === 'auto' ? autoDetect(cwd).framework : explicitFramework\n\n // Start with base configuration\n const config: PrettierConfig = { ...basePreset }\n\n // Apply framework-specific preset\n switch (framework) {\n case 'vue': {\n Object.assign(config, vuePreset)\n console.warn('📝 Prettier: Detected Vue.js - using Vue plugin')\n break\n }\n\n case 'react': {\n Object.assign(config, reactPreset)\n console.warn('📝 Prettier: Detected React - using JSX conventions')\n break\n }\n\n case 'solid': {\n // Solid uses same JSX conventions as React\n Object.assign(config, reactPreset)\n console.warn('📝 Prettier: Detected Solid.js - using JSX conventions')\n break\n }\n\n case 'svelte': {\n Object.assign(config, sveltePreset)\n console.warn('📝 Prettier: Detected Svelte - using Svelte plugin')\n break\n }\n\n case 'astro': {\n Object.assign(config, astroPreset)\n console.warn('📝 Prettier: Detected Astro - using Astro plugin')\n break\n }\n\n case 'angular':\n case 'node':\n case 'vanilla': {\n // These frameworks use base config with no additions\n Object.assign(config, vanillaPreset)\n console.warn(`📝 Prettier: Detected ${framework} - using base configuration`)\n break\n }\n\n default: {\n console.warn(`⚠️ Unknown framework \"${framework}\", using base configuration`)\n Object.assign(config, vanillaPreset)\n }\n }\n\n // Apply user overrides (excluding our internal options)\n const { framework: _f, cwd: _c, customIgnores: _ci, ...prettierOverrides } = userOverrides\n Object.assign(config, prettierOverrides)\n\n return config\n}\n\nexport default createPrettierConfig\n","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-standard-vue\n * - postcss-html (peer dependencies)\n */\nconst vuePreset: StylelintConfig = {\n extends: ['stylelint-config-standard-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","import type { GitProvider, SemanticReleaseConfig } from '#core/types.js'\n\n/**\n * Default semantic-release configuration\n *\n * Standard release process with:\n * - Automatic versioning based on conventional commits\n * - Changelog generation\n * - NPM publishing\n * - Git hosting provider releases (GitLab, GitHub, etc.)\n * - Git tagging\n */\nexport default function createDefaultPreset(\n gitProvider: GitProvider | null = null\n): SemanticReleaseConfig {\n const plugins: SemanticReleaseConfig['plugins'] = [\n '@semantic-release/commit-analyzer',\n '@semantic-release/release-notes-generator',\n '@semantic-release/changelog',\n '@semantic-release/npm'\n ]\n\n // Add provider-specific plugin\n if (gitProvider === 'gitlab') {\n plugins.push('@semantic-release/gitlab')\n } else if (gitProvider === 'github') {\n plugins.push('@semantic-release/github')\n }\n // Bitbucket and others don't have official plugins\n\n // Always add git plugin last\n plugins.push('@semantic-release/git')\n\n return {\n branches: ['main'],\n plugins\n }\n}\n","import type { GitProvider, SemanticReleaseConfig } from '#core/types.js'\n\n/**\n * Library-specific semantic-release configuration\n *\n * Optimized for published NPM libraries:\n * - Publishes to NPM registry\n * - Creates Git provider releases without comments\n * - Generates changelog\n * - Tags releases in Git\n *\n * Differences from default:\n * - Explicit pkgRoot configuration\n * - Disabled provider comments (less noise for library releases)\n * - Disabled released labels (library-specific optimization)\n */\nexport default function createLibraryPreset(\n gitProvider: GitProvider | null = null\n): SemanticReleaseConfig {\n const plugins: SemanticReleaseConfig['plugins'] = [\n '@semantic-release/commit-analyzer',\n '@semantic-release/release-notes-generator',\n '@semantic-release/changelog',\n [\n '@semantic-release/npm',\n {\n pkgRoot: '.'\n }\n ]\n ]\n\n // Add provider-specific plugin with library-optimized settings\n if (gitProvider === 'gitlab') {\n plugins.push([\n '@semantic-release/gitlab',\n {\n successComment: false,\n releasedLabels: false\n }\n ])\n } else if (gitProvider === 'github') {\n plugins.push([\n '@semantic-release/github',\n {\n successComment: false,\n releasedLabels: false\n }\n ])\n }\n // Bitbucket and others don't have official plugins\n\n // Always add git plugin last\n plugins.push('@semantic-release/git')\n\n return {\n branches: ['main'],\n plugins\n }\n}\n","import type { GitProvider, SemanticReleaseConfig } from '#core/types.js'\n\n/**\n * Monorepo semantic-release configuration\n *\n * Optimized for monorepo structures with multiple packages:\n * - Supports publishing multiple packages\n * - Handles workspace dependencies\n * - Per-package versioning\n * - Generates aggregated changelog\n *\n * Configuration:\n * - pkgRoot set to 'packages/*' for workspace structure\n * - Suitable for lerna, pnpm workspaces, npm workspaces\n *\n * Note: You may need to run semantic-release separately for each package\n * or use semantic-release-monorepo plugin for advanced scenarios\n */\nexport default function createMonorepoPreset(\n gitProvider: GitProvider | null = null\n): SemanticReleaseConfig {\n const plugins: SemanticReleaseConfig['plugins'] = [\n '@semantic-release/commit-analyzer',\n '@semantic-release/release-notes-generator',\n '@semantic-release/changelog',\n [\n '@semantic-release/npm',\n {\n pkgRoot: 'packages/*'\n }\n ]\n ]\n\n // Add provider-specific plugin\n if (gitProvider === 'gitlab') {\n plugins.push('@semantic-release/gitlab')\n } else if (gitProvider === 'github') {\n plugins.push('@semantic-release/github')\n }\n // Bitbucket and others don't have official plugins\n\n // Always add git plugin last\n plugins.push('@semantic-release/git')\n\n return {\n branches: ['main'],\n plugins\n }\n}\n","/**\n * semantic-release configuration factory\n *\n * Creates semantic-release configurations with preset-based defaults.\n * Supports standard releases, library publishing, and monorepo structures.\n * Auto-detects Git provider (GitLab, GitHub, Bitbucket) from repository URL.\n */\n\nimport createDefaultPreset from './presets/default.js'\nimport createLibraryPreset from './presets/library.js'\nimport createMonorepoPreset from './presets/monorepo.js'\n\nimport { detectGitProvider } from '#core/detectors.js'\nimport type {\n GitProvider,\n ReleasePreset,\n SemanticReleaseConfig,\n SemanticReleaseOptions\n} from '#core/types.js'\n\n/**\n * Create a semantic-release configuration\n *\n * @example\n * // Use default preset with auto-detected Git provider\n * export default await createReleaseConfig();\n *\n * @example\n * // Use library preset with auto-detected Git provider\n * export default await createReleaseConfig({ preset: 'library' });\n *\n * @example\n * // Explicitly specify Git provider\n * export default await createReleaseConfig({\n * preset: 'default',\n * gitProvider: 'github'\n * });\n *\n * @example\n * // Disable Git provider plugin\n * export default await createReleaseConfig({\n * preset: 'default',\n * gitProvider: null\n * });\n *\n * @example\n * // With custom branches\n * export default await createReleaseConfig({\n * preset: 'default',\n * branches: ['main', 'next']\n * });\n *\n * @example\n * // With plugin overrides\n * export default await createReleaseConfig({\n * preset: 'library',\n * plugins: [\n * '@semantic-release/commit-analyzer',\n * '@semantic-release/release-notes-generator',\n * '@semantic-release/npm'\n * ]\n * });\n */\n// eslint-disable-next-line require-await -- async for API consistency with other tools\nexport async function createReleaseConfig(\n options: SemanticReleaseOptions = {}\n): Promise<SemanticReleaseConfig> {\n const {\n preset = 'default',\n gitProvider: explicitGitProvider = 'auto',\n cwd = process.cwd(),\n ...userOverrides\n } = options\n\n // Auto-detect Git provider if needed\n const gitProvider: GitProvider | null =\n explicitGitProvider === 'auto' ? detectGitProvider(cwd) : explicitGitProvider\n\n // Log detected/configured provider\n if (gitProvider) {\n console.warn(`📦 semantic-release: Detected ${gitProvider} - using ${gitProvider} plugin`)\n } else {\n console.warn('📦 semantic-release: No Git provider detected - skipping provider plugin')\n }\n\n // Select preset and generate config\n let config: SemanticReleaseConfig\n switch (preset) {\n case 'library': {\n config = createLibraryPreset(gitProvider)\n console.warn('📦 semantic-release: Using library preset')\n break\n }\n\n case 'monorepo': {\n config = createMonorepoPreset(gitProvider)\n console.warn('📦 semantic-release: Using monorepo preset')\n break\n }\n\n case 'default': {\n config = createDefaultPreset(gitProvider)\n console.warn('📦 semantic-release: Using default preset')\n break\n }\n\n default: {\n console.warn(`⚠️ Unknown preset \"${preset as string}\", using default preset`)\n config = createDefaultPreset(gitProvider)\n }\n }\n\n // Apply user overrides\n // Special handling for arrays (branches, plugins)\n const overrides = userOverrides as Record<string, unknown>\n if (overrides.branches) {\n config.branches = overrides.branches as SemanticReleaseConfig['branches']\n delete overrides.branches\n }\n\n if (overrides.plugins) {\n config.plugins = overrides.plugins as SemanticReleaseConfig['plugins']\n delete overrides.plugins\n }\n\n // Apply remaining overrides\n Object.assign(config, overrides)\n\n // Add metadata\n config._meta = {\n preset: preset as ReleasePreset,\n gitProvider\n }\n\n return config\n}\n\nexport default createReleaseConfig\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 { 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 * @dimensional-innovations/tool-config\n * Universal configuration package for development tools\n *\n * Supports: ESLint, Prettier, Stylelint, semantic-release, TypeScript\n * Auto-detects: React, Vue, Svelte, Solid, Astro, Angular, Vanilla JS, Node.js\n */\n\nimport {\n ConfigError,\n type EslintFlatConfig,\n type EslintOptions,\n type PrettierConfig,\n type PrettierOptions,\n type SemanticReleaseConfig,\n type SemanticReleaseOptions,\n type StylelintConfig,\n type StylelintOptions,\n type ToolName,\n type TypescriptConfig,\n type TypescriptOptions\n} from '#core/types.js'\n\n// Valid tool names for validation\nconst VALID_TOOLS: readonly ToolName[] = [\n 'eslint',\n 'prettier',\n 'stylelint',\n 'typescript',\n 'semantic-release'\n] as const\n\n/**\n * Validate that the provided tool name is supported\n */\nfunction validateToolName(tool: unknown): asserts tool is ToolName {\n if (typeof tool !== 'string') {\n throw new ConfigError('Tool name must be a string', {\n received: typeof tool,\n validTools: VALID_TOOLS\n })\n }\n\n if (!VALID_TOOLS.includes(tool as ToolName)) {\n throw new ConfigError(`Unknown tool: \"${tool}\". Supported tools: ${VALID_TOOLS.join(', ')}`, {\n received: tool,\n validTools: VALID_TOOLS\n })\n }\n}\n\n/**\n * Validate that options is an object (if provided)\n */\nfunction validateOptions(options: unknown): asserts options is Record<string, unknown> {\n if (options !== undefined && options !== null && typeof options !== 'object') {\n throw new ConfigError('Options must be an object', {\n received: typeof options\n })\n }\n}\n\n// Return type union for createConfig\ntype ConfigResult =\n | EslintFlatConfig[]\n | PrettierConfig\n | StylelintConfig\n | TypescriptConfig\n | SemanticReleaseConfig\n\n// Options union type for the implementation signature\ntype ToolOptionsUnion =\n | EslintOptions\n | PrettierOptions\n | StylelintOptions\n | TypescriptOptions\n | SemanticReleaseOptions\n | Record<string, unknown>\n\n// Overloads for better type inference\nexport async function createConfig(\n tool: 'eslint',\n options?: EslintOptions\n): Promise<EslintFlatConfig[]>\nexport async function createConfig(\n tool: 'prettier',\n options?: PrettierOptions\n): Promise<PrettierConfig>\nexport async function createConfig(\n tool: 'stylelint',\n options?: StylelintOptions\n): Promise<StylelintConfig>\nexport async function createConfig(\n tool: 'typescript',\n options?: TypescriptOptions\n): Promise<TypescriptConfig>\nexport async function createConfig(\n tool: 'semantic-release',\n options?: SemanticReleaseOptions\n): Promise<SemanticReleaseConfig>\n\n/**\n * Create a configuration for a specific tool\n *\n * @param tool - Tool name ('eslint' | 'prettier' | 'stylelint' | 'semantic-release' | 'typescript')\n * @param options - Configuration options\n * @returns Tool-specific configuration\n *\n * @example\n * // ESLint configuration\n * import { createConfig } from '@dimensional-innovations/tool-config';\n * export default await createConfig('eslint', {\n * framework: 'auto',\n * environment: 'auto',\n * typescript: 'auto'\n * });\n *\n * @example\n * // Prettier configuration\n * import { createConfig } from '@dimensional-innovations/tool-config';\n * export default await createConfig('prettier', {\n * framework: 'auto'\n * });\n */\nexport async function createConfig(\n tool: ToolName,\n options?: ToolOptionsUnion\n): Promise<ConfigResult> {\n // Validate inputs\n validateToolName(tool)\n validateOptions(options)\n\n // Default to empty object if no options provided\n const opts = options ?? {}\n\n switch (tool) {\n case 'eslint': {\n const { createEslintConfig } = await import('./tools/eslint/index.js')\n return createEslintConfig(opts as EslintOptions)\n }\n case 'prettier': {\n const { createPrettierConfig } = await import('./tools/prettier/index.js')\n return createPrettierConfig(opts as PrettierOptions)\n }\n case 'stylelint': {\n const { createStylelintConfig } = await import('./tools/stylelint/index.js')\n return createStylelintConfig(opts as StylelintOptions)\n }\n case 'semantic-release': {\n const { createReleaseConfig } = await import('./tools/semantic-release/index.js')\n return createReleaseConfig(opts as SemanticReleaseOptions)\n }\n case 'typescript': {\n const { createTypescriptConfig } = await import('./tools/typescript/index.js')\n return createTypescriptConfig(opts as TypescriptOptions)\n }\n }\n}\n\n// Named exports for convenience\nexport { createEslintConfig } from './tools/eslint/index.js'\nexport { createPrettierConfig } from './tools/prettier/index.js'\nexport { createStylelintConfig } from './tools/stylelint/index.js'\nexport { createReleaseConfig } from './tools/semantic-release/index.js'\nexport { createTypescriptConfig } from './tools/typescript/index.js'\n\n// Re-export detection utilities for advanced users\nexport {\n autoDetect,\n detectFramework,\n detectEnvironment,\n detectTypeScript,\n detectGitProvider,\n detectCssType,\n detectElectron\n} from '#core/detectors.js'\n\n// Re-export types for consumers\nexport type {\n // Tool names and core types\n ToolName,\n Framework,\n ResolvedFramework,\n Environment,\n ResolvedEnvironment,\n GitProvider,\n CssPreprocessor,\n CssTypeResult,\n DetectionResult,\n\n // Options types\n BaseOptions,\n EslintOptions,\n PrettierOptions,\n StylelintOptions,\n TypescriptOptions,\n SemanticReleaseOptions,\n ReleasePreset,\n ToolOptions,\n\n // Config types\n EslintFlatConfig,\n PrettierConfig,\n StylelintConfig,\n TypescriptConfig,\n SemanticReleaseConfig,\n ConfigMeta,\n\n // TypeScript checker types\n TypeChecker,\n TypeCheckerPreference,\n\n // Utility types\n PackageJson\n} from '#core/types.js'\n\n// Re-export ConfigError class (not just the type)\nexport { ConfigError } from '#core/types.js'\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dimensional-innovations/tool-config",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"description": "Universal configuration package for ESLint, Prettier, Stylelint, TypeScript, and semantic-release with auto-detection for React, Vue, Svelte, Solid, Astro, Angular, and more",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
@@ -70,7 +70,8 @@
|
|
|
70
70
|
"style:fix": "NODE_OPTIONS='--import tsx' stylelint \"**/*.css\" --fix --allow-empty-input",
|
|
71
71
|
"typecheck": "tsc --noEmit",
|
|
72
72
|
"typecheck:watch": "tsc --noEmit --watch",
|
|
73
|
-
"check-all": "yarn prettier && yarn style && yarn lint && yarn typecheck"
|
|
73
|
+
"check-all": "yarn prettier && yarn style && yarn lint && yarn typecheck",
|
|
74
|
+
"prepublishOnly": "tsup"
|
|
74
75
|
},
|
|
75
76
|
"dependencies": {
|
|
76
77
|
"@eslint/compat": "^1.4.0",
|