vue-component-meta 2.2.0 → 2.2.2

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 (2) hide show
  1. package/lib/base.js +34 -26
  2. package/package.json +6 -6
package/lib/base.js CHANGED
@@ -99,8 +99,8 @@ function baseCreate(ts, getCommandLine, checkerOptions, rootPath, globalComponen
99
99
  const directoryExists = languageServiceHost.directoryExists?.bind(languageServiceHost);
100
100
  const fileExists = languageServiceHost.fileExists.bind(languageServiceHost);
101
101
  const getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost);
102
- const globalTypesName = `${commandLine.vueOptions.lib}_${commandLine.vueOptions.target}_${commandLine.vueOptions.strictTemplates}.d.ts`;
103
- const globalTypesContents = `// @ts-nocheck\nexport {};\n` + vue.generateGlobalTypes(commandLine.vueOptions.lib, commandLine.vueOptions.target, commandLine.vueOptions.strictTemplates);
102
+ const globalTypesName = vue.getGlobalTypesFileName(commandLine.vueOptions);
103
+ const globalTypesContents = `// @ts-nocheck\nexport {};\n` + vue.generateGlobalTypes(commandLine.vueOptions);
104
104
  const globalTypesSnapshot = {
105
105
  getText: (start, end) => globalTypesContents.slice(start, end),
106
106
  getLength: () => globalTypesContents.length,
@@ -261,13 +261,14 @@ ${commandLine.vueOptions.target < 3 ? vue2_1.code : vue_component_type_helpers_1
261
261
  }
262
262
  // fill defaults
263
263
  const printer = ts.createPrinter(checkerOptions.printer);
264
- const snapshot = language.scripts.get(componentPath)?.snapshot;
265
- const vueFile = language.scripts.get(componentPath)?.generated?.root;
264
+ const sourceScript = language.scripts.get(componentPath);
265
+ const { snapshot } = sourceScript;
266
+ const vueFile = sourceScript.generated?.root;
266
267
  const vueDefaults = vueFile && exportName === 'default'
267
- ? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts, commandLine.vueOptions) : {})
268
+ ? (vueFile instanceof vue.VueVirtualCode ? readVueComponentDefaultProps(vueFile, printer, ts) : {})
268
269
  : {};
269
- const tsDefaults = !vueFile ? readTsComponentDefaultProps(componentPath.slice(componentPath.lastIndexOf('.') + 1), // ts | js | tsx | jsx
270
- snapshot.getText(0, snapshot.getLength()), exportName, printer, ts) : {};
270
+ const tsDefaults = !vueFile ? readTsComponentDefaultProps(ts.createSourceFile('/tmp.' + componentPath.slice(componentPath.lastIndexOf('.') + 1), // ts | js | tsx | jsx
271
+ snapshot.getText(0, snapshot.getLength()), ts.ScriptTarget.Latest), exportName, printer, ts) : {};
271
272
  for (const [propName, defaultExp] of Object.entries({
272
273
  ...vueDefaults,
273
274
  ...tsDefaults,
@@ -528,9 +529,9 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
528
529
  }
529
530
  function getDeclaration(declaration) {
530
531
  const fileName = declaration.getSourceFile().fileName;
531
- const sourceFile = language.scripts.get(fileName);
532
- if (sourceFile?.generated) {
533
- const script = sourceFile.generated.languagePlugin.typescript?.getServiceScript(sourceFile.generated.root);
532
+ const sourceScript = language.scripts.get(fileName);
533
+ if (sourceScript?.generated) {
534
+ const script = sourceScript.generated.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
534
535
  if (script) {
535
536
  for (const [sourceScript, map] of language.maps.forEach(script.code)) {
536
537
  for (const [start] of map.toSourceLocation(declaration.getStart())) {
@@ -558,18 +559,20 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
558
559
  resolveSchema,
559
560
  };
560
561
  }
561
- function readVueComponentDefaultProps(vueSourceFile, printer, ts, vueCompilerOptions) {
562
+ function readVueComponentDefaultProps(root, printer, ts) {
562
563
  let result = {};
563
564
  scriptSetupWorker();
564
565
  scriptWorker();
565
566
  return result;
566
567
  function scriptSetupWorker() {
567
- const descriptor = vueSourceFile._sfc;
568
- const scriptSetupRanges = descriptor.scriptSetup ? vue.parseScriptSetupRanges(ts, descriptor.scriptSetup.ast, vueCompilerOptions) : undefined;
569
- if (descriptor.scriptSetup && scriptSetupRanges?.withDefaults?.arg) {
570
- const defaultsText = descriptor.scriptSetup.content.slice(scriptSetupRanges.withDefaults.arg.start, scriptSetupRanges.withDefaults.arg.end);
571
- const ast = ts.createSourceFile('/tmp.' + descriptor.scriptSetup.lang, '(' + defaultsText + ')', ts.ScriptTarget.Latest);
572
- const obj = findObjectLiteralExpression(ast);
568
+ const ast = root._sfc.scriptSetup?.ast;
569
+ if (!ast) {
570
+ return;
571
+ }
572
+ const codegen = vue.tsCodegen.get(root._sfc);
573
+ const scriptSetupRanges = codegen?.getScriptSetupRanges();
574
+ if (scriptSetupRanges?.withDefaults?.argNode) {
575
+ const obj = findObjectLiteralExpression(scriptSetupRanges.withDefaults.argNode);
573
576
  if (obj) {
574
577
  for (const prop of obj.properties) {
575
578
  if (ts.isPropertyAssignment(prop)) {
@@ -583,10 +586,8 @@ function readVueComponentDefaultProps(vueSourceFile, printer, ts, vueCompilerOpt
583
586
  }
584
587
  }
585
588
  }
586
- else if (descriptor.scriptSetup && scriptSetupRanges?.defineProps?.arg) {
587
- const defaultsText = descriptor.scriptSetup.content.slice(scriptSetupRanges.defineProps.arg.start, scriptSetupRanges.defineProps.arg.end);
588
- const ast = ts.createSourceFile('/tmp.' + descriptor.scriptSetup.lang, '(' + defaultsText + ')', ts.ScriptTarget.Latest);
589
- const obj = findObjectLiteralExpression(ast);
589
+ else if (scriptSetupRanges?.defineProps?.argNode) {
590
+ const obj = findObjectLiteralExpression(scriptSetupRanges.defineProps.argNode);
590
591
  if (obj) {
591
592
  result = {
592
593
  ...result,
@@ -594,6 +595,14 @@ function readVueComponentDefaultProps(vueSourceFile, printer, ts, vueCompilerOpt
594
595
  };
595
596
  }
596
597
  }
598
+ else if (scriptSetupRanges?.defineProps?.destructured) {
599
+ for (const [prop, initializer] of scriptSetupRanges.defineProps.destructured) {
600
+ if (initializer) {
601
+ const expText = printer?.printNode(ts.EmitHint.Expression, initializer, ast) ?? initializer.getText(ast);
602
+ result[prop] = { default: expText };
603
+ }
604
+ }
605
+ }
597
606
  function findObjectLiteralExpression(node) {
598
607
  if (ts.isObjectLiteralExpression(node)) {
599
608
  return node;
@@ -608,17 +617,16 @@ function readVueComponentDefaultProps(vueSourceFile, printer, ts, vueCompilerOpt
608
617
  }
609
618
  }
610
619
  function scriptWorker() {
611
- const descriptor = vueSourceFile._sfc;
612
- if (descriptor.script) {
613
- const scriptResult = readTsComponentDefaultProps(descriptor.script.lang, descriptor.script.content, 'default', printer, ts);
620
+ const sfc = root._sfc;
621
+ if (sfc.script) {
622
+ const scriptResult = readTsComponentDefaultProps(sfc.script.ast, 'default', printer, ts);
614
623
  for (const [key, value] of Object.entries(scriptResult)) {
615
624
  result[key] = value;
616
625
  }
617
626
  }
618
627
  }
619
628
  }
620
- function readTsComponentDefaultProps(lang, tsFileText, exportName, printer, ts) {
621
- const ast = ts.createSourceFile('/tmp.' + lang, tsFileText, ts.ScriptTarget.Latest);
629
+ function readTsComponentDefaultProps(ast, exportName, printer, ts) {
622
630
  const props = getPropsNode();
623
631
  if (props) {
624
632
  return resolvePropsOption(ast, props, printer, ts);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-component-meta",
3
- "version": "2.2.0",
3
+ "version": "2.2.2",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -14,9 +14,9 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@volar/typescript": "~2.4.11",
17
- "@vue/language-core": "2.2.0",
17
+ "@vue/language-core": "2.2.2",
18
18
  "path-browserify": "^1.0.1",
19
- "vue-component-type-helpers": "2.2.0"
19
+ "vue-component-type-helpers": "2.2.2"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "typescript": "*"
@@ -27,8 +27,8 @@
27
27
  }
28
28
  },
29
29
  "devDependencies": {
30
- "@types/node": "latest",
31
- "@types/path-browserify": "latest"
30
+ "@types/node": "^22.10.4",
31
+ "@types/path-browserify": "^1.0.1"
32
32
  },
33
- "gitHead": "5babca774658d4b9afbe877ac7c8cafdaecf2c3e"
33
+ "gitHead": "30757908b67f40f779c36795665163634fb81868"
34
34
  }