@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.
@@ -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"}
@@ -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"}
@@ -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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"}