@ibyar/expressions 0.3.0 → 0.3.8

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 (147) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +79 -6
  3. package/api/abstract.d.ts +5 -7
  4. package/api/abstract.js +2 -5
  5. package/api/abstract.js.map +1 -1
  6. package/api/app/class.d.ts +99 -8
  7. package/api/app/class.js +250 -29
  8. package/api/app/class.js.map +1 -1
  9. package/api/app/program.d.ts +1 -2
  10. package/api/app/program.js +1 -4
  11. package/api/app/program.js.map +1 -1
  12. package/api/computing/call.d.ts +4 -4
  13. package/api/computing/call.js +20 -22
  14. package/api/computing/call.js.map +1 -1
  15. package/api/computing/new.d.ts +1 -2
  16. package/api/computing/new.js +4 -7
  17. package/api/computing/new.js.map +1 -1
  18. package/api/computing/rest.d.ts +16 -0
  19. package/api/computing/rest.js +40 -0
  20. package/api/computing/rest.js.map +1 -0
  21. package/api/computing/return.d.ts +1 -2
  22. package/api/computing/return.js +2 -5
  23. package/api/computing/return.js.map +1 -1
  24. package/api/computing/spread.d.ts +1 -2
  25. package/api/computing/spread.js +3 -9
  26. package/api/computing/spread.js.map +1 -1
  27. package/api/computing/throw.d.ts +3 -6
  28. package/api/computing/throw.js +5 -14
  29. package/api/computing/throw.js.map +1 -1
  30. package/api/definition/array.d.ts +12 -10
  31. package/api/definition/array.js +44 -16
  32. package/api/definition/array.js.map +1 -1
  33. package/api/definition/bind.d.ts +21 -0
  34. package/api/definition/bind.js +81 -0
  35. package/api/definition/bind.js.map +1 -0
  36. package/api/definition/comment.d.ts +1 -2
  37. package/api/definition/comment.js +1 -4
  38. package/api/definition/comment.js.map +1 -1
  39. package/api/definition/function.d.ts +12 -15
  40. package/api/definition/function.js +49 -58
  41. package/api/definition/function.js.map +1 -1
  42. package/api/definition/member.d.ts +8 -5
  43. package/api/definition/member.js +40 -31
  44. package/api/definition/member.js.map +1 -1
  45. package/api/definition/object.d.ts +16 -17
  46. package/api/definition/object.js +24 -16
  47. package/api/definition/object.js.map +1 -1
  48. package/api/definition/statement.d.ts +1 -2
  49. package/api/definition/statement.js +2 -5
  50. package/api/definition/statement.js.map +1 -1
  51. package/api/definition/values.d.ts +12 -11
  52. package/api/definition/values.js +17 -12
  53. package/api/definition/values.js.map +1 -1
  54. package/api/expression.d.ts +8 -4
  55. package/api/expression.js.map +1 -1
  56. package/api/index.d.ts +7 -6
  57. package/api/index.js +7 -6
  58. package/api/index.js.map +1 -1
  59. package/api/module/export.d.ts +1 -2
  60. package/api/module/export.js +1 -4
  61. package/api/module/export.js.map +1 -1
  62. package/api/module/import.d.ts +1 -2
  63. package/api/module/import.js +1 -4
  64. package/api/module/import.js.map +1 -1
  65. package/api/module/module.d.ts +1 -2
  66. package/api/module/module.js +2 -5
  67. package/api/module/module.js.map +1 -1
  68. package/api/operators/assignment.js +2 -2
  69. package/api/operators/assignment.js.map +1 -1
  70. package/api/operators/await.d.ts +1 -2
  71. package/api/operators/await.js +2 -5
  72. package/api/operators/await.js.map +1 -1
  73. package/api/operators/binary.js +4 -4
  74. package/api/operators/binary.js.map +1 -1
  75. package/api/operators/chaining.d.ts +9 -13
  76. package/api/operators/chaining.js +14 -48
  77. package/api/operators/chaining.js.map +1 -1
  78. package/api/operators/comma.d.ts +1 -2
  79. package/api/operators/comma.js +2 -5
  80. package/api/operators/comma.js.map +1 -1
  81. package/api/operators/grouping.d.ts +1 -2
  82. package/api/operators/grouping.js +2 -5
  83. package/api/operators/grouping.js.map +1 -1
  84. package/api/operators/logical.js.map +1 -1
  85. package/api/operators/pipeline.d.ts +4 -5
  86. package/api/operators/pipeline.js +23 -25
  87. package/api/operators/pipeline.js.map +1 -1
  88. package/api/operators/ternary.d.ts +1 -2
  89. package/api/operators/ternary.js +1 -4
  90. package/api/operators/ternary.js.map +1 -1
  91. package/api/operators/unary.d.ts +1 -2
  92. package/api/operators/unary.js +2 -5
  93. package/api/operators/unary.js.map +1 -1
  94. package/api/operators/update.d.ts +1 -2
  95. package/api/operators/update.js +2 -5
  96. package/api/operators/update.js.map +1 -1
  97. package/api/statement/{controlflow → control}/block.d.ts +1 -2
  98. package/api/statement/{controlflow → control}/block.js +2 -5
  99. package/api/statement/control/block.js.map +1 -0
  100. package/api/statement/{controlflow → control}/empty.d.ts +1 -2
  101. package/api/statement/{controlflow → control}/empty.js +1 -4
  102. package/api/statement/control/empty.js.map +1 -0
  103. package/api/statement/{controlflow → control}/if.d.ts +1 -2
  104. package/api/statement/{controlflow → control}/if.js +2 -5
  105. package/api/statement/control/if.js.map +1 -0
  106. package/api/statement/{controlflow → control}/switch.d.ts +2 -4
  107. package/api/statement/{controlflow → control}/switch.js +5 -11
  108. package/api/statement/control/switch.js.map +1 -0
  109. package/api/statement/{controlflow → control}/terminate.d.ts +1 -2
  110. package/api/statement/{controlflow → control}/terminate.js +1 -4
  111. package/api/statement/control/terminate.js.map +1 -0
  112. package/api/statement/declarations/declares.d.ts +13 -14
  113. package/api/statement/declarations/declares.js +10 -9
  114. package/api/statement/declarations/declares.js.map +1 -1
  115. package/api/statement/iterations/for.d.ts +14 -14
  116. package/api/statement/iterations/for.js +12 -24
  117. package/api/statement/iterations/for.js.map +1 -1
  118. package/api/statement/iterations/while.d.ts +2 -4
  119. package/api/statement/iterations/while.js +4 -10
  120. package/api/statement/iterations/while.js.map +1 -1
  121. package/package.json +18 -4
  122. package/scope/scope.d.ts +23 -3
  123. package/scope/scope.js +67 -1
  124. package/scope/scope.js.map +1 -1
  125. package/scope/stack.d.ts +14 -3
  126. package/scope/stack.js +61 -1
  127. package/scope/stack.js.map +1 -1
  128. package/v8/app.js.map +1 -1
  129. package/v8/nodes.d.ts +1 -2
  130. package/v8/nodes.js +2 -11
  131. package/v8/nodes.js.map +1 -1
  132. package/v8/parser.d.ts +5 -4
  133. package/v8/parser.js +165 -69
  134. package/v8/parser.js.map +1 -1
  135. package/v8/stream.js +20 -6
  136. package/v8/stream.js.map +1 -1
  137. package/v8/token.d.ts +3 -0
  138. package/v8/token.js +9 -0
  139. package/v8/token.js.map +1 -1
  140. package/api/operators/destruct.d.ts +0 -19
  141. package/api/operators/destruct.js +0 -95
  142. package/api/operators/destruct.js.map +0 -1
  143. package/api/statement/controlflow/block.js.map +0 -1
  144. package/api/statement/controlflow/empty.js.map +0 -1
  145. package/api/statement/controlflow/if.js.map +0 -1
  146. package/api/statement/controlflow/switch.js.map +0 -1
  147. package/api/statement/controlflow/terminate.js.map +0 -1
package/v8/token.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/expressions/v8/token.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,KAAK;IAmtBjB,YAAoB,IAAY,EAAU,UAAkB;QAAxC,SAAI,GAAJ,IAAI,CAAQ;QAAU,eAAU,GAAV,UAAU,CAAQ;IAAI,CAAC;IA1U1D,MAAM,CAAC,MAAM,CAAC,KAAY;QAChC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,UAAU,CAAC,KAAY;QACpC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,OAAO;gBACjB,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,WAAW,CAAC,KAAY;QACrC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,KAAY;QAChC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO;gBACjB,OAAO,KAAK,CAAC,OAAO,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,KAAK,CAAC,UAAU,CAAC;YACzB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,KAAK,CAAC,aAAa,CAAC;SAC5B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO;gBACjB,OAAO,KAAK,CAAC,OAAO,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,KAAK,CAAC,UAAU,CAAC;YACzB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,KAAK,CAAC,aAAa,CAAC;SAC5B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,eAAe,CAAC,KAAY;QACzC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,MAAM;gBAChB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,KAAY;QACtC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,KAAK;gBACf,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,SAAS,CAAC,KAAY;QACnC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,YAAY,CAAC;YACxB,KAAK,KAAK,CAAC,YAAY,CAAC;YACxB,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,cAAc;gBAExB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,qBAAqB,CAAC,KAAY;QAC/C,OAAO,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,KAAY;QACtC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,cAAc,CAAC;YAC1B,KAAK,KAAK,CAAC,cAAc,CAAC;YAC1B,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,cAAc,CAAC;YAC1B,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,qBAAqB,CAAC,KAAY;QAC/C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,cAAc;gBACxB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,eAAe,CAAC,KAAY;QACzC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,QAAQ,CAAC,KAAY;QAClC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,UAAU,CAAC,KAAY;QACpC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB;gBAC3B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAY;QAC1C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,GAAG,CAAC;YAIf,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,KAAK;gBACf,OAAO,IAAI,CAAC;YAGb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,gBAAgB,CAAC,KAAY;QAC1C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,eAAe,CAAC;YAC3B,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,cAAc,CAAC,KAAY;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IACO,MAAM,CAAC,SAAS,CAAC,EAAU,EAAE,KAAY,EAAE,GAAU;QAC5D,OAAO,EAAE,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC;IACvD,CAAC;IACM,MAAM,CAAC,QAAQ,CAAC,KAAqB;QAC3C,IAAI,KAAK,YAAY,KAAK,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;SACzB;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAY;QACnC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,EAAE;gBACZ,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,KAAY;QACpD,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,SAAS;gBACnB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,KAAY;QACpC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,SAAS;gBACnB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,KAAY;QAC/C,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;YAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAC7F,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,IAAI;gBACd,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,cAAc,CAAC,KAAY;QACxC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,IAAI;gBACd,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,oBAAoB,CAAC,KAAY;QAC9C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,MAAM;gBAChB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,KAAY;QAC3C,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClF,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC/D,OAAO,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;IAGD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;;AAptBsB,iBAAW,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKhC,aAAO,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAM7B,cAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAK9B,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKxB,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKzB,YAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK3B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAK3B,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,YAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK7B,YAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK7B,aAAO,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK9B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKxB,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,QAAE,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKxB,QAAE,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKxB,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKzB,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKxB,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKhC,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKxB,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKhC,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAKjC,YAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK3B,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,mBAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKpC,mBAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKpC,oBAAc,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKrC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,oBAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKpC,oBAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKpC,mBAAa,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKnC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKhC,oBAAc,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKrC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,gBAAU,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAKlC,YAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK3B,qBAAe,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKrC,mBAAa,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKlC,mBAAa,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKlC,gBAAU,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK/B,gBAAU,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK/B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,WAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK1B,cAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAK/B,eAAS,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK9B,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAK1B,WAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAK3B,WAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,cAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,cAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,mBAAa,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACtC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,cAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACxC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,kBAAY,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAC5C,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACzB,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACzC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,kBAAY,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpC,uBAAiB,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,eAAS,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACtC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,eAAS,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACtC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,kBAAY,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACxC,uBAAiB,GAAG,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AACtD,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,qBAAe,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAClD,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACxC,oBAAc,GAAG,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAsVxE,MAAM,OAAO,eAAe;IAC3B,YAAmB,KAAY,EAAS,KAAsB;QAA3C,UAAK,GAAL,KAAK,CAAO;QAAS,UAAK,GAAL,KAAK,CAAiB;IAAI,CAAC;IACnE,QAAQ;QACP,OAAO,IAAI,CAAC,KAAM,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,IAAW;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC5B,CAAC;IACD,SAAS,CAAC,IAAW;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,IAA+B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACD","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\n\nexport class Token {\n\n\t/**\n\t * ___ ? ___ : ___\n\t */\n\tpublic static readonly CONDITIONAL = new Token('?', 3);\n\n\t/**\n\t * ___ ?? ___\n\t */\n\tpublic static readonly NULLISH = new Token('??', 3);\n\n\t/**\n\t * ___ |> ___ : ___ : ?\n\t * ___ |> ___ ( ___, ___ ,? )\n\t */\n\tpublic static readonly PIPELINE = new Token('|>', 3);\n\n\t/**\n\t * ___ || ___\n\t */\n\tpublic static readonly OR = new Token('||', 4);\n\n\t/**\n\t * ___ && ___\n\t */\n\tpublic static readonly AND = new Token('&&', 5);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_OR = new Token('|', 6);\n\n\t/**\n\t * ___ ^ ___\n\t */\n\tpublic static readonly BIT_XOR = new Token('^', 7);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_AND = new Token('&', 8);\n\n\t/**\n\t * ___ << ___\n\t */\n\tpublic static readonly SHL = new Token('<<', 11);\n\n\t/**\n\t * ___ >> ___\n\t */\n\tpublic static readonly SAR = new Token('>>', 11);\n\n\t/**\n\t * ___ >>> ___\n\t */\n\tpublic static readonly SHR = new Token('>>>', 11);\n\n\t/**\n\t * ___ * ___\n\t */\n\tpublic static readonly MUL = new Token('*', 13);\n\n\t/**\n\t * ___ / ___\n\t */\n\tpublic static readonly DIV = new Token('/', 13);\n\n\t/**\n\t * ___ % ___\n\t */\n\tpublic static readonly MOD = new Token('%', 13);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO = new Token('%%', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER = new Token('>?', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER = new Token('<?', 13);\n\n\t/**\n\t * ___ ** ___\n\t */\n\tpublic static readonly EXP = new Token('**', 14);\n\n\t/**\n\t * ___ + ___\n\t */\n\tpublic static readonly ADD = new Token('+', 12);\n\n\t/**\n\t * ___ - ___\n\t */\n\tpublic static readonly SUB = new Token('-', 12);\n\n\t/**\n\t * ! ___\n\t */\n\tpublic static readonly NOT = new Token('!', 0);\n\n\t/**\n\t * ~ ___\n\t */\n\tpublic static readonly BIT_NOT = new Token('~', 0);\n\n\t/**\n\t * ___ < ___\n\t */\n\tpublic static readonly LT = new Token('<', 10);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly GT = new Token('>', 10);\n\n\t/**\n\t * ___++, ++___\n\t */\n\tpublic static readonly INC = new Token('++', 0);\n\n\t/**\n\t * ___--, --___\n\t */\n\tpublic static readonly DEC = new Token('--', 0);\n\n\t/**\n\t * ___ == ___\n\t */\n\tpublic static readonly EQ = new Token('==', 9);\n\n\t/**\n\t * ___ === ___\n\t */\n\tpublic static readonly EQ_STRICT = new Token('===', 9);\n\n\t/**\n\t * ___ != ___\n\t */\n\tpublic static readonly NE = new Token('!=', 9);\n\n\t/**\n\t * ___ !== ___\n\t */\n\tpublic static readonly NE_STRICT = new Token('!==', 9);\n\n\t/**\n\t * ___ <= ___\n\t */\n\tpublic static readonly LTE = new Token('<=', 10);\n\n\t/**\n\t * ___ >= ___\n\t */\n\tpublic static readonly GTE = new Token('>=', 10);\n\n\t/**\n\t * ___ <=> ___\n\t */\n\tpublic static readonly SPACESHIP = new Token('<=>', 10);\n\n\t/**\n\t * ___ = ___\n\t */\n\tpublic static readonly ASSIGN = new Token('=', 2);\n\n\t/**\n\t * ___ += ___\n\t */\n\tpublic static readonly ADD_ASSIGN = new Token('+=', 2);\n\n\t/**\n\t * ___ -= ___\n\t */\n\tpublic static readonly SUB_ASSIGN = new Token('-=', 2);\n\n\t/**\n\t * ___ *= ___\n\t */\n\tpublic static readonly MUL_ASSIGN = new Token('*=', 2);\n\n\t/**\n\t * ___ /= ___\n\t */\n\tpublic static readonly DIV_ASSIGN = new Token('/=', 2);\n\n\t/**\n\t * ___ %= ___\n\t */\n\tpublic static readonly MOD_ASSIGN = new Token('%=', 2);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO_ASSIGN = new Token('%%=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER_ASSIGN = new Token('>?=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER_ASSIGN = new Token('<?=', 2);\n\n\t/**\n\t * ___ **= ___\n\t */\n\tpublic static readonly EXP_ASSIGN = new Token('**=', 2);\n\n\t/**\n\t * ___ ^= ___\n\t */\n\tpublic static readonly BIT_XOR_ASSIGN = new Token('^=', 2);\n\n\t/**\n\t * ___ &= ___\n\t */\n\tpublic static readonly BIT_AND_ASSIGN = new Token('&=', 2);\n\n\t/**\n\t * ___ |= ___\n\t */\n\tpublic static readonly BIT_OR_ASSIGN = new Token('|=', 2);\n\n\t/**\n\t * ___ &&= ___\n\t */\n\tpublic static readonly AND_ASSIGN = new Token('&&=', 2);\n\n\t/**\n\t * ___ ||= ___\n\t */\n\tpublic static readonly OR_ASSIGN = new Token('||=', 2);\n\n\t/**\n\t * ___ ??= ___\n\t */\n\tpublic static readonly NULLISH_ASSIGN = new Token('??=', 2);\n\n\t/**\n\t * ___ <<= ___\n\t */\n\tpublic static readonly SHL_ASSIGN = new Token('<<=', 2);\n\n\t/**\n\t * ___ >>= ___\n\t */\n\tpublic static readonly SAR_ASSIGN = new Token('>>=', 2);\n\n\t/**\n\t * ___ >>>= ___\n\t */\n\tpublic static readonly SHR_ASSIGN = new Token('>>>=', 2);\n\n\t/**\n\t * ___ . ___\n\t */\n\tpublic static readonly PERIOD = new Token('.', 0);\n\n\t/**\n\t * ___ ?. ___, ___?.[___], ___?.()\n\t */\n\tpublic static readonly QUESTION_PERIOD = new Token('?.', 0);\n\n\t/**\n\t * (\n\t */\n\tpublic static readonly L_PARENTHESES = new Token('(', 0);\n\n\t/**\n\t * )\n\t */\n\tpublic static readonly R_PARENTHESES = new Token(')', 0);\n\n\t/**\n\t * [\n\t */\n\tpublic static readonly L_BRACKETS = new Token('[', 0);\n\n\t/**\n\t * ]\n\t */\n\tpublic static readonly R_BRACKETS = new Token(']', 0);\n\n\t/**\n\t * {\n\t */\n\tpublic static readonly L_CURLY = new Token('{', 0);\n\n\t/**\n\t * }\n\t */\n\tpublic static readonly R_CURLY = new Token('}', 0);\n\n\t/**\n\t * :\n\t */\n\tpublic static readonly COLON = new Token(':', 0);\n\n\t/**\n\t * ...\n\t */\n\tpublic static readonly ELLIPSIS = new Token('...', 0);\n\n\t/**\n\t * ;\n\t */\n\tpublic static readonly SEMICOLON = new Token(';', 0);\n\n\t/**\n\t * end of source\n\t */\n\tpublic static readonly EOS = new Token('EOS', 0);\n\n\t/**\n\t * =>\n\t */\n\tpublic static readonly ARROW = new Token('=>', 0);\n\n\t/**\n\t * ___, ___, ___\n\t */\n\tpublic static readonly COMMA = new Token(',', 1);\n\tpublic static readonly ASYNC = new Token('async', 0);\n\tpublic static readonly AWAIT = new Token('await', 0);\n\tpublic static readonly BREAK = new Token('break', 0);\n\tpublic static readonly CASE = new Token('case', 0);\n\tpublic static readonly CATCH = new Token('catch', 0);\n\tpublic static readonly CLASS = new Token('class', 0);\n\tpublic static readonly CONST = new Token('const', 0);\n\tpublic static readonly CONTINUE = new Token('continue', 0);\n\tpublic static readonly DEBUGGER = new Token('debugger', 0);\n\tpublic static readonly DEFAULT = new Token('default', 0);\n\tpublic static readonly DELETE = new Token('delete', 0);\n\tpublic static readonly DO = new Token('do', 0);\n\tpublic static readonly ELSE = new Token('else', 0);\n\tpublic static readonly ENUM = new Token('enum', 0);\n\tpublic static readonly EXPORT = new Token('export', 0);\n\tpublic static readonly EXTENDS = new Token('extends', 0);\n\tpublic static readonly FALSE_LITERAL = new Token('false', 0);\n\tpublic static readonly FINALLY = new Token('finally', 0);\n\tpublic static readonly FOR = new Token('for', 0);\n\tpublic static readonly FUNCTION = new Token('function', 0);\n\tpublic static readonly GET = new Token('get', 0);\n\tpublic static readonly IF = new Token('if', 0);\n\tpublic static readonly IMPLEMENTS = new Token('implements', 0);\n\tpublic static readonly IMPORT = new Token('import', 0);\n\tpublic static readonly PRIVATE_NAME = new Token('PRIVATE_NAME', 0);\n\tpublic static readonly IN = new Token('in', 10);\n\tpublic static readonly INSTANCEOF = new Token('instanceof', 10);\n\tpublic static readonly LET = new Token('let', 0);\n\tpublic static readonly NEW = new Token('new', 0);\n\tpublic static readonly NULL_LITERAL = new Token('null', 0);\n\tpublic static readonly UNDEFINED_LITERAL = new Token('undefined', 0);\n\tpublic static readonly PACKAGE = new Token('package', 0);\n\tpublic static readonly INTERFACE = new Token('interface', 0);\n\tpublic static readonly PRIVATE = new Token('private', 0);\n\tpublic static readonly PROTECTED = new Token('protected', 0);\n\tpublic static readonly PUBLIC = new Token('public', 0);\n\tpublic static readonly RETURN = new Token('return', 0);\n\tpublic static readonly SET = new Token('set', 0);\n\tpublic static readonly STATIC = new Token('static', 0);\n\tpublic static readonly SUPER = new Token('super', 0);\n\tpublic static readonly SWITCH = new Token('switch', 0);\n\tpublic static readonly THIS = new Token('this', 0);\n\tpublic static readonly THROW = new Token('throw', 0);\n\tpublic static readonly TRUE_LITERAL = new Token('true', 0);\n\tpublic static readonly TRY = new Token('try', 0);\n\tpublic static readonly TYPEOF = new Token('typeof', 0);\n\tpublic static readonly VAR = new Token('var', 0);\n\tpublic static readonly VOID = new Token('void', 0);\n\tpublic static readonly WHILE = new Token('while', 0);\n\tpublic static readonly YIELD = new Token('yield', 0);\n\tpublic static readonly NUMBER = new Token('NUMBER', 0);\n\tpublic static readonly BIGINT = new Token('BIGINT', 0);\n\tpublic static readonly STRING = new Token('STRING', 0);\n\tpublic static readonly IDENTIFIER = new Token('IDENTIFIER', 0);\n\tpublic static readonly TEMPLATE_LITERALS = new Token('TEMPLATE_LITERALS', 0);\n\tpublic static readonly ILLEGAL = new Token('ILLEGAL', 0);\n\tpublic static readonly ESCAPED_KEYWORD = new Token('ESCAPED_KEYWORD', 0);\n\tpublic static readonly WHITESPACE = new Token('WHITESPACE', 0);\n\tpublic static readonly REGEXP_LITERAL = new Token('REGEXP_LITERAL', 0);\n\n\n\tpublic static isPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.L_CURLY:\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.R_BRACKETS:\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isOpenPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.L_CURLY:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isClosePair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.R_BRACKETS:\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static openOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.R_CURLY:\n\t\t\t\treturn Token.L_CURLY;\n\t\t\tcase Token.R_BRACKETS:\n\t\t\t\treturn Token.L_BRACKETS;\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn Token.L_PARENTHESES;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static closeOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.L_CURLY:\n\t\t\t\treturn Token.R_CURLY;\n\t\t\tcase Token.L_BRACKETS:\n\t\t\t\treturn Token.R_BRACKETS;\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\t\treturn Token.R_PARENTHESES;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static isAnyIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLiteral(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.UNDEFINED_LITERAL:\n\t\t\tcase Token.NULL_LITERAL:\n\t\t\tcase Token.TRUE_LITERAL:\n\t\t\tcase Token.FALSE_LITERAL:\n\t\t\tcase Token.NUMBER:\n\t\t\tcase Token.BIGINT:\n\t\t\tcase Token.STRING:\n\t\t\tcase Token.REGEXP_LITERAL:\n\t\t\t\t// case Token.SMI:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isArrowOrAssignmentOp(token: Token) {\n\t\treturn token === Token.ARROW || this.isAssignment(token);\n\t}\n\tpublic static isAssignment(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.ASSIGN:\n\t\t\tcase Token.ADD_ASSIGN:\n\t\t\tcase Token.SUB_ASSIGN:\n\t\t\tcase Token.MUL_ASSIGN:\n\t\t\tcase Token.DIV_ASSIGN:\n\t\t\tcase Token.MOD_ASSIGN:\n\t\t\tcase Token.MODULO_ASSIGN:\n\t\t\tcase Token.EXP_ASSIGN:\n\t\t\tcase Token.BIT_XOR_ASSIGN:\n\t\t\tcase Token.BIT_AND_ASSIGN:\n\t\t\tcase Token.BIT_OR_ASSIGN:\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\tcase Token.SHL_ASSIGN:\n\t\t\tcase Token.SAR_ASSIGN:\n\t\t\tcase Token.SHR_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLogicalAssignmentOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isAutoSemicolon(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SEMICOLON:\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.EOS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isMember(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isTemplate(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isNextLetKeyword(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.L_CURLY:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.STATIC:\n\t\t\tcase Token.LET: // `let let;` is disallowed by static semantics, but the\n\t\t\t// token must be first interpreted as a keyword in order\n\t\t\t// for those semantics to apply. This ensures that ASI is\n\t\t\t// not honored when a LineTerminator separates the tokens.\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t\t// case Token.FUTURE_STRICT_RESERVED_WORD:\n\t\t\t// return is_sloppy(language_mode());\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isPropertyOrCall(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.QUESTION_PERIOD:\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isPropertyName(token: Token) {\n\t\treturn /\\w/.test(token.getName());\n\t}\n\tprivate static isInRange(op: number, start: Token, end: Token) {\n\t\treturn op >= start.precedence && op <= end.precedence;\n\t}\n\tpublic static isBinary(token: number | Token) {\n\t\tif (token instanceof Token) {\n\t\t\ttoken = token.precedence;\n\t\t}\n\t\treturn Token.isInRange(token, Token.COMMA, Token.SUB);\n\t}\n\n\tpublic static isCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\tcase Token.NE:\n\t\t\tcase Token.NE_STRICT:\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\tcase Token.INSTANCEOF:\n\t\t\tcase Token.IN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isOrderedRelationalCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isEquality(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static binaryOpForAssignment(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.NULLISH_ASSIGN, Token.SUB_ASSIGN)) {\n\t\t\tconst result = token.precedence - Token.NULLISH_ASSIGN.precedence + Token.NULLISH.precedence;\n\t\t\treturn Token.isBinary(result);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isBitOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.BIT_OR:\n\t\t\tcase Token.BIT_XOR:\n\t\t\tcase Token.BIT_AND:\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isUnary(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isUnaryOrCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isShift(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isStrictReservedWord(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.IMPLEMENTS:\n\t\t\tcase Token.INTERFACE:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.PACKAGE:\n\t\t\tcase Token.PRIVATE:\n\t\t\tcase Token.PROTECTED:\n\t\t\tcase Token.PUBLIC:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isValidIdentifier(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.IDENTIFIER, Token.ASYNC)) return true;\n\t\tif (token == Token.AWAIT || token == Token.YIELD) return false;\n\t\treturn Token.isStrictReservedWord(token) && false;\n\t}\n\n\tconstructor(private name: string, private precedence: number) { }\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tgetPrecedence() {\n\t\treturn this.precedence;\n\t}\n}\n\nexport class TokenExpression {\n\tconstructor(public token: Token, public value?: ExpressionNode) { }\n\tgetValue(): ExpressionNode {\n\t\treturn this.value!;\n\t}\n\tisType(type: Token) {\n\t\treturn this.token === type;\n\t}\n\tisNotType(type: Token) {\n\t\treturn this.token !== type;\n\t}\n\n\ttest(func: (token: Token) => boolean): boolean {\n\t\treturn func(this.token);\n\t}\n\ttoString(): string {\n\t\treturn JSON.stringify(this);\n\t}\n}\n"]}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/expressions/v8/token.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,KAAK;IAivBjB,YAAoB,IAAY,EAAU,UAAkB;QAAxC,SAAI,GAAJ,IAAI,CAAQ;QAAU,eAAU,GAAV,UAAU,CAAQ;IAAI,CAAC;IAlV1D,MAAM,CAAC,MAAM,CAAC,KAAY;QAChC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,UAAU,CAAC,KAAY;QACpC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,OAAO;gBACjB,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,WAAW,CAAC,KAAY;QACrC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,MAAM,CAAC,KAAY;QAChC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO;gBACjB,OAAO,KAAK,CAAC,OAAO,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,KAAK,CAAC,UAAU,CAAC;YACzB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,KAAK,CAAC,aAAa,CAAC;SAC5B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO;gBACjB,OAAO,KAAK,CAAC,OAAO,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,KAAK,CAAC,UAAU,CAAC;YACzB,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,KAAK,CAAC,aAAa,CAAC;SAC5B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,eAAe,CAAC,KAAY;QACzC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,MAAM;gBAChB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,KAAY;QACtC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,KAAK;gBACf,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,SAAS,CAAC,KAAY;QACnC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,YAAY,CAAC;YACxB,KAAK,KAAK,CAAC,YAAY,CAAC;YACxB,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,cAAc;gBAExB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,qBAAqB,CAAC,KAAY;QAC/C,OAAO,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IACM,MAAM,CAAC,YAAY,CAAC,KAAY;QACtC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,cAAc,CAAC;YAC1B,KAAK,KAAK,CAAC,cAAc,CAAC;YAC1B,KAAK,KAAK,CAAC,aAAa,CAAC;YACzB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,cAAc,CAAC;YAC1B,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,qBAAqB,CAAC,KAAY;QAC/C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,cAAc;gBACxB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,eAAe,CAAC,KAAY;QACzC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,QAAQ,CAAC,KAAY;QAClC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,UAAU;gBACpB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,UAAU,CAAC,KAAY;QACpC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB;gBAC3B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAY;QAC1C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,GAAG,CAAC;YAIf,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,KAAK;gBACf,OAAO,IAAI,CAAC;YAGb;gBACC,OAAO,KAAK,CAAC;SACd;IACF,CAAC;IACM,MAAM,CAAC,gBAAgB,CAAC,KAAY;QAC1C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,iBAAiB,CAAC;YAC7B,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,eAAe,CAAC;YAC3B,KAAK,KAAK,CAAC,aAAa;gBACvB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,cAAc,CAAC,KAAY;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IACO,MAAM,CAAC,SAAS,CAAC,EAAU,EAAE,KAAY,EAAE,GAAU;QAC5D,OAAO,EAAE,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC;IACvD,CAAC;IACM,MAAM,CAAC,QAAQ,CAAC,KAAqB;QAC3C,IAAI,KAAK,YAAY,KAAK,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC;SACzB;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,SAAS,CAAC,KAAY;QACnC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,EAAE;gBACZ,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,0BAA0B,CAAC,KAAY;QACpD,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,SAAS;gBACnB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,KAAY;QACpC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,EAAE,CAAC;YACd,KAAK,KAAK,CAAC,SAAS;gBACnB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,KAAY;QAC/C,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;YAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAC7F,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,IAAI;gBACd,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,cAAc,CAAC,KAAY;QACxC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,KAAK,CAAC;YACjB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,IAAI;gBACd,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,OAAO,CAAC,KAAY;QACjC,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,GAAG;gBACb,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACM,MAAM,CAAC,oBAAoB,CAAC,KAAY;QAC9C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,UAAU,CAAC;YACtB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,GAAG,CAAC;YACf,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,OAAO,CAAC;YACnB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,MAAM,CAAC;YAClB,KAAK,KAAK,CAAC,MAAM;gBAChB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,KAAY;QAC5C,QAAQ,KAAK,EAAE;YACd,KAAK,KAAK,CAAC,QAAQ;gBAClB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,KAAY;QAC3C,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAClF,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QAC/D,OAAO,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACnD,CAAC;IAGD,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;;AAlvBsB,iBAAW,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKhC,aAAO,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAM7B,cAAQ,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAK9B,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKxB,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKzB,YAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK3B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAK3B,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,YAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK7B,YAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK7B,aAAO,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK9B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKzB,SAAG,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKxB,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,QAAE,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAKxB,QAAE,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAOxB,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAOzB,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKzB,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKxB,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKhC,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKxB,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKhC,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,SAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAK1B,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAKjC,YAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK3B,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,gBAAU,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKhC,mBAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKpC,mBAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKpC,oBAAc,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKrC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,oBAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKpC,oBAAc,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKpC,mBAAa,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKnC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,eAAS,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKhC,oBAAc,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKrC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,gBAAU,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKjC,gBAAU,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAKlC,YAAM,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAS3B,qBAAe,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAKrC,UAAI,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAS1B,mBAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAKpC,mBAAa,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKlC,mBAAa,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAKlC,gBAAU,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK/B,gBAAU,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK/B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,aAAO,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK5B,WAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK1B,cAAQ,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAK/B,eAAS,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAK9B,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAK1B,WAAK,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAK3B,WAAK,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC1B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,cAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,cAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,mBAAa,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AACtC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,cAAQ,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACpC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACxB,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACxC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,kBAAY,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AAC5C,QAAE,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACzB,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACzC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,kBAAY,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpC,uBAAiB,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC9C,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,eAAS,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACtC,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,eAAS,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACtC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,kBAAY,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACpC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,SAAG,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1B,UAAI,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,WAAK,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC9B,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,YAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChC,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACxC,uBAAiB,GAAG,IAAI,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;AACtD,aAAO,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAClC,qBAAe,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AAClD,gBAAU,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;AACxC,oBAAc,GAAG,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AA8VxE,MAAM,OAAO,eAAe;IAC3B,YAAmB,KAAY,EAAS,KAAsB;QAA3C,UAAK,GAAL,KAAK,CAAO;QAAS,UAAK,GAAL,KAAK,CAAiB;IAAI,CAAC;IACnE,QAAQ;QACP,OAAO,IAAI,CAAC,KAAM,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,IAAW;QACjB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC5B,CAAC;IACD,SAAS,CAAC,IAAW;QACpB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAC5B,CAAC;IAED,IAAI,CAAC,IAA+B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACD","sourcesContent":["import type { ExpressionNode } from '../api/expression.js';\n\nexport class Token {\n\n\t/**\n\t * ___ ? ___ : ___\n\t */\n\tpublic static readonly CONDITIONAL = new Token('?', 3);\n\n\t/**\n\t * ___ ?? ___\n\t */\n\tpublic static readonly NULLISH = new Token('??', 3);\n\n\t/**\n\t * ___ |> ___ : ___ : ?\n\t * ___ |> ___ ( ___, ___ , ?)\n\t */\n\tpublic static readonly PIPELINE = new Token('|>', 3);\n\n\t/**\n\t * ___ || ___\n\t */\n\tpublic static readonly OR = new Token('||', 4);\n\n\t/**\n\t * ___ && ___\n\t */\n\tpublic static readonly AND = new Token('&&', 5);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_OR = new Token('|', 6);\n\n\t/**\n\t * ___ ^ ___\n\t */\n\tpublic static readonly BIT_XOR = new Token('^', 7);\n\n\t/**\n\t * ___ | ___\n\t */\n\tpublic static readonly BIT_AND = new Token('&', 8);\n\n\t/**\n\t * ___ << ___\n\t */\n\tpublic static readonly SHL = new Token('<<', 11);\n\n\t/**\n\t * ___ >> ___\n\t */\n\tpublic static readonly SAR = new Token('>>', 11);\n\n\t/**\n\t * ___ >>> ___\n\t */\n\tpublic static readonly SHR = new Token('>>>', 11);\n\n\t/**\n\t * ___ * ___\n\t */\n\tpublic static readonly MUL = new Token('*', 13);\n\n\t/**\n\t * ___ / ___\n\t */\n\tpublic static readonly DIV = new Token('/', 13);\n\n\t/**\n\t * ___ % ___\n\t */\n\tpublic static readonly MOD = new Token('%', 13);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO = new Token('%%', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER = new Token('>?', 13);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER = new Token('<?', 13);\n\n\t/**\n\t * ___ ** ___\n\t */\n\tpublic static readonly EXP = new Token('**', 14);\n\n\t/**\n\t * ___ + ___\n\t */\n\tpublic static readonly ADD = new Token('+', 12);\n\n\t/**\n\t * ___ - ___\n\t */\n\tpublic static readonly SUB = new Token('-', 12);\n\n\t/**\n\t * ! ___\n\t */\n\tpublic static readonly NOT = new Token('!', 0);\n\n\t/**\n\t * ~ ___\n\t */\n\tpublic static readonly BIT_NOT = new Token('~', 0);\n\n\t/**\n\t * ___ < ___\n\t */\n\tpublic static readonly LT = new Token('<', 10);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly GT = new Token('>', 10);\n\n\t/**\n\t * ___++\n\t * \n\t * ++___\n\t */\n\tpublic static readonly INC = new Token('++', 0);\n\n\t/**\n\t * ___--\n\t * \n\t * --___\n\t */\n\tpublic static readonly DEC = new Token('--', 0);\n\n\t/**\n\t * ___ == ___\n\t */\n\tpublic static readonly EQ = new Token('==', 9);\n\n\t/**\n\t * ___ === ___\n\t */\n\tpublic static readonly EQ_STRICT = new Token('===', 9);\n\n\t/**\n\t * ___ != ___\n\t */\n\tpublic static readonly NE = new Token('!=', 9);\n\n\t/**\n\t * ___ !== ___\n\t */\n\tpublic static readonly NE_STRICT = new Token('!==', 9);\n\n\t/**\n\t * ___ <= ___\n\t */\n\tpublic static readonly LTE = new Token('<=', 10);\n\n\t/**\n\t * ___ >= ___\n\t */\n\tpublic static readonly GTE = new Token('>=', 10);\n\n\t/**\n\t * ___ <=> ___\n\t */\n\tpublic static readonly SPACESHIP = new Token('<=>', 10);\n\n\t/**\n\t * ___ = ___\n\t */\n\tpublic static readonly ASSIGN = new Token('=', 2);\n\n\t/**\n\t * ___ += ___\n\t */\n\tpublic static readonly ADD_ASSIGN = new Token('+=', 2);\n\n\t/**\n\t * ___ -= ___\n\t */\n\tpublic static readonly SUB_ASSIGN = new Token('-=', 2);\n\n\t/**\n\t * ___ *= ___\n\t */\n\tpublic static readonly MUL_ASSIGN = new Token('*=', 2);\n\n\t/**\n\t * ___ /= ___\n\t */\n\tpublic static readonly DIV_ASSIGN = new Token('/=', 2);\n\n\t/**\n\t * ___ %= ___\n\t */\n\tpublic static readonly MOD_ASSIGN = new Token('%=', 2);\n\n\t/**\n\t * ___ %% ___\n\t */\n\tpublic static readonly MODULO_ASSIGN = new Token('%%=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly LARGER_ASSIGN = new Token('>?=', 2);\n\n\t/**\n\t * ___ > ___\n\t */\n\tpublic static readonly SMALLER_ASSIGN = new Token('<?=', 2);\n\n\t/**\n\t * ___ **= ___\n\t */\n\tpublic static readonly EXP_ASSIGN = new Token('**=', 2);\n\n\t/**\n\t * ___ ^= ___\n\t */\n\tpublic static readonly BIT_XOR_ASSIGN = new Token('^=', 2);\n\n\t/**\n\t * ___ &= ___\n\t */\n\tpublic static readonly BIT_AND_ASSIGN = new Token('&=', 2);\n\n\t/**\n\t * ___ |= ___\n\t */\n\tpublic static readonly BIT_OR_ASSIGN = new Token('|=', 2);\n\n\t/**\n\t * ___ &&= ___\n\t */\n\tpublic static readonly AND_ASSIGN = new Token('&&=', 2);\n\n\t/**\n\t * ___ ||= ___\n\t */\n\tpublic static readonly OR_ASSIGN = new Token('||=', 2);\n\n\t/**\n\t * ___ ??= ___\n\t */\n\tpublic static readonly NULLISH_ASSIGN = new Token('??=', 2);\n\n\t/**\n\t * ___ <<= ___\n\t */\n\tpublic static readonly SHL_ASSIGN = new Token('<<=', 2);\n\n\t/**\n\t * ___ >>= ___\n\t */\n\tpublic static readonly SAR_ASSIGN = new Token('>>=', 2);\n\n\t/**\n\t * ___ >>>= ___\n\t */\n\tpublic static readonly SHR_ASSIGN = new Token('>>>=', 2);\n\n\t/**\n\t * ___ . ___\n\t */\n\tpublic static readonly PERIOD = new Token('.', 0);\n\n\t/**\n\t * ___ ?. ___\n\t * \n\t * ___?.[___]\n\t * \n\t * ___?.()\n\t */\n\tpublic static readonly QUESTION_PERIOD = new Token('?.', 0);\n\n\t/**\n\t * ___ :: ___\n\t */\n\tpublic static readonly BIND = new Token('::', 0);\n\n\t/**\n\t * ___ ?:: ___\n\t * \n\t * ___?::[___]\n\t * \n\t * ___?::()\n\t */\n\tpublic static readonly QUESTION_BIND = new Token('?::', 0);\n\n\t/**\n\t * (\n\t */\n\tpublic static readonly L_PARENTHESES = new Token('(', 0);\n\n\t/**\n\t * )\n\t */\n\tpublic static readonly R_PARENTHESES = new Token(')', 0);\n\n\t/**\n\t * [\n\t */\n\tpublic static readonly L_BRACKETS = new Token('[', 0);\n\n\t/**\n\t * ]\n\t */\n\tpublic static readonly R_BRACKETS = new Token(']', 0);\n\n\t/**\n\t * {\n\t */\n\tpublic static readonly L_CURLY = new Token('{', 0);\n\n\t/**\n\t * }\n\t */\n\tpublic static readonly R_CURLY = new Token('}', 0);\n\n\t/**\n\t * :\n\t */\n\tpublic static readonly COLON = new Token(':', 0);\n\n\t/**\n\t * ...\n\t */\n\tpublic static readonly ELLIPSIS = new Token('...', 0);\n\n\t/**\n\t * ;\n\t */\n\tpublic static readonly SEMICOLON = new Token(';', 0);\n\n\t/**\n\t * end of source\n\t */\n\tpublic static readonly EOS = new Token('EOS', 0);\n\n\t/**\n\t * =>\n\t */\n\tpublic static readonly ARROW = new Token('=>', 0);\n\n\t/**\n\t * ___, ___, ___\n\t */\n\tpublic static readonly COMMA = new Token(',', 1);\n\tpublic static readonly ASYNC = new Token('async', 0);\n\tpublic static readonly AWAIT = new Token('await', 0);\n\tpublic static readonly BREAK = new Token('break', 0);\n\tpublic static readonly CASE = new Token('case', 0);\n\tpublic static readonly CATCH = new Token('catch', 0);\n\tpublic static readonly CLASS = new Token('class', 0);\n\tpublic static readonly CONST = new Token('const', 0);\n\tpublic static readonly CONTINUE = new Token('continue', 0);\n\tpublic static readonly DEBUGGER = new Token('debugger', 0);\n\tpublic static readonly DEFAULT = new Token('default', 0);\n\tpublic static readonly DELETE = new Token('delete', 0);\n\tpublic static readonly DO = new Token('do', 0);\n\tpublic static readonly ELSE = new Token('else', 0);\n\tpublic static readonly ENUM = new Token('enum', 0);\n\tpublic static readonly EXPORT = new Token('export', 0);\n\tpublic static readonly EXTENDS = new Token('extends', 0);\n\tpublic static readonly FALSE_LITERAL = new Token('false', 0);\n\tpublic static readonly FINALLY = new Token('finally', 0);\n\tpublic static readonly FOR = new Token('for', 0);\n\tpublic static readonly FUNCTION = new Token('function', 0);\n\tpublic static readonly GET = new Token('get', 0);\n\tpublic static readonly IF = new Token('if', 0);\n\tpublic static readonly IMPLEMENTS = new Token('implements', 0);\n\tpublic static readonly IMPORT = new Token('import', 0);\n\tpublic static readonly PRIVATE_NAME = new Token('PRIVATE_NAME', 0);\n\tpublic static readonly IN = new Token('in', 10);\n\tpublic static readonly INSTANCEOF = new Token('instanceof', 10);\n\tpublic static readonly LET = new Token('let', 0);\n\tpublic static readonly NEW = new Token('new', 0);\n\tpublic static readonly NULL_LITERAL = new Token('null', 0);\n\tpublic static readonly UNDEFINED_LITERAL = new Token('undefined', 0);\n\tpublic static readonly PACKAGE = new Token('package', 0);\n\tpublic static readonly INTERFACE = new Token('interface', 0);\n\tpublic static readonly PRIVATE = new Token('private', 0);\n\tpublic static readonly PROTECTED = new Token('protected', 0);\n\tpublic static readonly PUBLIC = new Token('public', 0);\n\tpublic static readonly RETURN = new Token('return', 0);\n\tpublic static readonly SET = new Token('set', 0);\n\tpublic static readonly STATIC = new Token('static', 0);\n\tpublic static readonly SUPER = new Token('super', 0);\n\tpublic static readonly SWITCH = new Token('switch', 0);\n\tpublic static readonly THIS = new Token('this', 0);\n\tpublic static readonly THROW = new Token('throw', 0);\n\tpublic static readonly TRUE_LITERAL = new Token('true', 0);\n\tpublic static readonly TRY = new Token('try', 0);\n\tpublic static readonly TYPEOF = new Token('typeof', 0);\n\tpublic static readonly VAR = new Token('var', 0);\n\tpublic static readonly VOID = new Token('void', 0);\n\tpublic static readonly WHILE = new Token('while', 0);\n\tpublic static readonly YIELD = new Token('yield', 0);\n\tpublic static readonly NUMBER = new Token('NUMBER', 0);\n\tpublic static readonly BIGINT = new Token('BIGINT', 0);\n\tpublic static readonly STRING = new Token('STRING', 0);\n\tpublic static readonly IDENTIFIER = new Token('IDENTIFIER', 0);\n\tpublic static readonly TEMPLATE_LITERALS = new Token('TEMPLATE_LITERALS', 0);\n\tpublic static readonly ILLEGAL = new Token('ILLEGAL', 0);\n\tpublic static readonly ESCAPED_KEYWORD = new Token('ESCAPED_KEYWORD', 0);\n\tpublic static readonly WHITESPACE = new Token('WHITESPACE', 0);\n\tpublic static readonly REGEXP_LITERAL = new Token('REGEXP_LITERAL', 0);\n\n\n\tpublic static isPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.L_CURLY:\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.R_BRACKETS:\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isOpenPair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.L_CURLY:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isClosePair(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.R_BRACKETS:\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static openOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.R_CURLY:\n\t\t\t\treturn Token.L_CURLY;\n\t\t\tcase Token.R_BRACKETS:\n\t\t\t\treturn Token.L_BRACKETS;\n\t\t\tcase Token.R_PARENTHESES:\n\t\t\t\treturn Token.L_PARENTHESES;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static closeOf(token: Token): Token {\n\t\tswitch (token) {\n\t\t\tcase Token.L_CURLY:\n\t\t\t\treturn Token.R_CURLY;\n\t\t\tcase Token.L_BRACKETS:\n\t\t\t\treturn Token.R_BRACKETS;\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\t\treturn Token.R_PARENTHESES;\n\t\t}\n\t\treturn token;\n\t}\n\tpublic static isAnyIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isIdentifier(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLiteral(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.UNDEFINED_LITERAL:\n\t\t\tcase Token.NULL_LITERAL:\n\t\t\tcase Token.TRUE_LITERAL:\n\t\t\tcase Token.FALSE_LITERAL:\n\t\t\tcase Token.NUMBER:\n\t\t\tcase Token.BIGINT:\n\t\t\tcase Token.STRING:\n\t\t\tcase Token.REGEXP_LITERAL:\n\t\t\t\t// case Token.SMI:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isArrowOrAssignmentOp(token: Token) {\n\t\treturn token === Token.ARROW || this.isAssignment(token);\n\t}\n\tpublic static isAssignment(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.ASSIGN:\n\t\t\tcase Token.ADD_ASSIGN:\n\t\t\tcase Token.SUB_ASSIGN:\n\t\t\tcase Token.MUL_ASSIGN:\n\t\t\tcase Token.DIV_ASSIGN:\n\t\t\tcase Token.MOD_ASSIGN:\n\t\t\tcase Token.MODULO_ASSIGN:\n\t\t\tcase Token.EXP_ASSIGN:\n\t\t\tcase Token.BIT_XOR_ASSIGN:\n\t\t\tcase Token.BIT_AND_ASSIGN:\n\t\t\tcase Token.BIT_OR_ASSIGN:\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\tcase Token.SHL_ASSIGN:\n\t\t\tcase Token.SAR_ASSIGN:\n\t\t\tcase Token.SHR_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isLogicalAssignmentOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.AND_ASSIGN:\n\t\t\tcase Token.OR_ASSIGN:\n\t\t\tcase Token.NULLISH_ASSIGN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isAutoSemicolon(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SEMICOLON:\n\t\t\tcase Token.R_CURLY:\n\t\t\tcase Token.EOS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isMember(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isTemplate(token: Token): boolean {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isNextLetKeyword(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.L_CURLY:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.IDENTIFIER:\n\t\t\tcase Token.STATIC:\n\t\t\tcase Token.LET: // `let let;` is disallowed by static semantics, but the\n\t\t\t// token must be first interpreted as a keyword in order\n\t\t\t// for those semantics to apply. This ensures that ASI is\n\t\t\t// not honored when a LineTerminator separates the tokens.\n\t\t\tcase Token.YIELD:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.GET:\n\t\t\tcase Token.SET:\n\t\t\tcase Token.ASYNC:\n\t\t\t\treturn true;\n\t\t\t// case Token.FUTURE_STRICT_RESERVED_WORD:\n\t\t\t// return is_sloppy(language_mode());\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\tpublic static isPropertyOrCall(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.TEMPLATE_LITERALS:\n\t\t\tcase Token.PERIOD:\n\t\t\tcase Token.L_BRACKETS:\n\t\t\tcase Token.QUESTION_PERIOD:\n\t\t\tcase Token.L_PARENTHESES:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isPropertyName(token: Token) {\n\t\treturn /\\w/.test(token.getName());\n\t}\n\tprivate static isInRange(op: number, start: Token, end: Token) {\n\t\treturn op >= start.precedence && op <= end.precedence;\n\t}\n\tpublic static isBinary(token: number | Token) {\n\t\tif (token instanceof Token) {\n\t\t\ttoken = token.precedence;\n\t\t}\n\t\treturn Token.isInRange(token, Token.COMMA, Token.SUB);\n\t}\n\n\tpublic static isCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\tcase Token.NE:\n\t\t\tcase Token.NE_STRICT:\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\tcase Token.INSTANCEOF:\n\t\t\tcase Token.IN:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isOrderedRelationalCompare(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.LT:\n\t\t\tcase Token.GT:\n\t\t\tcase Token.LTE:\n\t\t\tcase Token.GTE:\n\t\t\tcase Token.SPACESHIP:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isEquality(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.EQ:\n\t\t\tcase Token.EQ_STRICT:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static binaryOpForAssignment(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.NULLISH_ASSIGN, Token.SUB_ASSIGN)) {\n\t\t\tconst result = token.precedence - Token.NULLISH_ASSIGN.precedence + Token.NULLISH.precedence;\n\t\t\treturn Token.isBinary(result);\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isBitOp(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.BIT_OR:\n\t\t\tcase Token.BIT_XOR:\n\t\t\tcase Token.BIT_AND:\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isUnary(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isUnaryOrCount(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.ADD:\n\t\t\tcase Token.SUB:\n\t\t\tcase Token.INC:\n\t\t\tcase Token.DEC:\n\t\t\tcase Token.NOT:\n\t\t\tcase Token.BIT_NOT:\n\t\t\tcase Token.DELETE:\n\t\t\tcase Token.AWAIT:\n\t\t\tcase Token.TYPEOF:\n\t\t\tcase Token.VOID:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isShift(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.SHL:\n\t\t\tcase Token.SAR:\n\t\t\tcase Token.SHR:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tpublic static isStrictReservedWord(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.IMPLEMENTS:\n\t\t\tcase Token.INTERFACE:\n\t\t\tcase Token.LET:\n\t\t\tcase Token.PACKAGE:\n\t\t\tcase Token.PRIVATE:\n\t\t\tcase Token.PROTECTED:\n\t\t\tcase Token.PUBLIC:\n\t\t\tcase Token.STATIC:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isPipelineOperator(token: Token) {\n\t\tswitch (token) {\n\t\t\tcase Token.PIPELINE:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tpublic static isValidIdentifier(token: Token) {\n\t\tif (Token.isInRange(token.precedence, Token.IDENTIFIER, Token.ASYNC)) return true;\n\t\tif (token == Token.AWAIT || token == Token.YIELD) return false;\n\t\treturn Token.isStrictReservedWord(token) && false;\n\t}\n\n\tconstructor(private name: string, private precedence: number) { }\n\tgetName() {\n\t\treturn this.name;\n\t}\n\tgetPrecedence() {\n\t\treturn this.precedence;\n\t}\n}\n\nexport class TokenExpression {\n\tconstructor(public token: Token, public value?: ExpressionNode) { }\n\tgetValue(): ExpressionNode {\n\t\treturn this.value!;\n\t}\n\tisType(type: Token) {\n\t\treturn this.token === type;\n\t}\n\tisNotType(type: Token) {\n\t\treturn this.token !== type;\n\t}\n\n\ttest(func: (token: Token) => boolean): boolean {\n\t\treturn func(this.token);\n\t}\n\ttoString(): string {\n\t\treturn JSON.stringify(this);\n\t}\n}\n"]}
@@ -1,19 +0,0 @@
1
- import type { NodeDeserializer, ExpressionNode } from '../expression.js';
2
- import type { Stack } from '../../scope/stack.js';
3
- import { AbstractExpressionNode } from '../abstract.js';
4
- export declare class DestructuringAssignmentNode extends AbstractExpressionNode {
5
- private keys;
6
- private arrayOrObject;
7
- private restKey?;
8
- static fromJSON(node: DestructuringAssignmentNode, deserializer: NodeDeserializer): DestructuringAssignmentNode;
9
- constructor(keys: ExpressionNode[], arrayOrObject: ExpressionNode, restKey?: ExpressionNode | undefined);
10
- getKeys(): ExpressionNode[];
11
- getArrayOrObject(): ExpressionNode;
12
- getRestKey(): ExpressionNode | undefined;
13
- set(stack: Stack): any;
14
- get(stack: Stack): any;
15
- entry(): string[];
16
- event(parent?: string): string[];
17
- toString(): string;
18
- toJson(): object;
19
- }
@@ -1,95 +0,0 @@
1
- var DestructuringAssignmentNode_1;
2
- import { __decorate, __metadata } from "tslib";
3
- import { AbstractExpressionNode } from '../abstract.js';
4
- import { Deserializer } from '../deserialize/deserialize.js';
5
- let DestructuringAssignmentNode = DestructuringAssignmentNode_1 = class DestructuringAssignmentNode extends AbstractExpressionNode {
6
- constructor(keys, arrayOrObject, restKey) {
7
- super();
8
- this.keys = keys;
9
- this.arrayOrObject = arrayOrObject;
10
- this.restKey = restKey;
11
- }
12
- static fromJSON(node, deserializer) {
13
- return new DestructuringAssignmentNode_1(node.keys.map(key => deserializer(key)), deserializer(node.arrayOrObject), node.restKey ? deserializer(node.restKey) : void 0);
14
- }
15
- getKeys() {
16
- return this.keys;
17
- }
18
- getArrayOrObject() {
19
- return this.arrayOrObject;
20
- }
21
- getRestKey() {
22
- return this.restKey;
23
- }
24
- set(stack) {
25
- const value = this.arrayOrObject.get(stack);
26
- if (Array.isArray(value)) {
27
- let lastIndex = -1;
28
- this.keys.forEach((key, index) => {
29
- lastIndex = index;
30
- key.set(stack, value[index]);
31
- });
32
- this.restKey?.set(stack, value.slice(++lastIndex));
33
- }
34
- else if (Symbol.iterator in value) {
35
- const iterator = value[Symbol.iterator]();
36
- this.keys.forEach((key, index) => {
37
- key.set(stack, iterator.next().value);
38
- });
39
- if (this.restKey) {
40
- const restValues = [];
41
- let result;
42
- while (true) {
43
- result = iterator.next();
44
- if (result.done) {
45
- break;
46
- }
47
- restValues.push(result.value);
48
- }
49
- this.restKey.set(stack, restValues);
50
- }
51
- }
52
- else if (typeof value === 'object') {
53
- const destructedKeys = [];
54
- this.keys.forEach(key => {
55
- const propName = key.get(stack);
56
- key.set(stack, value[propName]);
57
- destructedKeys.push(propName);
58
- });
59
- if (this.restKey) {
60
- this.restKey?.set(stack, Object.keys(value)
61
- .filter(propName => !destructedKeys.includes(propName))
62
- .reduce((obj, propName) => {
63
- obj[propName] = value[propName];
64
- return obj;
65
- }, {}));
66
- }
67
- }
68
- return value;
69
- }
70
- get(stack) {
71
- return this.set(stack);
72
- }
73
- entry() {
74
- return [...this.keys.flatMap(key => key.entry()), ...(this.restKey?.entry() || [])];
75
- }
76
- event(parent) {
77
- return [...this.keys.flatMap(key => key.event()), ...(this.restKey?.event() || [])];
78
- }
79
- toString() {
80
- return `{${this.keys.map(key => key.toString()).join(', ')}${this.restKey ? ', ...' : ''}${this.restKey?.toString()}} = ${this.arrayOrObject.toString()}`;
81
- }
82
- toJson() {
83
- return {
84
- keys: this.keys.map(key => key.toJSON()),
85
- arrayOrObject: this.arrayOrObject.toJSON(),
86
- restKey: this.restKey?.toJSON()
87
- };
88
- }
89
- };
90
- DestructuringAssignmentNode = DestructuringAssignmentNode_1 = __decorate([
91
- Deserializer('destruct'),
92
- __metadata("design:paramtypes", [Array, Object, Object])
93
- ], DestructuringAssignmentNode);
94
- export { DestructuringAssignmentNode };
95
- //# sourceMappingURL=destruct.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"destruct.js","sourceRoot":"","sources":["../../../../src/expressions/api/operators/destruct.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../expression.js';\nimport type { Stack } from '../../scope/stack.js';\nimport { AbstractExpressionNode } from '../abstract.js';\nimport { Deserializer } from '../deserialize/deserialize.js';\n\n@Deserializer('destruct')\nexport class DestructuringAssignmentNode extends AbstractExpressionNode {\n\tstatic fromJSON(node: DestructuringAssignmentNode, deserializer: NodeDeserializer): DestructuringAssignmentNode {\n\t\treturn new DestructuringAssignmentNode(\n\t\t\tnode.keys.map(key => deserializer(key)),\n\t\t\tdeserializer(node.arrayOrObject),\n\t\t\tnode.restKey ? deserializer(node.restKey) : void 0\n\t\t);\n\t}\n\tconstructor(private keys: ExpressionNode[], private arrayOrObject: ExpressionNode, private restKey?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetKeys() {\n\t\treturn this.keys;\n\t}\n\tgetArrayOrObject() {\n\t\treturn this.arrayOrObject;\n\t}\n\tgetRestKey() {\n\t\treturn this.restKey;\n\t}\n\tset(stack: Stack) {\n\t\tconst value = this.arrayOrObject.get(stack);\n\t\tif (Array.isArray(value)) {\n\t\t\tlet lastIndex = -1;\n\t\t\tthis.keys.forEach((key, index) => {\n\t\t\t\tlastIndex = index;\n\t\t\t\tkey.set(stack, value[index]);\n\t\t\t});\n\t\t\tthis.restKey?.set(stack, value.slice(++lastIndex));\n\t\t} else if (Symbol.iterator in value) {\n\t\t\tconst iterator: Iterator<any> = value[Symbol.iterator]();\n\t\t\tthis.keys.forEach((key, index) => {\n\t\t\t\tkey.set(stack, iterator.next().value);\n\t\t\t});\n\t\t\tif (this.restKey) {\n\t\t\t\tconst restValues: any[] = [];\n\t\t\t\tlet result: IteratorResult<any, any>;\n\t\t\t\twhile (true) {\n\t\t\t\t\tresult = iterator.next();\n\t\t\t\t\tif (result.done) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\trestValues.push(result.value);\n\t\t\t\t}\n\t\t\t\tthis.restKey.set(stack, restValues);\n\t\t\t}\n\n\t\t} else if (typeof value === 'object') {\n\t\t\tconst destructedKeys: string[] = [];\n\t\t\tthis.keys.forEach(key => {\n\t\t\t\tconst propName = key.get(stack);\n\t\t\t\tkey.set(stack, value[propName]);\n\t\t\t\tdestructedKeys.push(propName);\n\t\t\t});\n\t\t\tif (this.restKey) {\n\t\t\t\tthis.restKey?.set(stack, Object.keys(value)\n\t\t\t\t\t.filter(propName => !destructedKeys.includes(propName))\n\t\t\t\t\t.reduce((obj, propName) => {\n\t\t\t\t\t\tobj[propName] = value[propName];\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t}, {} as { [key: string]: any }));\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t}\n\tget(stack: Stack) {\n\t\treturn this.set(stack);\n\t}\n\tentry(): string[] {\n\t\treturn [...this.keys.flatMap(key => key.entry()), ...(this.restKey?.entry() || [])];\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn [...this.keys.flatMap(key => key.event()), ...(this.restKey?.event() || [])];\n\t}\n\ttoString() {\n\t\treturn `{${this.keys.map(key => key.toString()).join(', ')}${this.restKey ? ', ...' : ''}${this.restKey?.toString()}} = ${this.arrayOrObject.toString()}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tkeys: this.keys.map(key => key.toJSON()),\n\t\t\tarrayOrObject: this.arrayOrObject.toJSON(),\n\t\t\trestKey: this.restKey?.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"block.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/controlflow/block.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAOnE,IAAa,cAAc,sBAA3B,MAAa,cAAe,SAAQ,sBAAsB;IAIzD,YAAoB,IAAsB,EAAS,WAAoB;QACtE,KAAK,EAAE,CAAC;QADW,SAAI,GAAJ,IAAI,CAAkB;QAAS,gBAAW,GAAX,WAAW,CAAS;IAEvE,CAAC;IALD,MAAM,CAAC,QAAQ,CAAC,IAAoB,EAAE,YAA8B;QACnE,OAAO,IAAI,gBAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACxF,CAAC;IAID,OAAO;QACN,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,WAAW,EAAE;gBACrB,QAAQ,IAAI,EAAE;oBACb,KAAK,cAAc,CAAC,WAAW,KAAK,KAAK,CAAC;oBAC1C,KAAK,iBAAiB,CAAC,cAAc,KAAK,KAAK,CAAC;oBAChD,KAAK,KAAK,YAAY,WAAW;wBAChC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;wBAC1B,OAAO,KAAK,CAAC;iBACd;aACD;iBAAM;gBACN,IAAI,KAAK,YAAY,WAAW,EAAE;oBACjC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAC1B,OAAO,KAAK,CAAC,KAAK,CAAC;iBACnB;aACD;SACD;QACD,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,MAAe;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;IACD,QAAQ;QACP,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACpE,CAAC;IACD,MAAM;QACL,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACtF,CAAC;CACD,CAAA;AA9CY,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CA8C1B;SA9CY,cAAc","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode, ReturnValue } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { BreakStatement, ContinueStatement } from './terminate.js';\n\n/**\n * A block statement (or compound statement in other languages) is used to group zero or more statements.\n * The block is delimited by a pair of braces (\"curly brackets\") and may optionally be labelled:\n */\n@Deserializer('BlockStatement')\nexport class BlockStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: BlockStatement, deserializer: NodeDeserializer): BlockStatement {\n\t\treturn new BlockStatement(node.body.map(line => deserializer(line)), node.isStatement);\n\t}\n\tconstructor(private body: ExpressionNode[], public isStatement: boolean) {\n\t\tsuper();\n\t}\n\tgetBody() {\n\t\treturn this.body;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`BlockStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst blockScope = stack.pushBlockScope();\n\t\tfor (const node of this.body) {\n\t\t\tconst value = node.get(stack);\n\t\t\tif (this.isStatement) {\n\t\t\t\tswitch (true) {\n\t\t\t\t\tcase BreakStatement.BreakSymbol === value:\n\t\t\t\t\tcase ContinueStatement.ContinueSymbol === value:\n\t\t\t\t\tcase value instanceof ReturnValue:\n\t\t\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (value instanceof ReturnValue) {\n\t\t\t\t\tstack.clearTo(blockScope);\n\t\t\t\t\treturn value.value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(blockScope);\n\t}\n\tentry(): string[] {\n\t\treturn this.body.flatMap(node => node.entry());\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn this.body.flatMap(node => node.event(parent));\n\t}\n\ttoString(): string {\n\t\treturn `{ ${this.body.map(node => node.toString()).join('; ')}; }`;\n\t}\n\ttoJson(): object {\n\t\treturn { body: this.body.map(node => node.toJSON()), isStatement: this.isStatement };\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/controlflow/empty.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAUhE,IAAa,cAAc,sBAA3B,MAAa,cAAe,SAAQ,sBAAsB;IAMzD;QACC,KAAK,EAAE,CAAC;QAFD,cAAS,GAAG,GAAG,CAAC;IAGxB,CAAC;IAND,MAAM,CAAC,QAAQ,CAAC,IAAoB;QACnC,OAAO,gBAAc,CAAC,QAAQ,CAAC;IAChC,CAAC;IAKD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,KAAK,CAAC,CAAC;IACf,CAAC;IACD,KAAK;QACJ,OAAO,EAAE,CAAC;IACX,CAAC;IACD,KAAK,CAAC,MAAe;QACpB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IACD,MAAM;QACL,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAA;AA1BO,uBAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAc,EAAE,CAAmB,CAAC;AAD5D,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;;GAClB,cAAc,CA2B1B;SA3BY,cAAc","sourcesContent":["import type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\n\n/**\n * The empty statement is a semicolon (;) indicating that no statement will be executed,\n * even if JavaScript syntax requires one.\n * The opposite behavior, where you want multiple statements,\n * but JavaScript only allows a single one, is possible using a block statement,\n * which combines several statements into a single one.\n */\n@Deserializer('EmptyStatement')\nexport class EmptyStatement extends AbstractExpressionNode {\n\tstatic INSTANCE = Object.freeze(new EmptyStatement()) as EmptyStatement;\n\tstatic fromJSON(node: EmptyStatement): EmptyStatement {\n\t\treturn EmptyStatement.INSTANCE;\n\t}\n\tprivate semicolon = ';';\n\tconstructor() {\n\t\tsuper();\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`EmptyStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn void 0;\n\t}\n\tentry(): string[] {\n\t\treturn [];\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn this.semicolon;\n\t}\n\ttoJson(): object {\n\t\treturn {};\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"if.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/controlflow/if.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NodeDeserializer, ExpressionNode } from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\n\n/**\n * The if statement executes a statement if a specified condition is truthy.\n * If the condition is falsy, another statement can be executed.\n * \n */\n@Deserializer('IfStatement')\nexport class IfStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: IfStatement, deserializer: NodeDeserializer): IfStatement {\n\t\treturn new IfStatement(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent),\n\t\t\tnode.alternate ? deserializer(node.alternate) : void 0\n\t\t);\n\t}\n\tconstructor(private test: ExpressionNode, private consequent: ExpressionNode, private alternate?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tgetAlternate() {\n\t\treturn this.alternate;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`IfStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\tconst condition = this.test.get(stack);\n\t\tif (condition) {\n\t\t\tconst ifBlock = stack.pushBlockScope();\n\t\t\tconst value = this.consequent.get(stack);\n\t\t\tstack.clearTo(ifBlock);\n\t\t\treturn value;\n\t\t} else if (this.alternate) {\n\t\t\tconst elseBlock = stack.pushBlockScope();\n\t\t\tconst value = this.alternate.get(stack);\n\t\t\tstack.clearTo(elseBlock);\n\t\t\treturn value;\n\t\t}\n\t\treturn void 0;\n\t}\n\tentry(): string[] {\n\t\treturn this.test.entry().concat(this.consequent.entry()).concat(this.alternate?.entry() || []);\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn this.test.event().concat(this.consequent.event()).concat(this.alternate?.event() || []);\n\t}\n\ttoString(): string {\n\t\treturn `if (${this.test.toString()}) ${this.consequent.toString()}${this.alternate ? ' else ' : ''}${this.alternate ? this.alternate.toString() : ''}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON(),\n\t\t\talternate: this.alternate?.toJSON()\n\t\t};\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/controlflow/switch.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport type { NodeDeserializer, ExpressionNode } from '../../expression.js';\nimport type { Stack } from '../../../scope/stack.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\nimport { BreakStatement } from './terminate.js';\nimport { Identifier } from '../../definition/values.js';\n\n\n@Deserializer('SwitchCase')\nexport class SwitchCase extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchCase, deserializer: NodeDeserializer): SwitchCase {\n\t\treturn new SwitchCase(\n\t\t\tdeserializer(node.test),\n\t\t\tdeserializer(node.consequent)\n\t\t);\n\t}\n\tconstructor(protected test: ExpressionNode, protected consequent: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetTest() {\n\t\treturn this.test;\n\t}\n\tgetConsequent() {\n\t\treturn this.consequent;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchCase#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.consequent.get(stack);\n\t}\n\tentry(): string[] {\n\t\treturn this.test.entry();\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn this.test.event();\n\t}\n\ttoString(): string {\n\t\treturn `case ${this.test.toString()}: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\ttest: this.test.toJSON(),\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n@Deserializer('default')\nexport class DefaultExpression extends SwitchCase {\n\tstatic DEFAULT_KEYWORD = 'default';\n\tstatic DefaultNode = Object.freeze(new Identifier(DefaultExpression.DEFAULT_KEYWORD)) as Identifier;\n\tstatic fromJSON(node: DefaultExpression, deserializer: NodeDeserializer): DefaultExpression {\n\t\treturn new DefaultExpression(deserializer(node.consequent));\n\t}\n\tconstructor(block: ExpressionNode) {\n\t\tsuper(DefaultExpression.DefaultNode, block);\n\t}\n\ttoString(): string {\n\t\treturn `default: ${this.consequent.toString()};`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tconsequent: this.consequent.toJSON()\n\t\t};\n\t}\n}\n\n/**\n * The switch statement evaluates an expression, matching the expression's value to a case clause,\n * and executes statements associated with that case,\n * as well as statements in cases that follow the matching case.\n * \n */\n@Deserializer('SwitchStatement')\nexport class SwitchStatement extends AbstractExpressionNode {\n\tstatic fromJSON(node: SwitchStatement, deserializer: NodeDeserializer): SwitchStatement {\n\t\treturn new SwitchStatement(\n\t\t\tdeserializer(node.discriminant),\n\t\t\tnode.cases.map(deserializer) as SwitchCase[]\n\t\t);\n\t}\n\tconstructor(private discriminant: ExpressionNode, private cases: SwitchCase[]) {\n\t\tsuper();\n\t}\n\tgetDiscriminant() {\n\t\treturn this.discriminant;\n\t}\n\tgetCases() {\n\t\treturn this.cases;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`SwitchStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\t// need to fix statements execution and support default case\n\t\t// stack = stack.newStack();\n\t\tconst result = this.discriminant.get(stack);\n\t\tconst values = this.cases.map(item => item.getTest().get(stack));\n\t\tlet startIndex = values.findIndex(item => result === item);\n\t\tif (startIndex === -1) {\n\t\t\t// search for default statement\n\t\t\tstartIndex = this.cases.findIndex(item => item instanceof DefaultExpression);\n\t\t\tif (startIndex === -1) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tconst caseBlock = stack.pushBlockScope();\n\t\tfor (let index = startIndex; index < this.cases.length; index++) {\n\t\t\tconst returnValue = this.cases[index].get(stack);\n\t\t\tif (returnValue === BreakStatement.BreakSymbol) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tstack.clearTo(caseBlock);\n\t\treturn void 0;\n\t}\n\tentry(): string[] {\n\t\treturn this.discriminant.entry().concat(this.cases.flatMap(item => item.entry()));\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn [\n\t\t\t...this.discriminant.event(),\n\t\t\t...this.cases\n\t\t\t\t.filter(c => c.getTest() !== DefaultExpression.DefaultNode)\n\t\t\t\t.flatMap(c => c.getTest().event())\n\t\t];\n\t}\n\ttoString(): string {\n\t\treturn `switch (${this.discriminant.toString()}) {${this.cases.map(item => item.toString())}`;\n\t}\n\ttoJson(): object {\n\t\treturn {\n\t\t\tdiscriminant: this.discriminant.toJSON(),\n\t\t\tcases: this.cases.map(item => item.toJSON())\n\t\t};\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminate.js","sourceRoot":"","sources":["../../../../../src/expressions/api/statement/controlflow/terminate.ts"],"names":[],"mappings":";;AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAUhE,MAAM,kBAAmB,SAAQ,sBAAsB;IAEtD,YAAoB,MAAc,EAAU,KAAsB;QACjE,KAAK,EAAE,CAAC;QADW,WAAM,GAAN,MAAM,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAiB;IAElE,CAAC;IACD,SAAS;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,QAAQ;QACP,IAAI,CAAC,KAAK,CAAC;IACZ,CAAC;IACD,GAAG,CAAC,KAAY,EAAE,KAAU;QAC3B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IACD,GAAG,CAAC,KAAY;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,KAAK;QACJ,OAAO,EAAE,CAAC;IACX,CAAC;IACD,KAAK,CAAC,MAAe;QACpB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,QAAQ;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,WAAY,CAAC;IACjC,CAAC;IACD,MAAM;QACL,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/D,CAAC;CACD;AAGD,IAAa,cAAc,sBAA3B,MAAa,cAAe,SAAQ,kBAAkB;IAGrD,MAAM,CAAC,QAAQ,CAAC,IAAoB;QACnC,OAAO,gBAAc,CAAC,cAAc,CAAC;IACtC,CAAC;CACD,CAAA;AALgB,0BAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAClC,6BAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAc,CAAC,gBAAc,CAAC,WAAW,CAAC,CAAmB,CAAC;AAFrG,cAAc;IAD1B,YAAY,CAAC,gBAAgB,CAAC;GAClB,cAAc,CAM1B;SANY,cAAc;AAS3B,IAAa,iBAAiB,yBAA9B,MAAa,iBAAkB,SAAQ,kBAAkB;IAGxD,MAAM,CAAC,QAAQ,CAAC,IAAuB;QACtC,OAAO,mBAAiB,CAAC,iBAAiB,CAAC;IAC5C,CAAC;CACD,CAAA;AALgB,gCAAc,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,mCAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,mBAAiB,CAAC,mBAAiB,CAAC,cAAc,CAAC,CAAsB,CAAC;AAFpH,iBAAiB;IAD7B,YAAY,CAAC,mBAAmB,CAAC;GACrB,iBAAiB,CAM7B;SANY,iBAAiB","sourcesContent":["import type { Stack } from '../../../scope/stack.js';\nimport type { ExpressionNode } from '../../expression.js';\nimport { AbstractExpressionNode } from '../../abstract.js';\nimport { Deserializer } from '../../deserialize/deserialize.js';\n\n/**\n * The break statement terminates the current loop, switch, or label statement\n * and transfers program control to the statement following the terminated statement.\n * \n * The continue statement terminates execution of the statements in the current iteration of the current or labeled loop,\n * and continues execution of the loop with the next iteration.\n *\n */\nclass TerminateStatement extends AbstractExpressionNode {\n\n\tconstructor(private symbol: Symbol, private label?: ExpressionNode) {\n\t\tsuper();\n\t}\n\tgetSymbol() {\n\t\treturn this.symbol;\n\t}\n\tgetLabel() {\n\t\tthis.label;\n\t}\n\tset(stack: Stack, value: any) {\n\t\tthrow new Error(`TerminateStatement#set() has no implementation.`);\n\t}\n\tget(stack: Stack) {\n\t\treturn this.symbol;\n\t}\n\tentry(): string[] {\n\t\treturn [];\n\t}\n\tevent(parent?: string): string[] {\n\t\treturn [];\n\t}\n\ttoString(): string {\n\t\treturn this.symbol.description!;\n\t}\n\ttoJson(): object {\n\t\treturn { symbol: this.symbol.description, label: this.label };\n\t}\n}\n\n@Deserializer('BreakStatement')\nexport class BreakStatement extends TerminateStatement {\n\tstatic readonly BreakSymbol = Symbol.for('break');\n\tstatic readonly BREAK_INSTANCE = Object.freeze(new BreakStatement(BreakStatement.BreakSymbol)) as BreakStatement;\n\tstatic fromJSON(node: BreakStatement): BreakStatement {\n\t\treturn BreakStatement.BREAK_INSTANCE;\n\t}\n}\n\n@Deserializer('ContinueStatement')\nexport class ContinueStatement extends TerminateStatement {\n\tstatic readonly ContinueSymbol = Symbol.for('continue');\n\tstatic readonly CONTINUE_INSTANCE = Object.freeze(new ContinueStatement(ContinueStatement.ContinueSymbol)) as ContinueStatement;\n\tstatic fromJSON(node: ContinueStatement): ContinueStatement {\n\t\treturn ContinueStatement.CONTINUE_INSTANCE;\n\t}\n}\n"]}