@vue/compiler-core 3.5.0-beta.2 → 3.5.0-beta.3

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-core v3.5.0-beta.2
2
+ * @vue/compiler-core v3.5.0-beta.3
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1738,6 +1738,9 @@ const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || no
1738
1738
  const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;
1739
1739
  function isReferenced(node, parent, grandparent) {
1740
1740
  switch (parent.type) {
1741
+ // yes: PARENT[NODE]
1742
+ // yes: NODE.child
1743
+ // no: parent.NODE
1741
1744
  case "MemberExpression":
1742
1745
  case "OptionalMemberExpression":
1743
1746
  if (parent.property === node) {
@@ -1746,12 +1749,23 @@ function isReferenced(node, parent, grandparent) {
1746
1749
  return parent.object === node;
1747
1750
  case "JSXMemberExpression":
1748
1751
  return parent.object === node;
1752
+ // no: let NODE = init;
1753
+ // yes: let id = NODE;
1749
1754
  case "VariableDeclarator":
1750
1755
  return parent.init === node;
1756
+ // yes: () => NODE
1757
+ // no: (NODE) => {}
1751
1758
  case "ArrowFunctionExpression":
1752
1759
  return parent.body === node;
1760
+ // no: class { #NODE; }
1761
+ // no: class { get #NODE() {} }
1762
+ // no: class { #NODE() {} }
1763
+ // no: class { fn() { return this.#NODE; } }
1753
1764
  case "PrivateName":
1754
1765
  return false;
1766
+ // no: class { NODE() {} }
1767
+ // yes: class { [NODE]() {} }
1768
+ // no: class { foo(NODE) {} }
1755
1769
  case "ClassMethod":
1756
1770
  case "ClassPrivateMethod":
1757
1771
  case "ObjectMethod":
@@ -1759,11 +1773,18 @@ function isReferenced(node, parent, grandparent) {
1759
1773
  return !!parent.computed;
1760
1774
  }
1761
1775
  return false;
1776
+ // yes: { [NODE]: "" }
1777
+ // no: { NODE: "" }
1778
+ // depends: { NODE }
1779
+ // depends: { key: NODE }
1762
1780
  case "ObjectProperty":
1763
1781
  if (parent.key === node) {
1764
1782
  return !!parent.computed;
1765
1783
  }
1766
1784
  return !grandparent;
1785
+ // no: class { NODE = value; }
1786
+ // yes: class { [NODE] = value; }
1787
+ // yes: class { key = NODE; }
1767
1788
  case "ClassProperty":
1768
1789
  if (parent.key === node) {
1769
1790
  return !!parent.computed;
@@ -1771,47 +1792,80 @@ function isReferenced(node, parent, grandparent) {
1771
1792
  return true;
1772
1793
  case "ClassPrivateProperty":
1773
1794
  return parent.key !== node;
1795
+ // no: class NODE {}
1796
+ // yes: class Foo extends NODE {}
1774
1797
  case "ClassDeclaration":
1775
1798
  case "ClassExpression":
1776
1799
  return parent.superClass === node;
1800
+ // yes: left = NODE;
1801
+ // no: NODE = right;
1777
1802
  case "AssignmentExpression":
1778
1803
  return parent.right === node;
1804
+ // no: [NODE = foo] = [];
1805
+ // yes: [foo = NODE] = [];
1779
1806
  case "AssignmentPattern":
1780
1807
  return parent.right === node;
1808
+ // no: NODE: for (;;) {}
1781
1809
  case "LabeledStatement":
1782
1810
  return false;
1811
+ // no: try {} catch (NODE) {}
1783
1812
  case "CatchClause":
1784
1813
  return false;
1814
+ // no: function foo(...NODE) {}
1785
1815
  case "RestElement":
1786
1816
  return false;
1787
1817
  case "BreakStatement":
1788
1818
  case "ContinueStatement":
1789
1819
  return false;
1820
+ // no: function NODE() {}
1821
+ // no: function foo(NODE) {}
1790
1822
  case "FunctionDeclaration":
1791
1823
  case "FunctionExpression":
1792
1824
  return false;
1825
+ // no: export NODE from "foo";
1826
+ // no: export * as NODE from "foo";
1793
1827
  case "ExportNamespaceSpecifier":
1794
1828
  case "ExportDefaultSpecifier":
1795
1829
  return false;
1830
+ // no: export { foo as NODE };
1831
+ // yes: export { NODE as foo };
1832
+ // no: export { NODE as foo } from "foo";
1796
1833
  case "ExportSpecifier":
1797
1834
  return parent.local === node;
1835
+ // no: import NODE from "foo";
1836
+ // no: import * as NODE from "foo";
1837
+ // no: import { NODE as foo } from "foo";
1838
+ // no: import { foo as NODE } from "foo";
1839
+ // no: import NODE from "bar";
1798
1840
  case "ImportDefaultSpecifier":
1799
1841
  case "ImportNamespaceSpecifier":
1800
1842
  case "ImportSpecifier":
1801
1843
  return false;
1844
+ // no: import "foo" assert { NODE: "json" }
1802
1845
  case "ImportAttribute":
1803
1846
  return false;
1847
+ // no: <div NODE="foo" />
1804
1848
  case "JSXAttribute":
1805
1849
  return false;
1850
+ // no: [NODE] = [];
1851
+ // no: ({ NODE }) = [];
1806
1852
  case "ObjectPattern":
1807
1853
  case "ArrayPattern":
1808
1854
  return false;
1855
+ // no: new.NODE
1856
+ // no: NODE.target
1809
1857
  case "MetaProperty":
1810
1858
  return false;
1859
+ // yes: type X = { someProperty: NODE }
1860
+ // no: type X = { NODE: OtherType }
1811
1861
  case "ObjectTypeProperty":
1812
1862
  return parent.key !== node;
1863
+ // yes: enum X { Foo = NODE }
1864
+ // no: enum X { NODE }
1813
1865
  case "TSEnumMember":
1814
1866
  return parent.id !== node;
1867
+ // yes: { [NODE]: value }
1868
+ // no: { NODE: value }
1815
1869
  case "TSPropertySignature":
1816
1870
  if (parent.key === node) {
1817
1871
  return !!parent.computed;
@@ -2471,7 +2525,9 @@ const tokenizer = new Tokenizer(stack, {
2471
2525
  case 17:
2472
2526
  case 18:
2473
2527
  case 19:
2528
+ // "
2474
2529
  case 20:
2530
+ // '
2475
2531
  case 21:
2476
2532
  emitError(9, end);
2477
2533
  break;
@@ -3497,6 +3553,7 @@ function traverseNode(node, context) {
3497
3553
  context.helper(TO_DISPLAY_STRING);
3498
3554
  }
3499
3555
  break;
3556
+ // for container types, further traverse downwards
3500
3557
  case 9:
3501
3558
  for (let i2 = 0; i2 < node.branches.length; i2++) {
3502
3559
  traverseNode(node.branches[i2], context);
@@ -3977,6 +4034,7 @@ function genNode(node, context) {
3977
4034
  case 21:
3978
4035
  genNodeList(node.body, context, true, false);
3979
4036
  break;
4037
+ // SSR only types
3980
4038
  case 22:
3981
4039
  genTemplateLiteral(node, context);
3982
4040
  break;
@@ -3992,6 +4050,7 @@ function genNode(node, context) {
3992
4050
  case 26:
3993
4051
  genReturnStatement(node, context);
3994
4052
  break;
4053
+ /* istanbul ignore next */
3995
4054
  case 10:
3996
4055
  break;
3997
4056
  default:
@@ -6407,27 +6466,35 @@ function parseFilter(node, context) {
6407
6466
  case 34:
6408
6467
  inDouble = true;
6409
6468
  break;
6469
+ // "
6410
6470
  case 39:
6411
6471
  inSingle = true;
6412
6472
  break;
6473
+ // '
6413
6474
  case 96:
6414
6475
  inTemplateString = true;
6415
6476
  break;
6477
+ // `
6416
6478
  case 40:
6417
6479
  paren++;
6418
6480
  break;
6481
+ // (
6419
6482
  case 41:
6420
6483
  paren--;
6421
6484
  break;
6485
+ // )
6422
6486
  case 91:
6423
6487
  square++;
6424
6488
  break;
6489
+ // [
6425
6490
  case 93:
6426
6491
  square--;
6427
6492
  break;
6493
+ // ]
6428
6494
  case 123:
6429
6495
  curly++;
6430
6496
  break;
6497
+ // {
6431
6498
  case 125:
6432
6499
  curly--;
6433
6500
  break;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-core v3.5.0-beta.2
2
+ * @vue/compiler-core v3.5.0-beta.3
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -1734,6 +1734,9 @@ const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || no
1734
1734
  const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node;
1735
1735
  function isReferenced(node, parent, grandparent) {
1736
1736
  switch (parent.type) {
1737
+ // yes: PARENT[NODE]
1738
+ // yes: NODE.child
1739
+ // no: parent.NODE
1737
1740
  case "MemberExpression":
1738
1741
  case "OptionalMemberExpression":
1739
1742
  if (parent.property === node) {
@@ -1742,12 +1745,23 @@ function isReferenced(node, parent, grandparent) {
1742
1745
  return parent.object === node;
1743
1746
  case "JSXMemberExpression":
1744
1747
  return parent.object === node;
1748
+ // no: let NODE = init;
1749
+ // yes: let id = NODE;
1745
1750
  case "VariableDeclarator":
1746
1751
  return parent.init === node;
1752
+ // yes: () => NODE
1753
+ // no: (NODE) => {}
1747
1754
  case "ArrowFunctionExpression":
1748
1755
  return parent.body === node;
1756
+ // no: class { #NODE; }
1757
+ // no: class { get #NODE() {} }
1758
+ // no: class { #NODE() {} }
1759
+ // no: class { fn() { return this.#NODE; } }
1749
1760
  case "PrivateName":
1750
1761
  return false;
1762
+ // no: class { NODE() {} }
1763
+ // yes: class { [NODE]() {} }
1764
+ // no: class { foo(NODE) {} }
1751
1765
  case "ClassMethod":
1752
1766
  case "ClassPrivateMethod":
1753
1767
  case "ObjectMethod":
@@ -1755,11 +1769,18 @@ function isReferenced(node, parent, grandparent) {
1755
1769
  return !!parent.computed;
1756
1770
  }
1757
1771
  return false;
1772
+ // yes: { [NODE]: "" }
1773
+ // no: { NODE: "" }
1774
+ // depends: { NODE }
1775
+ // depends: { key: NODE }
1758
1776
  case "ObjectProperty":
1759
1777
  if (parent.key === node) {
1760
1778
  return !!parent.computed;
1761
1779
  }
1762
1780
  return !grandparent;
1781
+ // no: class { NODE = value; }
1782
+ // yes: class { [NODE] = value; }
1783
+ // yes: class { key = NODE; }
1763
1784
  case "ClassProperty":
1764
1785
  if (parent.key === node) {
1765
1786
  return !!parent.computed;
@@ -1767,47 +1788,80 @@ function isReferenced(node, parent, grandparent) {
1767
1788
  return true;
1768
1789
  case "ClassPrivateProperty":
1769
1790
  return parent.key !== node;
1791
+ // no: class NODE {}
1792
+ // yes: class Foo extends NODE {}
1770
1793
  case "ClassDeclaration":
1771
1794
  case "ClassExpression":
1772
1795
  return parent.superClass === node;
1796
+ // yes: left = NODE;
1797
+ // no: NODE = right;
1773
1798
  case "AssignmentExpression":
1774
1799
  return parent.right === node;
1800
+ // no: [NODE = foo] = [];
1801
+ // yes: [foo = NODE] = [];
1775
1802
  case "AssignmentPattern":
1776
1803
  return parent.right === node;
1804
+ // no: NODE: for (;;) {}
1777
1805
  case "LabeledStatement":
1778
1806
  return false;
1807
+ // no: try {} catch (NODE) {}
1779
1808
  case "CatchClause":
1780
1809
  return false;
1810
+ // no: function foo(...NODE) {}
1781
1811
  case "RestElement":
1782
1812
  return false;
1783
1813
  case "BreakStatement":
1784
1814
  case "ContinueStatement":
1785
1815
  return false;
1816
+ // no: function NODE() {}
1817
+ // no: function foo(NODE) {}
1786
1818
  case "FunctionDeclaration":
1787
1819
  case "FunctionExpression":
1788
1820
  return false;
1821
+ // no: export NODE from "foo";
1822
+ // no: export * as NODE from "foo";
1789
1823
  case "ExportNamespaceSpecifier":
1790
1824
  case "ExportDefaultSpecifier":
1791
1825
  return false;
1826
+ // no: export { foo as NODE };
1827
+ // yes: export { NODE as foo };
1828
+ // no: export { NODE as foo } from "foo";
1792
1829
  case "ExportSpecifier":
1793
1830
  return parent.local === node;
1831
+ // no: import NODE from "foo";
1832
+ // no: import * as NODE from "foo";
1833
+ // no: import { NODE as foo } from "foo";
1834
+ // no: import { foo as NODE } from "foo";
1835
+ // no: import NODE from "bar";
1794
1836
  case "ImportDefaultSpecifier":
1795
1837
  case "ImportNamespaceSpecifier":
1796
1838
  case "ImportSpecifier":
1797
1839
  return false;
1840
+ // no: import "foo" assert { NODE: "json" }
1798
1841
  case "ImportAttribute":
1799
1842
  return false;
1843
+ // no: <div NODE="foo" />
1800
1844
  case "JSXAttribute":
1801
1845
  return false;
1846
+ // no: [NODE] = [];
1847
+ // no: ({ NODE }) = [];
1802
1848
  case "ObjectPattern":
1803
1849
  case "ArrayPattern":
1804
1850
  return false;
1851
+ // no: new.NODE
1852
+ // no: NODE.target
1805
1853
  case "MetaProperty":
1806
1854
  return false;
1855
+ // yes: type X = { someProperty: NODE }
1856
+ // no: type X = { NODE: OtherType }
1807
1857
  case "ObjectTypeProperty":
1808
1858
  return parent.key !== node;
1859
+ // yes: enum X { Foo = NODE }
1860
+ // no: enum X { NODE }
1809
1861
  case "TSEnumMember":
1810
1862
  return parent.id !== node;
1863
+ // yes: { [NODE]: value }
1864
+ // no: { NODE: value }
1811
1865
  case "TSPropertySignature":
1812
1866
  if (parent.key === node) {
1813
1867
  return !!parent.computed;
@@ -2467,7 +2521,9 @@ const tokenizer = new Tokenizer(stack, {
2467
2521
  case 17:
2468
2522
  case 18:
2469
2523
  case 19:
2524
+ // "
2470
2525
  case 20:
2526
+ // '
2471
2527
  case 21:
2472
2528
  emitError(9, end);
2473
2529
  break;
@@ -3438,6 +3494,7 @@ function traverseNode(node, context) {
3438
3494
  context.helper(TO_DISPLAY_STRING);
3439
3495
  }
3440
3496
  break;
3497
+ // for container types, further traverse downwards
3441
3498
  case 9:
3442
3499
  for (let i2 = 0; i2 < node.branches.length; i2++) {
3443
3500
  traverseNode(node.branches[i2], context);
@@ -3914,6 +3971,7 @@ function genNode(node, context) {
3914
3971
  case 21:
3915
3972
  genNodeList(node.body, context, true, false);
3916
3973
  break;
3974
+ // SSR only types
3917
3975
  case 22:
3918
3976
  genTemplateLiteral(node, context);
3919
3977
  break;
@@ -6288,27 +6346,35 @@ function parseFilter(node, context) {
6288
6346
  case 34:
6289
6347
  inDouble = true;
6290
6348
  break;
6349
+ // "
6291
6350
  case 39:
6292
6351
  inSingle = true;
6293
6352
  break;
6353
+ // '
6294
6354
  case 96:
6295
6355
  inTemplateString = true;
6296
6356
  break;
6357
+ // `
6297
6358
  case 40:
6298
6359
  paren++;
6299
6360
  break;
6361
+ // (
6300
6362
  case 41:
6301
6363
  paren--;
6302
6364
  break;
6365
+ // )
6303
6366
  case 91:
6304
6367
  square++;
6305
6368
  break;
6369
+ // [
6306
6370
  case 93:
6307
6371
  square--;
6308
6372
  break;
6373
+ // ]
6309
6374
  case 123:
6310
6375
  curly++;
6311
6376
  break;
6377
+ // {
6312
6378
  case 125:
6313
6379
  curly--;
6314
6380
  break;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @vue/compiler-core v3.5.0-beta.2
2
+ * @vue/compiler-core v3.5.0-beta.3
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
5
5
  **/
@@ -2205,7 +2205,9 @@ const tokenizer = new Tokenizer(stack, {
2205
2205
  case 17:
2206
2206
  case 18:
2207
2207
  case 19:
2208
+ // "
2208
2209
  case 20:
2210
+ // '
2209
2211
  case 21:
2210
2212
  emitError(9, end);
2211
2213
  break;
@@ -3188,6 +3190,7 @@ function traverseNode(node, context) {
3188
3190
  context.helper(TO_DISPLAY_STRING);
3189
3191
  }
3190
3192
  break;
3193
+ // for container types, further traverse downwards
3191
3194
  case 9:
3192
3195
  for (let i2 = 0; i2 < node.branches.length; i2++) {
3193
3196
  traverseNode(node.branches[i2], context);
@@ -3540,6 +3543,7 @@ function genNode(node, context) {
3540
3543
  case 21:
3541
3544
  genNodeList(node.body, context, true, false);
3542
3545
  break;
3546
+ // SSR only types
3543
3547
  case 22:
3544
3548
  break;
3545
3549
  case 23:
@@ -3550,6 +3554,7 @@ function genNode(node, context) {
3550
3554
  break;
3551
3555
  case 26:
3552
3556
  break;
3557
+ /* istanbul ignore next */
3553
3558
  case 10:
3554
3559
  break;
3555
3560
  default:
@@ -5587,27 +5592,35 @@ function parseFilter(node, context) {
5587
5592
  case 34:
5588
5593
  inDouble = true;
5589
5594
  break;
5595
+ // "
5590
5596
  case 39:
5591
5597
  inSingle = true;
5592
5598
  break;
5599
+ // '
5593
5600
  case 96:
5594
5601
  inTemplateString = true;
5595
5602
  break;
5603
+ // `
5596
5604
  case 40:
5597
5605
  paren++;
5598
5606
  break;
5607
+ // (
5599
5608
  case 41:
5600
5609
  paren--;
5601
5610
  break;
5611
+ // )
5602
5612
  case 91:
5603
5613
  square++;
5604
5614
  break;
5615
+ // [
5605
5616
  case 93:
5606
5617
  square--;
5607
5618
  break;
5619
+ // ]
5608
5620
  case 123:
5609
5621
  curly++;
5610
5622
  break;
5623
+ // {
5611
5624
  case 125:
5612
5625
  curly--;
5613
5626
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/compiler-core",
3
- "version": "3.5.0-beta.2",
3
+ "version": "3.5.0-beta.3",
4
4
  "description": "@vue/compiler-core",
5
5
  "main": "index.js",
6
6
  "module": "dist/compiler-core.esm-bundler.js",
@@ -50,7 +50,7 @@
50
50
  "entities": "^4.5.0",
51
51
  "estree-walker": "^2.0.2",
52
52
  "source-map-js": "^1.2.0",
53
- "@vue/shared": "3.5.0-beta.2"
53
+ "@vue/shared": "3.5.0-beta.3"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@babel/types": "^7.25.2"