@dimensional-innovations/tool-config 5.0.0 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/astro-6WHBKQFX.js +43 -0
- package/dist/astro-6WHBKQFX.js.map +1 -0
- package/dist/chunk-HUYPX7RZ.js +125 -0
- package/dist/chunk-HUYPX7RZ.js.map +1 -0
- package/dist/chunk-ITGUBGO6.js +625 -0
- package/dist/chunk-ITGUBGO6.js.map +1 -0
- package/dist/chunk-L7IN57ZC.js +167 -0
- package/dist/chunk-L7IN57ZC.js.map +1 -0
- package/dist/chunk-LRQFF2N5.js +141 -0
- package/dist/chunk-LRQFF2N5.js.map +1 -0
- package/dist/chunk-OMQFJOZZ.js +48 -0
- package/dist/chunk-OMQFJOZZ.js.map +1 -0
- package/dist/chunk-SY42COTI.js +363 -0
- package/dist/chunk-SY42COTI.js.map +1 -0
- package/dist/chunk-SZOB6JY7.js +446 -0
- package/dist/chunk-SZOB6JY7.js.map +1 -0
- package/dist/cli/index.js +1812 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/eslint-YWWMMZDP.js +5 -0
- package/dist/eslint-YWWMMZDP.js.map +1 -0
- package/dist/index.d.ts +401 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/prettier-EYWEBRIS.js +4 -0
- package/dist/prettier-EYWEBRIS.js.map +1 -0
- package/dist/react-YIKJI3VA.js +91 -0
- package/dist/react-YIKJI3VA.js.map +1 -0
- package/dist/semantic-release-7XCPBEKO.js +4 -0
- package/dist/semantic-release-7XCPBEKO.js.map +1 -0
- package/dist/solid-F44BEBBP.js +54 -0
- package/dist/solid-F44BEBBP.js.map +1 -0
- package/dist/stylelint-ENTCYNXG.js +5 -0
- package/dist/stylelint-ENTCYNXG.js.map +1 -0
- package/dist/svelte-XEOX6WAQ.js +56 -0
- package/dist/svelte-XEOX6WAQ.js.map +1 -0
- package/dist/typescript-ZJ7LECQN.js +4 -0
- package/dist/typescript-ZJ7LECQN.js.map +1 -0
- package/dist/vue-DP7MCMOU.js +144 -0
- package/dist/vue-DP7MCMOU.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import prettierConfig from 'eslint-config-prettier';
|
|
2
|
+
import { configs } from 'eslint-plugin-astro';
|
|
3
|
+
|
|
4
|
+
// src/tools/eslint/presets/frameworks/astro.ts
|
|
5
|
+
function createAstroPreset() {
|
|
6
|
+
return [
|
|
7
|
+
...configs.recommended,
|
|
8
|
+
...configs["jsx-a11y-recommended"],
|
|
9
|
+
{
|
|
10
|
+
files: ["**/*.astro"],
|
|
11
|
+
rules: {
|
|
12
|
+
// Component Best Practices (5 rules)
|
|
13
|
+
"astro/no-conflict-set-directives": "error",
|
|
14
|
+
// Avoid conflicting set directives
|
|
15
|
+
"astro/no-unused-define-vars-in-style": "error",
|
|
16
|
+
// Remove unused CSS variables
|
|
17
|
+
"astro/no-deprecated-astro-canonicalurl": "error",
|
|
18
|
+
// Use new canonical URL API
|
|
19
|
+
"astro/no-deprecated-astro-fetchcontent": "error",
|
|
20
|
+
// Use new content collections
|
|
21
|
+
"astro/no-deprecated-astro-resolve": "error",
|
|
22
|
+
// Use new module resolution
|
|
23
|
+
// Template Syntax (3 rules - formatting rules removed, handled by Prettier)
|
|
24
|
+
"astro/valid-compile": "error",
|
|
25
|
+
// Ensure valid Astro syntax
|
|
26
|
+
"astro/no-set-html-directive": "warn",
|
|
27
|
+
// Warn about XSS risk
|
|
28
|
+
"astro/prefer-class-list-directive": "error"
|
|
29
|
+
// Use class:list over className
|
|
30
|
+
// Note: astro/semi is a formatting rule disabled by eslint-config-prettier
|
|
31
|
+
// Accessibility (included from jsx-a11y-recommended preset)
|
|
32
|
+
// - alt-text, click-events-have-key-events, etc.
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
// Disable all formatting rules that conflict with Prettier
|
|
36
|
+
// This must be last to override any formatting rules from above
|
|
37
|
+
prettierConfig
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { createAstroPreset as default };
|
|
42
|
+
//# sourceMappingURL=astro-6WHBKQFX.js.map
|
|
43
|
+
//# sourceMappingURL=astro-6WHBKQFX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/eslint/presets/frameworks/astro.ts"],"names":[],"mappings":";;;;AAee,SAAR,iBAAA,GAAyD;AAC9D,EAAA,OAAO;AAAA,IACL,GAAG,OAAA,CAAQ,WAAA;AAAA,IACX,GAAG,QAAQ,sBAAsB,CAAA;AAAA,IACjC;AAAA,MACE,KAAA,EAAO,CAAC,YAAY,CAAA;AAAA,MACpB,KAAA,EAAO;AAAA;AAAA,QAEL,kCAAA,EAAoC,OAAA;AAAA;AAAA,QACpC,sCAAA,EAAwC,OAAA;AAAA;AAAA,QACxC,wCAAA,EAA0C,OAAA;AAAA;AAAA,QAC1C,wCAAA,EAA0C,OAAA;AAAA;AAAA,QAC1C,mCAAA,EAAqC,OAAA;AAAA;AAAA;AAAA,QAGrC,qBAAA,EAAuB,OAAA;AAAA;AAAA,QACvB,6BAAA,EAA+B,MAAA;AAAA;AAAA,QAC/B,mCAAA,EAAqC;AAAA;AAAA;AAAA;AAAA;AAAA;AAKvC,KACF;AAAA;AAAA;AAAA,IAIA;AAAA,GACF;AACF","file":"astro-6WHBKQFX.js","sourcesContent":["import prettierConfig from 'eslint-config-prettier'\nimport { configs } from 'eslint-plugin-astro'\n\nimport type { EslintFlatConfig } from '#core/types.js'\n\n/**\n * Astro framework configuration\n * Rules for Astro components and island architecture\n *\n * Rules organized by category:\n * - Component best practices\n * - Island architecture\n * - Template syntax\n * - Accessibility\n */\nexport default function createAstroPreset(): EslintFlatConfig[] {\n return [\n ...configs.recommended,\n ...configs['jsx-a11y-recommended'],\n {\n files: ['**/*.astro'],\n rules: {\n // Component Best Practices (5 rules)\n 'astro/no-conflict-set-directives': 'error', // Avoid conflicting set directives\n 'astro/no-unused-define-vars-in-style': 'error', // Remove unused CSS variables\n 'astro/no-deprecated-astro-canonicalurl': 'error', // Use new canonical URL API\n 'astro/no-deprecated-astro-fetchcontent': 'error', // Use new content collections\n 'astro/no-deprecated-astro-resolve': 'error', // Use new module resolution\n\n // Template Syntax (3 rules - formatting rules removed, handled by Prettier)\n 'astro/valid-compile': 'error', // Ensure valid Astro syntax\n 'astro/no-set-html-directive': 'warn', // Warn about XSS risk\n 'astro/prefer-class-list-directive': 'error' // Use class:list over className\n // Note: astro/semi is a formatting rule disabled by eslint-config-prettier\n\n // Accessibility (included from jsx-a11y-recommended preset)\n // - alt-text, click-events-have-key-events, etc.\n }\n },\n\n // Disable all formatting rules that conflict with Prettier\n // This must be last to override any formatting rules from above\n prettierConfig\n ]\n}\n"]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { autoDetect } from './chunk-L7IN57ZC.js';
|
|
2
|
+
|
|
3
|
+
// src/tools/prettier/presets/base.ts
|
|
4
|
+
var basePreset = {
|
|
5
|
+
// Code style
|
|
6
|
+
semi: false,
|
|
7
|
+
singleQuote: true,
|
|
8
|
+
trailingComma: "none",
|
|
9
|
+
// Line formatting
|
|
10
|
+
printWidth: 100,
|
|
11
|
+
tabWidth: 2,
|
|
12
|
+
useTabs: false,
|
|
13
|
+
proseWrap: "preserve",
|
|
14
|
+
// Syntax preferences
|
|
15
|
+
arrowParens: "avoid",
|
|
16
|
+
bracketSpacing: true,
|
|
17
|
+
bracketSameLine: false,
|
|
18
|
+
singleAttributePerLine: true,
|
|
19
|
+
// Line endings
|
|
20
|
+
endOfLine: "lf"
|
|
21
|
+
};
|
|
22
|
+
var base_default = basePreset;
|
|
23
|
+
|
|
24
|
+
// src/tools/prettier/presets/frameworks/astro.ts
|
|
25
|
+
var astroPreset = {
|
|
26
|
+
// Use Astro plugin for .astro files
|
|
27
|
+
plugins: ["prettier-plugin-astro"]
|
|
28
|
+
// Astro plugin handles all formatting automatically
|
|
29
|
+
// No additional options needed
|
|
30
|
+
};
|
|
31
|
+
var astro_default = astroPreset;
|
|
32
|
+
|
|
33
|
+
// src/tools/prettier/presets/frameworks/react.ts
|
|
34
|
+
var reactPreset = {
|
|
35
|
+
// JSX-specific options
|
|
36
|
+
// Use double quotes in JSX attributes (React convention)
|
|
37
|
+
jsxSingleQuote: false
|
|
38
|
+
// Note: bracketSameLine is now in base preset
|
|
39
|
+
};
|
|
40
|
+
var react_default = reactPreset;
|
|
41
|
+
|
|
42
|
+
// src/tools/prettier/presets/frameworks/svelte.ts
|
|
43
|
+
var sveltePreset = {
|
|
44
|
+
// Use Svelte plugin for .svelte files
|
|
45
|
+
plugins: ["prettier-plugin-svelte"],
|
|
46
|
+
// Component block ordering: options, scripts, markup, styles
|
|
47
|
+
// This is the standard Svelte convention
|
|
48
|
+
svelteSortOrder: "options-scripts-markup-styles",
|
|
49
|
+
// Don't enforce strict mode (allow flexibility)
|
|
50
|
+
svelteStrictMode: false,
|
|
51
|
+
// Indent <script> and <style> tags for consistency
|
|
52
|
+
svelteIndentScriptAndStyle: true
|
|
53
|
+
};
|
|
54
|
+
var svelte_default = sveltePreset;
|
|
55
|
+
|
|
56
|
+
// src/tools/prettier/presets/frameworks/vanilla.ts
|
|
57
|
+
var vanillaPreset = {
|
|
58
|
+
// No framework-specific options needed
|
|
59
|
+
// Base preset provides everything required
|
|
60
|
+
};
|
|
61
|
+
var vanilla_default = vanillaPreset;
|
|
62
|
+
|
|
63
|
+
// src/tools/prettier/presets/frameworks/vue.ts
|
|
64
|
+
var vuePreset = {
|
|
65
|
+
// Don't indent <script> and <style> tags
|
|
66
|
+
// This keeps them aligned with <template> for consistency
|
|
67
|
+
vueIndentScriptAndStyle: false,
|
|
68
|
+
// Ignore whitespace sensitivity in HTML
|
|
69
|
+
// Prevents issues with Vue's template whitespace handling
|
|
70
|
+
htmlWhitespaceSensitivity: "ignore"
|
|
71
|
+
};
|
|
72
|
+
var vue_default = vuePreset;
|
|
73
|
+
|
|
74
|
+
// src/tools/prettier/index.ts
|
|
75
|
+
async function createPrettierConfig(options = {}) {
|
|
76
|
+
const { framework: explicitFramework = "auto", cwd = process.cwd(), ...userOverrides } = options;
|
|
77
|
+
const framework = explicitFramework === "auto" ? autoDetect(cwd).framework : explicitFramework;
|
|
78
|
+
const config = { ...base_default };
|
|
79
|
+
switch (framework) {
|
|
80
|
+
case "vue": {
|
|
81
|
+
Object.assign(config, vue_default);
|
|
82
|
+
console.warn("\u{1F4DD} Prettier: Detected Vue.js - using Vue plugin");
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case "react": {
|
|
86
|
+
Object.assign(config, react_default);
|
|
87
|
+
console.warn("\u{1F4DD} Prettier: Detected React - using JSX conventions");
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case "solid": {
|
|
91
|
+
Object.assign(config, react_default);
|
|
92
|
+
console.warn("\u{1F4DD} Prettier: Detected Solid.js - using JSX conventions");
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case "svelte": {
|
|
96
|
+
Object.assign(config, svelte_default);
|
|
97
|
+
console.warn("\u{1F4DD} Prettier: Detected Svelte - using Svelte plugin");
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "astro": {
|
|
101
|
+
Object.assign(config, astro_default);
|
|
102
|
+
console.warn("\u{1F4DD} Prettier: Detected Astro - using Astro plugin");
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "angular":
|
|
106
|
+
case "node":
|
|
107
|
+
case "vanilla": {
|
|
108
|
+
Object.assign(config, vanilla_default);
|
|
109
|
+
console.warn(`\u{1F4DD} Prettier: Detected ${framework} - using base configuration`);
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
default: {
|
|
113
|
+
console.warn(`\u26A0\uFE0F Unknown framework "${framework}", using base configuration`);
|
|
114
|
+
Object.assign(config, vanilla_default);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const { framework: _f, cwd: _c, customIgnores: _ci, ...prettierOverrides } = userOverrides;
|
|
118
|
+
Object.assign(config, prettierOverrides);
|
|
119
|
+
return config;
|
|
120
|
+
}
|
|
121
|
+
var prettier_default = createPrettierConfig;
|
|
122
|
+
|
|
123
|
+
export { createPrettierConfig, prettier_default };
|
|
124
|
+
//# sourceMappingURL=chunk-HUYPX7RZ.js.map
|
|
125
|
+
//# sourceMappingURL=chunk-HUYPX7RZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../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"],"names":[],"mappings":"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","file":"chunk-HUYPX7RZ.js","sourcesContent":["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"]}
|