logicstamp-context 0.3.3 → 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.
- package/LLM_CONTEXT.md +2 -2
- package/README.md +29 -31
- package/dist/core/astParser/detectors.d.ts.map +1 -1
- package/dist/core/astParser/detectors.js +141 -0
- package/dist/core/astParser/detectors.js.map +1 -1
- package/dist/core/astParser/extractors/vueComponentExtractor.d.ts +38 -0
- package/dist/core/astParser/extractors/vueComponentExtractor.d.ts.map +1 -0
- package/dist/core/astParser/extractors/vueComponentExtractor.js +630 -0
- package/dist/core/astParser/extractors/vueComponentExtractor.js.map +1 -0
- package/dist/core/astParser.d.ts.map +1 -1
- package/dist/core/astParser.js +23 -5
- package/dist/core/astParser.js.map +1 -1
- package/dist/types/UIFContract.d.ts +1 -1
- package/dist/types/UIFContract.d.ts.map +1 -1
- package/package.json +2 -2
- package/schema/logicstamp.context.schema.json +1 -1
package/LLM_CONTEXT.md
CHANGED
|
@@ -87,7 +87,7 @@ The `context_main.json` file serves as a directory index:
|
|
|
87
87
|
}
|
|
88
88
|
],
|
|
89
89
|
"meta": {
|
|
90
|
-
"source": "logicstamp-context@0.3.
|
|
90
|
+
"source": "logicstamp-context@0.3.4"
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
```
|
|
@@ -110,7 +110,7 @@ Each folder's `context.json` contains an array of LogicStamp bundles. Each bundl
|
|
|
110
110
|
- `graph.edges` lists dependency relationships between nodes (empty when analysis depth is 1).
|
|
111
111
|
- `meta` section contains two critical fields:
|
|
112
112
|
- `missing`: Array of unresolved dependencies. Each entry includes `name` (import path), `reason` (why it failed), and `referencedBy` (source component). Empty array indicates complete dependency resolution.
|
|
113
|
-
- `source`: Generator version string (e.g., `"logicstamp-context@0.3.
|
|
113
|
+
- `source`: Generator version string (e.g., `"logicstamp-context@0.3.4"`) for compatibility tracking.
|
|
114
114
|
- Example bundle skeleton:
|
|
115
115
|
|
|
116
116
|
```
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
<br/>
|
|
7
7
|
|
|
8
|
-

|
|
9
9
|

|
|
10
10
|

|
|
11
11
|

|
|
@@ -13,8 +13,10 @@
|
|
|
13
13
|
|
|
14
14
|
<br/>
|
|
15
15
|
|
|
16
|
-
**A
|
|
17
|
-
|
|
16
|
+
**A CLI that compiles React, Next.js, Vue, and TypeScript codebases into structured context bundles for AI and CI.**
|
|
17
|
+
|
|
18
|
+
**Fast, deterministic, zero-config.**
|
|
19
|
+
<br/>
|
|
18
20
|
</div>
|
|
19
21
|
|
|
20
22
|

|
|
@@ -46,13 +48,13 @@ stamp context
|
|
|
46
48
|
|
|
47
49
|
> **ℹ️** If you see `"PRIVATE_DATA"` in output, see the **Security** section below.
|
|
48
50
|
|
|
49
|
-
> **Note:** This is a beta release (v0.3.
|
|
51
|
+
> **Note:** This is a beta release (v0.3.4). We're actively improving the tool based on user feedback. If you encounter any issues or have suggestions, please [open an issue on GitHub](https://github.com/LogicStamp/logicstamp-context/issues).
|
|
50
52
|
|
|
51
53
|
## Why LogicStamp?
|
|
52
54
|
|
|
53
|
-
LLMs
|
|
55
|
+
LLMs can reason about your project structure without scanning raw source files.
|
|
54
56
|
|
|
55
|
-
-
|
|
57
|
+
- **Up to 70% token savings** vs raw source
|
|
56
58
|
- **Deterministic, structured contracts** that help AI avoid hallucinations by only referencing the true architecture
|
|
57
59
|
- **🔒 Built-in security** - automatic secret detection and sanitization in generated context files
|
|
58
60
|
- **Perfect for Cursor/Claude/GitHub Copilot Chat** — share context files for instant codebase understanding
|
|
@@ -61,9 +63,10 @@ LLMs understand your project instantly - without scanning 10,000+ lines of code
|
|
|
61
63
|
## Features
|
|
62
64
|
|
|
63
65
|
- **AI-ready bundles** - predictable, structured, deterministic
|
|
64
|
-
- **React/TypeScript awareness** - props, hooks, state, deps
|
|
66
|
+
- **React/Next.js/Vue/TypeScript awareness** - props, hooks/composables, state, deps
|
|
65
67
|
- **Style metadata** - (Tailwind, SCSS, MUI, shadcn)
|
|
66
68
|
- **Next.js App Router detection** - (client/server, layout/page/etc)
|
|
69
|
+
- **Vue 3 Composition API** - (ref, reactive, computed, composables) *Note: Works with `.ts`/`.tsx` files only, not `.vue` SFC files*
|
|
67
70
|
- **Dependency graph** - (imports, cycles, missing deps)
|
|
68
71
|
- **Per-folder bundles** - organized by your project structure
|
|
69
72
|
- **CI validation** - (drift detection, schema validation)
|
|
@@ -72,6 +75,21 @@ LLMs understand your project instantly - without scanning 10,000+ lines of code
|
|
|
72
75
|
- **Fast, zero-config** - works out of the box
|
|
73
76
|
- **MCP-ready** - AI agents can consume context bundles via a standardized MCP interface
|
|
74
77
|
|
|
78
|
+
## MCP Server
|
|
79
|
+
|
|
80
|
+
For AI assistants with MCP support (Claude Desktop, Cursor, etc.):
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm install -g logicstamp-mcp
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Then configure your AI assistant to use the LogicStamp MCP Server to analyze your project.
|
|
87
|
+
|
|
88
|
+

|
|
89
|
+
*MCP server calling the CLI to generate and consume context bundles*
|
|
90
|
+
|
|
91
|
+
📋 **See [MCP Getting Started Guide](https://logicstamp.dev/docs/mcp/getting-started) for detailed installation instructions for Claude Code, Claude Desktop, Cursor, and other MCP clients.**
|
|
92
|
+
|
|
75
93
|
## Example Output
|
|
76
94
|
|
|
77
95
|
LogicStamp Context generates structured JSON contracts for each component:
|
|
@@ -109,28 +127,6 @@ After installation, the `stamp` command will be available globally.
|
|
|
109
127
|
- **Local install**: `npm install logicstamp-context` → only available in that project
|
|
110
128
|
- **Global install**: `npm install -g logicstamp-context` → available everywhere via `stamp` command
|
|
111
129
|
|
|
112
|
-
## Recent Updates
|
|
113
|
-
|
|
114
|
-
**v0.3.3**
|
|
115
|
-
|
|
116
|
-
- **TOON output format support** – Added new `--format toon` option to generate context bundles in TOON format, expanding output options beyond JSON, pretty, and NDJSON.
|
|
117
|
-
|
|
118
|
-
- **Improved Node.js 18 compatibility** – Adjusted `glob` to a Node 18–compatible version while retaining the latest security fixes.
|
|
119
|
-
|
|
120
|
-
- **Updated Node.js requirement** – Clarified minimum supported Node.js version to **>= 18.18.0**.
|
|
121
|
-
|
|
122
|
-
- **Dev dependency updates** – Updated development dependencies to the latest patch versions.
|
|
123
|
-
|
|
124
|
-
- **Documentation improvements** – Improved README clarity and formatting consistency, and clarified what is detected vs extracted across framework documentation.
|
|
125
|
-
|
|
126
|
-
**v0.3.X** (0.3.0 - 0.3.2)
|
|
127
|
-
- **Security features** - Security scan runs by default, automatic secret sanitization, improved default security posture
|
|
128
|
-
- **Improved portability** - Context files now use relative paths instead of absolute paths (see [Migration Guide](docs/MIGRATION_0.3.2.md))
|
|
129
|
-
- **Enhanced parsing** - CSS/SCSS parsing migrated to AST-based parser, improved hook classification accuracy
|
|
130
|
-
- **Security updates** - Addressed CVE-2025-64756 and other security patches
|
|
131
|
-
|
|
132
|
-
📋 **Full history → [CHANGELOG.md](https://github.com/LogicStamp/logicstamp-context/blob/main/CHANGELOG.md)**
|
|
133
|
-
|
|
134
130
|
## Security
|
|
135
131
|
|
|
136
132
|
**Automatic Secret Protection (v0.3.0+)**
|
|
@@ -224,7 +220,7 @@ See the full list here: [docs/limitations.md](https://github.com/LogicStamp/logi
|
|
|
224
220
|
## How it Works
|
|
225
221
|
|
|
226
222
|
1. **Scan**: Finds all `.ts` and `.tsx` files in your project
|
|
227
|
-
2. **Analyze**: Parses React components using TypeScript AST
|
|
223
|
+
2. **Analyze**: Parses React/Vue components using TypeScript AST
|
|
228
224
|
3. **Extract**: Builds component contracts with structure and signatures
|
|
229
225
|
4. **Graph**: Creates dependency graph showing relationships
|
|
230
226
|
5. **Bundle**: Packages context bundles optimized for AI consumption
|
|
@@ -236,7 +232,7 @@ All in one command, no pre-compilation needed!
|
|
|
236
232
|
## Requirements
|
|
237
233
|
|
|
238
234
|
- Node.js >= 18.18.0 (**Node 20+ recommended**)
|
|
239
|
-
- TypeScript
|
|
235
|
+
- TypeScript codebase (React, Next.js or Vue)
|
|
240
236
|
|
|
241
237
|
## License
|
|
242
238
|
|
|
@@ -262,4 +258,6 @@ Issues and PRs welcome! This is an open-source project.
|
|
|
262
258
|
|
|
263
259
|
- [LogicStamp Main Project](https://logicstamp.dev)
|
|
264
260
|
- [GitHub Repository](https://github.com/LogicStamp/logicstamp-context)
|
|
261
|
+
- [MCP Server Repository](https://github.com/LogicStamp/logicstamp-mcp)
|
|
262
|
+
- [Changelog](https://github.com/LogicStamp/logicstamp-context/blob/main/CHANGELOG.md)
|
|
265
263
|
- [Report Issues](https://github.com/LogicStamp/logicstamp-context/issues)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectors.d.ts","sourceRoot":"","sources":["../../../src/core/astParser/detectors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAqE,MAAM,UAAU,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG/E;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAmDzF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAuBtG;
|
|
1
|
+
{"version":3,"file":"detectors.d.ts","sourceRoot":"","sources":["../../../src/core/astParser/detectors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAqE,MAAM,UAAU,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAG/E;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAmDzF;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAuBtG;AAiND;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GACjB,YAAY,CAqId"}
|
|
@@ -89,6 +89,122 @@ export function extractNextJsMetadata(source, filePath) {
|
|
|
89
89
|
}
|
|
90
90
|
return undefined;
|
|
91
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Check if the main export is a Vue composable function (starts with "use")
|
|
94
|
+
*/
|
|
95
|
+
function isMainExportAVueComposable(source, imports) {
|
|
96
|
+
// Must have Vue imports
|
|
97
|
+
const hasVueImport = imports.some(imp => imp === 'vue' || imp.startsWith('vue/'));
|
|
98
|
+
if (!hasVueImport)
|
|
99
|
+
return false;
|
|
100
|
+
try {
|
|
101
|
+
const statements = source.getStatements();
|
|
102
|
+
for (const stmt of statements) {
|
|
103
|
+
const kind = stmt.getKind();
|
|
104
|
+
const modifiers = stmt.getModifiers?.() || [];
|
|
105
|
+
let hasExport = false;
|
|
106
|
+
let isDefault = false;
|
|
107
|
+
for (const mod of modifiers) {
|
|
108
|
+
const modKind = mod.getKind();
|
|
109
|
+
if (modKind === SyntaxKind.ExportKeyword)
|
|
110
|
+
hasExport = true;
|
|
111
|
+
if (modKind === SyntaxKind.DefaultKeyword)
|
|
112
|
+
isDefault = true;
|
|
113
|
+
}
|
|
114
|
+
// Check default export first (highest priority)
|
|
115
|
+
if (isDefault && hasExport) {
|
|
116
|
+
if (kind === SyntaxKind.FunctionDeclaration) {
|
|
117
|
+
const func = stmt;
|
|
118
|
+
const name = func.getName();
|
|
119
|
+
if (name && /^use[A-Z]/.test(name)) {
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (kind === SyntaxKind.VariableStatement) {
|
|
124
|
+
const varStmt = stmt;
|
|
125
|
+
const declarations = varStmt.getDeclarationList().getDeclarations();
|
|
126
|
+
for (const decl of declarations) {
|
|
127
|
+
const name = decl.getName();
|
|
128
|
+
const initializer = decl.getInitializer();
|
|
129
|
+
if (name && /^use[A-Z]/.test(name)) {
|
|
130
|
+
if (initializer && (initializer.getKind() === SyntaxKind.ArrowFunction ||
|
|
131
|
+
initializer.getKind() === SyntaxKind.FunctionExpression)) {
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Check named exports
|
|
139
|
+
if (hasExport && !isDefault) {
|
|
140
|
+
if (kind === SyntaxKind.FunctionDeclaration) {
|
|
141
|
+
const func = stmt;
|
|
142
|
+
const name = func.getName();
|
|
143
|
+
if (name && /^use[A-Z]/.test(name)) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else if (kind === SyntaxKind.VariableStatement) {
|
|
148
|
+
const varStmt = stmt;
|
|
149
|
+
const declarations = varStmt.getDeclarationList().getDeclarations();
|
|
150
|
+
for (const decl of declarations) {
|
|
151
|
+
const name = decl.getName();
|
|
152
|
+
const initializer = decl.getInitializer();
|
|
153
|
+
if (name && /^use[A-Z]/.test(name)) {
|
|
154
|
+
if (initializer && (initializer.getKind() === SyntaxKind.ArrowFunction ||
|
|
155
|
+
initializer.getKind() === SyntaxKind.FunctionExpression)) {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Check if file has Vue composables (ref, reactive, etc.)
|
|
171
|
+
*/
|
|
172
|
+
function hasVueComposables(source) {
|
|
173
|
+
try {
|
|
174
|
+
const sourceText = source.getFullText();
|
|
175
|
+
// Check for common Vue composables
|
|
176
|
+
const vueComposablePatterns = [
|
|
177
|
+
/\bref\s*\(/,
|
|
178
|
+
/\breactive\s*\(/,
|
|
179
|
+
/\bcomputed\s*\(/,
|
|
180
|
+
/\bwatch\s*\(/,
|
|
181
|
+
/\bwatchEffect\s*\(/,
|
|
182
|
+
/\bonMounted\s*\(/,
|
|
183
|
+
/\bonUnmounted\s*\(/,
|
|
184
|
+
/\bdefineProps\s*[(<]/,
|
|
185
|
+
/\bdefineEmits\s*[(<]/,
|
|
186
|
+
];
|
|
187
|
+
return vueComposablePatterns.some(pattern => pattern.test(sourceText));
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if file has Vue component registration
|
|
195
|
+
*/
|
|
196
|
+
function hasVueComponentRegistration(source) {
|
|
197
|
+
try {
|
|
198
|
+
const sourceText = source.getFullText();
|
|
199
|
+
// Check for defineComponent, component registration, or SFC script setup
|
|
200
|
+
return /defineComponent\s*\(/.test(sourceText) ||
|
|
201
|
+
/components\s*:\s*\{/.test(sourceText) ||
|
|
202
|
+
/<script\s+setup/.test(sourceText);
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
92
208
|
/**
|
|
93
209
|
* Check if the main export is a hook function (starts with "use")
|
|
94
210
|
*/
|
|
@@ -171,6 +287,31 @@ function isMainExportAHook(source) {
|
|
|
171
287
|
export function detectKind(hooks, components, imports, filePath, source) {
|
|
172
288
|
const resolvedPath = source.getFilePath?.() ?? filePath;
|
|
173
289
|
try {
|
|
290
|
+
// Vue detection (highest priority after hooks)
|
|
291
|
+
const hasVueImport = imports.some(imp => imp === 'vue' || imp.startsWith('vue/'));
|
|
292
|
+
if (hasVueImport) {
|
|
293
|
+
// Check if main export is a Vue composable
|
|
294
|
+
const mainExportIsVueComposable = isMainExportAVueComposable(source, imports);
|
|
295
|
+
if (mainExportIsVueComposable && components.length === 0) {
|
|
296
|
+
// Double-check: no JSX elements in the file
|
|
297
|
+
try {
|
|
298
|
+
const hasJsxElements = source.getDescendantsOfKind(SyntaxKind.JsxElement).length > 0 ||
|
|
299
|
+
source.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).length > 0 ||
|
|
300
|
+
source.getDescendantsOfKind(SyntaxKind.JsxFragment).length > 0;
|
|
301
|
+
if (!hasJsxElements) {
|
|
302
|
+
return 'vue:composable';
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
// If JSX check fails, still classify as composable if main export is composable
|
|
307
|
+
return 'vue:composable';
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Check for Vue component patterns
|
|
311
|
+
if (hasVueComposables(source) || hasVueComponentRegistration(source) || components.length > 0) {
|
|
312
|
+
return 'vue:component';
|
|
313
|
+
}
|
|
314
|
+
}
|
|
174
315
|
// Check if main export is a hook BEFORE checking for components
|
|
175
316
|
// This ensures hook files are classified correctly even if they use hooks internally
|
|
176
317
|
const mainExportIsHook = isMainExportAHook(source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../src/core/astParser/detectors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"detectors.js","sourceRoot":"","sources":["../../../src/core/astParser/detectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue Component Extractor - Extracts Vue composables, components, and reactive state from AST
|
|
3
|
+
*/
|
|
4
|
+
import { SourceFile } from 'ts-morph';
|
|
5
|
+
import type { PropType, EventType } from '../../../types/UIFContract.js';
|
|
6
|
+
/**
|
|
7
|
+
* Extract all Vue composables (ref, computed, custom composables)
|
|
8
|
+
* Matches the pattern: useXxx or Vue's built-in composables
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractVueComposables(source: SourceFile): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Extract all components used in Vue templates or JSX
|
|
13
|
+
* Handles both PascalCase components and kebab-case components
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractVueComponents(source: SourceFile): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Extract Vue reactive state (ref, reactive, computed)
|
|
18
|
+
*/
|
|
19
|
+
export declare function extractVueState(source: SourceFile): Record<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* Extract Vue props (from defineProps)
|
|
22
|
+
*/
|
|
23
|
+
export declare function extractVuePropsCall(source: SourceFile): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Extract Vue emits (from defineEmits)
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractVueEmitsCall(source: SourceFile): string[];
|
|
28
|
+
/**
|
|
29
|
+
* Extract Vue props from defineProps into structured Record<string, PropType>
|
|
30
|
+
* Handles both type-based and runtime props definitions
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractVueProps(source: SourceFile): Record<string, PropType>;
|
|
33
|
+
/**
|
|
34
|
+
* Extract Vue emits from defineEmits into structured Record<string, EventType>
|
|
35
|
+
* Handles both type-based and runtime emits definitions
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractVueEmits(source: SourceFile): Record<string, EventType>;
|
|
38
|
+
//# sourceMappingURL=vueComponentExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vueComponentExtractor.d.ts","sourceRoot":"","sources":["../../../../src/core/astParser/extractors/vueComponentExtractor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAIzE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAiDlE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CA6IjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2D1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CA4CrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE,CAqDhE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAkJ5E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CA6F7E"}
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astParser.d.ts","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"astParser.d.ts","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAiBjI,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAuBD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoF3E;AAkKD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,UAAU,GAAG,cAAc,CAM1E"}
|
package/dist/core/astParser.js
CHANGED
|
@@ -33,6 +33,7 @@ import { extractProps } from './astParser/extractors/propExtractor.js';
|
|
|
33
33
|
import { extractState, extractVariables } from './astParser/extractors/stateExtractor.js';
|
|
34
34
|
import { extractEvents, extractJsxRoutes } from './astParser/extractors/eventExtractor.js';
|
|
35
35
|
import { detectKind, extractNextJsMetadata } from './astParser/detectors.js';
|
|
36
|
+
import { extractVueComposables, extractVueComponents, extractVueState, extractVueProps, extractVueEmits } from './astParser/extractors/vueComponentExtractor.js';
|
|
36
37
|
/**
|
|
37
38
|
* Safe extraction wrapper that catches errors and logs them
|
|
38
39
|
*/
|
|
@@ -65,15 +66,32 @@ export async function extractFromFile(filePath) {
|
|
|
65
66
|
const source = project.addSourceFileAtPath(filePath);
|
|
66
67
|
const resolvedPath = source.getFilePath?.() ?? filePath;
|
|
67
68
|
// Extract basic data first - wrap each extraction in try-catch for resilience
|
|
68
|
-
const hooks = safeExtract('hooks', resolvedPath, () => extractHooks(source), []);
|
|
69
|
-
const components = safeExtract('components', resolvedPath, () => extractComponents(source), []);
|
|
70
69
|
const imports = safeExtract('imports', resolvedPath, () => extractImports(source), []);
|
|
70
|
+
// Check if this is a Vue file
|
|
71
|
+
const hasVueImport = imports.some(imp => imp === 'vue' || imp.startsWith('vue/'));
|
|
72
|
+
// Extract hooks and components (use Vue extractors if Vue file, otherwise React)
|
|
73
|
+
let hooks;
|
|
74
|
+
let components;
|
|
75
|
+
let state;
|
|
76
|
+
let props;
|
|
77
|
+
let emits;
|
|
78
|
+
if (hasVueImport) {
|
|
79
|
+
hooks = safeExtract('vue-composables', resolvedPath, () => extractVueComposables(source), []);
|
|
80
|
+
components = safeExtract('vue-components', resolvedPath, () => extractVueComponents(source), []);
|
|
81
|
+
state = safeExtract('vue-state', resolvedPath, () => extractVueState(source), {});
|
|
82
|
+
props = safeExtract('vue-props', resolvedPath, () => extractVueProps(source), {});
|
|
83
|
+
emits = safeExtract('vue-emits', resolvedPath, () => extractVueEmits(source), {});
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
hooks = safeExtract('hooks', resolvedPath, () => extractHooks(source), []);
|
|
87
|
+
components = safeExtract('components', resolvedPath, () => extractComponents(source), []);
|
|
88
|
+
state = safeExtract('state', resolvedPath, () => extractState(source), {});
|
|
89
|
+
props = safeExtract('props', resolvedPath, () => extractProps(source), {});
|
|
90
|
+
emits = safeExtract('events', resolvedPath, () => extractEvents(source), {});
|
|
91
|
+
}
|
|
71
92
|
const nextjs = safeExtract('nextjs', resolvedPath, () => extractNextJsMetadata(source, filePath), undefined);
|
|
72
93
|
const variables = safeExtract('variables', resolvedPath, () => extractVariables(source), []);
|
|
73
94
|
const functions = safeExtract('functions', resolvedPath, () => extractFunctions(source), []);
|
|
74
|
-
const props = safeExtract('props', resolvedPath, () => extractProps(source), {});
|
|
75
|
-
const state = safeExtract('state', resolvedPath, () => extractState(source), {});
|
|
76
|
-
const emits = safeExtract('events', resolvedPath, () => extractEvents(source), {});
|
|
77
95
|
const jsxRoutes = safeExtract('jsxRoutes', resolvedPath, () => extractJsxRoutes(source), []);
|
|
78
96
|
const kind = safeExtract('kind', resolvedPath, () => detectKind(hooks, components, imports, filePath, source), 'ts:module');
|
|
79
97
|
const { exports: exportMetadata, exportedFunctions } = safeExtract('exports', resolvedPath, () => extractExports(source), { exports: undefined, exportedFunctions: [] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,UAAU,EAAc,IAAI,EAA+E,MAAM,UAAU,CAAC;AAE9I,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"astParser.js","sourceRoot":"","sources":["../../src/core/astParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* Schema version 0.3
|
|
28
28
|
*/
|
|
29
29
|
export type ContractPreset = 'submit-only' | 'nav-only' | 'display-only' | 'none';
|
|
30
|
-
export type ContractKind = 'react:component' | 'react:hook' | 'ts:module' | 'node:cli';
|
|
30
|
+
export type ContractKind = 'react:component' | 'react:hook' | 'vue:component' | 'vue:composable' | 'ts:module' | 'node:cli';
|
|
31
31
|
export interface ComponentVersion {
|
|
32
32
|
variables: string[];
|
|
33
33
|
hooks: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UIFContract.d.ts","sourceRoot":"","sources":["../../src/types/UIFContract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;GAGG;AAEH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,GAAG,MAAM,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"UIFContract.d.ts","sourceRoot":"","sources":["../../src/types/UIFContract.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "logicstamp-context",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "Generate AI-friendly context bundles from React codebases with LogicStamp contracts",
|
|
3
|
+
"version": "0.3.4",
|
|
4
|
+
"description": "Generate AI-friendly context bundles from React/Next.js/Vue/TypeScript codebases with LogicStamp contracts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"source": {
|
|
118
118
|
"type": "string",
|
|
119
119
|
"pattern": "^logicstamp-context@\\d+\\.\\d+\\.\\d+$",
|
|
120
|
-
"description": "Generator identifier with version (e.g., 'logicstamp-context@0.3.
|
|
120
|
+
"description": "Generator identifier with version (e.g., 'logicstamp-context@0.3.4'). Used for compatibility tracking and debugging."
|
|
121
121
|
}
|
|
122
122
|
},
|
|
123
123
|
"additionalProperties": false
|