@vue/language-core 3.1.3 → 3.1.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/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './lib/parsers/scriptSetupRanges';
6
6
  export * from './lib/plugins';
7
7
  export * from './lib/types';
8
8
  export * from './lib/utils/collectBindings';
9
+ export * from './lib/utils/forEachTemplateNode';
9
10
  export * from './lib/utils/parseSfc';
10
11
  export * from './lib/utils/shared';
11
12
  export * from './lib/virtualFile/vueFile';
package/index.js CHANGED
@@ -23,6 +23,7 @@ __exportStar(require("./lib/parsers/scriptSetupRanges"), exports);
23
23
  __exportStar(require("./lib/plugins"), exports);
24
24
  __exportStar(require("./lib/types"), exports);
25
25
  __exportStar(require("./lib/utils/collectBindings"), exports);
26
+ __exportStar(require("./lib/utils/forEachTemplateNode"), exports);
26
27
  __exportStar(require("./lib/utils/parseSfc"), exports);
27
28
  __exportStar(require("./lib/utils/shared"), exports);
28
29
  __exportStar(require("./lib/virtualFile/vueFile"), exports);
@@ -115,19 +115,26 @@ function* generateExportDefault(options) {
115
115
  yield* (0, src_1.generateSrc)(options.sfc.script.src);
116
116
  return;
117
117
  }
118
- let prefix;
119
- let suffix;
118
+ const expression = `{} as typeof __VLS_export`;
120
119
  if (options.sfc.script && options.scriptRanges?.exportDefault) {
121
120
  const { exportDefault, componentOptions } = options.scriptRanges;
122
- prefix = (0, utils_1.generateSfcBlockSection)(options.sfc.script, exportDefault.start, (componentOptions ?? exportDefault).expression.start, codeFeatures_1.codeFeatures.all);
123
- suffix = (0, utils_1.generateSfcBlockSection)(options.sfc.script, (componentOptions ?? exportDefault).expression.end, options.sfc.script.content.length, codeFeatures_1.codeFeatures.all);
121
+ yield (0, utils_1.generateSfcBlockSection)(options.sfc.script, exportDefault.start, (componentOptions ?? exportDefault).expression.start, codeFeatures_1.codeFeatures.all);
122
+ yield expression;
123
+ yield (0, utils_1.generateSfcBlockSection)(options.sfc.script, (componentOptions ?? exportDefault).expression.end, options.sfc.script.content.length, codeFeatures_1.codeFeatures.all);
124
124
  }
125
125
  else {
126
- prefix = `export default `;
127
- suffix = utils_1.endOfLine;
126
+ yield `export `;
127
+ if (options.sfc.template) {
128
+ for (let i = 0; i < 'template'.length + 1; i++) {
129
+ yield [
130
+ ``,
131
+ 'main',
132
+ options.sfc.template.start + 1 + i,
133
+ i ? { __combineOffset: i } : codeFeatures_1.codeFeatures.navigationWithoutRename,
134
+ ];
135
+ }
136
+ }
137
+ yield `default ${expression}${utils_1.endOfLine}`;
128
138
  }
129
- yield prefix;
130
- yield `{} as typeof __VLS_export`;
131
- yield suffix;
132
139
  }
133
140
  //# sourceMappingURL=index.js.map
@@ -125,8 +125,12 @@ function createTemplateCodegenContext(options, templateAst) {
125
125
  return {
126
126
  ...features,
127
127
  verification: {
128
- shouldReport: () => {
129
- data.expectError.token++;
128
+ shouldReport: (source, code) => {
129
+ if (typeof features.verification !== 'object'
130
+ || !features.verification.shouldReport
131
+ || features.verification.shouldReport(source, code) === true) {
132
+ data.expectError.token++;
133
+ }
130
134
  return false;
131
135
  },
132
136
  },
@@ -1,4 +1,3 @@
1
- import * as CompilerDOM from '@vue/compiler-dom';
2
1
  import type * as ts from 'typescript';
3
2
  import type { Code, Sfc, VueCompilerOptions } from '../../types';
4
3
  export interface TemplateCodegenOptions {
@@ -23,7 +22,7 @@ declare function generate(options: TemplateCodegenOptions): {
23
22
  ignoreError?: boolean;
24
23
  expectError?: {
25
24
  token: number;
26
- node: CompilerDOM.CommentNode;
25
+ node: import("@vue/compiler-dom").CommentNode;
27
26
  };
28
27
  generic?: {
29
28
  content: string;
@@ -54,7 +53,7 @@ declare function generate(options: TemplateCodegenOptions): {
54
53
  }[];
55
54
  emptyClassOffsets: number[];
56
55
  inlayHints: import("../inlayHints").InlayHintInfo[];
57
- bindingAttrLocs: CompilerDOM.SourceLocation[];
56
+ bindingAttrLocs: import("@vue/compiler-dom").SourceLocation[];
58
57
  inheritedAttrVars: Set<string>;
59
58
  templateRefs: Map<string, {
60
59
  typeExp: string;
@@ -65,7 +64,7 @@ declare function generate(options: TemplateCodegenOptions): {
65
64
  used: boolean;
66
65
  } | undefined;
67
66
  singleRootElTypes: string[];
68
- singleRootNodes: Set<CompilerDOM.ElementNode | null>;
67
+ singleRootNodes: Set<import("@vue/compiler-dom").ElementNode | null>;
69
68
  addTemplateRef(name: string, typeExp: string, offset: number): void;
70
69
  accessExternalVariable(name: string, offset?: number): void;
71
70
  hasLocalVariable(name: string): boolean;
@@ -76,7 +75,6 @@ declare function generate(options: TemplateCodegenOptions): {
76
75
  generateHoistVariables(): Generator<string, void, unknown>;
77
76
  generateConditionGuards(): Generator<string, void, unknown>;
78
77
  generateAutoImportCompletion(): Generator<Code>;
79
- enter(node: CompilerDOM.RootNode | CompilerDOM.TemplateChildNode | CompilerDOM.SimpleExpressionNode): boolean;
78
+ enter(node: import("@vue/compiler-dom").RootNode | import("@vue/compiler-dom").TemplateChildNode | import("@vue/compiler-dom").SimpleExpressionNode): boolean;
80
79
  exit(): Generator<Code>;
81
80
  };
82
- export declare function forEachElementNode(node: CompilerDOM.RootNode | CompilerDOM.TemplateChildNode): Generator<CompilerDOM.ElementNode>;
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateTemplate = generate;
4
- exports.forEachElementNode = forEachElementNode;
5
- const CompilerDOM = require("@vue/compiler-dom");
6
4
  const codeFeatures_1 = require("../codeFeatures");
7
5
  const utils_1 = require("../utils");
8
6
  const wrapWith_1 = require("../utils/wrapWith");
@@ -140,37 +138,4 @@ function* generateRootEl(ctx) {
140
138
  yield utils_1.endOfLine;
141
139
  return `__VLS_RootEl`;
142
140
  }
143
- function* forEachElementNode(node) {
144
- if (node.type === CompilerDOM.NodeTypes.ROOT) {
145
- for (const child of node.children) {
146
- yield* forEachElementNode(child);
147
- }
148
- }
149
- else if (node.type === CompilerDOM.NodeTypes.ELEMENT) {
150
- const patchForNode = (0, templateChild_1.getVForNode)(node);
151
- if (patchForNode) {
152
- yield* forEachElementNode(patchForNode);
153
- }
154
- else {
155
- yield node;
156
- for (const child of node.children) {
157
- yield* forEachElementNode(child);
158
- }
159
- }
160
- }
161
- else if (node.type === CompilerDOM.NodeTypes.IF) {
162
- // v-if / v-else-if / v-else
163
- for (const branch of node.branches) {
164
- for (const childNode of branch.children) {
165
- yield* forEachElementNode(childNode);
166
- }
167
- }
168
- }
169
- else if (node.type === CompilerDOM.NodeTypes.FOR) {
170
- // v-for
171
- for (const child of node.children) {
172
- yield* forEachElementNode(child);
173
- }
174
- }
175
- }
176
141
  //# sourceMappingURL=index.js.map
@@ -167,22 +167,15 @@ function getVIfNode(node) {
167
167
  }
168
168
  }
169
169
  function parseInterpolationNode(node, template) {
170
- let content = node.content.loc.source;
171
170
  let start = node.content.loc.start.offset;
172
- let leftCharacter;
173
- let rightCharacter;
171
+ let end = node.content.loc.end.offset;
174
172
  // fix https://github.com/vuejs/language-tools/issues/1787
175
- while ((leftCharacter = template.slice(start - 1, start)).trim() === '' && leftCharacter.length) {
173
+ while (template[start - 1]?.trim() === '') {
176
174
  start--;
177
- content = leftCharacter + content;
178
175
  }
179
- while ((rightCharacter = template.slice(start + content.length, start + content.length + 1)).trim() === ''
180
- && rightCharacter.length) {
181
- content = content + rightCharacter;
176
+ while (template[end]?.trim() === '') {
177
+ end++;
182
178
  }
183
- return [
184
- content,
185
- start,
186
- ];
179
+ return [template.slice(start, end), start];
187
180
  }
188
181
  //# sourceMappingURL=templateChild.js.map
@@ -9,6 +9,10 @@ const elementChildren_1 = require("./elementChildren");
9
9
  const interpolation_1 = require("./interpolation");
10
10
  function* generateVIf(options, ctx, node) {
11
11
  const originalBlockConditionsLength = ctx.blockConditions.length;
12
+ const isFragment = node.codegenNode
13
+ && 'consequent' in node.codegenNode
14
+ && 'tag' in node.codegenNode.consequent
15
+ && node.codegenNode.consequent.tag === CompilerDOM.FRAGMENT;
12
16
  for (let i = 0; i < node.branches.length; i++) {
13
17
  const branch = node.branches[i];
14
18
  if (i === 0) {
@@ -29,7 +33,7 @@ function* generateVIf(options, ctx, node) {
29
33
  yield ` `;
30
34
  }
31
35
  yield `{${utils_1.newLine}`;
32
- yield* (0, elementChildren_1.generateElementChildren)(options, ctx, branch.children, isFragment(node));
36
+ yield* (0, elementChildren_1.generateElementChildren)(options, ctx, branch.children, i !== 0 || isFragment);
33
37
  yield `}${utils_1.newLine}`;
34
38
  if (addedBlockCondition) {
35
39
  ctx.blockConditions[ctx.blockConditions.length - 1] = `!${ctx.blockConditions[ctx.blockConditions.length - 1]}`;
@@ -37,10 +41,4 @@ function* generateVIf(options, ctx, node) {
37
41
  }
38
42
  ctx.blockConditions.length = originalBlockConditionsLength;
39
43
  }
40
- function isFragment(node) {
41
- return node.codegenNode
42
- && 'consequent' in node.codegenNode
43
- && 'tag' in node.codegenNode.consequent
44
- && node.codegenNode.consequent.tag === CompilerDOM.FRAGMENT;
45
- }
46
44
  //# sourceMappingURL=vIf.js.map
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const CompilerDOM = require("@vue/compiler-dom");
4
- const template_1 = require("../codegen/template");
4
+ const forEachTemplateNode_1 = require("../utils/forEachTemplateNode");
5
5
  const shared_1 = require("./shared");
6
6
  const codeFeatures = {
7
7
  ...shared_1.allCodeFeatures,
@@ -28,7 +28,7 @@ const plugin = () => {
28
28
  };
29
29
  exports.default = plugin;
30
30
  function* generate(templateAst) {
31
- for (const node of (0, template_1.forEachElementNode)(templateAst)) {
31
+ for (const node of (0, forEachTemplateNode_1.forEachElementNode)(templateAst)) {
32
32
  for (const prop of node.props) {
33
33
  if (prop.type === CompilerDOM.NodeTypes.DIRECTIVE
34
34
  && prop.name === 'bind'
@@ -0,0 +1,3 @@
1
+ import * as CompilerDOM from '@vue/compiler-dom';
2
+ export declare function forEachElementNode(node: CompilerDOM.RootNode | CompilerDOM.TemplateChildNode): Generator<CompilerDOM.ElementNode>;
3
+ export declare function forEachInterpolationNode(node: CompilerDOM.RootNode | CompilerDOM.TemplateChildNode | CompilerDOM.SimpleExpressionNode): Generator<CompilerDOM.InterpolationNode>;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.forEachElementNode = forEachElementNode;
4
+ exports.forEachInterpolationNode = forEachInterpolationNode;
5
+ const CompilerDOM = require("@vue/compiler-dom");
6
+ function* forEachElementNode(node) {
7
+ if (node.type === CompilerDOM.NodeTypes.ROOT) {
8
+ for (const child of node.children) {
9
+ yield* forEachElementNode(child);
10
+ }
11
+ }
12
+ else if (node.type === CompilerDOM.NodeTypes.ELEMENT) {
13
+ yield node;
14
+ for (const child of node.children) {
15
+ yield* forEachElementNode(child);
16
+ }
17
+ }
18
+ else if (node.type === CompilerDOM.NodeTypes.IF) {
19
+ for (const branch of node.branches) {
20
+ for (const childNode of branch.children) {
21
+ yield* forEachElementNode(childNode);
22
+ }
23
+ }
24
+ }
25
+ else if (node.type === CompilerDOM.NodeTypes.FOR) {
26
+ for (const child of node.children) {
27
+ yield* forEachElementNode(child);
28
+ }
29
+ }
30
+ }
31
+ function* forEachInterpolationNode(node) {
32
+ if (node.type === CompilerDOM.NodeTypes.ROOT) {
33
+ for (const child of node.children) {
34
+ yield* forEachInterpolationNode(child);
35
+ }
36
+ }
37
+ else if (node.type === CompilerDOM.NodeTypes.ELEMENT) {
38
+ for (const child of node.children) {
39
+ yield* forEachInterpolationNode(child);
40
+ }
41
+ }
42
+ else if (node.type === CompilerDOM.NodeTypes.TEXT_CALL) {
43
+ yield* forEachInterpolationNode(node.content);
44
+ }
45
+ else if (node.type === CompilerDOM.NodeTypes.COMPOUND_EXPRESSION) {
46
+ for (const child of node.children) {
47
+ if (typeof child === 'object') {
48
+ yield* forEachInterpolationNode(child);
49
+ }
50
+ }
51
+ }
52
+ else if (node.type === CompilerDOM.NodeTypes.INTERPOLATION) {
53
+ yield node;
54
+ }
55
+ else if (node.type === CompilerDOM.NodeTypes.IF) {
56
+ for (const branch of node.branches) {
57
+ for (const childNode of branch.children) {
58
+ yield* forEachInterpolationNode(childNode);
59
+ }
60
+ }
61
+ }
62
+ else if (node.type === CompilerDOM.NodeTypes.FOR) {
63
+ for (const child of node.children) {
64
+ yield* forEachInterpolationNode(child);
65
+ }
66
+ }
67
+ }
68
+ //# sourceMappingURL=forEachTemplateNode.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/language-core",
3
- "version": "3.1.3",
3
+ "version": "3.1.4",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -36,5 +36,5 @@
36
36
  "optional": true
37
37
  }
38
38
  },
39
- "gitHead": "0d7edee43568f1d90adae6e8fcda0f7f565b3f6a"
39
+ "gitHead": "9670176c727993d16f9224f48406077e20972353"
40
40
  }