@vue/compiler-sfc 3.5.16 → 3.5.17

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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-sfc v3.5.16
2
+ * @vue/compiler-sfc v3.5.17
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -12416,7 +12416,7 @@ function requireLodash_camelcase () {
12416
12416
  function castSlice(array, start, end) {
12417
12417
  var length = array.length;
12418
12418
  end = end === undefined ? length : end;
12419
- return (false && end >= length) ? array : baseSlice(array, start, end);
12419
+ return (!start && end >= length) ? array : baseSlice(array, start, end);
12420
12420
  }
12421
12421
 
12422
12422
  /**
@@ -19923,289 +19923,250 @@ export default ${defaultVar}`;
19923
19923
  }
19924
19924
  }
19925
19925
 
19926
- var balancedMatch;
19927
- var hasRequiredBalancedMatch;
19928
-
19929
- function requireBalancedMatch () {
19930
- if (hasRequiredBalancedMatch) return balancedMatch;
19931
- hasRequiredBalancedMatch = 1;
19932
- balancedMatch = balanced;
19933
- function balanced(a, b, str) {
19934
- if (a instanceof RegExp) a = maybeMatch(a, str);
19935
- if (b instanceof RegExp) b = maybeMatch(b, str);
19936
-
19937
- var r = range(a, b, str);
19938
-
19939
- return r && {
19940
- start: r[0],
19941
- end: r[1],
19942
- pre: str.slice(0, r[0]),
19943
- body: str.slice(r[0] + a.length, r[1]),
19944
- post: str.slice(r[1] + b.length)
19945
- };
19946
- }
19947
-
19948
- function maybeMatch(reg, str) {
19949
- var m = str.match(reg);
19950
- return m ? m[0] : null;
19951
- }
19952
-
19953
- balanced.range = range;
19954
- function range(a, b, str) {
19955
- var begs, beg, left, right, result;
19956
- var ai = str.indexOf(a);
19957
- var bi = str.indexOf(b, ai + 1);
19958
- var i = ai;
19959
-
19960
- if (ai >= 0 && bi > 0) {
19961
- if(a===b) {
19962
- return [ai, bi];
19963
- }
19964
- begs = [];
19965
- left = str.length;
19966
-
19967
- while (i >= 0 && !result) {
19968
- if (i == ai) {
19969
- begs.push(i);
19970
- ai = str.indexOf(a, i + 1);
19971
- } else if (begs.length == 1) {
19972
- result = [ begs.pop(), bi ];
19973
- } else {
19974
- beg = begs.pop();
19975
- if (beg < left) {
19976
- left = beg;
19977
- right = bi;
19978
- }
19979
-
19980
- bi = str.indexOf(b, i + 1);
19981
- }
19982
-
19983
- i = ai < bi && ai >= 0 ? ai : bi;
19984
- }
19985
-
19986
- if (begs.length) {
19987
- result = [ left, right ];
19988
- }
19989
- }
19926
+ const balanced = (a, b, str) => {
19927
+ const ma = a instanceof RegExp ? maybeMatch(a, str) : a;
19928
+ const mb = b instanceof RegExp ? maybeMatch(b, str) : b;
19929
+ const r = ma !== null && mb != null && range(ma, mb, str);
19930
+ return (r && {
19931
+ start: r[0],
19932
+ end: r[1],
19933
+ pre: str.slice(0, r[0]),
19934
+ body: str.slice(r[0] + ma.length, r[1]),
19935
+ post: str.slice(r[1] + mb.length),
19936
+ });
19937
+ };
19938
+ const maybeMatch = (reg, str) => {
19939
+ const m = str.match(reg);
19940
+ return m ? m[0] : null;
19941
+ };
19942
+ const range = (a, b, str) => {
19943
+ let begs, beg, left, right = undefined, result;
19944
+ let ai = str.indexOf(a);
19945
+ let bi = str.indexOf(b, ai + 1);
19946
+ let i = ai;
19947
+ if (ai >= 0 && bi > 0) {
19948
+ if (a === b) {
19949
+ return [ai, bi];
19950
+ }
19951
+ begs = [];
19952
+ left = str.length;
19953
+ while (i >= 0 && !result) {
19954
+ if (i === ai) {
19955
+ begs.push(i);
19956
+ ai = str.indexOf(a, i + 1);
19957
+ }
19958
+ else if (begs.length === 1) {
19959
+ const r = begs.pop();
19960
+ if (r !== undefined)
19961
+ result = [r, bi];
19962
+ }
19963
+ else {
19964
+ beg = begs.pop();
19965
+ if (beg !== undefined && beg < left) {
19966
+ left = beg;
19967
+ right = bi;
19968
+ }
19969
+ bi = str.indexOf(b, i + 1);
19970
+ }
19971
+ i = ai < bi && ai >= 0 ? ai : bi;
19972
+ }
19973
+ if (begs.length && right !== undefined) {
19974
+ result = [left, right];
19975
+ }
19976
+ }
19977
+ return result;
19978
+ };
19990
19979
 
19991
- return result;
19992
- }
19993
- return balancedMatch;
19980
+ const escSlash = '\0SLASH' + Math.random() + '\0';
19981
+ const escOpen = '\0OPEN' + Math.random() + '\0';
19982
+ const escClose = '\0CLOSE' + Math.random() + '\0';
19983
+ const escComma = '\0COMMA' + Math.random() + '\0';
19984
+ const escPeriod = '\0PERIOD' + Math.random() + '\0';
19985
+ const escSlashPattern = new RegExp(escSlash, 'g');
19986
+ const escOpenPattern = new RegExp(escOpen, 'g');
19987
+ const escClosePattern = new RegExp(escClose, 'g');
19988
+ const escCommaPattern = new RegExp(escComma, 'g');
19989
+ const escPeriodPattern = new RegExp(escPeriod, 'g');
19990
+ const slashPattern = /\\\\/g;
19991
+ const openPattern = /\\{/g;
19992
+ const closePattern = /\\}/g;
19993
+ const commaPattern = /\\,/g;
19994
+ const periodPattern = /\\./g;
19995
+ function numeric(str) {
19996
+ return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);
19997
+ }
19998
+ function escapeBraces(str) {
19999
+ return str
20000
+ .replace(slashPattern, escSlash)
20001
+ .replace(openPattern, escOpen)
20002
+ .replace(closePattern, escClose)
20003
+ .replace(commaPattern, escComma)
20004
+ .replace(periodPattern, escPeriod);
20005
+ }
20006
+ function unescapeBraces(str) {
20007
+ return str
20008
+ .replace(escSlashPattern, '\\')
20009
+ .replace(escOpenPattern, '{')
20010
+ .replace(escClosePattern, '}')
20011
+ .replace(escCommaPattern, ',')
20012
+ .replace(escPeriodPattern, '.');
19994
20013
  }
19995
-
19996
- var braceExpansion;
19997
- var hasRequiredBraceExpansion;
19998
-
19999
- function requireBraceExpansion () {
20000
- if (hasRequiredBraceExpansion) return braceExpansion;
20001
- hasRequiredBraceExpansion = 1;
20002
- var balanced = /*@__PURE__*/ requireBalancedMatch();
20003
-
20004
- braceExpansion = expandTop;
20005
-
20006
- var escSlash = '\0SLASH'+Math.random()+'\0';
20007
- var escOpen = '\0OPEN'+Math.random()+'\0';
20008
- var escClose = '\0CLOSE'+Math.random()+'\0';
20009
- var escComma = '\0COMMA'+Math.random()+'\0';
20010
- var escPeriod = '\0PERIOD'+Math.random()+'\0';
20011
-
20012
- function numeric(str) {
20013
- return parseInt(str, 10) == str
20014
- ? parseInt(str, 10)
20015
- : str.charCodeAt(0);
20016
- }
20017
-
20018
- function escapeBraces(str) {
20019
- return str.split('\\\\').join(escSlash)
20020
- .split('\\{').join(escOpen)
20021
- .split('\\}').join(escClose)
20022
- .split('\\,').join(escComma)
20023
- .split('\\.').join(escPeriod);
20024
- }
20025
-
20026
- function unescapeBraces(str) {
20027
- return str.split(escSlash).join('\\')
20028
- .split(escOpen).join('{')
20029
- .split(escClose).join('}')
20030
- .split(escComma).join(',')
20031
- .split(escPeriod).join('.');
20032
- }
20033
-
20034
-
20035
- // Basically just str.split(","), but handling cases
20036
- // where we have nested braced sections, which should be
20037
- // treated as individual members, like {a,{b,c},d}
20038
- function parseCommaParts(str) {
20039
- if (!str)
20040
- return [''];
20041
-
20042
- var parts = [];
20043
- var m = balanced('{', '}', str);
20044
-
20045
- if (!m)
20046
- return str.split(',');
20047
-
20048
- var pre = m.pre;
20049
- var body = m.body;
20050
- var post = m.post;
20051
- var p = pre.split(',');
20052
-
20053
- p[p.length-1] += '{' + body + '}';
20054
- var postParts = parseCommaParts(post);
20055
- if (post.length) {
20056
- p[p.length-1] += postParts.shift();
20057
- p.push.apply(p, postParts);
20058
- }
20059
-
20060
- parts.push.apply(parts, p);
20061
-
20062
- return parts;
20063
- }
20064
-
20065
- function expandTop(str) {
20066
- if (!str)
20067
- return [];
20068
-
20069
- // I don't know why Bash 4.3 does this, but it does.
20070
- // Anything starting with {} will have the first two bytes preserved
20071
- // but *only* at the top level, so {},a}b will not expand to anything,
20072
- // but a{},b}c will be expanded to [a}c,abc].
20073
- // One could argue that this is a bug in Bash, but since the goal of
20074
- // this module is to match Bash's rules, we escape a leading {}
20075
- if (str.substr(0, 2) === '{}') {
20076
- str = '\\{\\}' + str.substr(2);
20077
- }
20078
-
20079
- return expand(escapeBraces(str), true).map(unescapeBraces);
20080
- }
20081
-
20082
- function embrace(str) {
20083
- return '{' + str + '}';
20084
- }
20085
- function isPadded(el) {
20086
- return /^-?0\d/.test(el);
20087
- }
20088
-
20089
- function lte(i, y) {
20090
- return i <= y;
20091
- }
20092
- function gte(i, y) {
20093
- return i >= y;
20094
- }
20095
-
20096
- function expand(str, isTop) {
20097
- var expansions = [];
20098
-
20099
- var m = balanced('{', '}', str);
20100
- if (!m) return [str];
20101
-
20102
- // no need to expand pre, since it is guaranteed to be free of brace-sets
20103
- var pre = m.pre;
20104
- var post = m.post.length
20105
- ? expand(m.post, false)
20106
- : [''];
20107
-
20108
- if (/\$$/.test(m.pre)) {
20109
- for (var k = 0; k < post.length; k++) {
20110
- var expansion = pre+ '{' + m.body + '}' + post[k];
20111
- expansions.push(expansion);
20112
- }
20113
- } else {
20114
- var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
20115
- var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
20116
- var isSequence = isNumericSequence || isAlphaSequence;
20117
- var isOptions = m.body.indexOf(',') >= 0;
20118
- if (!isSequence && !isOptions) {
20119
- // {a},b}
20120
- if (m.post.match(/,.*\}/)) {
20121
- str = m.pre + '{' + m.body + escClose + m.post;
20122
- return expand(str);
20123
- }
20124
- return [str];
20125
- }
20126
-
20127
- var n;
20128
- if (isSequence) {
20129
- n = m.body.split(/\.\./);
20130
- } else {
20131
- n = parseCommaParts(m.body);
20132
- if (n.length === 1) {
20133
- // x{{a,b}}y ==> x{a}y x{b}y
20134
- n = expand(n[0], false).map(embrace);
20135
- if (n.length === 1) {
20136
- return post.map(function(p) {
20137
- return m.pre + n[0] + p;
20138
- });
20139
- }
20140
- }
20141
- }
20142
-
20143
- // at this point, n is the parts, and we know it's not a comma set
20144
- // with a single entry.
20145
- var N;
20146
-
20147
- if (isSequence) {
20148
- var x = numeric(n[0]);
20149
- var y = numeric(n[1]);
20150
- var width = Math.max(n[0].length, n[1].length);
20151
- var incr = n.length == 3
20152
- ? Math.abs(numeric(n[2]))
20153
- : 1;
20154
- var test = lte;
20155
- var reverse = y < x;
20156
- if (reverse) {
20157
- incr *= -1;
20158
- test = gte;
20159
- }
20160
- var pad = n.some(isPadded);
20161
-
20162
- N = [];
20163
-
20164
- for (var i = x; test(i, y); i += incr) {
20165
- var c;
20166
- if (isAlphaSequence) {
20167
- c = String.fromCharCode(i);
20168
- if (c === '\\')
20169
- c = '';
20170
- } else {
20171
- c = String(i);
20172
- if (pad) {
20173
- var need = width - c.length;
20174
- if (need > 0) {
20175
- var z = new Array(need + 1).join('0');
20176
- if (i < 0)
20177
- c = '-' + z + c.slice(1);
20178
- else
20179
- c = z + c;
20180
- }
20181
- }
20182
- }
20183
- N.push(c);
20184
- }
20185
- } else {
20186
- N = [];
20187
-
20188
- for (var j = 0; j < n.length; j++) {
20189
- N.push.apply(N, expand(n[j], false));
20190
- }
20191
- }
20192
-
20193
- for (var j = 0; j < N.length; j++) {
20194
- for (var k = 0; k < post.length; k++) {
20195
- var expansion = pre + N[j] + post[k];
20196
- if (!isTop || isSequence || expansion)
20197
- expansions.push(expansion);
20198
- }
20199
- }
20200
- }
20201
-
20202
- return expansions;
20203
- }
20204
- return braceExpansion;
20014
+ /**
20015
+ * Basically just str.split(","), but handling cases
20016
+ * where we have nested braced sections, which should be
20017
+ * treated as individual members, like {a,{b,c},d}
20018
+ */
20019
+ function parseCommaParts(str) {
20020
+ if (!str) {
20021
+ return [''];
20022
+ }
20023
+ const parts = [];
20024
+ const m = balanced('{', '}', str);
20025
+ if (!m) {
20026
+ return str.split(',');
20027
+ }
20028
+ const { pre, body, post } = m;
20029
+ const p = pre.split(',');
20030
+ p[p.length - 1] += '{' + body + '}';
20031
+ const postParts = parseCommaParts(post);
20032
+ if (post.length) {
20033
+ p[p.length - 1] += postParts.shift();
20034
+ p.push.apply(p, postParts);
20035
+ }
20036
+ parts.push.apply(parts, p);
20037
+ return parts;
20038
+ }
20039
+ function expand(str) {
20040
+ if (!str) {
20041
+ return [];
20042
+ }
20043
+ // I don't know why Bash 4.3 does this, but it does.
20044
+ // Anything starting with {} will have the first two bytes preserved
20045
+ // but *only* at the top level, so {},a}b will not expand to anything,
20046
+ // but a{},b}c will be expanded to [a}c,abc].
20047
+ // One could argue that this is a bug in Bash, but since the goal of
20048
+ // this module is to match Bash's rules, we escape a leading {}
20049
+ if (str.slice(0, 2) === '{}') {
20050
+ str = '\\{\\}' + str.slice(2);
20051
+ }
20052
+ return expand_(escapeBraces(str), true).map(unescapeBraces);
20053
+ }
20054
+ function embrace(str) {
20055
+ return '{' + str + '}';
20056
+ }
20057
+ function isPadded(el) {
20058
+ return /^-?0\d/.test(el);
20059
+ }
20060
+ function lte(i, y) {
20061
+ return i <= y;
20062
+ }
20063
+ function gte(i, y) {
20064
+ return i >= y;
20065
+ }
20066
+ function expand_(str, isTop) {
20067
+ /** @type {string[]} */
20068
+ const expansions = [];
20069
+ const m = balanced('{', '}', str);
20070
+ if (!m)
20071
+ return [str];
20072
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
20073
+ const pre = m.pre;
20074
+ const post = m.post.length ? expand_(m.post, false) : [''];
20075
+ if (/\$$/.test(m.pre)) {
20076
+ for (let k = 0; k < post.length; k++) {
20077
+ const expansion = pre + '{' + m.body + '}' + post[k];
20078
+ expansions.push(expansion);
20079
+ }
20080
+ }
20081
+ else {
20082
+ const isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
20083
+ const isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
20084
+ const isSequence = isNumericSequence || isAlphaSequence;
20085
+ const isOptions = m.body.indexOf(',') >= 0;
20086
+ if (!isSequence && !isOptions) {
20087
+ // {a},b}
20088
+ if (m.post.match(/,(?!,).*\}/)) {
20089
+ str = m.pre + '{' + m.body + escClose + m.post;
20090
+ return expand_(str);
20091
+ }
20092
+ return [str];
20093
+ }
20094
+ let n;
20095
+ if (isSequence) {
20096
+ n = m.body.split(/\.\./);
20097
+ }
20098
+ else {
20099
+ n = parseCommaParts(m.body);
20100
+ if (n.length === 1 && n[0] !== undefined) {
20101
+ // x{{a,b}}y ==> x{a}y x{b}y
20102
+ n = expand_(n[0], false).map(embrace);
20103
+ //XXX is this necessary? Can't seem to hit it in tests.
20104
+ /* c8 ignore start */
20105
+ if (n.length === 1) {
20106
+ return post.map(p => m.pre + n[0] + p);
20107
+ }
20108
+ /* c8 ignore stop */
20109
+ }
20110
+ }
20111
+ // at this point, n is the parts, and we know it's not a comma set
20112
+ // with a single entry.
20113
+ let N;
20114
+ if (isSequence && n[0] !== undefined && n[1] !== undefined) {
20115
+ const x = numeric(n[0]);
20116
+ const y = numeric(n[1]);
20117
+ const width = Math.max(n[0].length, n[1].length);
20118
+ let incr = n.length === 3 && n[2] !== undefined ? Math.abs(numeric(n[2])) : 1;
20119
+ let test = lte;
20120
+ const reverse = y < x;
20121
+ if (reverse) {
20122
+ incr *= -1;
20123
+ test = gte;
20124
+ }
20125
+ const pad = n.some(isPadded);
20126
+ N = [];
20127
+ for (let i = x; test(i, y); i += incr) {
20128
+ let c;
20129
+ if (isAlphaSequence) {
20130
+ c = String.fromCharCode(i);
20131
+ if (c === '\\') {
20132
+ c = '';
20133
+ }
20134
+ }
20135
+ else {
20136
+ c = String(i);
20137
+ if (pad) {
20138
+ const need = width - c.length;
20139
+ if (need > 0) {
20140
+ const z = new Array(need + 1).join('0');
20141
+ if (i < 0) {
20142
+ c = '-' + z + c.slice(1);
20143
+ }
20144
+ else {
20145
+ c = z + c;
20146
+ }
20147
+ }
20148
+ }
20149
+ }
20150
+ N.push(c);
20151
+ }
20152
+ }
20153
+ else {
20154
+ N = [];
20155
+ for (let j = 0; j < n.length; j++) {
20156
+ N.push.apply(N, expand_(n[j], false));
20157
+ }
20158
+ }
20159
+ for (let j = 0; j < N.length; j++) {
20160
+ for (let k = 0; k < post.length; k++) {
20161
+ const expansion = pre + N[j] + post[k];
20162
+ if (!isTop || isSequence || expansion) {
20163
+ expansions.push(expansion);
20164
+ }
20165
+ }
20166
+ }
20167
+ }
20168
+ return expansions;
20205
20169
  }
20206
-
20207
- var braceExpansionExports = /*@__PURE__*/ requireBraceExpansion();
20208
- var expand = /*@__PURE__*/getDefaultExportFromCjs(braceExpansionExports);
20209
20170
 
20210
20171
  const MAX_PATTERN_LENGTH = 1024 * 64;
20211
20172
  const assertValidPattern = (pattern) => {
@@ -20866,7 +20827,7 @@ class AST {
20866
20827
  return [s, unescape(this.toString()), false, false];
20867
20828
  }
20868
20829
  // XXX abstract out this map method
20869
- let bodyDotAllowed = !repeated || allowDot || dot || false
20830
+ let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
20870
20831
  ? ''
20871
20832
  : this.#partsToRegExp(true);
20872
20833
  if (bodyDotAllowed === body) {
@@ -22326,25 +22287,39 @@ function resolveArrayElementType(ctx, node, scope) {
22326
22287
  scope
22327
22288
  );
22328
22289
  }
22329
- function resolveStringType(ctx, node, scope) {
22290
+ function resolveStringType(ctx, node, scope, typeParameters) {
22330
22291
  switch (node.type) {
22331
22292
  case "StringLiteral":
22332
22293
  return [node.value];
22333
22294
  case "TSLiteralType":
22334
- return resolveStringType(ctx, node.literal, scope);
22295
+ return resolveStringType(ctx, node.literal, scope, typeParameters);
22335
22296
  case "TSUnionType":
22336
- return node.types.map((t) => resolveStringType(ctx, t, scope)).flat();
22297
+ return node.types.map((t) => resolveStringType(ctx, t, scope, typeParameters)).flat();
22337
22298
  case "TemplateLiteral": {
22338
22299
  return resolveTemplateKeys(ctx, node, scope);
22339
22300
  }
22340
22301
  case "TSTypeReference": {
22341
22302
  const resolved = resolveTypeReference(ctx, node, scope);
22342
22303
  if (resolved) {
22343
- return resolveStringType(ctx, resolved, scope);
22304
+ return resolveStringType(ctx, resolved, scope, typeParameters);
22344
22305
  }
22345
22306
  if (node.typeName.type === "Identifier") {
22346
- const getParam = (index = 0) => resolveStringType(ctx, node.typeParameters.params[index], scope);
22347
- switch (node.typeName.name) {
22307
+ const name = node.typeName.name;
22308
+ if (typeParameters && typeParameters[name]) {
22309
+ return resolveStringType(
22310
+ ctx,
22311
+ typeParameters[name],
22312
+ scope,
22313
+ typeParameters
22314
+ );
22315
+ }
22316
+ const getParam = (index = 0) => resolveStringType(
22317
+ ctx,
22318
+ node.typeParameters.params[index],
22319
+ scope,
22320
+ typeParameters
22321
+ );
22322
+ switch (name) {
22348
22323
  case "Extract":
22349
22324
  return getParam(1);
22350
22325
  case "Exclude": {
@@ -22431,7 +22406,8 @@ function resolveBuiltin(ctx, node, name, scope, typeParameters) {
22431
22406
  const picked = resolveStringType(
22432
22407
  ctx,
22433
22408
  node.typeParameters.params[1],
22434
- scope
22409
+ scope,
22410
+ typeParameters
22435
22411
  );
22436
22412
  const res2 = { props: {}, calls: t.calls };
22437
22413
  for (const key of picked) {
@@ -22443,7 +22419,8 @@ function resolveBuiltin(ctx, node, name, scope, typeParameters) {
22443
22419
  const omitted = resolveStringType(
22444
22420
  ctx,
22445
22421
  node.typeParameters.params[1],
22446
- scope
22422
+ scope,
22423
+ typeParameters
22447
22424
  );
22448
22425
  const res = { props: {}, calls: t.calls };
22449
22426
  for (const key in t.props) {
@@ -23094,13 +23071,8 @@ function inferRuntimeType(ctx, node, scope = node._ownerScope || ctxToScope(ctx)
23094
23071
  case "TSTypeReference": {
23095
23072
  const resolved = resolveTypeReference(ctx, node, scope);
23096
23073
  if (resolved) {
23097
- if (resolved.type === "TSTypeAliasDeclaration") {
23098
- return inferRuntimeType(
23099
- ctx,
23100
- resolved.typeAnnotation,
23101
- resolved._ownerScope,
23102
- isKeyOf
23103
- );
23074
+ if (resolved.type === "TSTypeAliasDeclaration" && resolved.typeAnnotation.type === "TSFunctionType") {
23075
+ return ["Function"];
23104
23076
  }
23105
23077
  return inferRuntimeType(ctx, resolved, resolved._ownerScope, isKeyOf);
23106
23078
  }
@@ -25002,7 +24974,7 @@ function mergeSourceMaps(scriptMap, templateMap, templateLineOffset) {
25002
24974
  return generator.toJSON();
25003
24975
  }
25004
24976
 
25005
- const version = "3.5.16";
24977
+ const version = "3.5.17";
25006
24978
  const parseCache = parseCache$1;
25007
24979
  const errorMessages = {
25008
24980
  ...CompilerDOM.errorMessages,