@sigx/vite 0.1.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.
- package/README.md +40 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +372 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/src/Component.d.ts +131 -0
- package/dist/core/src/Component.d.ts.map +1 -0
- package/dist/core/src/Component.js +272 -0
- package/dist/core/src/Component.js.map +1 -0
- package/dist/core/src/Signals.d.ts +34 -0
- package/dist/core/src/Signals.d.ts.map +1 -0
- package/dist/core/src/Signals.js +222 -0
- package/dist/core/src/Signals.js.map +1 -0
- package/dist/core/src/Templating.d.ts +11 -0
- package/dist/core/src/Templating.d.ts.map +1 -0
- package/dist/core/src/Templating.js +81 -0
- package/dist/core/src/Templating.js.map +1 -0
- package/dist/core/src/factory/index.d.ts +20 -0
- package/dist/core/src/factory/index.d.ts.map +1 -0
- package/dist/core/src/factory/index.js +50 -0
- package/dist/core/src/factory/index.js.map +1 -0
- package/dist/core/src/index.d.ts +8 -0
- package/dist/core/src/index.d.ts.map +1 -0
- package/dist/core/src/index.js +9 -0
- package/dist/core/src/index.js.map +1 -0
- package/dist/core/src/jsx-runtime.d.ts +43 -0
- package/dist/core/src/jsx-runtime.d.ts.map +1 -0
- package/dist/core/src/jsx-runtime.js +469 -0
- package/dist/core/src/jsx-runtime.js.map +1 -0
- package/dist/core/src/messaging/index.d.ts +9 -0
- package/dist/core/src/messaging/index.d.ts.map +1 -0
- package/dist/core/src/messaging/index.js +37 -0
- package/dist/core/src/messaging/index.js.map +1 -0
- package/dist/core/src/models/index.d.ts +18 -0
- package/dist/core/src/models/index.d.ts.map +1 -0
- package/dist/core/src/models/index.js +12 -0
- package/dist/core/src/models/index.js.map +1 -0
- package/dist/core/src/sheet.d.ts +51 -0
- package/dist/core/src/sheet.d.ts.map +1 -0
- package/dist/core/src/sheet.js +151 -0
- package/dist/core/src/sheet.js.map +1 -0
- package/dist/core/src/stores/DefineInjectable.d.ts +5 -0
- package/dist/core/src/stores/DefineInjectable.d.ts.map +1 -0
- package/dist/core/src/stores/DefineInjectable.js +56 -0
- package/dist/core/src/stores/DefineInjectable.js.map +1 -0
- package/dist/core/src/stores/Store.d.ts +70 -0
- package/dist/core/src/stores/Store.d.ts.map +1 -0
- package/dist/core/src/stores/Store.js +180 -0
- package/dist/core/src/stores/Store.js.map +1 -0
- package/dist/core/src/styled.d.ts +15 -0
- package/dist/core/src/styled.d.ts.map +1 -0
- package/dist/core/src/styled.js +62 -0
- package/dist/core/src/styled.js.map +1 -0
- package/dist/core/src/utils/index.d.ts +5 -0
- package/dist/core/src/utils/index.d.ts.map +1 -0
- package/dist/core/src/utils/index.js +12 -0
- package/dist/core/src/utils/index.js.map +1 -0
- package/dist/hmr-plugin/src/index.d.ts +2 -0
- package/dist/hmr-plugin/src/index.d.ts.map +1 -0
- package/dist/hmr-plugin/src/index.js +59 -0
- package/dist/hmr-plugin/src/index.js.map +1 -0
- package/dist/hmr.d.ts +10 -0
- package/dist/hmr.d.ts.map +1 -0
- package/dist/hmr.js +99 -0
- package/dist/hmr.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/vite/src/index.d.ts +2 -0
- package/dist/vite/src/index.d.ts.map +1 -0
- package/dist/vite/src/index.js +59 -0
- package/dist/vite/src/index.js.map +1 -0
- package/package.json +53 -0
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# @sigx/vite
|
|
2
|
+
|
|
3
|
+
Hot Module Replacement plugin for SignalX Framework development.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D @sigx/vite
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Simply import at the top of your component files during development:
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import '@sigx/vite';
|
|
17
|
+
import { defineComponent } from 'sigx';
|
|
18
|
+
|
|
19
|
+
defineComponent('my-component', ({ html, signal }) => {
|
|
20
|
+
// Your component code
|
|
21
|
+
});
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The plugin automatically:
|
|
25
|
+
- Detects when component code changes
|
|
26
|
+
- Preserves component state during updates
|
|
27
|
+
- Re-renders affected components
|
|
28
|
+
- Only activates in development (tree-shaken in production)
|
|
29
|
+
|
|
30
|
+
## How It Works
|
|
31
|
+
|
|
32
|
+
The plugin uses sigx's plugin system to:
|
|
33
|
+
1. Track component instances
|
|
34
|
+
2. Intercept component redefinitions
|
|
35
|
+
3. Trigger hot reloads without full page refresh
|
|
36
|
+
|
|
37
|
+
## Requirements
|
|
38
|
+
|
|
39
|
+
- Vite or another dev server with HMR support
|
|
40
|
+
- `sigx` as a peer dependency
|
package/dist/cli.d.ts
ADDED
|
@@ -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/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*defineComponent\s*(?:<[\s\S]*?>)?\s*\(\s*["'`]([^"'`]+)["'`]/g;
|
|
15
|
+
const DEFAULT_EXPORT_REGEX = /export\s+default\s+defineComponent\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 defineComponent
|
|
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
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAY7B,4FAA4F;AAC5F,MAAM,sBAAsB,GAAG,6GAA6G,CAAC;AAC7I,MAAM,oBAAoB,GAAG,kFAAkF,CAAC;AAEhH,SAAS,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IACrD,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,sBAAsB,CAAC,SAAS,GAAG,CAAC,CAAC;IACrC,oBAAoB,CAAC,SAAS,GAAG,CAAC,CAAC;IAEnC,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,UAAU,CAAC,IAAI,CAAC;YACZ,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YACjB,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;IAED,OAAO,CAAC,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,UAAU,GAAG,OAAO;aACrB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aACzD,IAAI,CAAC,EAAE,CAAC,CAAC;QACd,UAAU,CAAC,IAAI,CAAC;YACZ,UAAU;YACV,OAAO;YACP,QAAQ;SACX,CAAC,CAAC;IACP,CAAC;IAED,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,SAAS,WAAW,CAAC,UAA2B,EAAE,OAAe;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;;CAEd,CAAC;IACE,CAAC;IAED,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAEhE,gBAAgB;IAChB,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,mBAAmB;IACnB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxE,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC1D,4DAA4D;QAC5D,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;QACvC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,iBAAiB,WAAW,YAAY,YAAY,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,4BAA4B;IAC5B,MAAM,eAAe,GAAG,iBAAiB;SACpC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,OAAO,aAAa,CAAC,CAAC,UAAU,GAAG,CAAC;SAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhB,OAAO;;;;EAIT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIlB,eAAe;;;;;CAKhB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,UAA2B,EAAE,OAAe;IACtE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;;CAEd,CAAC;IACE,CAAC;IAED,yBAAyB;IACzB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IAQhE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;YACnD,CAAC;YAED,IAAI,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;gBAEtC,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,IAAI,GAAG,EAA2B,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrD,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACzC,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACxE,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC1D,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;QAEvC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,YAAY,YAAY,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,2CAA2C;IAC3C,SAAS,oBAAoB,CAAC,IAAgB,EAAE,MAAc;QAC1D,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC1C,OAAO,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACJ,OAAO,GAAG,GAAG,KAAK,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;gBACrE,CAAC;YACL,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,iBAAiB,IAAI,CAAC,IAAI,CAAC,UAAU,OAAO,UAAU,KAAK,CAAC;QACvE,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC3D,OAAO,GAAG,MAAM,OAAO,GAAG,KAAK,KAAK,EAAE,CAAC;YAC3C,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,MAAM,KAAK,KAAK,MAAM,GAAG,CAAC;QACrC,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,SAAS,kBAAkB,CAAC,IAAgB,EAAE,MAAc;QACxD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClB,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC7D,OAAO,YAAY,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3C,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,QAAQ,UAAU,IAAI,CAAC;QAChE,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAClB,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;gBAC7D,OAAO,GAAG,MAAM,gBAAgB,GAAG,KAAK,SAAS,EAAE,CAAC;YACxD,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,MAAM,KAAK,KAAK,MAAM,GAAG,CAAC;QACrC,CAAC;IACL,CAAC;IAED,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,MAAM,kBAAkB,GAAa,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,kBAAkB,CAAC,IAAI,CAAC,UAAU,MAAM,MAAM,QAAQ,YAAY,CAAC,CAAC;QAEpE,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnD,kBAAkB,CAAC,IAAI,CAAC,aAAa,MAAM,KAAK,SAAS,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;;;;EAIT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGlB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;;;;EAI/B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAI7B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB,MAAM,OAAO,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;WAEvE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACvD,CAAC;AACF,CAAC;AAWD,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAe;IAChD,MAAM,YAAY,GAAG,OAAO;SACvB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,YAAY,GAAG,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB,EAAE,OAAoB;IACzD,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,OAAoB,EAAE,UAA2B;IACjF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IAEhC,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9D,SAAS;YACb,CAAC;YACD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,IAAI,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAChD,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;oBACzD,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;gBACvC,CAAC;gBAAC,MAAM,CAAC;oBACL,qBAAqB;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAED,+EAA+E;AAC/E,MAAM;AACN,+EAA+E;AAE/E,SAAS,SAAS;IACd,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;CAkBf,CAAC,CAAC;AACH,CAAC;AAED,SAAS,IAAI;IACT,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE9D,cAAc;IACd,IAAI,MAAM,GAAG,oBAAoB,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IAC5D,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,GAAG,CAAC,iBAAiB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IAC5D,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAElD,SAAS,QAAQ;QACb,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QAED,4CAA4C;QAC5C,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACrD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAE/C,uDAAuD;QACvD,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAClD,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,CAAC,MAAM,iBAAiB,MAAM,GAAG,CAAC,CAAC;IAC3F,CAAC;IAED,qBAAqB;IACrB,QAAQ,EAAE,CAAC;IAEX,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,0CAA0C;QAC1C,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YACzE,OAAO;QACX,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC1B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;gBAC3E,IAAI,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;oBACnD,QAAQ,EAAE,CAAC;gBACf,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;QAED,qBAAqB;QACrB,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { JSXElement } from "./jsx-runtime.js";
|
|
2
|
+
import { signal, Signal, reactive } from "./Signals.js";
|
|
3
|
+
/**
|
|
4
|
+
* Define a single prop with type, required/optional status
|
|
5
|
+
* Use intersection to compose multiple props together
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* type MyProps = DefineProp<"name", string, true> &
|
|
10
|
+
* DefineProp<"age", number, false> &
|
|
11
|
+
* DefineProp<"email", string, false>;
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export type DefineProp<TName extends string, TType, Required extends boolean = false> = Required extends false ? {
|
|
15
|
+
[K in TName]?: TType;
|
|
16
|
+
} : {
|
|
17
|
+
[K in TName]: TType;
|
|
18
|
+
};
|
|
19
|
+
export type EventDefinition<T> = {
|
|
20
|
+
__eventDetail: T;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Define a single custom event with its detail type
|
|
24
|
+
* Use intersection to compose multiple events together
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* type MyEvents = DefineEvent<"change", string> &
|
|
29
|
+
* DefineEvent<"submit", { value: string; timestamp: number }> &
|
|
30
|
+
* DefineEvent<"cancel", void>;
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export type DefineEvent<TName extends string, TDetail = void> = {
|
|
34
|
+
[K in TName]?: EventDefinition<TDetail>;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Extract event names from an event definition
|
|
38
|
+
*/
|
|
39
|
+
type EventNames<TEvents> = {
|
|
40
|
+
[K in keyof TEvents]: TEvents[K] extends EventDefinition<any> | undefined ? K : never;
|
|
41
|
+
}[keyof TEvents] & string;
|
|
42
|
+
/**
|
|
43
|
+
* Extract event detail type for a specific event name
|
|
44
|
+
*/
|
|
45
|
+
type EventDetail<TEvents, TName extends EventNames<TEvents>> = TEvents extends {
|
|
46
|
+
[K in TName]?: EventDefinition<infer TDetail>;
|
|
47
|
+
} ? TDetail : never;
|
|
48
|
+
/**
|
|
49
|
+
* Typed emit function for dispatching custom events
|
|
50
|
+
*/
|
|
51
|
+
export type EmitFn<TEvents extends Record<string, any>> = <TName extends EventNames<TEvents>>(eventName: TName, ...args: EventDetail<TEvents, TName> extends void ? [] : [detail: EventDetail<TEvents, TName>]) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Capitalize the first letter of a string
|
|
54
|
+
*/
|
|
55
|
+
type Capitalize<S extends string> = S extends `${infer First}${infer Rest}` ? `${Uppercase<First>}${Rest}` : S;
|
|
56
|
+
/**
|
|
57
|
+
* Convert events to event handler props (on{EventName})
|
|
58
|
+
* EventName is capitalized: "change" -> "onChange", "countChanged" -> "onCountChanged"
|
|
59
|
+
*/
|
|
60
|
+
type EventHandlers<TEvents extends Record<string, any>> = {
|
|
61
|
+
[K in keyof TEvents as TEvents[K] extends EventDefinition<any> | undefined ? `on${Capitalize<string & K>}` : never]?: (detail: TEvents[K] extends EventDefinition<infer D> | undefined ? D : never) => void;
|
|
62
|
+
};
|
|
63
|
+
export interface MountContext<TEl extends HTMLElement = HTMLElement> {
|
|
64
|
+
el: TEl;
|
|
65
|
+
shadow: ShadowRoot | null;
|
|
66
|
+
}
|
|
67
|
+
export interface sigxComponent extends HTMLElement {
|
|
68
|
+
__issigx: true;
|
|
69
|
+
__provides?: Map<any, any>;
|
|
70
|
+
__parentComponent?: sigxComponent | null;
|
|
71
|
+
}
|
|
72
|
+
export interface ComponentSetupContext<TEl extends HTMLElement = HTMLElement, TProps extends Record<string, any> = {}, TEvents extends Record<string, any> = {}> {
|
|
73
|
+
el: TEl;
|
|
74
|
+
shadow: ShadowRoot | null;
|
|
75
|
+
signal: typeof signal;
|
|
76
|
+
reactive: typeof reactive;
|
|
77
|
+
props: TProps;
|
|
78
|
+
emit: EmitFn<TEvents>;
|
|
79
|
+
parent: sigxComponent | null;
|
|
80
|
+
onMount(fn: (ctx: MountContext<TEl>) => void): void;
|
|
81
|
+
onCleanup(fn: (ctx: MountContext<TEl>) => void): void;
|
|
82
|
+
}
|
|
83
|
+
export declare function getCurrentInstance(): ComponentSetupContext<any, any, any> | null;
|
|
84
|
+
/**
|
|
85
|
+
* Adopt stylesheets for the current component.
|
|
86
|
+
* Works for both Shadow DOM and Light DOM components.
|
|
87
|
+
*
|
|
88
|
+
* @param sheets One or more CSSStyleSheet objects created via `css` tag
|
|
89
|
+
*/
|
|
90
|
+
export declare function adoptStyles(...sheets: CSSStyleSheet[]): void;
|
|
91
|
+
export declare function onMount(fn: (ctx: MountContext) => void): void;
|
|
92
|
+
export declare function onCleanup(fn: (ctx: MountContext) => void): void;
|
|
93
|
+
export type ViewFn = () => JSXElement;
|
|
94
|
+
export type ComponentPlugin = {
|
|
95
|
+
onDefine?: (tagName: string, setup: (ctx: ComponentSetupContext) => ViewFn) => boolean;
|
|
96
|
+
onConnect?: (tagName: string, instance: HTMLElement) => void;
|
|
97
|
+
onDisconnect?: (tagName: string, instance: HTMLElement) => void;
|
|
98
|
+
onInit?: (tagName: string, instance: HTMLElement, init: () => void) => void;
|
|
99
|
+
};
|
|
100
|
+
export declare function registerComponentPlugin(plugin: ComponentPlugin): void;
|
|
101
|
+
export interface ComponentOptions {
|
|
102
|
+
shadow?: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Define a component with automatic type registration.
|
|
106
|
+
* Returns a JSX factory function that can be used directly in JSX.
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* ```typescript
|
|
110
|
+
* // Mix props and events in any order with intersection
|
|
111
|
+
* export const MyComponent = defineComponent<
|
|
112
|
+
* DefineProp<"name", string, true> & DefineEvent<"change", string>
|
|
113
|
+
* >("my-component", ({ props, emit }) => { ... });
|
|
114
|
+
*
|
|
115
|
+
* // Or reverse order
|
|
116
|
+
* export const MyComponent = defineComponent<
|
|
117
|
+
* DefineEvent<"change", string> & DefineProp<"name", string, true>
|
|
118
|
+
* >("my-component", ({ props, emit }) => { ... });
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare function defineComponent<TCombined extends Record<string, any> = {}>(tagName: string, setup: (ctx: ComponentSetupContext<HTMLElement, TCombined, TCombined>) => ViewFn, options?: ComponentOptions): ((props: Omit<TCombined, EventNames<TCombined>> & EventHandlers<TCombined> & {
|
|
122
|
+
key?: string | number;
|
|
123
|
+
ref?: any;
|
|
124
|
+
children?: any;
|
|
125
|
+
}) => JSXElement) & {
|
|
126
|
+
__tag: string;
|
|
127
|
+
__props: TCombined;
|
|
128
|
+
__events: TCombined;
|
|
129
|
+
};
|
|
130
|
+
export type { Signal };
|
|
131
|
+
//# sourceMappingURL=Component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../../core/src/Component.ts"],"names":[],"mappings":"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"}
|