vue-component-meta 2.2.2 → 2.2.6

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 +38 -11
  2. package/package.json +4 -4
package/lib/base.js CHANGED
@@ -561,15 +561,16 @@ function createSchemaResolvers(typeChecker, symbolNode, { rawType, schema: optio
561
561
  }
562
562
  function readVueComponentDefaultProps(root, printer, ts) {
563
563
  let result = {};
564
+ const { sfc } = root;
564
565
  scriptSetupWorker();
565
566
  scriptWorker();
566
567
  return result;
567
568
  function scriptSetupWorker() {
568
- const ast = root._sfc.scriptSetup?.ast;
569
- if (!ast) {
569
+ if (!sfc.scriptSetup) {
570
570
  return;
571
571
  }
572
- const codegen = vue.tsCodegen.get(root._sfc);
572
+ const { ast } = sfc.scriptSetup;
573
+ const codegen = vue.tsCodegen.get(sfc);
573
574
  const scriptSetupRanges = codegen?.getScriptSetupRanges();
574
575
  if (scriptSetupRanges?.withDefaults?.argNode) {
575
576
  const obj = findObjectLiteralExpression(scriptSetupRanges.withDefaults.argNode);
@@ -596,10 +597,21 @@ function readVueComponentDefaultProps(root, printer, ts) {
596
597
  }
597
598
  }
598
599
  else if (scriptSetupRanges?.defineProps?.destructured) {
599
- for (const [prop, initializer] of scriptSetupRanges.defineProps.destructured) {
600
+ for (const [name, initializer] of scriptSetupRanges.defineProps.destructured) {
600
601
  if (initializer) {
601
602
  const expText = printer?.printNode(ts.EmitHint.Expression, initializer, ast) ?? initializer.getText(ast);
602
- result[prop] = { default: expText };
603
+ result[name] = {
604
+ default: expText
605
+ };
606
+ }
607
+ }
608
+ }
609
+ if (scriptSetupRanges?.defineProp) {
610
+ for (const defineProp of scriptSetupRanges.defineProp) {
611
+ const obj = defineProp.argNode ? findObjectLiteralExpression(defineProp.argNode) : undefined;
612
+ if (obj) {
613
+ const name = defineProp.name ? sfc.scriptSetup.content.slice(defineProp.name.start, defineProp.name.end).slice(1, -1) : 'modelValue';
614
+ result[name] = resolveModelOption(ast, obj, printer, ts);
603
615
  }
604
616
  }
605
617
  }
@@ -617,12 +629,13 @@ function readVueComponentDefaultProps(root, printer, ts) {
617
629
  }
618
630
  }
619
631
  function scriptWorker() {
620
- const sfc = root._sfc;
621
- if (sfc.script) {
622
- const scriptResult = readTsComponentDefaultProps(sfc.script.ast, 'default', printer, ts);
623
- for (const [key, value] of Object.entries(scriptResult)) {
624
- result[key] = value;
625
- }
632
+ if (!sfc.script) {
633
+ return;
634
+ }
635
+ const { ast } = sfc.script;
636
+ const scriptResult = readTsComponentDefaultProps(ast, 'default', printer, ts);
637
+ for (const [key, value] of Object.entries(scriptResult)) {
638
+ result[key] = value;
626
639
  }
627
640
  }
628
641
  }
@@ -707,6 +720,20 @@ function resolvePropsOption(ast, props, printer, ts) {
707
720
  }
708
721
  return result;
709
722
  }
723
+ function resolveModelOption(ast, options, printer, ts) {
724
+ const result = {};
725
+ for (const prop of options.properties) {
726
+ if (ts.isPropertyAssignment(prop)) {
727
+ const name = prop.name.getText(ast);
728
+ if (name === 'default') {
729
+ const expNode = resolveDefaultOptionExpression(prop.initializer, ts);
730
+ const expText = printer?.printNode(ts.EmitHint.Expression, expNode, ast) ?? expNode.getText(ast);
731
+ result.default = expText;
732
+ }
733
+ }
734
+ }
735
+ return result;
736
+ }
710
737
  function resolveDefaultOptionExpression(_default, ts) {
711
738
  if (ts.isArrowFunction(_default)) {
712
739
  if (ts.isBlock(_default.body)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-component-meta",
3
- "version": "2.2.2",
3
+ "version": "2.2.6",
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.2",
17
+ "@vue/language-core": "2.2.6",
18
18
  "path-browserify": "^1.0.1",
19
- "vue-component-type-helpers": "2.2.2"
19
+ "vue-component-type-helpers": "2.2.6"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "typescript": "*"
@@ -30,5 +30,5 @@
30
30
  "@types/node": "^22.10.4",
31
31
  "@types/path-browserify": "^1.0.1"
32
32
  },
33
- "gitHead": "30757908b67f40f779c36795665163634fb81868"
33
+ "gitHead": "f2088e256dc0220db9549d28d9f865a5711dcfbe"
34
34
  }