@sigx/vite 0.1.10 → 0.1.12
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/src/cli.d.ts +12 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +372 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/hmr.d.ts +10 -0
- package/dist/src/hmr.d.ts.map +1 -0
- package/dist/src/hmr.js +86 -0
- package/dist/src/hmr.js.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +104 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/islands.d.ts +99 -0
- package/dist/src/islands.d.ts.map +1 -0
- package/dist/src/islands.js +418 -0
- package/dist/src/islands.js.map +1 -0
- package/dist/src/lib.d.ts +132 -0
- package/dist/src/lib.d.ts.map +1 -0
- package/dist/src/lib.js +156 -0
- package/dist/src/lib.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI to generate sigx component type definitions.
|
|
4
|
+
* Run after `npm install` or manually to get intellisense without starting Vite.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx sigx-types
|
|
8
|
+
* npx sigx-types --watch
|
|
9
|
+
* npx sigx-types --help
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI to generate sigx component type definitions.
|
|
4
|
+
* Run after `npm install` or manually to get intellisense without starting Vite.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* npx sigx-types
|
|
8
|
+
* npx sigx-types --watch
|
|
9
|
+
* npx sigx-types --help
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
// Handles multi-line type parameters with [\s\S]*? (non-greedy any char including newlines)
|
|
14
|
+
const DEFINE_COMPONENT_REGEX = /(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*component\s*(?:<[\s\S]*?>)?\s*\(\s*["'`]([^"'`]+)["'`]/g;
|
|
15
|
+
const DEFAULT_EXPORT_REGEX = /export\s+default\s+component\s*(?:<[\s\S]*?>)?\s*\(\s*["'`]([^"'`]+)["'`]/g;
|
|
16
|
+
function extractComponents(code, filePath) {
|
|
17
|
+
const components = [];
|
|
18
|
+
DEFINE_COMPONENT_REGEX.lastIndex = 0;
|
|
19
|
+
DEFAULT_EXPORT_REGEX.lastIndex = 0;
|
|
20
|
+
let match;
|
|
21
|
+
while ((match = DEFINE_COMPONENT_REGEX.exec(code)) !== null) {
|
|
22
|
+
components.push({
|
|
23
|
+
exportName: match[1],
|
|
24
|
+
tagName: match[2],
|
|
25
|
+
filePath
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
while ((match = DEFAULT_EXPORT_REGEX.exec(code)) !== null) {
|
|
29
|
+
const tagName = match[1];
|
|
30
|
+
const exportName = tagName
|
|
31
|
+
.split('-')
|
|
32
|
+
.map(part => part.charAt(0).toUpperCase() + part.slice(1))
|
|
33
|
+
.join('');
|
|
34
|
+
components.push({
|
|
35
|
+
exportName,
|
|
36
|
+
tagName,
|
|
37
|
+
filePath
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return components;
|
|
41
|
+
}
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Type Definition Generator
|
|
44
|
+
// ============================================================================
|
|
45
|
+
function generateDts(components, rootDir) {
|
|
46
|
+
if (components.length === 0) {
|
|
47
|
+
return `// Auto-generated by @sigx/vite - no components found
|
|
48
|
+
export {};
|
|
49
|
+
`;
|
|
50
|
+
}
|
|
51
|
+
// Deduplicate by tagName
|
|
52
|
+
const uniqueComponents = new Map();
|
|
53
|
+
for (const comp of components) {
|
|
54
|
+
if (!uniqueComponents.has(comp.tagName)) {
|
|
55
|
+
uniqueComponents.set(comp.tagName, comp);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const dedupedComponents = Array.from(uniqueComponents.values());
|
|
59
|
+
// Group by file
|
|
60
|
+
const fileGroups = new Map();
|
|
61
|
+
for (const comp of dedupedComponents) {
|
|
62
|
+
const existing = fileGroups.get(comp.filePath) || [];
|
|
63
|
+
existing.push(comp);
|
|
64
|
+
fileGroups.set(comp.filePath, existing);
|
|
65
|
+
}
|
|
66
|
+
// Generate imports
|
|
67
|
+
const imports = [];
|
|
68
|
+
for (const [filePath, comps] of fileGroups) {
|
|
69
|
+
let relativePath = path.relative(rootDir, filePath).replace(/\\/g, '/');
|
|
70
|
+
relativePath = relativePath.replace(/\.(tsx?|jsx?)$/, '');
|
|
71
|
+
// Go up from node_modules/.sigx/ to project root (2 levels)
|
|
72
|
+
relativePath = '../../' + relativePath;
|
|
73
|
+
const exportNames = comps.map(c => c.exportName).join(', ');
|
|
74
|
+
imports.push(`import type { ${exportNames} } from '${relativePath}';`);
|
|
75
|
+
}
|
|
76
|
+
// Generate registry entries
|
|
77
|
+
const registryEntries = dedupedComponents
|
|
78
|
+
.map(c => ` '${c.tagName}': typeof ${c.exportName};`)
|
|
79
|
+
.join('\n');
|
|
80
|
+
return `// Auto-generated by @sigx/vite - DO NOT EDIT
|
|
81
|
+
// This file provides type definitions for custom elements defined with component
|
|
82
|
+
// Regenerate with: npx sigx-types
|
|
83
|
+
|
|
84
|
+
${imports.join('\n')}
|
|
85
|
+
|
|
86
|
+
declare module '@sigx/runtime-core' {
|
|
87
|
+
interface CustomElementRegistry {
|
|
88
|
+
${registryEntries}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export {};
|
|
93
|
+
`;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Generate a components.ts file with global declarations like ui.button.primary
|
|
97
|
+
*/
|
|
98
|
+
function generateComponentsTs(components, rootDir) {
|
|
99
|
+
if (components.length === 0) {
|
|
100
|
+
return `// Auto-generated by @sigx/vite - no components found
|
|
101
|
+
export {};
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
// Deduplicate by tagName
|
|
105
|
+
const uniqueComponents = new Map();
|
|
106
|
+
for (const comp of components) {
|
|
107
|
+
if (!uniqueComponents.has(comp.tagName)) {
|
|
108
|
+
uniqueComponents.set(comp.tagName, comp);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const dedupedComponents = Array.from(uniqueComponents.values());
|
|
112
|
+
const rootNodes = new Map();
|
|
113
|
+
for (const comp of dedupedComponents) {
|
|
114
|
+
const parts = comp.tagName.split('-');
|
|
115
|
+
if (parts.length >= 2) {
|
|
116
|
+
const prefix = parts[0];
|
|
117
|
+
const pathParts = parts.slice(1);
|
|
118
|
+
if (!rootNodes.has(prefix)) {
|
|
119
|
+
rootNodes.set(prefix, { children: new Map() });
|
|
120
|
+
}
|
|
121
|
+
let current = rootNodes.get(prefix);
|
|
122
|
+
for (let i = 0; i < pathParts.length; i++) {
|
|
123
|
+
const part = pathParts[i];
|
|
124
|
+
if (!current.children.has(part)) {
|
|
125
|
+
current.children.set(part, { children: new Map() });
|
|
126
|
+
}
|
|
127
|
+
current = current.children.get(part);
|
|
128
|
+
if (i === pathParts.length - 1) {
|
|
129
|
+
current.comp = comp;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Generate imports (group by file)
|
|
135
|
+
const fileGroups = new Map();
|
|
136
|
+
for (const comp of dedupedComponents) {
|
|
137
|
+
const existing = fileGroups.get(comp.filePath) || [];
|
|
138
|
+
existing.push(comp);
|
|
139
|
+
fileGroups.set(comp.filePath, existing);
|
|
140
|
+
}
|
|
141
|
+
const imports = [];
|
|
142
|
+
for (const [filePath, comps] of fileGroups) {
|
|
143
|
+
let relativePath = path.relative(rootDir, filePath).replace(/\\/g, '/');
|
|
144
|
+
relativePath = relativePath.replace(/\.(tsx?|jsx?)$/, '');
|
|
145
|
+
relativePath = '../../' + relativePath;
|
|
146
|
+
const exportNames = comps.map(c => c.exportName).join(', ');
|
|
147
|
+
imports.push(`import { ${exportNames} } from '${relativePath}';`);
|
|
148
|
+
}
|
|
149
|
+
// Helper to generate nested object literal
|
|
150
|
+
function generateNestedObject(node, indent) {
|
|
151
|
+
if (node.comp && node.children.size > 0) {
|
|
152
|
+
const childProps = Array.from(node.children.entries())
|
|
153
|
+
.map(([key, child]) => {
|
|
154
|
+
if (child.comp && child.children.size === 0) {
|
|
155
|
+
return `${key}: ${child.comp.exportName}`;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
return `${key}: ${generateNestedObject(child, indent + ' ')}`;
|
|
159
|
+
}
|
|
160
|
+
})
|
|
161
|
+
.join(', ');
|
|
162
|
+
return `Object.assign(${node.comp.exportName}, { ${childProps} })`;
|
|
163
|
+
}
|
|
164
|
+
else if (node.comp) {
|
|
165
|
+
return node.comp.exportName;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
const props = Array.from(node.children.entries())
|
|
169
|
+
.map(([key, child]) => {
|
|
170
|
+
const value = generateNestedObject(child, indent + ' ');
|
|
171
|
+
return `${indent} ${key}: ${value}`;
|
|
172
|
+
})
|
|
173
|
+
.join(',\n');
|
|
174
|
+
return `{\n${props}\n${indent}}`;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Helper to generate nested type declaration
|
|
178
|
+
function generateNestedType(node, indent) {
|
|
179
|
+
if (node.comp && node.children.size > 0) {
|
|
180
|
+
const childTypes = Array.from(node.children.entries())
|
|
181
|
+
.map(([key, child]) => {
|
|
182
|
+
const childType = generateNestedType(child, indent + ' ');
|
|
183
|
+
return `readonly ${key}: ${childType}`;
|
|
184
|
+
})
|
|
185
|
+
.join('; ');
|
|
186
|
+
return `typeof ${node.comp.exportName} & { ${childTypes} }`;
|
|
187
|
+
}
|
|
188
|
+
else if (node.comp) {
|
|
189
|
+
return `typeof ${node.comp.exportName}`;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
const props = Array.from(node.children.entries())
|
|
193
|
+
.map(([key, child]) => {
|
|
194
|
+
const childType = generateNestedType(child, indent + ' ');
|
|
195
|
+
return `${indent} readonly ${key}: ${childType}`;
|
|
196
|
+
})
|
|
197
|
+
.join(';\n');
|
|
198
|
+
return `{\n${props}\n${indent}}`;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const objectDeclarations = [];
|
|
202
|
+
const globalDeclarations = [];
|
|
203
|
+
const prefixes = [];
|
|
204
|
+
for (const [prefix, node] of rootNodes) {
|
|
205
|
+
prefixes.push(prefix);
|
|
206
|
+
const objValue = generateNestedObject(node, '');
|
|
207
|
+
objectDeclarations.push(`const _${prefix} = ${objValue} as const;`);
|
|
208
|
+
const typeValue = generateNestedType(node, ' ');
|
|
209
|
+
globalDeclarations.push(` const ${prefix}: ${typeValue};`);
|
|
210
|
+
}
|
|
211
|
+
return `// Auto-generated by @sigx/vite - DO NOT EDIT
|
|
212
|
+
// This file provides global component objects for intellisense without imports
|
|
213
|
+
// Usage: <ui.button variant="primary" /> or <ui.button.primary />
|
|
214
|
+
|
|
215
|
+
${imports.join('\n')}
|
|
216
|
+
|
|
217
|
+
// Create the actual runtime objects
|
|
218
|
+
${objectDeclarations.join('\n\n')}
|
|
219
|
+
|
|
220
|
+
// Declare globals
|
|
221
|
+
declare global {
|
|
222
|
+
${globalDeclarations.join('\n')}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// Assign to globalThis for runtime
|
|
226
|
+
${prefixes.map(prefix => `(globalThis as any).${prefix} = _${prefix};`).join('\n')}
|
|
227
|
+
|
|
228
|
+
export { ${prefixes.map(p => `_${p} as ${p}`).join(', ')} };
|
|
229
|
+
`;
|
|
230
|
+
}
|
|
231
|
+
function matchGlob(filePath, pattern) {
|
|
232
|
+
const regexPattern = pattern
|
|
233
|
+
.replace(/\./g, '\\.')
|
|
234
|
+
.replace(/\*\*/g, '<<<GLOBSTAR>>>')
|
|
235
|
+
.replace(/\*/g, '[^/]*')
|
|
236
|
+
.replace(/<<<GLOBSTAR>>>/g, '.*');
|
|
237
|
+
const regex = new RegExp(`(^|/)${regexPattern}$`);
|
|
238
|
+
return regex.test(filePath);
|
|
239
|
+
}
|
|
240
|
+
function shouldProcess(filePath, options) {
|
|
241
|
+
const normalizedPath = filePath.replace(/\\/g, '/');
|
|
242
|
+
for (const pattern of options.exclude) {
|
|
243
|
+
if (matchGlob(normalizedPath, pattern)) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
for (const pattern of options.include) {
|
|
248
|
+
if (matchGlob(normalizedPath, pattern)) {
|
|
249
|
+
return true;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
function scanDirectory(dir, options, components) {
|
|
255
|
+
if (!fs.existsSync(dir))
|
|
256
|
+
return;
|
|
257
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
258
|
+
for (const entry of entries) {
|
|
259
|
+
const fullPath = path.join(dir, entry.name);
|
|
260
|
+
if (entry.isDirectory()) {
|
|
261
|
+
if (entry.name === 'node_modules' || entry.name.startsWith('.')) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
scanDirectory(fullPath, options, components);
|
|
265
|
+
}
|
|
266
|
+
else if (entry.isFile() && /\.(tsx?|jsx?)$/.test(entry.name)) {
|
|
267
|
+
if (shouldProcess(fullPath, options)) {
|
|
268
|
+
try {
|
|
269
|
+
const code = fs.readFileSync(fullPath, 'utf-8');
|
|
270
|
+
const fileComponents = extractComponents(code, fullPath);
|
|
271
|
+
components.push(...fileComponents);
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// Ignore read errors
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
// ============================================================================
|
|
281
|
+
// CLI
|
|
282
|
+
// ============================================================================
|
|
283
|
+
function printHelp() {
|
|
284
|
+
console.log(`
|
|
285
|
+
sigx-types - Generate TypeScript definitions for sigx custom elements
|
|
286
|
+
|
|
287
|
+
Usage:
|
|
288
|
+
npx sigx-types [options]
|
|
289
|
+
|
|
290
|
+
Options:
|
|
291
|
+
--help, -h Show this help message
|
|
292
|
+
--watch, -w Watch for file changes and regenerate
|
|
293
|
+
--out, -o Output directory (default: node_modules/.sigx)
|
|
294
|
+
--include Glob patterns to include (comma-separated)
|
|
295
|
+
--exclude Glob patterns to exclude (comma-separated)
|
|
296
|
+
|
|
297
|
+
Examples:
|
|
298
|
+
npx sigx-types
|
|
299
|
+
npx sigx-types --watch
|
|
300
|
+
npx sigx-types --out .sigx-types
|
|
301
|
+
npx sigx-types --include "src/**/*.tsx,components/**/*.tsx"
|
|
302
|
+
`);
|
|
303
|
+
}
|
|
304
|
+
function main() {
|
|
305
|
+
const args = process.argv.slice(2);
|
|
306
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
307
|
+
printHelp();
|
|
308
|
+
process.exit(0);
|
|
309
|
+
}
|
|
310
|
+
const watch = args.includes('--watch') || args.includes('-w');
|
|
311
|
+
// Parse --out
|
|
312
|
+
let outDir = 'node_modules/.sigx';
|
|
313
|
+
const outIndex = args.findIndex(a => a === '--out' || a === '-o');
|
|
314
|
+
if (outIndex !== -1 && args[outIndex + 1]) {
|
|
315
|
+
outDir = args[outIndex + 1];
|
|
316
|
+
}
|
|
317
|
+
// Parse --include
|
|
318
|
+
let include = ['**/*.tsx', '**/*.ts', '**/*.jsx'];
|
|
319
|
+
const includeIndex = args.findIndex(a => a === '--include');
|
|
320
|
+
if (includeIndex !== -1 && args[includeIndex + 1]) {
|
|
321
|
+
include = args[includeIndex + 1].split(',').map(s => s.trim());
|
|
322
|
+
}
|
|
323
|
+
// Parse --exclude
|
|
324
|
+
let exclude = ['node_modules/**', 'dist/**', '**/*.d.ts'];
|
|
325
|
+
const excludeIndex = args.findIndex(a => a === '--exclude');
|
|
326
|
+
if (excludeIndex !== -1 && args[excludeIndex + 1]) {
|
|
327
|
+
exclude = args[excludeIndex + 1].split(',').map(s => s.trim());
|
|
328
|
+
}
|
|
329
|
+
const rootDir = process.cwd();
|
|
330
|
+
const options = { include, exclude };
|
|
331
|
+
function generate() {
|
|
332
|
+
const components = [];
|
|
333
|
+
scanDirectory(rootDir, options, components);
|
|
334
|
+
const dtsDir = path.resolve(rootDir, outDir);
|
|
335
|
+
if (!fs.existsSync(dtsDir)) {
|
|
336
|
+
fs.mkdirSync(dtsDir, { recursive: true });
|
|
337
|
+
}
|
|
338
|
+
// Write components.d.ts (type augmentation)
|
|
339
|
+
const dtsContent = generateDts(components, rootDir);
|
|
340
|
+
const dtsPath = path.join(dtsDir, 'components.d.ts');
|
|
341
|
+
fs.writeFileSync(dtsPath, dtsContent, 'utf-8');
|
|
342
|
+
// Write components.ts (grouped exports like ui.button)
|
|
343
|
+
const tsContent = generateComponentsTs(components, rootDir);
|
|
344
|
+
const tsPath = path.join(dtsDir, 'components.ts');
|
|
345
|
+
fs.writeFileSync(tsPath, tsContent, 'utf-8');
|
|
346
|
+
console.log(`[sigx] Generated types for ${components.length} components → ${outDir}/`);
|
|
347
|
+
}
|
|
348
|
+
// Initial generation
|
|
349
|
+
generate();
|
|
350
|
+
if (watch) {
|
|
351
|
+
console.log('[sigx] Watching for changes...');
|
|
352
|
+
// Simple polling watcher (cross-platform)
|
|
353
|
+
const watchDirs = ['src', 'components', 'pages'].filter(d => fs.existsSync(path.join(rootDir, d)));
|
|
354
|
+
if (watchDirs.length === 0) {
|
|
355
|
+
console.log('[sigx] No src/components/pages directories found to watch');
|
|
356
|
+
return;
|
|
357
|
+
}
|
|
358
|
+
for (const dir of watchDirs) {
|
|
359
|
+
fs.watch(path.join(rootDir, dir), { recursive: true }, (eventType, filename) => {
|
|
360
|
+
if (filename && /\.(tsx?|jsx?)$/.test(filename)) {
|
|
361
|
+
console.log(`[sigx] Change detected: ${filename}`);
|
|
362
|
+
generate();
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
// Keep process alive
|
|
367
|
+
process.stdin.resume();
|
|
368
|
+
console.log('[sigx] Press Ctrl+C to stop');
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
main();
|
|
372
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Register the current module for HMR tracking.
|
|
3
|
+
* Called at the top of each transformed module.
|
|
4
|
+
*/
|
|
5
|
+
export declare function registerHMRModule(moduleId: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* Install the HMR plugin. Called once on first module load.
|
|
8
|
+
*/
|
|
9
|
+
export declare function installHMRPlugin(): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=hmr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr.d.ts","sourceRoot":"","sources":["../../src/hmr.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIxD;AAcD;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4DtD"}
|
package/dist/src/hmr.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Track instances by component ID (moduleId:index)
|
|
2
|
+
const instancesByComponentId = new Map();
|
|
3
|
+
// Track component definition order within each module
|
|
4
|
+
const moduleComponentIndex = new Map();
|
|
5
|
+
// Current module being registered
|
|
6
|
+
let currentModuleId = null;
|
|
7
|
+
let installed = false;
|
|
8
|
+
/**
|
|
9
|
+
* Register the current module for HMR tracking.
|
|
10
|
+
* Called at the top of each transformed module.
|
|
11
|
+
*/
|
|
12
|
+
export function registerHMRModule(moduleId) {
|
|
13
|
+
currentModuleId = moduleId;
|
|
14
|
+
// Reset the component index for this module (start fresh on re-execution)
|
|
15
|
+
moduleComponentIndex.set(moduleId, 0);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get the next component ID for the current module
|
|
19
|
+
*/
|
|
20
|
+
function getNextComponentId() {
|
|
21
|
+
if (!currentModuleId)
|
|
22
|
+
return null;
|
|
23
|
+
const index = moduleComponentIndex.get(currentModuleId) || 0;
|
|
24
|
+
moduleComponentIndex.set(currentModuleId, index + 1);
|
|
25
|
+
return `${currentModuleId}:${index}`;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Install the HMR plugin. Called once on first module load.
|
|
29
|
+
*/
|
|
30
|
+
export async function installHMRPlugin() {
|
|
31
|
+
if (installed)
|
|
32
|
+
return;
|
|
33
|
+
installed = true;
|
|
34
|
+
const { registerComponentPlugin } = await import('sigx/internals');
|
|
35
|
+
registerComponentPlugin({
|
|
36
|
+
onDefine(name, factory, setup) {
|
|
37
|
+
const componentId = getNextComponentId();
|
|
38
|
+
if (!componentId)
|
|
39
|
+
return;
|
|
40
|
+
// Store the component ID on the factory for debugging
|
|
41
|
+
factory.__hmrId = componentId;
|
|
42
|
+
// Check for existing instances with this component ID
|
|
43
|
+
const existingInstances = instancesByComponentId.get(componentId);
|
|
44
|
+
if (existingInstances && existingInstances.size > 0) {
|
|
45
|
+
// HMR update: update all existing instances with new setup/render function
|
|
46
|
+
existingInstances.forEach(instance => {
|
|
47
|
+
try {
|
|
48
|
+
// Re-run the NEW setup with the existing context to get new render fn
|
|
49
|
+
const newRenderFn = setup(instance.ctx);
|
|
50
|
+
// Set the new render function and trigger re-render (Vue-style)
|
|
51
|
+
instance.ctx.renderFn = newRenderFn;
|
|
52
|
+
instance.ctx.update();
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
console.error(`[sigx] HMR failed for ${name || 'component'}:`, e);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// Wrap setup to track instances
|
|
60
|
+
const originalSetup = setup;
|
|
61
|
+
factory.__setup = (ctx) => {
|
|
62
|
+
// Run the original setup
|
|
63
|
+
const renderFn = originalSetup(ctx);
|
|
64
|
+
const instance = { ctx };
|
|
65
|
+
// Register instance by component ID
|
|
66
|
+
let instances = instancesByComponentId.get(componentId);
|
|
67
|
+
if (!instances) {
|
|
68
|
+
instances = new Set();
|
|
69
|
+
instancesByComponentId.set(componentId, instances);
|
|
70
|
+
}
|
|
71
|
+
instances.add(instance);
|
|
72
|
+
// Cleanup on unmount
|
|
73
|
+
ctx.onUnmounted(() => {
|
|
74
|
+
const instances = instancesByComponentId.get(componentId);
|
|
75
|
+
if (instances)
|
|
76
|
+
instances.delete(instance);
|
|
77
|
+
});
|
|
78
|
+
// Return the render function as-is
|
|
79
|
+
return renderFn;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Auto-install when this module is loaded
|
|
85
|
+
installHMRPlugin();
|
|
86
|
+
//# sourceMappingURL=hmr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmr.js","sourceRoot":"","sources":["../../src/hmr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
interface SigxPluginOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Enable HMR support
|
|
5
|
+
* @default true
|
|
6
|
+
*/
|
|
7
|
+
hmr?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function sigxPlugin(options?: SigxPluginOptions): Plugin;
|
|
10
|
+
export { installHMRPlugin, registerHMRModule } from './hmr.js';
|
|
11
|
+
export { sigxIslandsPlugin } from './islands.js';
|
|
12
|
+
export type { SigxIslandsPluginOptions } from './islands.js';
|
|
13
|
+
export default sigxPlugin;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAA6C,MAAM,MAAM,CAAC;AAQ9E,UAAU,iBAAiB;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAqBD,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAoFlE;AAOD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAG7D,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { createRequire } from 'module';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Resolve package source paths for aliasing
|
|
5
|
+
// ============================================================================
|
|
6
|
+
function resolvePackageSrc(packageName) {
|
|
7
|
+
try {
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const pkgPath = require.resolve(`${packageName}/package.json`);
|
|
10
|
+
const pkgDir = path.dirname(pkgPath);
|
|
11
|
+
return path.join(pkgDir, 'src', 'index.ts');
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// Vite Plugin
|
|
19
|
+
// ============================================================================
|
|
20
|
+
export function sigxPlugin(options = {}) {
|
|
21
|
+
const { hmr = true, } = options;
|
|
22
|
+
let config;
|
|
23
|
+
return {
|
|
24
|
+
name: 'sigx',
|
|
25
|
+
enforce: 'pre',
|
|
26
|
+
config(userConfig, { command }) {
|
|
27
|
+
// In dev mode, alias @sigx/* packages to their source files
|
|
28
|
+
// This ensures a single reactivity instance across all packages
|
|
29
|
+
if (command === 'serve') {
|
|
30
|
+
const sigxSrc = resolvePackageSrc('sigx');
|
|
31
|
+
const reactivitySrc = resolvePackageSrc('@sigx/reactivity');
|
|
32
|
+
const runtimeCoreSrc = resolvePackageSrc('@sigx/runtime-core');
|
|
33
|
+
const runtimeDomSrc = resolvePackageSrc('@sigx/runtime-dom');
|
|
34
|
+
const serverRendererSrc = resolvePackageSrc('@sigx/server-renderer');
|
|
35
|
+
const storeSrc = resolvePackageSrc('@sigx/store');
|
|
36
|
+
const alias = {};
|
|
37
|
+
if (sigxSrc)
|
|
38
|
+
alias['sigx'] = sigxSrc;
|
|
39
|
+
if (reactivitySrc)
|
|
40
|
+
alias['@sigx/reactivity'] = reactivitySrc;
|
|
41
|
+
if (runtimeCoreSrc)
|
|
42
|
+
alias['@sigx/runtime-core'] = runtimeCoreSrc;
|
|
43
|
+
if (runtimeDomSrc)
|
|
44
|
+
alias['@sigx/runtime-dom'] = runtimeDomSrc;
|
|
45
|
+
if (serverRendererSrc)
|
|
46
|
+
alias['@sigx/server-renderer'] = serverRendererSrc;
|
|
47
|
+
if (storeSrc)
|
|
48
|
+
alias['@sigx/store'] = storeSrc;
|
|
49
|
+
return {
|
|
50
|
+
resolve: {
|
|
51
|
+
alias
|
|
52
|
+
},
|
|
53
|
+
optimizeDeps: {
|
|
54
|
+
// Exclude sigx packages from pre-bundling - they're ESM and aliased to source
|
|
55
|
+
exclude: ['sigx', '@sigx/reactivity', '@sigx/runtime-core', '@sigx/runtime-dom', '@sigx/server-renderer', '@sigx/store']
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
configResolved(resolvedConfig) {
|
|
61
|
+
config = resolvedConfig;
|
|
62
|
+
},
|
|
63
|
+
transform(code, id) {
|
|
64
|
+
// Only process TypeScript/TSX source files (not pre-built JS)
|
|
65
|
+
if (!/\.tsx?$/.test(id) && !/\.jsx$/.test(id)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
// Skip node_modules and dist folders
|
|
69
|
+
if (id.includes('node_modules') || id.includes('/dist/') || id.includes('\\dist\\')) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// Check if this file contains component
|
|
73
|
+
const hasComponent = /component\s*[<(]/.test(code);
|
|
74
|
+
// Inject HMR code in dev mode for files with components
|
|
75
|
+
if (hmr && config.command === 'serve' && hasComponent) {
|
|
76
|
+
// Create a module ID for HMR tracking
|
|
77
|
+
const moduleId = id.replace(/\\/g, '/');
|
|
78
|
+
// Inject HMR runtime import and module registration at the top
|
|
79
|
+
const hmrImport = `import { registerHMRModule } from '@sigx/vite/hmr';\nregisterHMRModule('${moduleId}');\n`;
|
|
80
|
+
// Add HMR accept handler at the bottom
|
|
81
|
+
const hmrCode = `
|
|
82
|
+
if (import.meta.hot) {
|
|
83
|
+
import.meta.hot.accept();
|
|
84
|
+
}
|
|
85
|
+
`;
|
|
86
|
+
return {
|
|
87
|
+
code: hmrImport + code + hmrCode,
|
|
88
|
+
map: null
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// HMR Runtime Plugin (for browser)
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// Re-export the HMR runtime functions for manual use if needed
|
|
99
|
+
export { installHMRPlugin, registerHMRModule } from './hmr.js';
|
|
100
|
+
// Re-export islands plugin
|
|
101
|
+
export { sigxIslandsPlugin } from './islands.js';
|
|
102
|
+
// Default export for convenience
|
|
103
|
+
export default sigxPlugin;
|
|
104
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|