@uicontract/parser-vue 0.1.0 → 0.2.1
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 +2 -2
- package/dist/context-extractor.js +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/sfc-visitor.js +1 -0
- package/dist/sfc-visitor.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -37,9 +37,9 @@ Discovered element types: `button`, `a` (link), `input`, `select`, `textarea`, `
|
|
|
37
37
|
|
|
38
38
|
Targets Vue 3 and Nuxt projects. Unexpected syntax produces a `warning` entry rather than throwing, so partial results are always returned.
|
|
39
39
|
|
|
40
|
-
## Part of
|
|
40
|
+
## Part of UI Contracts
|
|
41
41
|
|
|
42
|
-
This package is part of [
|
|
42
|
+
This package is part of [UI Contracts](https://github.com/sherifkozman/uicontract) - making web app UIs machine-readable.
|
|
43
43
|
|
|
44
44
|
## License
|
|
45
45
|
|
|
@@ -64,7 +64,7 @@ export function extractLabel(node) {
|
|
|
64
64
|
textParts.push(trimmed);
|
|
65
65
|
}
|
|
66
66
|
else if (child.type === 5) {
|
|
67
|
-
// InterpolationNode {{ expr }}
|
|
67
|
+
// InterpolationNode {{ expr }} - skip dynamic content
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
if (textParts.length > 0) {
|
|
@@ -102,12 +102,12 @@ export function extractHandler(node) {
|
|
|
102
102
|
if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(content)) {
|
|
103
103
|
return content;
|
|
104
104
|
}
|
|
105
|
-
// Member expression: obj.method
|
|
105
|
+
// Member expression: obj.method - extract last part
|
|
106
106
|
const dotMatch = /\.([a-zA-Z_$][a-zA-Z0-9_$]*)$/.exec(content);
|
|
107
107
|
if (dotMatch?.[1]) {
|
|
108
108
|
return dotMatch[1];
|
|
109
109
|
}
|
|
110
|
-
// Call expression: handleClick()
|
|
110
|
+
// Call expression: handleClick() - extract function name
|
|
111
111
|
const callMatch = /^([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/.exec(content);
|
|
112
112
|
if (callMatch?.[1]) {
|
|
113
113
|
return callMatch[1];
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @uicontract/parser-vue
|
|
2
|
+
* @uicontract/parser-vue - Vue/Nuxt parser for UIC.
|
|
3
3
|
* Implements the Parser interface from @uicontract/core.
|
|
4
4
|
*/
|
|
5
5
|
import type { Parser, DiscoveryResult, ParserOptions } from '@uicontract/core';
|
|
6
|
-
export declare const VERSION = "0.
|
|
6
|
+
export declare const VERSION = "0.2.1";
|
|
7
7
|
/** The Vue/Nuxt parser implementation. */
|
|
8
8
|
export declare class VueParser implements Parser {
|
|
9
9
|
readonly framework = "vue";
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @uicontract/parser-vue
|
|
2
|
+
* @uicontract/parser-vue - Vue/Nuxt parser for UIC.
|
|
3
3
|
* Implements the Parser interface from @uicontract/core.
|
|
4
4
|
*/
|
|
5
5
|
import * as fs from 'node:fs/promises';
|
|
6
6
|
import * as path from 'node:path';
|
|
7
7
|
import { discoverFiles } from './file-discovery.js';
|
|
8
8
|
import { parseVueFile } from './sfc-visitor.js';
|
|
9
|
-
export const VERSION = '0.
|
|
9
|
+
export const VERSION = '0.2.1';
|
|
10
10
|
/** Detect whether a directory likely contains a Vue project. */
|
|
11
11
|
async function detectVue(dir) {
|
|
12
12
|
// Check for package.json with vue or nuxt dependency
|
|
@@ -29,7 +29,7 @@ async function detectVue(dir) {
|
|
|
29
29
|
return true;
|
|
30
30
|
}
|
|
31
31
|
catch {
|
|
32
|
-
// No package.json or unreadable
|
|
32
|
+
// No package.json or unreadable - fall through to file check
|
|
33
33
|
}
|
|
34
34
|
// Fallback: any .vue file present
|
|
35
35
|
try {
|
package/dist/sfc-visitor.js
CHANGED
|
@@ -110,6 +110,7 @@ function processElement(node, elements, filePath, componentName, route, lineOffs
|
|
|
110
110
|
attributes: extractDataAttributes(node),
|
|
111
111
|
conditional: isConditional(node, ancestors),
|
|
112
112
|
dynamic: isDynamic(ancestors),
|
|
113
|
+
directive: null, // Vue SFCs don't use RSC directives
|
|
113
114
|
});
|
|
114
115
|
}
|
|
115
116
|
//# sourceMappingURL=sfc-visitor.js.map
|
package/dist/sfc-visitor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sfc-visitor.js","sourceRoot":"","sources":["../src/sfc-visitor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sfc-visitor.js","sourceRoot":"","sources":["../src/sfc-visitor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uicontract/parser-vue",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Vue and Nuxt parser for discovering interactive UI elements",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"@vue/compiler-dom": "^3.5.0",
|
|
46
|
-
"@uicontract/core": "0.1
|
|
46
|
+
"@uicontract/core": "0.2.1"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "tsc -b",
|