vue-component-meta 3.0.0-beta.2 → 3.0.0-beta.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/lib/base.js +23 -13
- package/package.json +4 -4
package/lib/base.js
CHANGED
|
@@ -32,13 +32,16 @@ function createCheckerBase(ts, tsconfig, checkerOptions = {}) {
|
|
|
32
32
|
}
|
|
33
33
|
function baseCreate(ts, getCommandLine, checkerOptions, rootPath, globalComponentName) {
|
|
34
34
|
let commandLine = getCommandLine();
|
|
35
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Used to lookup if a file is referenced.
|
|
37
|
+
*/
|
|
38
|
+
let fileNames = new Set(commandLine.fileNames.map(path => path.replace(windowsPathReg, '/')));
|
|
36
39
|
let projectVersion = 0;
|
|
37
40
|
const projectHost = {
|
|
38
41
|
getCurrentDirectory: () => rootPath,
|
|
39
42
|
getProjectVersion: () => projectVersion.toString(),
|
|
40
43
|
getCompilationSettings: () => commandLine.options,
|
|
41
|
-
getScriptFileNames: () => fileNames,
|
|
44
|
+
getScriptFileNames: () => [...fileNames],
|
|
42
45
|
getProjectReferences: () => commandLine.projectReferences,
|
|
43
46
|
};
|
|
44
47
|
const globalComponentSnapshot = ts.ScriptSnapshot.fromString('<script setup lang="ts"></script>');
|
|
@@ -146,16 +149,18 @@ function baseCreate(ts, getCommandLine, checkerOptions, rootPath, globalComponen
|
|
|
146
149
|
updateFile(fileName, text) {
|
|
147
150
|
fileName = fileName.replace(windowsPathReg, '/');
|
|
148
151
|
scriptSnapshots.set(fileName, ts.ScriptSnapshot.fromString(text));
|
|
152
|
+
// Ensure the file is referenced
|
|
153
|
+
fileNames.add(fileName);
|
|
149
154
|
projectVersion++;
|
|
150
155
|
},
|
|
151
156
|
deleteFile(fileName) {
|
|
152
157
|
fileName = fileName.replace(windowsPathReg, '/');
|
|
153
|
-
fileNames
|
|
158
|
+
fileNames.delete(fileName);
|
|
154
159
|
projectVersion++;
|
|
155
160
|
},
|
|
156
161
|
reload() {
|
|
157
162
|
commandLine = getCommandLine();
|
|
158
|
-
fileNames = commandLine.fileNames.map(path => path.replace(windowsPathReg, '/'));
|
|
163
|
+
fileNames = new Set(commandLine.fileNames.map(path => path.replace(windowsPathReg, '/')));
|
|
159
164
|
this.clearCache();
|
|
160
165
|
},
|
|
161
166
|
clearCache() {
|
|
@@ -265,8 +270,10 @@ interface ComponentMeta<T> {
|
|
|
265
270
|
const vueDefaults = vueFile && exportName === 'default'
|
|
266
271
|
? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts) : {})
|
|
267
272
|
: {};
|
|
268
|
-
const tsDefaults = !vueFile
|
|
269
|
-
|
|
273
|
+
const tsDefaults = !vueFile
|
|
274
|
+
? readTsComponentDefaultProps(ts.createSourceFile('/tmp.' + componentPath.slice(componentPath.lastIndexOf('.') + 1), // ts | js | tsx | jsx
|
|
275
|
+
snapshot.getText(0, snapshot.getLength()), ts.ScriptTarget.Latest), exportName, printer, ts)
|
|
276
|
+
: {};
|
|
270
277
|
for (const [propName, defaultExp] of Object.entries({
|
|
271
278
|
...vueDefaults,
|
|
272
279
|
...tsDefaults,
|
|
@@ -455,7 +462,8 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
|
|
|
455
462
|
else {
|
|
456
463
|
subtypeStr = '[';
|
|
457
464
|
for (let i = 1; i < call.parameters.length; i++) {
|
|
458
|
-
subtypeStr += getFullyQualifiedName(typeChecker.getTypeOfSymbolAtLocation(call.parameters[i], symbolNode))
|
|
465
|
+
subtypeStr += getFullyQualifiedName(typeChecker.getTypeOfSymbolAtLocation(call.parameters[i], symbolNode))
|
|
466
|
+
+ ', ';
|
|
459
467
|
}
|
|
460
468
|
subtypeStr = subtypeStr.slice(0, -2) + ']';
|
|
461
469
|
getSchema = () => {
|
|
@@ -525,8 +533,9 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
|
|
|
525
533
|
},
|
|
526
534
|
};
|
|
527
535
|
}
|
|
528
|
-
else if (subtype.getCallSignatures().length === 0
|
|
529
|
-
(subtype.isClassOrInterface() || subtype.isIntersection()
|
|
536
|
+
else if (subtype.getCallSignatures().length === 0
|
|
537
|
+
&& (subtype.isClassOrInterface() || subtype.isIntersection()
|
|
538
|
+
|| subtype.objectFlags & ts.ObjectFlags.Anonymous)) {
|
|
530
539
|
let schema;
|
|
531
540
|
return {
|
|
532
541
|
kind: 'object',
|
|
@@ -628,7 +637,7 @@ function readVueComponentDefaultProps(root, printer, ts) {
|
|
|
628
637
|
if (initializer) {
|
|
629
638
|
const expText = printer?.printNode(ts.EmitHint.Expression, initializer, ast) ?? initializer.getText(ast);
|
|
630
639
|
result[name] = {
|
|
631
|
-
default: expText
|
|
640
|
+
default: expText,
|
|
632
641
|
};
|
|
633
642
|
}
|
|
634
643
|
}
|
|
@@ -637,7 +646,9 @@ function readVueComponentDefaultProps(root, printer, ts) {
|
|
|
637
646
|
for (const defineModel of scriptSetupRanges.defineModel) {
|
|
638
647
|
const obj = defineModel.argNode ? findObjectLiteralExpression(defineModel.argNode) : undefined;
|
|
639
648
|
if (obj) {
|
|
640
|
-
const name = defineModel.name
|
|
649
|
+
const name = defineModel.name
|
|
650
|
+
? sfc.scriptSetup.content.slice(defineModel.name.start, defineModel.name.end).slice(1, -1)
|
|
651
|
+
: 'modelValue';
|
|
641
652
|
result[name] = resolveModelOption(ast, obj, printer, ts);
|
|
642
653
|
}
|
|
643
654
|
}
|
|
@@ -701,8 +712,7 @@ function readTsComponentDefaultProps(ast, exportName, printer, ts) {
|
|
|
701
712
|
// export default { ... }
|
|
702
713
|
if (ts.isObjectLiteralExpression(component)) {
|
|
703
714
|
return component;
|
|
704
|
-
}
|
|
705
|
-
// export default defineComponent({ ... })
|
|
715
|
+
} // export default defineComponent({ ... })
|
|
706
716
|
else if (ts.isCallExpression(component)) {
|
|
707
717
|
if (component.arguments.length) {
|
|
708
718
|
const arg = component.arguments[0];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vue-component-meta",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"directory": "packages/component-meta"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@volar/typescript": "2.4.
|
|
17
|
-
"@vue/language-core": "3.0.0-beta.
|
|
16
|
+
"@volar/typescript": "2.4.15",
|
|
17
|
+
"@vue/language-core": "3.0.0-beta.4",
|
|
18
18
|
"path-browserify": "^1.0.1"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
@@ -26,5 +26,5 @@
|
|
|
26
26
|
"@types/path-browserify": "^1.0.1",
|
|
27
27
|
"vue-component-type-helpers": "3.0.0-beta.1"
|
|
28
28
|
},
|
|
29
|
-
"gitHead": "
|
|
29
|
+
"gitHead": "5cb41faacbfe2d9e2d64637c6c1ae8769d9cba3f"
|
|
30
30
|
}
|