xmlui 0.12.19 → 0.12.21

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 (37) hide show
  1. package/dist/lib/{index-WVT6bIgM.js → index-CznbWBUF.js} +3224 -4066
  2. package/dist/lib/index.css +1 -1
  3. package/dist/lib/{initMock-r2IRBsLf.js → initMock-Dj__hABf.js} +2 -2
  4. package/dist/lib/{parser-DpwXEUNb.js → parser-zOoMLvLx.js} +120 -139
  5. package/dist/lib/testing.d.ts +18 -19
  6. package/dist/lib/testing.js +2 -2
  7. package/dist/lib/{xmlui-parser-Cs8kB0VK.js → xmlui-parser-CtU8O3Av.js} +43 -19
  8. package/dist/lib/xmlui-parser.d.ts +23 -19
  9. package/dist/lib/xmlui-parser.js +2 -2
  10. package/dist/lib/{xmlui-serializer-3MPLSsOp.js → xmlui-serializer-C-Iuczzr.js} +9 -8
  11. package/dist/lib/xmlui.d.ts +130 -125
  12. package/dist/lib/xmlui.js +38 -36
  13. package/dist/metadata/TextBox-B-GWiq0J.cjs +1 -0
  14. package/dist/metadata/{TextBox-CwicjBJI.js → TextBox-DHSTy0g0.js} +3407 -4256
  15. package/dist/metadata/behaviors.cjs +1 -1
  16. package/dist/metadata/behaviors.js +1 -1
  17. package/dist/metadata/{initMock-BMq6JN4I.js → initMock-SQIcDMzP.js} +1 -1
  18. package/dist/metadata/{initMock-BKBkbEgr.cjs → initMock-wSFvfKcr.cjs} +1 -1
  19. package/dist/metadata/metadata-utils.cjs +1 -1
  20. package/dist/metadata/metadata-utils.js +1 -1
  21. package/dist/metadata/transform-BOf-UbgP.cjs +1 -0
  22. package/dist/metadata/{transform-D0SWbm8g.js → transform-fGDqiHwH.js} +120 -139
  23. package/dist/metadata/xmlui-metadata.cjs +1 -1
  24. package/dist/metadata/xmlui-metadata.js +12 -8
  25. package/dist/metadata/xmlui.css +2 -2
  26. package/dist/nodejs/bin/index.mjs +63 -79
  27. package/dist/nodejs/index.cjs +63 -79
  28. package/dist/nodejs/index.mjs +63 -79
  29. package/dist/nodejs/server.cjs +1886 -1053
  30. package/dist/nodejs/server.mjs +1886 -1053
  31. package/dist/nodejs/vite-xmlui-plugin.cjs +63 -79
  32. package/dist/nodejs/vite-xmlui-plugin.mjs +63 -79
  33. package/dist/standalone/xmlui-standalone.es.d.ts +192 -179
  34. package/dist/standalone/xmlui-standalone.umd.js +11 -11
  35. package/package.json +1 -1
  36. package/dist/metadata/TextBox-C-4gnBpw.cjs +0 -1
  37. package/dist/metadata/transform-CkTQ-Bfe.cjs +0 -1
@@ -1,7 +1,7 @@
1
1
  import { delay as delay$1, HttpResponse, matchRequestUrl } from "msw";
2
2
  import { isArray, isObject, mapValues } from "lodash-es";
3
- import { h as delay, o as orderBy, T as ThrowStatementError } from "./xmlui-serializer-3MPLSsOp.js";
4
- import { r as runEventHandlerCode, g as getDate, m as miscellaneousUtils, d as dateFunctions } from "./index-WVT6bIgM.js";
3
+ import { h as delay, o as orderBy, T as ThrowStatementError } from "./xmlui-serializer-C-Iuczzr.js";
4
+ import { r as runEventHandlerCode, g as getDate, m as miscellaneousUtils, d as dateFunctions } from "./index-CznbWBUF.js";
5
5
  import Dexie from "dexie";
6
6
  var HttpStatusCode = /* @__PURE__ */ ((HttpStatusCode2) => {
7
7
  HttpStatusCode2[HttpStatusCode2["Continue"] = 100] = "Continue";
@@ -273,23 +273,23 @@ var TokenType = /* @__PURE__ */ ((TokenType2) => {
273
273
  TokenType2[TokenType2["SignedShiftRight"] = 55] = "SignedShiftRight";
274
274
  TokenType2[TokenType2["Dot"] = 56] = "Dot";
275
275
  TokenType2[TokenType2["Spread"] = 57] = "Spread";
276
- TokenType2[TokenType2["Global"] = 58] = "Global";
277
- TokenType2[TokenType2["Backtick"] = 59] = "Backtick";
278
- TokenType2[TokenType2["DollarLBrace"] = 60] = "DollarLBrace";
279
- TokenType2[TokenType2["Arrow"] = 61] = "Arrow";
280
- TokenType2[TokenType2["DecimalLiteral"] = 62] = "DecimalLiteral";
281
- TokenType2[TokenType2["HexadecimalLiteral"] = 63] = "HexadecimalLiteral";
282
- TokenType2[TokenType2["BinaryLiteral"] = 64] = "BinaryLiteral";
283
- TokenType2[TokenType2["RealLiteral"] = 65] = "RealLiteral";
284
- TokenType2[TokenType2["StringLiteral"] = 66] = "StringLiteral";
285
- TokenType2[TokenType2["Infinity"] = 67] = "Infinity";
286
- TokenType2[TokenType2["NaN"] = 68] = "NaN";
287
- TokenType2[TokenType2["True"] = 69] = "True";
288
- TokenType2[TokenType2["False"] = 70] = "False";
289
- TokenType2[TokenType2["Typeof"] = 71] = "Typeof";
290
- TokenType2[TokenType2["Null"] = 72] = "Null";
291
- TokenType2[TokenType2["Undefined"] = 73] = "Undefined";
292
- TokenType2[TokenType2["In"] = 74] = "In";
276
+ TokenType2[TokenType2["Backtick"] = 58] = "Backtick";
277
+ TokenType2[TokenType2["DollarLBrace"] = 59] = "DollarLBrace";
278
+ TokenType2[TokenType2["Arrow"] = 60] = "Arrow";
279
+ TokenType2[TokenType2["DecimalLiteral"] = 61] = "DecimalLiteral";
280
+ TokenType2[TokenType2["HexadecimalLiteral"] = 62] = "HexadecimalLiteral";
281
+ TokenType2[TokenType2["BinaryLiteral"] = 63] = "BinaryLiteral";
282
+ TokenType2[TokenType2["RealLiteral"] = 64] = "RealLiteral";
283
+ TokenType2[TokenType2["StringLiteral"] = 65] = "StringLiteral";
284
+ TokenType2[TokenType2["Infinity"] = 66] = "Infinity";
285
+ TokenType2[TokenType2["NaN"] = 67] = "NaN";
286
+ TokenType2[TokenType2["True"] = 68] = "True";
287
+ TokenType2[TokenType2["False"] = 69] = "False";
288
+ TokenType2[TokenType2["Typeof"] = 70] = "Typeof";
289
+ TokenType2[TokenType2["Null"] = 71] = "Null";
290
+ TokenType2[TokenType2["Undefined"] = 72] = "Undefined";
291
+ TokenType2[TokenType2["In"] = 73] = "In";
292
+ TokenType2[TokenType2["Instanceof"] = 74] = "Instanceof";
293
293
  TokenType2[TokenType2["Let"] = 75] = "Let";
294
294
  TokenType2[TokenType2["Const"] = 76] = "Const";
295
295
  TokenType2[TokenType2["Var"] = 77] = "Var";
@@ -394,7 +394,7 @@ class Lexer {
394
394
  * Call this after the first opening backing and after the parser is done with parsing a placeholder, after the right brace.
395
395
  */
396
396
  setStartingPhaseToTemplateLiteral() {
397
- this._phaseExternallySet = 34;
397
+ this._phaseExternallySet = 33;
398
398
  }
399
399
  /**
400
400
  * Fetches the next character from the input stream
@@ -467,19 +467,19 @@ class Lexer {
467
467
  tokenType = TokenType.Multiply;
468
468
  break;
469
469
  case "%":
470
- phase = 54;
470
+ phase = 53;
471
471
  tokenType = TokenType.Remainder;
472
472
  break;
473
473
  case "+":
474
- phase = 51;
474
+ phase = 50;
475
475
  tokenType = TokenType.Plus;
476
476
  break;
477
477
  case "-":
478
- phase = 52;
478
+ phase = 51;
479
479
  tokenType = TokenType.Minus;
480
480
  break;
481
481
  case "^":
482
- phase = 58;
482
+ phase = 57;
483
483
  tokenType = TokenType.BitwiseXor;
484
484
  break;
485
485
  // --- BitwiseOr, LogicalOr
@@ -494,7 +494,7 @@ class Lexer {
494
494
  break;
495
495
  // --- "?", "?", or "?."
496
496
  case "?":
497
- phase = 22;
497
+ phase = 21;
498
498
  tokenType = TokenType.QuestionMark;
499
499
  break;
500
500
  case ";":
@@ -505,11 +505,9 @@ class Lexer {
505
505
  return completeToken(TokenType.LParent);
506
506
  case ")":
507
507
  return completeToken(TokenType.RParent);
508
- // --- ":" or "::"
508
+ // --- ":"
509
509
  case ":":
510
- phase = 20;
511
- tokenType = TokenType.Colon;
512
- break;
510
+ return completeToken(TokenType.Colon);
513
511
  case "`":
514
512
  return completeToken(TokenType.Backtick);
515
513
  case "[":
@@ -544,7 +542,7 @@ class Lexer {
544
542
  break;
545
543
  // --- Decimal or Real literal
546
544
  case "0":
547
- phase = 21;
545
+ phase = 20;
548
546
  tokenType = TokenType.DecimalLiteral;
549
547
  break;
550
548
  case ".":
@@ -555,7 +553,7 @@ class Lexer {
555
553
  case '"':
556
554
  case "'":
557
555
  stringState = ch;
558
- phase = 35;
556
+ phase = 34;
559
557
  break;
560
558
  default:
561
559
  if (isIdStart(ch)) {
@@ -563,7 +561,7 @@ class Lexer {
563
561
  phase = 17;
564
562
  tokenType = TokenType.Identifier;
565
563
  } else if (isDecimalDigit(ch)) {
566
- phase = 27;
564
+ phase = 26;
567
565
  tokenType = TokenType.DecimalLiteral;
568
566
  } else {
569
567
  completeToken(TokenType.Unknown);
@@ -605,8 +603,6 @@ class Lexer {
605
603
  break;
606
604
  // ====================================================================
607
605
  // Process miscellaneous tokens
608
- case 20:
609
- return ch === ":" ? completeToken(TokenType.Global) : makeToken();
610
606
  case 5:
611
607
  if (ch === "*") {
612
608
  phase = 3;
@@ -619,58 +615,58 @@ class Lexer {
619
615
  return makeToken();
620
616
  }
621
617
  break;
622
- case 51:
618
+ case 50:
623
619
  if (ch === "+") {
624
620
  return completeToken(TokenType.IncOp);
625
621
  }
626
622
  return ch === "=" ? completeToken(TokenType.AddAssignment) : makeToken();
627
- case 52:
623
+ case 51:
628
624
  if (ch === "-") {
629
625
  return completeToken(TokenType.DecOp);
630
626
  }
631
627
  return ch === "=" ? completeToken(TokenType.SubtractAssignment) : makeToken();
632
- case 54:
628
+ case 53:
633
629
  return ch === "=" ? completeToken(TokenType.RemainderAssignment) : makeToken();
634
- case 58:
630
+ case 57:
635
631
  return ch === "=" ? completeToken(TokenType.BitwiseXorAssignment) : makeToken();
636
632
  case 7:
637
633
  if (ch === "=") {
638
634
  return completeToken(TokenType.BitwiseOrAssignment);
639
635
  }
640
636
  if (ch === "|") {
641
- phase = 59;
637
+ phase = 58;
642
638
  tokenType = TokenType.LogicalOr;
643
639
  break;
644
640
  }
645
641
  return makeToken();
646
- case 59:
642
+ case 58:
647
643
  return ch === "=" ? completeToken(TokenType.LogicalOrAssignment) : makeToken();
648
644
  case 9:
649
645
  if (ch === "=") {
650
646
  return completeToken(TokenType.BitwiseAndAssignment);
651
647
  }
652
648
  if (ch === "&") {
653
- phase = 57;
649
+ phase = 56;
654
650
  tokenType = TokenType.LogicalAnd;
655
651
  break;
656
652
  }
657
653
  return makeToken();
658
- case 57:
654
+ case 56:
659
655
  return ch === "=" ? completeToken(TokenType.LogicalAndAssignment) : makeToken();
660
656
  case 8:
661
657
  if (ch === "*") {
662
- phase = 50;
658
+ phase = 49;
663
659
  tokenType = TokenType.Exponent;
664
660
  break;
665
661
  } else if (ch === "=") {
666
662
  return completeToken(TokenType.MultiplyAssignment);
667
663
  }
668
664
  return makeToken();
669
- case 50:
665
+ case 49:
670
666
  return ch === "=" ? completeToken(TokenType.ExponentAssignment) : makeToken();
671
- case 22:
667
+ case 21:
672
668
  if (ch === "?") {
673
- phase = 60;
669
+ phase = 59;
674
670
  tokenType = TokenType.NullCoalesce;
675
671
  break;
676
672
  }
@@ -678,7 +674,7 @@ class Lexer {
678
674
  return completeToken(TokenType.OptionalChaining);
679
675
  }
680
676
  return makeToken();
681
- case 60:
677
+ case 59:
682
678
  return ch === "=" ? completeToken(TokenType.NullCoalesceAssignment) : makeToken();
683
679
  case 10:
684
680
  if (ch === ">") {
@@ -706,12 +702,12 @@ class Lexer {
706
702
  return completeToken(TokenType.LessThanOrEqual);
707
703
  }
708
704
  if (ch === "<") {
709
- phase = 55;
705
+ phase = 54;
710
706
  tokenType = TokenType.ShiftLeft;
711
707
  break;
712
708
  }
713
709
  return makeToken();
714
- case 55:
710
+ case 54:
715
711
  return ch === "=" ? completeToken(TokenType.ShiftLeftAssignment) : makeToken();
716
712
  case 15:
717
713
  if (ch === "=") {
@@ -725,7 +721,7 @@ class Lexer {
725
721
  return makeToken();
726
722
  case 16:
727
723
  if (ch === ">") {
728
- phase = 56;
724
+ phase = 55;
729
725
  tokenType = TokenType.ShiftRight;
730
726
  break;
731
727
  }
@@ -733,24 +729,24 @@ class Lexer {
733
729
  return completeToken(TokenType.SignedShiftRightAssignment);
734
730
  }
735
731
  return makeToken();
736
- case 56:
732
+ case 55:
737
733
  return ch === "=" ? completeToken(TokenType.ShiftRightAssignment) : makeToken();
738
734
  // ====================================================================
739
735
  // --- Literals
740
- case 21:
736
+ case 20:
741
737
  if (ch === "x") {
742
- phase = 23;
738
+ phase = 22;
743
739
  tokenType = TokenType.Unknown;
744
740
  } else if (ch === "b") {
745
- phase = 25;
741
+ phase = 24;
746
742
  tokenType = TokenType.Unknown;
747
743
  } else if (isDecimalDigit(ch) || ch === "_") {
748
- phase = 27;
744
+ phase = 26;
749
745
  } else if (ch === ".") {
750
- phase = 28;
746
+ phase = 27;
751
747
  tokenType = TokenType.Unknown;
752
748
  } else if (ch === "e" || ch === "E") {
753
- phase = 30;
749
+ phase = 29;
754
750
  tokenType = TokenType.Unknown;
755
751
  } else {
756
752
  return makeToken();
@@ -765,92 +761,92 @@ class Lexer {
765
761
  if (!isDecimalDigit(ch)) {
766
762
  return makeToken();
767
763
  }
768
- phase = 29;
764
+ phase = 28;
769
765
  tokenType = TokenType.RealLiteral;
770
766
  break;
771
767
  case 19:
772
768
  return ch === "." ? completeToken(TokenType.Spread) : makeToken();
773
- case 23:
769
+ case 22:
774
770
  if (ch === "_") {
775
771
  break;
776
772
  }
777
773
  if (!isHexadecimalDigit(ch)) {
778
774
  return makeToken();
779
775
  }
780
- phase = 24;
776
+ phase = 23;
781
777
  tokenType = TokenType.HexadecimalLiteral;
782
778
  break;
783
- case 24:
779
+ case 23:
784
780
  if (!isHexadecimalDigit(ch) && ch !== "_") {
785
781
  return makeToken();
786
782
  }
787
783
  break;
788
- case 25:
784
+ case 24:
789
785
  if (ch === "_") {
790
786
  break;
791
787
  }
792
788
  if (!isBinaryDigit(ch)) {
793
789
  return makeToken();
794
790
  }
795
- phase = 26;
791
+ phase = 25;
796
792
  tokenType = TokenType.BinaryLiteral;
797
793
  break;
798
- case 26:
794
+ case 25:
799
795
  if (!isBinaryDigit(ch) && ch !== "_") {
800
796
  return makeToken();
801
797
  }
802
798
  tokenType = TokenType.BinaryLiteral;
803
799
  break;
804
- case 27:
800
+ case 26:
805
801
  if (isDecimalDigit(ch) || ch === "_") {
806
802
  break;
807
803
  } else if (ch === "." && (this.input.peek() === null || isDecimalDigit(this.input.peek()))) {
808
- phase = 28;
804
+ phase = 27;
809
805
  tokenType = TokenType.Unknown;
810
806
  } else if (ch === "e" || ch === "E") {
811
- phase = 30;
807
+ phase = 29;
812
808
  tokenType = TokenType.Unknown;
813
809
  } else {
814
810
  return makeToken();
815
811
  }
816
812
  break;
817
- case 28:
813
+ case 27:
818
814
  if (isDecimalDigit(ch)) {
819
- phase = 29;
815
+ phase = 28;
820
816
  tokenType = TokenType.RealLiteral;
821
817
  } else if (ch === "e" || ch === "E") {
822
- phase = 30;
818
+ phase = 29;
823
819
  } else {
824
820
  return makeToken();
825
821
  }
826
822
  break;
827
- case 29:
823
+ case 28:
828
824
  if (ch === "e" || ch === "E") {
829
- phase = 30;
825
+ phase = 29;
830
826
  tokenType = TokenType.Unknown;
831
827
  } else if (!isDecimalDigit(ch) && ch !== "_") {
832
828
  return makeToken();
833
829
  }
834
830
  break;
835
- case 30:
831
+ case 29:
836
832
  if (ch === "+" || ch === "-") {
837
- phase = 31;
833
+ phase = 30;
838
834
  } else if (isDecimalDigit(ch)) {
839
- phase = 32;
835
+ phase = 31;
840
836
  tokenType = TokenType.RealLiteral;
841
837
  } else {
842
838
  return makeToken();
843
839
  }
844
840
  break;
845
- case 31:
841
+ case 30:
846
842
  if (isDecimalDigit(ch)) {
847
- phase = 32;
843
+ phase = 31;
848
844
  tokenType = TokenType.RealLiteral;
849
845
  } else {
850
846
  return makeToken();
851
847
  }
852
848
  break;
853
- case 32:
849
+ case 31:
854
850
  if (!isDecimalDigit(ch)) {
855
851
  return makeToken();
856
852
  }
@@ -867,8 +863,8 @@ class Lexer {
867
863
  makeToken();
868
864
  }
869
865
  break;
870
- case 33: {
871
- phase = 34;
866
+ case 32: {
867
+ phase = 33;
872
868
  const charAhead12 = this.input.ahead(0);
873
869
  const charAhead22 = this.input.ahead(1);
874
870
  if (charAhead12 === "`" || charAhead12 === "$" && charAhead22 === "{") {
@@ -876,10 +872,10 @@ class Lexer {
876
872
  }
877
873
  break;
878
874
  }
879
- case 34:
875
+ case 33:
880
876
  switch (ch) {
881
877
  case "\\":
882
- phase = 33;
878
+ phase = 32;
883
879
  tokenType = TokenType.Unknown;
884
880
  break phaseSwitch;
885
881
  case "`":
@@ -898,18 +894,18 @@ class Lexer {
898
894
  return completeToken(TokenType.StringLiteral);
899
895
  }
900
896
  break;
901
- case 35:
897
+ case 34:
902
898
  if (ch === stringState) {
903
899
  return completeToken(TokenType.StringLiteral);
904
900
  } else if (isRestrictedInString(ch)) {
905
901
  return completeToken(TokenType.Unknown);
906
902
  } else if (ch === "\\") {
907
- phase = 36;
903
+ phase = 35;
908
904
  tokenType = TokenType.Unknown;
909
905
  }
910
906
  break;
911
907
  // Start of string character escape
912
- case 36:
908
+ case 35:
913
909
  switch (ch) {
914
910
  case "b":
915
911
  case "f":
@@ -923,133 +919,133 @@ class Lexer {
923
919
  case '"':
924
920
  case "`":
925
921
  case "\\":
926
- phase = 35;
922
+ phase = 34;
927
923
  break;
928
924
  case "x":
929
- phase = 37;
925
+ phase = 36;
930
926
  break;
931
927
  case "u":
932
- phase = 39;
928
+ phase = 38;
933
929
  break;
934
930
  default:
935
- phase = 35;
931
+ phase = 34;
936
932
  break;
937
933
  }
938
934
  break;
939
935
  // --- First hexadecimal digit of string character escape
940
- case 37:
936
+ case 36:
941
937
  if (isHexadecimalDigit(ch)) {
942
- phase = 38;
938
+ phase = 37;
943
939
  } else {
944
940
  return completeToken(TokenType.Unknown);
945
941
  }
946
942
  break;
947
943
  // --- Second hexadecimal digit of character escape
948
- case 38:
944
+ case 37:
949
945
  if (isHexadecimalDigit(ch)) {
950
- phase = 35;
946
+ phase = 34;
951
947
  } else {
952
948
  return completeToken(TokenType.Unknown);
953
949
  }
954
950
  break;
955
951
  // --- First hexadecimal digit of Unicode string character escape
956
- case 39:
952
+ case 38:
957
953
  if (ch === "{") {
958
- phase = 43;
954
+ phase = 42;
959
955
  break;
960
956
  }
961
957
  if (isHexadecimalDigit(ch)) {
962
- phase = 40;
958
+ phase = 39;
963
959
  } else {
964
960
  return completeToken(TokenType.Unknown);
965
961
  }
966
962
  break;
967
963
  // --- Second hexadecimal digit of Unicode string character escape
968
- case 40:
964
+ case 39:
969
965
  if (isHexadecimalDigit(ch)) {
970
- phase = 41;
966
+ phase = 40;
971
967
  } else {
972
968
  return completeToken(TokenType.Unknown);
973
969
  }
974
970
  break;
975
971
  // --- Third hexadecimal digit of Unicode string character escape
976
- case 41:
972
+ case 40:
977
973
  if (isHexadecimalDigit(ch)) {
978
- phase = 42;
974
+ phase = 41;
979
975
  } else {
980
976
  return completeToken(TokenType.Unknown);
981
977
  }
982
978
  break;
983
979
  // --- Fourth hexadecimal digit of Unicode string character escape
984
- case 42:
980
+ case 41:
985
981
  if (isHexadecimalDigit(ch)) {
986
- phase = 35;
982
+ phase = 34;
987
983
  } else {
988
984
  return completeToken(TokenType.Unknown);
989
985
  }
990
986
  break;
991
987
  // --- First hexadecimal digit of Unicode codepoint string character escape
992
- case 43:
988
+ case 42:
993
989
  if (isHexadecimalDigit(ch)) {
994
- phase = 44;
990
+ phase = 43;
995
991
  } else {
996
992
  return completeToken(TokenType.Unknown);
997
993
  }
998
994
  break;
999
995
  // --- Second hexadecimal digit of Unicode codepoint string character escape
1000
- case 44:
996
+ case 43:
1001
997
  if (ch === "}") {
1002
- phase = 35;
998
+ phase = 34;
1003
999
  } else if (isHexadecimalDigit(ch)) {
1004
- phase = 45;
1000
+ phase = 44;
1005
1001
  } else {
1006
1002
  return completeToken(TokenType.Unknown);
1007
1003
  }
1008
1004
  break;
1009
1005
  // --- Third hexadecimal digit of Unicode codepoint string character escape
1010
- case 45:
1006
+ case 44:
1011
1007
  if (ch === "}") {
1012
- phase = 35;
1008
+ phase = 34;
1013
1009
  } else if (isHexadecimalDigit(ch)) {
1014
- phase = 46;
1010
+ phase = 45;
1015
1011
  } else {
1016
1012
  return completeToken(TokenType.Unknown);
1017
1013
  }
1018
1014
  break;
1019
1015
  // --- Fourth hexadecimal digit of Unicode codepoint string character escape
1020
- case 46:
1016
+ case 45:
1021
1017
  if (ch === "}") {
1022
- phase = 35;
1018
+ phase = 34;
1023
1019
  } else if (isHexadecimalDigit(ch)) {
1024
- phase = 47;
1020
+ phase = 46;
1025
1021
  } else {
1026
1022
  return completeToken(TokenType.Unknown);
1027
1023
  }
1028
1024
  break;
1029
1025
  // --- Fifth hexadecimal digit of Unicode codepoint string character escape
1030
- case 47:
1026
+ case 46:
1031
1027
  if (ch === "}") {
1032
- phase = 35;
1028
+ phase = 34;
1033
1029
  } else if (isHexadecimalDigit(ch)) {
1034
- phase = 48;
1030
+ phase = 47;
1035
1031
  } else {
1036
1032
  return completeToken(TokenType.Unknown);
1037
1033
  }
1038
1034
  break;
1039
1035
  // --- Sixth hexadecimal digit of Unicode codepoint string character escape
1040
- case 48:
1036
+ case 47:
1041
1037
  if (ch === "}") {
1042
- phase = 35;
1038
+ phase = 34;
1043
1039
  } else if (isHexadecimalDigit(ch)) {
1044
- phase = 49;
1040
+ phase = 48;
1045
1041
  } else {
1046
1042
  return completeToken(TokenType.Unknown);
1047
1043
  }
1048
1044
  break;
1049
1045
  // --- Closing bracket of Unicode codepoint string character escape
1050
- case 49:
1046
+ case 48:
1051
1047
  if (ch === "}") {
1052
- phase = 35;
1048
+ phase = 34;
1053
1049
  } else {
1054
1050
  return completeToken(TokenType.Unknown);
1055
1051
  }
@@ -1162,6 +1158,7 @@ resolverHash.set("false", TokenType.False);
1162
1158
  resolverHash.set("undefined", TokenType.Undefined);
1163
1159
  resolverHash.set("null", TokenType.Null);
1164
1160
  resolverHash.set("in", TokenType.In);
1161
+ resolverHash.set("instanceof", TokenType.Instanceof);
1165
1162
  resolverHash.set("let", TokenType.Let);
1166
1163
  resolverHash.set("const", TokenType.Const);
1167
1164
  resolverHash.set("var", TokenType.Var);
@@ -1373,7 +1370,6 @@ const tokenTraits = {
1373
1370
  [TokenType.SignedShiftRight]: {},
1374
1371
  [TokenType.Dot]: {},
1375
1372
  [TokenType.Spread]: { expressionStart: true, isPropLiteral: true },
1376
- [TokenType.Global]: { expressionStart: true },
1377
1373
  [TokenType.DecimalLiteral]: { expressionStart: true, isPropLiteral: true },
1378
1374
  [TokenType.HexadecimalLiteral]: { expressionStart: true, isPropLiteral: true },
1379
1375
  [TokenType.BinaryLiteral]: { expressionStart: true, isPropLiteral: true },
@@ -1389,6 +1385,7 @@ const tokenTraits = {
1389
1385
  [TokenType.Null]: { expressionStart: true, keywordLike: true },
1390
1386
  [TokenType.Undefined]: { expressionStart: true, keywordLike: true },
1391
1387
  [TokenType.In]: { keywordLike: true },
1388
+ [TokenType.Instanceof]: { keywordLike: true },
1392
1389
  [TokenType.Let]: { keywordLike: true },
1393
1390
  [TokenType.Const]: { keywordLike: true },
1394
1391
  [TokenType.Var]: { keywordLike: true },
@@ -3353,7 +3350,7 @@ class Parser {
3353
3350
  }
3354
3351
  /**
3355
3352
  * relOrInExpr
3356
- * : shiftExpr ( ( "<" | "<=" | ">" | ">=", "in" ) shiftExpr )?
3353
+ * : shiftExpr ( ( "<" | "<=" | ">" | ">=", "in", "instanceof" ) shiftExpr )?
3357
3354
  * ;
3358
3355
  */
3359
3356
  parseRelOrInExpr() {
@@ -3368,7 +3365,8 @@ class Parser {
3368
3365
  TokenType.LessThanOrEqual,
3369
3366
  TokenType.GreaterThan,
3370
3367
  TokenType.GreaterThanOrEqual,
3371
- TokenType.In
3368
+ TokenType.In,
3369
+ TokenType.Instanceof
3372
3370
  )) {
3373
3371
  const rightExpr = this.parseShiftExpr();
3374
3372
  if (!rightExpr) {
@@ -3900,23 +3898,6 @@ class Parser {
3900
3898
  idToken
3901
3899
  );
3902
3900
  }
3903
- case TokenType.Global: {
3904
- this._lexer.get();
3905
- const idToken = this._lexer.get();
3906
- if (idToken.type !== TokenType.Identifier) {
3907
- this.reportError("W003");
3908
- return null;
3909
- }
3910
- return this.createExpressionNode(
3911
- T_IDENTIFIER,
3912
- {
3913
- name: idToken.text,
3914
- isGlobal: true
3915
- },
3916
- idToken,
3917
- idToken
3918
- );
3919
- }
3920
3901
  case TokenType.Backtick:
3921
3902
  return this.parseTemplateLiteral();
3922
3903
  case TokenType.False: