@vizejs/vite-plugin-musea 0.48.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/package.json +21 -21
  2. package/dist/a11y/index.d.mts +0 -2
  3. package/dist/a11y/index.mjs +0 -2
  4. package/dist/a11y-DNCg2qCB.mjs +0 -318
  5. package/dist/a11y-DNCg2qCB.mjs.map +0 -1
  6. package/dist/autogen/index.d.mts +0 -66
  7. package/dist/autogen/index.d.mts.map +0 -1
  8. package/dist/autogen/index.mjs +0 -2
  9. package/dist/autogen-3-y1d0ou.mjs +0 -213
  10. package/dist/autogen-3-y1d0ou.mjs.map +0 -1
  11. package/dist/cli/index.d.mts +0 -40
  12. package/dist/cli/index.d.mts.map +0 -1
  13. package/dist/cli/index.mjs +0 -407
  14. package/dist/cli/index.mjs.map +0 -1
  15. package/dist/gallery/assets/abap-DVwoIrM0.js +0 -1
  16. package/dist/gallery/assets/apex-DnfrpC_v.js +0 -1
  17. package/dist/gallery/assets/azcli-CE6n6ErR.js +0 -1
  18. package/dist/gallery/assets/bat-ainFW1qj.js +0 -1
  19. package/dist/gallery/assets/bicep-Lzdk7NqX.js +0 -2
  20. package/dist/gallery/assets/cameligo-BjyZ5cgY.js +0 -1
  21. package/dist/gallery/assets/clojure-B-6owjux.js +0 -1
  22. package/dist/gallery/assets/codicon-DCmgc-ay.ttf +0 -0
  23. package/dist/gallery/assets/coffee-npIvPqmH.js +0 -1
  24. package/dist/gallery/assets/cpp--A8GPZYM.js +0 -1
  25. package/dist/gallery/assets/csharp-Daa9qY-p.js +0 -1
  26. package/dist/gallery/assets/csp-N0NfYrCc.js +0 -1
  27. package/dist/gallery/assets/css-CUssoHYv.js +0 -3
  28. package/dist/gallery/assets/css.worker-Cbw1kvi8.js +0 -88
  29. package/dist/gallery/assets/cssMode-cT8muvO_.js +0 -4
  30. package/dist/gallery/assets/cypher-CmQpMFeE.js +0 -1
  31. package/dist/gallery/assets/dart-DOjZJNmR.js +0 -1
  32. package/dist/gallery/assets/dockerfile-CxIfCbxU.js +0 -1
  33. package/dist/gallery/assets/ecl-AnA3JP56.js +0 -1
  34. package/dist/gallery/assets/editor-B55U_qvj.css +0 -1
  35. package/dist/gallery/assets/editor-F8AxQWwE.css +0 -1
  36. package/dist/gallery/assets/editor.api-aFfQJDkw.js +0 -644
  37. package/dist/gallery/assets/editor.main-DMqE48tW.js +0 -63
  38. package/dist/gallery/assets/editor.worker-Cs7HTPcl.js +0 -12
  39. package/dist/gallery/assets/elixir-D-N3eh22.js +0 -1
  40. package/dist/gallery/assets/flow9-BR6FT9qg.js +0 -1
  41. package/dist/gallery/assets/freemarker2-B6IBKB9r.js +0 -3
  42. package/dist/gallery/assets/fsharp-DR0IQ95q.js +0 -1
  43. package/dist/gallery/assets/go-B27OpVON.js +0 -1
  44. package/dist/gallery/assets/graphql-Cw7HtomI.js +0 -1
  45. package/dist/gallery/assets/handlebars-zNX2LtzG.js +0 -1
  46. package/dist/gallery/assets/hcl-CDDd0gYG.js +0 -1
  47. package/dist/gallery/assets/html-BKYZbazO.js +0 -1
  48. package/dist/gallery/assets/html.worker-CYmk49z4.js +0 -495
  49. package/dist/gallery/assets/htmlMode-Bl1BwXnQ.js +0 -4
  50. package/dist/gallery/assets/index-9OXG8DGI.css +0 -1
  51. package/dist/gallery/assets/index-Dltd3znx.js +0 -63
  52. package/dist/gallery/assets/ini-ChiSjCUM.js +0 -1
  53. package/dist/gallery/assets/java-CKVuuvX6.js +0 -1
  54. package/dist/gallery/assets/javascript-DwBI_Z0J.js +0 -1
  55. package/dist/gallery/assets/json.worker-Ci2wf3HT.js +0 -51
  56. package/dist/gallery/assets/jsonMode-CBK55pb7.js +0 -10
  57. package/dist/gallery/assets/julia-BcKGx43g.js +0 -1
  58. package/dist/gallery/assets/kotlin-C7EpOAJu.js +0 -1
  59. package/dist/gallery/assets/less-BFpYPxgE.js +0 -2
  60. package/dist/gallery/assets/lexon-DDPF3See.js +0 -1
  61. package/dist/gallery/assets/liquid-D87ggETD.js +0 -1
  62. package/dist/gallery/assets/lua-CmzM4S9z.js +0 -1
  63. package/dist/gallery/assets/m3-C75GLUav.js +0 -1
  64. package/dist/gallery/assets/markdown-B6XL0Y9j.js +0 -1
  65. package/dist/gallery/assets/mdx-CBs_aoHd.js +0 -1
  66. package/dist/gallery/assets/mips-BG4Fy7Bl.js +0 -1
  67. package/dist/gallery/assets/monaco.contribution-BHYQJQ-0.js +0 -2
  68. package/dist/gallery/assets/msdax-H0aqYz0U.js +0 -1
  69. package/dist/gallery/assets/mysql-CDbOhBhf.js +0 -1
  70. package/dist/gallery/assets/objective-c-DKE6-VEf.js +0 -1
  71. package/dist/gallery/assets/pascal-DBuqflGM.js +0 -1
  72. package/dist/gallery/assets/pascaligo-BVtulzHb.js +0 -1
  73. package/dist/gallery/assets/perl-xkTv78ng.js +0 -1
  74. package/dist/gallery/assets/pgsql-Cxti3J5E.js +0 -1
  75. package/dist/gallery/assets/php-Bh5BD3dg.js +0 -1
  76. package/dist/gallery/assets/pla-DSsYzlXV.js +0 -1
  77. package/dist/gallery/assets/postiats-De0qivlp.js +0 -1
  78. package/dist/gallery/assets/powerquery-KGKq89F-.js +0 -1
  79. package/dist/gallery/assets/powershell-Djwhihrv.js +0 -1
  80. package/dist/gallery/assets/protobuf-Jbp01qUU.js +0 -2
  81. package/dist/gallery/assets/pug-BntfJCN7.js +0 -1
  82. package/dist/gallery/assets/python-CWI5d6bd.js +0 -1
  83. package/dist/gallery/assets/qsharp-CHH1r_aq.js +0 -1
  84. package/dist/gallery/assets/r-BbeUcBN9.js +0 -1
  85. package/dist/gallery/assets/razor-CPcSAg2x.js +0 -1
  86. package/dist/gallery/assets/redis-DR9m_VtD.js +0 -1
  87. package/dist/gallery/assets/redshift-D97Qa-FW.js +0 -1
  88. package/dist/gallery/assets/restructuredtext-DQ1MtboI.js +0 -1
  89. package/dist/gallery/assets/ruby-ByLGeogt.js +0 -1
  90. package/dist/gallery/assets/rust-CIqtS9ON.js +0 -1
  91. package/dist/gallery/assets/sb-ByVTEZ1d.js +0 -1
  92. package/dist/gallery/assets/scala-DvkPypTh.js +0 -1
  93. package/dist/gallery/assets/scheme-CQy1Ya2H.js +0 -1
  94. package/dist/gallery/assets/scss-DLIO8qmP.js +0 -3
  95. package/dist/gallery/assets/shell-BZaILY8J.js +0 -1
  96. package/dist/gallery/assets/solidity-D80FpOWz.js +0 -1
  97. package/dist/gallery/assets/sophia-DXh1T4eB.js +0 -1
  98. package/dist/gallery/assets/sparql-DHSgmKlJ.js +0 -1
  99. package/dist/gallery/assets/sql-9GboOSCN.js +0 -1
  100. package/dist/gallery/assets/st--m1Z2h3c.js +0 -1
  101. package/dist/gallery/assets/swift-DMo7Bf1r.js +0 -1
  102. package/dist/gallery/assets/systemverilog-D6kP5wsA.js +0 -1
  103. package/dist/gallery/assets/tcl-HAhMyY2Y.js +0 -1
  104. package/dist/gallery/assets/ts.worker-lmYMVzBW.js +0 -51339
  105. package/dist/gallery/assets/tsMode-1ZmI8w72.js +0 -11
  106. package/dist/gallery/assets/twig-RNzllx71.js +0 -1
  107. package/dist/gallery/assets/typescript-CVZCJg8D.js +0 -1
  108. package/dist/gallery/assets/typespec-DeyXqKVJ.js +0 -1
  109. package/dist/gallery/assets/vb-BfpeX2r9.js +0 -1
  110. package/dist/gallery/assets/wgsl-B52428dy.js +0 -298
  111. package/dist/gallery/assets/xml-B_rQCZJa.js +0 -1
  112. package/dist/gallery/assets/yaml-gB0iHXGe.js +0 -1
  113. package/dist/gallery/index.html +0 -19
  114. package/dist/index-BWuuTDDw.d.mts +0 -151
  115. package/dist/index-BWuuTDDw.d.mts.map +0 -1
  116. package/dist/index.d.mts +0 -253
  117. package/dist/index.d.mts.map +0 -1
  118. package/dist/index.mjs +0 -2700
  119. package/dist/index.mjs.map +0 -1
  120. package/dist/vrt-B4uxOrnN.d.mts +0 -285
  121. package/dist/vrt-B4uxOrnN.d.mts.map +0 -1
  122. package/dist/vrt-CjFf5GR0.mjs +0 -767
  123. package/dist/vrt-CjFf5GR0.mjs.map +0 -1
  124. package/dist/vrt.d.mts +0 -2
  125. package/dist/vrt.mjs +0 -2
@@ -1,213 +0,0 @@
1
- import { createRequire } from "node:module";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
- //#region src/autogen/fallback.ts
5
- /**
6
- * JS-based fallback for variant auto-generation.
7
- *
8
- * Used when the native Rust binding is not available. Provides simple
9
- * regex-based prop extraction, minimal art file generation, and a pure
10
- * JS variant generator.
11
- */
12
- /**
13
- * Simple prop extraction fallback (when native binding not available).
14
- */
15
- function extractPropsSimple(source) {
16
- const props = [];
17
- const propsMatch = source.match(/defineProps\s*<\s*\{([^}]*)\}\s*>/s);
18
- if (propsMatch) {
19
- const propLines = propsMatch[1].split("\n");
20
- for (const line of propLines) {
21
- const propMatch = line.trim().match(/^(\w+)(\?)?:\s*(.+?)\s*;?\s*$/);
22
- if (propMatch) props.push({
23
- name: propMatch[1],
24
- propType: propMatch[3].replace(/,\s*$/, ""),
25
- required: !propMatch[2]
26
- });
27
- }
28
- }
29
- return props;
30
- }
31
- /**
32
- * Minimal art file for components with no props.
33
- */
34
- function generateMinimalArt(componentName, componentPath) {
35
- return `<art title="${componentName}" component="${componentPath}">
36
- <variant name="Default" default>
37
- <${componentName} />
38
- </variant>
39
- </art>
40
-
41
- <script setup lang="ts">
42
- import ${componentName} from '${componentPath}'
43
- <\/script>
44
- `;
45
- }
46
- /**
47
- * JS-based variant generation fallback.
48
- */
49
- function generateArtFileJs(componentPath, props, options) {
50
- const componentName = path.basename(componentPath, ".vue");
51
- const relPath = `./${path.basename(componentPath)}`;
52
- const maxVariants = options.maxVariants ?? 20;
53
- const variants = [];
54
- if (options.includeDefault !== false) {
55
- const defaultProps = {};
56
- for (const prop of props) if (prop.defaultValue !== void 0) defaultProps[prop.name] = prop.defaultValue;
57
- variants.push({
58
- name: "Default",
59
- isDefault: true,
60
- props: defaultProps,
61
- description: `${componentName} with default props`
62
- });
63
- }
64
- if (options.includeEnumVariants !== false) for (const prop of props) {
65
- const unionValues = parseUnionType(prop.propType);
66
- for (const val of unionValues) {
67
- if (variants.length >= maxVariants) break;
68
- const name = typeof val === "string" ? toPascalCase(val) : `${toPascalCase(prop.name)}_${String(val)}`;
69
- variants.push({
70
- name,
71
- isDefault: false,
72
- props: { [prop.name]: val },
73
- description: `${prop.name} = ${JSON.stringify(val)}`
74
- });
75
- }
76
- }
77
- if (options.includeBooleanToggles !== false) for (const prop of props) {
78
- if (variants.length >= maxVariants) break;
79
- if (prop.propType.toLowerCase() === "boolean") {
80
- const nonDefault = prop.defaultValue === true ? false : true;
81
- variants.push({
82
- name: nonDefault ? toPascalCase(prop.name) : `No${toPascalCase(prop.name)}`,
83
- isDefault: false,
84
- props: { [prop.name]: nonDefault },
85
- description: `${prop.name} = ${nonDefault}`
86
- });
87
- }
88
- }
89
- let content = `<art title="${componentName}" component="${relPath}">\n`;
90
- for (const variant of variants) {
91
- const attrs = variant.isDefault ? `name="${variant.name}" default` : `name="${variant.name}"`;
92
- content += ` <variant ${attrs}>\n`;
93
- const propsStr = Object.entries(variant.props).map(([k, v]) => {
94
- if (typeof v === "string") return `${k}="${v}"`;
95
- if (typeof v === "boolean" && v) return k;
96
- if (typeof v === "boolean" && !v) return `:${k}="false"`;
97
- return `:${k}="${JSON.stringify(v)}"`;
98
- }).join(" ");
99
- content += ` <${componentName}${propsStr ? " " + propsStr : ""} />\n`;
100
- content += ` </variant>\n\n`;
101
- }
102
- content += `</art>\n\n<script setup lang="ts">\nimport ${componentName} from '${relPath}'\n<\/script>\n`;
103
- return {
104
- variants,
105
- artFileContent: content,
106
- componentName
107
- };
108
- }
109
- function parseUnionType(typeStr) {
110
- const trimmed = typeStr.trim();
111
- if (!trimmed.includes("|")) return [];
112
- if (trimmed.includes("'") || trimmed.includes("\"")) return trimmed.split("|").map((s) => s.trim().replace(/^['"]|['"]$/g, "")).filter((s) => s.length > 0);
113
- const parts = trimmed.split("|").map((s) => s.trim());
114
- if (parts.every((p) => !isNaN(Number(p)))) return parts.map(Number);
115
- return [];
116
- }
117
- function toPascalCase(str) {
118
- return str.split(/[\s\-_]+/).filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join("");
119
- }
120
- //#endregion
121
- //#region src/autogen/index.ts
122
- /**
123
- * Variant auto-generation module.
124
- * Generates .art.vue files from component prop analysis.
125
- *
126
- * JS-based fallback logic (extractPropsSimple, generateMinimalArt,
127
- * generateArtFileJs, and helpers) is extracted into `fallback.ts`.
128
- */
129
- let native = null;
130
- function loadNative() {
131
- if (native) return native;
132
- const require = createRequire(import.meta.url);
133
- try {
134
- native = require("@vizejs/native");
135
- return native;
136
- } catch (e) {
137
- throw new Error(`Failed to load @vizejs/native. Make sure it's installed and built:\n${String(e)}`);
138
- }
139
- }
140
- /**
141
- * Generate .art.vue file for a component.
142
- *
143
- * @param componentPath - Path to the Vue component file
144
- * @param options - Auto-generation options
145
- * @returns Generated .art.vue content and metadata
146
- */
147
- async function generateArtFile(componentPath, options = {}) {
148
- const absolutePath = path.resolve(componentPath);
149
- const source = await fs.promises.readFile(absolutePath, "utf-8");
150
- const binding = loadNative();
151
- let props;
152
- if (binding.analyzeSfc) props = binding.analyzeSfc(source, { filename: absolutePath }).props.map((p) => ({
153
- name: p.name,
154
- propType: p.type,
155
- required: p.required,
156
- defaultValue: p.default_value
157
- }));
158
- else props = extractPropsSimple(source);
159
- if (props.length === 0) {
160
- const componentName = path.basename(componentPath, ".vue");
161
- return {
162
- variants: [{
163
- name: "Default",
164
- isDefault: true,
165
- props: {}
166
- }],
167
- artFileContent: generateMinimalArt(componentName, `./${path.basename(componentPath)}`),
168
- componentName
169
- };
170
- }
171
- if (binding.generateVariants) {
172
- const nativeProps = props.map((p) => ({
173
- name: p.name,
174
- prop_type: p.propType,
175
- required: p.required,
176
- default_value: p.defaultValue
177
- }));
178
- const relPath = `./${path.basename(componentPath)}`;
179
- const result = binding.generateVariants(relPath, nativeProps, {
180
- max_variants: options.maxVariants,
181
- include_default: options.includeDefault,
182
- include_boolean_toggles: options.includeBooleanToggles,
183
- include_enum_variants: options.includeEnumVariants,
184
- include_boundary_values: options.includeBoundaryValues,
185
- include_empty_strings: options.includeEmptyStrings
186
- });
187
- return {
188
- variants: result.variants.map((v) => ({
189
- name: v.name,
190
- isDefault: v.is_default,
191
- props: v.props,
192
- description: v.description
193
- })),
194
- artFileContent: result.art_file_content,
195
- componentName: result.component_name
196
- };
197
- }
198
- return generateArtFileJs(componentPath, props, options);
199
- }
200
- /**
201
- * Write generated .art.vue file to disk.
202
- */
203
- async function writeArtFile(componentPath, options = {}, outputPath) {
204
- const output = await generateArtFile(componentPath, options);
205
- const targetPath = outputPath ?? componentPath.replace(/\.vue$/, ".art.vue");
206
- await fs.promises.mkdir(path.dirname(targetPath), { recursive: true });
207
- await fs.promises.writeFile(targetPath, output.artFileContent, "utf-8");
208
- return targetPath;
209
- }
210
- //#endregion
211
- export { writeArtFile as n, generateArtFile as t };
212
-
213
- //# sourceMappingURL=autogen-3-y1d0ou.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autogen-3-y1d0ou.mjs","names":[],"sources":["../src/autogen/fallback.ts","../src/autogen/index.ts"],"sourcesContent":["/**\n * JS-based fallback for variant auto-generation.\n *\n * Used when the native Rust binding is not available. Provides simple\n * regex-based prop extraction, minimal art file generation, and a pure\n * JS variant generator.\n */\n\nimport path from \"node:path\";\n\nimport type { AutogenOptions, AutogenOutput, GeneratedVariant, PropDefinition } from \"./index.js\";\n\n/**\n * Simple prop extraction fallback (when native binding not available).\n */\nexport function extractPropsSimple(source: string): PropDefinition[] {\n const props: PropDefinition[] = [];\n\n // Match defineProps<{ ... }>() or defineProps({ ... })\n const propsMatch = source.match(/defineProps\\s*<\\s*\\{([^}]*)\\}\\s*>/s);\n\n if (propsMatch) {\n const propsBlock = propsMatch[1];\n const propLines = propsBlock.split(\"\\n\");\n\n for (const line of propLines) {\n const propMatch = line.trim().match(/^(\\w+)(\\?)?:\\s*(.+?)\\s*;?\\s*$/);\n if (propMatch) {\n props.push({\n name: propMatch[1],\n propType: propMatch[3].replace(/,\\s*$/, \"\"),\n required: !propMatch[2],\n });\n }\n }\n }\n\n return props;\n}\n\n/**\n * Minimal art file for components with no props.\n */\nexport function generateMinimalArt(componentName: string, componentPath: string): string {\n return `<art title=\"${componentName}\" component=\"${componentPath}\">\n <variant name=\"Default\" default>\n <${componentName} />\n </variant>\n</art>\n\n<script setup lang=\"ts\">\nimport ${componentName} from '${componentPath}'\n</script>\n`;\n}\n\n/**\n * JS-based variant generation fallback.\n */\nexport function generateArtFileJs(\n componentPath: string,\n props: PropDefinition[],\n options: AutogenOptions,\n): AutogenOutput {\n const componentName = path.basename(componentPath, \".vue\");\n const relPath = `./${path.basename(componentPath)}`;\n const maxVariants = options.maxVariants ?? 20;\n const variants: GeneratedVariant[] = [];\n\n // Default variant\n if (options.includeDefault !== false) {\n const defaultProps: Record<string, unknown> = {};\n for (const prop of props) {\n if (prop.defaultValue !== undefined) {\n defaultProps[prop.name] = prop.defaultValue;\n }\n }\n variants.push({\n name: \"Default\",\n isDefault: true,\n props: defaultProps,\n description: `${componentName} with default props`,\n });\n }\n\n // Enum variants\n if (options.includeEnumVariants !== false) {\n for (const prop of props) {\n const unionValues = parseUnionType(prop.propType);\n for (const val of unionValues) {\n if (variants.length >= maxVariants) break;\n const name =\n typeof val === \"string\" ? toPascalCase(val) : `${toPascalCase(prop.name)}_${String(val)}`;\n variants.push({\n name,\n isDefault: false,\n props: { [prop.name]: val },\n description: `${prop.name} = ${JSON.stringify(val)}`,\n });\n }\n }\n }\n\n // Boolean toggle variants\n if (options.includeBooleanToggles !== false) {\n for (const prop of props) {\n if (variants.length >= maxVariants) break;\n if (prop.propType.toLowerCase() === \"boolean\") {\n const nonDefault = prop.defaultValue === true ? false : true;\n variants.push({\n name: nonDefault ? toPascalCase(prop.name) : `No${toPascalCase(prop.name)}`,\n isDefault: false,\n props: { [prop.name]: nonDefault },\n description: `${prop.name} = ${nonDefault}`,\n });\n }\n }\n }\n\n // Generate art file content\n let content = `<art title=\"${componentName}\" component=\"${relPath}\">\\n`;\n for (const variant of variants) {\n const attrs = variant.isDefault ? `name=\"${variant.name}\" default` : `name=\"${variant.name}\"`;\n content += ` <variant ${attrs}>\\n`;\n\n const propsStr = Object.entries(variant.props)\n .map(([k, v]) => {\n if (typeof v === \"string\") return `${k}=\"${v}\"`;\n if (typeof v === \"boolean\" && v) return k;\n if (typeof v === \"boolean\" && !v) return `:${k}=\"false\"`;\n return `:${k}=\"${JSON.stringify(v)}\"`;\n })\n .join(\" \");\n\n content += ` <${componentName}${propsStr ? \" \" + propsStr : \"\"} />\\n`;\n content += ` </variant>\\n\\n`;\n }\n content += `</art>\\n\\n<script setup lang=\"ts\">\\nimport ${componentName} from '${relPath}'\\n</script>\\n`;\n\n return {\n variants,\n artFileContent: content,\n componentName,\n };\n}\n\nexport function parseUnionType(typeStr: string): unknown[] {\n const trimmed = typeStr.trim();\n if (!trimmed.includes(\"|\")) return [];\n\n if (trimmed.includes(\"'\") || trimmed.includes('\"')) {\n return trimmed\n .split(\"|\")\n .map((s) => s.trim().replace(/^['\"]|['\"]$/g, \"\"))\n .filter((s) => s.length > 0);\n }\n\n const parts = trimmed.split(\"|\").map((s) => s.trim());\n if (parts.every((p) => !isNaN(Number(p)))) {\n return parts.map(Number);\n }\n\n return [];\n}\n\nexport function toPascalCase(str: string): string {\n return str\n .split(/[\\s\\-_]+/)\n .filter(Boolean)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\"\");\n}\n","/**\n * Variant auto-generation module.\n * Generates .art.vue files from component prop analysis.\n *\n * JS-based fallback logic (extractPropsSimple, generateMinimalArt,\n * generateArtFileJs, and helpers) is extracted into `fallback.ts`.\n */\n\nimport { createRequire } from \"node:module\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\n\nimport { extractPropsSimple, generateMinimalArt, generateArtFileJs } from \"./fallback.js\";\n\n/**\n * Autogen configuration options.\n */\nexport interface AutogenOptions {\n /** Maximum number of variants to generate (default: 20) */\n maxVariants?: number;\n /** Include a \"Default\" variant with all default values (default: true) */\n includeDefault?: boolean;\n /** Include boolean toggle variants (default: true) */\n includeBooleanToggles?: boolean;\n /** Include enum/union variants (default: true) */\n includeEnumVariants?: boolean;\n /** Include boundary value variants for numbers (default: false) */\n includeBoundaryValues?: boolean;\n /** Include empty string variants for optional strings (default: false) */\n includeEmptyStrings?: boolean;\n}\n\n/**\n * Prop definition for variant generation.\n */\nexport interface PropDefinition {\n name: string;\n propType: string;\n required: boolean;\n defaultValue?: unknown;\n}\n\n/**\n * Generated variant.\n */\nexport interface GeneratedVariant {\n name: string;\n isDefault: boolean;\n props: Record<string, unknown>;\n description?: string;\n}\n\n/**\n * Autogen output.\n */\nexport interface AutogenOutput {\n variants: GeneratedVariant[];\n artFileContent: string;\n componentName: string;\n}\n\n// Native binding types\ninterface NativeAutogen {\n generateVariants?: (\n componentPath: string,\n props: Array<{\n name: string;\n prop_type: string;\n required: boolean;\n default_value?: unknown;\n }>,\n config?: {\n max_variants?: number;\n include_default?: boolean;\n include_boolean_toggles?: boolean;\n include_enum_variants?: boolean;\n include_boundary_values?: boolean;\n include_empty_strings?: boolean;\n },\n ) => {\n variants: Array<{\n name: string;\n is_default: boolean;\n props: Record<string, unknown>;\n description?: string;\n }>;\n art_file_content: string;\n component_name: string;\n };\n analyzeSfc?: (\n source: string,\n options?: { filename?: string },\n ) => {\n props: Array<{ name: string; type: string; required: boolean; default_value?: unknown }>;\n emits: string[];\n };\n}\n\nlet native: NativeAutogen | null = null;\n\nfunction loadNative(): NativeAutogen {\n if (native) return native;\n const require = createRequire(import.meta.url);\n try {\n native = require(\"@vizejs/native\") as NativeAutogen;\n return native;\n } catch (e) {\n throw new Error(\n `Failed to load @vizejs/native. Make sure it's installed and built:\\n${String(e)}`,\n );\n }\n}\n\n/**\n * Generate .art.vue file for a component.\n *\n * @param componentPath - Path to the Vue component file\n * @param options - Auto-generation options\n * @returns Generated .art.vue content and metadata\n */\nexport async function generateArtFile(\n componentPath: string,\n options: AutogenOptions = {},\n): Promise<AutogenOutput> {\n const absolutePath = path.resolve(componentPath);\n const source = await fs.promises.readFile(absolutePath, \"utf-8\");\n\n const binding = loadNative();\n\n // Analyze component to extract props\n let props: PropDefinition[];\n if (binding.analyzeSfc) {\n const analysis = binding.analyzeSfc(source, { filename: absolutePath });\n props = analysis.props.map((p) => ({\n name: p.name,\n propType: p.type,\n required: p.required,\n defaultValue: p.default_value,\n }));\n } else {\n // Fallback: simple regex-based prop extraction\n props = extractPropsSimple(source);\n }\n\n if (props.length === 0) {\n // No props found: generate minimal art file\n const componentName = path.basename(componentPath, \".vue\");\n const relPath = `./${path.basename(componentPath)}`;\n return {\n variants: [{ name: \"Default\", isDefault: true, props: {} }],\n artFileContent: generateMinimalArt(componentName, relPath),\n componentName,\n };\n }\n\n // Use native variant generation if available\n if (binding.generateVariants) {\n const nativeProps = props.map((p) => ({\n name: p.name,\n prop_type: p.propType,\n required: p.required,\n default_value: p.defaultValue,\n }));\n\n const relPath = `./${path.basename(componentPath)}`;\n const result = binding.generateVariants(relPath, nativeProps, {\n max_variants: options.maxVariants,\n include_default: options.includeDefault,\n include_boolean_toggles: options.includeBooleanToggles,\n include_enum_variants: options.includeEnumVariants,\n include_boundary_values: options.includeBoundaryValues,\n include_empty_strings: options.includeEmptyStrings,\n });\n\n return {\n variants: result.variants.map((v) => ({\n name: v.name,\n isDefault: v.is_default,\n props: v.props,\n description: v.description,\n })),\n artFileContent: result.art_file_content,\n componentName: result.component_name,\n };\n }\n\n // Fallback: JS-based generation\n return generateArtFileJs(componentPath, props, options);\n}\n\n/**\n * Write generated .art.vue file to disk.\n */\nexport async function writeArtFile(\n componentPath: string,\n options: AutogenOptions = {},\n outputPath?: string,\n): Promise<string> {\n const output = await generateArtFile(componentPath, options);\n\n const targetPath = outputPath ?? componentPath.replace(/\\.vue$/, \".art.vue\");\n\n await fs.promises.mkdir(path.dirname(targetPath), { recursive: true });\n await fs.promises.writeFile(targetPath, output.artFileContent, \"utf-8\");\n\n return targetPath;\n}\n"],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- //#region src/cli/index.d.ts
2
- /**
3
- * Musea CLI
4
- *
5
- * Usage:
6
- * musea-vrt [command] [options]
7
- *
8
- * Commands:
9
- * (default) Run VRT tests
10
- * approve [pat] Approve failed snapshots (optionally filtered by pattern)
11
- * clean Remove orphaned snapshots
12
- *
13
- * Options:
14
- * -u, --update Update baseline snapshots
15
- * -c, --config Path to vite config (default: vite.config.ts)
16
- * -o, --output Output directory for reports (default: .vize)
17
- * -t, --threshold Diff threshold percentage (default: 0.1)
18
- * --json Output JSON report instead of HTML
19
- * --ci CI mode - exit with non-zero code on failures
20
- * --a11y Run accessibility audits alongside VRT
21
- * -h, --help Show help
22
- */
23
- type Command = "run" | "approve" | "clean" | "generate";
24
- interface CliOptions {
25
- command: Command;
26
- update: boolean;
27
- config: string;
28
- output: string;
29
- threshold: number;
30
- json: boolean;
31
- ci: boolean;
32
- a11y: boolean;
33
- help: boolean;
34
- baseUrl: string;
35
- pattern?: string;
36
- componentPath?: string;
37
- }
38
- //#endregion
39
- export { CliOptions };
40
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/cli/index.ts"],"mappings":";;;;;;AA6BA;;;;;;;;;;;;;;;;KAFK,OAAA;AAAA,UAEY,UAAA;EACf,OAAA,EAAS,OAAA;EACT,MAAA;EACA,MAAA;EACA,MAAA;EACA,SAAA;EACA,IAAA;EACA,EAAA;EACA,IAAA;EACA,IAAA;EACA,OAAA;EACA,OAAA;EACA,aAAA;AAAA"}