@vue/compiler-sfc 3.4.0-beta.3 → 3.4.0-rc.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.
@@ -17767,21 +17767,24 @@ class TypeScope {
17767
17767
  this.imports = imports;
17768
17768
  this.types = types;
17769
17769
  this.declares = declares;
17770
+ this.isGenericScope = false;
17770
17771
  this.resolvedImportSources = /* @__PURE__ */ Object.create(null);
17771
17772
  this.exportedTypes = /* @__PURE__ */ Object.create(null);
17772
17773
  this.exportedDeclares = /* @__PURE__ */ Object.create(null);
17773
17774
  }
17774
17775
  }
17775
17776
  function resolveTypeElements(ctx, node, scope, typeParameters) {
17776
- if (node._resolvedElements) {
17777
+ const canCache = !typeParameters;
17778
+ if (canCache && node._resolvedElements) {
17777
17779
  return node._resolvedElements;
17778
17780
  }
17779
- return node._resolvedElements = innerResolveTypeElements(
17781
+ const resolved = innerResolveTypeElements(
17780
17782
  ctx,
17781
17783
  node,
17782
17784
  node._ownerScope || scope || ctxToScope(ctx),
17783
17785
  typeParameters
17784
17786
  );
17787
+ return canCache ? node._resolvedElements = resolved : resolved;
17785
17788
  }
17786
17789
  function innerResolveTypeElements(ctx, node, scope, typeParameters) {
17787
17790
  var _a, _b;
@@ -17832,8 +17835,9 @@ function innerResolveTypeElements(ctx, node, scope, typeParameters) {
17832
17835
  }
17833
17836
  const resolved = resolveTypeReference(ctx, node, scope);
17834
17837
  if (resolved) {
17835
- const typeParams = /* @__PURE__ */ Object.create(null);
17838
+ let typeParams;
17836
17839
  if ((resolved.type === "TSTypeAliasDeclaration" || resolved.type === "TSInterfaceDeclaration") && resolved.typeParameters && node.typeParameters) {
17840
+ typeParams = /* @__PURE__ */ Object.create(null);
17837
17841
  resolved.typeParameters.params.forEach((p, i) => {
17838
17842
  let param = typeParameters && typeParameters[p.name];
17839
17843
  if (!param)
@@ -17922,6 +17926,7 @@ function typeElementsToMap(ctx, elements, scope = ctxToScope(ctx), typeParameter
17922
17926
  if (e.type === "TSPropertySignature" || e.type === "TSMethodSignature") {
17923
17927
  if (typeParameters) {
17924
17928
  scope = createChildScope(scope);
17929
+ scope.isGenericScope = true;
17925
17930
  Object.assign(scope.types, typeParameters);
17926
17931
  }
17927
17932
  e._ownerScope = scope;
@@ -18219,16 +18224,18 @@ function resolveBuiltin(ctx, node, name, scope, typeParameters) {
18219
18224
  }
18220
18225
  }
18221
18226
  function resolveTypeReference(ctx, node, scope, name, onlyExported = false) {
18222
- if (node._resolvedReference) {
18227
+ const canCache = !(scope == null ? void 0 : scope.isGenericScope);
18228
+ if (canCache && node._resolvedReference) {
18223
18229
  return node._resolvedReference;
18224
18230
  }
18225
- return node._resolvedReference = innerResolveTypeReference(
18231
+ const resolved = innerResolveTypeReference(
18226
18232
  ctx,
18227
18233
  scope || ctxToScope(ctx),
18228
18234
  name || getReferenceName(node),
18229
18235
  node,
18230
18236
  onlyExported
18231
18237
  );
18238
+ return canCache ? node._resolvedReference = resolved : resolved;
18232
18239
  }
18233
18240
  function innerResolveTypeReference(ctx, scope, name, node, onlyExported) {
18234
18241
  if (typeof name === "string") {
@@ -20258,6 +20265,7 @@ let __temp${any}, __restore${any}
20258
20265
  }
20259
20266
  const { code, ast, preamble, tips, errors } = compileTemplate({
20260
20267
  filename,
20268
+ ast: sfc.template.ast,
20261
20269
  source: sfc.template.content,
20262
20270
  inMap: sfc.template.map,
20263
20271
  ...options.templateOptions,
@@ -20559,7 +20567,7 @@ function isStaticNode(node) {
20559
20567
  return false;
20560
20568
  }
20561
20569
 
20562
- const version = "3.4.0-beta.3";
20570
+ const version = "3.4.0-rc.1";
20563
20571
  const parseCache = parseCache$1;
20564
20572
  const walk = estreeWalker.walk;
20565
20573
  const shouldTransformRef = () => false;
@@ -432,6 +432,7 @@ declare class TypeScope {
432
432
  types: Record<string, ScopeTypeNode>;
433
433
  declares: Record<string, ScopeTypeNode>;
434
434
  constructor(filename: string, source: string, offset?: number, imports?: Record<string, Import>, types?: Record<string, ScopeTypeNode>, declares?: Record<string, ScopeTypeNode>);
435
+ isGenericScope: boolean;
435
436
  resolvedImportSources: Record<string, string>;
436
437
  exportedTypes: Record<string, ScopeTypeNode>;
437
438
  exportedDeclares: Record<string, ScopeTypeNode>;
@@ -17032,12 +17032,23 @@ function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [
17032
17032
  } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") {
17033
17033
  node.inPattern = true;
17034
17034
  } else if (isFunctionType(node)) {
17035
- walkFunctionParams(node, (id) => markScopeIdentifier(node, id, knownIds));
17035
+ if (node.scopeIds) {
17036
+ node.scopeIds.forEach((id) => markKnownIds(id, knownIds));
17037
+ } else {
17038
+ walkFunctionParams(
17039
+ node,
17040
+ (id) => markScopeIdentifier(node, id, knownIds)
17041
+ );
17042
+ }
17036
17043
  } else if (node.type === "BlockStatement") {
17037
- walkBlockDeclarations(
17038
- node,
17039
- (id) => markScopeIdentifier(node, id, knownIds)
17040
- );
17044
+ if (node.scopeIds) {
17045
+ node.scopeIds.forEach((id) => markKnownIds(id, knownIds));
17046
+ } else {
17047
+ walkBlockDeclarations(
17048
+ node,
17049
+ (id) => markScopeIdentifier(node, id, knownIds)
17050
+ );
17051
+ }
17041
17052
  }
17042
17053
  },
17043
17054
  leave(node, parent) {
@@ -17156,16 +17167,19 @@ function extractIdentifiers$1(param, nodes = []) {
17156
17167
  }
17157
17168
  return nodes;
17158
17169
  }
17159
- function markScopeIdentifier(node, child, knownIds) {
17160
- const { name } = child;
17161
- if (node.scopeIds && node.scopeIds.has(name)) {
17162
- return;
17163
- }
17170
+ function markKnownIds(name, knownIds) {
17164
17171
  if (name in knownIds) {
17165
17172
  knownIds[name]++;
17166
17173
  } else {
17167
17174
  knownIds[name] = 1;
17168
17175
  }
17176
+ }
17177
+ function markScopeIdentifier(node, child, knownIds) {
17178
+ const { name } = child;
17179
+ if (node.scopeIds && node.scopeIds.has(name)) {
17180
+ return;
17181
+ }
17182
+ markKnownIds(name, knownIds);
17169
17183
  (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name);
17170
17184
  }
17171
17185
  const isFunctionType = (node) => {
@@ -17370,7 +17384,7 @@ const isMemberExpressionNode = (path, context) => {
17370
17384
  plugins: context.expressionPlugins
17371
17385
  });
17372
17386
  ret = unwrapTSNode(ret);
17373
- return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier";
17387
+ return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier" && ret.name !== "undefined";
17374
17388
  } catch (e) {
17375
17389
  return false;
17376
17390
  }
@@ -17655,12 +17669,6 @@ const tokenizer$2 = new Tokenizer$1(stack, {
17655
17669
  loc: getLoc(start - 1, end),
17656
17670
  codegenNode: void 0
17657
17671
  };
17658
- if (tokenizer$2.inSFCRoot) {
17659
- currentOpenTag.innerLoc = getLoc(
17660
- end + fastForward(end) + 1,
17661
- end
17662
- );
17663
- }
17664
17672
  },
17665
17673
  onopentagend(end) {
17666
17674
  endOpenTag(end);
@@ -17978,6 +17986,9 @@ function getSlice(start, end) {
17978
17986
  return currentInput.slice(start, end);
17979
17987
  }
17980
17988
  function endOpenTag(end) {
17989
+ if (tokenizer$2.inSFCRoot) {
17990
+ currentOpenTag.innerLoc = getLoc(end + 1, end + 1);
17991
+ }
17981
17992
  addNode(currentOpenTag);
17982
17993
  const { tag, ns } = currentOpenTag;
17983
17994
  if (ns === 0 && currentOptions.isPreTag(tag)) {
@@ -18011,7 +18022,7 @@ function onCloseTag(el, end, isImplied = false) {
18011
18022
  if (isImplied) {
18012
18023
  setLocEnd(el.loc, backTrack(end, 60));
18013
18024
  } else {
18014
- setLocEnd(el.loc, end + fastForward(end) + 1);
18025
+ setLocEnd(el.loc, end + 1);
18015
18026
  }
18016
18027
  if (tokenizer$2.inSFCRoot) {
18017
18028
  if (el.children.length) {
@@ -18048,13 +18059,6 @@ function onCloseTag(el, end, isImplied = false) {
18048
18059
  tokenizer$2.inXML = false;
18049
18060
  }
18050
18061
  }
18051
- function fastForward(start, c) {
18052
- let offset = 0;
18053
- while (currentInput.charCodeAt(start + offset) !== 62 && start + offset < currentInput.length) {
18054
- offset++;
18055
- }
18056
- return offset;
18057
- }
18058
18062
  function backTrack(index, c) {
18059
18063
  let i = index;
18060
18064
  while (currentInput.charCodeAt(i) !== c && i >= 0)
@@ -45823,21 +45827,24 @@ class TypeScope {
45823
45827
  this.imports = imports;
45824
45828
  this.types = types;
45825
45829
  this.declares = declares;
45830
+ this.isGenericScope = false;
45826
45831
  this.resolvedImportSources = /* @__PURE__ */ Object.create(null);
45827
45832
  this.exportedTypes = /* @__PURE__ */ Object.create(null);
45828
45833
  this.exportedDeclares = /* @__PURE__ */ Object.create(null);
45829
45834
  }
45830
45835
  }
45831
45836
  function resolveTypeElements(ctx, node, scope, typeParameters) {
45832
- if (node._resolvedElements) {
45837
+ const canCache = !typeParameters;
45838
+ if (canCache && node._resolvedElements) {
45833
45839
  return node._resolvedElements;
45834
45840
  }
45835
- return node._resolvedElements = innerResolveTypeElements(
45841
+ const resolved = innerResolveTypeElements(
45836
45842
  ctx,
45837
45843
  node,
45838
45844
  node._ownerScope || scope || ctxToScope(ctx),
45839
45845
  typeParameters
45840
45846
  );
45847
+ return canCache ? node._resolvedElements = resolved : resolved;
45841
45848
  }
45842
45849
  function innerResolveTypeElements(ctx, node, scope, typeParameters) {
45843
45850
  var _a, _b;
@@ -45888,8 +45895,9 @@ function innerResolveTypeElements(ctx, node, scope, typeParameters) {
45888
45895
  }
45889
45896
  const resolved = resolveTypeReference(ctx, node, scope);
45890
45897
  if (resolved) {
45891
- const typeParams = /* @__PURE__ */ Object.create(null);
45898
+ let typeParams;
45892
45899
  if ((resolved.type === "TSTypeAliasDeclaration" || resolved.type === "TSInterfaceDeclaration") && resolved.typeParameters && node.typeParameters) {
45900
+ typeParams = /* @__PURE__ */ Object.create(null);
45893
45901
  resolved.typeParameters.params.forEach((p, i) => {
45894
45902
  let param = typeParameters && typeParameters[p.name];
45895
45903
  if (!param)
@@ -45978,6 +45986,7 @@ function typeElementsToMap(ctx, elements, scope = ctxToScope(ctx), typeParameter
45978
45986
  if (e.type === "TSPropertySignature" || e.type === "TSMethodSignature") {
45979
45987
  if (typeParameters) {
45980
45988
  scope = createChildScope(scope);
45989
+ scope.isGenericScope = true;
45981
45990
  Object.assign(scope.types, typeParameters);
45982
45991
  }
45983
45992
  e._ownerScope = scope;
@@ -46274,16 +46283,18 @@ function resolveBuiltin(ctx, node, name, scope, typeParameters) {
46274
46283
  }
46275
46284
  }
46276
46285
  function resolveTypeReference(ctx, node, scope, name, onlyExported = false) {
46277
- if (node._resolvedReference) {
46286
+ const canCache = !(scope == null ? void 0 : scope.isGenericScope);
46287
+ if (canCache && node._resolvedReference) {
46278
46288
  return node._resolvedReference;
46279
46289
  }
46280
- return node._resolvedReference = innerResolveTypeReference(
46290
+ const resolved = innerResolveTypeReference(
46281
46291
  ctx,
46282
46292
  scope || ctxToScope(ctx),
46283
46293
  name || getReferenceName(node),
46284
46294
  node,
46285
46295
  onlyExported
46286
46296
  );
46297
+ return canCache ? node._resolvedReference = resolved : resolved;
46287
46298
  }
46288
46299
  function innerResolveTypeReference(ctx, scope, name, node, onlyExported) {
46289
46300
  if (typeof name === "string") {
@@ -48245,6 +48256,7 @@ let __temp${any}, __restore${any}
48245
48256
  }
48246
48257
  const { code, ast, preamble, tips, errors } = compileTemplate(__spreadProps(__spreadValues({
48247
48258
  filename,
48259
+ ast: sfc.template.ast,
48248
48260
  source: sfc.template.content,
48249
48261
  inMap: sfc.template.map
48250
48262
  }, options.templateOptions), {
@@ -48544,7 +48556,7 @@ function isStaticNode(node) {
48544
48556
  return false;
48545
48557
  }
48546
48558
 
48547
- const version = "3.4.0-beta.3";
48559
+ const version = "3.4.0-rc.1";
48548
48560
  const parseCache = parseCache$1;
48549
48561
  const walk = walk$2;
48550
48562
  const shouldTransformRef = () => false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/compiler-sfc",
3
- "version": "3.4.0-beta.3",
3
+ "version": "3.4.0-rc.1",
4
4
  "description": "@vue/compiler-sfc",
5
5
  "main": "dist/compiler-sfc.cjs.js",
6
6
  "module": "dist/compiler-sfc.esm-browser.js",
@@ -32,18 +32,18 @@
32
32
  },
33
33
  "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-sfc#readme",
34
34
  "dependencies": {
35
- "@babel/parser": "^7.23.5",
35
+ "@babel/parser": "^7.23.6",
36
36
  "estree-walker": "^2.0.2",
37
37
  "magic-string": "^0.30.5",
38
38
  "postcss": "^8.4.32",
39
39
  "source-map-js": "^1.0.2",
40
- "@vue/compiler-dom": "3.4.0-beta.3",
41
- "@vue/compiler-core": "3.4.0-beta.3",
42
- "@vue/shared": "3.4.0-beta.3",
43
- "@vue/compiler-ssr": "3.4.0-beta.3"
40
+ "@vue/compiler-core": "3.4.0-rc.1",
41
+ "@vue/compiler-ssr": "3.4.0-rc.1",
42
+ "@vue/compiler-dom": "3.4.0-rc.1",
43
+ "@vue/shared": "3.4.0-rc.1"
44
44
  },
45
45
  "devDependencies": {
46
- "@babel/types": "^7.23.5",
46
+ "@babel/types": "^7.23.6",
47
47
  "@vue/consolidate": "^0.17.3",
48
48
  "hash-sum": "^2.0.0",
49
49
  "lru-cache": "^10.1.0",