logicstamp-context 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LLM_CONTEXT.md +3 -3
  2. package/README.md +60 -59
  3. package/dist/cli/commands/context/bundleFormatter.d.ts +2 -2
  4. package/dist/cli/commands/context/bundleFormatter.d.ts.map +1 -1
  5. package/dist/cli/commands/context/bundleFormatter.js +10 -1
  6. package/dist/cli/commands/context/bundleFormatter.js.map +1 -1
  7. package/dist/cli/commands/context/fileWriter.d.ts +1 -1
  8. package/dist/cli/commands/context/fileWriter.d.ts.map +1 -1
  9. package/dist/cli/commands/context/fileWriter.js +6 -3
  10. package/dist/cli/commands/context/fileWriter.js.map +1 -1
  11. package/dist/cli/commands/context/statsCalculator.d.ts +1 -1
  12. package/dist/cli/commands/context/statsCalculator.d.ts.map +1 -1
  13. package/dist/cli/commands/context/tokenEstimator.d.ts +1 -1
  14. package/dist/cli/commands/context/tokenEstimator.d.ts.map +1 -1
  15. package/dist/cli/commands/context.d.ts +1 -1
  16. package/dist/cli/commands/context.d.ts.map +1 -1
  17. package/dist/cli/commands/init.d.ts.map +1 -1
  18. package/dist/cli/commands/init.js +2 -0
  19. package/dist/cli/commands/init.js.map +1 -1
  20. package/dist/cli/index.js.map +1 -1
  21. package/dist/cli/parser/argumentParser.js.map +1 -1
  22. package/dist/cli/parser/helpText.d.ts.map +1 -1
  23. package/dist/cli/parser/helpText.js +4 -2
  24. package/dist/cli/parser/helpText.js.map +1 -1
  25. package/dist/core/astParser/detectors.d.ts.map +1 -1
  26. package/dist/core/astParser/detectors.js +141 -0
  27. package/dist/core/astParser/detectors.js.map +1 -1
  28. package/dist/core/astParser/extractors/vueComponentExtractor.d.ts +38 -0
  29. package/dist/core/astParser/extractors/vueComponentExtractor.d.ts.map +1 -0
  30. package/dist/core/astParser/extractors/vueComponentExtractor.js +630 -0
  31. package/dist/core/astParser/extractors/vueComponentExtractor.js.map +1 -0
  32. package/dist/core/astParser.d.ts.map +1 -1
  33. package/dist/core/astParser.js +23 -5
  34. package/dist/core/astParser.js.map +1 -1
  35. package/dist/core/pack.d.ts +1 -1
  36. package/dist/core/pack.d.ts.map +1 -1
  37. package/dist/types/UIFContract.d.ts +1 -1
  38. package/dist/types/UIFContract.d.ts.map +1 -1
  39. package/dist/utils/gitignore.d.ts.map +1 -1
  40. package/dist/utils/gitignore.js +2 -0
  41. package/dist/utils/gitignore.js.map +1 -1
  42. package/package.json +9 -8
  43. package/schema/logicstamp.context.schema.json +3 -3
@@ -0,0 +1,630 @@
1
+ /**
2
+ * Vue Component Extractor - Extracts Vue composables, components, and reactive state from AST
3
+ */
4
+ import { SyntaxKind, Node } from 'ts-morph';
5
+ import { debugError } from '../../../utils/debug.js';
6
+ import { normalizePropType } from './propExtractor.js';
7
+ /**
8
+ * Extract all Vue composables (ref, computed, custom composables)
9
+ * Matches the pattern: useXxx or Vue's built-in composables
10
+ */
11
+ export function extractVueComposables(source) {
12
+ const composables = new Set();
13
+ const filePath = source.getFilePath?.() ?? 'unknown';
14
+ try {
15
+ source.getDescendantsOfKind(SyntaxKind.CallExpression).forEach((callExpr) => {
16
+ try {
17
+ const expr = callExpr.getExpression();
18
+ // Only extract composables from direct identifier calls
19
+ if (expr.getKind() === SyntaxKind.Identifier) {
20
+ const text = expr.getText();
21
+ // Match useXxx pattern (custom composables) or Vue built-ins
22
+ const vueBuiltins = [
23
+ 'ref', 'reactive', 'computed', 'watch', 'watchEffect',
24
+ 'onMounted', 'onUnmounted', 'onBeforeMount', 'onBeforeUnmount',
25
+ 'onUpdated', 'onBeforeUpdate', 'onActivated', 'onDeactivated',
26
+ 'onErrorCaptured', 'onRenderTracked', 'onRenderTriggered',
27
+ 'provide', 'inject', 'toRef', 'toRefs', 'isRef', 'unref',
28
+ 'shallowRef', 'triggerRef', 'customRef', 'shallowReactive',
29
+ 'readonly', 'isReactive', 'isReadonly', 'toRaw', 'markRaw',
30
+ 'effectScope', 'getCurrentScope', 'onScopeDispose',
31
+ 'useSlots', 'useAttrs', 'useCssModule', 'useCssVars',
32
+ 'defineProps', 'defineEmits', 'defineExpose', 'withDefaults'
33
+ ];
34
+ if (/^use[A-Z]/.test(text) || vueBuiltins.includes(text)) {
35
+ composables.add(text);
36
+ }
37
+ }
38
+ }
39
+ catch (error) {
40
+ debugError('vueComponentExtractor', 'extractVueComposables', {
41
+ filePath,
42
+ error: error instanceof Error ? error.message : String(error),
43
+ context: 'composables-iteration',
44
+ });
45
+ // Continue with next composable
46
+ }
47
+ });
48
+ }
49
+ catch (error) {
50
+ debugError('vueComponentExtractor', 'extractVueComposables', {
51
+ filePath,
52
+ error: error instanceof Error ? error.message : String(error),
53
+ });
54
+ return [];
55
+ }
56
+ return Array.from(composables).sort();
57
+ }
58
+ /**
59
+ * Extract all components used in Vue templates or JSX
60
+ * Handles both PascalCase components and kebab-case components
61
+ */
62
+ export function extractVueComponents(source) {
63
+ const components = new Set();
64
+ const filePath = source.getFilePath?.() ?? 'unknown';
65
+ try {
66
+ // JSX opening elements (for Vue JSX/TSX)
67
+ try {
68
+ source.getDescendantsOfKind(SyntaxKind.JsxOpeningElement).forEach((openingEl) => {
69
+ try {
70
+ const tagName = openingEl.getTagNameNode().getText();
71
+ if (/^[A-Z]/.test(tagName)) {
72
+ components.add(tagName);
73
+ }
74
+ }
75
+ catch (error) {
76
+ debugError('vueComponentExtractor', 'extractVueComponents', {
77
+ filePath,
78
+ error: error instanceof Error ? error.message : String(error),
79
+ context: 'components-opening',
80
+ });
81
+ }
82
+ });
83
+ }
84
+ catch (error) {
85
+ debugError('vueComponentExtractor', 'extractVueComponents', {
86
+ filePath,
87
+ error: error instanceof Error ? error.message : String(error),
88
+ context: 'components-opening-batch',
89
+ });
90
+ }
91
+ // Self-closing JSX elements (for Vue JSX/TSX)
92
+ try {
93
+ source.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).forEach((selfClosing) => {
94
+ try {
95
+ const tagName = selfClosing.getTagNameNode().getText();
96
+ if (/^[A-Z]/.test(tagName)) {
97
+ components.add(tagName);
98
+ }
99
+ }
100
+ catch (error) {
101
+ debugError('vueComponentExtractor', 'extractVueComponents', {
102
+ filePath,
103
+ error: error instanceof Error ? error.message : String(error),
104
+ context: 'components-selfclosing',
105
+ });
106
+ }
107
+ });
108
+ }
109
+ catch (error) {
110
+ debugError('vueComponentExtractor', 'extractVueComponents', {
111
+ filePath,
112
+ error: error instanceof Error ? error.message : String(error),
113
+ context: 'components-selfclosing-batch',
114
+ });
115
+ }
116
+ // Extract from components registration (Vue 3 Composition API)
117
+ // Look for: components: { MyComponent, ... } or const components = { MyComponent, ... }
118
+ try {
119
+ // Find all property assignments named 'components'
120
+ source.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach((prop) => {
121
+ try {
122
+ const propName = prop.getName();
123
+ if (propName === 'components') {
124
+ const initializer = prop.getInitializer();
125
+ if (initializer && Node.isObjectLiteralExpression(initializer)) {
126
+ // Extract component names from the object literal
127
+ initializer.getProperties().forEach((objProp) => {
128
+ try {
129
+ if (Node.isShorthandPropertyAssignment(objProp) || Node.isPropertyAssignment(objProp)) {
130
+ const componentName = objProp.getName();
131
+ if (componentName && /^[A-Z]/.test(componentName)) {
132
+ components.add(componentName);
133
+ }
134
+ }
135
+ }
136
+ catch (error) {
137
+ debugError('vueComponentExtractor', 'extractVueComponents', {
138
+ filePath,
139
+ error: error instanceof Error ? error.message : String(error),
140
+ context: 'components-object-properties',
141
+ });
142
+ }
143
+ });
144
+ }
145
+ }
146
+ }
147
+ catch (error) {
148
+ debugError('vueComponentExtractor', 'extractVueComponents', {
149
+ filePath,
150
+ error: error instanceof Error ? error.message : String(error),
151
+ context: 'components-registration',
152
+ });
153
+ }
154
+ });
155
+ // Also check for const components = { ... }
156
+ source.getDescendantsOfKind(SyntaxKind.VariableDeclaration).forEach((varDecl) => {
157
+ try {
158
+ const varName = varDecl.getName();
159
+ if (varName === 'components') {
160
+ const initializer = varDecl.getInitializer();
161
+ if (initializer && Node.isObjectLiteralExpression(initializer)) {
162
+ // Extract component names from the object literal
163
+ initializer.getProperties().forEach((objProp) => {
164
+ try {
165
+ if (Node.isShorthandPropertyAssignment(objProp) || Node.isPropertyAssignment(objProp)) {
166
+ const componentName = objProp.getName();
167
+ if (componentName && /^[A-Z]/.test(componentName)) {
168
+ components.add(componentName);
169
+ }
170
+ }
171
+ }
172
+ catch (error) {
173
+ debugError('vueComponentExtractor', 'extractVueComponents', {
174
+ filePath,
175
+ error: error instanceof Error ? error.message : String(error),
176
+ context: 'components-var-object-properties',
177
+ });
178
+ }
179
+ });
180
+ }
181
+ }
182
+ }
183
+ catch (error) {
184
+ debugError('vueComponentExtractor', 'extractVueComponents', {
185
+ filePath,
186
+ error: error instanceof Error ? error.message : String(error),
187
+ context: 'components-var-registration',
188
+ });
189
+ }
190
+ });
191
+ }
192
+ catch (error) {
193
+ debugError('vueComponentExtractor', 'extractVueComponents', {
194
+ filePath,
195
+ error: error instanceof Error ? error.message : String(error),
196
+ context: 'components-registration-batch',
197
+ });
198
+ }
199
+ }
200
+ catch (error) {
201
+ debugError('vueComponentExtractor', 'extractVueComponents', {
202
+ filePath,
203
+ error: error instanceof Error ? error.message : String(error),
204
+ });
205
+ return [];
206
+ }
207
+ return Array.from(components).sort();
208
+ }
209
+ /**
210
+ * Extract Vue reactive state (ref, reactive, computed)
211
+ */
212
+ export function extractVueState(source) {
213
+ const state = {};
214
+ const filePath = source.getFilePath?.() ?? 'unknown';
215
+ try {
216
+ source.getDescendantsOfKind(SyntaxKind.VariableDeclaration).forEach((varDecl) => {
217
+ try {
218
+ const varName = varDecl.getName();
219
+ if (!varName)
220
+ return;
221
+ const initializer = varDecl.getInitializer();
222
+ if (!initializer)
223
+ return;
224
+ // Check if it's a ref, reactive, or computed call
225
+ if (Node.isCallExpression(initializer)) {
226
+ const callExpr = initializer;
227
+ const expr = callExpr.getExpression();
228
+ if (Node.isIdentifier(expr)) {
229
+ const funcName = expr.getText();
230
+ if (['ref', 'reactive', 'computed', 'shallowRef', 'shallowReactive'].includes(funcName)) {
231
+ // Try to get type from generic or infer from initializer
232
+ let varType = 'unknown';
233
+ // Check for generic type argument
234
+ const typeArgs = callExpr.getTypeArguments();
235
+ if (typeArgs.length > 0) {
236
+ varType = typeArgs[0].getText();
237
+ }
238
+ else {
239
+ // Try to infer from initializer argument
240
+ const args = callExpr.getArguments();
241
+ if (args.length > 0) {
242
+ const argType = args[0].getType();
243
+ varType = argType.getText();
244
+ }
245
+ }
246
+ state[varName] = `${funcName}<${varType}>`;
247
+ }
248
+ }
249
+ }
250
+ }
251
+ catch (error) {
252
+ debugError('vueComponentExtractor', 'extractVueState', {
253
+ filePath,
254
+ error: error instanceof Error ? error.message : String(error),
255
+ context: 'state-iteration',
256
+ });
257
+ }
258
+ });
259
+ }
260
+ catch (error) {
261
+ debugError('vueComponentExtractor', 'extractVueState', {
262
+ filePath,
263
+ error: error instanceof Error ? error.message : String(error),
264
+ });
265
+ return {};
266
+ }
267
+ return state;
268
+ }
269
+ /**
270
+ * Extract Vue props (from defineProps)
271
+ */
272
+ export function extractVuePropsCall(source) {
273
+ const filePath = source.getFilePath?.() ?? 'unknown';
274
+ try {
275
+ const callExpressions = source.getDescendantsOfKind(SyntaxKind.CallExpression);
276
+ for (const callExpr of callExpressions) {
277
+ try {
278
+ const expr = callExpr.getExpression();
279
+ if (expr.getKind() === SyntaxKind.Identifier) {
280
+ const funcName = expr.getText();
281
+ if (funcName === 'defineProps' || funcName === 'withDefaults') {
282
+ // Return the type argument or runtime props
283
+ const typeArgs = callExpr.getTypeArguments();
284
+ if (typeArgs.length > 0) {
285
+ return typeArgs[0].getText();
286
+ }
287
+ // Check for runtime props object
288
+ const args = callExpr.getArguments();
289
+ if (args.length > 0) {
290
+ return args[0].getText();
291
+ }
292
+ }
293
+ }
294
+ }
295
+ catch (error) {
296
+ debugError('vueComponentExtractor', 'extractVuePropsCall', {
297
+ filePath,
298
+ error: error instanceof Error ? error.message : String(error),
299
+ context: 'props-iteration',
300
+ });
301
+ }
302
+ }
303
+ }
304
+ catch (error) {
305
+ debugError('vueComponentExtractor', 'extractVuePropsCall', {
306
+ filePath,
307
+ error: error instanceof Error ? error.message : String(error),
308
+ });
309
+ return null;
310
+ }
311
+ return null;
312
+ }
313
+ /**
314
+ * Extract Vue emits (from defineEmits)
315
+ */
316
+ export function extractVueEmitsCall(source) {
317
+ const emits = [];
318
+ const filePath = source.getFilePath?.() ?? 'unknown';
319
+ try {
320
+ const callExpressions = source.getDescendantsOfKind(SyntaxKind.CallExpression);
321
+ for (const callExpr of callExpressions) {
322
+ try {
323
+ const expr = callExpr.getExpression();
324
+ if (expr.getKind() === SyntaxKind.Identifier) {
325
+ const funcName = expr.getText();
326
+ if (funcName === 'defineEmits') {
327
+ // Get type argument (e.g., defineEmits<{ (e: 'update', value: string): void }>())
328
+ const typeArgs = callExpr.getTypeArguments();
329
+ if (typeArgs.length > 0) {
330
+ const typeText = typeArgs[0].getText();
331
+ emits.push(typeText);
332
+ }
333
+ // Get runtime array (e.g., defineEmits(['update', 'close']))
334
+ const args = callExpr.getArguments();
335
+ if (args.length > 0) {
336
+ const arg = args[0];
337
+ if (Node.isArrayLiteralExpression(arg)) {
338
+ arg.getElements().forEach((el) => {
339
+ if (Node.isStringLiteral(el)) {
340
+ emits.push(el.getText().replace(/['"]/g, ''));
341
+ }
342
+ });
343
+ }
344
+ }
345
+ }
346
+ }
347
+ }
348
+ catch (error) {
349
+ debugError('vueComponentExtractor', 'extractVueEmitsCall', {
350
+ filePath,
351
+ error: error instanceof Error ? error.message : String(error),
352
+ context: 'emits-iteration',
353
+ });
354
+ }
355
+ }
356
+ }
357
+ catch (error) {
358
+ debugError('vueComponentExtractor', 'extractVueEmitsCall', {
359
+ filePath,
360
+ error: error instanceof Error ? error.message : String(error),
361
+ });
362
+ return [];
363
+ }
364
+ return emits;
365
+ }
366
+ /**
367
+ * Extract Vue props from defineProps into structured Record<string, PropType>
368
+ * Handles both type-based and runtime props definitions
369
+ */
370
+ export function extractVueProps(source) {
371
+ const props = {};
372
+ const filePath = source.getFilePath?.() ?? 'unknown';
373
+ try {
374
+ const callExpressions = source.getDescendantsOfKind(SyntaxKind.CallExpression);
375
+ for (const callExpr of callExpressions) {
376
+ try {
377
+ const expr = callExpr.getExpression();
378
+ if (expr.getKind() === SyntaxKind.Identifier) {
379
+ const funcName = expr.getText();
380
+ if (funcName === 'defineProps' || funcName === 'withDefaults') {
381
+ // Handle type-based props: defineProps<{ name: string, count?: number }>()
382
+ const typeArgs = callExpr.getTypeArguments();
383
+ if (typeArgs.length > 0) {
384
+ const typeNode = typeArgs[0];
385
+ const type = typeNode.getType();
386
+ // Get properties from the type
387
+ try {
388
+ const properties = type.getProperties();
389
+ properties.forEach((prop) => {
390
+ try {
391
+ const name = prop.getName();
392
+ const propType = prop.getTypeAtLocation(typeNode).getText();
393
+ // Check if optional
394
+ let isOptional = false;
395
+ if (propType.includes('undefined')) {
396
+ isOptional = true;
397
+ }
398
+ else {
399
+ const declarations = prop.getDeclarations();
400
+ isOptional = declarations.some((decl) => {
401
+ return decl.hasQuestionToken?.() === true;
402
+ });
403
+ }
404
+ props[name] = normalizePropType(propType, isOptional);
405
+ }
406
+ catch (error) {
407
+ debugError('vueComponentExtractor', 'extractVueProps', {
408
+ filePath,
409
+ error: error instanceof Error ? error.message : String(error),
410
+ context: 'props-type-property',
411
+ });
412
+ }
413
+ });
414
+ }
415
+ catch (error) {
416
+ debugError('vueComponentExtractor', 'extractVueProps', {
417
+ filePath,
418
+ error: error instanceof Error ? error.message : String(error),
419
+ context: 'props-type-parsing',
420
+ });
421
+ }
422
+ // Found props, return early
423
+ return props;
424
+ }
425
+ // Handle runtime props: defineProps({ name: String, count: Number })
426
+ const args = callExpr.getArguments();
427
+ if (args.length > 0) {
428
+ const arg = args[0];
429
+ if (Node.isObjectLiteralExpression(arg)) {
430
+ arg.getProperties().forEach((objProp) => {
431
+ try {
432
+ if (Node.isPropertyAssignment(objProp)) {
433
+ const name = objProp.getName();
434
+ const initializer = objProp.getInitializer();
435
+ if (initializer) {
436
+ // For runtime props, infer type from Vue prop types (String, Number, Boolean, Array, Object)
437
+ let typeText = initializer.getText();
438
+ let isOptional = false;
439
+ // Check if it's an object with type/required/default
440
+ if (Node.isObjectLiteralExpression(initializer)) {
441
+ const propObj = initializer;
442
+ let typeNode = propObj.getProperty('type');
443
+ let requiredNode = propObj.getProperty('required');
444
+ let defaultNode = propObj.getProperty('default');
445
+ if (typeNode && Node.isPropertyAssignment(typeNode)) {
446
+ typeText = typeNode.getInitializer()?.getText() || 'any';
447
+ }
448
+ // If required is false or default exists, it's optional
449
+ if (requiredNode && Node.isPropertyAssignment(requiredNode)) {
450
+ const requiredValue = requiredNode.getInitializer()?.getText();
451
+ if (requiredValue === 'false') {
452
+ isOptional = true;
453
+ }
454
+ }
455
+ else if (defaultNode) {
456
+ // Has default value, so optional
457
+ isOptional = true;
458
+ }
459
+ }
460
+ else {
461
+ // Direct type constructor (String, Number, etc.)
462
+ // If it's a direct type, check if there's a default or if it's optional
463
+ // For Vue runtime props, we can't determine optionality from type alone
464
+ // We'll mark as required by default unless we detect default
465
+ }
466
+ // Map Vue runtime types to TypeScript types
467
+ const normalizedType = normalizeVueRuntimeType(typeText);
468
+ props[name] = normalizePropType(normalizedType, isOptional);
469
+ }
470
+ }
471
+ else if (Node.isShorthandPropertyAssignment(objProp)) {
472
+ // Shorthand property - would need to infer from context
473
+ const name = objProp.getName();
474
+ props[name] = 'any';
475
+ }
476
+ }
477
+ catch (error) {
478
+ debugError('vueComponentExtractor', 'extractVueProps', {
479
+ filePath,
480
+ error: error instanceof Error ? error.message : String(error),
481
+ context: 'props-runtime-property',
482
+ });
483
+ }
484
+ });
485
+ // Found runtime props, return
486
+ return props;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ }
492
+ catch (error) {
493
+ debugError('vueComponentExtractor', 'extractVueProps', {
494
+ filePath,
495
+ error: error instanceof Error ? error.message : String(error),
496
+ context: 'props-iteration',
497
+ });
498
+ }
499
+ }
500
+ }
501
+ catch (error) {
502
+ debugError('vueComponentExtractor', 'extractVueProps', {
503
+ filePath,
504
+ error: error instanceof Error ? error.message : String(error),
505
+ });
506
+ return {};
507
+ }
508
+ return props;
509
+ }
510
+ /**
511
+ * Extract Vue emits from defineEmits into structured Record<string, EventType>
512
+ * Handles both type-based and runtime emits definitions
513
+ */
514
+ export function extractVueEmits(source) {
515
+ const emits = {};
516
+ const filePath = source.getFilePath?.() ?? 'unknown';
517
+ try {
518
+ const callExpressions = source.getDescendantsOfKind(SyntaxKind.CallExpression);
519
+ for (const callExpr of callExpressions) {
520
+ try {
521
+ const expr = callExpr.getExpression();
522
+ if (expr.getKind() === SyntaxKind.Identifier) {
523
+ const funcName = expr.getText();
524
+ if (funcName === 'defineEmits') {
525
+ // Handle type-based emits: defineEmits<{ (e: 'update', value: string): void }>()
526
+ const typeArgs = callExpr.getTypeArguments();
527
+ if (typeArgs.length > 0) {
528
+ const typeNode = typeArgs[0];
529
+ const typeText = typeNode.getText();
530
+ // Parse the type to extract event names and signatures
531
+ // Type format: { (e: 'eventName', ...args): void, (e: 'anotherEvent'): void }
532
+ try {
533
+ // Use regex to extract event signatures from the type
534
+ const eventMatches = typeText.matchAll(/\(e:\s*['"]([^'"]+)['"]([^)]*)\)\s*:\s*void/g);
535
+ for (const match of eventMatches) {
536
+ const eventName = match[1];
537
+ const args = match[2].trim();
538
+ const signature = args ? `(e: '${eventName}', ${args}) => void` : `(e: '${eventName}') => void`;
539
+ emits[eventName] = {
540
+ type: 'function',
541
+ signature,
542
+ };
543
+ }
544
+ }
545
+ catch (error) {
546
+ debugError('vueComponentExtractor', 'extractVueEmits', {
547
+ filePath,
548
+ error: error instanceof Error ? error.message : String(error),
549
+ context: 'emits-type-parsing',
550
+ });
551
+ }
552
+ // Found type-based emits, return
553
+ return emits;
554
+ }
555
+ // Handle runtime emits: defineEmits(['update', 'close'])
556
+ const args = callExpr.getArguments();
557
+ if (args.length > 0) {
558
+ const arg = args[0];
559
+ if (Node.isArrayLiteralExpression(arg)) {
560
+ arg.getElements().forEach((el) => {
561
+ try {
562
+ if (Node.isStringLiteral(el)) {
563
+ const eventName = el.getText().replace(/['"]/g, '');
564
+ emits[eventName] = {
565
+ type: 'function',
566
+ signature: `(e: '${eventName}') => void`,
567
+ };
568
+ }
569
+ }
570
+ catch (error) {
571
+ debugError('vueComponentExtractor', 'extractVueEmits', {
572
+ filePath,
573
+ error: error instanceof Error ? error.message : String(error),
574
+ context: 'emits-runtime-element',
575
+ });
576
+ }
577
+ });
578
+ // Found runtime emits, return
579
+ return emits;
580
+ }
581
+ }
582
+ }
583
+ }
584
+ }
585
+ catch (error) {
586
+ debugError('vueComponentExtractor', 'extractVueEmits', {
587
+ filePath,
588
+ error: error instanceof Error ? error.message : String(error),
589
+ context: 'emits-iteration',
590
+ });
591
+ }
592
+ }
593
+ }
594
+ catch (error) {
595
+ debugError('vueComponentExtractor', 'extractVueEmits', {
596
+ filePath,
597
+ error: error instanceof Error ? error.message : String(error),
598
+ });
599
+ return {};
600
+ }
601
+ return emits;
602
+ }
603
+ /**
604
+ * Normalize Vue runtime prop types to TypeScript types
605
+ */
606
+ function normalizeVueRuntimeType(vueType) {
607
+ // Map Vue runtime prop types to TypeScript types
608
+ const typeMap = {
609
+ 'String': 'string',
610
+ 'Number': 'number',
611
+ 'Boolean': 'boolean',
612
+ 'Array': 'any[]',
613
+ 'Object': 'object',
614
+ 'Function': 'function',
615
+ 'Date': 'Date',
616
+ };
617
+ // Check if it's a direct match
618
+ if (typeMap[vueType]) {
619
+ return typeMap[vueType];
620
+ }
621
+ // Check if it's an array type: Array as () => String[]
622
+ const arrayMatch = vueType.match(/Array\s*as\s*\(\)\s*=>\s*(\w+)\[\]/);
623
+ if (arrayMatch) {
624
+ const elementType = typeMap[arrayMatch[1]] || 'any';
625
+ return `${elementType}[]`;
626
+ }
627
+ // Return as-is if we can't normalize
628
+ return vueType;
629
+ }
630
+ //# sourceMappingURL=vueComponentExtractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vueComponentExtractor.js","sourceRoot":"","sources":["../../../../src/core/astParser/extractors/vueComponentExtractor.ts"],"names":[],"mappings":"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"}