@mojir/lits 2.1.4 → 2.1.6

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 (352) hide show
  1. package/dist/cli/cli.js +26924 -7777
  2. package/dist/cli/reference/api.d.ts +28 -10
  3. package/dist/cli/reference/categories/grid/index.d.ts +3 -0
  4. package/dist/cli/reference/categories/linearAlgebra/index.d.ts +3 -0
  5. package/dist/cli/reference/categories/matrix/index.d.ts +3 -0
  6. package/dist/cli/reference/categories/numberTheory/abundant.d.ts +2 -0
  7. package/dist/cli/reference/categories/numberTheory/arithmetic.d.ts +2 -0
  8. package/dist/cli/reference/categories/numberTheory/bell.d.ts +2 -0
  9. package/dist/cli/reference/categories/numberTheory/bernoulli.d.ts +2 -0
  10. package/dist/cli/reference/categories/numberTheory/catalan.d.ts +2 -0
  11. package/dist/cli/reference/categories/numberTheory/collatz.d.ts +2 -0
  12. package/dist/cli/reference/categories/numberTheory/composite.d.ts +2 -0
  13. package/dist/cli/reference/categories/numberTheory/deficient.d.ts +2 -0
  14. package/dist/cli/reference/categories/numberTheory/factorial.d.ts +2 -0
  15. package/dist/cli/reference/categories/numberTheory/fibonacci.d.ts +2 -0
  16. package/dist/cli/reference/categories/numberTheory/geometric.d.ts +2 -0
  17. package/dist/cli/reference/categories/numberTheory/golomb.d.ts +2 -0
  18. package/dist/cli/reference/categories/numberTheory/happy.d.ts +2 -0
  19. package/dist/cli/reference/categories/numberTheory/index.d.ts +12 -0
  20. package/dist/cli/reference/categories/numberTheory/juggler.d.ts +2 -0
  21. package/dist/cli/reference/categories/numberTheory/lookAndSay.d.ts +2 -0
  22. package/dist/cli/reference/categories/numberTheory/lucas.d.ts +2 -0
  23. package/dist/cli/reference/categories/numberTheory/lucky.d.ts +2 -0
  24. package/dist/cli/reference/categories/numberTheory/mersenne.d.ts +2 -0
  25. package/dist/cli/reference/categories/numberTheory/padovan.d.ts +2 -0
  26. package/dist/cli/reference/categories/numberTheory/partition.d.ts +2 -0
  27. package/dist/cli/reference/categories/numberTheory/pell.d.ts +2 -0
  28. package/dist/cli/reference/categories/numberTheory/perfect.d.ts +2 -0
  29. package/dist/cli/reference/categories/numberTheory/perfectCube.d.ts +2 -0
  30. package/dist/cli/reference/categories/numberTheory/perfectPower.d.ts +2 -0
  31. package/dist/cli/reference/categories/numberTheory/perfectSquare.d.ts +2 -0
  32. package/dist/cli/reference/categories/numberTheory/polygonal.d.ts +2 -0
  33. package/dist/cli/reference/categories/numberTheory/prime.d.ts +2 -0
  34. package/dist/cli/reference/categories/numberTheory/recaman.d.ts +2 -0
  35. package/dist/cli/reference/categories/numberTheory/sylvester.d.ts +2 -0
  36. package/dist/cli/reference/categories/numberTheory/thueMorse.d.ts +2 -0
  37. package/dist/cli/reference/categories/numberTheory/tribonacci.d.ts +2 -0
  38. package/dist/cli/reference/categories/random.d.ts +3 -0
  39. package/dist/cli/reference/categories/vector/entropy.d.ts +2 -0
  40. package/dist/cli/reference/categories/vector/giniCoefficient.d.ts +2 -0
  41. package/dist/cli/reference/categories/vector/index.d.ts +7 -0
  42. package/dist/cli/reference/categories/vector/iqr.d.ts +2 -0
  43. package/dist/cli/reference/categories/vector/kurtosis.d.ts +5 -0
  44. package/dist/cli/reference/categories/vector/mad.d.ts +2 -0
  45. package/dist/cli/reference/categories/vector/max.d.ts +2 -0
  46. package/dist/cli/reference/categories/vector/mean.d.ts +4 -0
  47. package/dist/cli/reference/categories/vector/medad.d.ts +2 -0
  48. package/dist/cli/reference/categories/vector/median.d.ts +2 -0
  49. package/dist/cli/reference/categories/vector/min.d.ts +2 -0
  50. package/dist/cli/reference/categories/vector/prod.d.ts +2 -0
  51. package/dist/cli/reference/categories/vector/rms.d.ts +2 -0
  52. package/dist/cli/reference/categories/vector/skewness.d.ts +3 -0
  53. package/dist/cli/reference/categories/vector/span.d.ts +2 -0
  54. package/dist/cli/reference/categories/vector/standardDeviation.d.ts +3 -0
  55. package/dist/cli/reference/categories/vector/sum.d.ts +2 -0
  56. package/dist/cli/reference/categories/vector/variance.d.ts +3 -0
  57. package/dist/cli/reference/index.d.ts +606 -209
  58. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/grid/fromArray.d.ts +8 -0
  59. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/grid/index.d.ts +2 -0
  60. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/grid/transpose.d.ts +2 -0
  61. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/calcFractionalRanks.d.ts +1 -0
  62. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/collinear.d.ts +2 -0
  63. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/corrleation.d.ts +8 -0
  64. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/covariance.d.ts +4 -0
  65. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/gaussJordanElimination.d.ts +7 -0
  66. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/isZeroVector.d.ts +1 -0
  67. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/kendallTau.d.ts +10 -0
  68. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/pearsonCorr.d.ts +1 -0
  69. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/solve.d.ts +8 -0
  70. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/index.d.ts +2 -0
  71. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/adjugate.d.ts +1 -0
  72. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/band.d.ts +9 -0
  73. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/cofactor.d.ts +1 -0
  74. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/determinant.d.ts +6 -0
  75. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/inverse.d.ts +6 -0
  76. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isBanded.d.ts +11 -0
  77. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isDiagonal.d.ts +10 -0
  78. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isIdentity.d.ts +1 -0
  79. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isOrthogonal.d.ts +1 -0
  80. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isSquare.d.ts +1 -0
  81. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isSymetric.d.ts +8 -0
  82. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isTriangular.d.ts +13 -0
  83. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/matrixMultiply.d.ts +7 -0
  84. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/minor.d.ts +1 -0
  85. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/norm1.d.ts +1 -0
  86. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/trace.d.ts +8 -0
  87. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/matrix/index.d.ts +2 -0
  88. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/binomialCefficient.d.ts +1 -0
  89. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/combinations.d.ts +2 -0
  90. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/derangements.d.ts +2 -0
  91. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/divisors.d.ts +4 -0
  92. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/factorial.d.ts +3 -0
  93. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/index.d.ts +2 -0
  94. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/partitions.d.ts +2 -0
  95. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/permutations.d.ts +2 -0
  96. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/powerSet.d.ts +2 -0
  97. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/primeFactors.d.ts +11 -0
  98. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/abundant.d.ts +2 -0
  99. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/arithmetic.d.ts +2 -0
  100. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/bell.d.ts +1 -0
  101. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/bernoulli.d.ts +2 -0
  102. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/catalan.d.ts +1 -0
  103. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/collatz.d.ts +2 -0
  104. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/composite.d.ts +3 -0
  105. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/deficient.d.ts +2 -0
  106. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/factorial.d.ts +1 -0
  107. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/fibonacci.d.ts +1 -0
  108. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/geometric.d.ts +2 -0
  109. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/golomb.d.ts +2 -0
  110. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/happy.d.ts +2 -0
  111. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/index.d.ts +26 -0
  112. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/juggler.d.ts +2 -0
  113. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lookAndSay.d.ts +2 -0
  114. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lucas.d.ts +1 -0
  115. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lucky.d.ts +2 -0
  116. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/mersenne.d.ts +1 -0
  117. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/padovan.d.ts +2 -0
  118. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/partition.d.ts +1 -0
  119. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/pell.d.ts +1 -0
  120. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfect.d.ts +1 -0
  121. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectCube.d.ts +2 -0
  122. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectPower.d.ts +10 -0
  123. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectSquare.d.ts +2 -0
  124. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/poligonal.d.ts +2 -0
  125. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/prime.d.ts +3 -0
  126. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/recaman.d.ts +9 -0
  127. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/sylvester.d.ts +1 -0
  128. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/thueMorse.d.ts +2 -0
  129. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/tribonacci.d.ts +1 -0
  130. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/random/index.d.ts +2 -0
  131. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/bincount.d.ts +9 -0
  132. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/calcMad.d.ts +1 -0
  133. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/calcMean.d.ts +1 -0
  134. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/calcMedad.d.ts +1 -0
  135. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/calcMedian.d.ts +1 -0
  136. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/calcStdDev.d.ts +2 -0
  137. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/calcVariance.d.ts +2 -0
  138. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/entropy.d.ts +8 -0
  139. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/histogram.d.ts +9 -0
  140. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/index.d.ts +2 -0
  141. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/mode.d.ts +6 -0
  142. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/outliers.d.ts +7 -0
  143. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/percentile.d.ts +7 -0
  144. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/quartiles.d.ts +1 -0
  145. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/entropy.d.ts +2 -0
  146. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/giniCoefficient.d.ts +2 -0
  147. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/index.d.ts +13 -0
  148. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/iqr.d.ts +2 -0
  149. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/kurtosis.d.ts +5 -0
  150. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/mad.d.ts +2 -0
  151. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/max.d.ts +2 -0
  152. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/mean.d.ts +4 -0
  153. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/medad.d.ts +2 -0
  154. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/median.d.ts +2 -0
  155. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/min.d.ts +2 -0
  156. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/prod.d.ts +2 -0
  157. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/rms.d.ts +2 -0
  158. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/skewness.d.ts +3 -0
  159. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/span.d.ts +2 -0
  160. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/standardDeviation.d.ts +3 -0
  161. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/sum.d.ts +2 -0
  162. package/dist/cli/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/variance.d.ts +3 -0
  163. package/dist/cli/src/errors.d.ts +1 -4
  164. package/dist/cli/src/evaluator/interface.d.ts +2 -2
  165. package/dist/cli/src/parser/types.d.ts +6 -4
  166. package/dist/cli/src/tokenizer/operators.d.ts +2 -2
  167. package/dist/cli/src/tokenizer/reservedNames.d.ts +2 -0
  168. package/dist/cli/src/typeGuards/annotatedArrays.d.ts +12 -0
  169. package/dist/cli/src/typeGuards/lits.d.ts +4 -1
  170. package/dist/cli/src/utils/index.d.ts +2 -0
  171. package/dist/index.esm.js +25685 -7953
  172. package/dist/index.esm.js.map +1 -1
  173. package/dist/index.js +25687 -7952
  174. package/dist/index.js.map +1 -1
  175. package/dist/lits.iife.js +25687 -7952
  176. package/dist/lits.iife.js.map +1 -1
  177. package/dist/reference/api.d.ts +28 -10
  178. package/dist/reference/categories/grid/index.d.ts +3 -0
  179. package/dist/reference/categories/linearAlgebra/index.d.ts +3 -0
  180. package/dist/reference/categories/matrix/index.d.ts +3 -0
  181. package/dist/reference/categories/numberTheory/abundant.d.ts +2 -0
  182. package/dist/reference/categories/numberTheory/arithmetic.d.ts +2 -0
  183. package/dist/reference/categories/numberTheory/bell.d.ts +2 -0
  184. package/dist/reference/categories/numberTheory/bernoulli.d.ts +2 -0
  185. package/dist/reference/categories/numberTheory/catalan.d.ts +2 -0
  186. package/dist/reference/categories/numberTheory/collatz.d.ts +2 -0
  187. package/dist/reference/categories/numberTheory/composite.d.ts +2 -0
  188. package/dist/reference/categories/numberTheory/deficient.d.ts +2 -0
  189. package/dist/reference/categories/numberTheory/factorial.d.ts +2 -0
  190. package/dist/reference/categories/numberTheory/fibonacci.d.ts +2 -0
  191. package/dist/reference/categories/numberTheory/geometric.d.ts +2 -0
  192. package/dist/reference/categories/numberTheory/golomb.d.ts +2 -0
  193. package/dist/reference/categories/numberTheory/happy.d.ts +2 -0
  194. package/dist/reference/categories/numberTheory/index.d.ts +12 -0
  195. package/dist/reference/categories/numberTheory/juggler.d.ts +2 -0
  196. package/dist/reference/categories/numberTheory/lookAndSay.d.ts +2 -0
  197. package/dist/reference/categories/numberTheory/lucas.d.ts +2 -0
  198. package/dist/reference/categories/numberTheory/lucky.d.ts +2 -0
  199. package/dist/reference/categories/numberTheory/mersenne.d.ts +2 -0
  200. package/dist/reference/categories/numberTheory/padovan.d.ts +2 -0
  201. package/dist/reference/categories/numberTheory/partition.d.ts +2 -0
  202. package/dist/reference/categories/numberTheory/pell.d.ts +2 -0
  203. package/dist/reference/categories/numberTheory/perfect.d.ts +2 -0
  204. package/dist/reference/categories/numberTheory/perfectCube.d.ts +2 -0
  205. package/dist/reference/categories/numberTheory/perfectPower.d.ts +2 -0
  206. package/dist/reference/categories/numberTheory/perfectSquare.d.ts +2 -0
  207. package/dist/reference/categories/numberTheory/polygonal.d.ts +2 -0
  208. package/dist/reference/categories/numberTheory/prime.d.ts +2 -0
  209. package/dist/reference/categories/numberTheory/recaman.d.ts +2 -0
  210. package/dist/reference/categories/numberTheory/sylvester.d.ts +2 -0
  211. package/dist/reference/categories/numberTheory/thueMorse.d.ts +2 -0
  212. package/dist/reference/categories/numberTheory/tribonacci.d.ts +2 -0
  213. package/dist/reference/categories/random.d.ts +3 -0
  214. package/dist/reference/categories/vector/entropy.d.ts +2 -0
  215. package/dist/reference/categories/vector/giniCoefficient.d.ts +2 -0
  216. package/dist/reference/categories/vector/index.d.ts +7 -0
  217. package/dist/reference/categories/vector/iqr.d.ts +2 -0
  218. package/dist/reference/categories/vector/kurtosis.d.ts +5 -0
  219. package/dist/reference/categories/vector/mad.d.ts +2 -0
  220. package/dist/reference/categories/vector/max.d.ts +2 -0
  221. package/dist/reference/categories/vector/mean.d.ts +4 -0
  222. package/dist/reference/categories/vector/medad.d.ts +2 -0
  223. package/dist/reference/categories/vector/median.d.ts +2 -0
  224. package/dist/reference/categories/vector/min.d.ts +2 -0
  225. package/dist/reference/categories/vector/prod.d.ts +2 -0
  226. package/dist/reference/categories/vector/rms.d.ts +2 -0
  227. package/dist/reference/categories/vector/skewness.d.ts +3 -0
  228. package/dist/reference/categories/vector/span.d.ts +2 -0
  229. package/dist/reference/categories/vector/standardDeviation.d.ts +3 -0
  230. package/dist/reference/categories/vector/sum.d.ts +2 -0
  231. package/dist/reference/categories/vector/variance.d.ts +3 -0
  232. package/dist/reference/index.d.ts +606 -209
  233. package/dist/src/builtin/normalExpressions/categories/namespaces/grid/fromArray.d.ts +8 -0
  234. package/dist/src/builtin/normalExpressions/categories/namespaces/grid/index.d.ts +2 -0
  235. package/dist/src/builtin/normalExpressions/categories/namespaces/grid/transpose.d.ts +2 -0
  236. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/calcFractionalRanks.d.ts +1 -0
  237. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/collinear.d.ts +2 -0
  238. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/corrleation.d.ts +8 -0
  239. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/covariance.d.ts +4 -0
  240. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/gaussJordanElimination.d.ts +7 -0
  241. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/isZeroVector.d.ts +1 -0
  242. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/kendallTau.d.ts +10 -0
  243. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/pearsonCorr.d.ts +1 -0
  244. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/solve.d.ts +8 -0
  245. package/dist/src/builtin/normalExpressions/categories/namespaces/linearAlgebra/index.d.ts +2 -0
  246. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/adjugate.d.ts +1 -0
  247. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/band.d.ts +9 -0
  248. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/cofactor.d.ts +1 -0
  249. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/determinant.d.ts +6 -0
  250. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/diagonal.d.ts +1 -0
  251. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/inverse.d.ts +6 -0
  252. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isBanded.d.ts +11 -0
  253. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isDiagonal.d.ts +10 -0
  254. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isIdentity.d.ts +1 -0
  255. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isOrthogonal.d.ts +1 -0
  256. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isSquare.d.ts +1 -0
  257. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isSymetric.d.ts +8 -0
  258. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isTriangular.d.ts +13 -0
  259. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/matrixMultiply.d.ts +7 -0
  260. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/minor.d.ts +1 -0
  261. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/norm1.d.ts +1 -0
  262. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/helpers/trace.d.ts +8 -0
  263. package/dist/src/builtin/normalExpressions/categories/namespaces/matrix/index.d.ts +2 -0
  264. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/binomialCefficient.d.ts +1 -0
  265. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/combinations.d.ts +2 -0
  266. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/derangements.d.ts +2 -0
  267. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/divisors.d.ts +4 -0
  268. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/factorial.d.ts +3 -0
  269. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/index.d.ts +2 -0
  270. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/partitions.d.ts +2 -0
  271. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/permutations.d.ts +2 -0
  272. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/powerSet.d.ts +2 -0
  273. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/primeFactors.d.ts +11 -0
  274. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/abundant.d.ts +2 -0
  275. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/arithmetic.d.ts +2 -0
  276. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/bell.d.ts +1 -0
  277. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/bernoulli.d.ts +2 -0
  278. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/catalan.d.ts +1 -0
  279. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/collatz.d.ts +2 -0
  280. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/composite.d.ts +3 -0
  281. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/deficient.d.ts +2 -0
  282. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/factorial.d.ts +1 -0
  283. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/fibonacci.d.ts +1 -0
  284. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/geometric.d.ts +2 -0
  285. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/golomb.d.ts +2 -0
  286. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/happy.d.ts +2 -0
  287. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/index.d.ts +26 -0
  288. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/juggler.d.ts +2 -0
  289. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lookAndSay.d.ts +2 -0
  290. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lucas.d.ts +1 -0
  291. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lucky.d.ts +2 -0
  292. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/mersenne.d.ts +1 -0
  293. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/padovan.d.ts +2 -0
  294. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/partition.d.ts +1 -0
  295. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/pell.d.ts +1 -0
  296. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfect.d.ts +1 -0
  297. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectCube.d.ts +2 -0
  298. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectPower.d.ts +10 -0
  299. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectSquare.d.ts +2 -0
  300. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/poligonal.d.ts +2 -0
  301. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/prime.d.ts +3 -0
  302. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/recaman.d.ts +9 -0
  303. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/sylvester.d.ts +1 -0
  304. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/thueMorse.d.ts +2 -0
  305. package/dist/src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/tribonacci.d.ts +1 -0
  306. package/dist/src/builtin/normalExpressions/categories/namespaces/random/index.d.ts +2 -0
  307. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/bincount.d.ts +9 -0
  308. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/calcMad.d.ts +1 -0
  309. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/calcMean.d.ts +1 -0
  310. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/calcMedad.d.ts +1 -0
  311. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/calcMedian.d.ts +1 -0
  312. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/calcStdDev.d.ts +2 -0
  313. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/calcVariance.d.ts +2 -0
  314. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/entropy.d.ts +8 -0
  315. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/histogram.d.ts +9 -0
  316. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/index.d.ts +2 -0
  317. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/mode.d.ts +6 -0
  318. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/outliers.d.ts +7 -0
  319. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/percentile.d.ts +7 -0
  320. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/quartiles.d.ts +1 -0
  321. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/entropy.d.ts +2 -0
  322. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/giniCoefficient.d.ts +2 -0
  323. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/index.d.ts +13 -0
  324. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/iqr.d.ts +2 -0
  325. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/kurtosis.d.ts +5 -0
  326. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/mad.d.ts +2 -0
  327. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/max.d.ts +2 -0
  328. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/mean.d.ts +4 -0
  329. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/medad.d.ts +2 -0
  330. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/median.d.ts +2 -0
  331. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/min.d.ts +2 -0
  332. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/prod.d.ts +2 -0
  333. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/rms.d.ts +2 -0
  334. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/skewness.d.ts +3 -0
  335. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/span.d.ts +2 -0
  336. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/standardDeviation.d.ts +3 -0
  337. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/sum.d.ts +2 -0
  338. package/dist/src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/variance.d.ts +3 -0
  339. package/dist/src/errors.d.ts +1 -4
  340. package/dist/src/evaluator/interface.d.ts +2 -2
  341. package/dist/src/index.d.ts +1 -0
  342. package/dist/src/parser/types.d.ts +6 -4
  343. package/dist/src/tokenizer/operators.d.ts +2 -2
  344. package/dist/src/tokenizer/reservedNames.d.ts +2 -0
  345. package/dist/src/typeGuards/annotatedArrays.d.ts +12 -0
  346. package/dist/src/typeGuards/lits.d.ts +4 -1
  347. package/dist/src/utils/index.d.ts +2 -0
  348. package/dist/testFramework.esm.js +8016 -819
  349. package/dist/testFramework.esm.js.map +1 -1
  350. package/dist/testFramework.js +8016 -819
  351. package/dist/testFramework.js.map +1 -1
  352. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"testFramework.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/builtin/specialExpressionTypes.ts","../src/constants/constants.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/getUndefinedSymbols/index.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/builtin/specialExpressions/defined.ts","../src/parser/types.ts","../src/builtin/bindingNode.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/do.ts","../src/tokenizer/reservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/array.ts","../src/builtin/specialExpressions/object.ts","../src/builtin/index.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/tokenizer/operators.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/tokenize.ts","../src/tokenizer/token.ts","../src/tokenizer/minifyTokenStream.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/parser/Parser.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../src/testFramework/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/token'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n if (!sourceCodeInfo) {\n return message\n }\n const location = `${sourceCodeInfo.position.line}:${sourceCodeInfo.position.column}`\n const filePathLine = sourceCodeInfo.filePath\n ? `\\n${sourceCodeInfo.filePath}:${location}`\n : `\\nLocation ${location}`\n const codeLine = `\\n${sourceCodeInfo.code}`\n const codeMarker = `\\n${getCodeMarker(sourceCodeInfo)}`\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo: SourceCodeInfo | undefined) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${fn}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export const specialExpressionTypes = {\n '??': 0,\n '&&': 1,\n '||': 2,\n 'array': 3,\n 'cond': 4,\n '0_def': 5,\n 'defined?': 6,\n '0_defn': 7,\n 'do': 8,\n 'doseq': 9,\n '0_fn': 10,\n 'for': 11,\n 'function': 12,\n 'if': 13,\n 'let': 14,\n 'loop': 15,\n 'object': 16,\n 'recur': 17,\n 'switch': 18,\n 'throw': 19,\n 'try': 20,\n 'unless': 21,\n} as const\n\nexport type SpecialExpressionTypes = typeof specialExpressionTypes\n","export const NodeTypes = {\n Number: 1,\n String: 2,\n NormalExpression: 3,\n SpecialExpression: 4,\n UserDefinedSymbol: 5,\n NormalBuiltinSymbol: 6,\n SpecialBuiltinSymbol: 7,\n ReservedSymbol: 8,\n Binding: 9,\n Spread: 10,\n} as const\n\nconst NodeTypesSet = new Set(Object.values(NodeTypes))\n\nexport type NodeType = typeof NodeTypes[keyof typeof NodeTypes]\n\nexport function getNodeTypeName(type: NodeType): keyof typeof NodeTypes {\n return Object.keys(NodeTypes).find(key => NodeTypes[key as keyof typeof NodeTypes] === type) as keyof typeof NodeTypes\n}\n\n// TODO, is this needed?\nexport function isNodeType(type: unknown): type is NodeType {\n return typeof type === 'number' && NodeTypesSet.has(type as NodeType)\n}\n\nconst functionTypes = [\n 'UserDefined',\n 'Partial',\n 'Comp',\n 'Constantly',\n 'Juxt',\n 'Complement',\n 'EveryPred',\n 'SomePred',\n 'Fnull',\n 'Builtin',\n 'SpecialBuiltin',\n 'NativeJsFunction',\n] as const\n\nconst functionTypeSet = new Set(functionTypes)\n\nexport type FunctionType = typeof functionTypes[number]\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'string' && functionTypeSet.has(type as FunctionType)\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { getNodeTypeName, isFunctionType, isNodeType } from '../../constants/constants'\nimport type { LitsFunction, Node } from '../../parser/types'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (func === null || typeof func !== 'object')\n return false\n\n return FUNCTION_SYMBOL in func && 'functionType' in func && isFunctionType(func.functionType)\n}\n\nfunction isNode(value: unknown): value is Node {\n if (!Array.isArray(value) || value.length < 2)\n return false\n return isNodeType(value[0])\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isNode(value))\n return `${getNodeTypeName(value[0])}-node`\n\n if (value === null)\n return 'null'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo: SourceCodeInfo | undefined): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { NodeTypes } from '../constants/constants'\nimport type {\n ExpressionNode,\n Node,\n NormalBuiltinSymbolNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SpecialBuiltinSymbolNode,\n SpreadNode,\n SymbolNode,\n UserDefinedSymbolNode,\n} from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isSymbolNode(node: Node): node is SymbolNode {\n const nodeType = node[0]\n return NodeTypes.UserDefinedSymbol === nodeType\n || NodeTypes.NormalBuiltinSymbol === nodeType\n || NodeTypes.SpecialBuiltinSymbol === nodeType\n}\nexport function asSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is SymbolNode {\n if (!isSymbolNode(node))\n throw getAssertionError('SymbolNode', node, sourceCodeInfo)\n}\n\nexport function isUserDefinedSymbolNode(node: Node): node is UserDefinedSymbolNode {\n return NodeTypes.UserDefinedSymbol === node[0]\n}\nexport function asUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): UserDefinedSymbolNode {\n assertUserDefinedSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is UserDefinedSymbolNode {\n if (!isUserDefinedSymbolNode(node))\n throw getAssertionError('UserDefinedSymbolNode', node, sourceCodeInfo)\n}\n\nexport function isNormalBuiltinSymbolNode(node: Node): node is NormalBuiltinSymbolNode {\n return NodeTypes.NormalBuiltinSymbol === node[0]\n}\n\nexport function isSpecialBuiltinSymbolNode(node: Node): node is SpecialBuiltinSymbolNode {\n return NodeTypes.SpecialBuiltinSymbol === node[0]\n}\n\nexport function isNormalExpressionNode(node: Node): node is NormalExpressionNode {\n return node[0] === NodeTypes.NormalExpression\n}\nexport function asNormalExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNode(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNode {\n if (!isNormalExpressionNode(node))\n throw getAssertionError('NormalExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(node: Node): node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNode(node)) {\n return false\n }\n return isSymbolNode(node[1][0])\n}\nexport function asNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(node))\n throw getAssertionError('NormalExpressionNodeWithName', node, sourceCodeInfo)\n}\n\nexport function isExpressionNode(node: Node): node is ExpressionNode {\n return isNormalExpressionNode(node)\n || node[0] === NodeTypes.SpecialExpression\n || node[0] === NodeTypes.Number\n || node[0] === NodeTypes.String\n}\nexport function asExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is ExpressionNode {\n if (!isExpressionNode(node))\n throw getAssertionError('ExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isSpreadNode(node: Node): node is SpreadNode {\n return node[0] === NodeTypes.Spread\n}\n","import type { Builtin } from '../builtin/interface'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { EvaluateNode } from '../evaluator/interface'\nimport type { Ast, Node, NormalExpressionNode, SpecialExpressionNode, SpreadNode, UserDefinedSymbolNode } from '../parser/types'\nimport { isNormalExpressionNodeWithName, isUserDefinedSymbolNode } from '../typeGuards/astNode'\n\nexport type UndefinedSymbols = Set<string>\n\nexport const getUndefinedSymbols: GetUndefinedSymbols = (ast, contextStack, builtin, evaluateNode) => {\n const nodes: Node[] = Array.isArray(ast)\n ? ast\n : [[NodeTypes.SpecialExpression, [specialExpressionTypes.do, ast.body]] satisfies DoNode]\n\n const unresolvedSymbols = new Set<string>()\n\n for (const subNode of nodes) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)\n ?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n}\n\nexport type GetUndefinedSymbols = (ast: Ast | Node[], contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode) => UndefinedSymbols\n\nfunction findUnresolvedSymbolsInNode(node: Node, contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode): UndefinedSymbols | null {\n const nodeType = node[0]\n switch (nodeType) {\n case NodeTypes.UserDefinedSymbol: {\n const symbolNode = node as UserDefinedSymbolNode\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n return new Set([symbolNode[1]])\n\n return null\n }\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.String:\n case NodeTypes.Number:\n case NodeTypes.ReservedSymbol:\n case NodeTypes.Binding:\n return null\n case NodeTypes.NormalExpression: {\n const normalExpressionNode = node as NormalExpressionNode\n const unresolvedSymbols = new Set<string>()\n if (isNormalExpressionNodeWithName(normalExpressionNode)) {\n const [, [symbolNode]] = normalExpressionNode\n if (isUserDefinedSymbolNode(symbolNode)) {\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n unresolvedSymbols.add(symbolNode[1])\n }\n }\n else {\n const [, [expressionNode]] = normalExpressionNode\n findUnresolvedSymbolsInNode(expressionNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n for (const subNode of normalExpressionNode[1][1]) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n }\n case NodeTypes.SpecialExpression: {\n const specialExpressionNode = node as SpecialExpressionNode\n const specialExpressionType = specialExpressionNode[1][0]\n const specialExpression = builtin.specialExpressions[specialExpressionType]\n\n const castedGetUndefinedSymbols = specialExpression.getUndefinedSymbols as Function\n\n return castedGetUndefinedSymbols(specialExpressionNode, contextStack, {\n getUndefinedSymbols,\n builtin,\n evaluateNode,\n }) as UndefinedSymbols\n }\n case NodeTypes.Spread:\n return findUnresolvedSymbolsInNode((node as SpreadNode)[1], contextStack, builtin, evaluateNode)\n\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unhandled node type: ${nodeType satisfies never}`, node[2])\n }\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n paramCount: 2,\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n paramCount: 2,\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n paramCount: 2,\n },\n '~': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n paramCount: 1,\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-and-not': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '^': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n paramCount: 2,\n },\n 'bit-set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n paramCount: 2,\n },\n 'bit-clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n paramCount: 2,\n },\n 'bit-test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n paramCount: 2,\n },\n}\n","import type { Count } from '../builtin/interface'\nimport { getNodeTypeName } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { NormalExpressionNodeWithName } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertNumberOfParams(count: Count, node: NormalExpressionNodeWithName): void {\n const length = node[1][1].length\n if (typeof count === 'number') {\n if (length !== count) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n else {\n const { min, max, even, odd } = count\n if (even) {\n const name = getNodeTypeName(node[0])\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an even number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (odd) {\n if (length % 2 !== 1) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an odd number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (typeof min === 'number' && length < min) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n\n if (typeof max === 'number' && length > max) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nexport function canBeOperator(count: Count): boolean {\n if (typeof count === 'number') {\n return count === 2\n }\n\n if (count.odd) {\n return false\n }\n\n if (typeof count.max === 'number' && count.max < 2) {\n return false\n }\n\n if (typeof count.min === 'number' && count.min > 2) {\n return false\n }\n\n return true\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { LitsFunction, NativeJsFunction, NormalBuiltinFunction, UserDefinedFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.functionType === 'UserDefined'\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.functionType === 'NativeJsFunction'\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is NormalBuiltinFunction {\n return isUnknownRecord(value) && value.functionType === 'Builtin'\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Coll, Obj } from '../interface'\nimport type { NativeJsFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString, assertStringOrNumber } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { LitsError } from '../errors'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\nexport function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a < b ? -1 : a > b ? 1 : 0\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.sign((a) - (b))\n }\n throw new LitsError(`Cannot compare values of different types: ${typeof a} and ${typeof b}`, sourceCodeInfo)\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n nativeFn: {\n fn,\n },\n name,\n functionType: 'NativeJsFunction',\n }\n}\n\nexport function joinSets<T>(...results: Set<T>[]): Set<T> {\n const result = new Set<T>()\n for (const symbols of results)\n symbols.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addToSet<T>(target: Set<T>, source: Set<T>): void {\n source.forEach(symbol => target.add(symbol))\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { cloneColl, collHasKey, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asAny, asColl, assertAny, assertColl, assertObj, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString, isStringOrNumber } from '../../../typeGuards/string'\nimport type { LitsFunction } from '../../../parser/types'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // null behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isString(coll)) {\n assertString(key, sourceCodeInfo)\n return coll.includes(key)\n }\n if (isSeq(coll)) {\n assertAny(key, sourceCodeInfo)\n return !!coll.find(elem => deepEqual(asAny(elem), key, sourceCodeInfo))\n }\n assertString(key, sourceCodeInfo)\n return key in coll\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n '++': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (!isNumber(params[0])) {\n assertColl(params[0], sourceCodeInfo)\n }\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isStringOrNumber(params[0])) {\n return params.reduce((result: string, s) => {\n assertStringOrNumber(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n aliases: ['concat'],\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { asLitsFunction, assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { collHasKey, compare, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: (params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fn = asLitsFunction(params.at(-1))\n const seqs = params.slice(0, -1) as Seq[]\n assertSeq(seqs[0], sourceCodeInfo)\n const isString = typeof seqs[0] === 'string'\n let len = seqs[0].length\n seqs.slice(1).forEach((seq) => {\n if (isString) {\n assertString(seq, sourceCodeInfo)\n }\n else {\n assertArray(seq, sourceCodeInfo)\n }\n len = Math.min(len, seq.length)\n })\n\n const paramArray: unknown[][] = []\n for (let i = 0; i < len; i++) {\n paramArray.push(seqs.map(seq => seq[i]))\n }\n\n const mapped = paramArray.map(p => executeFunction(fn, p, contextStack, sourceCodeInfo))\n\n if (!isString) {\n return mapped\n }\n mapped.forEach(char => assertString(char, sourceCodeInfo))\n return mapped.join('')\n },\n paramCount: { min: 2 },\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last-index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findLastIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'splice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, start, deleteCount, ...rest] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { integer: true })\n assertNumber(deleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const from = start < 0 ? seq.length + start : start\n\n if (Array.isArray(seq)) {\n return [...seq.slice(0, from), ...rest, ...seq.slice(from + deleteCount)]\n }\n\n rest.forEach(elem => assertString(elem, sourceCodeInfo))\n return `${seq.substring(0, from)}${rest.join('')}${seq.substring(from + deleteCount)}`\n },\n paramCount: { min: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n\n if (Array.isArray(input)) {\n const result: Any[] = []\n for (const item of input) {\n assertAny(item, sourceCodeInfo)\n if (!result.some(existingItem => deepEqual(existingItem, item, sourceCodeInfo))) {\n result.push(item)\n }\n }\n return result\n }\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove-at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo, { integer: true })\n assertSeq(input, sourceCodeInfo)\n\n const at = index < 0 ? input.length + index : index\n if (at < 0 || at >= input.length)\n return input\n\n if (Array.isArray(input)) {\n return input.filter((_, i) => i !== at)\n }\n return `${input.substring(0, at)}${input.substring(at + 1)}`\n },\n paramCount: 2,\n },\n 'split-at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { integer: true })\n assertSeq(seq, sourceCodeInfo)\n\n const at = pos < 0 ? seq.length + pos : pos\n return [seq.slice(0, at), seq.slice(at)]\n },\n paramCount: 2,\n },\n\n 'split-with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends-with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return deepEqual(asAny(str.at(-1), sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'starts-with?': {\n evaluate: ([seq, search], sourceCodeInfo): boolean => {\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n assertString(search, sourceCodeInfo)\n return seq.startsWith(search)\n }\n\n return deepEqual(asAny(seq[0], sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n return seq.split('')\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n aliases: ['rem'],\n },\n\n '√': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n aliases: ['sqrt'],\n },\n\n '∛': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n aliases: ['cbrt'],\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '=': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n aliases: ['!='],\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '≥': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['>='],\n },\n '≤': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['<='],\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first, null, 2)} to deep equal ${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be null.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split-lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/types'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Partial',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n }\n },\n paramCount: {},\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n 'juxt': {\n evaluate: (params, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Juxt',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Complement',\n function: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n 'every-pred': {\n evaluate: (params, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'EveryPred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'some-pred': {\n evaluate: (params, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'SomePred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'fnull': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNullFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Fnull',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nconst expressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n\nconst aliases: BuiltinNormalExpressions = {}\n\nObject.values(expressions).forEach((normalExpression) => {\n normalExpression.aliases?.forEach((alias) => {\n aliases[alias] = normalExpression\n })\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n ...aliases,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = true\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (!value)\n break\n }\n return value\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import type { SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { assertSymbolNode, isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefinedNode = SpecialExpressionNode<[typeof specialExpressionTypes['defined?'], SymbolNode]>\n\nexport const definedSpecialExpression: BuiltinSpecialExpression<boolean, DefinedNode> = {\n paramCount: 1,\n evaluate: (node, contextStack) => {\n const symbolNode = node[1][1]\n assertSymbolNode(symbolNode)\n if (!isUserDefinedSymbolNode(symbolNode)) {\n return true // If the symbol is not a user defined symbol, it is defined. normal or special builtin\n }\n const lookUpResult = contextStack.lookUp(symbolNode)\n return lookUpResult !== null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { JsFunction } from '../Lits/Lits'\nimport type { SpecialExpressionType } from '../builtin'\nimport type { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport type { FunctionType, NodeType, NodeTypes } from '../constants/constants'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Arr } from '../interface'\nimport type { ReservedSymbol } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo, Token } from '../tokenizer/token'\nimport type { FUNCTION_SYMBOL, REGEXP_SYMBOL } from '../utils/symbols'\n\nexport interface ParseState {\n position: number\n}\n\nexport type EvaluatedFunction = [BindingTarget[], Node[], Context]\n\ninterface GenericLitsFunction {\n [FUNCTION_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n functionType: FunctionType\n}\n\nexport interface RegularExpression {\n [REGEXP_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n s: string\n f: string\n}\n\nexport interface NativeJsFunction extends GenericLitsFunction {\n functionType: 'NativeJsFunction'\n name: string | undefined // name\n nativeFn: JsFunction\n}\n\nexport interface UserDefinedFunction extends GenericLitsFunction {\n functionType: 'UserDefined'\n name: string | undefined // name\n evaluatedfunction: EvaluatedFunction\n}\n\nexport interface PartialFunction extends GenericLitsFunction {\n functionType: 'Partial'\n function: Any\n params: Arr\n}\n\nexport interface CompFunction extends GenericLitsFunction {\n functionType: 'Comp'\n params: Arr\n}\n\nexport interface ConstantlyFunction extends GenericLitsFunction {\n functionType: 'Constantly'\n value: Any\n}\n\nexport interface JuxtFunction extends GenericLitsFunction {\n functionType: 'Juxt'\n params: Arr\n}\n\nexport interface ComplementFunction extends GenericLitsFunction {\n functionType: 'Complement'\n function: Any\n}\n\nexport interface EveryPredFunction extends GenericLitsFunction {\n functionType: 'EveryPred'\n params: Arr\n}\n\nexport interface SomePredFunction extends GenericLitsFunction {\n functionType: 'SomePred'\n params: Arr\n}\n\nexport interface FNullFunction extends GenericLitsFunction {\n functionType: 'Fnull'\n function: Any\n params: Arr\n}\n\nexport interface NormalBuiltinFunction extends GenericLitsFunction {\n functionType: 'Builtin'\n normalBuitinSymbolType: number\n}\n\nexport interface SpecialBuiltinFunction extends GenericLitsFunction {\n functionType: 'SpecialBuiltin'\n specialBuiltinSymbolType:\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['recur']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['??']\n}\n\nexport type LitsFunction =\n | NativeJsFunction\n | UserDefinedFunction\n | NormalBuiltinFunction\n | SpecialBuiltinFunction\n | PartialFunction\n | CompFunction\n | ConstantlyFunction\n | JuxtFunction\n | ComplementFunction\n | EveryPredFunction\n | SomePredFunction\n | FNullFunction\n\nexport type LitsFunctionType = LitsFunction['functionType']\n\nexport type DebugData = {\n token: Token\n nameToken?: Token\n}\nexport type Node<T extends NodeType = NodeType, Payload = unknown> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type ExpressionNode = NormalExpressionNode | SpecialExpressionNode | NumberNode | StringNode\n\nexport type SpreadNode = Node<typeof NodeTypes.Spread, Node> // Payload should be array or object depending on context\nexport type NumberNode = Node<typeof NodeTypes.Number, number>\nexport type StringNode = Node<typeof NodeTypes.String, string>\nexport type UserDefinedSymbolNode = Node<typeof NodeTypes.UserDefinedSymbol, string>\nexport type NormalBuiltinSymbolNode = Node<typeof NodeTypes.NormalBuiltinSymbol, number>\nexport type SpecialBuiltinSymbolNode = Node<typeof NodeTypes.SpecialBuiltinSymbol, SpecialExpressionType>\nexport type SymbolNode = UserDefinedSymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode\nexport type ReservedSymbolNode = Node<typeof NodeTypes.ReservedSymbol, ReservedSymbol>\nexport type SpecialExpressionNode<T extends [SpecialExpressionType, ...unknown[]] = [SpecialExpressionType, ...unknown[]]> = Node<typeof NodeTypes.SpecialExpression, T> // [name, params]\n\nexport type NormalExpressionNodeWithName = Node<typeof NodeTypes.NormalExpression, [NormalBuiltinSymbolNode | UserDefinedSymbolNode, Node[]]> // [params, name]\nexport type NormalExpressionNodeExpression = Node<typeof NodeTypes.NormalExpression, [Node, Node[]]> // [name, node as function] node can be string number object or array\nexport type NormalExpressionNode = NormalExpressionNodeWithName | NormalExpressionNodeExpression\nexport const bindingTargetTypes = {\n symbol: 11,\n rest: 12,\n object: 13,\n array: 14,\n} as const\n\nexport type BindingTargetType = typeof bindingTargetTypes[keyof typeof bindingTargetTypes]\n\ntype GenericTarget<T extends BindingTargetType, Payload extends unknown[]> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type SymbolBindingTarget = GenericTarget<typeof bindingTargetTypes.symbol, [SymbolNode, Node | undefined]>\nexport type RestBindingTarget = GenericTarget<typeof bindingTargetTypes.rest, [string, Node | undefined]>\nexport type ObjectBindingTarget = GenericTarget<typeof bindingTargetTypes.object, [Record<string, BindingTarget>, Node | undefined]>\nexport type ArrayBindingTarget = GenericTarget<typeof bindingTargetTypes.array, [(BindingTarget | null)[], Node | undefined]>\n\nexport type BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget\n\nexport type BindingNode = Node<typeof NodeTypes.Binding, [BindingTarget, Node]> // [target, value]\n\ntype AstBody = Node[]\nexport interface Ast {\n body: AstBody // body\n hasDebugData: boolean\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport { type BindingTarget, type Node, type RestBindingTarget, type UserDefinedSymbolNode, bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { assertUnknownRecord } from '../typeGuards'\nimport { assertArray } from '../typeGuards/array'\nimport { asAny, assertAny } from '../typeGuards/lits'\n\nexport function walkDefaults(\n bindingTarget: BindingTarget,\n onDefault: (Node: Node) => void,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n Object.values(bindingTarget[1][0]).forEach((element) => {\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n })\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n }\n }\n}\n\nexport function evalueateBindingNodeValues(\n target: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n): Record<string, Any> {\n const sourceCodeInfo = target[2]\n const record: Record<string, Any> = {}\n createRecord(target, value, evaluate, sourceCodeInfo, record)\n return record\n}\n\nfunction createRecord(\n bindingTarget: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n sourceCodeInfo: SourceCodeInfo | undefined,\n record: Record<string, Any>,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n assertUnknownRecord(value, sourceCodeInfo)\n const capturedKeys = new Set<string>()\n let restElement: RestBindingTarget | undefined\n Object.entries(bindingTarget[1][0]).forEach(([key, element]) => {\n if (element[0] === bindingTargetTypes.rest) {\n restElement = element\n return\n }\n capturedKeys.add(key)\n const val = (value[key] !== undefined ? value[key] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n })\n if (restElement) {\n const restValues = Object.entries(value)\n .filter(([key]) => !capturedKeys.has(key))\n .reduce((acc: Record<string, Any>, [key, val]) => {\n acc[key] = asAny(val)\n return acc\n }, {})\n\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n let restIndex: number | null = null\n assertArray(value, sourceCodeInfo)\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[0] === bindingTargetTypes.rest) {\n restIndex = index\n break\n }\n const val = (value[index] !== undefined ? value[index] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n }\n if (restIndex !== null) {\n const restValues = value.slice(restIndex)\n const restElement = bindingTarget[1][0][restIndex]! as RestBindingTarget\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.rest) {\n record[bindingTarget[1][0]] = asAny(value)\n }\n else {\n record[(bindingTarget[1][0] as UserDefinedSymbolNode)[1]] = asAny(value)\n }\n}\n\nexport function getAllBindingTargetNames(bindingTarget: BindingTarget): Record<string, true> {\n const names: Record<string, true> = {}\n getNamesFromBindingTarget(bindingTarget, names)\n return names\n}\n\nfunction getNamesFromBindingTarget(target: BindingTarget | null, names: Record<string, true>): void {\n if (target === null) {\n return\n }\n if (target[0] === bindingTargetTypes.array) {\n for (const element of target[1][0]) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.object) {\n for (const element of Object.values(target[1][0])) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.rest) {\n if (names[target[1][0]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0]] = true\n }\n else {\n if (names[target[1][0][1]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0][1]] = true\n }\n}\n","import type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues as evalueateBindingTargetValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_def'], BindingNode]> // binding, value\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n paramCount: 2,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingTargetValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.exportValues(values, target[2])\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DoNode = SpecialExpressionNode<[typeof specialExpressionTypes['do'], Node[]]>\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node[1][1])\n result = evaluateNode(form, newContextStack)\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n return getUndefinedSymbols(node[1][1], contextStack.create({}), builtin, evaluateNode)\n },\n}\n","import type { Any } from '../interface'\n\nconst nonNumberReservedSymbolRecord = {\n true: true,\n false: false,\n null: null,\n then: null,\n else: null,\n end: null,\n case: null,\n each: null,\n in: null,\n when: null,\n while: null,\n catch: null,\n function: null,\n export: null,\n as: null,\n} as const satisfies Record<string, Any>\n\nconst phi = (1 + Math.sqrt(5)) / 2\nexport const numberReservedSymbolRecord = {\n 'E': Math.E,\n '-E': -Math.E,\n 'ε': Math.E,\n '-ε': -Math.E,\n 'PI': Math.PI,\n '-PI': -Math.PI,\n 'π': Math.PI,\n '-π': -Math.PI,\n 'PHI': phi,\n '-PHI': -phi,\n 'φ': phi,\n '-φ': -phi,\n 'POSITIVE_INFINITY': Number.POSITIVE_INFINITY,\n '∞': Number.POSITIVE_INFINITY,\n 'NEGATIVE_INFINITY': Number.NEGATIVE_INFINITY,\n '-∞': Number.NEGATIVE_INFINITY,\n 'MAX_SAFE_INTEGER': Number.MAX_SAFE_INTEGER,\n 'MIN_SAFE_INTEGER': Number.MIN_SAFE_INTEGER,\n 'MAX_VALUE': Number.MAX_VALUE,\n 'MIN_VALUE': Number.MIN_VALUE,\n 'DELTA': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-DELTA': -Number.EPSILON,\n 'δ': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-δ': -Number.EPSILON,\n 'NaN': Number.NaN,\n} as const satisfies Record<string, number>\n\nexport const reservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport const validReservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport type ValidReservedSymbol = keyof typeof validReservedSymbolRecord\nexport type ReservedSymbol = keyof typeof reservedSymbolRecord\n\nexport function isReservedSymbol(symbol: string): symbol is keyof typeof validReservedSymbolRecord {\n return symbol in validReservedSymbolRecord\n}\n\nexport function isNumberReservedSymbol(symbol: string): symbol is keyof typeof numberReservedSymbolRecord {\n return symbol in numberReservedSymbolRecord\n}\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { BindingTarget, Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isReservedSymbol } from '../tokenizer/reservedNames'\nimport type { Builtin } from './interface'\nimport { specialExpressionTypes } from './specialExpressionTypes'\nimport type { SpecialExpressionName } from '.'\n\nexport type Function = [BindingTarget[], Node[]]\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n // TODO only subset of special expressions are necessary to check (CommonSpecialExpressionType)\n if (specialExpressionTypes[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n if (isReservedSymbol(name))\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type {\n EvaluatedFunction,\n LitsFunction,\n SpecialExpressionNode,\n SymbolNode,\n} from '../../parser/types'\nimport { isAny } from '../../typeGuards/lits'\nimport { addToSet } from '../../utils'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport type { Function } from '../utils'\nimport { assertNameNotDefined } from '../utils'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\nimport { assertUserDefinedSymbolNode } from '../../typeGuards/astNode'\n\nexport type DefnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_defn'], SymbolNode, Function]>\nexport type FunctionNode = SpecialExpressionNode<[typeof specialExpressionTypes['function'], SymbolNode, Function]>\nexport type FnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_fn'], Function]>\n\nexport const functionSpecialExpression: BuiltinSpecialExpression<null, FunctionNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunction,\n }\n\n contextStack.addValues({ [functionSymbol[1]]: litsFunction }, functionSymbol[2])\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n contextStack.addValues({ [functionName]: true }, node[1][1][2])\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(node[1][2], contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunctionOverloades = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunctionOverloades,\n }\n\n contextStack.exportValues({ [functionSymbol[1]]: litsFunction }, functionSymbol[2])\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n const fn = node[1][2]\n contextStack.exportValues({ [functionName]: true }, node[1][1][2])\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const fn = node[1][1]\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: undefined,\n evaluatedfunction: evaluatedFunction,\n }\n\n return litsFunction\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const fn = node[1][1]\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode)\n },\n\n}\n\nfunction evaluateFunction(\n fn: Function,\n contextStack: ContextStack,\n builtin: Builtin,\n getUndefinedSymbols: GetUndefinedSymbols,\n evaluateNode: EvaluateNode,\n): EvaluatedFunction {\n const functionContext: Context = {}\n\n const context = fn[0].reduce((ctx: Context, arg) => {\n Object.keys(getAllBindingTargetNames(arg)).forEach((name) => {\n ctx[name] = { value: null }\n })\n return ctx\n }, {})\n const undefinedSymbols = getUndefinedSymbols(fn[1], contextStack.new(context), builtin, evaluateNode)\n undefinedSymbols.forEach((name) => {\n const value = contextStack.getValue(name)\n if (isAny(value)) {\n functionContext[name] = { value }\n }\n })\n\n const evaluatedFunction: EvaluatedFunction = [\n fn[0],\n fn[1],\n functionContext,\n ]\n\n return evaluatedFunction\n}\n\nfunction getFunctionUnresolvedSymbols(\n fn: Function,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n functionNameContext?: Context,\n): UndefinedSymbols {\n const result = new Set<string>()\n\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n const newContext: Context = {}\n\n fn[0].forEach((arg) => {\n Object.assign(newContext, getAllBindingTargetNames(arg))\n\n walkDefaults(arg, (defaultNode) => {\n addToSet(result, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n })\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = getUndefinedSymbols(fn[1], newContextStack, builtin, evaluateNode)\n addToSet(result, overloadResult)\n return result\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type IfNode = SpecialExpressionNode<[typeof specialExpressionTypes['if'], [Node, Node, Node?]]>\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type UnlessNode = SpecialExpressionNode<[typeof specialExpressionTypes['unless'], [Node, Node, Node?]]>\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (!evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LetNode = SpecialExpressionNode<[typeof specialExpressionTypes['let'], BindingNode]>\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n paramCount: 0,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingNodeValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.addValues(values, target[2])\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport { joinSets } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopNode = SpecialExpressionNode<[typeof specialExpressionTypes['loop'], BindingNode[], Node[]]> // bindings, body\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNodes = node[1][1]\n const bindingContext: Context = bindingNodes.reduce((result: Context, bindingNode) => {\n const val = evaluateNode(bindingNode[1][1], contextStack.create(result))\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n result[name] = { value }\n })\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n const body = node[1][2]\n for (;;) {\n let result: Any = null\n try {\n for (const form of body) {\n result = evaluateNode(form, newContextStack)\n }\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== bindingNodes.length) {\n throw new LitsError(\n `recur expected ${bindingNodes.length} parameters, got ${valueToString(params.length)}`,\n node[2],\n )\n }\n bindingNodes.forEach((bindingNode, index) => {\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], asAny(params[index]), Node => evaluateNode(Node, contextStack))\n for (const [name, value] of Object.entries(valueRecord)) {\n bindingContext[name]!.value = value\n }\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNodes = node[1][1]\n\n const newContext = bindingNodes\n .reduce((context: Context, bindingNode) => {\n const names = getAllBindingTargetNames(bindingNode[1][0])\n\n Object.keys(names).forEach((name) => {\n context[name] = { value: true }\n })\n return context\n }, {})\n\n const bindingValueNodes = bindingNodes.map(bindingNode => bindingNode[1][1])\n const bindingsResult = getUndefinedSymbols(bindingValueNodes, contextStack, builtin, evaluateNode)\n const paramsResult = getUndefinedSymbols(node[1][2], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(bindingsResult, paramsResult)\n },\n}\n","import type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopBindingNode = [BindingNode, BindingNode[], Node?, Node?] // Binding, Let-Bindings, When, While\n\nexport type ForNode = SpecialExpressionNode<[typeof specialExpressionTypes['for'], LoopBindingNode[], Node[]]> // LoopBindings, body\nexport type DoSeqNode = SpecialExpressionNode<[typeof specialExpressionTypes['doseq'], LoopBindingNode[], Node[]]> // LoopBindings, body\n\ntype LoopNode = ForNode | DoSeqNode\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n for (const bindingNode of bindings) {\n const [target, bindingValue] = bindingNode[1]\n const val = evaluateNode(bindingValue, contextStack)\n const valueRecord = evalueateBindingNodeValues(target, val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n }\n}\n\nfunction evaluateLoop(\n returnResult: boolean,\n loopNode: LoopNode,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n const sourceCodeInfo = loopNode[2]\n const [, loopBindings, body] = loopNode[1]\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindings[bindingIndex]!\n const [targetNode, valueNode] = bindingNode[1]\n const coll = asColl(evaluateNode(valueNode, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n\n const val = asAny(seq[index], sourceCodeInfo)\n const valueRecord = evalueateBindingNodeValues(targetNode, val, Node => evaluateNode(Node, newContextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n if (letBindings) {\n addToContext(\n letBindings,\n context,\n newContextStack,\n evaluateNode,\n )\n }\n if (whenNode && !evaluateNode(whenNode, newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n if (whileNode && !evaluateNode(whileNode, newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n }\n if (!skip) {\n let value: Any = null\n for (const form of body) {\n value = evaluateNode(form, newContextStack)\n }\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n\n return returnResult ? result : null\n}\n\nfunction analyze(\n loopNode: LoopNode,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n): UndefinedSymbols {\n const result = new Set<string>()\n const newContext: Context = {}\n const [, loopBindings, body] = loopNode[1]\n loopBindings.forEach((loopBindingNode) => {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindingNode\n const [target, value] = bindingNode[1]\n getUndefinedSymbols([value], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(target))\n if (letBindings) {\n letBindings.forEach((letBindingNode) => {\n const [letTarget, letValue] = letBindingNode[1]\n\n getUndefinedSymbols([letValue], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(letTarget))\n })\n }\n if (whenNode) {\n getUndefinedSymbols([whenNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n getUndefinedSymbols([whileNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n getUndefinedSymbols(body, contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateNode),\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateNode)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type OrNode = SpecialExpressionNode<[typeof specialExpressionTypes['||'], Node[]]>\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = false\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = false\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (value)\n break\n }\n return value\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport { asAny, assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type QqNode = SpecialExpressionNode<[typeof specialExpressionTypes['??'], [Node, Node | undefined]]>\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n paramCount: { min: 1, max: 2 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [firstNode, secondNode] = node[1][1]\n\n if (isUserDefinedSymbolNode(firstNode) && contextStack.lookUp(firstNode) === null) {\n return secondNode ? evaluateNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node[2])\n const firstResult = evaluateNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateNode(secondNode, contextStack) : null)\n },\n\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const firstParam = asAny(params[0], sourceCodeInfo)\n const secondParam = params[1] !== undefined ? asAny(params[1], sourceCodeInfo) : null\n return firstParam ?? secondParam\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import { RecurSignal } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type RecurNode = SpecialExpressionNode<[typeof specialExpressionTypes['recur'], Node[]]>\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n const evaluatedParams = params.map(paramNode => evaluateNode(paramNode, contextStack))\n throw new RecurSignal(evaluatedParams)\n },\n evaluateAsNormalExpression: (params) => {\n throw new RecurSignal(params)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ThrowNode = SpecialExpressionNode<[typeof specialExpressionTypes['throw'], Node]>\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const message = asString(evaluateNode(node[1][1], contextStack), node[2], {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node[2])\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const message = asString(params[0], sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, undefined)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { joinSets } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type TryNode = SpecialExpressionNode<[typeof specialExpressionTypes['try'], Node, SymbolNode | undefined, Node]>\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n try {\n return evaluateNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: error as Any },\n }\n : {}\n return evaluateNode(catchExpression, contextStack.create(newContext))\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n const tryResult = getUndefinedSymbols([tryExpression], contextStack, builtin, evaluateNode)\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: true },\n }\n : {}\n const catchResult = getUndefinedSymbols([catchExpression], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Arr } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ArrayNode = SpecialExpressionNode<[typeof specialExpressionTypes['array'], Node[]]>\n\nexport const arraySpecialExpression: BuiltinSpecialExpression<Any, ArrayNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Arr = []\n\n for (const param of node[1][1]) {\n if (isSpreadNode(param)) {\n const spreadValue = evaluateNode(param[1], contextStack)\n if (!Array.isArray(spreadValue)) {\n throw new LitsError('Spread value is not an array', param[2])\n }\n result.push(...spreadValue)\n }\n else {\n result.push(evaluateNode(param, contextStack))\n }\n }\n\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Arr = []\n\n for (const param of params) {\n result.push(asAny(param, sourceCodeInfo))\n }\n\n return result\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Obj } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUnknownRecord } from '../../typeGuards'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ObjectNode = SpecialExpressionNode<[typeof specialExpressionTypes['object'], Node[]]>\n\nexport const objectSpecialExpression: BuiltinSpecialExpression<Any, ObjectNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Obj = {}\n\n const params = node[1][1]\n for (let i = 0; i < params.length; i += 2) {\n const keyNode = params[i]!\n if (isSpreadNode(keyNode)) {\n const spreadObject = evaluateNode(keyNode[1], contextStack)\n if (!isUnknownRecord(spreadObject)) {\n throw new LitsError('Spread value is not an object', keyNode[2])\n }\n Object.assign(result, spreadObject)\n i -= 1\n }\n else {\n const key = evaluateNode(keyNode, contextStack)\n const value = evaluateNode(params[i + 1]!, contextStack)\n assertString(key, keyNode[2])\n result[key] = value\n }\n }\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Obj = {}\n\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value ?? null\n }\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Builtin } from './interface'\nimport { allNormalExpressions, normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { definedSpecialExpression } from './specialExpressions/defined'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, fnSpecialExpression, functionSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { arraySpecialExpression } from './specialExpressions/array'\nimport { objectSpecialExpression } from './specialExpressions/object'\nimport { specialExpressionTypes } from './specialExpressionTypes'\n\nexport const specialExpressions = [\n qqSpecialExpression,\n andSpecialExpression,\n orSpecialExpression,\n arraySpecialExpression,\n condSpecialExpression,\n defSpecialExpression,\n definedSpecialExpression,\n defnSpecialExpression,\n doSpecialExpression,\n doseqSpecialExpression,\n fnSpecialExpression,\n forSpecialExpression,\n functionSpecialExpression,\n ifSpecialExpression,\n letSpecialExpression,\n loopSpecialExpression,\n objectSpecialExpression,\n recurSpecialExpression,\n switchSpecialExpression,\n throwSpecialExpression,\n trySpecialExpression,\n unlessSpecialExpression,\n] as const\n\nexport type SpecialExpressions = typeof specialExpressions\nexport type SpecialExpression = SpecialExpressions[number]\nexport type SpecialExpressionName = keyof typeof specialExpressionTypes\nexport type CommonSpecialExpressionType = [\n | typeof specialExpressionTypes['??']\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['cond']\n | typeof specialExpressionTypes['switch']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['do']\n | typeof specialExpressionTypes['if']\n | typeof specialExpressionTypes['unless']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object'],\n]\n\nexport type SpecialExpressionType = typeof specialExpressionTypes[SpecialExpressionName]\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n allNormalExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressionTypes)\nexport const specialExpressionNameSet = new Set(specialExpressionKeys)\n","import { specialExpressions } from '../builtin'\nimport { evalueateBindingNodeValues } from '../builtin/bindingNode'\nimport { allNormalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n NormalBuiltinFunction,\n PartialFunction,\n SomePredFunction,\n SpecialBuiltinFunction,\n UserDefinedFunction,\n} from '../parser/types'\nimport { bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport type { Context, EvaluateNode, ExecuteFunction } from './interface'\n\ntype FunctionExecutors = Record<LitsFunctionType, (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateNode: EvaluateNode, executeFunction: ExecuteFunction },\n) => Any>\n\nfunction checkParams(\n evaluatedFunction: EvaluatedFunction,\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n const hasRest = evaluatedFunction[0].some(arg => arg[0] === bindingTargetTypes.rest)\n const minArity = evaluatedFunction[0].filter(arg => arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined).length\n const maxArity = hasRest ? Number.MAX_SAFE_INTEGER : evaluatedFunction[0].length\n if (nbrOfParams < minArity || nbrOfParams > maxArity) {\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n }\n}\n\nexport const functionExecutors: FunctionExecutors = {\n NativeJsFunction: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.nativeFn.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n UserDefined: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateNode }) => {\n for (;;) {\n checkParams(fn.evaluatedfunction, params.length, sourceCodeInfo)\n const evaluatedFunction = fn.evaluatedfunction\n const args = evaluatedFunction[0]\n const nbrOfNonRestArgs: number = args.filter(arg => arg[0] !== bindingTargetTypes.rest).length\n\n const newContextStack = contextStack.create(fn.evaluatedfunction[2])\n const newContext: Context = {}\n\n const rest: Arr = []\n for (let i = 0; i < params.length; i += 1) {\n if (i < nbrOfNonRestArgs) {\n const param = toAny(params[i])\n const valueRecord = evalueateBindingNodeValues(args[i]!, param, Node =>\n evaluateNode(Node, newContextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n for (let i = params.length; i < nbrOfNonRestArgs; i++) {\n const arg = args[i]!\n const defaultValue = evaluateNode(arg[1][1]!, contextStack.create(newContext))\n const valueRecord = evalueateBindingNodeValues(arg, defaultValue, Node =>\n evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n const restArgument = args.find(arg => arg[0] === bindingTargetTypes.rest)\n if (restArgument !== undefined) {\n const valueRecord = evalueateBindingNodeValues(restArgument, rest, Node => evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n try {\n let result: Any = null\n const newContextStack2 = newContextStack.create(newContext)\n for (const node of evaluatedFunction[1]) {\n result = evaluateNode(node, newContextStack2)\n }\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n Partial: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.function, [...fn.params, ...params], contextStack, sourceCodeInfo)\n },\n Comp: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { params: f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n Constantly: (fn: ConstantlyFunction) => {\n return fn.value\n },\n Juxt: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.params.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n Complement: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.function, params, contextStack, sourceCodeInfo)\n },\n EveryPred: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n SomePred: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n Fnull: (fn: FNullFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fnulledParams = params.map((param, index) => (param === null ? toAny(fn.params[index]) : param))\n return executeFunction(toAny(fn.function), fnulledParams, contextStack, sourceCodeInfo)\n },\n Builtin: (fn: NormalBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(allNormalExpressions[fn.normalBuitinSymbolType], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n SpecialBuiltin: (fn: SpecialBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const specialExpression = asNonUndefined(specialExpressions[fn.specialBuiltinSymbolType], sourceCodeInfo)\n if (specialExpression.evaluateAsNormalExpression) {\n return specialExpression.evaluateAsNormalExpression(params, sourceCodeInfo, contextStack, { executeFunction })\n }\n else {\n throw new LitsError(`Special builtin function ${fn.specialBuiltinSymbolType} is not supported as normal expression.`, sourceCodeInfo)\n }\n },\n}\n","import type { SpecialExpression } from '../builtin'\nimport { builtin } from '../builtin'\nimport { NodeTypes, getNodeTypeName } from '../constants/constants'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport type { Any, Arr, Obj } from '../interface'\nimport type {\n Ast,\n Node,\n NormalExpressionNode,\n NumberNode,\n ReservedSymbolNode,\n SpecialExpressionNode,\n StringNode,\n SymbolNode,\n} from '../parser/types'\nimport { reservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isNormalExpressionNodeWithName, isSpreadNode } from '../typeGuards/astNode'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { assertString } from '../typeGuards/string'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n for (const node of ast.body) {\n result = evaluateNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateNode(node: Node, contextStack: ContextStack): Any {\n switch (node[0]) {\n case NodeTypes.Number:\n return evaluateNumber(node as NumberNode)\n case NodeTypes.String:\n return evaluateString(node as StringNode)\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.UserDefinedSymbol:\n return contextStack.evaluateSymbol(node as SymbolNode)\n case NodeTypes.ReservedSymbol:\n return evaluateReservedSymbol(node as ReservedSymbolNode)\n case NodeTypes.NormalExpression:\n return evaluateNormalExpression(node as NormalExpressionNode, contextStack)\n case NodeTypes.SpecialExpression:\n return evaluateSpecialExpression(node as SpecialExpressionNode, contextStack)\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`${getNodeTypeName(node[0])}-node cannot be evaluated`, node[2])\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node[1]\n}\n\nfunction evaluateString(node: StringNode): string {\n return node[1]\n}\n\nfunction evaluateReservedSymbol(node: ReservedSymbolNode): Any {\n const reservedName = node[1]\n const value = reservedSymbolRecord[reservedName]\n return asNonUndefined(value, node[2])\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const sourceCodeInfo = node[2]\n const paramNodes: Node[] = node[1][1]\n const params: Arr = []\n paramNodes.forEach((paramNode) => {\n if (isSpreadNode(paramNode)) {\n const spreadValue = evaluateNode(paramNode[1], contextStack)\n if (Array.isArray(spreadValue)) {\n params.push(...spreadValue)\n }\n else {\n throw new LitsError(`Spread operator requires an array, got ${valueToString(paramNode)}`, paramNode[2])\n }\n }\n else {\n params.push(evaluateNode(paramNode, contextStack))\n }\n })\n if (isNormalExpressionNodeWithName(node)) {\n const nameSymbol = node[1][0]\n\n if (isNormalBuiltinSymbolNode(nameSymbol)) {\n const type = nameSymbol[1]\n const normalExpression = builtin.allNormalExpressions[type]!\n return normalExpression.evaluate(params, node[2], contextStack, { executeFunction })\n }\n else {\n const fn = contextStack.getValue(nameSymbol[1])\n if (fn !== undefined) {\n return executeFunction(asAny(fn), params, contextStack, sourceCodeInfo)\n }\n throw new UndefinedSymbolError(nameSymbol[1], node[2])\n }\n }\n else {\n const fnNode: Node = node[1][0]\n const fn = evaluateNode(fnNode, contextStack)\n return executeFunction(fn, params, contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.functionType](fn, params, sourceCodeInfo, contextStack, { evaluateNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpressionType = node[1][0]\n const specialExpression: SpecialExpression = asNonUndefined(builtin.specialExpressions[specialExpressionType], node[2])\n const castedEvaluate = specialExpression.evaluate as Function\n\n return castedEvaluate(node, contextStack, { evaluateNode, builtin, getUndefinedSymbols }) as Any\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Any, Arr } from '../interface'\nimport type { Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateNode = (node: Node, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import { normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { LitsError, UndefinedSymbolError } from '../errors'\nimport type { Any } from '../interface'\nimport type { ContextParams, LazyValue } from '../Lits/Lits'\nimport type { NativeJsFunction, NormalBuiltinFunction, SymbolNode, UserDefinedSymbolNode } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode } from '../typeGuards/astNode'\nimport { toAny } from '../utils'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport type { Context, LookUpResult } from './interface'\nimport { isContextEntry } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.globalContext = asNonUndefined(contexts[0])\n this.contexts = contexts\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public new(context: Context): ContextStack {\n const contexts = [{}, context]\n\n return new ContextStackImpl({ contexts })\n }\n\n public exportValues(values: Record<string, Any>, sourceCodeInfo: SourceCodeInfo | undefined) {\n for (const [name, value] of Object.entries(values)) {\n if (this.globalContext[name]) {\n throw new LitsError(`Cannot redefine exported value \"${name}\"`, sourceCodeInfo)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow special expression \"${name}\"`, sourceCodeInfo)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow builtin function \"${name}\"`, sourceCodeInfo)\n }\n this.globalContext[name] = { value }\n }\n this.addValues(values, sourceCodeInfo)\n }\n\n public addValues(values: Record<string, Any>, sourceCodeInfo: SourceCodeInfo | undefined) {\n const currentContext = this.contexts[0]!\n for (const [name, value] of Object.entries(values)) {\n if (currentContext[name]) {\n throw new LitsError(`Cannot redefine value \"${name}\"`, sourceCodeInfo)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow special expression \"${name}\"`, sourceCodeInfo)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow builtin function \"${name}\"`, sourceCodeInfo)\n }\n currentContext[name] = { value: toAny(value) }\n }\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: UserDefinedSymbolNode): LookUpResult {\n const value = node[1]\n // const sourceCodeInfo = node[2]\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateSymbol(node: SymbolNode): Any {\n if (isSpecialBuiltinSymbolNode(node)) {\n const functionType = node[1]\n switch (functionType) {\n case specialExpressionTypes['&&']:\n case specialExpressionTypes['||']:\n case specialExpressionTypes.array:\n case specialExpressionTypes.object:\n case specialExpressionTypes['defined?']:\n case specialExpressionTypes.recur:\n case specialExpressionTypes.throw:\n case specialExpressionTypes['??']:\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'SpecialBuiltin',\n specialBuiltinSymbolType: functionType,\n sourceCodeInfo: node[2],\n }\n default:\n throw new LitsError(`Unknown special builtin symbol type: ${functionType}`, node[2])\n }\n }\n if (isNormalBuiltinSymbolNode(node)) {\n const type = node[1]\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'Builtin',\n normalBuitinSymbolType: type,\n sourceCodeInfo: node[2],\n } satisfies NormalBuiltinFunction\n }\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n\n throw new UndefinedSymbolError(node[1], node[2])\n }\n}\n\nexport function createContextStack(params: ContextParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n functionType: 'NativeJsFunction',\n nativeFn: jsFunction,\n name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack.create({})\n}\n","import { LitsError } from '../errors'\n\nconst binaryOperators = [\n '**', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '++', // string concatenation\n\n '<', // less than\n '<=', // less than or equal\n '≤', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n '≥', // greater than or equal\n\n '=', // equal\n '!=', // not equal\n '≠', // not equal\n\n '&', // bitwise AND\n '^', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n] as const\n\nconst otherOperators = [\n '->', // lambda\n '...', // rest\n '.', // property accessor\n ',', // item separator\n ':=', // property assignment\n ';', // statement terminator\n] as const\n\nconst symbolicOperators = [\n ...binaryOperators,\n ...otherOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n '&&',\n '||',\n 'comment',\n 'cond',\n 'def',\n 'defined?',\n // 'defn',\n 'do',\n 'doseq',\n // 'fn',\n 'if',\n 'let',\n 'loop',\n 'recur',\n 'throw',\n 'try',\n 'unless',\n 'while',\n]\n\nconst nonFunctionOperatorSet = new Set(nonFunctionOperators)\nexport function isFunctionOperator(operator: string): boolean {\n return !nonFunctionOperatorSet.has(operator)\n}\n\nexport type SymbolicBinaryOperator = typeof binaryOperators[number]\nexport type SymbolicOperator = typeof symbolicOperators[number]\n\nconst binaryOperatorSet = new Set(binaryOperators)\nexport function isBinaryOperator(operator: string): operator is SymbolicBinaryOperator {\n return binaryOperatorSet.has(operator as SymbolicBinaryOperator)\n}\nexport function assertBinaryOperator(operator: string): asserts operator is SymbolicBinaryOperator {\n if (!isBinaryOperator(operator)) {\n throw new LitsError(`Expected symbolic binary operator, got ${operator}`, undefined)\n }\n}\nexport function asBinaryOperator(operator: string): SymbolicBinaryOperator {\n assertBinaryOperator(operator)\n return operator\n}\n\nconst symbolicOperatorSet = new Set(symbolicOperators)\nexport function isSymbolicOperator(operator: string): operator is SymbolicOperator {\n return symbolicOperatorSet.has(operator as SymbolicOperator)\n}\nexport function assertSymbolicOperator(operator: string): asserts operator is SymbolicOperator {\n if (!isSymbolicOperator(operator)) {\n throw new LitsError(`Expected symbolic operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicOperator(operator: string): SymbolicOperator {\n assertSymbolicOperator(operator)\n return operator\n}\n","import { LitsError } from '../errors'\nimport { isSymbolicOperator } from './operators'\nimport type { BasePrefixedNumberToken, LBraceToken, LBracketToken, LParenToken, MultiLineCommentToken, NumberToken, OperatorToken, RBraceToken, RBracketToken, RParenToken, RegexpShorthandToken, ReservedSymbolToken, SingleLineCommentToken, StringToken, SymbolToken, Token, TokenDescriptor, WhitespaceToken } from './token'\nimport type { ReservedSymbol, ValidReservedSymbol } from './reservedNames'\nimport { reservedSymbolRecord } from './reservedNames'\n\nexport type Tokenizer<T extends Token> = (input: string, position: number) => TokenDescriptor<T>\n\nconst illegalSymbolCharacters = [\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '\\'',\n '\"',\n '`',\n ',',\n '.',\n ';',\n ' ',\n '\\n',\n '\\r',\n '\\t',\n]\nconst illegalFirstSymbolCharacters = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ...illegalSymbolCharacters,\n]\nconst illegalSymbolCharacterSet = new Set(illegalSymbolCharacters)\nconst illegalFirstSymbolCharacterSet = new Set(illegalFirstSymbolCharacters)\n\nconst whitespaceRegExp = /\\s/\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeToken('RBrace', '}', input, position)\n\nconst tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nconst tokenizeRegexpShorthand: Tokenizer<RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['RegexpShorthand', `#${token[1]}${options}`]]\n}\n\nfunction tokenizeToken<T extends Token>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type, value] as T]\n else\n return NO_MATCH\n}\n\nexport const tokenizeWhitespace: Tokenizer<WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst postNumberRegExp = /[\\s)\\]}(,;]/\n\nexport const tokenizeNumber: Tokenizer<NumberToken> = (input, position) => {\n let i: number\n const negate = input[position] === '-'\n const plusPrefix = input[position] === '+'\n const start = negate || plusPrefix ? position + 1 : position\n let hasDecimalPoint = false\n let hasExponent = false\n for (i = start; i < input.length; i += 1) {\n const char = input[i] as string\n\n if (char === '_') {\n if (!decimalNumberRegExp.test(input[i - 1]!) || !decimalNumberRegExp.test(input[i + 1]!)) {\n return NO_MATCH\n }\n }\n\n else if (char === '.') {\n if (i === start || hasDecimalPoint || hasExponent) {\n return NO_MATCH\n }\n hasDecimalPoint = true\n }\n\n else if (char === 'e' || char === 'E') {\n if (i === start || hasExponent) {\n return NO_MATCH\n }\n\n if (input[i - 1] === '.' || input[i - 1] === '+' || input[i - 1] === '-') {\n return NO_MATCH\n }\n\n if (input[i + 1] === '+' || input[i + 1] === '-') {\n i += 1\n }\n\n hasExponent = true\n }\n\n else if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n\n if ((negate || plusPrefix) && i === start) {\n return NO_MATCH\n }\n\n const length = i - position\n if (length === 0) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['Number', input.substring(position, i)]]\n}\n\nexport const tokenizeBasePrefixedNumber: Tokenizer<BasePrefixedNumberToken> = (input, position) => {\n if (input[position] !== '0') {\n return NO_MATCH\n }\n\n const baseChar = input[position + 1]\n\n const type = baseChar === 'b' || baseChar === 'B'\n ? 'binary'\n : baseChar === 'o' || baseChar === 'O'\n ? 'octal'\n : baseChar === 'x' || baseChar === 'X'\n ? 'hex'\n : null\n\n if (type === null) {\n return NO_MATCH\n }\n\n let i: number\n for (i = position + 2; i < input.length; i += 1) {\n const char = input[i] as string\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length <= 2) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['BasePrefixedNumber', input.substring(position, i)]]\n}\n\nexport const tokenizeSymbol: Tokenizer<SymbolToken> = (input, position) => {\n let value = input[position]!\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['Symbol', value]]\n }\n\n if (!illegalFirstSymbolCharacterSet.has(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && !illegalSymbolCharacterSet.has(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeReservedSymbolToken: Tokenizer<ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeSymbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = reservedSymbolRecord[symbolName as ReservedSymbol]\n if (info === undefined) {\n return NO_MATCH\n }\n return [symbolMeta[0], ['ReservedSymbol', symbolName as ValidReservedSymbol]]\n}\n\nexport const tokenizeOperator: Tokenizer<OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isSymbolicOperator(threeChars)) {\n return [3, ['Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isSymbolicOperator(twoChars)) {\n return [2, ['Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isSymbolicOperator(oneChar)) {\n return [1, ['Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeMultiLineComment: Tokenizer<MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while ((input[position + length] !== '*' || input[position + length + 1] !== '/') && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeSingleLineComment: Tokenizer<SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const tokenizers = [\n tokenizeWhitespace,\n tokenizeMultiLineComment,\n tokenizeSingleLineComment,\n tokenizeReservedSymbolToken,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n tokenizeRegexpShorthand,\n tokenizeBasePrefixedNumber,\n tokenizeNumber,\n tokenizeOperator,\n tokenizeSymbol,\n] as const satisfies Tokenizer<Token>[]\n","import { LitsError } from '../errors'\nimport type { FilePathParams } from '../Lits/Lits'\nimport { tokenizers } from './tokenizers'\nimport type { SourceCodeInfo, Token, TokenDescriptor } from './token'\n\nexport interface TokenStream {\n tokens: Token[]\n hasDebugData: boolean\n filePath?: string\n}\n\nexport function tokenize(input: string, debug: boolean, filePath: FilePathParams['filePath']): TokenStream {\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath,\n hasDebugData: debug,\n }\n\n while (position < input.length) {\n const tokenDescriptor = getCurrentToken(input, position)\n\n const sourceCodeInfo: SourceCodeInfo | undefined = debug\n ? createSourceCodeInfo(input, position, filePath)\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (sourceCodeInfo) {\n token[2] = sourceCodeInfo\n }\n\n tokenStream.tokens.push(token)\n }\n }\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n return [position - initialPosition, token]\n }\n return null\n}\n","import { LitsError } from '../errors'\nimport type { ValidReservedSymbol } from './reservedNames'\nimport { type SymbolicBinaryOperator, type SymbolicOperator, isBinaryOperator } from './operators'\n\nexport const tokenTypes = [\n 'LBrace',\n 'LBracket',\n 'RBrace',\n 'RBracket',\n 'LParen',\n 'RParen',\n 'BasePrefixedNumber',\n 'MultiLineComment',\n 'Number',\n 'Operator',\n 'RegexpShorthand',\n 'ReservedSymbol',\n 'SingleLineComment',\n 'String',\n 'Symbol',\n 'Whitespace',\n] as const\n\nexport type TokenType = typeof tokenTypes[number]\n\nconst modifierNames = ['&rest', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\ntype GenericToken<T extends TokenType, V extends string = string> = [T, V] | [T, V, SourceCodeInfo]\n\nexport type LBraceToken = GenericToken<'LBrace', '{'>\nexport type LBracketToken = GenericToken<'LBracket', '['>\nexport type LParenToken = GenericToken<'LParen', '('>\nexport type RBraceToken = GenericToken<'RBrace', '}'>\nexport type RBracketToken = GenericToken<'RBracket', ']'>\nexport type RParenToken = GenericToken<'RParen', ')'>\n\nexport type BasePrefixedNumberToken = GenericToken<'BasePrefixedNumber'>\nexport type MultiLineCommentToken = GenericToken<'MultiLineComment'>\nexport type NumberToken = GenericToken<'Number'>\nexport type OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericToken<'Operator', T>\nexport type RegexpShorthandToken = GenericToken<'RegexpShorthand'>\nexport type ReservedSymbolToken<T extends ValidReservedSymbol = ValidReservedSymbol> = GenericToken<'ReservedSymbol', T>\nexport type SingleLineCommentToken = GenericToken<'SingleLineComment'>\nexport type StringToken = GenericToken<'String'>\nexport type SymbolToken<T extends string = string> = GenericToken<'Symbol', T>\nexport type WhitespaceToken = GenericToken<'Whitespace'>\n\nexport type Token =\n | LBraceToken\n | LBracketToken\n | LParenToken\n | RBraceToken\n | RBracketToken\n | RParenToken\n | BasePrefixedNumberToken\n | MultiLineCommentToken\n | NumberToken\n | OperatorToken\n | RegexpShorthandToken\n | ReservedSymbolToken\n | SingleLineCommentToken\n | StringToken\n | SymbolToken\n | WhitespaceToken\n\nexport type TokenDescriptor<T extends Token> = [length: number, token?: T]\n\nexport interface SourceCodeInfo {\n position: {\n line: number\n column: number\n }\n code: string\n filePath?: string\n}\n\nexport function isSymbolToken<T extends string>(token: Token, symbolName?: T): token is SymbolToken<T> {\n if (token?.[0] !== 'Symbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\n\nexport function assertSymbolToken<T extends string>(token: Token, symbolName?: T): asserts token is SymbolToken<T> {\n if (!isSymbolToken(token, symbolName)) {\n throwUnexpectedToken('Symbol', undefined, token)\n }\n}\nexport function asSymbolToken<T extends string>(token: Token, symbolName?: T): SymbolToken<T> {\n assertSymbolToken(token, symbolName)\n return token\n}\n\nexport function isReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): token is ReservedSymbolToken<T> {\n if (token?.[0] !== 'ReservedSymbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\nexport function assertReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): asserts token is ReservedSymbolToken<T> {\n if (!isReservedSymbolToken(token, symbolName)) {\n throwUnexpectedToken('ReservedSymbol', symbolName, token)\n }\n}\nexport function asReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): ReservedSymbolToken<T> {\n assertReservedSymbolToken(token, symbolName)\n return token\n}\n\nexport function isSingleLineCommentToken(token: Token): token is SingleLineCommentToken {\n return token?.[0] === 'SingleLineComment'\n}\nexport function assertSingleLineCommentToken(token: Token): asserts token is SingleLineCommentToken {\n if (!isSingleLineCommentToken(token)) {\n throwUnexpectedToken('SingleLineComment', undefined, token)\n }\n}\nexport function asSingleLineCommentToken(token: Token): SingleLineCommentToken {\n assertSingleLineCommentToken(token)\n return token\n}\n\nexport function isMultiLineCommentToken(token: Token): token is MultiLineCommentToken {\n return token?.[0] === 'MultiLineComment'\n}\nexport function assertMultiLineCommentToken(token: Token): asserts token is MultiLineCommentToken {\n if (!isMultiLineCommentToken(token)) {\n throwUnexpectedToken('MultiLineComment', undefined, token)\n }\n}\nexport function asMultiLineCommentToken(token: Token): MultiLineCommentToken {\n assertMultiLineCommentToken(token)\n return token\n}\n\nexport function isOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): token is OperatorToken<T> {\n if (token?.[0] !== 'Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): asserts token is OperatorToken<T> {\n if (!isOperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, token[2])\n }\n throwUnexpectedToken('Operator', operatorName, token)\n }\n}\nexport function asOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): OperatorToken<T> {\n assertOperatorToken(token, operatorName)\n return token\n}\n\nexport function isWhitespaceToken(token: Token): token is WhitespaceToken {\n return token?.[0] === 'Whitespace'\n}\nexport function assertWhitespaceToken(token: Token): asserts token is WhitespaceToken {\n if (!isWhitespaceToken(token)) {\n throwUnexpectedToken('Whitespace', undefined, token)\n }\n}\nexport function asWhitespaceToken(token: Token): WhitespaceToken {\n assertWhitespaceToken(token)\n return token\n}\n\nexport function isNumberToken(token: Token): token is NumberToken {\n return token?.[0] === 'Number'\n}\nexport function assertNumberToken(token: Token): asserts token is NumberToken {\n if (!isNumberToken(token)) {\n throwUnexpectedToken('Number', undefined, token)\n }\n}\nexport function asNumberToken(token: Token): NumberToken {\n assertNumberToken(token)\n return token\n}\n\nexport function isBasePrefixedNumberToken(token: Token): token is BasePrefixedNumberToken {\n return token?.[0] === 'BasePrefixedNumber'\n}\nexport function assertBasePrefixedNumberToken(token: Token): asserts token is BasePrefixedNumberToken {\n if (!isBasePrefixedNumberToken(token)) {\n throwUnexpectedToken('BasePrefixedNumber', undefined, token)\n }\n}\nexport function asBasePrefixedNumberToken(token: Token): BasePrefixedNumberToken {\n assertBasePrefixedNumberToken(token)\n return token\n}\n\nexport function isLParenToken(token: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', undefined, token)\n }\n}\nexport function asLParenToken(token: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', undefined, token)\n }\n}\nexport function asRParenToken(token: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', undefined, token)\n }\n}\nexport function asLBracketToken(token: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', undefined, token)\n }\n}\nexport function asRBracketToken(token: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', undefined, token)\n }\n}\nexport function asLBraceToken(token: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', undefined, token)\n }\n}\nexport function asRBraceToken(token: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', undefined, token)\n }\n}\nexport function asStringToken(token: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isRegexpShorthandToken(token: Token): token is RegexpShorthandToken {\n return token?.[0] === 'RegexpShorthand'\n}\nexport function assertRegexpShorthandToken(token: Token): asserts token is RegexpShorthandToken {\n if (!isRegexpShorthandToken(token)) {\n throwUnexpectedToken('RegexpShorthand', undefined, token)\n }\n}\nexport function asRegexpShorthandToken(token: Token): RegexpShorthandToken {\n assertRegexpShorthandToken(token)\n return token\n}\n\nexport function isA_BinaryOperatorToken(token: Token): token is OperatorToken<SymbolicBinaryOperator> {\n return token?.[0] === 'Operator' && isBinaryOperator(token[1])\n}\nexport function assertA_BinaryOperatorToken(token: Token): asserts token is OperatorToken<SymbolicBinaryOperator> {\n if (!isA_BinaryOperatorToken(token)) {\n throwUnexpectedToken('Operator', undefined, token)\n }\n}\nexport function asA_BinaryOperatorToken(token: Token): OperatorToken<SymbolicBinaryOperator> {\n assertA_BinaryOperatorToken(token)\n return token\n}\n\nfunction throwUnexpectedToken(expected: TokenType, expectedValue: string | undefined, actual: Token): never {\n const actualOutput = `${actual[0]} '${actual[1]}'`\n throw new LitsError(`Unexpected token: ${actualOutput}, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, actual[2])\n}\n","import type { TokenStream } from './tokenize'\nimport { isMultiLineCommentToken, isSingleLineCommentToken, isWhitespaceToken } from './token'\n\nexport function minifyTokenStream(tokenStream: TokenStream, { removeWhiteSpace }: { removeWhiteSpace: boolean }): TokenStream {\n const tokens = tokenStream.tokens\n .filter((token) => {\n if (isSingleLineCommentToken(token)\n || isMultiLineCommentToken(token)\n || (removeWhiteSpace && isWhitespaceToken(token))) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\nimport { isSymbolToken } from '../tokenizer/token'\n\nexport function transformSymbolTokens(tokenStram: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => isSymbolToken(token)\n ? [token[0], transformer(token[1])]\n : token),\n }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${token[1]}`\n }, '')\n}\n","import type { NormalExpressionName } from '../../reference/api'\nimport type { SpecialExpressionName, SpecialExpressionType } from '../builtin'\nimport { getAllBindingTargetNames } from '../builtin/bindingNode'\nimport { allNormalExpressions, normalExpressionTypes } from '../builtin/normalExpressions'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { ArrayNode } from '../builtin/specialExpressions/array'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DefinedNode } from '../builtin/specialExpressions/defined'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode, FunctionNode } from '../builtin/specialExpressions/functions'\nimport type { IfNode } from '../builtin/specialExpressions/if'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { ObjectNode } from '../builtin/specialExpressions/object'\nimport type { OrNode } from '../builtin/specialExpressions/or'\nimport type { QqNode } from '../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../builtin/specialExpressions/recur'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { UnlessNode } from '../builtin/specialExpressions/unless'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { type SymbolicBinaryOperator, isBinaryOperator, isFunctionOperator } from '../tokenizer/operators'\nimport { isNumberReservedSymbol, numberReservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { OperatorToken, ReservedSymbolToken, SourceCodeInfo, SymbolToken, Token, TokenType } from '../tokenizer/token'\nimport {\n asLBraceToken,\n asLBracketToken,\n asReservedSymbolToken,\n asSymbolToken,\n assertLParenToken,\n assertOperatorToken,\n assertRBraceToken,\n assertRBracketToken,\n assertRParenToken,\n assertReservedSymbolToken,\n assertSymbolToken,\n isA_BinaryOperatorToken,\n isLBraceToken,\n isLBracketToken,\n isLParenToken,\n isOperatorToken,\n isRBraceToken,\n isRBracketToken,\n isRParenToken,\n isReservedSymbolToken,\n isStringToken,\n isSymbolToken,\n} from '../tokenizer/token'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { assertNumberOfParams } from '../typeGuards'\nimport { asUserDefinedSymbolNode, isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode, isUserDefinedSymbolNode } from '../typeGuards/astNode'\nimport { type BindingNode, type BindingTarget, type Node, type NormalBuiltinSymbolNode, type NormalExpressionNodeExpression, type NormalExpressionNodeWithName, type NumberNode, type ParseState, type ReservedSymbolNode, type SpecialBuiltinSymbolNode, type StringNode, type SymbolNode, type UserDefinedSymbolNode, bindingTargetTypes } from './types'\n\nconst exponentiationPrecedence = 10\nconst binaryFunctionalOperatorPrecedence = 1\nconst placeholderRegexp = /^\\$([1-9]\\d?)?$/\n\nfunction withSourceCodeInfo<T extends Node | BindingTarget>(node: T, sourceCodeInfo: SourceCodeInfo | undefined): T {\n if (sourceCodeInfo) {\n node[2] = sourceCodeInfo\n }\n return node\n}\n\nfunction getPrecedence(operatorSign: SymbolicBinaryOperator, sourceCodeInfo: SourceCodeInfo | undefined): number {\n switch (operatorSign) {\n case '**': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 9\n\n case '+': // addition\n case '-': // subtraction\n return 8\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 7\n\n case '++': // string concatenation\n return 6\n\n case '<': // less than\n case '<=': // less than or equal\n case '≤': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n case '≥': // greater than or equal\n return 5\n\n case '=': // equal\n case '!=': // not equal\n case '≠': // not equal\n return 4\n\n case '&': // bitwise AND\n case '^': // bitwise XOR\n case '|': // bitwise OR\n return 3\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 2\n\n // leave room for binaryFunctionalOperatorPrecedence = 1\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unknown binary operator: ${operatorSign satisfies never}`, sourceCodeInfo)\n }\n}\n\nfunction createNamedNormalExpressionNode(symbolNode: NormalBuiltinSymbolNode | UserDefinedSymbolNode, params: Node[], sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeWithName {\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([NodeTypes.NormalExpression, [symbolNode, params]], sourceCodeInfo)\n\n if (isNormalBuiltinSymbolNode(symbolNode)) {\n assertNumberOfParams(allNormalExpressions[symbolNode[1]]!.paramCount, node)\n }\n\n return node\n}\n\nfunction createAccessorNode(left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeExpression {\n // Unnamed normal expression\n return withSourceCodeInfo([NodeTypes.NormalExpression, [left, [right]]], sourceCodeInfo)\n}\n\nfunction fromBinaryOperatorToNode(operator: OperatorToken, symbolNode: SymbolNode, left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): Node {\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '**': // exponentiation\n case '*':\n case '/':\n case '%':\n case '+':\n case '-':\n case '<<':\n case '>>':\n case '>>>':\n case '++':\n case '<':\n case '<=':\n case '≤':\n case '>':\n case '>=':\n case '≥':\n case '=':\n case '!=':\n case '≠':\n case '&':\n case '^':\n case '|':\n return createNamedNormalExpressionNode(symbolNode as NormalBuiltinSymbolNode, [left, right], sourceCodeInfo)\n case '&&':\n case '||':\n case '??':\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]] as AndNode, sourceCodeInfo)\n /* v8 ignore next 10 */\n case '.':\n case ';':\n case ':=':\n case ',':\n case '->':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, sourceCodeInfo)\n }\n}\n\nexport class Parser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(count: number): Token {\n return this.tokenStream.tokens[this.parseState.position + count]!\n }\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): Node[] {\n const nodes: Node[] = []\n while (!this.isAtEnd()) {\n nodes.push(this.parseExpression(0, true))\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else {\n if (!this.isAtEnd()) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n }\n return nodes\n }\n\n private parseExpression(precedence = 0, moduleScope = false): Node {\n const firstToken = this.peek()\n\n let left: Node\n\n if (isSymbolToken(firstToken)) {\n switch (firstToken[1]) {\n case 'let':\n return this.parseLet(firstToken)\n case 'if':\n case 'unless':\n left = this.parseIfOrUnless(firstToken)\n break\n case 'cond':\n left = this.parseCond(firstToken)\n break\n case 'switch':\n left = this.parseSwitch(firstToken)\n break\n case 'for':\n case 'doseq':\n left = this.parseForOrDoseq(firstToken)\n break\n case 'do':\n left = this.parseDo(firstToken)\n break\n case 'loop':\n left = this.parseLoop(firstToken)\n break\n case 'try':\n left = this.parseTry(firstToken)\n break\n }\n }\n else if (isReservedSymbolToken(firstToken, 'function')) {\n return this.parseFunction(firstToken)\n }\n else if (isReservedSymbolToken(firstToken, 'export')) {\n if (!moduleScope) {\n throw new LitsError('export is only allowed in module scope', firstToken[2])\n }\n return this.parseExport(firstToken)\n }\n\n left ||= this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtExpressionEnd()) {\n if (isA_BinaryOperatorToken(operator)) {\n const name = operator[1]\n const newPrecedece = getPrecedence(name, operator[2])\n if (\n newPrecedece <= precedence\n // ** (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n const symbol: SymbolNode = specialExpressionTypes[name as SpecialExpressionName]\n ? withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[name as SpecialExpressionName]], operator[2])\n : withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[name]!], operator[2])\n this.advance()\n const right = this.parseExpression(newPrecedece)\n left = fromBinaryOperatorToNode(operator, symbol, left, right, operator[2])\n }\n else if (isSymbolToken(operator)) {\n if (!isFunctionOperator(operator[1])) {\n break\n }\n const newPrecedece = binaryFunctionalOperatorPrecedence\n if (newPrecedece <= precedence) {\n break\n }\n const operatorSymbol = this.parseSymbol()\n const right = this.parseExpression(newPrecedece)\n if (isSpecialBuiltinSymbolNode(operatorSymbol)) {\n throw new LitsError('Special expressions are not allowed in binary functional operators', operatorSymbol[2])\n }\n left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2])\n }\n else {\n break\n }\n\n operator = this.peek()\n }\n\n return left\n }\n\n private parseOperand(): Node {\n let operand = this.parseOperandPart()\n let token = this.peek()\n while (isOperatorToken(token, '.') || isLBracketToken(token) || isLParenToken(token)) {\n if (token[1] === '.') {\n this.advance()\n const symbolToken = this.peek()\n if (!isSymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, symbolToken[1]], symbolToken[2])\n operand = createAccessorNode(operand, stringNode, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLBracketToken(token)) {\n this.advance()\n const expression = this.parseExpression()\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', this.peek()[2])\n }\n operand = createAccessorNode(operand, expression, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLParenToken(token)) {\n operand = this.parseFunctionCall(operand)\n token = this.peek()\n }\n }\n return operand\n }\n\n private parseOperandPart(): Node {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n return expression\n }\n\n else if (isOperatorToken(token)) {\n const operatorName = token[1]\n if (isBinaryOperator(operatorName)) {\n this.advance()\n if (specialExpressionTypes[operatorName as SpecialExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[operatorName as SpecialExpressionName]], token[2]) satisfies SpecialBuiltinSymbolNode\n }\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[operatorName as NormalExpressionName] as number], token[2]) satisfies NormalBuiltinSymbolNode\n }\n\n if (operatorName === '->') {\n return this.parseShorthandLamdaFunction()\n }\n else {\n throw new LitsError(`Illegal operator: ${operatorName}`, token[2])\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n TokenType,\n | 'Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'MultiLineComment' // Should have been removed\n | 'SingleLineComment' // Should have been removed\n | 'Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'Number':\n case 'BasePrefixedNumber':\n return this.parseNumber()\n case 'String':\n return this.parseString()\n case 'Symbol': {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n return this.parseSymbol()\n }\n case 'ReservedSymbol':\n return this.parseReservedSymbol()\n case 'RegexpShorthand':\n return this.parseRegexpShorthand()\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, token[2])\n }\n }\n\n private parseObject(): ObjectNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n const token = this.peek()\n if (isStringToken(token)) {\n const stringNode = this.parseString()\n params.push(withSourceCodeInfo([NodeTypes.String, stringNode[1]], token[2]))\n }\n else if (isSymbolToken(token)) {\n const value = token[1].startsWith('\\'')\n ? this.stringFromQuotedSymbol(token[1])\n : token[1]\n params.push(withSourceCodeInfo([NodeTypes.String, value], token[2]))\n this.advance()\n }\n else {\n throw new LitsError('Expected key to be a symbol or a string', this.peek()[2])\n }\n\n assertOperatorToken(this.peek(), ':=')\n this.advance()\n\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', this.peek()[2])\n }\n\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.object, params]], firstToken[2])\n }\n\n private parseArray(): ArrayNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.array, params]], firstToken[2])\n }\n\n private parseFunctionCall(symbol: Node): Node {\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n\n if (isSpecialBuiltinSymbolNode(symbol)) { // Named function\n const specialExpressionType = symbol[1]\n const type = specialExpressionType as Exclude<\n SpecialExpressionType,\n | typeof specialExpressionTypes.for\n | typeof specialExpressionTypes.if\n | typeof specialExpressionTypes.unless\n | typeof specialExpressionTypes.cond\n | typeof specialExpressionTypes.switch\n | typeof specialExpressionTypes.let\n | typeof specialExpressionTypes.do\n | typeof specialExpressionTypes.loop\n | typeof specialExpressionTypes.try\n | typeof specialExpressionTypes.doseq\n | typeof specialExpressionTypes.function\n >\n switch (type) {\n case specialExpressionTypes['||']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies OrNode\n case specialExpressionTypes['&&']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies AndNode\n case specialExpressionTypes.recur:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies RecurNode\n case specialExpressionTypes.array:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ArrayNode\n case specialExpressionTypes.object:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ObjectNode\n case specialExpressionTypes['??']: {\n if (params.length === 1) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, undefined]]], symbol[2]) satisfies QqNode\n }\n if (params.length === 2) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, params[1]!]]], symbol[2]) satisfies QqNode\n }\n throw new LitsError('Expected exactly two parameters', symbol[2])\n }\n case specialExpressionTypes['defined?']: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param as SymbolNode]], symbol[2]) satisfies DefinedNode\n }\n case specialExpressionTypes.throw: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param!]], symbol[2]) satisfies ThrowNode\n }\n case specialExpressionTypes['0_fn']:\n case specialExpressionTypes['0_def']:\n case specialExpressionTypes['0_defn']:\n throw new LitsError(`${type} is not allowed`, symbol[2])\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unknown special expression: ${type satisfies never}`, symbol[2])\n }\n }\n else if (isNormalBuiltinSymbolNode(symbol) || isNormalBuiltinSymbolNode(symbol)) {\n return createNamedNormalExpressionNode(symbol, params, symbol[2])\n }\n\n else {\n return withSourceCodeInfo([NodeTypes.NormalExpression, [symbol, params]], symbol[2]) satisfies NormalExpressionNodeExpression\n }\n }\n\n parseLambdaFunction(): FnNode | null {\n const firstToken = this.peek()\n\n if (isLParenToken(firstToken)\n && isSymbolToken(this.peekAhead(1))\n && isOperatorToken(this.peekAhead(2), '->')) {\n return null\n }\n\n try {\n const functionArguments = this.parseFunctionArguments()\n\n if (!isOperatorToken(this.peek(), '->')) {\n return null\n }\n this.advance()\n\n const body = this.parseExpression()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [body],\n ]]], firstToken[2]) satisfies FnNode\n }\n catch {\n return null\n }\n }\n\n parseFunctionArguments(): BindingTarget[] {\n const firstToken = this.peek()\n if (isSymbolToken(firstToken)) {\n return [withSourceCodeInfo([bindingTargetTypes.symbol, [this.parseSymbol(), undefined]], firstToken[2])]\n }\n\n assertLParenToken(firstToken)\n this.advance()\n\n let rest = false\n let defaults = false\n const functionArguments: BindingTarget[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n if (rest) {\n throw new LitsError('Rest argument must be last', this.peek()[2])\n }\n const bindingTarget = this.parseBindingTarget()\n if (bindingTarget[1][1] !== undefined) {\n defaults = true\n }\n if (bindingTarget[0] === bindingTargetTypes.rest) {\n rest = true\n }\n if (defaults && !bindingTarget[1][1]) {\n throw new LitsError('Default arguments must be last', this.peek()[2])\n }\n functionArguments.push(bindingTarget)\n\n if (!isOperatorToken(this.peek(), ',') && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n\n this.advance()\n\n return functionArguments\n }\n\n private parseShorthandLamdaFunction(): FnNode {\n const firstToken = this.peek()\n this.advance()\n const startPos = this.parseState.position\n const exprNode = this.parseExpression()\n const endPos = this.parseState.position - 1\n\n let arity = 0\n let dollar1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. $ = NAKED, $1, $2, $3, etc = WITH_1\n for (let pos = startPos; pos <= endPos; pos += 1) {\n const token = this.tokenStream.tokens[pos]!\n if (isSymbolToken(token)) {\n const match = placeholderRegexp.exec(token[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && dollar1 === 'WITH_1') || (match[1] && dollar1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use $ or $1', firstToken[2])\n\n dollar1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', firstToken[2])\n }\n }\n }\n\n const functionArguments: BindingTarget[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && dollar1 === 'NAKED') {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, '$'], undefined]], firstToken[2]))\n }\n else {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, `$${i}`], undefined]], firstToken[2]))\n }\n }\n\n const node: FnNode = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [exprNode],\n ]]], firstToken[2])\n\n return node\n }\n\n private parseOptionalDefaulValue(): Node | undefined {\n if (isOperatorToken(this.peek(), ':=')) {\n this.advance()\n return this.parseExpression()\n }\n return undefined\n }\n\n private parseBindingTarget({ requireDefaultValue, noRest }: { requireDefaultValue?: true, noRest?: true } = {}): BindingTarget {\n const firstToken = this.peek()\n\n // Symbol\n if (isSymbolToken(firstToken)) {\n const symbol = this.parseSymbol()\n if (!isUserDefinedSymbolNode(symbol)) {\n throw new LitsError('Expected user defined symbol', firstToken[2])\n }\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.symbol, [symbol, defaultValue]], firstToken[2])\n }\n\n // Rest\n if (isOperatorToken(firstToken, '...')) {\n if (noRest) {\n throw new LitsError('Rest element not allowed', firstToken[2])\n }\n this.advance()\n const symbol = asUserDefinedSymbolNode(this.parseSymbol())\n if (isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n return withSourceCodeInfo([bindingTargetTypes.rest, [symbol[1], undefined]], firstToken[2])\n }\n\n // Array\n if (isLBracketToken(firstToken)) {\n this.advance()\n const elements: (BindingTarget | null)[] = []\n let token = this.peek()\n let rest = false\n while (!isRBracketToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, ',')) {\n elements.push(null)\n this.advance()\n token = this.peek()\n continue\n }\n\n const target = this.parseBindingTarget()\n\n if (target[0] === bindingTargetTypes.rest) {\n rest = true\n }\n\n elements.push(target)\n token = this.peek()\n\n if (!isRBracketToken(token)) {\n assertOperatorToken(token, ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.array, [elements, defaultValue]], firstToken[2])\n }\n\n // Object\n if (isLBraceToken(firstToken)) {\n this.advance()\n const elements: Record<string, BindingTarget> = {}\n let token = this.peek()\n let rest = false\n while (!isRBraceToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, '...')) {\n rest = true\n this.advance()\n }\n const key = asUserDefinedSymbolNode(this.parseSymbol())\n token = this.peek()\n if (isReservedSymbolToken(token, 'as')) {\n if (rest) {\n throw new LitsError('Rest argument can not have alias', token[2])\n }\n this.advance()\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n if (elements[name[1]]) {\n throw new LitsError(`Duplicate binding name: ${name}`, token[2])\n }\n elements[key[1]] = withSourceCodeInfo([bindingTargetTypes.symbol, [name, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n else if (isRBraceToken(token) || isOperatorToken(token, ',') || isOperatorToken(token, ':=')) {\n if (elements[key[1]]) {\n throw new LitsError(`Duplicate binding name: ${key}`, token[2])\n }\n if (rest && isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n\n elements[key[1]] = rest\n ? withSourceCodeInfo([bindingTargetTypes.rest, [key[1], this.parseOptionalDefaulValue()]], firstToken[2])\n : withSourceCodeInfo([bindingTargetTypes.symbol, [key, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n\n else if (isLBraceToken(token) || isLBracketToken(token)) {\n elements[key[1]] = this.parseBindingTarget()\n }\n\n if (!isRBraceToken(this.peek())) {\n assertOperatorToken(this.peek(), ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n token = this.peek()\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', token[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.object, [elements, defaultValue]], firstToken[2])\n }\n\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n\n private parseLet(token: SymbolToken, optionalSemicolon = false): LetNode {\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n\n const value = target[1][1]!\n target[1][1] = undefined\n\n if (!optionalSemicolon) {\n assertOperatorToken(this.peek(), ';')\n }\n\n const bindingTarget: BindingNode = withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2])\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.let, bindingTarget]], token[2]) satisfies LetNode\n }\n\n private parseDo(token: SymbolToken): DoNode {\n this.advance()\n const expressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n }\n\n private parseLoop(firstToken: SymbolToken): LoopNode {\n this.advance()\n\n const bindingNodes: BindingNode[] = []\n let token = this.peek()\n while (!this.isAtEnd() && !isSymbolToken(token, 'do')) {\n assertSymbolToken(token, 'let')\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n const value = target[1][1]!\n target[1][1] = undefined\n\n bindingNodes.push(withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2]) satisfies BindingNode)\n\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n token = this.peek()\n }\n if (bindingNodes.length === 0) {\n throw new LitsError('Expected binding', this.peek()[2])\n }\n\n assertSymbolToken(token, 'do')\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n params.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.loop, bindingNodes, params]], firstToken[2]) satisfies LoopNode\n }\n\n private parseTry(token: SymbolToken): TryNode {\n this.advance()\n const tryExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'catch')) {\n tryExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'catch')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const tryExpression = tryExpressions.length === 1\n ? tryExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, tryExpressions]], token[2]) satisfies DoNode\n\n assertReservedSymbolToken(this.peek(), 'catch')\n this.advance()\n\n let errorSymbol: SymbolNode | undefined\n if (isLParenToken(this.peek())) {\n this.advance()\n errorSymbol = this.parseSymbol()\n assertRParenToken(this.peek())\n this.advance()\n }\n\n const catchExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n catchExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const catchExpression = catchExpressions.length === 1\n ? catchExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, catchExpressions]], token[2]) satisfies DoNode\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.try, tryExpression, errorSymbol, catchExpression]], token[2]) satisfies TryNode\n }\n\n private parseForOrDoseq(firstToken: SymbolToken): ForNode | DoSeqNode {\n const isDoseq = firstToken[1] === 'doseq'\n this.advance()\n\n const forLoopBindings: LoopBindingNode[] = []\n\n while (!this.isAtEnd() && !isSymbolToken(this.peek(), 'do')) {\n const loopBinding = this.parseForLoopBinding()\n const existingBoundNames = forLoopBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[0][1][0])))\n const newBoundNames = getAllBindingTargetNames(loopBinding[0][1][0])\n if (Object.keys(newBoundNames).some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', loopBinding[0][2])\n }\n forLoopBindings.push(loopBinding)\n }\n\n assertSymbolToken(this.peek(), 'do')\n this.advance()\n\n const expressions: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return isDoseq\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.doseq, forLoopBindings, expressions]], firstToken[2]) satisfies DoSeqNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.for, forLoopBindings, expressions]], firstToken[2]) satisfies ForNode\n }\n\n private parseForLoopBinding(): LoopBindingNode {\n assertReservedSymbolToken(this.peek(), 'each')\n\n this.advance()\n\n const bindingNode = this.parseBinding()\n\n const modifiers: Array<'&let' | '&when' | '&while'> = []\n let token = this.peek()\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'let')\n && !isReservedSymbolToken(token, 'when')\n && !isReservedSymbolToken(token, 'while')\n && !isSymbolToken(token, 'do')\n && !isReservedSymbolToken(token, 'each')\n ) {\n throw new LitsError('Expected symbol each, do, let, when or while', token[2])\n }\n\n const letBindings: BindingNode[] = []\n if (token[1] === 'let') {\n modifiers.push('&let')\n while (isSymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n const existingBoundNames = letBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[1][0])))\n const newBoundNames = Object.keys(getAllBindingTargetNames(letNode[1][1][1][0]))\n if (newBoundNames.some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', letNode[1][1][2])\n }\n\n letBindings.push(letNode[1][1])\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n }\n\n let whenNode: Node | undefined\n let whileNode: Node | undefined\n while (\n isReservedSymbolToken(token, 'when')\n || isReservedSymbolToken(token, 'while')\n ) {\n this.advance()\n\n if (token[1] === 'when') {\n if (modifiers.includes('&when')) {\n throw new LitsError('Multiple when modifiers in for loop', token[2])\n }\n modifiers.push('&when')\n whenNode = this.parseExpression()\n }\n else {\n if (modifiers.includes('&while')) {\n throw new LitsError('Multiple while modifiers in for loop', token[2])\n }\n modifiers.push('&while')\n whileNode = this.parseExpression()\n }\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each')) {\n throw new LitsError('Expected do or each', token[2])\n }\n\n return [bindingNode, letBindings, whenNode, whileNode] satisfies LoopBindingNode\n }\n\n private parseBinding(): BindingNode {\n const firstToken = asSymbolToken(this.peek())\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n\n assertReservedSymbolToken(this.peek(), 'in')\n this.advance()\n\n const value = this.parseExpression()\n\n const node: BindingNode = withSourceCodeInfo(\n [\n NodeTypes.Binding,\n [\n withSourceCodeInfo([bindingTargetTypes.symbol, [name, undefined]], firstToken[2]),\n value,\n ],\n ],\n firstToken[2],\n )\n return node\n }\n\n parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode {\n const isUnless = token[1] === 'unless'\n this.advance()\n const condition = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const thenExpressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'else')\n && !isReservedSymbolToken(this.peek(), 'end')\n ) {\n thenExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'else') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = thenExpressions.length === 1\n ? thenExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, thenExpressions]], token[2]) satisfies DoNode\n\n let elseExpression: Node | undefined\n if (isReservedSymbolToken(this.peek(), 'else')) {\n this.advance()\n const elseExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n elseExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n elseExpression = elseExpressions.length === 1\n ? elseExpressions[0]\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, elseExpressions]], token[2]) satisfies DoNode\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const params = [condition, thenExpression]\n if (elseExpression) {\n params.push(elseExpression)\n }\n\n return isUnless\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.unless, [condition, thenExpression, elseExpression]]], token[2]) satisfies UnlessNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [condition, thenExpression, elseExpression]]], token[2]) satisfies IfNode\n }\n\n parseCond(token: SymbolToken): CondNode {\n this.advance()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.cond, params]], token[2]) satisfies CondNode\n }\n\n parseSwitch(token: SymbolToken): SwitchNode {\n this.advance()\n const valueExpression = this.parseExpression()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.switch, valueExpression, params]], token[2]) satisfies SwitchNode\n }\n\n parseFunction(token: ReservedSymbolToken<'function'>): FunctionNode {\n this.advance()\n const symbol = this.parseSymbol()\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n assertOperatorToken(this.peek(), ';')\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.function, symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies FunctionNode\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private isAtExpressionEnd(): boolean {\n if (this.isAtEnd()) {\n return true\n }\n const token = this.peek()\n if (isOperatorToken(token)) {\n return [';', ',', ':='].includes(token[1])\n }\n if (isReservedSymbolToken(token)) {\n return ['else', 'when', 'while', 'then', 'end', 'case', 'catch'].includes(token[1])\n }\n return false\n }\n\n private parseExport(token: ReservedSymbolToken<'export'>): DefNode | DefnNode {\n this.advance()\n if (isSymbolToken(this.peek(), 'let')) {\n const letNode = this.parseLet(asSymbolToken(this.peek()))\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_def'], letNode[1][1]]], token[2]) satisfies DefNode\n }\n else if (isReservedSymbolToken(this.peek(), 'function')) {\n this.advance()\n const symbol = this.parseSymbol()\n\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_defn'], symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies DefnNode\n }\n else {\n throw new LitsError('Expected let or function', this.peek()[2])\n }\n }\n\n private stringToSymbolNode(value: string, sourceCodeInfo: SourceCodeInfo | undefined): SymbolNode {\n if (specialExpressionTypes[value as SpecialExpressionName] !== undefined && value !== 'fn' && value !== 'def' && value !== 'defn') {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[value as SpecialExpressionName]], sourceCodeInfo) satisfies SymbolNode\n }\n if (normalExpressionTypes[value as NormalExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[value as NormalExpressionName] as number], sourceCodeInfo) satisfies SymbolNode\n }\n return withSourceCodeInfo([NodeTypes.UserDefinedSymbol, value], sourceCodeInfo) satisfies SymbolNode\n }\n\n stringFromQuotedSymbol(value: string): string {\n return value.substring(1, value.length - 1)\n .replace(\n /(\\\\{2})|(\\\\')|\\\\(.)/g,\n (\n _,\n backslash: string,\n singleQuote: string,\n normalChar: string,\n ) => {\n if (backslash) {\n return '\\\\'\n }\n if (singleQuote) {\n return '\\''\n }\n return `\\\\${normalChar}`\n },\n )\n }\n\n private parseSymbol(): SymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode {\n const token = this.peek()\n this.advance()\n if (!isSymbolToken(token)) {\n throw new LitsError(`Expected symbol token, got ${token[0]}`, token[2])\n }\n if (token[1][0] === '\\'') {\n return this.stringToSymbolNode(this.stringFromQuotedSymbol(token[1]), token[2])\n }\n else {\n return this.stringToSymbolNode(token[1], token[2])\n }\n }\n\n private parseReservedSymbol(): ReservedSymbolNode | NumberNode {\n const token = asReservedSymbolToken(this.peek())\n this.advance()\n\n const symbol = token[1]\n if (isNumberReservedSymbol(symbol)) {\n return withSourceCodeInfo([NodeTypes.Number, numberReservedSymbolRecord[symbol]], token[2]) satisfies NumberNode\n }\n return withSourceCodeInfo([NodeTypes.ReservedSymbol, token[1]], token[2]) satisfies ReservedSymbolNode\n }\n\n private parseNumber(): NumberNode {\n const token = this.peek()\n this.advance()\n\n const value = token[1]\n const negative = value[0] === '-'\n const numberString = (negative ? value.substring(1) : value).replace(/_/g, '')\n return withSourceCodeInfo([NodeTypes.Number, negative ? -Number(numberString) : Number(numberString)], token[2]) satisfies NumberNode\n }\n\n private parseString(): StringNode {\n const token = this.peek()\n this.advance()\n const value = token[1].substring(1, token[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return withSourceCodeInfo([NodeTypes.String, value], token[2]) satisfies StringNode\n }\n\n private parseRegexpShorthand(): NormalExpressionNodeWithName {\n const token = this.peek()\n this.advance()\n\n const endStringPosition = token[1].lastIndexOf('\"')\n const regexpString = token[1].substring(2, endStringPosition)\n const optionsString = token[1].substring(endStringPosition + 1)\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, regexpString], token[2]) satisfies StringNode\n\n const optionsNode: StringNode = withSourceCodeInfo([NodeTypes.String, optionsString], token[2]) satisfies StringNode\n\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([\n NodeTypes.NormalExpression,\n [\n withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes.regexp as number], token[2]),\n [stringNode, optionsNode],\n ],\n ], token[2])\n\n return node\n }\n}\n","import type { Ast } from '../parser/types'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport { evaluate, evaluateNode } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport type { Ast, LitsFunction, ParseState } from '../parser/types'\nimport { tokenize } from '../tokenizer/tokenize'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { minifyTokenStream } from '../tokenizer/minifyTokenStream'\nimport { transformSymbolTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { builtin } from '../builtin'\nimport { Parser } from '../parser/Parser'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface ContextParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n}\n\nexport interface MinifyParams {\n minify?: boolean\n}\n\nexport interface FilePathParams {\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: ContextParams & FilePathParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public context(programOrAst: string | Ast, params: ContextParams & FilePathParams = {}): Context {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public getUndefinedSymbols(programOrAst: string | Ast, params: ContextParams = {}): Set<string> {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n return getUndefinedSymbols(ast, contextStack, builtin, evaluateNode)\n }\n\n public tokenize(program: string, tokenizeParams: FilePathParams & MinifyParams = {}): TokenStream {\n const tokenStream = tokenize(program, this.debug, tokenizeParams.filePath)\n return tokenizeParams.minify ? minifyTokenStream(tokenStream, { removeWhiteSpace: false }) : tokenStream\n }\n\n public parse(tokenStream: TokenStream): Ast {\n tokenStream = minifyTokenStream(tokenStream, { removeWhiteSpace: true })\n const ast: Ast = {\n body: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n }\n\n ast.body = new Parser(tokenStream, parseState).parse()\n\n return ast\n }\n\n public evaluate(ast: Ast, params: ContextParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transformSymbols(tokenStream: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return transformSymbolTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: ContextParams = {}): Any {\n const fnName = 'FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59'\n const program = this.generateApplyFunctionCall(fnName, fnParams)\n\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateApplyFunctionCall(fnName: string, fnParams: unknown[]) {\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(', ')\n return `${fnName}(${paramsString})`\n }\n\n private generateAst(program: string, params: ContextParams & FilePathParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n filePath: params.filePath,\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { LitsError } from '../errors'\nimport type { Context } from '../evaluator/interface'\nimport { Lits } from '../Lits/Lits'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getCodeMarker } from '../utils/debug/getCodeMarker'\n\ninterface TestChunk {\n name: string\n program: string\n directive: 'SKIP' | null\n}\n\nexport interface RunTestParams {\n testPath: string\n testNamePattern?: RegExp\n}\n\nexport interface TestResult {\n /**\n * Test report\n * http://testanything.org/\n */\n tap: string\n success: boolean\n}\n\nexport function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult {\n const includedFilePaths = getIncludedFilePaths(filePath)\n const testResult: TestResult = {\n tap: 'TAP version 13\\n',\n success: true,\n }\n try {\n const testChunks = getTestChunks(filePath)\n testResult.tap += `1..${testChunks.length}\\n`\n testChunks.forEach((testChunkProgram, index) => {\n const testNumber = index + 1\n if (testNamePattern && !testNamePattern.test(testChunkProgram.name)) {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip - Not matching testNamePattern ${testNamePattern}\\n`\n }\n else if (testChunkProgram.directive === 'SKIP') {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip\\n`\n }\n else {\n try {\n const lits = new Lits({ debug: true })\n const contexts = getContexts(includedFilePaths, lits)\n lits.run(testChunkProgram.program, {\n contexts,\n filePath,\n })\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name}\\n`\n }\n catch (error) {\n testResult.success = false\n testResult.tap += `not ok ${testNumber} ${testChunkProgram.name}${getErrorYaml(error)}`\n }\n }\n })\n }\n catch (error: unknown) {\n testResult.tap += `Bail out! ${getErrorMessage(error)}\\n`\n testResult.success = false\n }\n return testResult\n}\n\nfunction readLitsFile(litsPath: string): string {\n if (!litsPath.endsWith('.lits'))\n throw new Error(`Expected .lits file, got ${litsPath}`)\n\n return fs.readFileSync(litsPath, { encoding: 'utf-8' })\n}\n\nfunction getContexts(includedFilePaths: string[], lits: Lits): Context[] {\n return includedFilePaths.reduce((acc: Context[], filePath) => {\n const fileContent = readLitsFile(filePath)\n acc.push(lits.context(fileContent, { filePath, contexts: acc }))\n return acc\n }, [])\n}\n\nfunction getIncludedFilePaths(absoluteFilePath: string): string[] {\n const result: string[] = []\n getIncludesRecursively(absoluteFilePath, result)\n return result.reduce((acc: string[], entry: string) => {\n if (!acc.includes(entry))\n acc.push(entry)\n\n return acc\n }, [])\n\n function getIncludesRecursively(filePath: string, includedFilePaths: string[]): void {\n const includeFilePaths = readIncludeDirectives(filePath)\n includeFilePaths.forEach((includeFilePath) => {\n getIncludesRecursively(includeFilePath, includedFilePaths)\n includedFilePaths.push(includeFilePath)\n })\n }\n}\n\nfunction readIncludeDirectives(filePath: string): string[] {\n const fileContent = readLitsFile(filePath)\n const dirname = path.dirname(filePath)\n let okToInclude = true\n return fileContent.split('\\n').reduce((acc: string[], line) => {\n const includeMatch = line.match(/^\\s*\\/{2}\\s*@include\\s*(\\S+)\\s*$/)\n if (includeMatch) {\n if (!okToInclude)\n throw new Error(`@include must be in the beginning of file: ${filePath}:${line + 1}`)\n\n const relativeFilePath = includeMatch[1] as string\n acc.push(path.resolve(dirname, relativeFilePath))\n }\n if (!line.match(/^\\s*\\/.*$/))\n okToInclude = false\n\n return acc\n }, [])\n}\n\n// Splitting test file based on @test annotations\nfunction getTestChunks(testPath: string): TestChunk[] {\n const testProgram = readLitsFile(testPath)\n let currentTest: TestChunk | undefined\n let setupCode = ''\n return testProgram.split('\\n').reduce((result: TestChunk[], line, index) => {\n const currentLineNbr = index + 1\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const testNameAnnotationMatch = line.match(/^\\s*\\/{2}\\s*@(?:(skip)-)?test\\s*(.*)$/)\n if (testNameAnnotationMatch) {\n const directive = (testNameAnnotationMatch[1] ?? '').toUpperCase()\n const testName = testNameAnnotationMatch[2]\n if (!testName)\n throw new Error(`Missing test name on line ${currentLineNbr}`)\n\n if (result.find(chunk => chunk.name === testName))\n throw new Error(`Duplicate test name ${testName}`)\n\n currentTest = {\n directive: (directive || null) as TestChunk['directive'],\n name: testName,\n // Adding new-lines to make lits debug information report correct rows\n program:\n setupCode + [...Array(currentLineNbr + 2 - setupCode.split('\\n').length).keys()].map(() => '').join('\\n'),\n }\n result.push(currentTest)\n return result\n }\n if (!currentTest)\n setupCode += `${line}\\n`\n else\n currentTest.program += `${line}\\n`\n\n return result\n }, [])\n}\n\nexport function getErrorYaml(error: unknown): string {\n const message = getErrorMessage(error)\n /* v8 ignore next 7 */\n if (!isAbstractLitsError(error)) {\n return `\n ---\n message: ${JSON.stringify(message)}\n ...\n`\n }\n\n const sourceCodeInfo = error.sourceCodeInfo\n /* v8 ignore next 8 */\n if (!sourceCodeInfo || typeof sourceCodeInfo === 'string') {\n return `\n ---\n message: ${JSON.stringify(message)}\n error: ${JSON.stringify(error.name)}\n ...\n`\n }\n\n const formattedMessage = message.includes('\\n')\n ? `|\\n ${message.split(/\\r?\\n/).join('\\n ')}`\n : JSON.stringify(message)\n return `\n ---\n error: ${JSON.stringify(error.name)}\n message: ${formattedMessage}\n location: ${JSON.stringify(getLocation(sourceCodeInfo))}\n code:\n - \"${sourceCodeInfo.code}\"\n - \"${getCodeMarker(sourceCodeInfo)}\"\n ...\n`\n}\n\nfunction getLocation(sourceCodeInfo: SourceCodeInfo): string {\n const terms: string[] = []\n if (sourceCodeInfo.filePath)\n terms.push(sourceCodeInfo.filePath)\n\n if (sourceCodeInfo.position) {\n terms.push(`${sourceCodeInfo.position.line}`)\n terms.push(`${sourceCodeInfo.position.column}`)\n }\n\n return terms.join(':')\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (!isAbstractLitsError(error)) {\n // error should always be an Error (other cases is just for kicks)\n /* v8 ignore next 1 */\n return typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error'\n }\n return error.shortMessage\n}\n\nfunction isAbstractLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n"],"names":["isLitsFunction","evalueateBindingTargetValues"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"testFramework.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/builtin/specialExpressionTypes.ts","../src/constants/constants.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/getUndefinedSymbols/index.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/typeGuards/annotatedArrays.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/categories/namespaces/grid/fromArray.ts","../src/builtin/normalExpressions/categories/namespaces/grid/transpose.ts","../src/builtin/normalExpressions/categories/namespaces/grid/index.ts","../src/builtin/normalExpressions/categories/namespaces/vector/bincount.ts","../src/builtin/normalExpressions/categories/namespaces/vector/histogram.ts","../src/builtin/normalExpressions/categories/namespaces/vector/mode.ts","../src/builtin/normalExpressions/categories/namespaces/vector/outliers.ts","../src/builtin/normalExpressions/categories/namespaces/vector/percentile.ts","../src/builtin/normalExpressions/categories/namespaces/vector/quartiles.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/max.ts","../src/builtin/normalExpressions/categories/namespaces/vector/calcMean.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/mean.ts","../src/builtin/normalExpressions/categories/namespaces/vector/calcMedian.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/median.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/min.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/prod.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/sum.ts","../src/builtin/normalExpressions/categories/namespaces/vector/calcVariance.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/variance.ts","../src/builtin/normalExpressions/categories/namespaces/vector/calcStdDev.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/standardDeviation.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/iqr.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/span.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/skewness.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/kurtosis.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/rms.ts","../src/builtin/normalExpressions/categories/namespaces/vector/calcMad.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/mad.ts","../src/builtin/normalExpressions/categories/namespaces/vector/calcMedad.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/medad.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/giniCoefficient.ts","../src/builtin/normalExpressions/categories/namespaces/vector/entropy.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/entropy.ts","../src/builtin/normalExpressions/categories/namespaces/vector/reductionFunctions/index.ts","../src/builtin/normalExpressions/categories/namespaces/vector/index.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/gaussJordanElimination.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/solve.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/collinear.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/isZeroVector.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/pearsonCorr.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/calcFractionalRanks.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/kendallTau.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/covariance.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/helpers/corrleation.ts","../src/builtin/normalExpressions/categories/namespaces/linearAlgebra/index.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/determinant.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/minor.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/adjugate.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/band.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/cofactor.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/inverse.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isBanded.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isSquare.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isDiagonal.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isIdentity.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/matrixMultiply.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isOrthogonal.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isSymetric.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/isTriangular.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/norm1.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/helpers/trace.ts","../src/builtin/normalExpressions/categories/namespaces/matrix/index.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/binomialCefficient.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/combinations.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/derangements.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/divisors.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/factorial.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/factorial.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/partition.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/partitions.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/permutations.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/powerSet.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/primeFactors.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/abundant.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/arithmetic.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/bell.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/bernoulli.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/catalan.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/collatz.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/prime.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/composite.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/deficient.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/fibonacci.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/geometric.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/golomb.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/happy.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/juggler.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lookAndSay.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lucas.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/lucky.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/mersenne.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/padovan.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/pell.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfect.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectCube.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectPower.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/perfectSquare.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/poligonal.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/recaman.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/sylvester.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/thueMorse.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/tribonacci.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/sequences/index.ts","../src/builtin/normalExpressions/categories/namespaces/numberTheory/index.ts","../src/builtin/normalExpressions/categories/namespaces/random/index.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/builtin/specialExpressions/defined.ts","../src/parser/types.ts","../src/builtin/bindingNode.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/do.ts","../src/tokenizer/reservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/array.ts","../src/builtin/specialExpressions/object.ts","../src/builtin/index.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/tokenizer/operators.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/tokenize.ts","../src/tokenizer/token.ts","../src/tokenizer/minifyTokenStream.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/parser/Parser.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../src/testFramework/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/token'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n if (!sourceCodeInfo) {\n return message\n }\n const location = `${sourceCodeInfo.position.line}:${sourceCodeInfo.position.column}`\n const filePathLine = sourceCodeInfo.filePath\n ? `\\n${sourceCodeInfo.filePath}:${location}`\n : `\\nLocation ${location}`\n const codeLine = `\\n${sourceCodeInfo.code}`\n const codeMarker = `\\n${getCodeMarker(sourceCodeInfo)}`\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(err: unknown, sourceCodeInfo: SourceCodeInfo | undefined) {\n const message = err instanceof Error\n ? err.message\n : `${err}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export const specialExpressionTypes = {\n '??': 0,\n '&&': 1,\n '||': 2,\n 'array': 3,\n 'cond': 4,\n '0_def': 5,\n 'defined?': 6,\n '0_defn': 7,\n 'do': 8,\n 'doseq': 9,\n '0_fn': 10,\n 'for': 11,\n 'function': 12,\n 'if': 13,\n 'let': 14,\n 'loop': 15,\n 'object': 16,\n 'recur': 17,\n 'switch': 18,\n 'throw': 19,\n 'try': 20,\n 'unless': 21,\n} as const\n\nexport type SpecialExpressionTypes = typeof specialExpressionTypes\n","export const NodeTypes = {\n Number: 1,\n String: 2,\n NormalExpression: 3,\n SpecialExpression: 4,\n UserDefinedSymbol: 5,\n NormalBuiltinSymbol: 6,\n SpecialBuiltinSymbol: 7,\n ReservedSymbol: 8,\n Binding: 9,\n Spread: 10,\n} as const\n\nconst NodeTypesSet = new Set(Object.values(NodeTypes))\n\nexport type NodeType = typeof NodeTypes[keyof typeof NodeTypes]\n\nexport function getNodeTypeName(type: NodeType): keyof typeof NodeTypes {\n return Object.keys(NodeTypes).find(key => NodeTypes[key as keyof typeof NodeTypes] === type) as keyof typeof NodeTypes\n}\n\n// TODO, is this needed?\nexport function isNodeType(type: unknown): type is NodeType {\n return typeof type === 'number' && NodeTypesSet.has(type as NodeType)\n}\n\nconst functionTypes = [\n 'UserDefined',\n 'Partial',\n 'Comp',\n 'Constantly',\n 'Juxt',\n 'Complement',\n 'EveryPred',\n 'SomePred',\n 'Fnull',\n 'Builtin',\n 'SpecialBuiltin',\n 'NativeJsFunction',\n] as const\n\nconst functionTypeSet = new Set(functionTypes)\n\nexport type FunctionType = typeof functionTypes[number]\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'string' && functionTypeSet.has(type as FunctionType)\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { getNodeTypeName, isFunctionType, isNodeType } from '../../constants/constants'\nimport type { LitsFunction, Node } from '../../parser/types'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (func === null || typeof func !== 'object')\n return false\n\n return FUNCTION_SYMBOL in func && 'functionType' in func && isFunctionType(func.functionType)\n}\n\nfunction isNode(value: unknown): value is Node {\n if (!Array.isArray(value) || value.length < 2)\n return false\n return isNodeType(value[0])\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isNode(value))\n return `${getNodeTypeName(value[0])}-node`\n\n if (value === null)\n return 'null'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo: SourceCodeInfo | undefined): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { NodeTypes } from '../constants/constants'\nimport type {\n ExpressionNode,\n Node,\n NormalBuiltinSymbolNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SpecialBuiltinSymbolNode,\n SpreadNode,\n SymbolNode,\n UserDefinedSymbolNode,\n} from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isSymbolNode(node: Node): node is SymbolNode {\n const nodeType = node[0]\n return NodeTypes.UserDefinedSymbol === nodeType\n || NodeTypes.NormalBuiltinSymbol === nodeType\n || NodeTypes.SpecialBuiltinSymbol === nodeType\n}\nexport function asSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is SymbolNode {\n if (!isSymbolNode(node))\n throw getAssertionError('SymbolNode', node, sourceCodeInfo)\n}\n\nexport function isUserDefinedSymbolNode(node: Node): node is UserDefinedSymbolNode {\n return NodeTypes.UserDefinedSymbol === node[0]\n}\nexport function asUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): UserDefinedSymbolNode {\n assertUserDefinedSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is UserDefinedSymbolNode {\n if (!isUserDefinedSymbolNode(node))\n throw getAssertionError('UserDefinedSymbolNode', node, sourceCodeInfo)\n}\n\nexport function isNormalBuiltinSymbolNode(node: Node): node is NormalBuiltinSymbolNode {\n return NodeTypes.NormalBuiltinSymbol === node[0]\n}\n\nexport function isSpecialBuiltinSymbolNode(node: Node): node is SpecialBuiltinSymbolNode {\n return NodeTypes.SpecialBuiltinSymbol === node[0]\n}\n\nexport function isNormalExpressionNode(node: Node): node is NormalExpressionNode {\n return node[0] === NodeTypes.NormalExpression\n}\nexport function asNormalExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNode(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNode {\n if (!isNormalExpressionNode(node))\n throw getAssertionError('NormalExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(node: Node): node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNode(node)) {\n return false\n }\n return isSymbolNode(node[1][0])\n}\nexport function asNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(node))\n throw getAssertionError('NormalExpressionNodeWithName', node, sourceCodeInfo)\n}\n\nexport function isExpressionNode(node: Node): node is ExpressionNode {\n return isNormalExpressionNode(node)\n || node[0] === NodeTypes.SpecialExpression\n || node[0] === NodeTypes.Number\n || node[0] === NodeTypes.String\n}\nexport function asExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is ExpressionNode {\n if (!isExpressionNode(node))\n throw getAssertionError('ExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isSpreadNode(node: Node): node is SpreadNode {\n return node[0] === NodeTypes.Spread\n}\n","import type { Builtin } from '../builtin/interface'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { EvaluateNode } from '../evaluator/interface'\nimport type { Ast, Node, NormalExpressionNode, SpecialExpressionNode, SpreadNode, UserDefinedSymbolNode } from '../parser/types'\nimport { isNormalExpressionNodeWithName, isUserDefinedSymbolNode } from '../typeGuards/astNode'\n\nexport type UndefinedSymbols = Set<string>\n\nexport const getUndefinedSymbols: GetUndefinedSymbols = (ast, contextStack, builtin, evaluateNode) => {\n const nodes: Node[] = Array.isArray(ast)\n ? ast\n : [[NodeTypes.SpecialExpression, [specialExpressionTypes.do, ast.body]] satisfies DoNode]\n\n const unresolvedSymbols = new Set<string>()\n\n for (const subNode of nodes) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)\n ?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n}\n\nexport type GetUndefinedSymbols = (ast: Ast | Node[], contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode) => UndefinedSymbols\n\nfunction findUnresolvedSymbolsInNode(node: Node, contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode): UndefinedSymbols | null {\n const nodeType = node[0]\n switch (nodeType) {\n case NodeTypes.UserDefinedSymbol: {\n const symbolNode = node as UserDefinedSymbolNode\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n return new Set([symbolNode[1]])\n\n return null\n }\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.String:\n case NodeTypes.Number:\n case NodeTypes.ReservedSymbol:\n case NodeTypes.Binding:\n return null\n case NodeTypes.NormalExpression: {\n const normalExpressionNode = node as NormalExpressionNode\n const unresolvedSymbols = new Set<string>()\n if (isNormalExpressionNodeWithName(normalExpressionNode)) {\n const [, [symbolNode]] = normalExpressionNode\n if (isUserDefinedSymbolNode(symbolNode)) {\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n unresolvedSymbols.add(symbolNode[1])\n }\n }\n else {\n const [, [expressionNode]] = normalExpressionNode\n findUnresolvedSymbolsInNode(expressionNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n for (const subNode of normalExpressionNode[1][1]) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n }\n case NodeTypes.SpecialExpression: {\n const specialExpressionNode = node as SpecialExpressionNode\n const specialExpressionType = specialExpressionNode[1][0]\n const specialExpression = builtin.specialExpressions[specialExpressionType]\n\n const castedGetUndefinedSymbols = specialExpression.getUndefinedSymbols as Function\n\n return castedGetUndefinedSymbols(specialExpressionNode, contextStack, {\n getUndefinedSymbols,\n builtin,\n evaluateNode,\n }) as UndefinedSymbols\n }\n case NodeTypes.Spread:\n return findUnresolvedSymbolsInNode((node as SpreadNode)[1], contextStack, builtin, evaluateNode)\n\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unhandled node type: ${nodeType satisfies never}`, node[2])\n }\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n paramCount: 2,\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n paramCount: 2,\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n paramCount: 2,\n },\n 'bit-not': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n paramCount: 1,\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-and-not': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'xor': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n paramCount: 2,\n },\n 'bit-set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n paramCount: 2,\n },\n 'bit-clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n paramCount: 2,\n },\n 'bit-test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n paramCount: 2,\n },\n}\n","import type { Count } from '../builtin/interface'\nimport { getNodeTypeName } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { NormalExpressionNodeWithName } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertNumberOfParams(count: Count, node: NormalExpressionNodeWithName): void {\n const length = node[1][1].length\n if (typeof count === 'number') {\n if (length !== count) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n else {\n const { min, max, even, odd } = count\n if (even) {\n const name = getNodeTypeName(node[0])\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an even number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (odd) {\n if (length % 2 !== 1) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an odd number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (typeof min === 'number' && length < min) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n\n if (typeof max === 'number' && length > max) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nexport function canBeOperator(count: Count): boolean {\n if (typeof count === 'number') {\n return count === 2\n }\n\n if (count.odd) {\n return false\n }\n\n if (typeof count.max === 'number' && count.max < 2) {\n return false\n }\n\n if (typeof count.min === 'number' && count.min > 2) {\n return false\n }\n\n return true\n}\n","import type { LitsFunction, NativeJsFunction, NormalBuiltinFunction, UserDefinedFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.functionType === 'UserDefined'\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.functionType === 'NativeJsFunction'\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is NormalBuiltinFunction {\n return isUnknownRecord(value) && value.functionType === 'Builtin'\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { FunctionLike, RegularExpression } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isFunctionLike(value: unknown): value is FunctionLike {\n if (typeof value === 'number')\n return true\n if (isColl(value))\n return true\n if (isLitsFunction(value))\n return true\n\n return false\n}\nexport function asFunctionLike(value: unknown, sourceCodeInfo?: SourceCodeInfo): FunctionLike {\n assertFunctionLike(value, sourceCodeInfo)\n return value\n}\nexport function assertFunctionLike(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is FunctionLike {\n if (!isFunctionLike(value))\n throw getAssertionError('FunctionLike', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Coll, Obj } from '../interface'\nimport type { NativeJsFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString, assertStringOrNumber } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { LitsError } from '../errors'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\nexport function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a < b ? -1 : a > b ? 1 : 0\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.sign((a) - (b))\n }\n throw new LitsError(`Cannot compare values of different types: ${typeof a} and ${typeof b}`, sourceCodeInfo)\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n nativeFn: {\n fn,\n },\n name,\n functionType: 'NativeJsFunction',\n }\n}\n\nexport function joinSets<T>(...results: Set<T>[]): Set<T> {\n const result = new Set<T>()\n for (const symbols of results)\n symbols.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addToSet<T>(target: Set<T>, source: Set<T>): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nconst EPSILON = 1e-10\n\nexport function approxEqual(a: number, b: number, epsilon: number = EPSILON): boolean {\n if (a === b) {\n return true\n }\n\n const diff = Math.abs(a - b)\n\n if (a === 0 || b === 0 || diff < epsilon) {\n // Use absolute error for values near zero\n return diff < epsilon\n }\n const absA = Math.abs(a)\n const absB = Math.abs(b)\n\n // Use relative error for larger values\n return diff / (absA + absB) < epsilon\n}\n\nexport function approxZero(value: number, epsilon: number = EPSILON): boolean {\n return Math.abs(value) < epsilon\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { cloneColl, collHasKey, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport { asAny, asColl, asFunctionLike, assertAny, assertColl, assertFunctionLike, assertObj, assertSeq, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString, isStringOrNumber } from '../../../typeGuards/string'\nimport type { FunctionLike } from '../../../parser/types'\nimport { LitsError } from '../../../errors'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction mapObjects({\n colls,\n contextStack,\n executeFunction,\n fn,\n sourceCodeInfo,\n}: {\n colls: unknown[]\n fn: FunctionLike\n sourceCodeInfo: SourceCodeInfo | undefined\n contextStack: ContextStack\n executeFunction: ExecuteFunction\n}): Obj {\n assertObj(colls[0], sourceCodeInfo)\n const keys = Object.keys(colls[0])\n const params: Record<string, unknown[]> = {}\n colls.forEach((obj) => {\n assertObj(obj, sourceCodeInfo)\n const objKeys = Object.keys(obj)\n if (objKeys.length !== keys.length) {\n throw new LitsError(`All objects must have the same keys. Expected: ${keys.join(', ')}. Found: ${objKeys.join(', ')}`, sourceCodeInfo)\n }\n if (!objKeys.every(key => keys.includes(key))) {\n throw new LitsError(`All objects must have the same keys. Expected: ${keys.join(', ')}. Found: ${objKeys.join(', ')}`, sourceCodeInfo)\n }\n Object.entries(obj).forEach(([key, value]) => {\n if (!params[key])\n params[key] = []\n params[key].push(value)\n })\n })\n\n return keys.reduce((result: Obj, key) => {\n result[key] = executeFunction(fn, params[key]!, contextStack, sourceCodeInfo)\n return result\n }, {})\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: FunctionLike,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'filter': {\n evaluate: ([coll, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n if (Array.isArray(coll)) {\n const result = coll.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return result\n }\n if (isString(coll)) {\n return coll\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n }\n return Object.entries(coll)\n .filter(([, value]) => executeFunction(fn, [value], contextStack, sourceCodeInfo))\n .reduce((result: Obj, [key, value]) => {\n result[key] = value\n return result\n }, {})\n },\n paramCount: 2,\n },\n 'map': {\n evaluate: (params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fn = asFunctionLike(params.at(-1), sourceCodeInfo)\n\n if (isObj(params[0])) {\n return mapObjects({\n colls: params.slice(0, -1),\n fn,\n sourceCodeInfo,\n contextStack,\n executeFunction,\n })\n }\n\n const seqs = params.slice(0, -1) as Seq[]\n assertSeq(seqs[0], sourceCodeInfo)\n\n const isStr = typeof seqs[0] === 'string'\n let len = seqs[0].length\n seqs.slice(1).forEach((seq) => {\n if (isStr) {\n assertString(seq, sourceCodeInfo)\n }\n else {\n assertArray(seq, sourceCodeInfo)\n }\n len = Math.min(len, seq.length)\n })\n\n const paramArray: unknown[][] = []\n for (let i = 0; i < len; i++) {\n paramArray.push(seqs.map(seq => seq[i]))\n }\n\n const mapped = paramArray.map(p => executeFunction(fn, p, contextStack, sourceCodeInfo))\n\n if (!isStr) {\n return mapped\n }\n mapped.forEach(char => assertString(char, sourceCodeInfo))\n return mapped.join('')\n },\n paramCount: { min: 2 },\n },\n 'reduce': {\n evaluate: ([coll, fn, initial], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n assertAny(initial, sourceCodeInfo)\n\n if (typeof coll === 'string') {\n assertString(initial, sourceCodeInfo)\n if (coll.length === 0)\n return initial\n\n return coll.split('').reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n else if (Array.isArray(coll)) {\n if (coll.length === 0)\n return initial\n\n return coll.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n else {\n if (Object.keys(coll).length === 0)\n return initial\n\n return Object.entries(coll).reduce((result: Any, [, elem]) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n },\n paramCount: 3,\n },\n 'reduce-right': {\n evaluate: ([coll, fn, initial], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n assertAny(initial, sourceCodeInfo)\n\n if (typeof coll === 'string') {\n if (coll.length === 0)\n return initial\n\n return coll.split('').reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n else if (Array.isArray(coll)) {\n if (coll.length === 0)\n return initial\n\n return coll.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n else {\n if (Object.keys(coll).length === 0)\n return initial\n\n return Object.entries(coll).reduceRight((result: Any, [, elem]) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, initial)\n }\n },\n paramCount: 3,\n },\n 'reductions': {\n evaluate: ([coll, fn, initial], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n assertAny(initial, sourceCodeInfo)\n\n assertAny(initial, sourceCodeInfo)\n if (typeof coll === 'string') {\n assertString(initial, sourceCodeInfo)\n if (coll.length === 0)\n return [initial]\n\n const resultArray: Any[] = [initial]\n coll.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, initial)\n return resultArray\n }\n else if (Array.isArray(coll)) {\n if (coll.length === 0)\n return [initial]\n\n const resultArray: Any[] = [initial]\n coll.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, initial)\n return resultArray\n }\n else {\n if (Object.keys(coll).length === 0)\n return [initial]\n\n const resultArray: Any[] = [initial]\n Object.entries(coll).reduce((result: Any, [, elem]) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, initial)\n return resultArray\n }\n },\n paramCount: 3,\n },\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // null behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isString(coll)) {\n assertString(key, sourceCodeInfo)\n return coll.includes(key)\n }\n if (isSeq(coll)) {\n assertAny(key, sourceCodeInfo)\n return !!coll.find(elem => deepEqual(asAny(elem), key, sourceCodeInfo))\n }\n assertString(key, sourceCodeInfo)\n return key in coll\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n '++': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (!isNumber(params[0])) {\n assertColl(params[0], sourceCodeInfo)\n }\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isStringOrNumber(params[0])) {\n return params.reduce((result: string, s) => {\n assertStringOrNumber(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n aliases: ['concat'],\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertFunctionLike } from '../../../typeGuards/lits'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertFunctionLike, assertSeq } from '../../../typeGuards/lits'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { collHasKey, compare, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n if (i >= 0 && i < seq.length) {\n const result = toAny(seq[i])\n return result\n }\n else {\n return defaultValue\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n const result = toAny(array[0])\n\n return result\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n const result = toAny(array.at(-1))\n\n return result\n },\n paramCount: 1,\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertFunctionLike(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last-index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findLastIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n return [...seq].reverse()\n }\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2) {\n if (Array.isArray(seq)) {\n return seq.slice(from)\n }\n return seq.slice(from)\n }\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n if (Array.isArray(seq)) {\n return seq.slice(from, to)\n }\n return seq.slice(from, to)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'splice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, start, deleteCount, ...rest] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { integer: true })\n assertNumber(deleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const from = start < 0 ? seq.length + start : start\n\n if (Array.isArray(seq)) {\n return [...seq.slice(0, from), ...rest, ...seq.slice(from + deleteCount)]\n }\n\n rest.forEach(elem => assertString(elem, sourceCodeInfo))\n return `${seq.substring(0, from)}${rest.join('')}${seq.substring(from + deleteCount)}`\n },\n paramCount: { min: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertFunctionLike(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertFunctionLike(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertFunctionLike(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertFunctionLike(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertFunctionLike(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertFunctionLike(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n\n if (Array.isArray(input)) {\n const result: Any[] = []\n for (const item of input) {\n assertAny(item, sourceCodeInfo)\n if (!result.some(existingItem => deepEqual(existingItem, item, sourceCodeInfo))) {\n result.push(item)\n }\n }\n return result\n }\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove-at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo, { integer: true })\n assertSeq(input, sourceCodeInfo)\n\n const at = index < 0 ? input.length + index : index\n if (at < 0 || at >= input.length)\n return input\n\n if (Array.isArray(input)) {\n return input.filter((_, i) => i !== at)\n }\n return `${input.substring(0, at)}${input.substring(at + 1)}`\n },\n paramCount: 2,\n },\n 'split-at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { integer: true })\n assertSeq(seq, sourceCodeInfo)\n\n const at = pos < 0 ? seq.length + pos : pos\n return [seq.slice(0, at), seq.slice(at)]\n },\n paramCount: 2,\n },\n\n 'split-with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertFunctionLike(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends-with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return deepEqual(asAny(str.at(-1), sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'starts-with?': {\n evaluate: ([seq, search], sourceCodeInfo): boolean => {\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n assertString(search, sourceCodeInfo)\n return seq.startsWith(search)\n }\n\n return deepEqual(asAny(seq[0], sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n return seq.split('')\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isNumber } from './number'\n\nconst annotatedArrays = new WeakSet<unknown[]>()\nconst vectors = new WeakSet<unknown[]>()\nconst matrices = new WeakSet<unknown[]>()\nconst grids = new WeakSet<unknown[]>()\n\nexport function annotate<T>(value: T): T {\n if (!Array.isArray(value)) {\n return value\n }\n if (annotatedArrays.has(value)) {\n return value\n }\n isVector(value)\n if (!isMatrix(value)) {\n isGrid(value)\n }\n\n return value\n}\nexport function isVector(vector: unknown): vector is number[] {\n if (!Array.isArray(vector)) {\n return false\n }\n\n if (vectors.has(vector)) {\n return true\n }\n\n if (vector.every(elem => isNumber(elem, { finite: true }))) {\n annotatedArrays.add(vector)\n vectors.add(vector)\n return true\n }\n return false\n}\n\nexport function assertVector(vector: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts vector is number[] {\n if (!isVector(vector)) {\n throw new LitsError(`Expected a vector, but got ${vector}`, sourceCodeInfo)\n }\n}\n\nexport function assertNonEmptyVector(vector: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts vector is number[] {\n assertVector(vector, sourceCodeInfo)\n if (vector.length === 0) {\n throw new LitsError(`Expected a non empty vector, but got ${vector}`, sourceCodeInfo)\n }\n}\n\nexport function isGrid(grid: unknown): grid is unknown[][] {\n if (!Array.isArray(grid)) {\n return false\n }\n if (grids.has(grid)) {\n return true\n }\n if (grid.length === 0) {\n return false\n }\n if (!Array.isArray(grid[0])) {\n return false\n }\n const nbrOfCols = grid[0].length\n for (const row of grid.slice(1)) {\n if (!Array.isArray(row)) {\n return false\n }\n if (row.length !== nbrOfCols) {\n return false\n }\n }\n annotatedArrays.add(grid)\n grids.add(grid)\n return true\n}\n\nexport function assertGrid(grid: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts grid is Any[][] {\n if (!isGrid(grid)) {\n throw new LitsError(`Expected a grid, but got ${grid}`, sourceCodeInfo)\n }\n}\n\nexport function isMatrix(matrix: unknown): matrix is number[][] {\n if (!Array.isArray(matrix)) {\n return false\n }\n if (matrices.has(matrix)) {\n return true\n }\n if (matrix.length === 0) {\n return false\n }\n if (!Array.isArray(matrix[0])) {\n return false\n }\n if (matrix[0].length === 0) {\n return false\n }\n const nbrOfCols = matrix[0].length\n for (const row of matrix.slice(1)) {\n if (!Array.isArray(row)) {\n return false\n }\n if (row.length !== nbrOfCols) {\n return false\n }\n if (row.some(cell => !isNumber(cell, { finite: true }))) {\n return false\n }\n }\n annotatedArrays.add(matrix)\n grids.add(matrix)\n matrices.add(matrix)\n return true\n}\n\nexport function assertMatrix(matrix: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts matrix is number[][] {\n if (!isMatrix(matrix)) {\n throw new LitsError(`Expected a matrix, but got ${matrix}`, sourceCodeInfo)\n }\n}\n\nexport function assertSquareMatrix(matrix: unknown, sourceCodeInfo: SourceCodeInfo | undefined): asserts matrix is number[][] {\n if (!isMatrix(matrix)) {\n throw new LitsError(`Expected a matrix, but got ${matrix}`, sourceCodeInfo)\n }\n if (matrix.length !== matrix[0]!.length) {\n throw new LitsError(`Expected square matrix, but got ${matrix.length} and ${matrix[0]!.length}`, sourceCodeInfo)\n }\n}\n\nexport function isSquareMatrix(matrix: unknown): matrix is number[][] {\n if (!isMatrix(matrix)) {\n return false\n }\n if (matrix.length !== matrix[0]!.length) {\n return false\n }\n return true\n}\n","import { LitsError } from '../../../errors'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { isMatrix, isVector } from '../../../typeGuards/annotatedArrays'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { approxEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\ntype NumberVectorOrMatrix = number | number[] | number[][]\n\nfunction getNumberVectorOrMatrixOperation(\n params: unknown[],\n sourceCodeInfo: SourceCodeInfo | undefined,\n):\n | ['number', number[]]\n | ['vector', number[][]]\n | ['matrix', number[][][]] {\n let hasVector: boolean = false\n let hasMatrix: boolean = false\n for (const param of params) {\n if (isVector(param)) {\n hasVector = true\n }\n else if (isMatrix(param)) {\n hasMatrix = true\n }\n else if (!isNumber(param)) {\n throw new LitsError(`Invalid parameter type: ${typeof param}`, sourceCodeInfo)\n }\n }\n if (hasMatrix) {\n if (hasVector) {\n throw new LitsError('Cannot mix vector and matrix types', sourceCodeInfo)\n }\n let rows: number | null = null\n let cold: number | null = null\n for (const param of params) {\n if (isMatrix(param)) {\n if (rows === null) {\n rows = param.length\n cold = param[0]!.length\n }\n else {\n if (param.length !== rows || param[0]!.length !== cold) {\n throw new LitsError('Matrix dimensions do not match', sourceCodeInfo)\n }\n }\n }\n }\n const matrices = params.map((param) => {\n if (isMatrix(param)) {\n return param\n }\n return Array.from({ length: rows as number }, () => Array.from({ length: cold as number }, () => param as number))\n })\n return ['matrix', matrices]\n }\n if (hasVector) {\n let length: number | null = null\n for (const param of params) {\n if (isVector(param)) {\n if (length === null) {\n length = param.length\n }\n else {\n if (param.length !== length) {\n throw new LitsError('Vector lengths do not match', sourceCodeInfo)\n }\n }\n }\n }\n const vectors = params.map((param) => {\n if (isVector(param)) {\n return param\n }\n return Array.from({ length: length as number }, () => param as number)\n })\n\n return ['vector', vectors]\n }\n return ['number', params as number[]]\n}\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return operands[0]! + 1\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n return firstVector.map(val => val + 1)\n }\n else {\n const firstMatrix = operands[0]!\n return firstMatrix.map(row => row.map(val => val + 1))\n }\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return operands[0]! - 1\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n return firstVector.map(val => val - 1)\n }\n else {\n const firstMatrix = operands[0]!\n return firstMatrix.map(row => row.map(val => val - 1))\n }\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n if (params.length === 0) {\n return 0\n }\n\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n return operands.reduce((result, param) => result + (param), 0)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const restVectors = operands.slice(1)\n return restVectors.reduce((acc, vector) => acc.map((val, i) => val + vector[i]!), firstVector)\n }\n else {\n const firstMatrix = operands[0]!\n const restMatrices = operands.slice(1)\n return restMatrices.reduce((acc, matrix) => acc.map((row, i) => row.map((val, j) => val + matrix[i]![j]!)), firstMatrix)\n }\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n if (params.length === 0) {\n return 1\n }\n\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n return operands.reduce((result, param) => result * (param), 1)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const restVectors = operands.slice(1)\n return restVectors.reduce((acc, vector) => acc.map((val, i) => val * vector[i]!), firstVector)\n }\n else {\n const firstMatrix = operands[0]!\n const restMatrices = operands.slice(1)\n return restMatrices.reduce((acc, matrix) => acc.map((row, i) => row.map((val, j) => val * matrix[i]![j]!)), firstMatrix)\n }\n },\n aliases: ['·'],\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n if (params.length === 0) {\n return 1\n }\n\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n const [first, ...rest] = operands\n if (rest.length === 0) {\n return 1 / first!\n }\n return rest.reduce((result, param) => {\n return result / param\n }, first!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const restVectors = operands.slice(1)\n return restVectors.reduce((acc, vector) => acc.map((val, i) => val / vector[i]!), firstVector)\n }\n else {\n const firstMatrix = operands[0]!\n const restMatrices = operands.slice(1)\n return restMatrices.reduce((acc, matrix) => acc.map((row, i) => row.map((val, j) => val / matrix[i]![j]!)), firstMatrix)\n }\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n if (params.length === 0) {\n return 0\n }\n\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n const [first, ...rest] = operands\n if (rest.length === 0)\n return -first!\n\n return rest.reduce((result, param) => {\n return result - param\n }, first!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const restVectors = operands.slice(1)\n return restVectors.reduce((acc, vector) => acc.map((val, i) => val - vector[i]!), firstVector)\n }\n else {\n const firstMatrix = operands[0]!\n const restMatrices = operands.slice(1)\n return restMatrices.reduce((acc, matrix) => acc.map((row, i) => row.map((val, j) => val - matrix[i]![j]!)), firstMatrix)\n }\n },\n paramCount: {},\n },\n '~': {\n evaluate: (params, sourceCodeInfo): boolean => {\n const [operation, operands] = getNumberVectorOrMatrixOperation([params[0], params[1]], sourceCodeInfo)\n const eplsilon = params[2] ?? 1e-10\n assertNumber(eplsilon, sourceCodeInfo, { positive: true, finite: true })\n if (operation === 'number') {\n const [first, second] = operands\n return approxEqual(first!, second!, eplsilon)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const secondVector = operands[1]!\n return firstVector.every((val, i) => approxEqual(val, secondVector[i]!, eplsilon))\n }\n else {\n const firstMatrix = operands[0]!\n const secondMatrix = operands[1]!\n return firstMatrix.every((row, i) => row.every((val, j) => approxEqual(val, secondMatrix[i]![j]!, eplsilon)))\n }\n },\n paramCount: { min: 2, max: 3 },\n aliases: ['≈'],\n },\n 'quot': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n return Math.trunc(operands[0]! / operands[1]!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const secondVector = operands[1]!\n return firstVector.map((val, i) => Math.trunc(val / secondVector[i]!))\n }\n else {\n const firstMatrix = operands[0]!\n const secondMatrix = operands[1]!\n return firstMatrix.map((row, i) => row.map((val, j) => Math.trunc(val / secondMatrix[i]![j]!)))\n }\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n const quotient = Math.floor(operands[0]! / operands[1]!)\n return operands[0]! - operands[1]! * quotient\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const secondVector = operands[1]!\n return firstVector.map((dividend, i) => {\n const divisor = secondVector[i]!\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n })\n }\n else {\n const firstMatrix = operands[0]!\n const secondMatrix = operands[1]!\n return firstMatrix.map((row, i) => row.map((val, j) => {\n const quotient = Math.floor(val / secondMatrix[i]![j]!)\n return val - secondMatrix[i]![j]! * quotient\n }))\n }\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n\n if (operation === 'number') {\n return operands[0]! % operands[1]!\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const secondVector = operands[1]!\n return firstVector.map((dividend, i) => dividend % secondVector[i]!)\n }\n else {\n const firstMatrix = operands[0]!\n const secondMatrix = operands[1]!\n return firstMatrix.map((row, i) => row.map((dividend, j) => dividend % secondMatrix[i]![j]!))\n }\n },\n paramCount: 2,\n aliases: ['rem'],\n },\n\n 'sqrt': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.sqrt(operands[0]!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n return firstVector.map(val => Math.sqrt(val))\n }\n else {\n const firstMatrix = operands[0]!\n return firstMatrix.map(row => row.map(val => Math.sqrt(val)))\n }\n },\n paramCount: 1,\n aliases: ['√'],\n },\n\n 'cbrt': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.cbrt(operands[0]!)\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n return firstVector.map(val => Math.cbrt(val))\n }\n else {\n const firstMatrix = operands[0]!\n return firstMatrix.map(row => row.map(val => Math.cbrt(val)))\n }\n },\n paramCount: 1,\n aliases: ['∛'],\n },\n\n '^': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return operands[0]! ** operands[1]!\n }\n else if (operation === 'vector') {\n const firstVector = operands[0]!\n const secondVector = operands[1]!\n return firstVector.map((base, i) => base ** secondVector[i]!)\n }\n else {\n const firstMatrix = operands[0]!\n const secondMatrix = operands[1]!\n return firstMatrix.map((row, i) => row.map((base, j) => base ** secondMatrix[i]![j]!))\n }\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: ([value, decimals], sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation([value], sourceCodeInfo)\n if (operation === 'number') {\n if (decimals === undefined || decimals === 0) {\n return Math.round(operands[0]!)\n }\n else {\n assertNumber(decimals, sourceCodeInfo, { integer: true, positive: true })\n const factor = 10 ** decimals\n return Math.round(operands[0]! * factor) / factor\n }\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n if (decimals === undefined || decimals === 0) {\n return vector.map(val => Math.round(val))\n }\n else {\n assertNumber(decimals, sourceCodeInfo, { integer: true, positive: true })\n const factor = 10 ** decimals\n return vector.map(val => Math.round(val * factor) / factor)\n }\n }\n else {\n const matrix = operands[0]!\n if (decimals === undefined || decimals === 0) {\n return matrix.map(row => row.map(val => Math.round(val)))\n }\n else {\n assertNumber(decimals, sourceCodeInfo, { integer: true, positive: true })\n const factor = 10 ** decimals\n return matrix.map(row => row.map(val => Math.round(val * factor) / factor))\n }\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.trunc(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.trunc(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.trunc(val)))\n }\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.floor(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.floor(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.floor(val)))\n }\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.ceil(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.ceil(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.ceil(val)))\n }\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.abs(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.abs(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.abs(val)))\n }\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.sign(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.sign(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.sign(val)))\n }\n },\n paramCount: 1,\n },\n\n 'ln': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.log(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.log(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.log(val)))\n }\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.log2(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.log2(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.log2(val)))\n }\n },\n paramCount: 1,\n aliases: ['log₂'],\n },\n\n 'log10': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.log10(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.log10(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.log10(val)))\n }\n },\n paramCount: 1,\n aliases: ['log₁₀'],\n },\n\n 'sin': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.sin(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.sin(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.sin(val)))\n }\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.asin(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.asin(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.asin(val)))\n }\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.sinh(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.sinh(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.sinh(val)))\n }\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.asinh(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.asinh(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.asinh(val)))\n }\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.cos(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.cos(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.cos(val)))\n }\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.acos(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.acos(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.acos(val)))\n }\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.cosh(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.cosh(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.cosh(val)))\n }\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.acosh(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.acosh(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.acosh(val)))\n }\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.tan(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.tan(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.tan(val)))\n }\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.atan(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.atan(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.atan(val)))\n }\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.tanh(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.tanh(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.tanh(val)))\n }\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: (params, sourceCodeInfo): NumberVectorOrMatrix => {\n const [operation, operands] = getNumberVectorOrMatrixOperation(params, sourceCodeInfo)\n if (operation === 'number') {\n return Math.atanh(operands[0]!)\n }\n else if (operation === 'vector') {\n const vector = operands[0]!\n return vector.map(val => Math.atanh(val))\n }\n else {\n const matrix = operands[0]!\n return matrix.map(row => row.map(val => Math.atanh(val)))\n }\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '=': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n aliases: ['!='],\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '≥': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['>='],\n },\n '≤': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['<='],\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertFunctionLike } from '../../../typeGuards/lits'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first, null, 2)} to deep equal ${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be null.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertFunctionLike(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertString(throwMessage, sourceCodeInfo)\n assertFunctionLike(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertFunctionLike(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertFunctionLike, assertObj } from '../../../typeGuards/lits'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { isGrid, isMatrix, isVector } from '../../../typeGuards/annotatedArrays'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n 'vector?': {\n evaluate: ([vector]): boolean => isVector(vector),\n paramCount: 1,\n },\n 'matrix?': {\n evaluate: ([matrix]): boolean => isMatrix(matrix),\n paramCount: 1,\n },\n 'grid?': {\n evaluate: ([table]): boolean => isGrid(table),\n paramCount: 1,\n },\n\n}\n","import type { RegularExpression } from '../../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split-lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n SomePredFunction,\n} from '../../../parser/types'\nimport { toAny } from '../../../utils'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asFunctionLike, assertFunctionLike } from '../../../typeGuards/lits'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n '|>': {\n evaluate: ([value, func], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertFunctionLike(func, sourceCodeInfo)\n return executeFunction(func, [value], contextStack, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertFunctionLike(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n }\n },\n paramCount: {},\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n 'juxt': {\n evaluate: (params, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Juxt',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Complement',\n function: asFunctionLike(fn, sourceCodeInfo),\n }\n },\n paramCount: 1,\n },\n\n 'every-pred': {\n evaluate: (params, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'EveryPred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'some-pred': {\n evaluate: (params, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'SomePred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'fnull': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNullFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Fnull',\n function: asFunctionLike(fn, sourceCodeInfo),\n params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","/**\n * Creates a grid from a flat array with specified dimensions\n *\n * @param flatArray The flat array of values\n * @param rows Number of rows in the resulting grid\n * @returns A 2D array representing the grid\n */\nexport function fromArray(flatArray: unknown[], rows: number): unknown[][] {\n // Create the grid\n const grid: unknown[][] = []\n const cols = flatArray.length / rows\n // Reshape the flat array into rows and columns\n for (let i = 0; i < rows; i++) {\n const start = i * cols\n const end = start + cols\n grid.push(flatArray.slice(start, end))\n }\n\n return grid\n}\n","import type { Any } from '../../../../../interface'\n\nexport function transpose<T extends Any>(grid: T[][]): T[][] {\n const result: T[][] = []\n\n for (let i = 0; i < grid[0]!.length; i += 1) {\n const row: T[] = []\n for (let j = 0; j < grid.length; j += 1) {\n row.push(grid[j]![i]!)\n }\n result.push(row)\n }\n return result\n}\n","import { LitsError } from '../../../../../errors'\nimport type { Any } from '../../../../../interface'\nimport { assertGrid, assertVector } from '../../../../../typeGuards/annotatedArrays'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { asAny, asFunctionLike, assertAny, assertFunctionLike } from '../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { fromArray } from './fromArray'\nimport { transpose } from './transpose'\n\nexport const gridNormalExpression: BuiltinNormalExpressions = {\n 'grid:every?': {\n evaluate: ([grid, predicate], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(predicate, sourceCodeInfo)\n\n for (const row of grid) {\n for (const cell of row) {\n if (!executeFunction(predicate, [cell], contextStack, sourceCodeInfo)) {\n return false\n }\n }\n }\n return true\n },\n paramCount: 2,\n },\n 'grid:some?': {\n evaluate: ([grid, predicate], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(predicate, sourceCodeInfo)\n\n for (const row of grid) {\n for (const cell of row) {\n if (executeFunction(predicate, [cell], contextStack, sourceCodeInfo)) {\n return true\n }\n }\n }\n return false\n },\n paramCount: 2,\n },\n 'grid:every-row?': {\n evaluate: ([grid, predicate], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(predicate, sourceCodeInfo)\n\n for (const row of grid) {\n if (!executeFunction(predicate, [row], contextStack, sourceCodeInfo)) {\n return false\n }\n }\n return true\n },\n paramCount: 2,\n },\n 'grid:some-row?': {\n evaluate: ([grid, predicate], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(predicate, sourceCodeInfo)\n\n for (const row of grid) {\n if (executeFunction(predicate, [row], contextStack, sourceCodeInfo)) {\n return true\n }\n }\n return false\n },\n paramCount: 2,\n },\n 'grid:every-col?': {\n evaluate: ([grid, predicate], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(predicate, sourceCodeInfo)\n\n const transposed = transpose(grid)\n for (const row of transposed) {\n if (!executeFunction(predicate, [row], contextStack, sourceCodeInfo)) {\n return false\n }\n }\n return true\n },\n paramCount: 2,\n },\n 'grid:some-col?': {\n evaluate: ([grid, predicate], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(predicate, sourceCodeInfo)\n\n const transposed = transpose(grid)\n for (const row of transposed) {\n if (executeFunction(predicate, [row], contextStack, sourceCodeInfo)) {\n return true\n }\n }\n return false\n },\n paramCount: 2,\n },\n 'grid:row': {\n evaluate: ([grid, row], sourceCodeInfo): Any[] => {\n assertGrid(grid, sourceCodeInfo)\n assertNumber(row, sourceCodeInfo, { integer: true, nonNegative: true, lt: grid.length })\n return grid[row]!\n },\n paramCount: 2,\n },\n 'grid:col': {\n evaluate: ([grid, col], sourceCodeInfo): Any[] => {\n assertGrid(grid, sourceCodeInfo)\n assertNumber(col, sourceCodeInfo, { integer: true, nonNegative: true, lt: grid[0]!.length })\n return grid.map(row => row[col]!)\n },\n paramCount: 2,\n },\n 'grid:shape': {\n evaluate: ([grid], sourceCodeInfo): Any[] => {\n assertGrid(grid, sourceCodeInfo)\n return [grid.length, grid[0]!.length]\n },\n paramCount: 1,\n },\n 'grid:generate': {\n evaluate: ([rows, cols, generator], sourceCodeInfo, contextStack, { executeFunction }): Any[][] => {\n assertNumber(rows, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(cols, sourceCodeInfo, { integer: true, positive: true })\n assertFunctionLike(generator, sourceCodeInfo)\n\n const result: Any[][] = []\n for (let i = 0; i < rows; i += 1) {\n const row: Any[] = []\n for (let j = 0; j < cols; j += 1) {\n const value = executeFunction(generator, [i, j], contextStack, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n row.push(value)\n }\n result.push(row)\n }\n return result\n },\n paramCount: 3,\n },\n 'grid:reshape': {\n evaluate: ([grid, rows], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertNumber(rows, sourceCodeInfo, { integer: true, positive: true })\n\n const flatTable = grid.flat()\n if (flatTable.length % rows !== 0) {\n throw new LitsError(`The number of elements in the grid must be divisible by rows, but got ${flatTable.length} and ${rows}`, sourceCodeInfo)\n }\n const cols = flatTable.length / rows\n\n const result: Any[][] = []\n for (let i = 0; i < rows; i += 1) {\n const row: Any[] = []\n for (let j = 0; j < cols; j += 1) {\n row.push(flatTable[i * cols + j]!)\n }\n result.push(row)\n }\n return result\n },\n paramCount: 2,\n },\n 'grid:transpose': {\n evaluate: ([grid], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n return transpose(grid)\n },\n paramCount: 1,\n },\n 'grid:flip-h': {\n evaluate: ([grid], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n return grid.map(row => row.reverse())\n },\n paramCount: 1,\n },\n 'grid:flip-v': {\n evaluate: ([grid], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n return grid.reverse()\n },\n paramCount: 1,\n },\n 'grid:rotate': {\n evaluate: ([grid, times], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertNumber(times, sourceCodeInfo, { integer: true })\n // Normalize times to be between 0 and 3\n times = ((times % 4) + 4) % 4\n\n // If times is 0, return the original grid\n if (times === 0 || grid.length === 0) {\n return grid.map(row => [...row])\n }\n\n const height = grid.length\n const width = grid[0]!.length\n\n let result: Any[][]\n\n switch (times) {\n case 1: // 90 degrees clockwise\n result = Array<Any>(width).fill(null).map(() => Array<Any>(height).fill(null))\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n result[x]![height - 1 - y] = grid[y]![x]!\n }\n }\n break\n\n case 2: // 180 degrees\n result = Array<Any>(height).fill(null).map(() => Array<Any>(width).fill(null))\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n result[height - 1 - y]![width - 1 - x] = grid[y]![x]!\n }\n }\n break\n\n case 3: // 270 degrees clockwise (or 90 degrees counter-clockwise)\n result = Array<Any>(width).fill(null).map(() => Array<Any>(height).fill(null))\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n result[width - 1 - x]![y] = grid[y]![x]!\n }\n }\n break\n }\n\n return result!\n },\n paramCount: 2,\n },\n 'grid:reverse-rows': {\n evaluate: ([grid], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n return grid.reverse()\n },\n paramCount: 1,\n },\n 'grid:reverse-cols': {\n evaluate: ([grid], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n return grid.map(row => row.reverse())\n },\n paramCount: 1,\n },\n 'grid:slice': {\n evaluate: ([grid, start, end], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertVector(start, sourceCodeInfo)\n if (start.length !== 2) {\n throw new LitsError(`The start vector must have 2 elements, but got ${start.length}`, sourceCodeInfo)\n }\n const [rowStart, colStart] = start\n assertNumber(rowStart, sourceCodeInfo, { integer: true, nonNegative: true, lt: grid.length })\n assertNumber(colStart, sourceCodeInfo, { integer: true, nonNegative: true, lt: grid[0]!.length })\n\n end ??= [grid.length, grid[0]!.length]\n assertVector(end, sourceCodeInfo)\n if (end.length !== 2) {\n throw new LitsError(`The end vector must have 2 elements, but got ${end.length}`, sourceCodeInfo)\n }\n const [rowEnd, colEnd] = end\n assertNumber(rowEnd, sourceCodeInfo, { gt: rowStart, lte: grid.length })\n assertNumber(colEnd, sourceCodeInfo, { gt: colStart, lte: grid[0]!.length })\n\n const result: Any[][] = []\n for (let i = rowStart; i < rowEnd; i += 1) {\n const row: Any[] = []\n for (let j = colStart; j < colEnd; j += 1) {\n row.push(grid[i]![j]!)\n }\n result.push(row)\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'grid:slice-rows': {\n evaluate: ([grid, rowStart, rowEnd], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n\n if (typeof rowEnd === 'undefined') {\n assertNumber(rowStart, sourceCodeInfo, { integer: true, lte: grid.length, gte: -grid.length })\n if (rowStart < 0) {\n return grid.slice(grid.length + rowStart)\n }\n return grid.slice(rowStart)\n }\n\n assertNumber(rowStart, sourceCodeInfo, { integer: true, nonNegative: true, lte: grid.length })\n assertNumber(rowEnd, sourceCodeInfo, { integer: true })\n rowEnd = rowEnd < 0 ? grid.length + rowEnd : rowEnd\n assertNumber(rowEnd, sourceCodeInfo, { gt: rowStart, lte: grid.length })\n\n return grid.slice(rowStart, rowEnd)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'grid:slice-cols': {\n evaluate: ([grid, colStart, colEnd], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n const trMatrix = transpose(grid)\n\n if (typeof colEnd === 'undefined') {\n assertNumber(colStart, sourceCodeInfo, { integer: true, lte: trMatrix.length, gte: -trMatrix.length })\n if (colStart < 0) {\n return transpose(trMatrix.slice(trMatrix.length + colStart))\n }\n return transpose(trMatrix.slice(colStart))\n }\n\n assertNumber(colStart, sourceCodeInfo, { integer: true, nonNegative: true, lte: trMatrix.length })\n assertNumber(colEnd, sourceCodeInfo, { integer: true })\n colEnd = colEnd < 0 ? trMatrix.length + colEnd : colEnd\n assertNumber(colEnd, sourceCodeInfo, { gt: colStart, lte: trMatrix.length })\n\n return transpose(trMatrix.slice(colStart, colEnd))\n },\n paramCount: { min: 2, max: 3 },\n },\n 'grid:splice-rows': {\n evaluate: ([grid, rowStart, rowDeleteCount, ...rows], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertNumber(rowStart, sourceCodeInfo, { integer: true, nonNegative: true, lte: grid.length })\n assertNumber(rowDeleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n if (rows.length !== 0) {\n assertGrid(rows, sourceCodeInfo)\n rows.every((row) => {\n assertArray(row, sourceCodeInfo)\n if (grid[0]!.length !== row.length) {\n throw new LitsError(`All rows must have the same length as the number of columns in grid, but got ${row.length}`, sourceCodeInfo)\n }\n return true\n })\n }\n\n const result: Any[][] = []\n for (let i = 0; i < rowStart; i += 1) {\n result.push(grid[i]!)\n }\n if (rows.length > 0) {\n result.push(...(rows as Any[][]))\n }\n for (let i = rowStart + rowDeleteCount; i < grid.length; i += 1) {\n result.push(grid[i]!)\n }\n return result\n },\n paramCount: { min: 3 },\n },\n 'grid:splice-cols': {\n evaluate: ([grid, colStart, colDeleteCount, ...cols], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n const trMatrix = transpose(grid)\n assertNumber(colStart, sourceCodeInfo, { integer: true, nonNegative: true, lte: trMatrix.length })\n assertNumber(colDeleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (cols.length !== 0) {\n assertGrid(cols, sourceCodeInfo)\n cols.every((row) => {\n assertArray(row, sourceCodeInfo)\n if (trMatrix[0]!.length !== row.length) {\n throw new LitsError(`All rows must have the same length as the number of rows in grid, but got ${row.length}`, sourceCodeInfo)\n }\n return true\n })\n }\n\n const result: Any[][] = []\n for (let i = 0; i < colStart; i += 1) {\n result.push(trMatrix[i]!)\n }\n result.push(...(cols as Any[][]))\n for (let i = colStart + colDeleteCount; i < trMatrix.length; i += 1) {\n result.push(trMatrix[i]!)\n }\n return transpose(result)\n },\n paramCount: { min: 3 },\n },\n 'grid:concat-rows': {\n evaluate: (params, sourceCodeInfo): Any[][] => {\n assertArray(params, sourceCodeInfo)\n params.every(grid => assertGrid(grid, sourceCodeInfo))\n const cols = (params[0] as Any[][])[0]!.length\n ;(params as Any[][][]).slice(1).every((grid) => {\n if (grid[0]!.length !== cols) {\n throw new LitsError(`All matrices must have the same number of columns, but got ${cols} and ${grid[0]!.length}`, sourceCodeInfo)\n }\n return true\n })\n\n const result: Any[][] = []\n ;(params as Any[][][]).forEach((grid) => {\n grid.forEach((row) => {\n result.push(row)\n })\n })\n return result\n },\n paramCount: { min: 1 },\n },\n 'grid:concat-cols': {\n evaluate: (params, sourceCodeInfo): Any[][] => {\n assertArray(params, sourceCodeInfo)\n params.every(grid => assertGrid(grid, sourceCodeInfo))\n const rows = (params[0] as Any[][]).length\n ;(params as Any[][][]).slice(1).every((grid) => {\n if (grid.length !== rows) {\n throw new LitsError(`All matrices must have the same number of rows, but got ${rows} and ${grid.length}`, sourceCodeInfo)\n }\n return true\n })\n\n const result: Any[][] = []\n for (let i = 0; i < rows; i += 1) {\n const row: Any[] = []\n ;(params as Any[][][]).forEach((grid) => {\n row.push(...grid[i]!)\n })\n result.push(row)\n }\n return result\n },\n paramCount: { min: 1 },\n },\n 'grid:map': {\n evaluate: (params, sourceCodeInfo, contextStack, { executeFunction }): Any[][] => {\n const fn = asFunctionLike(params.at(-1), sourceCodeInfo)\n const grids = params.slice(0, -1)\n assertGrid(grids[0], sourceCodeInfo)\n const rows = grids[0].length\n const cols = grids[0][0]!.length\n grids.slice(1).forEach((grid) => {\n assertGrid(grid, sourceCodeInfo)\n if (grid.length !== rows) {\n throw new LitsError(`All matrices must have the same number of rows, but got ${rows} and ${grid.length}`, sourceCodeInfo)\n }\n if (grid[0]!.length !== cols) {\n throw new LitsError(`All matrices must have the same number of columns, but got ${cols} and ${grid[0]!.length}`, sourceCodeInfo)\n }\n })\n\n const result: Any[][] = []\n for (let i = 0; i < rows; i += 1) {\n const row: Any[] = []\n for (let j = 0; j < cols; j += 1) {\n const args = grids.map(grid => (grid as Any[][])[i]![j])\n row.push(asAny(executeFunction(fn, args, contextStack, sourceCodeInfo)))\n }\n result.push(row)\n }\n return result\n },\n paramCount: { min: 2 },\n },\n 'grid:mapi': {\n evaluate: ([grid, fn], sourceCodeInfo, contextStack, { executeFunction }): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n const rows = grid.length\n const cols = grid[0]!.length\n\n const result: Any[][] = []\n for (let i = 0; i < rows; i += 1) {\n const row: Any[] = []\n for (let j = 0; j < cols; j += 1) {\n row.push(asAny(executeFunction(fn, [grid[i]![j], i, j], contextStack, sourceCodeInfo)))\n }\n result.push(row)\n }\n return result\n },\n paramCount: 2,\n },\n 'grid:reduce': {\n evaluate: ([grid, fn, initialValue], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n let accumulator = asAny(initialValue)\n for (const row of grid) {\n for (const cell of row) {\n accumulator = executeFunction(fn, [accumulator, cell], contextStack, sourceCodeInfo)\n }\n }\n return accumulator\n },\n paramCount: 3,\n },\n 'grid:reducei': {\n evaluate: ([grid, fn, initialValue], sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertGrid(grid, sourceCodeInfo)\n assertFunctionLike(fn, sourceCodeInfo)\n\n let accumulator = asAny(initialValue)\n for (let i = 0; i < grid.length; i += 1) {\n for (let j = 0; j < grid[i]!.length; j += 1) {\n accumulator = executeFunction(fn, [accumulator, grid[i]![j], i, j], contextStack, sourceCodeInfo)\n }\n }\n return accumulator\n },\n paramCount: 3,\n },\n 'grid:push-rows': {\n evaluate: ([grid, ...rows], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertGrid(rows, sourceCodeInfo)\n if (grid[0]!.length !== rows[0]!.length) {\n throw new LitsError(`All rows must have the same length as the number of columns in grid, but got ${grid[0]!.length} and ${rows[0]!.length}`, sourceCodeInfo)\n }\n return [...grid, ...rows]\n },\n paramCount: { min: 2 },\n },\n 'grid:unshift-rows': {\n evaluate: ([grid, ...rows], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertGrid(rows, sourceCodeInfo)\n if (grid[0]!.length !== rows[0]!.length) {\n throw new LitsError(`All rows must have the same length as the number of columns in grid, but got ${grid[0]!.length} and ${rows[0]!.length}`, sourceCodeInfo)\n }\n return [...rows, ...grid]\n },\n paramCount: { min: 2 },\n },\n 'grid:pop-row': {\n evaluate: ([grid], sourceCodeInfo): Any[][] | null => {\n assertGrid(grid, sourceCodeInfo)\n if (grid.length === 1) {\n return null\n }\n return grid.slice(0, -1)\n },\n paramCount: 1,\n\n },\n 'grid:shift-row': {\n evaluate: ([grid], sourceCodeInfo): Any[][] | null => {\n assertGrid(grid, sourceCodeInfo)\n if (grid.length === 1) {\n return null\n }\n return grid.slice(1)\n },\n paramCount: 1,\n },\n 'grid:push-cols': {\n evaluate: ([grid, ...cols], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertGrid(cols, sourceCodeInfo)\n if (grid.length !== cols[0]!.length) {\n throw new LitsError(`All columns must have the same length as the number of rows in grid, but got ${cols.length}`, sourceCodeInfo)\n }\n\n const result: Any[][] = []\n\n for (let i = 0; i < grid.length; i += 1) {\n const row: Any[] = []\n row.push(...grid[i]!)\n cols.forEach((col) => {\n row.push(col[i]!)\n })\n result.push(row)\n }\n return result\n },\n paramCount: { min: 2 },\n },\n 'grid:unshift-cols': {\n evaluate: ([grid, ...cols], sourceCodeInfo): Any[][] => {\n assertGrid(grid, sourceCodeInfo)\n assertGrid(cols, sourceCodeInfo)\n if (grid.length !== cols[0]!.length) {\n throw new LitsError(`All columns must have the same length as the number of rows in grid, but got ${cols.length}`, sourceCodeInfo)\n }\n\n const result: Any[][] = []\n\n for (let i = 0; i < grid.length; i += 1) {\n const row: Any[] = []\n cols.forEach((col) => {\n row.push(col[i]!)\n })\n row.push(...grid[i]!)\n result.push(row)\n }\n return result\n },\n paramCount: { min: 2 },\n },\n 'grid:pop-col': {\n evaluate: ([grid], sourceCodeInfo): Any[][] | null => {\n assertGrid(grid, sourceCodeInfo)\n if (grid[0]!.length === 1) {\n return null\n }\n return grid.map(row => row.slice(0, -1))\n },\n paramCount: 1,\n },\n 'grid:shift-col': {\n evaluate: ([grid], sourceCodeInfo): Any[][] | null => {\n assertGrid(grid, sourceCodeInfo)\n if (grid[0]!.length === 1) {\n return null\n }\n return grid.map(row => row.slice(1))\n },\n paramCount: 1,\n },\n 'grid:from-array': {\n evaluate: ([array, rows], sourceCodeInfo): unknown[][] => {\n assertArray(array, sourceCodeInfo)\n assertNumber(rows, sourceCodeInfo, { integer: true, positive: true })\n if (array.length % rows !== 0) {\n throw new LitsError(`The number of elements in the array must be divisible by rows, but got ${array.length} and ${rows}`, sourceCodeInfo)\n }\n return fromArray(array, rows)\n },\n paramCount: 2,\n },\n}\n","/**\n * Counts occurrences of each integer value in an array of non-negative integers.\n *\n * @param array - Array of non-negative integers to count\n * @param minLength - Minimum length of the output array (default: 0)\n * @param weights - Optional array of weights (same length as input array)\n * @returns An array where index i contains the count of occurrences of i in the input array\n */\nexport function bincount(\n array: number[],\n minLength: number = 0,\n weights?: number[],\n): number[] {\n if (array.length === 0) {\n return Array.from({ length: minLength }, () => 0)\n }\n\n // Find the maximum value to determine output array size\n const maxValue = Math.max(...array)\n const outputLength = Math.max(maxValue + 1, minLength)\n const counts = Array.from({ length: outputLength }, () => 0)\n\n // Count occurrences (or sum weights if provided)\n for (let i = 0; i < array.length; i++) {\n const value = Math.floor(array[i]!)\n\n if (value < outputLength) {\n // If weights provided, add weight; otherwise add 1\n counts[value]! += weights ? weights[i]! : 1\n }\n }\n\n return counts\n}\n","/**\n * Creates a histogram from an array of numbers, returning bin ranges and counts.\n * Each bin is represented as a tuple of [minValue, maxValue, count].\n *\n * @param vector - Array of numeric values\n * @param bins - Number of bins to divide the data into\n * @returns Array of tuples, each containing [binStart, binEnd, count]\n */\nexport function calcHistogram(vector: number[], bins: number): [number, number, number][] {\n if (vector.length === 0) {\n // Return empty bins with zero counts if input is empty\n const result: [number, number, number][] = []\n for (let i = 0; i < bins; i++) {\n result.push([0, 0, 0])\n }\n return result\n }\n\n // Find min and max values\n const min = Math.min(...vector)\n const max = Math.max(...vector)\n\n // Handle the case where all values are the same\n if (min === max) {\n const result: [number, number, number][] = []\n // Create bins with the same min/max and zero counts\n for (let i = 0; i < bins; i++) {\n result.push([min, min, 0])\n }\n // Put all values in the first bin\n result[0]![2] = vector.length\n return result\n }\n\n // Calculate bin size\n const binSize = (max - min) / bins\n\n // Initialize histogram array with bin boundaries and zero counts\n const histogram: [number, number, number][] = []\n for (let i = 0; i < bins; i++) {\n const binStart = min + i * binSize\n const binEnd = i === bins - 1 ? max : min + (i + 1) * binSize\n histogram.push([binStart, binEnd, 0])\n }\n\n // Count values in each bin\n for (const value of vector) {\n if (value === max) {\n // Place maximum value in the last bin\n histogram[bins - 1]![2] += 1\n }\n else {\n const binIndex = Math.min(\n Math.floor((value - min) / binSize),\n bins - 1,\n )\n histogram[binIndex]![2] += 1\n }\n }\n\n return histogram\n}\n","/**\n * Calculates the mode (most frequent value(s)) of a dataset\n * @param values An array of values of any type\n * @returns An array containing the mode(s) of the dataset\n */\nexport function mode(values: number[]): number[] {\n // Create a frequency map\n const frequencyMap = new Map<number, number>()\n\n // Count occurrences of each value\n for (const value of values) {\n frequencyMap.set(value, (frequencyMap.get(value) || 0) + 1)\n }\n\n // Find the maximum frequency\n let maxFrequency = 0\n for (const frequency of frequencyMap.values()) {\n if (frequency > maxFrequency) {\n maxFrequency = frequency\n }\n }\n\n // If all values appear only once, there is no mode\n if (maxFrequency === 1) {\n return values\n }\n\n // Collect all values that appear with the maximum frequency\n const modes: number[] = []\n for (const [value, frequency] of frequencyMap.entries()) {\n if (frequency === maxFrequency) {\n modes.push(value)\n }\n }\n\n return modes\n}\n","/**\n * Checks if a vector has no extreme outliers using the IQR method\n * @param vector An array of numbers to check for extreme outliers\n * @returns true if there are no extreme outliers, false otherwise\n */\nexport function hasOutliers(vector: number[]): boolean {\n return outliers(vector).length > 0\n}\n\nexport function outliers(vector: number[]): number[] {\n // Handle edge cases\n if (vector.length <= 1)\n return []\n\n // Sort the vector to calculate quartiles\n const sorted = [...vector].sort((a, b) => a - b)\n\n // Calculate Q1 (25th percentile)\n const q1Index = Math.floor(sorted.length * 0.25)\n const q1 = sorted.length % 4 === 0\n ? (sorted[q1Index - 1]! + sorted[q1Index]!) / 2\n : sorted[q1Index]!\n\n // Calculate Q3 (75th percentile)\n const q3Index = Math.floor(sorted.length * 0.75)\n const q3 = sorted.length % 4 === 0\n ? (sorted[q3Index - 1]! + sorted[q3Index]!) / 2\n : sorted[q3Index]!\n\n // Calculate IQR (Interquartile Range)\n const iqr = q3 - q1\n\n // Define bounds for outliers (using 1.5*IQR for mild outliers and 3*IQR for extreme outliers)\n const lowerBound = q1 - iqr * 1.5\n const upperBound = q3 + iqr * 1.5\n\n // Filter the vector to find outliers\n return vector.filter(val => val < lowerBound || val > upperBound)\n}\n","/**\n * Calculate the percentile value from an array of numbers\n * @param data Array of numbers to calculate percentile from\n * @param percentile The percentile to calculate (0-100)\n * @returns The value at the specified percentile\n */\nexport function calcPercentile(data: number[], percentile: number): number {\n // Sort the data in ascending order\n const sortedData = [...data].sort((a, b) => a - b)\n\n // If percentile is 0, return the minimum value\n if (percentile === 0) {\n return sortedData[0]!\n }\n\n // If percentile is 100, return the maximum value\n if (percentile === 100) {\n return sortedData[sortedData.length - 1]!\n }\n\n // Calculate the index\n const index = (percentile / 100) * (sortedData.length - 1)\n\n // If index is an integer, return the value at that index\n if (Number.isInteger(index)) {\n return sortedData[index]!\n }\n\n // Otherwise, interpolate between the two adjacent values\n const lowerIndex = Math.floor(index)\n const upperIndex = Math.ceil(index)\n const weight = index - lowerIndex\n\n return sortedData[lowerIndex]! * (1 - weight) + sortedData[upperIndex]! * weight\n}\n","export function quartiles(vector: number[]): [number, number, number] {\n const sorted = [...vector].sort((a, b) => a - b)\n\n // Median calculation (Q2)\n const midIndex = sorted.length / 2\n let q2: number\n if (sorted.length % 2 === 0) {\n // Even length - average the two middle values\n q2 = (sorted[midIndex - 1]! + sorted[midIndex]!) / 2\n }\n else {\n // Odd length - take the middle value\n q2 = sorted[Math.floor(midIndex)]!\n }\n\n // Lower half for Q1\n const lowerHalf = sorted.slice(0, Math.floor(sorted.length / 2))\n // Upper half for Q3\n const upperHalf = sorted.slice(Math.ceil(sorted.length / 2))\n\n // Calculate Q1 and Q3 using the same median logic on the halves\n let q1: number, q3: number\n\n if (lowerHalf.length % 2 === 0) {\n const midLower = lowerHalf.length / 2\n q1 = (lowerHalf[midLower - 1]! + lowerHalf[midLower]!) / 2\n }\n else {\n q1 = lowerHalf[Math.floor(lowerHalf.length / 2)]!\n }\n\n if (upperHalf.length % 2 === 0) {\n const midUpper = upperHalf.length / 2\n q3 = (upperHalf[midUpper - 1]! + upperHalf[midUpper]!) / 2\n }\n else {\n q3 = upperHalf[Math.floor(upperHalf.length / 2)]!\n }\n\n return [q1, q2, q3]\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const maxReductionFunction: ReductionFunctionDefinition<'max'> = {\n 'vec:max': vector => Math.max(...vector),\n 'padding': -Number.MAX_VALUE,\n}\n","export function calcMean(vector: number[]): number {\n if (vector.length === 0) {\n return 0\n }\n\n const sum = vector.reduce((acc, val) => acc + val, 0)\n return sum / vector.length\n}\n","import { calcMean } from '../calcMean'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const meanReductionFunction: ReductionFunctionDefinition<'mean'> = {\n 'vec:mean': vector => calcMean(vector),\n}\n\nexport const geometricMeanReductionFunction: ReductionFunctionDefinition<'geometric-mean'> = {\n 'vec:geometric-mean': (vector) => {\n if (vector.some(val => val < 0)) {\n throw new Error('Geometric mean is not defined for non-positive numbers')\n }\n return Math.exp(vector.reduce((acc, val) => acc + Math.log(val), 0) / vector.length)\n },\n}\n\nexport const harmonicMeanReductionFunction: ReductionFunctionDefinition<'harmonic-mean'> = {\n 'vec:harmonic-mean': vector => vector.length / vector.reduce((acc, val) => acc + 1 / val, 0),\n}\n","export function calcMedian(vector: number[]): number {\n const sorted = [...vector].sort((a, b) => a - b)\n const mid = Math.floor(sorted.length / 2)\n\n return sorted.length % 2 === 0\n ? (sorted[mid - 1]! + sorted[mid]!) / 2\n : sorted[mid]!\n}\n","import { calcMedian } from '../calcMedian'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const medianReductionFunction: ReductionFunctionDefinition<'median'> = {\n 'vec:median': vector => calcMedian(vector),\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const minReductionFunction: ReductionFunctionDefinition<'min'> = {\n 'vec:min': vector => Math.min(...vector),\n 'padding': Number.MAX_VALUE,\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const prodReductionFunction: ReductionFunctionDefinition<'prod'> = {\n 'vec:prod': vector => vector.reduce((acc, val) => acc * val, 1),\n 'padding': 1,\n 'minLength': 0,\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const sumReductionFunction: ReductionFunctionDefinition<'sum'> = {\n 'vec:sum': vector => vector.reduce((acc, val) => acc + val, 0),\n 'minLength': 0,\n}\n","import { calcMean } from './calcMean'\n\nexport function calcVariance(vector: number[], optionalMean?: number): number {\n const mean = optionalMean ?? calcMean(vector)\n return vector.reduce((acc, val) => acc + (val - mean) ** 2, 0) / vector.length\n}\n\nexport function calcSampleVariance(vector: number[], optionalMean?: number): number {\n const mean = optionalMean ?? calcMean(vector)\n return vector.reduce((acc, val) => acc + (val - mean) ** 2, 0) / (vector.length - 1)\n}\n","import { calcSampleVariance, calcVariance } from '../calcVariance'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const varianceReductionFunction: ReductionFunctionDefinition<'variance'> = {\n 'vec:variance': vector => calcVariance(vector),\n}\n\nexport const sampleVarianceReductionFunction: ReductionFunctionDefinition<'sample-variance'> = {\n 'vec:sample-variance': vector => calcSampleVariance(vector),\n 'minLength': 2,\n}\n","import { calcVariance } from './calcVariance'\n\nexport function calcStdDev(vector: number[], optionalMean?: number): number {\n const variance = calcVariance(vector, optionalMean)\n return Math.sqrt(variance)\n}\n\nexport function calcSampleStdDev(vector: number[], optionalMean?: number): number {\n const variance = calcVariance(vector, optionalMean)\n return Math.sqrt(variance * (vector.length / (vector.length - 1)))\n}\n","import { calcSampleStdDev, calcStdDev } from '../calcStdDev'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const stdevReductionFunction: ReductionFunctionDefinition<'stdev'> = {\n 'vec:stdev': vector => calcStdDev(vector),\n}\n\nexport const sampleStdevReductionFunction: ReductionFunctionDefinition<'sample-stdev'> = {\n 'vec:sample-stdev': vector => calcSampleStdDev(vector),\n 'minLength': 2,\n}\n","import { quartiles } from '../quartiles'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const iqrReductionFunction: ReductionFunctionDefinition<'iqr'> = {\n 'vec:iqr': (vector) => {\n const [q1, , q3] = quartiles(vector)\n return q3 - q1\n },\n 'minLength': 4,\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const spanReductionFunction: ReductionFunctionDefinition<'span'> = {\n 'vec:span': vector => vector.length === 0 ? 0 : Math.max(...vector) - Math.min(...vector),\n 'minLength': 0,\n}\n","import { calcMean } from '../calcMean'\nimport { calcStdDev } from '../calcStdDev'\nimport type { ReductionFunctionDefinition } from '.'\n\nfunction skewness(vector: number[]): number {\n const mean = calcMean(vector)\n const stdDev = calcStdDev(vector)\n if (stdDev === 0) {\n throw new Error('Standard deviation is zero, skewness is undefined')\n }\n return vector.reduce((acc, val) => acc + ((val - mean) ** 3), 0) / (vector.length * stdDev ** 3)\n}\n\nfunction sampleSkewness(vector: number[]): number {\n const n = vector.length\n\n // Calculate the mean\n const mean = vector.reduce((acc, val) => acc + val, 0) / n\n\n // Calculate sum of squared differences and sum of cubed differences\n let sumSquaredDiffs = 0\n let sumCubedDiffs = 0\n\n for (const val of vector) {\n const diff = val - mean\n sumSquaredDiffs += diff * diff\n sumCubedDiffs += diff * diff * diff\n }\n\n // Calculate sample standard deviation (using n-1)\n const sampleVariance = sumSquaredDiffs / (n - 1)\n const sampleStdDev = Math.sqrt(sampleVariance)\n\n // If standard deviation is 0, skewness is undefined\n if (sampleStdDev === 0) {\n throw new Error('Cannot calculate sample skewness when standard deviation is 0')\n }\n\n // Calculate sample skewness with Fisher's adjustment\n return (n / ((n - 1) * (n - 2))) * sumCubedDiffs / sampleStdDev ** 3\n}\n\nexport const skewnessReductionFunction: ReductionFunctionDefinition<'skewness'> = {\n 'vec:skewness': vector => skewness(vector),\n 'minLength': 3,\n}\n\nexport const sampleSkewnessReductionFunction: ReductionFunctionDefinition<'sample-skewness'> = {\n 'vec:sample-skewness': vector => sampleSkewness(vector),\n 'minLength': 3,\n}\n","import { calcMean } from '../calcMean'\nimport { calcStdDev } from '../calcStdDev'\n\nimport type { ReductionFunctionDefinition } from '.'\n\nfunction kurtosis(vector: number[]): number {\n const mean = calcMean(vector)\n const stdDev = calcStdDev(vector)\n if (stdDev === 0) {\n throw new Error('Standard deviation is zero, kurtosis is undefined')\n }\n return vector.reduce((acc, val) => acc + ((val - mean) ** 4), 0) / (vector.length * stdDev ** 4)\n}\n\nfunction excessKurtosis(vector: number[]): number {\n return kurtosis(vector) - 3\n}\n\n/**\n * Calculates the sample kurtosis (bias-corrected)\n * @param vector Array of numeric values\n * @returns The sample kurtosis\n * @throws Error if sample size is less than 4 or if variance is zero\n */\nfunction sampleKurtosis(vector: number[]): number {\n const n = vector.length\n\n const mean = vector.reduce((sum, val) => sum + val, 0) / n\n const sumSquaredDeviations = vector.reduce((sum, val) => sum + (val - mean) ** 2, 0)\n const variance = sumSquaredDeviations / (n - 1)\n\n if (variance === 0) {\n throw new Error('Variance is zero, kurtosis is undefined')\n }\n\n const fourthMomentSum = vector.reduce((sum, val) => sum + (val - mean) ** 4, 0)\n\n // Correct formula for sample kurtosis\n return (n * (n + 1) * fourthMomentSum) / ((n - 1) * (n - 2) * (n - 3) * variance ** 2)\n}\n/**\n * Calculates the sample excess kurtosis (bias-corrected)\n * @param vector Array of numeric values\n * @returns The sample excess kurtosis\n * @throws Error if sample size is less than 4 or if variance is zero\n */\nfunction sampleExcessKurtosis(vector: number[]): number {\n const n = vector.length\n\n const mean = vector.reduce((sum, val) => sum + val, 0) / n\n const sumSquaredDeviations = vector.reduce((sum, val) => sum + (val - mean) ** 2, 0)\n const variance = sumSquaredDeviations / (n - 1)\n\n if (variance === 0) {\n throw new Error('Variance is zero, kurtosis is undefined')\n }\n\n const fourthMomentSum = vector.reduce((sum, val) => sum + (val - mean) ** 4, 0)\n const rawKurtosis = (n * (n + 1) * fourthMomentSum) / ((n - 1) * (n - 2) * (n - 3) * variance ** 2)\n\n // Compute excess kurtosis by subtracting 3 times the bias correction factor\n return rawKurtosis - (3 * (n - 1) * (n - 1)) / ((n - 2) * (n - 3))\n}\n\nexport const kurtosisReductionFunction: ReductionFunctionDefinition<'kurtosis'> = {\n 'vec:kurtosis': vector => kurtosis(vector),\n 'minLength': 4,\n}\n\nexport const eccessKurtosisReductionFunction: ReductionFunctionDefinition<'excess-kurtosis'> = {\n 'vec:excess-kurtosis': vector => excessKurtosis(vector),\n 'minLength': 4,\n}\n\nexport const sampleKurtosisReductionFunction: ReductionFunctionDefinition<'sample-kurtosis'> = {\n 'vec:sample-kurtosis': vector => sampleKurtosis(vector),\n 'minLength': 4,\n}\n\nexport const sampleExcessKurtosisReductionFunction: ReductionFunctionDefinition<'sample-excess-kurtosis'> = {\n 'vec:sample-excess-kurtosis': vector => sampleExcessKurtosis(vector),\n 'minLength': 4,\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const rmsReductionFunction: ReductionFunctionDefinition<'rms'> = {\n 'vec:rms': vector => Math.sqrt(vector.reduce((acc, val) => acc + val ** 2, 0) / vector.length),\n}\n","import { calcMedian } from './calcMedian'\n\nexport function calcMad(vector: number[]): number {\n const median = calcMedian(vector)\n\n // Calculate mean absolute deviation\n return vector.reduce((acc, val) => acc + Math.abs(val - median), 0) / vector.length\n}\n","import { calcMad } from '../calcMad'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const madReductionFunction: ReductionFunctionDefinition<'mad'> = {\n 'vec:mad': vector => calcMad(vector),\n}\n","import { calcMedian } from './calcMedian'\n\nexport function calcMedad(vector: number[]): number {\n const median = calcMedian(vector)\n // Calculate absolute deviations from the median\n const absoluteDeviations = vector.map(val => Math.abs(val - median))\n\n // Calculate the median of the absolute deviations\n const medianOfDeviations = calcMedian(absoluteDeviations)\n const scaleFactor = 1.4826 // Scale factor for robust scaling\n\n return medianOfDeviations * scaleFactor\n}\n","import { calcMedad } from '../calcMedad'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const medadReductionFunction: ReductionFunctionDefinition<'medad'> = {\n 'vec:medad': vector => calcMedad(vector),\n}\n","import type { ReductionFunctionDefinition } from '.'\n\nexport const giniCoefficientReductionFunction: ReductionFunctionDefinition<'gini-coefficient'> = {\n 'vec:gini-coefficient': (vector) => {\n if (vector.some(x => x < 0)) {\n throw new Error('Gini coefficient is not defined for negative values')\n }\n const sorted = [...vector].sort((a, b) => a - b)\n const n = sorted.length\n const sum = sorted.reduce((acc, val) => acc + val, 0)\n if (sum === 0) {\n return 0\n }\n const gini = (2 * sorted.reduce((acc, val, i) => acc + (i + 1) * val, 0)) / (n * sum) - (n + 1) / n\n return gini\n },\n 'minLength': 1,\n}\n","/**\n * Calculates the Shannon entropy of a vector.\n * Entropy measures the amount of uncertainty or randomness in the data.\n *\n * @param vector - An array of values to calculate entropy for\n * @returns The entropy value (in bits) or 0 for empty arrays\n */\nexport function calculateEntropy<T>(vector: T[]): number {\n // Count occurrences of each value\n const frequencies = new Map<T, number>()\n for (const value of vector) {\n frequencies.set(value, (frequencies.get(value) || 0) + 1)\n }\n\n // Get the total number of elements\n const total = vector.length\n\n // Calculate entropy using Shannon's formula\n let entropy = 0\n for (const frequency of frequencies.values()) {\n const probability = frequency / total\n // Skip cases where probability is 0 (log(0) is undefined)\n if (probability > 0) {\n entropy -= probability * Math.log2(probability)\n }\n }\n\n return entropy\n}\n","import { calculateEntropy } from '../entropy'\nimport type { ReductionFunctionDefinition } from '.'\n\nexport const entropyReductionFunction: ReductionFunctionDefinition<'entropy'> = {\n 'vec:entropy': vector => calculateEntropy(vector),\n 'minLength': 1,\n}\n","import { LitsError } from '../../../../../../errors'\nimport { assertVector } from '../../../../../../typeGuards/annotatedArrays'\nimport { assertNumber } from '../../../../../../typeGuards/number'\nimport type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../../../../../interface'\nimport { maxReductionFunction } from './max'\nimport { geometricMeanReductionFunction, harmonicMeanReductionFunction, meanReductionFunction } from './mean'\nimport { medianReductionFunction } from './median'\nimport { minReductionFunction } from './min'\nimport { prodReductionFunction } from './prod'\nimport { sumReductionFunction } from './sum'\nimport { sampleVarianceReductionFunction, varianceReductionFunction } from './variance'\nimport { sampleStdevReductionFunction, stdevReductionFunction } from './standardDeviation'\nimport { iqrReductionFunction } from './iqr'\nimport { spanReductionFunction } from './span'\nimport { sampleSkewnessReductionFunction, skewnessReductionFunction } from './skewness'\nimport { eccessKurtosisReductionFunction, kurtosisReductionFunction, sampleExcessKurtosisReductionFunction, sampleKurtosisReductionFunction } from './kurtosis'\nimport { rmsReductionFunction } from './rms'\nimport { madReductionFunction } from './mad'\nimport { medadReductionFunction } from './medad'\nimport { giniCoefficientReductionFunction } from './giniCoefficient'\nimport { entropyReductionFunction } from './entropy'\n\ntype VectorReductionKey<T extends string> = `vec:${T}`\ntype VectorMovingWindowKey<T extends string> = `vec:moving-${T}`\ntype VectorCenteredMovingWindowKey<T extends string> = `vec:centered-moving-${T}`\ntype VectorRunningKey<T extends string> = `vec:running-${T}`\n\nexport type VectorReductionKeys<T extends string> = VectorReductionKey<T> | VectorMovingWindowKey<T> | VectorCenteredMovingWindowKey<T> | VectorRunningKey<T>\n\ntype ReductionFunction = (vector: number[]) => number\n// type MovingWindowFunction = (vector: number[], windowSize: number, sourceCodeInfo: SourceCodeInfo | undefined) => number[]\n\nexport type ReductionFunctionDefinition<T extends string> = Record<VectorReductionKey<T>, ReductionFunction> & {\n minLength?: number\n padding?: number\n}\n\nexport const reductionFunctionNormalExpressions: BuiltinNormalExpressions = {}\n\naddReductionFunctions(meanReductionFunction)\naddReductionFunctions(geometricMeanReductionFunction)\naddReductionFunctions(harmonicMeanReductionFunction)\naddReductionFunctions(medianReductionFunction)\naddReductionFunctions(sumReductionFunction)\naddReductionFunctions(prodReductionFunction)\naddReductionFunctions(minReductionFunction)\naddReductionFunctions(maxReductionFunction)\naddReductionFunctions(varianceReductionFunction)\naddReductionFunctions(sampleVarianceReductionFunction)\naddReductionFunctions(stdevReductionFunction)\naddReductionFunctions(sampleStdevReductionFunction)\naddReductionFunctions(iqrReductionFunction)\naddReductionFunctions(spanReductionFunction)\naddReductionFunctions(skewnessReductionFunction)\naddReductionFunctions(sampleSkewnessReductionFunction)\naddReductionFunctions(eccessKurtosisReductionFunction)\naddReductionFunctions(kurtosisReductionFunction)\naddReductionFunctions(sampleExcessKurtosisReductionFunction)\naddReductionFunctions(sampleKurtosisReductionFunction)\naddReductionFunctions(rmsReductionFunction)\naddReductionFunctions(madReductionFunction)\naddReductionFunctions(medadReductionFunction)\naddReductionFunctions(giniCoefficientReductionFunction)\naddReductionFunctions(entropyReductionFunction)\n\nfunction addReductionFunctions(fns: ReductionFunctionDefinition<string>) {\n for (const [key, value] of Object.entries(fns)) {\n /* v8 ignore next 3 */\n if (reductionFunctionNormalExpressions[key]) {\n throw new Error(`Duplicate normal expression key found: ${key}`)\n }\n if (key.startsWith('vec:')) {\n const movingKey = key.replace('vec:', 'vec:moving-') as VectorMovingWindowKey<string>\n const centeredMovingKey = key.replace('vec:', 'vec:centered-moving-') as VectorCenteredMovingWindowKey<string>\n const runningKey = key.replace('vec:', 'vec:running-') as VectorRunningKey<string>\n const minLength = fns.minLength ?? 1\n assertNumber(minLength, undefined, { integer: true, finite: true, gte: 0 })\n reductionFunctionNormalExpressions[key] = createReductionNormalExpression(value as ReductionFunction, minLength)\n reductionFunctionNormalExpressions[movingKey] = createMovingNormalExpression(value as ReductionFunction, minLength)\n reductionFunctionNormalExpressions[centeredMovingKey] = createCenteredMovingNormalExpression(value as ReductionFunction, minLength, fns.padding ?? null)\n reductionFunctionNormalExpressions[runningKey] = createRunningNormalExpression(value as ReductionFunction, minLength)\n }\n }\n}\n\nfunction createReductionNormalExpression(\n reductionFunction: ReductionFunction,\n minLength: number,\n): BuiltinNormalExpression<number> {\n return {\n evaluate: ([vector], sourceCodeInfo) => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length < minLength) {\n throw new LitsError(`Vector length must be at least ${minLength}`, sourceCodeInfo)\n }\n\n try {\n return reductionFunction(vector)\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n }\n}\n\nfunction createMovingNormalExpression(\n reductionFunction: ReductionFunction,\n minLength: number,\n): BuiltinNormalExpression<number[]> {\n return {\n evaluate: ([vector, windowSize], sourceCodeInfo) => {\n assertVector(vector, sourceCodeInfo)\n assertNumber(windowSize, sourceCodeInfo, { integer: true, finite: true, gte: minLength, lte: vector.length })\n if (vector.length === 0) {\n return []\n }\n try {\n if (windowSize >= vector.length) {\n return [reductionFunction(vector)]\n }\n const result = []\n for (let i = 0; i < vector.length - windowSize + 1; i += 1) {\n result.push(reductionFunction(vector.slice(i, i + windowSize)))\n }\n return result\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n },\n paramCount: 2,\n }\n}\n\nfunction createCenteredMovingNormalExpression(\n reductionFunction: ReductionFunction,\n minLength: number,\n padding: number | null,\n): BuiltinNormalExpression<(number | null)[]> {\n return {\n evaluate: ([vector, windowSize, leftPadding, rightPadding], sourceCodeInfo) => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length < minLength) {\n throw new LitsError(`Vector length must be at least ${minLength}`, sourceCodeInfo)\n }\n\n assertNumber(windowSize, sourceCodeInfo, { integer: true, finite: true, gte: minLength, lte: vector.length })\n leftPadding = leftPadding ?? padding\n if (leftPadding !== null) {\n assertNumber(leftPadding, sourceCodeInfo, { finite: true })\n }\n rightPadding = rightPadding ?? padding\n if (rightPadding !== null) {\n assertNumber(rightPadding, sourceCodeInfo, { finite: true })\n }\n\n if (vector.length === 0) {\n return []\n }\n\n const halfWindowSize = Math.floor(windowSize / 2)\n const paddedVector = [\n ...Array<number | null>(halfWindowSize).fill(leftPadding),\n ...vector,\n ...Array<number | null>(halfWindowSize).fill(rightPadding),\n ]\n\n const start = typeof leftPadding === 'number' ? 0 : halfWindowSize\n const end = vector.length - (typeof rightPadding === 'number' ? 0 : (windowSize - halfWindowSize - 1))\n\n const result: (number | null)[] = [\n ...Array<null>(start).fill(null),\n ]\n\n try {\n for (let i = start; i < end; i += 1) {\n result.push(reductionFunction(paddedVector.slice(i, i + windowSize) as number[]))\n }\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n\n result.push(...Array<null>(vector.length - end).fill(null))\n return result\n },\n paramCount: { min: 2, max: 4 },\n }\n}\n\nfunction createRunningNormalExpression(\n reductionFunction: ReductionFunction,\n minLength: number,\n): BuiltinNormalExpression<(number | null)[]> {\n return {\n evaluate: ([vector], sourceCodeInfo) => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length < minLength) {\n throw new LitsError(`Vector length must be at least ${minLength}`, sourceCodeInfo)\n }\n\n if (vector.length === 0) {\n return []\n }\n\n try {\n const nullsCount = Math.max(minLength - 1, 0)\n const result: (number | null)[] = Array<null>(nullsCount).fill(null)\n\n for (let i = nullsCount; i < vector.length; i += 1) {\n result.push(reductionFunction(vector.slice(0, i + 1)))\n }\n return result\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n }\n}\n","import { LitsError } from '../../../../../errors'\nimport { assertNonEmptyVector, assertVector } from '../../../../../typeGuards/annotatedArrays'\nimport { assertFunctionLike } from '../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { bincount } from './bincount'\nimport { calcHistogram } from './histogram'\nimport { mode } from './mode'\nimport { hasOutliers, outliers } from './outliers'\nimport { calcPercentile } from './percentile'\nimport { quartiles } from './quartiles'\nimport { reductionFunctionNormalExpressions } from './reductionFunctions'\n\nexport const vectorNormalExpression: BuiltinNormalExpressions = {\n 'vec:monotonic?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return vector.every((val, i) => i === 0 || val >= vector[i - 1]!)\n || vector.every((val, i) => i === 0 || val <= vector[i - 1]!)\n },\n paramCount: 1,\n },\n 'vec:strictly-monotonic?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return vector.every((val, i) => i === 0 || val > vector[i - 1]!)\n || vector.every((val, i) => i === 0 || val < vector[i - 1]!)\n },\n paramCount: 1,\n },\n 'vec:increasing?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return vector.every((val, i) => i === 0 || val >= vector[i - 1]!)\n },\n paramCount: 1,\n },\n 'vec:decreasing?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return vector.every((val, i) => i === 0 || val <= vector[i - 1]!)\n },\n paramCount: 1,\n },\n 'vec:strictly-increasing?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return vector.every((val, i) => i === 0 || val > vector[i - 1]!)\n },\n paramCount: 1,\n },\n 'vec:strictly-decreasing?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return vector.every((val, i) => i === 0 || val < vector[i - 1]!)\n },\n paramCount: 1,\n },\n 'vec:mode': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n return mode(vector)\n },\n paramCount: 1,\n },\n 'vec:min-index': {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n\n return vector.reduce((acc, val, i) => (val < vector[acc]! ? i : acc), 0)\n },\n paramCount: 1,\n },\n 'vec:max-index': {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n\n return vector.reduce((acc, val, i) => (val > vector[acc]! ? i : acc), 0)\n },\n paramCount: 1,\n },\n 'vec:sort-indices': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n return [...vector.keys()].sort((a, b) => vector[a]! - vector[b]!)\n },\n paramCount: 1,\n },\n 'vec:count-values': {\n evaluate: ([vector], sourceCodeInfo): [number, number][] => {\n assertVector(vector, sourceCodeInfo)\n\n const frequencyMap = new Map<number, number>()\n for (const value of vector) {\n frequencyMap.set(value, (frequencyMap.get(value) || 0) + 1)\n }\n return [...frequencyMap.entries()].sort((a, b) => {\n // First compare by count (descending)\n const countDiff = b[1] - a[1]\n if (countDiff !== 0)\n return countDiff\n // If counts are equal, sort by value (ascending)\n return a[0] - b[0]\n })\n },\n paramCount: 1,\n },\n 'vec:linspace': {\n evaluate: ([start, end, numPoints], sourceCodeInfo): number[] => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(end, sourceCodeInfo, { finite: true })\n assertNumber(numPoints, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (numPoints === 0) {\n return []\n }\n if (numPoints === 1) {\n return [start]\n }\n const step = (end - start) / (numPoints - 1)\n return Array.from({ length: numPoints }, (_, i) => start + i * step)\n },\n paramCount: 3,\n },\n 'vec:ones': {\n evaluate: ([length], sourceCodeInfo): number[] => {\n assertNumber(length, sourceCodeInfo, { integer: true, nonNegative: true })\n return Array.from({ length }, () => 1)\n },\n paramCount: 1,\n },\n 'vec:zeros': {\n evaluate: ([length], sourceCodeInfo): number[] => {\n assertNumber(length, sourceCodeInfo, { integer: true, nonNegative: true })\n return Array.from({ length }, () => 0)\n },\n paramCount: 1,\n },\n 'vec:fill': {\n evaluate: ([length, value], sourceCodeInfo): number[] => {\n assertNumber(length, sourceCodeInfo, { integer: true, nonNegative: true })\n return Array.from({ length }, () => value) as number[]\n },\n paramCount: 2,\n },\n 'vec:generate': {\n evaluate: ([length, generator], sourceCodeInfo, contextStack, { executeFunction }): number[] => {\n assertNumber(length, sourceCodeInfo, { integer: true, nonNegative: true })\n assertFunctionLike(generator, sourceCodeInfo)\n\n return Array.from({ length }, (_, i) => {\n const value = executeFunction(generator, [i], contextStack, sourceCodeInfo)\n assertNumber(value, sourceCodeInfo, { finite: true })\n return value\n })\n },\n paramCount: 2,\n },\n 'vec:cumsum': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n return vector.reduce((acc, val) => {\n const last = acc[acc.length - 1] ?? 0\n acc.push(last + val)\n return acc\n }, [] as number[])\n },\n paramCount: 1,\n },\n 'vec:cumprod': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n return vector.reduce((acc, val) => {\n const last = acc[acc.length - 1] ?? 1\n acc.push(last * val)\n return acc\n }, [] as number[])\n },\n paramCount: 1,\n },\n 'vec:quartiles': {\n evaluate: ([vector], sourceCodeInfo): [number, number, number] => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length < 4) {\n throw new LitsError('Quartiles require at least four values', sourceCodeInfo)\n }\n return quartiles(vector)\n },\n paramCount: 1,\n },\n 'vec:percentile': {\n evaluate: ([vector, percentile], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n assertNumber(percentile, sourceCodeInfo, { finite: true, nonNegative: true, lte: 100 })\n return calcPercentile(vector, percentile)\n },\n paramCount: 2,\n },\n 'vec:quantile': {\n evaluate: ([vector, quantile], sourceCodeInfo): number => {\n assertVector(vector, sourceCodeInfo)\n assertNumber(quantile, sourceCodeInfo, { finite: true, nonNegative: true, lte: 1 })\n return calcPercentile(vector, quantile * 100)\n },\n paramCount: 2,\n },\n 'vec:histogram': {\n evaluate: ([vector, bins], sourceCodeInfo): [number, number, number][] => {\n assertVector(vector, sourceCodeInfo)\n assertNumber(bins, sourceCodeInfo, { integer: true, positive: true })\n\n return calcHistogram(vector, bins)\n },\n paramCount: 2,\n },\n 'vec:ecdf': {\n evaluate: ([vector, value], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n assertNumber(value, sourceCodeInfo, { finite: true })\n\n const sorted = [...vector].sort((a, b) => a - b)\n const index = sorted.findIndex(val => val > value)\n\n return index === -1 ? 1 : index / sorted.length\n },\n paramCount: 2,\n },\n 'vec:outliers?': {\n evaluate: ([vector], sourceCodeInfo): boolean => {\n assertVector(vector, sourceCodeInfo)\n return hasOutliers(vector)\n },\n paramCount: 1,\n },\n 'vec:outliers': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n return outliers(vector)\n },\n paramCount: 1,\n },\n 'vec:bincount': {\n evaluate: (params, sourceCodeInfo): number[] => {\n const vector = params[0]\n assertVector(vector, sourceCodeInfo)\n vector.forEach(val => assertNumber(val, sourceCodeInfo, { finite: true, integer: true, nonNegative: true }))\n\n const minSize = params[1] ?? 0\n assertNumber(minSize, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const weights = params[2] ?? undefined\n if (weights !== undefined) {\n assertVector(weights, sourceCodeInfo)\n if (weights.length !== vector.length) {\n throw new LitsError('Weights vector must be the same length as the input vector', sourceCodeInfo)\n }\n weights.forEach(val => assertNumber(val, sourceCodeInfo, { finite: true }))\n }\n\n return bincount(vector, minSize, weights)\n },\n paramCount: { min: 1, max: 3 },\n },\n 'vec:winsorize': {\n evaluate: ([vector, lowerQuantile, upperQuantile], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n assertNumber(lowerQuantile, sourceCodeInfo, { finite: true, gte: 0, lte: 1 })\n upperQuantile ??= lowerQuantile > 0.5 ? 1 : (1 - lowerQuantile)\n assertNumber(upperQuantile, sourceCodeInfo, { finite: true, gte: lowerQuantile, lte: 1 })\n\n if (vector.length === 0)\n return []\n\n const sorted = [...vector].sort((a, b) => a - b)\n\n const lowerIndex = Math.max(0, Math.floor(lowerQuantile * vector.length))\n const upperIndex = Math.min(vector.length - 1, Math.max(0, Math.floor(upperQuantile * vector.length) - 1))\n\n const lowerBound = sorted[lowerIndex]!\n const upperBound = sorted[upperIndex]!\n\n return vector.map(val => Math.max(lowerBound, Math.min(val, upperBound)))\n },\n paramCount: { min: 2, max: 3 },\n },\n 'vec:mse': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n return vectorA.reduce((acc, val, i) => acc + (val - vectorB[i]!) ** 2, 0) / vectorA.length\n },\n paramCount: 2,\n },\n 'vec:rmse': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n return Math.sqrt(vectorA.reduce((acc, val, i) => acc + (val - vectorB[i]!) ** 2, 0) / vectorA.length)\n },\n paramCount: 2,\n },\n 'vec:mae': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n return vectorA.reduce((acc, val, i) => acc + Math.abs(val - vectorB[i]!), 0) / vectorA.length\n },\n paramCount: 2,\n },\n 'vec:smape': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n return vectorA.reduce((acc, val, i) => {\n const diff = Math.abs(val - vectorB[i]!)\n const denom = (Math.abs(val) + Math.abs(vectorB[i]!)) / 2\n return acc + (denom === 0 ? 0 : diff / denom)\n }, 0) / vectorA.length\n },\n paramCount: 2,\n },\n\n}\n\naddReductionFunctions(reductionFunctionNormalExpressions)\n\nfunction addReductionFunctions(sequences: BuiltinNormalExpressions) {\n for (const [key, value] of Object.entries(sequences)) {\n /* v8 ignore next 3 */\n if (vectorNormalExpression[key]) {\n throw new Error(`Duplicate normal expression key found: ${key}`)\n }\n vectorNormalExpression[key] = value\n }\n}\n","import { approxZero } from '../../../../../../utils'\n\n/**\n * Performs Gauss-Jordan elimination on a matrix, transforming it to reduced row echelon form\n *\n * @param matrix - The input matrix\n * @returns A tuple containing the reduced row echelon form matrix and the rank\n */\nexport function gaussJordanElimination(matrix: number[][]): [number[][], number] {\n // Create a copy of the matrix to avoid modifying the original\n const m = matrix.map(row => [...row])\n const rows = m.length\n const cols = m[0]!.length\n\n let rank = 0\n let rowsProcessed = 0\n\n // Row reduction to reduced row echelon form\n for (let col = 0; col < cols; col++) {\n // Find the pivot\n let pivotRow = -1\n\n for (let row = rowsProcessed; row < rows; row++) {\n if (!approxZero(m[row]![col]!)) {\n pivotRow = row\n break\n }\n }\n\n if (pivotRow === -1)\n continue // No pivot in this column\n\n // Increase rank\n rank += 1\n\n // Swap rows\n if (pivotRow !== rowsProcessed) {\n [m[pivotRow], m[rowsProcessed]] = [m[rowsProcessed]!, m[pivotRow]!]\n }\n\n // Get the pivot value\n const pivotValue = m[rowsProcessed]![col]!\n\n // Normalize the pivot row (always, for RREF)\n for (let j = col; j < cols; j++) {\n m[rowsProcessed]![j]! /= pivotValue\n }\n\n // Eliminate above and below (full Gauss-Jordan)\n for (let row = 0; row < rows; row++) {\n if (row !== rowsProcessed && !approxZero(m[row]![col]!)) {\n const factor = m[row]![col]!\n for (let j = col; j < cols; j++) {\n m[row]![j]! -= factor * m[rowsProcessed]![j]!\n }\n }\n }\n\n rowsProcessed++\n if (rowsProcessed === rows)\n break\n }\n\n return [m, rank]\n}\n","import { approxZero } from '../../../../../../utils'\nimport { gaussJordanElimination } from './gaussJordanElimination'\n\n/**\n * Solves a system of linear equations Ax = b\n *\n * @param A - The coefficient matrix\n * @param b - The constant vector\n * @returns The solution vector x, or null if no unique solution exists\n */\nexport function solve(A: number[][], b: number[]): number[] | null {\n const n = A.length\n\n // Create augmented matrix [A|b]\n const augmented = A.map((row, i) => [...row, b[i]!])\n\n // Convert to row echelon form using your existing function\n const [echelon] = gaussJordanElimination(augmented)\n\n // Check if the system has a unique solution\n for (let i = 0; i < n; i += 1) {\n if (approxZero(echelon[i]![i]!)) {\n return null // No unique solution\n }\n }\n\n // Back substitution\n const x = Array.from({ length: n }, () => 0)\n for (let i = n - 1; i >= 0; i--) {\n let sum = 0\n for (let j = i + 1; j < n; j++) {\n sum += echelon[i]![j]! * x[j]!\n }\n x[i] = (echelon[i]![n]! - sum) / echelon[i]![i]!\n }\n\n return x\n}\n","import { approxEqual, approxZero } from '../../../../../../utils'\n\nexport function areVectorsCollinear(vectorA: number[], vectorB: number[]): boolean {\n // Check if either vector is zero\n const isZeroVector = (vec: number[]): boolean =>\n vec.every(component => approxZero(component))\n\n if (isZeroVector(vectorA) || isZeroVector(vectorB)) {\n return true // Zero vector is technically collinear to all vectors\n }\n\n // Find the first non-zero component in vectorA\n let index = 0\n while (index < vectorA.length && approxZero(vectorA[index]!)) {\n index++\n }\n\n // Calculate the scale factor\n const ratio = vectorB[index]! / vectorA[index]!\n\n // Check if all other components maintain the same ratio\n for (let i = 0; i < vectorA.length; i++) {\n // Skip components where both vectors have (near) zero values\n if (approxZero(vectorA[i]!) && approxZero(vectorB[i]!))\n continue\n\n // If vectorA component is near zero but vectorB is not, vectors are not collinear\n if (approxZero(vectorA[i]!))\n return false\n\n // Check if the ratio is consistent\n if (!approxEqual(vectorB[i]! / vectorA[i]!, ratio)) {\n return false\n }\n }\n\n return true\n}\n\nexport function areVectorsParallel(vectorA: number[], vectorB: number[]): boolean {\n if (!areVectorsCollinear(vectorA, vectorB)) {\n return false\n }\n\n // Then verify they point in the same direction\n // Find first non-zero component in both vectors\n for (let i = 0; i < vectorA.length; i++) {\n if (!approxZero(vectorA[i]!) && !approxZero(vectorB[i]!)) {\n return Math.sign(vectorA[i]!) === Math.sign(vectorB[i]!)\n }\n }\n\n // If we get here, one of the vectors must be zero\n return true\n}\n","import { approxZero } from '../../../../../../utils'\n\nexport function isZeroVector(vector: number[]): boolean {\n return vector.every(component => approxZero(component))\n}\n","import { calcMean } from '../../vector/calcMean'\n\nexport function pearsonCorr(vectorA: number[], vectorB: number[]): number {\n const meanA = calcMean(vectorA)\n const meanB = calcMean(vectorB)\n\n let sumNumerator = 0\n let sumSquareA = 0\n let sumSquareB = 0\n\n for (let i = 0; i < vectorA.length; i++) {\n const diffA = vectorA[i]! - meanA\n const diffB = vectorB[i]! - meanB\n\n sumNumerator += diffA * diffB\n sumSquareA += diffA * diffA\n sumSquareB += diffB * diffB\n }\n\n // Check if either vector has zero variance\n if (sumSquareA === 0 || sumSquareB === 0) {\n throw new Error('Cannot calculate Pearson correlation coefficient: one of the vectors has zero variance.')\n }\n\n return sumNumerator / (Math.sqrt(sumSquareA) * Math.sqrt(sumSquareB))\n}\n","export function calcFractionalRanks(vector: number[]): number[] {\n // Create array of indices and sort by values\n const indices = [...vector.keys()].sort((a, b) => vector[a]! - vector[b]!)\n\n // Create ranks array (same size as input vector)\n const ranks: number[] = Array.from<number>({ length: vector.length }).fill(0)\n\n // Assign ranks, handling ties properly\n let currentRank = 1\n let i = 0\n while (i < indices.length) {\n const value = vector[indices[i]!]\n let j = i\n\n // Find all indices with the same value\n while (j < indices.length && vector[indices[j]!] === value) {\n j++\n }\n\n // Calculate average rank for ties\n const averageRank = currentRank + (j - i - 1) / 2\n\n // Assign average rank to all tied elements\n for (let k = i; k < j; k++) {\n ranks[indices[k]!] = averageRank\n }\n\n // Update current rank and index\n currentRank += j - i\n i = j\n }\n\n return ranks\n}\n","/**\n * Calculates Kendall's Tau-b rank correlation coefficient between two vectors\n * This implementation handles ties and uses an epsilon value for floating-point comparisons\n *\n * @param vectorA - First vector of numbers\n * @param vectorB - Second vector of numbers\n * @param epsilon - Threshold for considering two values as equal (default: 1e-10)\n * @returns The Kendall's Tau-b correlation coefficient\n */\nexport function kendallTau(vectorA: number[], vectorB: number[], epsilon: number = 1e-10): number {\n let concordant = 0\n let discordant = 0\n let tiesInA = 0\n let tiesInB = 0\n\n // Compare all pairs\n for (let i = 0; i < vectorA.length; i++) {\n for (let j = i + 1; j < vectorA.length; j++) {\n // Calculate differences\n const diffA = vectorA[i]! - vectorA[j]!\n const diffB = vectorB[i]! - vectorB[j]!\n\n // Check for ties using epsilon\n const isTieA = Math.abs(diffA) < epsilon\n const isTieB = Math.abs(diffB) < epsilon\n\n if (isTieA && isTieB) {\n // Tied in both vectors\n continue\n }\n else if (isTieA) {\n // Tied in vector A only\n tiesInA += 1\n }\n else if (isTieB) {\n // Tied in vector B only\n tiesInB += 1\n }\n else if (diffA * diffB > 0) {\n // Concordant pair\n concordant += 1\n }\n else {\n // Discordant pair\n discordant += 1\n }\n }\n }\n\n const n1 = concordant + discordant + tiesInA\n const n2 = concordant + discordant + tiesInB\n\n // Handle edge cases to avoid division by zero\n if (n1 === 0 || n2 === 0) {\n throw new Error('Not enough data to calculate Kendall\\'s Tau')\n }\n\n // Kendall's Tau-b formula\n return (concordant - discordant) / Math.sqrt(n1 * n2)\n}\n","import { calcMean } from '../../vector/calcMean'\n\n/**\n * Calculate covariance between two segments\n */\nexport function calcCovariance(segmentA: number[], segmentB: number[]): number {\n const meanA = calcMean(segmentA)\n const meanB = calcMean(segmentB)\n\n let sum = 0\n for (let i = 0; i < segmentA.length; i++) {\n sum += (segmentA[i]! - meanA) * (segmentB[i]! - meanB)\n }\n\n return sum / segmentA.length\n}\n","import { calcMean } from '../../vector/calcMean'\nimport { calcStdDev } from '../../vector/calcStdDev'\nimport { calcCovariance } from './covariance'\n\n/**\n * Calculate Pearson correlation between two segments\n */\nexport function calcCorrelation(segmentA: number[], segmentB: number[]): number {\n const meanA = calcMean(segmentA)\n const meanB = calcMean(segmentB)\n\n const stdA = calcStdDev(segmentA, meanA)\n const stdB = calcStdDev(segmentB, meanB)\n\n // Handle zero variance\n if (stdA === 0 || stdB === 0) {\n // If both have zero variance and are the same constant, they're perfectly correlated\n if (stdA === 0 && stdB === 0 && meanA === meanB) {\n return 1\n }\n // Otherwise, no meaningful correlation can be established\n return 0\n }\n\n const covariance = calcCovariance(segmentA, segmentB)\n return covariance / (stdA * stdB)\n}\n\n/**\n * Extract overlapping segments from two vectors based on lag\n */\nexport function extractOverlappingSegments(\n vectorA: number[],\n vectorB: number[],\n lag: number,\n): [number[], number[]] {\n const absLag = Math.abs(lag)\n const overlapLength = vectorA.length - absLag\n\n let segmentA = []\n let segmentB = []\n\n if (lag >= 0) {\n segmentA = vectorA.slice(0, overlapLength)\n segmentB = vectorB.slice(lag, lag + overlapLength)\n }\n else {\n segmentA = vectorA.slice(absLag)\n segmentB = vectorB.slice(0, overlapLength)\n }\n\n return [segmentA, segmentB]\n}\n","import { LitsError } from '../../../../../errors'\nimport { assertMatrix, assertNonEmptyVector, assertSquareMatrix, assertVector } from '../../../../../typeGuards/annotatedArrays'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { calcMean } from '../vector/calcMean'\nimport { calcMedad } from '../vector/calcMedad'\nimport { calcMedian } from '../vector/calcMedian'\nimport { calcStdDev } from '../vector/calcStdDev'\nimport { gaussJordanElimination } from './helpers/gaussJordanElimination'\nimport { solve } from './helpers/solve'\nimport { areVectorsCollinear, areVectorsParallel } from './helpers/collinear'\nimport { isZeroVector } from './helpers/isZeroVector'\nimport { pearsonCorr } from './helpers/pearsonCorr'\nimport { calcFractionalRanks } from './helpers/calcFractionalRanks'\nimport { kendallTau } from './helpers/kendallTau'\nimport { calcCovariance } from './helpers/covariance'\nimport { calcCorrelation, extractOverlappingSegments } from './helpers/corrleation'\n\nexport const linearAlgebraNormalExpression: BuiltinNormalExpressions = {\n 'lin:dot': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return vectorA.reduce((acc, val, i) => acc + val * vectorB[i]!, 0)\n },\n paramCount: 2,\n },\n 'lin:cross': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number[] => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== 3 || vectorB.length !== 3) {\n throw new LitsError('Cross product is only defined for 3D vectors', sourceCodeInfo)\n }\n\n return [\n vectorA[1]! * vectorB[2]! - vectorA[2]! * vectorB[1]!,\n vectorA[2]! * vectorB[0]! - vectorA[0]! * vectorB[2]!,\n vectorA[0]! * vectorB[1]! - vectorA[1]! * vectorB[0]!,\n ] as number[]\n },\n paramCount: 2,\n },\n 'lin:normalize-minmax': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n const min = vector.reduce((acc, val) => (val < acc ? val : acc), vector[0]!)\n const max = vector.reduce((acc, val) => (val > acc ? val : acc), vector[0]!)\n\n if (min === max) {\n return vector.map(() => 0)\n }\n\n return vector.map(val => (val - min) / (max - min))\n },\n paramCount: 1,\n },\n 'lin:normalize-robust': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n if (vector.length === 0) {\n return []\n }\n\n const median = calcMedian(vector)\n const medad = calcMedad(vector)\n\n if (medad === 0) {\n return vector.map(val => val - median)\n }\n return vector.map(val => (val - median) / medad)\n },\n paramCount: 1,\n },\n 'lin:normalize-zscore': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n const mean = calcMean(vector)\n const stdDev = calcStdDev(vector)\n\n if (stdDev === 0) {\n return vector.map(() => 0)\n }\n\n return vector.map(val => (val - mean) / stdDev)\n },\n paramCount: 1,\n },\n 'lin:normalize-l1': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length === 0) {\n return []\n }\n const norm = vector.reduce((acc, val) => acc + Math.abs(val), 0)\n\n if (norm === 0) {\n return vector.map(() => 0)\n }\n\n return vector.map(val => val / norm)\n },\n paramCount: 1,\n },\n 'lin:normalize-l2': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length === 0) {\n return []\n }\n const norm = Math.sqrt(vector.reduce((acc, val) => acc + val ** 2, 0))\n\n if (norm === 0) {\n return vector.map(() => 0)\n }\n\n return vector.map(val => val / norm)\n },\n paramCount: 1,\n },\n 'lin:normalize-log': {\n evaluate: ([vector], sourceCodeInfo): number[] => {\n assertVector(vector, sourceCodeInfo)\n\n if (vector.length === 0) {\n return []\n }\n\n const min = Math.min(...vector)\n\n if (min <= 0) {\n throw new LitsError('Log normalization requires all values to be positive', sourceCodeInfo)\n }\n\n return vector.map(val => Math.log(val / min))\n },\n paramCount: 1,\n },\n 'lin:angle': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (isZeroVector(vectorA) || isZeroVector(vectorB)) {\n throw new LitsError('Cannot calculate angle with zero-length vector', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n const dotProduct = vectorA.reduce((acc, val, i) => acc + val * vectorB[i]!, 0)\n const magnitudeA = Math.sqrt(vectorA.reduce((acc, val) => acc + val * val, 0))\n const magnitudeB = Math.sqrt(vectorB.reduce((acc, val) => acc + val * val, 0))\n\n return Math.acos(dotProduct / (magnitudeA * magnitudeB))\n },\n paramCount: 2,\n },\n 'lin:projection': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number[] => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (isZeroVector(vectorB)) {\n throw new LitsError('Cannot project onto zero-length vector', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n const dotProduct = vectorA.reduce((acc, val, i) => acc + val * vectorB[i]!, 0)\n const magnitudeB = Math.sqrt(vectorB.reduce((acc, val) => acc + val * val, 0))\n\n return vectorB.map(val => (dotProduct / (magnitudeB ** 2)) * val)\n },\n paramCount: 2,\n },\n 'lin:orthogonal?': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): boolean => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n const dotProduct = vectorA.reduce((acc, val, i) => acc + val * vectorB[i]!, 0)\n return dotProduct === 0\n },\n paramCount: 2,\n },\n 'lin:parallel?': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): boolean => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return areVectorsParallel(vectorA, vectorB)\n },\n paramCount: 2,\n },\n 'lin:collinear?': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): boolean => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return areVectorsCollinear(vectorA, vectorB)\n },\n paramCount: 2,\n },\n 'lin:cosine-similarity': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n if (isZeroVector(vectorA) || isZeroVector(vectorB)) {\n throw new LitsError('Cannot calculate cosine similarity with zero-length vector', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n const dotProduct = vectorA.reduce((acc, val, i) => acc + val * vectorB[i]!, 0)\n const magnitudeA = Math.sqrt(vectorA.reduce((acc, val) => acc + val * val, 0))\n const magnitudeB = Math.sqrt(vectorB.reduce((acc, val) => acc + val * val, 0))\n\n return dotProduct / (magnitudeA * magnitudeB)\n },\n paramCount: 2,\n },\n 'lin:euclidean-distance': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return Math.sqrt(vectorA.reduce((acc, val, i) => acc + (val - vectorB[i]!) ** 2, 0))\n },\n aliases: ['lin:distance', 'lin:l2-distance'],\n paramCount: 2,\n },\n 'lin:euclidean-norm': {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n\n return Math.sqrt(vector.reduce((acc, val) => acc + val * val, 0))\n },\n paramCount: 1,\n aliases: ['lin:l2-norm', 'lin:magnitude'],\n },\n 'lin:manhattan-distance': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return vectorA.reduce((acc, val, i) => acc + Math.abs(val - vectorB[i]!), 0)\n },\n paramCount: 2,\n aliases: ['lin:l1-distance', 'lin:cityblock-distance'],\n },\n 'lin:manhattan-norm': {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n\n return vector.reduce((acc, val) => acc + Math.abs(val), 0)\n },\n paramCount: 1,\n aliases: ['lin:l1-norm', 'lin:cityblock-norm'],\n },\n 'lin:hamming-distance': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return vectorA.reduce((acc, val, i) => acc + (val !== vectorB[i]! ? 1 : 0), 0)\n },\n paramCount: 2,\n },\n 'lin:hamming-norm': {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n return vector.reduce((acc, val) => acc + (val !== 0 ? 1 : 0), 0)\n },\n paramCount: 1,\n },\n 'lin:chebyshev-distance': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return Math.max(...vectorA.map((val, i) => Math.abs(val - vectorB[i]!)))\n },\n paramCount: 2,\n },\n 'lin:chebyshev-norm': {\n evaluate: ([vector], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n return Math.max(...vector.map(val => Math.abs(val)))\n },\n paramCount: 1,\n },\n 'lin:minkowski-distance': {\n evaluate: ([vectorA, vectorB, p], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n assertNumber(p, sourceCodeInfo, { finite: true, positive: true })\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n return vectorA.reduce((acc, val, i) => acc + Math.abs(val - vectorB[i]!) ** p, 0) ** (1 / p)\n },\n paramCount: 3,\n },\n 'lin:minkowski-norm': {\n evaluate: ([vector, p], sourceCodeInfo): number => {\n assertNonEmptyVector(vector, sourceCodeInfo)\n assertNumber(p, sourceCodeInfo, { finite: true, positive: true })\n return vector.reduce((acc, val) => acc + Math.abs(val) ** p, 0) ** (1 / p)\n },\n paramCount: 2,\n },\n // TODO consider for Set namespace. E.g. 'set:jaccard-distance'\n // 'lin:jaccard-distance': {\n // evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n // assertNonEmptyVector(vectorA, sourceCodeInfo)\n // assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n // const intersection = vectorA.filter(val => vectorB.includes(val)).length\n // const union = new Set([...vectorA, ...vectorB]).size\n\n // return 1 - intersection / union\n // },\n // paramCount: 2,\n // },\n // TODO consider for Set namespace. E.g. 'set:dice-coefficient'\n // 'lin:dice-coefficient': {\n // evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n // assertNonEmptyVector(vectorA, sourceCodeInfo)\n // assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n // const intersection = vectorA.filter(val => vectorB.includes(val)).length\n // return (2 * intersection) / (vectorA.length + vectorB.length)\n // },\n // paramCount: 2,\n // },\n // TODO consider for String namespace. E.g. 'str:levenshtein-distance'\n // 'lin:levenshtein-distance': {\n // evaluate: ([stringA, stringB], sourceCodeInfo): number => {\n // },\n // paramCount: 2,\n // },\n 'lin:cov': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertNonEmptyVector(vectorA, sourceCodeInfo)\n assertNonEmptyVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n if (vectorA.length === 1) {\n return 0\n }\n\n return calcCovariance(vectorA, vectorB)\n },\n paramCount: 2,\n },\n 'lin:corr': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length <= 1) {\n throw new LitsError('Vectors must have at least 2 elements for lin:corr', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n const meanA = calcMean(vectorA)\n const meanB = calcMean(vectorB)\n\n const numerator = vectorA.reduce((acc, val, i) => acc + (val - meanA) * (vectorB[i]! - meanB), 0)\n const denominator = Math.sqrt(\n vectorA.reduce((acc, val) => acc + (val - meanA) ** 2, 0) * vectorB.reduce((acc, val) => acc + (val - meanB) ** 2, 0),\n )\n\n return numerator / denominator\n },\n paramCount: 2,\n },\n 'lin:spearman-corr': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length <= 1) {\n throw new LitsError('Vectors must have at least 2 elements for lin:corr', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n const ranksA = calcFractionalRanks(vectorA)\n const ranksB = calcFractionalRanks(vectorB)\n\n try {\n return pearsonCorr(ranksA, ranksB)\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n },\n paramCount: 2,\n aliases: ['lin:spearman-rho'],\n },\n 'lin:pearson-corr': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length <= 1) {\n throw new LitsError('Vectors must have at least 2 elements for lin:pearson-corr', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n try {\n return pearsonCorr(vectorA, vectorB)\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n },\n paramCount: 2,\n },\n 'lin:kendall-tau': {\n evaluate: ([vectorA, vectorB], sourceCodeInfo): number => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length < 2) {\n throw new LitsError('Vectors must have at least 2 elements for lin:kendall-tau', sourceCodeInfo)\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new LitsError('Vectors must be of the same length', sourceCodeInfo)\n }\n\n try {\n return kendallTau(vectorA, vectorB)\n }\n catch (error) {\n throw new LitsError(error, sourceCodeInfo)\n }\n },\n paramCount: 2,\n },\n 'lin:autocorrelation': {\n evaluate: ([vector, lag], sourceCodeInfo): number => {\n assertVector(vector, sourceCodeInfo)\n if (vector.length < 2) {\n throw new LitsError('Vector must have at least 2 elements for lin:autocorrelation', sourceCodeInfo)\n }\n\n assertNumber(lag, sourceCodeInfo, {\n integer: true,\n lt: vector.length,\n gt: -vector.length,\n })\n\n // For lag 0, return 1 (a series is perfectly correlated with itself)\n if (lag === 0) {\n return 1\n }\n const absLag = Math.abs(lag)\n const mean = calcMean(vector)\n\n // Calculate the numerator (sum of products of deviations)\n let numerator = 0\n const n = vector.length\n\n // If lag is positive, correlate current with past values\n // If lag is negative, correlate current with future values (same calculation, different interpretation)\n for (let i = 0; i < n - absLag; i++) {\n const currentIndex = lag < 0 ? i + absLag : i\n const laggedIndex = lag < 0 ? i : i + absLag\n\n numerator += (vector[currentIndex]! - mean) * (vector[laggedIndex]! - mean)\n }\n\n // Calculate the denominator (sum of squared deviations)\n let denominator = 0\n for (let i = 0; i < n; i++) {\n denominator += (vector[i]! - mean) ** 2\n }\n\n // Handle edge case of zero variance\n if (denominator === 0) {\n return 0 // Conventional definition\n }\n\n // Return the autocorrelation coefficient\n return numerator / denominator\n },\n paramCount: 2,\n aliases: ['lin:acf'],\n },\n\n 'lin:cross-correlation': {\n evaluate: ([vectorA, vectorB, lag], sourceCodeInfo): number => {\n assertVector(vectorA, sourceCodeInfo)\n assertVector(vectorB, sourceCodeInfo)\n\n if (vectorA.length < 2) {\n throw new Error('Vectors must have at least 2 elements')\n }\n\n if (vectorA.length !== vectorB.length) {\n throw new Error('Vectors must be of the same length')\n }\n\n assertNumber(lag, sourceCodeInfo, {\n integer: true,\n lt: vectorA.length,\n gt: -vectorA.length,\n })\n\n // For lag 0 between identical vectors, return 1\n if (lag === 0\n && vectorA.length === vectorB.length\n && vectorA.every((v, i) => v === vectorB[i])) {\n return 1\n }\n\n const [segmentA, segmentB] = extractOverlappingSegments(vectorA, vectorB, lag)\n return calcCorrelation(segmentA, segmentB)\n },\n paramCount: 3,\n aliases: ['lin:ccf'],\n },\n 'lin:rref': {\n evaluate: ([matrix], sourceCodeInfo): number[][] => {\n assertMatrix(matrix, sourceCodeInfo)\n\n // Reduced Row Echelon Form (RREF)\n const [rref] = gaussJordanElimination(matrix)\n return rref\n },\n paramCount: 1,\n },\n 'lin:solve': {\n evaluate: ([matrix, vector], sourceCodeInfo): number[] | null => {\n assertSquareMatrix(matrix, sourceCodeInfo)\n assertVector(vector, sourceCodeInfo)\n if (matrix.length !== vector.length) {\n throw new LitsError(`The number of rows in the matrix must be equal to the length of the vector, but got ${matrix.length} and ${vector.length}`, sourceCodeInfo)\n }\n return solve(matrix, vector)\n },\n paramCount: 2,\n },\n}\n","import { approxZero } from '../../../../../../utils'\n\n/**\n * Calculates the determinant of a matrix using Gaussian Elimination\n * @param matrix A square matrix represented as a 2D array\n * @returns The determinant of the matrix\n */\nexport function determinant(matrix: number[][]): number {\n // First, make a deep copy of the matrix to avoid modifying the original\n const n = matrix.length\n const A: number[][] = []\n\n for (let i = 0; i < n; i++) {\n A[i] = [...matrix[i]!]\n }\n\n // Handle special cases for small matrices\n if (n === 1) {\n return A[0]![0]!\n }\n\n if (n === 2) {\n return A[0]![0]! * A[1]![1]! - A[0]![1]! * A[1]![0]!\n }\n\n // For larger matrices, use Gaussian elimination\n let sign = 1 // Track sign changes from row swaps\n\n // Perform Gaussian elimination to get an upper triangular matrix\n for (let i = 0; i < n - 1; i += 1) {\n // Find pivot (maximum element in current column)\n let maxRow = i\n\n for (let j = i + 1; j < n; j += 1) {\n if (Math.abs(A[j]![i]!) > Math.abs(A[maxRow]![i]!)) {\n maxRow = j\n }\n }\n\n // If the pivot is zero, the determinant is zero\n if (approxZero(A[maxRow]![i]!)) {\n return 0\n }\n\n // Swap rows if necessary\n if (maxRow !== i) {\n [A[i], A[maxRow]] = [A[maxRow]!, A[i]!] // ES6 array destructuring for swap\n sign = -sign // Each row swap changes the sign\n }\n\n // Eliminate entries below the pivot\n for (let j = i + 1; j < n; j += 1) {\n const factor = A[j]![i]! / A[i]![i]!\n\n // Subtract (factor * pivot row) from current row\n for (let k = i; k < n; k++) {\n A[j]![k]! -= factor * A[i]![k]!\n }\n }\n }\n\n // Calculate determinant as the product of diagonal elements\n let det = sign\n for (let i = 0; i < n; i++) {\n det *= A[i]![i]!\n }\n\n return det\n}\n","export function minor(matrix: number[][], row: number, col: number): number[][] {\n const n = matrix.length\n const result: number[][] = []\n\n for (let i = 0; i < n; i++) {\n if (i !== row) {\n const minorRow: number[] = []\n for (let j = 0; j < n; j++) {\n if (j !== col) {\n minorRow.push(matrix[i]![j]!)\n }\n }\n result.push(minorRow)\n }\n }\n\n return result\n}\n","import { determinant } from './determinant'\nimport { minor } from './minor'\n\nexport function adjugate(matrix: number[][]): number[][] {\n const n = matrix.length\n const adj: number[][] = []\n for (let i = 0; i < n; i++) {\n adj[i] = []\n for (let j = 0; j < n; j++) {\n const min = minor(matrix, j, i)\n const sign = (-1) ** (i + j)\n const cofactor = sign * determinant(min)\n adj[i]![j] = cofactor\n }\n }\n return adj\n}\n","/**\n * Creates a band matrix with specified lower and upper bandwidths\n *\n * @param n Size of the square matrix\n * @param lband Lower bandwidth (number of non-zero diagonals below main diagonal)\n * @param uband Upper bandwidth (number of non-zero diagonals above main diagonal)\n * @returns A 2D array representing the band matrix with 1s in the band and 0s elsewhere\n */\nexport function band(n: number, lband: number, uband: number): number[][] {\n // Create an n×n matrix filled with zeros\n const matrix: number[][] = Array.from({ length: n }, () => Array.from({ length: n }, () => 0))\n\n // Fill the band with 1s\n for (let i = 0; i < n; i++) {\n for (let j = Math.max(0, i - lband); j <= Math.min(n - 1, i + uband); j++) {\n matrix[i]![j] = 1\n }\n }\n\n return matrix\n}\n","import { determinant } from './determinant'\nimport { minor } from './minor'\n\nexport function cofactor(matrix: number[][]): number[][] {\n const n = matrix.length\n const cofactors: number[][] = []\n\n // Create a new matrix to store cofactors\n for (let i = 0; i < n; i++) {\n cofactors[i] = []\n for (let j = 0; j < n; j++) {\n // Get the minor by removing row i and column j\n const min = minor(matrix, i, j)\n const sign = (-1) ** (i + j)\n cofactors[i]![j] = sign * determinant(min)\n }\n }\n\n return cofactors\n}\n","/**\n * Calculate the inverse of a matrix using the adjugate method\n * @param matrix The input matrix\n * @returns The inverse matrix or null if the matrix is not invertible\n */\n\nimport { approxZero } from '../../../../../../utils'\nimport { adjugate } from './adjugate'\nimport { determinant } from './determinant'\n\nexport function inverse(matrix: number[][]): number[][] | null {\n const n = matrix.length\n\n // Special case for 1x1 matrix - handle it directly\n if (n === 1) {\n const element = matrix[0]![0]!\n if (approxZero(element)) {\n return null // Not invertible\n }\n return [[1 / element]]\n }\n\n // Calculate determinant\n const det = determinant(matrix)\n\n // Check if matrix is invertible\n if (approxZero(det)) {\n return null // Matrix is not invertible\n }\n\n // Get the adjugate matrix\n const adj = adjugate(matrix)\n\n // Calculate the inverse: inverse = adjugate / determinant\n const inverseMatrix: number[][] = []\n for (let i = 0; i < n; i++) {\n inverseMatrix[i] = []\n for (let j = 0; j < n; j++) {\n inverseMatrix[i]![j] = adj[i]![j]! / det\n }\n }\n\n return inverseMatrix\n}\n","/**\n * Checks if a matrix is banded with the given lower and upper bandwidth.\n * A matrix is banded if all non-zero elements are within 'lower' diagonals\n * below the main diagonal and 'upper' diagonals above the main diagonal.\n *\n * @param matrix - The matrix to check, represented as a 2D array of numbers\n * @param lower - Number of non-zero diagonals below the main diagonal\n * @param upper - Number of non-zero diagonals above the main diagonal\n * @returns true if the matrix is banded with the given parameters, false otherwise\n */\nexport function isBanded(matrix: number[][], lower: number, upper: number): boolean {\n const rows = matrix.length\n const cols = matrix[0]!.length\n\n // Check each element in the matrix\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < cols; j++) {\n // If we find a non-zero element outside the band, return false\n if (matrix[i]![j] !== 0 && (i - j > lower || j - i > upper)) {\n return false\n }\n }\n }\n\n // All elements outside the band are zero\n return true\n}\n","export function isSquare(matrix: number[][]): boolean {\n return matrix.length === matrix[0]!.length\n}\n","import { isSquare } from './isSquare'\n\n/**\n * Checks if a given matrix is diagonal.\n *\n * A matrix is considered diagonal if it is square (i.e., the number of rows equals the number of columns)\n * and all elements outside the main diagonal are zero.\n *\n * @param matrix - A two-dimensional array of numbers representing the matrix to check.\n * @returns `true` if the matrix is diagonal, otherwise `false`.\n */\nexport function isDiagonal(matrix: number[][]): boolean {\n if (!isSquare(matrix)) {\n return false\n }\n const rows = matrix.length\n\n for (let i = 0; i < rows; i += 1) {\n for (let j = 0; j < rows; j += 1) {\n if (i !== j && matrix[i]![j] !== 0) {\n return false\n }\n }\n }\n\n return true\n}\n","import { approxEqual, approxZero } from '../../../../../../utils'\nimport { isSquare } from './isSquare'\n\nexport function isIdentity(matrix: number[][]): boolean {\n if (!isSquare(matrix)) {\n return false\n }\n const n = matrix.length\n\n for (let i = 0; i < n; i++) {\n for (let j = 0; j < n; j++) {\n if (i === j) {\n if (!approxEqual(matrix[i]![j]!, 1)) {\n return false\n }\n }\n else {\n if (!approxZero(matrix[i]![j]!)) {\n return false\n }\n }\n }\n }\n\n return true\n}\n","/**\n * Performs cache-optimized matrix multiplication.\n * @param A The first input matrix (m x n)\n * @param B The second input matrix (n x p)\n * @returns The result matrix C (m x p) where C = A × B\n */\nexport function matrixMultiply(A: number[][], B: number[][]): number[][] {\n // Check if matrices can be multiplied\n if (A.length === 0 || B.length === 0 || A[0]!.length !== B.length) {\n throw new Error('Matrix dimensions do not match for multiplication')\n }\n\n const m = A.length // Number of rows in A\n const n = A[0]!.length // Number of columns in A / Number of rows in B\n const p = B[0]!.length // Number of columns in B\n\n // Initialize result matrix C with zeros\n const C: number[][] = (Array(m).fill(0) as number[]).map(() => Array(p).fill(0) as number[])\n\n // Perform multiplication with cache-optimized loop order (i-k-j)\n for (let i = 0; i < m; i++) {\n for (let k = 0; k < n; k++) {\n const aik = A[i]![k]! // Cache this value to avoid repeated lookups\n for (let j = 0; j < p; j++) {\n C[i]![j]! += aik * B[k]![j]!\n }\n }\n }\n\n return C\n}\n","import { transpose } from '../../grid/transpose'\nimport { matrixMultiply } from './matrixMultiply'\nimport { isIdentity } from './isIdentity'\nimport { isSquare } from './isSquare'\n\nexport function isOrthogonal(matrix: number[][]): boolean {\n if (!isSquare(matrix)) {\n return false\n }\n\n // Calculate matrix transpose\n const transposed = transpose(matrix)\n\n // Check if matrix * transpose = Identity\n const product = matrixMultiply(matrix, transposed)\n\n // Check if the product is an identity matrix\n return isIdentity(product)\n}\n","import { isSquare } from './isSquare'\n\n/**\n * Checks if a given matrix is symmetric.\n * A matrix is symmetric if it is square and its transpose is equal to itself.\n *\n * @param matrix - A 2D array representing the matrix.\n * @returns `true` if the matrix is symmetric, otherwise `false`.\n */\nexport function isSymetric(matrix: number[][]): boolean {\n const rows = matrix.length\n\n // Check if the matrix is square\n if (!isSquare(matrix)) {\n return false\n }\n\n // Check symmetry\n for (let i = 0; i < rows; i += 1) {\n for (let j = 0; j < i; j += 1) {\n if (matrix[i]![j]! !== matrix[j]![i]!) {\n return false\n }\n }\n }\n\n return true\n}\n","import { isSquare } from './isSquare'\n\n/**\n * Determines whether a given matrix is triangular.\n *\n * A triangular matrix is a square matrix where all elements\n * below or above the main diagonal are zero. This function\n * checks if the matrix is square and symmetric.\n *\n * @param matrix - A two-dimensional array of numbers representing the matrix.\n * @returns `true` if the matrix is triangular, otherwise `false`.\n */\nexport function isTriangular(matrix: number[][]): boolean {\n if (!isSquare(matrix)) {\n return false\n }\n\n const rows = matrix.length\n\n let isUpperTriangular = true\n let isLowerTriangular = true\n\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < rows; j++) {\n if (i > j && matrix[i]![j] !== 0) {\n isUpperTriangular = false\n if (!isLowerTriangular) {\n return false\n }\n }\n if (i < j && matrix[i]![j] !== 0) {\n isLowerTriangular = false\n }\n }\n }\n\n return isUpperTriangular || isLowerTriangular\n}\n\nexport function isTriangularUpper(matrix: number[][]): boolean {\n if (!isSquare(matrix)) {\n return false\n }\n const rows = matrix.length\n\n for (let i = 0; i < rows; i++) {\n for (let j = 0; j < i; j++) {\n if (matrix[i]![j] !== 0) {\n return false\n }\n }\n }\n\n return true\n}\n\nexport function isTriangularLower(matrix: number[][]): boolean {\n if (!isSquare(matrix)) {\n return false\n }\n const rows = matrix.length\n\n // Check if the matrix is square\n if (!matrix.every(row => row.length === rows)) {\n return false\n }\n\n for (let i = 0; i < rows; i++) {\n for (let j = i + 1; j < rows; j++) {\n if (matrix[i]![j] !== 0) {\n return false\n }\n }\n }\n\n return true\n}\n","// Assuming a matrix is represented as a 2D array\nexport function norm1(matrix: number[][]): number {\n const numRows = matrix.length\n const numCols = matrix[0]!.length\n\n let maxColSum = 0\n\n // Iterate through each column\n for (let j = 0; j < numCols; j += 1) {\n let colSum = 0\n\n // Sum the absolute values of all elements in this column\n for (let i = 0; i < numRows; i += 1) {\n colSum += Math.abs(matrix[i]![j]!)\n }\n\n // Update the maximum column sum if necessary\n maxColSum = Math.max(maxColSum, colSum)\n }\n\n return maxColSum\n}\n","/**\n * Calculates the trace of a square matrix.\n * The trace is defined as the sum of the elements on the main diagonal.\n *\n * @param matrix - A 2D array representing a square matrix.\n * @returns The trace of the matrix.\n */\nexport function trace(matrix: number[][]): number {\n return matrix.reduce((sum, row, i) => sum + row[i]!, 0)\n}\n","import { LitsError } from '../../../../../errors'\nimport { assertMatrix, assertSquareMatrix, assertVector, isSquareMatrix } from '../../../../../typeGuards/annotatedArrays'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport { approxZero } from '../../../../../utils'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { gaussJordanElimination } from '../linearAlgebra/helpers/gaussJordanElimination'\nimport { adjugate } from './helpers/adjugate'\nimport { band } from './helpers/band'\nimport { cofactor } from './helpers/cofactor'\nimport { determinant } from './helpers/determinant'\nimport { inverse } from './helpers/inverse'\nimport { isBanded } from './helpers/isBanded'\nimport { isDiagonal } from './helpers/isDiagonal'\nimport { isIdentity } from './helpers/isIdentity'\nimport { isOrthogonal } from './helpers/isOrthogonal'\nimport { isSquare } from './helpers/isSquare'\nimport { isSymetric } from './helpers/isSymetric'\nimport { isTriangular, isTriangularLower, isTriangularUpper } from './helpers/isTriangular'\nimport { matrixMultiply } from './helpers/matrixMultiply'\nimport { minor } from './helpers/minor'\nimport { norm1 } from './helpers/norm1'\nimport { trace } from './helpers/trace'\n\nexport const matrixNormalExpression: BuiltinNormalExpressions = {\n 'mat:mul': {\n evaluate: ([matrix1, matrix2], sourceCodeInfo): number[][] => {\n assertMatrix(matrix1, sourceCodeInfo)\n assertMatrix(matrix2, sourceCodeInfo)\n try {\n return matrixMultiply(matrix1, matrix2)\n }\n catch (error) {\n throw new LitsError(`The number of columns in the first matrix must be equal to the number of rows in the second matrix, but got ${matrix1[0]!.length} and ${matrix2.length}`, sourceCodeInfo)\n }\n },\n paramCount: 2,\n },\n 'mat:det': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertSquareMatrix(matrix, sourceCodeInfo)\n return determinant(matrix)\n },\n paramCount: 1,\n },\n 'mat:inv': {\n evaluate: ([matrix], sourceCodeInfo): number[][] => {\n assertSquareMatrix(matrix, sourceCodeInfo)\n const result = inverse(matrix)\n if (result === null) {\n throw new LitsError('The matrix must be invertible', sourceCodeInfo)\n }\n return result\n },\n paramCount: 1,\n },\n 'mat:adj': {\n evaluate: ([matrix], sourceCodeInfo): number[][] => {\n assertSquareMatrix(matrix, sourceCodeInfo)\n return adjugate(matrix)\n },\n paramCount: 1,\n },\n 'mat:cofactor': {\n evaluate: ([matrix], sourceCodeInfo): number[][] => {\n assertSquareMatrix(matrix, sourceCodeInfo)\n return cofactor(matrix)\n },\n paramCount: 1,\n },\n 'mat:minor': {\n evaluate: ([matrix, row, col], sourceCodeInfo): number[][] => {\n assertMatrix(matrix, sourceCodeInfo)\n assertNumber(row, sourceCodeInfo, { integer: true, nonNegative: true, lte: matrix.length })\n assertNumber(col, sourceCodeInfo, { integer: true, nonNegative: true, lte: matrix[0]!.length })\n\n return minor(matrix, row, col)\n },\n paramCount: 3,\n },\n 'mat:trace': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertSquareMatrix(matrix, sourceCodeInfo)\n return trace(matrix)\n },\n paramCount: 1,\n },\n 'mat:symmetric?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isSymetric(matrix)\n },\n paramCount: 1,\n },\n 'mat:triangular?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isTriangular(matrix)\n },\n paramCount: 1,\n },\n 'mat:upper-triangular?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isTriangularUpper(matrix)\n },\n paramCount: 1,\n },\n 'mat:lower-triangular?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isTriangularLower(matrix)\n },\n paramCount: 1,\n },\n 'mat:diagonal?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isDiagonal(matrix)\n },\n paramCount: 1,\n },\n 'mat:square?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isSquare(matrix)\n },\n paramCount: 1,\n },\n 'mat:orthogonal?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isOrthogonal(matrix)\n },\n paramCount: 1,\n },\n 'mat:identity?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n return isIdentity(matrix)\n },\n paramCount: 1,\n },\n 'mat:invertible?': {\n evaluate: ([matrix], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n if (!isSquareMatrix(matrix)) {\n return false\n }\n return !approxZero(determinant(matrix))\n },\n paramCount: 1,\n },\n 'mat:hilbert': {\n evaluate: ([size], sourceCodeInfo): number[][] => {\n assertNumber(size, sourceCodeInfo, { integer: true, positive: true })\n const result: number[][] = []\n for (let i = 0; i < size; i += 1) {\n const row: number[] = []\n for (let j = 0; j < size; j += 1) {\n row.push(1 / (i + j + 1))\n }\n result.push(row)\n }\n return result\n },\n paramCount: 1,\n },\n 'mat:vandermonde': {\n evaluate: ([vector], sourceCodeInfo): number[][] => {\n assertVector(vector, sourceCodeInfo)\n const result: number[][] = []\n for (let i = 0; i < vector.length; i += 1) {\n const row: number[] = []\n for (let j = 0; j < vector.length; j += 1) {\n row.push((vector[i]!) ** j)\n }\n result.push(row)\n }\n return result\n },\n paramCount: 1,\n },\n 'mat:band': {\n evaluate: ([n, lband, uband], sourceCodeInfo): number[][] => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(lband, sourceCodeInfo, { integer: true, nonNegative: true, lt: n })\n assertNumber(uband, sourceCodeInfo, { integer: true, nonNegative: true, lte: n })\n return band(n, lband, uband)\n },\n paramCount: 3,\n },\n 'mat:banded?': {\n evaluate: ([matrix, lband, uband], sourceCodeInfo): boolean => {\n assertMatrix(matrix, sourceCodeInfo)\n const maxBand = Math.max(matrix.length, matrix[0]!.length)\n assertNumber(lband, sourceCodeInfo, { integer: true, nonNegative: true, lt: maxBand })\n assertNumber(uband, sourceCodeInfo, { integer: true, nonNegative: true, lt: maxBand })\n return isBanded(matrix, lband, uband)\n },\n paramCount: 3,\n },\n 'mat:rank': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertMatrix(matrix, sourceCodeInfo)\n const [, result] = gaussJordanElimination(matrix)\n return result\n },\n paramCount: 1,\n },\n // Frobenius norm\n 'mat:frobenius-norm': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertMatrix(matrix, sourceCodeInfo)\n return Math.sqrt(matrix.reduce((sum, row) => sum + row.reduce((rowSum, cell) => rowSum + cell * cell, 0), 0))\n },\n paramCount: 1,\n },\n // 1-norm\n 'mat:1-norm': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertMatrix(matrix, sourceCodeInfo)\n return norm1(matrix)\n },\n paramCount: 1,\n },\n // Infinity norm\n 'mat:inf-norm': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertMatrix(matrix, sourceCodeInfo)\n return matrix.reduce((max, row) => Math.max(max, row.reduce((sum, cell) => sum + Math.abs(cell), 0)), 0)\n },\n paramCount: 1,\n aliases: ['mat:row-norm'],\n },\n // Max norm\n 'mat:max-norm': {\n evaluate: ([matrix], sourceCodeInfo): number => {\n assertMatrix(matrix, sourceCodeInfo)\n return matrix.reduce((maxVal, row) => {\n const rowMax = row.reduce((max, val) => Math.max(max, Math.abs(val)), 0)\n return Math.max(maxVal, rowMax)\n }, 0)\n },\n paramCount: 1,\n },\n}\n","export function binomialCoefficient(n: number, k: number): number {\n if (k === 0 || k === n)\n return 1\n\n let result = 1\n for (let i = 0; i < k; i++)\n result *= (n - i) / (i + 1)\n\n return result\n}\n","import type { Arr } from '../../../../../interface'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { binomialCoefficient } from './binomialCefficient'\n\n/**\n * Generates all possible combinations of a specified size from a collection.\n * @param collection The input collection to generate combinations from\n * @param size The size of each combination\n * @returns An array of arrays, where each inner array is a combination of the specified size\n */\nfunction combinations<T>(collection: T[], size: number): T[][] {\n // Base case: if size is 1, return each element as its own combination\n if (size === 1) {\n return collection.map(item => [item])\n }\n\n const result: T[][] = []\n\n // Recursive approach to build combinations\n for (let i = 0; i <= collection.length - size; i++) {\n // Take the current element\n const current = collection[i]!\n\n // Get all combinations of size-1 from the rest of the elements\n const subCombinations = combinations(\n collection.slice(i + 1),\n size - 1,\n )\n\n // Add the current element to each sub-combination\n for (const subComb of subCombinations) {\n result.push([current, ...subComb])\n }\n }\n\n return result\n}\n\nexport const combinationsNormalExpressions: BuiltinNormalExpressions = {\n 'nth:combinations': {\n evaluate: ([set, n], sourceCodeInfo): Arr[] => {\n assertArray(set, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true, lte: set.length })\n if (n === 0)\n return [[]]\n return combinations(set, n)\n },\n paramCount: 2,\n },\n 'nth:count-combinations': {\n evaluate: ([n, k], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n assertNumber(k, sourceCodeInfo, { integer: true, nonNegative: true, lte: n })\n return binomialCoefficient(n, k)\n },\n aliases: ['nth:binomial'],\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../../../interface'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\n\nfunction getAllDerangements(arr: Arr): Arr[] {\n const n = arr.length\n const result: Arr[] = []\n const used = Array.from({ length: n }, () => false)\n const temp: Arr = Array.from({ length: n })\n\n function generateDerangements(pos: number): void {\n if (pos === n) {\n result.push([...temp])\n return\n }\n\n for (let i = 0; i < n; i++) {\n // Skip if element is already used or would be in its original position\n if (used[i] || i === pos) {\n continue\n }\n\n used[i] = true\n temp[pos] = arr[i]!\n generateDerangements(pos + 1)\n used[i] = false\n }\n }\n\n generateDerangements(0)\n return result\n}\n\nfunction countDerangements(n: number): number {\n if (n === 1)\n return 0\n\n let a = 1 // !0\n let b = 0 // !1\n let result = 0\n\n for (let i = 2; i <= n; i++) {\n result = (i - 1) * (a + b)\n a = b\n b = result\n }\n\n return result\n}\n\nexport const derangementsNormalExpressions: BuiltinNormalExpressions = {\n 'nth:derangements': {\n evaluate: ([set], sourceCodeInfo): Arr => {\n assertArray(set, sourceCodeInfo)\n return getAllDerangements(set)\n },\n paramCount: 1,\n },\n 'nth:count-derangements': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return countDerangements(n)\n },\n paramCount: 1,\n },\n}\n","import { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\n\nfunction calcUnsortedDivisors(number: number): number[] {\n const divisors: number[] = []\n for (let i = 1; i <= Math.sqrt(number); i++) {\n if (number % i === 0) {\n divisors.push(i)\n if (i !== number / i) {\n divisors.push(number / i)\n }\n }\n }\n return divisors\n}\n\nexport function getDivisors(n: number): number[] {\n const unsortedDivisors = calcUnsortedDivisors(n)\n const sortedDivisors = unsortedDivisors.sort((a, b) => a - b)\n return sortedDivisors\n}\n\nexport function getProperDivisors(n: number): number[] {\n return getDivisors(n).slice(0, -1) // Exclude the number itself\n}\n\nexport const divisorsNormalExpressions: BuiltinNormalExpressions = {\n 'nth:divisors': {\n evaluate: ([number], sourceCodeInfo): number[] => {\n assertNumber(number, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return getDivisors(number)\n },\n paramCount: 1,\n },\n 'nth:count-divisors': {\n evaluate: ([number], sourceCodeInfo): number => {\n assertNumber(number, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return calcUnsortedDivisors(number).length\n },\n paramCount: 1,\n },\n 'nth:proper-divisors': {\n evaluate: ([number], sourceCodeInfo): number[] => {\n assertNumber(number, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return getProperDivisors(number)\n },\n paramCount: 1,\n },\n 'nth:count-proper-divisors': {\n evaluate: ([number], sourceCodeInfo): number => {\n assertNumber(number, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return calcUnsortedDivisors(number).length - 1 // Exclude the number itself\n },\n paramCount: 1,\n },\n}\n","export const factorialNumbers = [\n 1,\n 1,\n 2,\n 6,\n 24,\n 120,\n 720,\n 5040,\n 40320,\n 362880,\n 3628800,\n 39916800,\n 479001600,\n 6227020800,\n 87178291200,\n 1307674368000,\n 20922789888000,\n 355687428096000,\n 6402373705728000,\n]\n","import { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { factorialNumbers } from './sequences/factorial'\n\nexport function factorialOf(n: number): number {\n if (n < 0)\n throw new Error('Factorial is not defined for negative numbers')\n\n if (n === 0 || n === 1)\n return 1\n\n if (n <= 18) {\n return factorialNumbers[n]!\n }\n let result = factorialNumbers[18]!\n for (let i = 19; i <= n; i++)\n result *= i\n\n return result\n}\n\nexport const factorialNormalExpressions: BuiltinNormalExpressions = {\n 'nth:factorial': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true, lte: 170 })\n return factorialOf(n)\n },\n aliases: ['nth:!'],\n paramCount: 1,\n },\n}\n","export const partitionNumbers = [\n 1,\n 2,\n 3,\n 5,\n 7,\n 11,\n 15,\n 22,\n 30,\n 42,\n 56,\n 77,\n 101,\n 135,\n 176,\n 231,\n 297,\n 385,\n 490,\n 627,\n 792,\n 1002,\n 1255,\n 1575,\n 1958,\n 2436,\n 3010,\n 3718,\n 4565,\n 5604,\n 6842,\n 8349,\n 10143,\n 12310,\n 14883,\n 17977,\n 21637,\n 26015,\n 31185,\n 37338,\n 44583,\n 53174,\n 63261,\n 75175,\n 89134,\n 105558,\n 124754,\n 147273,\n 173525,\n 204226,\n 239943,\n 281589,\n 329931,\n 386155,\n 451276,\n 526823,\n 614154,\n 715220,\n 831820,\n 966467,\n 1121505,\n 1300156,\n 1505499,\n 1741630,\n 2012558,\n 2323520,\n 2679689,\n 3087735,\n 3554345,\n 4087968,\n 4697205,\n 5392783,\n 6185689,\n 7089500,\n 8118264,\n 9289091,\n 10619863,\n 12132164,\n 13848650,\n 15796476,\n 18004327,\n 20506255,\n 23338469,\n 26543660,\n 30167357,\n 34262962,\n 38887673,\n 44108109,\n 49995925,\n 56634173,\n 64112359,\n 72533807,\n 82010177,\n 92669720,\n 104651419,\n 118114304,\n 133230930,\n 150198136,\n 169229875,\n 190569292,\n 214481126,\n 241265379,\n 271248950,\n 304801365,\n 342325709,\n 384276336,\n 431149389,\n 483502844,\n 541946240,\n 607163746,\n 679903203,\n 761002156,\n 851376628,\n 952050665,\n 1064144451,\n 1188908248,\n 1327710076,\n 1482074143,\n 1653668665,\n 1844349560,\n 2056148051,\n 2291320912,\n 2552338241,\n 2841940500,\n 3163127352,\n 3519222692,\n 3913864295,\n 4351078600,\n 4835271870,\n 5371315400,\n 5964539504,\n 6620830889,\n 7346629512,\n 8149040695,\n 9035836076,\n 10015581680,\n 11097645016,\n 12292341831,\n 13610949895,\n 15065878135,\n 16670689208,\n 18440293320,\n 20390982757,\n 22540654445,\n 24908858009,\n 27517052599,\n 30388671978,\n 33549419497,\n 37027355200,\n 40853235313,\n 45060624582,\n 49686288421,\n 54770336324,\n 60356673280,\n 66493182097,\n 73232243759,\n 80630964769,\n 88751778802,\n 97662728555,\n 107438159466,\n 118159068427,\n 129913904637,\n 142798995930,\n 156919475295,\n 172389800255,\n 189334822579,\n 207890420102,\n 228204732751,\n 250438925115,\n 274768617130,\n 301384802048,\n 330495499613,\n 362326859895,\n 397125074750,\n 435157697830,\n 476715857290,\n 522115831195,\n 571701605655,\n 625846753120,\n 684957390936,\n 749474411781,\n 819876908323,\n 896684817527,\n 980462880430,\n 1071823774337,\n 1171432692373,\n 1280011042268,\n 1398341745571,\n 1527273599625,\n 1667727404093,\n 1820701100652,\n 1987276856363,\n 2168627105469,\n 2366022741845,\n 2580840212973,\n 2814570987591,\n 3068829878530,\n 3345365983698,\n 3646072432125,\n 3972999029388,\n 4328363658647,\n 4714566886083,\n 5134205287973,\n 5590088317495,\n 6085253859260,\n 6622987708040,\n 7206841706490,\n 7840656226137,\n 8528581302375,\n 9275102575355,\n 10085065885767,\n 10963707205259,\n 11916681236278,\n 12950095925895,\n 14070545699287,\n 15285151248481,\n 16601598107914,\n 18028182516671,\n 19573856161145,\n 21248279009367,\n 23061871173849,\n 25025873760111,\n 27152408925615,\n 29454549941750,\n 31946390696157,\n 34643126322519,\n 37561133582570,\n 40718063627362,\n 44132934884255,\n 47826239745920,\n 51820051838712,\n 56138148670947,\n 60806135438329,\n 65851585970275,\n 71304185514919,\n 77195892663512,\n 83561103925871,\n 90436839668817,\n 97862933703585,\n 105882246722733,\n 114540884553038,\n 123888443077259,\n 133978259344888,\n 144867692496445,\n 156618412527946,\n 169296722391554,\n 182973889854026,\n 197726516681672,\n 213636919820625,\n 230793554364681,\n 249291451168559,\n 269232701252579,\n 290726957916112,\n 313891991306665,\n 338854264248680,\n 365749566870782,\n 394723676655357,\n 425933084409356,\n 459545750448675,\n 495741934760846,\n 534715062908609,\n 576672674947168,\n 621837416509615,\n 670448123060170,\n 722760953690372,\n 779050629562167,\n 839611730366814,\n 904760108316360,\n 974834369944625,\n 1050197489931117,\n 1131238503938606,\n 1218374349844333,\n 1312051800816215,\n 1412749565173450,\n 1520980492851175,\n 1637293969337171,\n 1762278433057269,\n 1896564103591584,\n 2040825852575075,\n 2195786311682516,\n 2362219145337711,\n 2540952590045698,\n 2732873183547535,\n 2938929793929555,\n 3160137867148997,\n 3397584011986773,\n 3652430836071053,\n 3925922161489422,\n 4219388528587095,\n 4534253126900886,\n 4872038056472084,\n 5234371069753672,\n 5622992691950605,\n 6039763882095515,\n 6486674127079088,\n 6965850144195831,\n 7479565078510584,\n 8030248384943040,\n 8620496275465025,\n]\n","import { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { partitionNumbers } from './sequences/partition'\n\nfunction partitions(n: number): number[][] {\n // Base cases\n if (n <= 0)\n return [[]]\n if (n === 1)\n return [[1]]\n\n const result: number[][] = []\n\n // Helper function to generate partitions recursively\n function generatePartitions(remaining: number, max: number, current: number[]): void {\n if (remaining === 0) {\n result.push([...current])\n return\n }\n\n // Try all possible numbers from 1 up to max\n for (let i = Math.min(max, remaining); i >= 1; i--) {\n current.push(i)\n generatePartitions(remaining - i, i, current)\n current.pop()\n }\n }\n\n generatePartitions(n, n, [])\n return result\n}\n\nexport const partitionsNormalExpressions: BuiltinNormalExpressions = {\n 'nth:partitions': {\n evaluate: ([n], sourceCodeInfo): number[][] => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n return partitions(n)\n },\n paramCount: 1,\n },\n 'nth:count-partitions': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n if (n === 0)\n return 1\n\n if (n > partitionNumbers.length) {\n throw new Error(`n is too large. The maximum value is ${partitionNumbers.length - 1}.`)\n }\n\n return partitionNumbers[n - 1]!\n },\n paramCount: 1,\n },\n}\n","import type { Arr } from '../../../../../interface'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { factorialOf } from './factorial'\n\n/**\n * Generates all possible permutations of a collection.\n * @param collection The input collection to generate permutations from\n * @returns An array of arrays, where each inner array is a permutation of the input collection\n */\nfunction permutations<T>(collection: T[]): T[][] {\n // Base case: empty array has one permutation - itself\n if (collection.length === 0) {\n return [[]]\n }\n\n const result: T[][] = []\n\n // For each element in the array\n for (let i = 0; i < collection.length; i++) {\n // Extract the current element\n const current = collection[i]!\n\n // Create a new array without the current element\n const remainingElements = [...collection.slice(0, i), ...collection.slice(i + 1)]\n\n // Generate all permutations of the remaining elements\n const subPermutations = permutations(remainingElements)\n\n // Add the current element to the beginning of each sub-permutation\n for (const subPerm of subPermutations) {\n result.push([current, ...subPerm])\n }\n }\n\n return result\n}\n\nexport const permutationsNormalExpressions: BuiltinNormalExpressions = {\n 'nth:permutations': {\n evaluate: ([set], sourceCodeInfo): Arr[] => {\n assertArray(set, sourceCodeInfo)\n return permutations(set)\n },\n paramCount: 1,\n },\n 'nth:count-permutations': {\n evaluate: ([n, k], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n assertNumber(k, sourceCodeInfo, { integer: true, nonNegative: true, lte: n })\n return factorialOf(n) / factorialOf(n - k)\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../../../interface'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\n\nfunction powerSet(set: Arr): Arr[] {\n const result: Arr[] = [[]]\n\n for (const value of set) {\n const newSubsets = result.map(subset => [...subset, value])\n result.push(...newSubsets)\n }\n\n return result\n}\n\nexport const powerSetNormalExpressions: BuiltinNormalExpressions = {\n 'nth:power-set': {\n evaluate: ([set], sourceCodeInfo): Arr[] => {\n assertArray(set, sourceCodeInfo)\n return powerSet(set)\n },\n paramCount: 1,\n },\n 'nth:count-power-set': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n if (n >= 53) {\n // Number.MAX_SAFE_INTEGER is 2^53 - 1\n return Infinity\n }\n\n return 2 ** n\n },\n paramCount: 1,\n },\n}\n","import { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\n\n/**\n * Returns the prime factorization of a number as an array of its prime factors.\n * For example, factors(12) returns [2, 2, 3].\n * Special case: factors(1) returns an empty array [].\n *\n * @param n - A positive integer to factorize\n * @returns An array of prime factors in ascending order\n */\nexport function primeFactors(n: number): number[] {\n // Special case: 1 has no prime factors\n if (n === 1) {\n return []\n }\n\n const factors: number[] = []\n let divisor = 2\n\n // Find factors by trial division\n while (n > 1) {\n // If divisor divides n evenly\n if (n % divisor === 0) {\n // Add divisor to the factors list\n factors.push(divisor)\n // Divide n by the found factor\n n /= divisor\n }\n else {\n // Move to the next potential divisor\n divisor++\n }\n }\n\n return factors\n}\n\nexport const primeFactorsNormalExpressions: BuiltinNormalExpressions = {\n 'nth:prime-factors': {\n evaluate: ([number], sourceCodeInfo): number[] => {\n assertNumber(number, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return primeFactors(number)\n },\n paramCount: 1,\n },\n 'nth:distinct-prime-factors': {\n evaluate: ([n], sourceCodeInfo): number[] => {\n assertNumber(n, sourceCodeInfo, { finite: true, integer: true, positive: true })\n const factors = primeFactors(n)\n const distinctFactors = new Set(factors)\n return Array.from(distinctFactors)\n },\n paramCount: 1,\n },\n 'nth:count-prime-factors': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { finite: true, integer: true, positive: true })\n return primeFactors(n).length\n },\n paramCount: 1,\n },\n 'nth:count-distinct-prime-factors': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { finite: true, integer: true, positive: true })\n const factors = primeFactors(n)\n const distinctFactors = new Set(factors)\n return distinctFactors.size\n },\n paramCount: 1,\n },\n}\n","import { getProperDivisors } from '../divisors'\nimport type { SequenceDefinition } from '.'\n\nfunction isAbundant(num: number): boolean {\n const properDivisors = getProperDivisors(num)\n const sum = properDivisors.reduce((acc, curr) => acc + curr, 0)\n return sum > num\n}\n\nexport const abundantSequence: SequenceDefinition<'abundant'> = {\n 'nth:abundant-seq': (length) => {\n const abundants = []\n let num = 2\n while (abundants.length < length) {\n if (isAbundant(num)) {\n abundants.push(num)\n }\n num += 1\n }\n return abundants\n },\n 'nth:abundant?': n => isAbundant(n),\n 'nth:abundant-take-while': (takeWhile) => {\n const abundants = []\n for (let i = 2; ; i += 1) {\n if (!isAbundant(i)) {\n continue\n }\n if (!takeWhile(i, abundants.length)) {\n break\n }\n abundants.push(i)\n }\n return abundants\n },\n}\n","import { assertFunctionLike } from '../../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../../typeGuards/number'\nimport { approxEqual } from '../../../../../../utils'\nimport type { SequenceNormalExpressions } from '.'\n\n/**\n * Checks if a number is a member of an arithmetic sequence.\n * @param start The first term of the sequence\n * @param step The common difference between terms\n * @param n The number to check\n * @returns true if the number is in the sequence, false otherwise\n */\nfunction isInArithmeticSequence(\n start: number,\n step: number,\n n: number,\n): boolean {\n // Special case: If step is 0, n must equal start\n if (step === 0) {\n return approxEqual(n, start)\n }\n\n // Calculate position in sequence\n const position = (n - start) / step\n\n // Position must be non-negative\n if (position < 0) {\n return false\n }\n\n // Find nearest integer position\n const roundedPosition = Math.round(position)\n\n // Calculate the value at that position\n const calculatedValue = start + step * roundedPosition\n\n // Check both if position is close to an integer and if the\n // calculated value is close to the input value\n return approxEqual(position, roundedPosition) && approxEqual(calculatedValue, n)\n}\n\nexport const arithmeticNormalExpressions: SequenceNormalExpressions<'arithmetic'> = {\n 'nth:arithmetic-seq': {\n evaluate: ([start, step, length], sourceCodeInfo): number[] => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(step, sourceCodeInfo, { finite: true })\n assertNumber(length, sourceCodeInfo, { integer: true, positive: true })\n\n return Array.from({ length }, (_, i) => start + i * step)\n },\n paramCount: 3,\n },\n 'nth:arithmetic-take-while': {\n evaluate: ([start, step, fn], sourceCodeInfo, contextStack, { executeFunction }): number[] => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(step, sourceCodeInfo, { finite: true })\n assertFunctionLike(fn, sourceCodeInfo)\n\n const arithmetic = []\n for (let i = 0; ; i += 1) {\n const value = start + i * step\n if (!executeFunction(fn, [value, i], contextStack, sourceCodeInfo)) {\n break\n }\n arithmetic[i] = value\n }\n return arithmetic\n },\n paramCount: 3,\n },\n 'nth:arithmetic-nth': {\n evaluate: ([start, step, n], sourceCodeInfo): number => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(step, sourceCodeInfo, { finite: true })\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n return start + (n - 1) * step\n },\n paramCount: 3,\n },\n 'nth:arithmetic?': {\n evaluate: ([start, step, n], sourceCodeInfo): boolean => {\n assertNumber(n, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(step, sourceCodeInfo, { finite: true })\n\n return isInArithmeticSequence(start, step, n)\n },\n paramCount: 3,\n },\n}\n","export const bellNumbers = [\n 1,\n 2,\n 5,\n 15,\n 52,\n 203,\n 877,\n 4140,\n 21147,\n 115975,\n 678570,\n 4213597,\n 27644437,\n 190899322,\n 1382958545,\n 10480142147,\n 82864869804,\n 682076806159,\n 5832742205057,\n 51724158235372,\n 474869816156751,\n 4506715738447323,\n]\n","import { assertFunctionLike } from '../../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../../typeGuards/number'\nimport { binomialCoefficient } from '../binomialCefficient'\nimport type { SequenceNormalExpressions } from '.'\n\nfunction getBernoulliSeq(length: number): number[] {\n const bernoulli = [1]\n for (let n = 1; n < length; n += 1) {\n let sum = 0\n for (let k = 0; k < n; k += 1) {\n sum += binomialCoefficient(n + 1, k) * bernoulli[k]!\n }\n bernoulli[n] = n > 1 && n % 2 === 1 ? 0 : -sum / (n + 1)\n }\n return bernoulli\n}\n\n/**\n * Generates Bernoulli numbers as long as the predicate function returns true\n * @param predicate - Function that takes a Bernoulli number and its index and returns true if generation should continue\n * @returns Array of Bernoulli numbers generated until predicate returns false\n */\nfunction generateBernoulli(\n predicate: (value: number, index: number) => boolean,\n): number[] {\n const batchSize = 100\n // Start with computing the Bernoulli numbers\n const bernoulli: number[] = [1]\n let n = 1\n\n // Continue generating as long as the predicate returns true\n while (true) {\n // Generate a batch of numbers at a time for efficiency\n const targetLength = bernoulli.length + batchSize\n\n for (; n < targetLength; n++) {\n let sum = 0\n for (let k = 0; k < n; k++) {\n sum += binomialCoefficient(n + 1, k) * bernoulli[k]!\n }\n\n const newValue = n > 1 && n % 2 === 1 ? 0 : -sum / (n + 1)\n\n // Check if we should continue\n if (!predicate(newValue, n)) {\n // We're done, return the generated sequence (including the last value)\n return bernoulli\n }\n bernoulli.push(newValue)\n }\n }\n}\n\nexport const bernoulliNormalExpressions: Omit<SequenceNormalExpressions<'bernoulli'>, 'nth:bernoulli?'> = {\n 'nth:bernoulli-seq': {\n evaluate: ([length], sourceCodeInfo): number[] => {\n assertNumber(length, sourceCodeInfo, { integer: true, positive: true })\n return getBernoulliSeq(length)\n },\n paramCount: 1,\n },\n 'nth:bernoulli-nth': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n const bernoulli = getBernoulliSeq(n)\n return bernoulli[n - 1]!\n },\n paramCount: 1,\n },\n 'nth:bernoulli-take-while': {\n evaluate: ([fn], sourceCodeInfo, contextStack, { executeFunction }): number[] => {\n assertFunctionLike(fn, sourceCodeInfo)\n const bernoulli = generateBernoulli((value, index) => !!executeFunction(fn, [value, index], contextStack))\n return bernoulli\n },\n paramCount: 1,\n },\n}\n","export const catalanNumbers = [\n 1,\n 2,\n 5,\n 14,\n 42,\n 132,\n 429,\n 1430,\n 4862,\n 16796,\n 58786,\n 208012,\n 742900,\n 2674440,\n 9694845,\n 35357670,\n 129644790,\n 477638700,\n 1767263190,\n 6564120420,\n 24466267020,\n 91482563640,\n 343059613650,\n 1289904147324,\n 4861946401452,\n 18367353072152,\n 69533550916004,\n 263747951750360,\n 1002242216651368,\n 3814986502092304,\n]\n","import type { SequenceDefinition } from '.'\n\nexport const collatzSequence: Omit<SequenceDefinition<'collatz'>, 'nth:collatz-nth' | 'nth:collatz-take-while' | 'nth:collatz?'> = {\n 'nth:collatz-seq': (start) => {\n let x = start\n const collatz = [x]\n while (x !== 1) {\n if (x % 2 === 0) {\n x /= 2\n }\n else {\n x = 3 * x + 1\n }\n collatz.push(x)\n }\n return collatz\n },\n 'noNth': true,\n}\n","import type { SequenceDefinition } from '.'\n\nexport function isPrime(num: number): boolean {\n if (num <= 1) {\n return false\n }\n if (num <= 3) {\n return true\n }\n if (num % 2 === 0 || num % 3 === 0) {\n return false\n }\n\n for (let i = 5; i * i <= num; i += 6) {\n if (num % i === 0 || num % (i + 2) === 0) {\n return false\n }\n }\n return true\n}\n\nexport const primeSequence: SequenceDefinition<'prime'> = {\n 'nth:prime-seq': (length) => {\n const primes = []\n let num = 2\n while (primes.length < length) {\n if (isPrime(num)) {\n primes.push(num)\n }\n num += 1\n }\n return primes\n },\n 'nth:prime?': n => isPrime(n),\n 'nth:prime-take-while': (takeWhile) => {\n const primes = []\n for (let i = 2; ; i += 1) {\n if (!isPrime(i)) {\n continue\n }\n if (!takeWhile(i, primes.length)) {\n break\n }\n primes.push(i)\n }\n return primes\n },\n}\n","import { isPrime } from './prime'\nimport type { SequenceDefinition } from '.'\n\nexport function isComposite(num: number): boolean {\n if (num <= 1) {\n return false\n }\n return !isPrime(num)\n}\n\nexport const compositeSequence: SequenceDefinition<'composite'> = {\n 'nth:composite-seq': (length) => {\n const composites = []\n let num = 2\n while (composites.length < length) {\n if (isComposite(num)) {\n composites.push(num)\n }\n num += 1\n }\n return composites\n },\n 'nth:composite?': n => isComposite(n),\n 'nth:composite-take-while': (takeWhile) => {\n const composites = []\n for (let i = 4; ; i += 1) {\n if (!isComposite(i)) {\n continue\n }\n if (!takeWhile(i, composites.length)) {\n break\n }\n composites.push(i)\n }\n return composites\n },\n}\n","import { getProperDivisors } from '../divisors'\nimport type { SequenceDefinition } from '.'\n\nfunction isDeficient(num: number): boolean {\n const properDivisors = getProperDivisors(num)\n const sum = properDivisors.reduce((acc, curr) => acc + curr, 0)\n return sum < num\n}\n\nexport const deficientSequence: SequenceDefinition<'deficient'> = {\n 'nth:deficient-seq': (length) => {\n const deficients = []\n let num = 1\n while (deficients.length < length) {\n if (isDeficient(num)) {\n deficients.push(num)\n }\n num += 1\n }\n return deficients\n },\n 'nth:deficient?': n => isDeficient(n),\n 'nth:deficient-take-while': (takeWhile) => {\n const deficients = []\n for (let i = 1; ; i += 1) {\n if (!isDeficient(i)) {\n continue\n }\n if (!takeWhile(i, deficients.length)) {\n break\n }\n deficients.push(i)\n }\n return deficients\n },\n}\n","export const fibonacciNumbers = [\n 0,\n 1,\n 1,\n 2,\n 3,\n 5,\n 8,\n 13,\n 21,\n 34,\n 55,\n 89,\n 144,\n 233,\n 377,\n 610,\n 987,\n 1597,\n 2584,\n 4181,\n 6765,\n 10946,\n 17711,\n 28657,\n 46368,\n 75025,\n 121393,\n 196418,\n 317811,\n 514229,\n 832040,\n 1346269,\n 2178309,\n 3524578,\n 5702887,\n 9227465,\n 14930352,\n 24157817,\n 39088169,\n 63245986,\n 102334155,\n 165580141,\n 267914296,\n 433494437,\n 701408733,\n 1134903170,\n 1836311903,\n 2971215073,\n 4807526976,\n 7778742049,\n 12586269025,\n 20365011074,\n 32951280099,\n 53316291173,\n 86267571272,\n 139583862445,\n 225851433717,\n 365435296162,\n 591286729879,\n 956722026041,\n 1548008755920,\n 2504730781961,\n 4052739537881,\n 6557470319842,\n 10610209857723,\n 17167680177565,\n 27777890035288,\n 44945570212853,\n 72723460248141,\n 117669030460994,\n 190392490709135,\n 308061521170129,\n 498454011879264,\n 806515533049393,\n 1304969544928657,\n 2111485077978050,\n 3416454622906707,\n 5527939700884757,\n 8944394323791464,\n]\n","import { assertFunctionLike } from '../../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../../typeGuards/number'\nimport { approxEqual } from '../../../../../../utils'\nimport type { SequenceNormalExpressions } from '.'\n\n/**\n * Checks if a number is a member of a geometric sequence.\n * @param initialTerm The first term of the sequence (a)\n * @param ratio The common ratio of the sequence (r)\n * @param number The number to check\n * @returns true if the number is in the sequence, false otherwise\n */\nfunction isInGeometricSequence(\n initialTerm: number,\n ratio: number,\n number: number,\n): boolean {\n // Handle special cases\n if (approxEqual(initialTerm, 0)) {\n return approxEqual(number, 0)\n }\n if (approxEqual(ratio, 1)) {\n return approxEqual(number, initialTerm)\n }\n if (approxEqual(ratio, 0)) {\n return approxEqual(number, 0) || approxEqual(number, initialTerm)\n }\n\n // Check if the number is exactly the initial term\n if (approxEqual(number, initialTerm)) {\n return true\n }\n\n // Special case for ratio = -1 (alternating sequence)\n if (approxEqual(ratio, -1)) {\n // In an alternating sequence with ratio -1, the terms are just initialTerm and -initialTerm\n return approxEqual(number, initialTerm) || approxEqual(number, -initialTerm)\n }\n\n // For negative ratios, we need special handling\n if (ratio < 0) {\n // Calculate log using absolute values\n const logResult = Math.log(Math.abs(number / initialTerm)) / Math.log(Math.abs(ratio))\n\n // Check if logResult is very close to an integer\n const roundedLogResult = Math.round(logResult)\n if (!approxEqual(roundedLogResult, logResult) || roundedLogResult < 0) {\n return false\n }\n\n // For negative ratios, alternating terms have alternating signs\n // Check if sign matches what we expect based on the power\n const expectedSign = roundedLogResult % 2 === 0\n ? Math.sign(initialTerm)\n : Math.sign(initialTerm) * Math.sign(ratio)\n\n return Math.sign(number) === expectedSign\n }\n\n // For positive ratios\n\n // Quick check based on sequence direction\n if ((ratio > 1 && number < initialTerm) || (ratio < 1 && number > initialTerm)) {\n return false\n }\n\n // Calculate n in: number = initialTerm * (ratio^n)\n const logResult = Math.log(number / initialTerm) / Math.log(ratio)\n\n // Check if logResult is very close to an integer and non-negative\n const roundedLogResult = Math.round(logResult)\n if (!approxEqual(roundedLogResult, logResult) || roundedLogResult < 0) {\n return false\n }\n\n // Verify calculated value matches the number exactly\n const calculatedValue = initialTerm * ratio ** roundedLogResult\n\n return approxEqual(calculatedValue, number)\n}\nexport const geometricNormalExpressions: SequenceNormalExpressions<'geometric'> = {\n 'nth:geometric-seq': {\n evaluate: ([start, ratio, length], sourceCodeInfo): number[] => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(ratio, sourceCodeInfo, { finite: true })\n assertNumber(length, sourceCodeInfo, { integer: true, positive: true })\n\n return Array.from({ length }, (_, i) => start * ratio ** i)\n },\n paramCount: 3,\n },\n 'nth:geometric-take-while': {\n evaluate: ([start, ratio, fn], sourceCodeInfo, contextStack, { executeFunction }): number[] => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(ratio, sourceCodeInfo, { finite: true })\n assertFunctionLike(fn, sourceCodeInfo)\n\n const geometric = []\n for (let i = 0; ; i += 1) {\n const value = start * ratio ** i\n if (!executeFunction(fn, [value, i], contextStack, sourceCodeInfo)) {\n break\n }\n geometric[i] = value\n }\n return geometric\n },\n paramCount: 3,\n },\n 'nth:geometric-nth': {\n evaluate: ([start, ratio, n], sourceCodeInfo): number => {\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(ratio, sourceCodeInfo, { finite: true })\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n return start * ratio ** (n - 1)\n },\n paramCount: 3,\n },\n 'nth:geometric?': {\n evaluate: ([start, ratio, n], sourceCodeInfo): boolean => {\n assertNumber(n, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { finite: true })\n assertNumber(ratio, sourceCodeInfo, { finite: true })\n\n return isInGeometricSequence(start, ratio, n)\n },\n paramCount: 3,\n },\n}\n","import type { SequenceDefinition } from '.'\n\nfunction getGolombSeq(n: number): number[] {\n const golomb = [0, 1]\n for (let i = 2; i <= n; i += 1) {\n golomb.push(1 + golomb[i - golomb[golomb[i - 1]!]!]!)\n }\n return golomb.slice(1)\n}\n\nfunction generateGolombSeq(pred: (golombNumber: number, index: number) => boolean): number[] {\n if (!pred(1, 0)) {\n return []\n }\n const golomb = [0, 1]\n for (let i = 2; ; i++) {\n const golombNumber = 1 + golomb[i - golomb[golomb[i - 1]!]!]!\n if (!pred(golombNumber, i - 1)) {\n break\n }\n golomb.push(golombNumber)\n }\n return golomb.slice(1)\n}\n\nexport const golombSequence: SequenceDefinition<'golomb'> = {\n 'nth:golomb-seq': length => getGolombSeq(length),\n 'nth:golomb?': () => true,\n 'nth:golomb-take-while': takeWhile => generateGolombSeq(takeWhile),\n}\n","import type { SequenceDefinition } from '.'\n\nfunction isHappyNumber(n: number): boolean {\n // A happy number is defined by the following process:\n // 1. Starting with any positive integer, replace the number by the sum of the squares of its digits\n // 2. Repeat until either:\n // - The number equals 1 (in which case it's a happy number)\n // - It enters a cycle that doesn't include 1 (in which case it's not a happy number)\n\n if (n <= 0)\n return false\n\n // Use a set to detect cycles\n const seen = new Set()\n\n // Continue until we either reach 1 or detect a cycle\n while (n !== 1 && !seen.has(n)) {\n seen.add(n)\n n = getSumOfSquaredDigits(n)\n }\n\n // If we reached 1, it's a happy number\n return n === 1\n}\n\nfunction getSumOfSquaredDigits(n: number): number {\n let sum = 0\n\n while (n > 0) {\n const digit = n % 10\n sum += digit * digit\n n = Math.floor(n / 10)\n }\n\n return sum\n}\n\nexport const happySequence: SequenceDefinition<'happy'> = {\n 'nth:happy-seq': (length) => {\n const happyNumbers: number[] = []\n for (let i = 1; happyNumbers.length < length; i++) {\n let n = i\n const seen = new Set<number>()\n while (n !== 1 && !seen.has(n)) {\n seen.add(n)\n n = String(n)\n .split('')\n .reduce((sum, digit) => sum + Number(digit) ** 2, 0)\n }\n if (n === 1)\n happyNumbers.push(i)\n }\n return happyNumbers\n },\n 'nth:happy?': n => isHappyNumber(n),\n 'nth:happy-take-while': (takeWhile) => {\n const happyNumbers = []\n\n for (let i = 1; ; i++) {\n let n = i\n const seen = new Set<number>()\n while (n !== 1 && !seen.has(n)) {\n seen.add(n)\n n = String(n)\n .split('')\n .reduce((sum, digit) => sum + Number(digit) ** 2, 0)\n }\n if (n === 1) {\n if (!takeWhile(i, happyNumbers.length)) {\n break\n }\n happyNumbers.push(i)\n }\n }\n\n return happyNumbers\n },\n}\n","import type { SequenceDefinition } from '.'\n\nexport const jugglerSequence: Omit<SequenceDefinition<'juggler'>, 'nth:juggler-nth' | 'nth:juggler-take-while' | 'nth:juggler?'> = {\n 'nth:juggler-seq': (start) => {\n let next = start\n const juggler = [next]\n\n while (next > 1) {\n next = next % 2 === 0\n ? Math.floor(Math.sqrt(next))\n : Math.floor(next ** (3 / 2))\n juggler.push(next)\n }\n return juggler\n },\n 'noNth': true,\n}\n","import type { SequenceDefinition } from '.'\n\n/**\n * Checks if a number is part of the Look-and-Say sequence.\n *\n * The Look-and-Say sequence starts with \"1\" and each subsequent term describes\n * the previous term by counting consecutive digits. For example:\n * 1, 11, 21, 1211, 111221, 312211, 13112221, ...\n *\n * @param {string|number} target - The number to check (can be a string or number)\n * @returns {boolean} - Whether the target is in the sequence\n */\nfunction isLookAndSay(target: string): boolean {\n // The first term of the sequence\n let current = '1'\n\n // Check if the first term matches\n if (current === target) {\n return true\n }\n\n // Generate terms and check against the target\n while (true) {\n current = getNextLookAndSayTerm(current)\n\n if (current === target) {\n return true\n }\n\n // Optimization: if the current term is longer than the target, and\n // the sequence is strictly increasing in length, the target won't be found\n if (current.length > target.length) {\n return false\n }\n }\n}\n\n/**\n * Generates the next term in the Look-and-Say sequence\n *\n * @param {string} term - The current term\n * @returns {string} - The next term in the sequence\n */\nfunction getNextLookAndSayTerm(term: string): string {\n let result = ''\n let count = 1\n\n for (let i = 0; i < term.length; i++) {\n // If the current digit is the same as the next one, increment count\n if (i + 1 < term.length && term[i] === term[i + 1]) {\n count++\n }\n else {\n // Otherwise, append count and the digit to the result\n result += count.toString() + term[i]\n count = 1\n }\n }\n\n return result\n}\n\nexport const lookAndSaySequence: SequenceDefinition<'look-and-say', string> = {\n 'string': true,\n 'nth:look-and-say-seq': (length) => {\n const lookAndSay = ['1']\n for (let i = 1; i < length; i += 1) {\n const prev = lookAndSay[i - 1]!\n const next = prev.replace(/(\\d)\\1*/g, match => `${match.length}${match[0]}`)\n lookAndSay[i] = next\n }\n return lookAndSay\n },\n 'nth:look-and-say-take-while': (takeWhile) => {\n if (!takeWhile('1', 0)) {\n return []\n }\n const lookAndSay = ['1']\n for (let i = 1; ; i += 1) {\n const prev = lookAndSay[i - 1]!\n const next = prev.replace(/(\\d)\\1*/g, match => `${match.length}${match[0]}`)\n if (!takeWhile(next, i)) {\n break\n }\n lookAndSay[i] = next\n }\n return lookAndSay\n },\n 'nth:look-and-say?': n => isLookAndSay(n),\n}\n","export const lucasNumbers = [\n 2,\n 1,\n 3,\n 4,\n 7,\n 11,\n 18,\n 29,\n 47,\n 76,\n 123,\n 199,\n 322,\n 521,\n 843,\n 1364,\n 2207,\n 3571,\n 5778,\n 9349,\n 15127,\n 24476,\n 39603,\n 64079,\n 103682,\n 167761,\n 271443,\n 439204,\n 710647,\n 1149851,\n 1860498,\n 3010349,\n 4870847,\n 7881196,\n 12752043,\n 20633239,\n 33385282,\n 54018521,\n 87403803,\n 141422324,\n 228826127,\n 370248451,\n 599074578,\n 969323029,\n 1568397607,\n 2537720636,\n 4106118243,\n 6643838879,\n 10749957122,\n 17393796001,\n 28143753123,\n 45537549124,\n 73681302247,\n 119218851371,\n 192900153618,\n 312119004989,\n 505019158607,\n 817138163596,\n 1322157322203,\n 2139295485799,\n 3461452808002,\n 5600748293801,\n 9062201101803,\n 14662949395604,\n 23725150497407,\n 38388099893011,\n 62113250390418,\n 100501350283429,\n 162614600673847,\n 263115950957276,\n 425730551631123,\n 688846502588399,\n 1114577054219522,\n 1803423556807921,\n 2918000611027443,\n 4721424167835364,\n 7639424778862807,\n]\n","import type { SequenceDefinition } from '.'\n\n/**\n * Generates lucky numbers while the predicate function returns true.\n *\n * @param predicate - Function that tests if we should continue generating numbers.\n * Takes the current lucky number and index as parameters.\n * @returns An array of lucky numbers\n */\nfunction generateLuckyNumbers(\n predicate: (luckyNumber: number, index: number) => boolean,\n): number[] {\n // Start with counting from 1\n const numbers: number[] = []\n for (let i = 1; i <= 2000; i++) {\n numbers.push(i)\n }\n\n // First step: remove all even numbers (keep 1)\n let filteredNumbers: number[] = [1]\n for (let i = 1; i < numbers.length; i++) {\n if (numbers[i]! % 2 !== 0) {\n filteredNumbers.push(numbers[i]!)\n }\n }\n\n const luckyNumbers: number[] = [1] // 1 is always the first lucky number\n let count = 1\n\n // Check if we should continue after the first number\n if (!predicate(1, 0)) {\n return []\n }\n\n // Continue the sieve process\n let index = 1 // Start with the second element (index 1, which is 3)\n\n while (index < filteredNumbers.length) {\n // Get the current lucky number\n const luckyNumber = filteredNumbers[index]!\n\n // Check if we should continue\n if (!predicate(luckyNumber, count)) {\n break\n }\n\n // Add to result\n luckyNumbers.push(luckyNumber)\n count++\n\n // Apply the sieve\n const step = luckyNumber\n const newFiltered: number[] = []\n\n for (let i = 0; i < filteredNumbers.length; i++) {\n if ((i + 1) % step !== 0) { // Keep numbers not at positions divisible by step\n newFiltered.push(filteredNumbers[i]!)\n }\n }\n\n filteredNumbers = newFiltered\n index++\n\n // If we're running low on numbers, extend the sequence\n if (index >= filteredNumbers.length - 5) {\n const lastNum = filteredNumbers[filteredNumbers.length - 1]!\n let next = lastNum + 2\n\n while (filteredNumbers.length < index + 1000) {\n filteredNumbers.push(next)\n next += 2\n }\n }\n }\n\n return luckyNumbers\n}\n\n/**\n * Generates lucky numbers up to a specified length or count\n *\n * Lucky numbers are a subset of integers defined by a specific sieving process:\n * 1. Start with all positive integers: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...\n * 2. Keep 1, delete every 2nd number: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, ...\n * 3. The second remaining number is 3, so keep it and delete every 3rd number: 1, 3, 7, 9, 13, 15, 19, ...\n * 4. The third remaining number is 7, so keep it and delete every 7th number\n * 5. Continue this process to get all lucky numbers\n *\n * @param count - The number of lucky numbers to generate\n * @returns An array containing the first 'count' lucky numbers\n */\nfunction getLuckyNumbers(count: number): number[] {\n // Step 1: Start with all odd numbers (we skip the first elimination step since we know\n // the first sieve removes all even numbers)\n const numbers: number[] = []\n let n = 1\n // Generate enough odd numbers to ensure we'll have 'count' lucky numbers after sieving\n // The factor depends on how many numbers we expect to be eliminated\n // For larger counts, we need a higher factor to ensure we have enough numbers\n const factor = count < 100 ? 20 : 30\n const initialSize = count * factor\n\n while (numbers.length < initialSize) {\n numbers.push(n)\n n += 2\n }\n\n // Step 2 and beyond: Apply the lucky number sieve\n let sieveIndex = 1 // Start at index 1 (the second element which is 3)\n\n while (sieveIndex < numbers.length && sieveIndex < count) {\n const sieveValue = numbers[sieveIndex]!\n\n // Remove every sieveValue-th number\n // This is an optimization over creating a new array each time\n let j = 0\n for (let i = 0; i < numbers.length; i++) {\n if ((i + 1) % sieveValue !== 0) {\n numbers[j++] = numbers[i]!\n }\n }\n numbers.length = j // Truncate the array\n\n // Only increment sieveIndex if it's still within the new array bounds\n if (sieveIndex < numbers.length) {\n sieveIndex++\n }\n }\n\n // Return the requested number of lucky numbers\n return numbers.slice(0, count)\n}\n\nexport const luckySequence: SequenceDefinition<'lucky'> = {\n 'nth:lucky-seq': length => getLuckyNumbers(length),\n 'nth:lucky?': n => generateLuckyNumbers(l => l <= n).includes(n),\n 'nth:lucky-take-while': takeWhile => generateLuckyNumbers(takeWhile),\n}\n","export const mersenneNumbers = [3, 7, 31, 127, 2047, 8191, 131071, 524287, 2147483647]\n","import type { SequenceDefinition } from '.'\n\n/**\n * Checks if a number is a Padovan number.\n * Padovan numbers follow the recurrence relation: P(n) = P(n-2) + P(n-3) for n >= 3,\n * with initial values P(0) = P(1) = P(2) = 1.\n *\n * The first few Padovan numbers are:\n * 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37, 49, 65, 86, 114, 151, 200, ...\n *\n * @param num - The number to check\n * @returns True if the number is a Padovan number, false otherwise\n */\nfunction isPadovan(num: number): boolean {\n // Padovan numbers are always positive integers\n if (!Number.isInteger(num) || num <= 0) {\n return false\n }\n\n // Special case: The first three Padovan numbers are all 1\n if (num === 1) {\n return true\n }\n\n // Pre-calculated Padovan numbers (for efficient lookup, verified for correctness)\n const padovanNumbers = [\n 1,\n 1,\n 1,\n 2,\n 2,\n 3,\n 4,\n 5,\n 7,\n 9,\n 12,\n 16,\n 21,\n 28,\n 37,\n 49,\n 65,\n 86,\n 114,\n 151,\n 200,\n 265,\n 351,\n 465,\n 616,\n 816,\n 1081,\n 1432,\n 1897,\n 2513,\n 3329,\n 4410,\n 5842,\n 7739,\n 10252,\n 13581,\n 17991,\n 23833,\n 31572,\n 41824,\n 55405,\n 73396,\n 97229,\n ]\n\n // Direct lookup for known values\n if (padovanNumbers.includes(num)) {\n return true\n }\n\n // For numbers larger than our pre-calculated list but within JavaScript's safe range\n if (num > padovanNumbers[padovanNumbers.length - 1]! && num <= Number.MAX_SAFE_INTEGER) {\n // Start with the last three values from our known sequence\n let a = padovanNumbers[padovanNumbers.length - 3]!\n let b = padovanNumbers[padovanNumbers.length - 2]!\n let c = padovanNumbers[padovanNumbers.length - 1]!\n let next\n\n // Generate Padovan numbers until we either find a match or exceed the input\n while (c < num) {\n next = a + b\n a = b\n b = c\n c = next\n\n if (c === num) {\n return true\n }\n\n // Check for numeric overflow/precision issues\n if (!Number.isSafeInteger(c)) {\n return false\n }\n }\n }\n\n return false\n}\n\nexport const padovanSequence: SequenceDefinition<'padovan'> = {\n 'nth:padovan-seq': (length) => {\n const padovan = [1, 1, 1]\n for (let i = 3; i < length; i += 1) {\n padovan[i] = padovan[i - 2]! + padovan[i - 3]!\n }\n return padovan.slice(0, length)\n },\n 'nth:padovan?': n => isPadovan(n),\n 'nth:padovan-take-while': (takeWhile) => {\n const padovan: number[] = []\n if (!takeWhile(1, 0)) {\n return padovan\n }\n padovan.push(1)\n if (!takeWhile(1, 1)) {\n return padovan\n }\n padovan.push(1)\n if (!takeWhile(1, 2)) {\n return padovan\n }\n padovan.push(1)\n\n let a = 1\n let b = 1\n let c = 1\n for (let i = 4; ; i += 1) {\n const temp = a + b\n a = b\n b = c\n c = temp\n if (!takeWhile(c, i)) {\n break\n }\n padovan.push(c)\n }\n return padovan\n },\n}\n","export const pellNumbers = [\n 1,\n 2,\n 5,\n 12,\n 29,\n 70,\n 169,\n 408,\n 985,\n 2378,\n 5741,\n 13860,\n 33461,\n 80782,\n 195025,\n 470832,\n 1136689,\n 2744210,\n 6625109,\n 15994428,\n 38613965,\n 93222358,\n 225058681,\n 543339720,\n 1311738121,\n 3166815962,\n 7645370045,\n 18457556052,\n 44560482149,\n 107578520350,\n 259717522849,\n 627013566048,\n 1513744654945,\n 3654502875938,\n 8822750406821,\n 21300003689580,\n 51422757785981,\n 124145519261542,\n 299713796309065,\n 723573111879672,\n 1746860020068409,\n 4217293152016490,\n]\n","export const perfectNumbers = [6, 28, 496, 8128, 33550336, 8589869056, 137438691328]\n","import type { SequenceDefinition } from '.'\n\nexport const perfectCubeSequence: SequenceDefinition<'perfect-cube'> = {\n 'nth:perfect-cube-seq': (length) => {\n const perfectcubes = []\n for (let i = 1; i <= length; i++) {\n perfectcubes.push(i ** 3)\n }\n return perfectcubes\n },\n 'nth:perfect-cube?': n => n > 0 && Number.isInteger(Math.cbrt(n)),\n 'nth:perfect-cube-take-while': (takeWhile) => {\n const perfectcubes = []\n for (let i = 1; ; i++) {\n const value = i ** 3\n if (!takeWhile(value, i)) {\n break\n }\n perfectcubes.push(value)\n }\n return perfectcubes\n },\n}\n","import { approxEqual } from '../../../../../../utils'\nimport type { SequenceDefinition } from '.'\n\n/**\n * Checks if a number is a perfect power and returns the base and exponent if it is.\n * A perfect power is a number that can be expressed as an integer power of another integer.\n *\n * @param n - The number to check\n * @returns [base, exponent] if n is a perfect power, null otherwise\n */\nexport function perfectPower(n: number): [number, number] | null {\n // Handle edge cases\n if (n < 2) {\n if (n === 1) {\n // 1 is 1^k for any k, we return [1, 2] as the simplest representation\n return [1, 2]\n }\n return null // Non positive numbers are not perfect powers\n }\n\n // For each possible exponent k, try to find base b such that b^k = n\n const maxK = Math.floor(Math.log2(n)) + 1\n\n for (let k = 2; k <= maxK; k++) {\n // Calculate the potential base as n^(1/k)\n const b = n ** (1 / k)\n const roundedB = Math.round(b)\n\n if (approxEqual(roundedB ** k, n)) {\n return [roundedB, k]\n }\n }\n\n return null // Not a perfect power\n}\n\nexport const perfectPowerSequence: SequenceDefinition<'perfect-power'> = {\n 'nth:perfect-power-seq': (length) => {\n const perfectPowers: number[] = []\n for (let i = 1; perfectPowers.length < length; i++) {\n if (perfectPower(i)) {\n perfectPowers.push(i)\n }\n }\n return perfectPowers\n },\n 'nth:perfect-power?': n => perfectPower(n) !== null,\n 'nth:perfect-power-take-while': (takeWhile) => {\n const perfectPowers: number[] = []\n for (let i = 1; ; i++) {\n if (perfectPower(i)) {\n if (!takeWhile(i, perfectPowers.length)) {\n break\n }\n perfectPowers.push(i)\n }\n }\n return perfectPowers\n },\n}\n","import type { SequenceDefinition } from '.'\n\nexport const perfectSquareSequence: SequenceDefinition<'perfect-square'> = {\n 'nth:perfect-square-seq': (length) => {\n const perfectSquares = []\n for (let i = 1; i <= length; i++) {\n perfectSquares.push(i ** 2)\n }\n return perfectSquares\n },\n 'nth:perfect-square?': n => n > 0 && Number.isInteger(Math.sqrt(n)),\n 'nth:perfect-square-take-while': (takeWhile) => {\n const perfectSquares = []\n for (let i = 1; ; i++) {\n const value = i ** 2\n if (!takeWhile(value, i)) {\n break\n }\n perfectSquares.push(value)\n }\n return perfectSquares\n },\n}\n","import { assertFunctionLike } from '../../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../../typeGuards/number'\nimport type { SequenceNormalExpressions } from '.'\n\nexport const poligonalNormalExpressions: SequenceNormalExpressions<'polygonal'> = {\n 'nth:polygonal-seq': {\n evaluate: ([sides, n], sourceCodeInfo): number[] => {\n assertNumber(sides, sourceCodeInfo, { integer: true, gte: 3 })\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n\n const polygonal = []\n for (let i = 1; i <= n; i += 1) {\n polygonal[i - 1] = (i * i * (sides - 2) - i * (sides - 4)) / 2\n }\n return polygonal\n },\n paramCount: 2,\n },\n 'nth:polygonal-take-while': {\n evaluate: ([sides, fn], sourceCodeInfo, contextStack, { executeFunction }): number[] => {\n assertNumber(sides, sourceCodeInfo, { integer: true, gte: 3 })\n assertFunctionLike(fn, sourceCodeInfo)\n\n const polygonal = []\n for (let i = 1; ; i += 1) {\n const value = (i * i * (sides - 2) - i * (sides - 4)) / 2\n if (!executeFunction(fn, [value, i], contextStack, sourceCodeInfo)) {\n break\n }\n polygonal[i - 1] = (i * i * (sides - 2) - i * (sides - 4)) / 2\n }\n return polygonal\n },\n paramCount: 2,\n },\n 'nth:polygonal-nth': {\n evaluate: ([sides, n], sourceCodeInfo): number => {\n assertNumber(sides, sourceCodeInfo, { integer: true, gte: 3 })\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n return (n * n * (sides - 2) - n * (sides - 4)) / 2\n },\n paramCount: 2,\n },\n 'nth:polygonal?': {\n evaluate: ([sides, n], sourceCodeInfo): boolean => {\n assertNumber(n, sourceCodeInfo, { integer: true })\n assertNumber(sides, sourceCodeInfo, { integer: true, gte: 3 })\n\n if (n <= 0) {\n return false\n }\n const a = sides - 2\n const b = sides - 4\n\n const discriminant = 8 * a * n + b * b\n const sqrtPart = Math.sqrt(discriminant)\n\n // Discriminant must yield an integer square root\n if (!Number.isInteger(sqrtPart))\n return false\n\n const numerator = sqrtPart + b\n\n // Numerator must be divisible by 2*a\n if (numerator % (2 * a) !== 0)\n return false\n\n const x = numerator / (2 * a)\n\n // x must be a positive integer\n return Number.isInteger(x) && x > 0\n },\n paramCount: 2,\n },\n}\n","import type { SequenceDefinition } from '.'\n\n/**\n * Generates the first 'n' terms of the Recamán sequence.\n *\n * @param n - Number of terms to generate\n * @returns Array containing the first n terms of the Recamán sequence\n */\nexport function generateRecamanSequence(n: number): number[] {\n if (n === 1)\n return [0]\n\n const sequence: number[] = [0]\n const seen = new Set<number>([0])\n\n for (let i = 1; i < n; i++) {\n // Try to go backward\n let next = sequence[i - 1]! - i\n\n // If that's not positive or already seen, go forward\n if (next <= 0 || seen.has(next)) {\n next = sequence[i - 1]! + i\n }\n\n sequence.push(next)\n seen.add(next)\n }\n\n return sequence\n}\n\nexport const recamanSequence: SequenceDefinition<'recaman'> = {\n 'nth:recaman-seq': length => generateRecamanSequence(length),\n 'nth:recaman-take-while': (takeWhile) => {\n if (!takeWhile(0, 0))\n return []\n\n const sequence: number[] = [0]\n const seen = new Set<number>([0])\n\n for (let i = 1; ; i++) {\n // Try to go backward\n let next = sequence[i - 1]! - i\n\n // If that's not positive or already seen, go forward\n if (next <= 0 || seen.has(next)) {\n next = sequence[i - 1]! + i\n }\n\n if (!takeWhile(next, i))\n break\n\n sequence.push(next)\n seen.add(next)\n }\n\n return sequence\n },\n 'nth:recaman?': () => true,\n}\n","export const sylvesterNumbers = [\n 2,\n 6,\n 42,\n 1806,\n 3263442,\n 10650056950806,\n]\n","import type { SequenceDefinition } from '.'\n\nexport const thueMorseSequence: SequenceDefinition<'thue-morse'> = {\n 'nth:thue-morse-seq': (length) => {\n const thueMorse = []\n for (let i = 0; i < length; i += 1) {\n thueMorse[i] = countSetBits(i) % 2\n }\n return thueMorse\n },\n 'nth:thue-morse-take-while': (takeWhile) => {\n const thueMorse = []\n for (let i = 0; ; i += 1) {\n const value = countSetBits(i) % 2\n if (!takeWhile(value, i)) {\n break\n }\n thueMorse[i] = value\n }\n return thueMorse\n },\n 'nth:thue-morse?': n => n === 1 || n === 0,\n}\n\nfunction countSetBits(num: number): number {\n let count = 0\n while (num) {\n count += num & 1\n num >>= 1\n }\n return count\n}\n","export const tribonacciNumbers = [\n 0,\n 1,\n 1,\n 2,\n 4,\n 7,\n 13,\n 24,\n 44,\n 81,\n 149,\n 274,\n 504,\n 927,\n 1705,\n 3136,\n 5768,\n 10609,\n 19513,\n 35890,\n 66012,\n 121415,\n 223317,\n 410744,\n 755476,\n 1389537,\n 2555757,\n 4700770,\n 8646064,\n 15902591,\n 29249425,\n 53798080,\n 98950096,\n 181997601,\n 334745777,\n 615693474,\n 1132436852,\n 2082876103,\n 3831006429,\n 7046319384,\n 12960201916,\n 23837527729,\n 43844049029,\n 80641778674,\n 148323355432,\n 272809183135,\n 501774317241,\n 922906855808,\n 1697490356184,\n 3122171529233,\n 5742568741225,\n 10562230626642,\n 19426970897100,\n 35731770264967,\n 65720971788709,\n 120879712950776,\n 222332455004452,\n 408933139743937,\n 752145307699165,\n 1383410902447554,\n 2544489349890656,\n 4680045560037375,\n 8607945812375585,\n]\n","import { LitsError } from '../../../../../../errors'\nimport type { SourceCodeInfo } from '../../../../../../tokenizer/token'\nimport { assertFunctionLike } from '../../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../../typeGuards/number'\nimport { assertString } from '../../../../../../typeGuards/string'\nimport type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../../../../../interface'\nimport { abundantSequence } from './abundant'\nimport { arithmeticNormalExpressions } from './arithmetic'\nimport { bellNumbers } from './bell'\nimport { bernoulliNormalExpressions } from './bernoulli'\nimport { catalanNumbers } from './catalan'\nimport { collatzSequence } from './collatz'\nimport { compositeSequence } from './composite'\nimport { deficientSequence } from './deficient'\nimport { factorialNumbers } from './factorial'\nimport { fibonacciNumbers } from './fibonacci'\nimport { geometricNormalExpressions } from './geometric'\nimport { golombSequence } from './golomb'\nimport { happySequence } from './happy'\nimport { jugglerSequence } from './juggler'\nimport { lookAndSaySequence } from './lookAndSay'\nimport { lucasNumbers } from './lucas'\nimport { luckySequence } from './lucky'\nimport { mersenneNumbers } from './mersenne'\nimport { padovanSequence } from './padovan'\nimport { partitionNumbers } from './partition'\nimport { pellNumbers } from './pell'\nimport { perfectNumbers } from './perfect'\nimport { perfectCubeSequence } from './perfectCube'\nimport { perfectPowerSequence } from './perfectPower'\nimport { perfectSquareSequence } from './perfectSquare'\nimport { poligonalNormalExpressions } from './poligonal'\nimport { primeSequence } from './prime'\nimport { recamanSequence } from './recaman'\nimport { sylvesterNumbers } from './sylvester'\nimport { thueMorseSequence } from './thueMorse'\nimport { tribonacciNumbers } from './tribonacci'\n\ntype SeqKey<T extends string> = `nth:${T}-seq`\ntype TakeWhileKey<T extends string> = `nth:${T}-take-while`\ntype NthKey<T extends string> = `nth:${T}-nth`\ntype PredKey<T extends string> = `nth:${T}?`\n\ntype SeqFunction<Type extends number | string> = (length: number, sourceCodeInfo: SourceCodeInfo | undefined) => Type[]\ntype TakeWhileFunction<Type extends number | string> = (pred: (value: Type, index: number) => boolean, sourceCodeInfo: SourceCodeInfo | undefined) => Type[]\ntype PredFunction<Type extends number | string> = (n: Type, sourceCodeInfo: SourceCodeInfo | undefined) => boolean\n\nexport type SequenceKeys<T extends string> = SeqKey<T> | TakeWhileKey<T> | NthKey<T> | PredKey<T>\n\nexport type SequenceDefinition<T extends string, Type extends number | string = number> = {\n [key in Exclude<SequenceKeys<T>, NthKey<T>>]: key extends SeqKey<T>\n ? SeqFunction<Type>\n : key extends TakeWhileKey<T>\n ? TakeWhileFunction<Type>\n : PredFunction<Type>\n} & {\n maxLength?: number\n} & (Type extends string ? {\n string: true\n} : {\n string?: never\n}) & {\n noNth?: true\n}\n\nexport type SequenceNormalExpressions<T extends string, Type extends string | number = number> = {\n [key in SequenceKeys<T>]: key extends SeqKey<T>\n ? BuiltinNormalExpression<Type[]>\n : key extends TakeWhileKey<T>\n ? BuiltinNormalExpression<Type[]>\n : key extends NthKey<T>\n ? BuiltinNormalExpression<Type>\n : BuiltinNormalExpression<boolean>\n}\n\nexport const sequenceNormalExpressions: BuiltinNormalExpressions = {}\n\naddSequence(abundantSequence)\naddSequence(collatzSequence)\naddSequence(compositeSequence)\naddSequence(deficientSequence)\naddSequence(golombSequence)\naddSequence(happySequence)\naddSequence(jugglerSequence)\naddSequence(lookAndSaySequence)\naddSequence(luckySequence)\naddSequence(padovanSequence)\naddSequence(perfectSquareSequence)\naddSequence(perfectCubeSequence)\naddSequence(perfectPowerSequence)\naddSequence(primeSequence)\naddSequence(recamanSequence)\naddSequence(thueMorseSequence)\naddNormalExpressions(getFiniteNumberSequence('tribonacci', tribonacciNumbers))\naddNormalExpressions(getFiniteNumberSequence('catalan', catalanNumbers))\naddNormalExpressions(getFiniteNumberSequence('factorial', factorialNumbers))\naddNormalExpressions(getFiniteNumberSequence('fibonacci', fibonacciNumbers))\naddNormalExpressions(getFiniteNumberSequence('lucas', lucasNumbers))\naddNormalExpressions(getFiniteNumberSequence('mersenne', mersenneNumbers))\naddNormalExpressions(getFiniteNumberSequence('partition', partitionNumbers))\naddNormalExpressions(getFiniteNumberSequence('pell', pellNumbers))\naddNormalExpressions(getFiniteNumberSequence('perfect', perfectNumbers))\naddNormalExpressions(getFiniteNumberSequence('sylvester', sylvesterNumbers))\naddNormalExpressions(getFiniteNumberSequence('bell', bellNumbers))\naddNormalExpressions(arithmeticNormalExpressions)\naddNormalExpressions(bernoulliNormalExpressions)\naddNormalExpressions(geometricNormalExpressions)\naddNormalExpressions(poligonalNormalExpressions)\n\nfunction addNormalExpressions(normalExpressions: BuiltinNormalExpressions) {\n for (const [key, value] of Object.entries(normalExpressions)) {\n /* v8 ignore next 3 */\n if (sequenceNormalExpressions[key]) {\n throw new Error(`Duplicate normal expression key found: ${key}`)\n }\n sequenceNormalExpressions[key] = value\n }\n}\n\nfunction getFiniteNumberSequence<T extends string>(name: T, sequence: number[]): SequenceNormalExpressions<T> {\n return {\n [`nth:${name}-seq`]: createSeqNormalExpression(length => sequence.slice(0, length), sequence.length),\n [`nth:${name}-take-while`]: createTakeWhileNormalExpression((takeWhile) => {\n let i = 0\n for (i = 0; ; i += 1) {\n if (i >= sequence.length) {\n break\n }\n if (!takeWhile(sequence[i]!, i)) {\n break\n }\n }\n return sequence.slice(0, i)\n }, sequence.length),\n [`nth:${name}-nth`]: createNthNormalExpression(() => sequence, sequence.length),\n [`nth:${name}?`]: createNumberPredNormalExpression(n => sequence.includes(n)),\n } as unknown as SequenceNormalExpressions<T>\n}\n\nfunction addSequence<Type extends number | string>(sequence: SequenceDefinition<string, Type>) {\n for (const [key, value] of Object.entries(sequence)) {\n /* v8 ignore next 3 */\n if (sequenceNormalExpressions[key]) {\n throw new Error(`Duplicate normal expression key found: ${key}`)\n }\n if (key.endsWith('seq')) {\n sequenceNormalExpressions[key] = createSeqNormalExpression(value as SeqFunction<Type>, sequence.maxLength)\n if (!sequence.noNth) {\n sequenceNormalExpressions[key.replace(/seq$/, 'nth')] = createNthNormalExpression(value as SeqFunction<Type>, sequence.maxLength)\n }\n }\n else if (key.endsWith('take-while')) {\n sequenceNormalExpressions[key] = createTakeWhileNormalExpression(value as TakeWhileFunction<Type>, sequence.maxLength)\n }\n else if (key.endsWith('?')) {\n if (sequence.string) {\n sequenceNormalExpressions[key] = createStringPredNormalExpression(value as PredFunction<string>)\n }\n else {\n sequenceNormalExpressions[key] = createNumberPredNormalExpression(value as PredFunction<number>)\n }\n }\n }\n}\n\nfunction createSeqNormalExpression<Type extends number | string>(\n seqFunction: SeqFunction<Type>,\n maxLength: number | undefined,\n): BuiltinNormalExpression<Type[]> {\n return {\n evaluate: (params, sourceCodeInfo) => {\n const length = params[0] ?? maxLength\n assertNumber(length, sourceCodeInfo, { integer: true, positive: true, lte: maxLength })\n const result = seqFunction(length, sourceCodeInfo)\n if (typeof result[0] === 'number') {\n /* v8 ignore next 3 */\n if (result.some(n => (n as number) > Number.MAX_SAFE_INTEGER)) {\n throw new LitsError('Result exceeds maximum safe integer', sourceCodeInfo)\n }\n }\n return result\n },\n paramCount: typeof maxLength === 'number' ? { max: 1 } : 1,\n }\n}\n\nfunction createTakeWhileNormalExpression<Type extends number | string>(\n takeWhileFunction: TakeWhileFunction<Type>,\n maxLength: number | undefined,\n): BuiltinNormalExpression<Type[]> {\n return {\n evaluate: (params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fn = params[0]\n assertFunctionLike(fn, sourceCodeInfo)\n const result = takeWhileFunction((value, index) => !!executeFunction(fn, [value, index], contextStack), sourceCodeInfo)\n if (typeof result[0] === 'number') {\n /* v8 ignore next 3 */\n if (result.some(n => (n as number) > Number.MAX_SAFE_INTEGER)) {\n throw new LitsError('Result exceeds maximum safe integer', sourceCodeInfo)\n }\n }\n return result\n },\n paramCount: typeof maxLength === 'number' ? { max: 1 } : 1,\n }\n}\n\nfunction createNthNormalExpression<Type extends number | string>(\n seqFunction: SeqFunction<Type>,\n maxLength: number | undefined,\n): BuiltinNormalExpression<Type> {\n return {\n evaluate: (params, sourceCodeInfo) => {\n const n = params[0]\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true, lte: maxLength })\n const sequence = seqFunction(n, sourceCodeInfo)\n if (typeof sequence[0] === 'number') {\n /* v8 ignore next 3 */\n if (sequence.some(val => (val as number) > Number.MAX_SAFE_INTEGER)) {\n throw new LitsError('Result exceeds maximum safe integer', sourceCodeInfo)\n }\n }\n return sequence[n - 1]!\n },\n paramCount: 1,\n }\n}\n\nfunction createNumberPredNormalExpression(\n predFunction: PredFunction<number>,\n): BuiltinNormalExpression<boolean> {\n return {\n evaluate: (params, sourceCodeInfo) => {\n const value = params[0]\n assertNumber(value, sourceCodeInfo)\n return predFunction(value, sourceCodeInfo)\n },\n paramCount: 1,\n }\n}\n\nfunction createStringPredNormalExpression(\n predFunction: PredFunction<string>,\n): BuiltinNormalExpression<boolean> {\n return {\n evaluate: (params, sourceCodeInfo) => {\n const value = params[0]\n assertString(value, sourceCodeInfo)\n return predFunction(value, sourceCodeInfo)\n },\n paramCount: 1,\n }\n}\n","import { LitsError } from '../../../../../errors'\nimport type { Arr } from '../../../../../interface'\nimport { assertVector } from '../../../../../typeGuards/annotatedArrays'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\nimport { combinationsNormalExpressions } from './combinations'\nimport { derangementsNormalExpressions } from './derangements'\nimport { divisorsNormalExpressions, getDivisors, getProperDivisors } from './divisors'\nimport { factorialNormalExpressions, factorialOf } from './factorial'\nimport { partitionsNormalExpressions } from './partitions'\nimport { permutationsNormalExpressions } from './permutations'\nimport { powerSetNormalExpressions } from './powerSet'\nimport { primeFactors, primeFactorsNormalExpressions } from './primeFactors'\nimport { sequenceNormalExpressions } from './sequences'\nimport { perfectPower } from './sequences/perfectPower'\n\nfunction gcd(a: number, b: number): number {\n while (b !== 0) {\n const temp = b\n b = a % b\n a = temp\n }\n return Math.abs(a)\n}\n\nfunction lcm(a: number, b: number): number {\n return Math.floor((a * b) / gcd(a, b))\n}\n\nfunction mobius(n: number): number {\n if (n === 1)\n return 1\n\n const factors = primeFactors(n)\n const uniqueFactors = new Set(factors)\n\n // If n has a repeated prime factor (not square-free)\n if (uniqueFactors.size !== factors.length)\n return 0\n\n // If square-free with even number of prime factors: return 1\n // If square-free with odd number of prime factors: return -1\n return factors.length % 2 === 0 ? 1 : -1\n}\n\n/**\n * Efficiently computes (base^exponent) % modulus using the square-and-multiply algorithm\n * Based on the pseudocode algorithm for modular exponentiation\n *\n * @param base - The base number\n * @param exponent - The exponent (must be non-negative)\n * @param modulus - The modulus (must be positive)\n * @returns The result of (base^exponent) % modulus\n */\nfunction modExp(base: number, exponent: number, modulus: number): number {\n // Edge case: modulus is 1\n if (modulus === 1) {\n return 0\n }\n\n // Assert: (modulus - 1) * (modulus - 1) does not overflow base\n // This is a limitation of using regular JavaScript numbers instead of BigInt\n\n // Initialize result\n let result = 1\n\n // Apply modulo to base first\n base = base % modulus\n\n // Square and multiply algorithm\n while (exponent > 0) {\n // If current bit of exponent is 1, multiply result with current base\n if (exponent % 2 === 1) {\n result = (result * base) % modulus\n }\n\n // Shift exponent right (divide by 2)\n exponent = exponent >> 1\n\n // Square the base for next iteration\n base = (base * base) % modulus\n }\n\n return result\n}\n\n/**\n * Extended Euclidean Algorithm\n * Finds gcd(a,b) and coefficients x,y such that ax + by = gcd(a,b)\n */\nfunction extendedGcd(a: number, b: number): [number, number, number] {\n if (b === 0) {\n return [a, 1, 0]\n }\n\n const [g, x, y] = extendedGcd(b, a % b)\n return [g, y, x - Math.floor(a / b) * y]\n}\n\n/**\n * Modular Multiplicative Inverse\n * Finds x such that (a * x) % m = 1\n */\nfunction modInverse(a: number, m: number): number {\n const [g, x] = extendedGcd(a, m)\n\n if (g !== 1) {\n throw new Error(`Modular inverse does not exist (gcd(${a}, ${m}) = ${g})`)\n }\n\n return ((x % m) + m) % m // Ensure positive result\n}\n\n/**\n * Chinese Remainder Theorem\n * Solve system of congruences: x ≡ remainders[i] (mod moduli[i])\n * Returns the smallest positive integer that satisfies all congruences\n */\nfunction chineseRemainder(remainders: number[], moduli: number[]): number {\n // Verify moduli are pairwise coprime\n for (let i = 0; i < moduli.length; i++) {\n for (let j = i + 1; j < moduli.length; j++) {\n const extGcd = extendedGcd(moduli[i]!, moduli[j]!)[0]\n if (extGcd !== 1) {\n throw new Error(`Moduli must be pairwise coprime, but gcd(${moduli[i]}, ${moduli[j]}) = ${extGcd}`)\n }\n }\n }\n\n // Calculate product of all moduli\n const product = moduli.reduce((acc, val) => acc * val, 1)\n\n let sum = 0\n\n for (let i = 0; i < remainders.length; i++) {\n const ai = remainders[i]!\n const ni = moduli[i]!\n const bi = product / ni\n\n // Find modular multiplicative inverse of bi modulo ni\n const inverse = modInverse(bi, ni)\n\n // Add contribution from this congruence\n sum = (sum + ai * bi * inverse) % product\n }\n\n return sum\n}\n\nexport const combinatoricalNormalExpression: BuiltinNormalExpressions = {\n 'nth:coprime?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n assertNumber(a, sourceCodeInfo, { integer: true })\n assertNumber(b, sourceCodeInfo, { integer: true })\n return gcd(a, b) === 1\n },\n paramCount: 2,\n },\n 'nth:divisible-by?': {\n evaluate: ([value, divisor], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n assertNumber(divisor, sourceCodeInfo, { integer: true })\n if (divisor === 0)\n return false\n return value % divisor === 0\n },\n paramCount: 2,\n },\n 'nth:gcd': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertNumber(a, sourceCodeInfo)\n assertNumber(b, sourceCodeInfo)\n return gcd(a, b)\n },\n paramCount: 2,\n },\n 'nth:lcm': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertNumber(a, sourceCodeInfo)\n assertNumber(b, sourceCodeInfo)\n return lcm(a, b)\n },\n paramCount: 2,\n },\n\n 'nth:multinomial': {\n evaluate: ([...args], sourceCodeInfo): number => {\n assertVector(args, sourceCodeInfo)\n const sum = args.reduce((acc: number, curr) => {\n assertNumber(curr, sourceCodeInfo, { integer: true, nonNegative: true })\n return acc + curr\n }, 0)\n return factorialOf(sum) / args.reduce((acc, curr) => acc * factorialOf(curr), 1)\n },\n paramCount: { min: 1 },\n },\n 'nth:amicable?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n assertNumber(a, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(b, sourceCodeInfo, { integer: true, positive: true })\n const sumA = getProperDivisors(a).reduce((acc, curr) => acc + curr, 0)\n const sumB = getProperDivisors(b).reduce((acc, curr) => acc + curr, 0)\n return sumA === b && sumB === a && a !== b\n },\n paramCount: 2,\n },\n 'nth:euler-totient': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n let result = n\n for (let p = 2; p * p <= n; p += 1) {\n if (n % p === 0) {\n while (n % p === 0)\n n /= p\n result -= result / p\n }\n }\n if (n > 1)\n result -= result / n\n return result\n },\n paramCount: 1,\n },\n 'nth:mobius': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n if (n === 1)\n return 1\n\n const factors = primeFactors(n)\n const uniqueFactors = new Set(factors)\n\n // If n has a repeated prime factor (not square-free)\n if (uniqueFactors.size !== factors.length)\n return 0\n\n // If square-free with even number of prime factors: return 1\n // If square-free with odd number of prime factors: return -1\n return factors.length % 2 === 0 ? 1 : -1\n },\n paramCount: 1,\n aliases: ['nth:möbius'],\n },\n 'nth:mertens': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n if (n === 1)\n return 1\n let result = 0\n for (let i = 1; i <= n; i++) {\n const mobiusValue = mobius(i)\n result += mobiusValue// * Math.floor(n / i)\n }\n return result\n },\n paramCount: 1,\n aliases: ['nth:mertens'],\n },\n 'nth:sigma': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n return getDivisors(n).reduce((acc, curr) => acc + curr, 0)\n },\n paramCount: 1,\n },\n 'nth:carmichael-lambda': {\n evaluate: ([n], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n if (n === 1) {\n return 1\n }\n\n // Count occurrences of each prime factor\n const primes = primeFactors(n)\n const factorMap = new Map<number, number>()\n\n for (const prime of primes) {\n factorMap.set(prime, (factorMap.get(prime) || 0) + 1)\n }\n\n const lambdaValues: number[] = []\n\n // Calculate lambda for each prime power\n for (const [p, k] of factorMap.entries()) {\n if (p === 2) {\n if (k === 1) {\n lambdaValues.push(1) // λ(2) = 1\n }\n else if (k === 2) {\n lambdaValues.push(2) // λ(4) = 2\n }\n else {\n lambdaValues.push(2 ** (k - 2)) // λ(2^k) = 2^(k-2) for k >= 3\n }\n }\n else {\n // For odd prime powers p^k: λ(p^k) = (p-1)*p^(k-1)\n lambdaValues.push((p - 1) * p ** (k - 1))\n }\n }\n\n // Find LCM of all lambda values\n return lambdaValues.reduce((acc, val) => lcm(acc, val), 1)\n },\n paramCount: 1,\n },\n 'nth:cartesian-product': {\n evaluate: (params, sourceCodeInfo): Arr[] => {\n params.forEach((set) => {\n assertArray(set, sourceCodeInfo)\n })\n const sets = params as Arr[]\n return sets.reduce((acc: Arr[], set) => {\n const result: Arr[] = []\n acc.forEach((arr) => {\n set.forEach((value) => {\n result.push([...arr, value])\n })\n })\n return result\n }, [[]])\n },\n paramCount: { min: 1 },\n },\n 'nth:perfect-power': {\n evaluate: ([n], sourceCodeInfo): [number, number] | null => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n const result = perfectPower(n)\n return result || null\n },\n paramCount: 1,\n },\n 'nth:mod-exp': {\n evaluate: ([base, exponent, modulus], sourceCodeInfo): number => {\n assertNumber(base, sourceCodeInfo, { finite: true })\n assertNumber(exponent, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(modulus, sourceCodeInfo, { integer: true, positive: true })\n\n return modExp(base, exponent, modulus)\n },\n paramCount: 3,\n },\n 'nth:mod-inv': {\n evaluate: ([a, m], sourceCodeInfo): number => {\n assertNumber(a, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(m, sourceCodeInfo, { integer: true, positive: true })\n\n return modInverse(a, m)\n },\n paramCount: 2,\n },\n 'nth:extended-gcd': {\n evaluate: ([a, b], sourceCodeInfo): [number, number, number] => {\n assertNumber(a, sourceCodeInfo, { integer: true })\n assertNumber(b, sourceCodeInfo, { integer: true })\n\n return extendedGcd(a, b)\n },\n paramCount: 2,\n },\n 'nth:chinese-remainder': {\n evaluate: ([remainders, moduli], sourceCodeInfo): number => {\n assertVector(remainders, sourceCodeInfo)\n assertVector(moduli, sourceCodeInfo)\n if (remainders.length !== moduli.length) {\n throw new Error('Remainders and moduli must have the same length.')\n }\n try {\n return chineseRemainder(remainders, moduli)\n }\n catch (error) {\n throw new LitsError((error as Error).message, sourceCodeInfo)\n }\n },\n paramCount: 2,\n },\n 'nth:stirling-first': {\n evaluate: ([n, k], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(k, sourceCodeInfo, { integer: true, positive: true, lte: n })\n\n // Create a table to store results\n const dp: number[][] = Array.from({ length: n + 1 }, () => Array<number>(k + 1).fill(0))\n\n // Base case\n dp[0]![0] = 1\n\n // Fill the table using the recurrence relation\n for (let i = 1; i <= n; i++) {\n for (let j = 1; j <= Math.min(i, k); j++) {\n dp[i]![j] = dp[i - 1]![j - 1]! + (i - 1) * dp[i - 1]![j]!\n }\n }\n\n return dp[n]![k]!\n },\n paramCount: 2,\n },\n 'nth:stirling-second': {\n evaluate: ([n, k], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, positive: true })\n assertNumber(k, sourceCodeInfo, { integer: true, positive: true, lte: n })\n if (k === 1)\n return 1 // Only one way to put n objects into one subset\n if (k === n)\n return 1 // Only one way to put n objects into n subsets (one object per subset)\n\n // Create a 2D array for memoization\n const dp: number[][] = Array.from({ length: n + 1 }, () => Array<number>(k + 1).fill(0))\n\n // Initialize base cases\n dp[0]![0] = 1\n\n // Fill the dp table using the recurrence relation:\n // S(n,k) = k * S(n-1,k) + S(n-1,k-1)\n for (let i = 1; i <= n; i++) {\n for (let j = 1; j <= Math.min(i, k); j++) {\n dp[i]![j] = j * dp[i - 1]![j]! + dp[i - 1]![j - 1]!\n }\n }\n\n return dp[n]![k]!\n },\n paramCount: 2,\n },\n}\n\naddSequences(sequenceNormalExpressions)\naddNormalExpressions(factorialNormalExpressions)\naddNormalExpressions(divisorsNormalExpressions)\naddNormalExpressions(combinationsNormalExpressions)\naddNormalExpressions(permutationsNormalExpressions)\naddNormalExpressions(partitionsNormalExpressions)\naddNormalExpressions(primeFactorsNormalExpressions)\naddNormalExpressions(derangementsNormalExpressions)\naddNormalExpressions(powerSetNormalExpressions)\n\nfunction addSequences(sequences: BuiltinNormalExpressions) {\n for (const [key, value] of Object.entries(sequences)) {\n /* v8 ignore next 3 */\n if (combinatoricalNormalExpression[key]) {\n throw new Error(`Duplicate normal expression key found: ${key}`)\n }\n combinatoricalNormalExpression[key] = value\n }\n}\n\nfunction addNormalExpressions(normalExpressions: BuiltinNormalExpressions) {\n for (const [key, value] of Object.entries(normalExpressions)) {\n /* v8 ignore next 3 */\n if (combinatoricalNormalExpression[key]) {\n throw new Error(`Duplicate normal expression key found: ${key}`)\n }\n combinatoricalNormalExpression[key] = value\n }\n}\n","import { LitsError } from '../../../../../errors'\nimport type { Any, Arr } from '../../../../../interface'\nimport { assertArray } from '../../../../../typeGuards/array'\nimport { asAny } from '../../../../../typeGuards/lits'\nimport { assertNumber } from '../../../../../typeGuards/number'\nimport { assertString } from '../../../../../typeGuards/string'\nimport type { BuiltinNormalExpressions } from '../../../../interface'\n\nexport const randomNormalExpression: BuiltinNormalExpressions = {\n '!:random': {\n evaluate: (): number => {\n return Math.random()\n },\n paramCount: 0,\n },\n '!:random-int': {\n evaluate: ([min, max], sourceCodeInfo): number => {\n assertNumber(min, sourceCodeInfo, { integer: true })\n assertNumber(max, sourceCodeInfo, { integer: true, gt: min })\n return Math.floor(Math.random() * (max - min)) + min\n },\n paramCount: 2,\n },\n '!:random-int-inclusive': {\n evaluate: ([min, max], sourceCodeInfo): number => {\n assertNumber(min, sourceCodeInfo, { integer: true })\n assertNumber(max, sourceCodeInfo, { integer: true, gte: min })\n return Math.floor(Math.random() * (max - min + 1)) + min\n },\n paramCount: 2,\n },\n '!:random-float': {\n evaluate: ([min, max], sourceCodeInfo): number => {\n assertNumber(min, sourceCodeInfo)\n assertNumber(max, sourceCodeInfo, { gt: min })\n return Math.random() * (max - min) + min\n },\n paramCount: 2,\n },\n '!:random-boolean': {\n evaluate: ([prob], sourceCodeInfo): boolean => {\n const probability = prob ?? 0.5\n assertNumber(probability, sourceCodeInfo, { gte: 0, lte: 1 })\n return Math.random() < probability\n },\n paramCount: { min: 0, max: 1 },\n },\n '!:random-item': {\n evaluate: ([array], sourceCodeInfo): Any => {\n assertArray(array, sourceCodeInfo)\n const index = Math.floor(Math.random() * array.length)\n return asAny(array[index])\n },\n paramCount: 1,\n },\n '!:random-sample': {\n evaluate: ([array, n], sourceCodeInfo): Arr => {\n assertArray(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n if (array.length === 0) {\n throw new LitsError('Cannot sample from an empty array.', sourceCodeInfo)\n }\n\n const result: Arr = []\n\n for (let i = 0; i < n; i++) {\n // Pick a random index from the array\n const randomIndex = Math.floor(Math.random() * array.length)\n // Add the randomly selected item to the result\n result.push(array[randomIndex])\n }\n\n return result\n },\n paramCount: 2,\n },\n '!:random-sample-unique': {\n evaluate: ([array, n], sourceCodeInfo): Arr => {\n assertArray(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true, lte: array.length })\n if (array.length === 0) {\n throw new LitsError('Cannot sample from an empty array.', sourceCodeInfo)\n }\n const result: Arr = []\n\n const copyArray = [...array]\n for (let i = 0; i < n; i++) {\n // Pick a random index from the array\n const randomIndex = Math.floor(Math.random() * copyArray.length)\n // Add the randomly selected item to the result\n result.push(copyArray[randomIndex])\n // Remove the used item from the copy array\n copyArray.splice(randomIndex, 1)\n }\n\n return result\n },\n paramCount: 2,\n },\n '!:shuffle': {\n evaluate: ([array], sourceCodeInfo): Arr => {\n assertArray(array, sourceCodeInfo)\n const shuffledArray = [...array]\n for (let i = shuffledArray.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]]\n }\n return shuffledArray\n },\n paramCount: 1,\n },\n '!:random-normal': {\n evaluate: ([mean, stdDev], sourceCodeInfo): number => {\n assertNumber(mean, sourceCodeInfo)\n assertNumber(stdDev, sourceCodeInfo, { gt: 0 })\n const u1 = Math.random()\n const u2 = Math.random()\n const z0 = Math.sqrt(-2.0 * Math.log(u1)) * Math.cos(2.0 * Math.PI * u2)\n return z0 * stdDev + mean\n },\n paramCount: 2,\n },\n '!:random-exponential': {\n evaluate: ([lambda], sourceCodeInfo): number => {\n assertNumber(lambda, sourceCodeInfo, { gt: 0 })\n const u = Math.random()\n return -Math.log(u) / lambda\n },\n paramCount: 1,\n },\n '!:random-binomial': {\n evaluate: ([n, p], sourceCodeInfo): number => {\n assertNumber(n, sourceCodeInfo, { integer: true, nonNegative: true })\n assertNumber(p, sourceCodeInfo, { gte: 0, lte: 1 })\n let k = 0\n for (let i = 0; i < n; i++) {\n if (Math.random() < p) {\n k++\n }\n }\n return k\n },\n paramCount: 2,\n },\n '!:random-poisson': {\n evaluate: ([lambda], sourceCodeInfo): number => {\n assertNumber(lambda, sourceCodeInfo, { gt: 0 })\n\n const L = Math.exp(-lambda)\n let k = 0\n let p = 1\n\n do {\n k++\n p *= Math.random()\n } while (p > L)\n\n return k - 1\n },\n paramCount: 1,\n },\n '!:random-gamma': {\n evaluate: ([shape, scale], sourceCodeInfo): number => {\n assertNumber(shape, sourceCodeInfo, { gt: 0 })\n assertNumber(scale, sourceCodeInfo, { gt: 0 })\n return randomGamma(shape, scale)\n },\n paramCount: 2,\n },\n '!:random-pareto': {\n evaluate: ([alpha], sourceCodeInfo): number => {\n assertNumber(alpha, sourceCodeInfo, { gt: 0 })\n const u = Math.random()\n return (1 / u) ** (1 / alpha)\n },\n paramCount: 1,\n },\n '!:uuid': {\n evaluate: (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = Math.random() * 16 | 0\n const value = char === 'x' ? random : (random & 0x3 | 0x8)\n return value.toString(16)\n })\n },\n paramCount: 0,\n },\n '!:random-char': {\n evaluate: ([charSet], sourceCodeInfo): string => {\n assertString(charSet, sourceCodeInfo)\n if (charSet.length === 0) {\n throw new LitsError('Character set cannot be empty.', sourceCodeInfo)\n }\n const randomIndex = Math.floor(Math.random() * charSet.length)\n return charSet[randomIndex]!\n },\n paramCount: 1,\n },\n '!:random-string': {\n evaluate: ([length, charSet], sourceCodeInfo): string => {\n assertNumber(length, sourceCodeInfo, { integer: true, positive: true })\n assertString(charSet, sourceCodeInfo)\n if (charSet.length === 0) {\n throw new LitsError('Character set cannot be empty.', sourceCodeInfo)\n }\n let result = ''\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.floor(Math.random() * charSet.length)\n result += charSet[randomIndex]!\n }\n return result\n },\n paramCount: 2,\n },\n '!:random-id': {\n evaluate: ([length], sourceCodeInfo): string => {\n assertNumber(length, sourceCodeInfo, { integer: true, positive: true })\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'\n let result = ''\n for (let i = 0; i < length; i++) {\n const randomIndex = Math.floor(Math.random() * chars.length)\n result += chars[randomIndex]!\n }\n return result\n },\n paramCount: 1,\n },\n '!:random-color': {\n evaluate: (): string => {\n const randomColor = Math.floor(Math.random() * 0x1000000).toString(16)\n return `#${randomColor.padStart(6, '0')}`\n },\n paramCount: 0,\n },\n}\n\n/**\n * Generates a random number from a gamma distribution\n * @param shape The shape parameter (alpha) - must be positive\n * @param scale The scale parameter (beta) - must be positive\n * @returns A random number following the gamma distribution\n */\nfunction randomGamma(shape: number, scale: number = 1): number {\n // Special case for shape < 1\n if (shape < 1) {\n const d = shape + 1.0 - 1.0 / 3.0\n return randomGamma(d, scale) * Math.random() ** (1.0 / shape)\n }\n\n // Marsaglia and Tsang method for shape >= 1\n const d = shape - 1.0 / 3.0\n const c = 1.0 / Math.sqrt(9.0 * d)\n\n let x: number, v: number, u: number\n\n while (true) {\n do {\n x = randn() // Standard normal random variable\n v = 1.0 + c * x\n } while (v <= 0)\n\n v = v * v * v\n u = Math.random()\n\n if (u < 1.0 - 0.0331 * x * x * x * x) {\n return scale * d * v\n }\n\n if (Math.log(u) < 0.5 * x * x + d * (1.0 - v + Math.log(v))) {\n return scale * d * v\n }\n }\n}\n\n/**\n * Helper function to generate standard normal random variables\n * using Box-Muller transform\n */\nfunction randn(): number {\n let u = 0\n let v = 0\n while (u === 0) u = Math.random()\n while (v === 0) v = Math.random()\n\n return Math.sqrt(-2.0 * Math.log(u)) * Math.cos(2.0 * Math.PI * v)\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\nimport { gridNormalExpression } from './categories/namespaces/grid'\nimport { vectorNormalExpression } from './categories/namespaces/vector'\nimport { linearAlgebraNormalExpression } from './categories/namespaces/linearAlgebra'\nimport { matrixNormalExpression } from './categories/namespaces/matrix'\nimport { combinatoricalNormalExpression } from './categories/namespaces/numberTheory'\nimport { randomNormalExpression } from './categories/namespaces/random'\n\nconst expressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n ...vectorNormalExpression,\n ...linearAlgebraNormalExpression,\n ...gridNormalExpression,\n ...matrixNormalExpression,\n ...combinatoricalNormalExpression,\n ...randomNormalExpression,\n}\n\nconst aliases: BuiltinNormalExpressions = {}\n\nObject.values(expressions).forEach((normalExpression) => {\n normalExpression.aliases?.forEach((alias) => {\n aliases[alias] = normalExpression\n })\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n ...aliases,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = true\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (!value)\n break\n }\n return value\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import type { SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { assertSymbolNode, isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefinedNode = SpecialExpressionNode<[typeof specialExpressionTypes['defined?'], SymbolNode]>\n\nexport const definedSpecialExpression: BuiltinSpecialExpression<boolean, DefinedNode> = {\n paramCount: 1,\n evaluate: (node, contextStack) => {\n const symbolNode = node[1][1]\n assertSymbolNode(symbolNode)\n if (!isUserDefinedSymbolNode(symbolNode)) {\n return true // If the symbol is not a user defined symbol, it is defined. normal or special builtin\n }\n const lookUpResult = contextStack.lookUp(symbolNode)\n return lookUpResult !== null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { JsFunction } from '../Lits/Lits'\nimport type { SpecialExpressionType } from '../builtin'\nimport type { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport type { FunctionType, NodeType, NodeTypes } from '../constants/constants'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Arr, Coll } from '../interface'\nimport type { ReservedSymbol } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo, Token } from '../tokenizer/token'\nimport type { FUNCTION_SYMBOL, REGEXP_SYMBOL } from '../utils/symbols'\n\nexport interface ParseState {\n position: number\n}\n\nexport type EvaluatedFunction = [BindingTarget[], Node[], Context]\n\ninterface GenericLitsFunction {\n [FUNCTION_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n functionType: FunctionType\n}\n\nexport interface RegularExpression {\n [REGEXP_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n s: string\n f: string\n}\n\nexport interface NativeJsFunction extends GenericLitsFunction {\n functionType: 'NativeJsFunction'\n name: string | undefined // name\n nativeFn: JsFunction\n}\n\nexport interface UserDefinedFunction extends GenericLitsFunction {\n functionType: 'UserDefined'\n name: string | undefined // name\n evaluatedfunction: EvaluatedFunction\n}\n\nexport interface PartialFunction extends GenericLitsFunction {\n functionType: 'Partial'\n function: FunctionLike\n params: Arr\n placeholders: number[] // indexes of the placeholders\n}\n\nexport interface CompFunction extends GenericLitsFunction {\n functionType: 'Comp'\n params: Arr\n}\n\nexport interface ConstantlyFunction extends GenericLitsFunction {\n functionType: 'Constantly'\n value: Any\n}\n\nexport interface JuxtFunction extends GenericLitsFunction {\n functionType: 'Juxt'\n params: Arr\n}\n\nexport interface ComplementFunction extends GenericLitsFunction {\n functionType: 'Complement'\n function: FunctionLike\n}\n\nexport interface EveryPredFunction extends GenericLitsFunction {\n functionType: 'EveryPred'\n params: Arr\n}\n\nexport interface SomePredFunction extends GenericLitsFunction {\n functionType: 'SomePred'\n params: Arr\n}\n\nexport interface FNullFunction extends GenericLitsFunction {\n functionType: 'Fnull'\n function: FunctionLike\n params: Arr\n}\n\nexport interface NormalBuiltinFunction extends GenericLitsFunction {\n functionType: 'Builtin'\n normalBuitinSymbolType: number\n}\n\nexport interface SpecialBuiltinFunction extends GenericLitsFunction {\n functionType: 'SpecialBuiltin'\n specialBuiltinSymbolType:\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['recur']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['??']\n}\n\nexport type LitsFunction =\n | NativeJsFunction\n | UserDefinedFunction\n | NormalBuiltinFunction\n | SpecialBuiltinFunction\n | PartialFunction\n | CompFunction\n | ConstantlyFunction\n | JuxtFunction\n | ComplementFunction\n | EveryPredFunction\n | SomePredFunction\n | FNullFunction\n\nexport type LitsFunctionType = LitsFunction['functionType']\n\nexport type FunctionLike = LitsFunction | Coll | number\n\nexport type DebugData = {\n token: Token\n nameToken?: Token\n}\nexport type Node<T extends NodeType = NodeType, Payload = unknown> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type ExpressionNode = NormalExpressionNode | SpecialExpressionNode | NumberNode | StringNode\n\nexport type SpreadNode = Node<typeof NodeTypes.Spread, Node> // Payload should be array or object depending on context\nexport type NumberNode = Node<typeof NodeTypes.Number, number>\nexport type StringNode = Node<typeof NodeTypes.String, string>\nexport type UserDefinedSymbolNode = Node<typeof NodeTypes.UserDefinedSymbol, string>\nexport type NormalBuiltinSymbolNode = Node<typeof NodeTypes.NormalBuiltinSymbol, number>\nexport type SpecialBuiltinSymbolNode = Node<typeof NodeTypes.SpecialBuiltinSymbol, SpecialExpressionType>\nexport type SymbolNode = UserDefinedSymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode\nexport type ReservedSymbolNode = Node<typeof NodeTypes.ReservedSymbol, ReservedSymbol>\nexport type SpecialExpressionNode<T extends [SpecialExpressionType, ...unknown[]] = [SpecialExpressionType, ...unknown[]]> = Node<typeof NodeTypes.SpecialExpression, T> // [name, params]\n\nexport type NormalExpressionNodeWithName = Node<typeof NodeTypes.NormalExpression, [NormalBuiltinSymbolNode | UserDefinedSymbolNode, Node[]]> // [params, name]\nexport type NormalExpressionNodeExpression = Node<typeof NodeTypes.NormalExpression, [Node, Node[]]> // [name, node as function] node can be string number object or array\nexport type NormalExpressionNode = NormalExpressionNodeWithName | NormalExpressionNodeExpression\nexport const bindingTargetTypes = {\n symbol: 11,\n rest: 12,\n object: 13,\n array: 14,\n} as const\n\nexport type BindingTargetType = typeof bindingTargetTypes[keyof typeof bindingTargetTypes]\n\ntype GenericTarget<T extends BindingTargetType, Payload extends unknown[]> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type SymbolBindingTarget = GenericTarget<typeof bindingTargetTypes.symbol, [SymbolNode, Node | undefined]>\nexport type RestBindingTarget = GenericTarget<typeof bindingTargetTypes.rest, [string, Node | undefined]>\nexport type ObjectBindingTarget = GenericTarget<typeof bindingTargetTypes.object, [Record<string, BindingTarget>, Node | undefined]>\nexport type ArrayBindingTarget = GenericTarget<typeof bindingTargetTypes.array, [(BindingTarget | null)[], Node | undefined]>\n\nexport type BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget\n\nexport type BindingNode = Node<typeof NodeTypes.Binding, [BindingTarget, Node]> // [target, value]\n\ntype AstBody = Node[]\nexport interface Ast {\n body: AstBody // body\n hasDebugData: boolean\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport { type BindingTarget, type Node, type RestBindingTarget, type UserDefinedSymbolNode, bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { assertUnknownRecord } from '../typeGuards'\nimport { assertArray } from '../typeGuards/array'\nimport { asAny, assertAny } from '../typeGuards/lits'\n\nexport function walkDefaults(\n bindingTarget: BindingTarget,\n onDefault: (Node: Node) => void,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n Object.values(bindingTarget[1][0]).forEach((element) => {\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n })\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n }\n }\n}\n\nexport function evalueateBindingNodeValues(\n target: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n): Record<string, Any> {\n const sourceCodeInfo = target[2]\n const record: Record<string, Any> = {}\n createRecord(target, value, evaluate, sourceCodeInfo, record)\n return record\n}\n\nfunction createRecord(\n bindingTarget: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n sourceCodeInfo: SourceCodeInfo | undefined,\n record: Record<string, Any>,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n assertUnknownRecord(value, sourceCodeInfo)\n const capturedKeys = new Set<string>()\n let restElement: RestBindingTarget | undefined\n Object.entries(bindingTarget[1][0]).forEach(([key, element]) => {\n if (element[0] === bindingTargetTypes.rest) {\n restElement = element\n return\n }\n capturedKeys.add(key)\n const val = (value[key] !== undefined ? value[key] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n })\n if (restElement) {\n const restValues = Object.entries(value)\n .filter(([key]) => !capturedKeys.has(key))\n .reduce((acc: Record<string, Any>, [key, val]) => {\n acc[key] = asAny(val)\n return acc\n }, {})\n\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n let restIndex: number | null = null\n assertArray(value, sourceCodeInfo)\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[0] === bindingTargetTypes.rest) {\n restIndex = index\n break\n }\n const val = (value[index] !== undefined ? value[index] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n }\n if (restIndex !== null) {\n const restValues = value.slice(restIndex)\n const restElement = bindingTarget[1][0][restIndex]! as RestBindingTarget\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.rest) {\n record[bindingTarget[1][0]] = asAny(value)\n }\n else {\n record[(bindingTarget[1][0] as UserDefinedSymbolNode)[1]] = asAny(value)\n }\n}\n\nexport function getAllBindingTargetNames(bindingTarget: BindingTarget): Record<string, true> {\n const names: Record<string, true> = {}\n getNamesFromBindingTarget(bindingTarget, names)\n return names\n}\n\nfunction getNamesFromBindingTarget(target: BindingTarget | null, names: Record<string, true>): void {\n if (target === null) {\n return\n }\n if (target[0] === bindingTargetTypes.array) {\n for (const element of target[1][0]) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.object) {\n for (const element of Object.values(target[1][0])) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.rest) {\n if (names[target[1][0]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0]] = true\n }\n else {\n if (names[target[1][0][1]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0][1]] = true\n }\n}\n","import type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues as evalueateBindingTargetValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_def'], BindingNode]> // binding, value\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n paramCount: 2,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingTargetValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.exportValues(values, target[2])\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DoNode = SpecialExpressionNode<[typeof specialExpressionTypes['do'], Node[]]>\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node[1][1])\n result = evaluateNode(form, newContextStack)\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n return getUndefinedSymbols(node[1][1], contextStack.create({}), builtin, evaluateNode)\n },\n}\n","import type { Any } from '../interface'\n\nconst nonNumberReservedSymbolRecord = {\n true: true,\n false: false,\n null: null,\n then: null,\n else: null,\n end: null,\n case: null,\n each: null,\n in: null,\n when: null,\n while: null,\n catch: null,\n function: null,\n export: null,\n as: null,\n _: null,\n} as const satisfies Record<string, Any>\n\nconst phi = (1 + Math.sqrt(5)) / 2\nexport const numberReservedSymbolRecord = {\n 'E': Math.E,\n '-E': -Math.E,\n 'ε': Math.E,\n '-ε': -Math.E,\n 'PI': Math.PI,\n '-PI': -Math.PI,\n 'π': Math.PI,\n '-π': -Math.PI,\n 'PHI': phi,\n '-PHI': -phi,\n 'φ': phi,\n '-φ': -phi,\n 'POSITIVE_INFINITY': Number.POSITIVE_INFINITY,\n '∞': Number.POSITIVE_INFINITY,\n 'NEGATIVE_INFINITY': Number.NEGATIVE_INFINITY,\n '-∞': Number.NEGATIVE_INFINITY,\n 'MAX_SAFE_INTEGER': Number.MAX_SAFE_INTEGER,\n 'MIN_SAFE_INTEGER': Number.MIN_SAFE_INTEGER,\n 'MAX_VALUE': Number.MAX_VALUE,\n 'MIN_VALUE': Number.MIN_VALUE,\n 'DELTA': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-DELTA': -Number.EPSILON,\n 'δ': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-δ': -Number.EPSILON,\n 'NaN': Number.NaN,\n} as const satisfies Record<string, number>\n\nexport const reservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport const validReservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport type ValidReservedSymbol = keyof typeof validReservedSymbolRecord\nexport type ReservedSymbol = keyof typeof reservedSymbolRecord\n\nexport function isReservedSymbol(symbol: string): symbol is keyof typeof validReservedSymbolRecord {\n return symbol in validReservedSymbolRecord\n}\n\nexport function isNumberReservedSymbol(symbol: string): symbol is keyof typeof numberReservedSymbolRecord {\n return symbol in numberReservedSymbolRecord\n}\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { BindingTarget, Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isReservedSymbol } from '../tokenizer/reservedNames'\nimport type { Builtin } from './interface'\nimport { specialExpressionTypes } from './specialExpressionTypes'\nimport type { SpecialExpressionName } from '.'\n\nexport type Function = [BindingTarget[], Node[]]\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n // TODO only subset of special expressions are necessary to check (CommonSpecialExpressionType)\n if (specialExpressionTypes[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n if (isReservedSymbol(name))\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type {\n EvaluatedFunction,\n LitsFunction,\n SpecialExpressionNode,\n SymbolNode,\n} from '../../parser/types'\nimport { isAny } from '../../typeGuards/lits'\nimport { addToSet } from '../../utils'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport type { Function } from '../utils'\nimport { assertNameNotDefined } from '../utils'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\nimport { assertUserDefinedSymbolNode } from '../../typeGuards/astNode'\n\nexport type DefnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_defn'], SymbolNode, Function]>\nexport type FunctionNode = SpecialExpressionNode<[typeof specialExpressionTypes['function'], SymbolNode, Function]>\nexport type FnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_fn'], Function]>\n\nexport const functionSpecialExpression: BuiltinSpecialExpression<null, FunctionNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunction,\n }\n\n contextStack.addValues({ [functionSymbol[1]]: litsFunction }, functionSymbol[2])\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n contextStack.addValues({ [functionName]: true }, node[1][1][2])\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(node[1][2], contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunctionOverloades = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunctionOverloades,\n }\n\n contextStack.exportValues({ [functionSymbol[1]]: litsFunction }, functionSymbol[2])\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n const fn = node[1][2]\n contextStack.exportValues({ [functionName]: true }, node[1][1][2])\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const fn = node[1][1]\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: undefined,\n evaluatedfunction: evaluatedFunction,\n }\n\n return litsFunction\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const fn = node[1][1]\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode)\n },\n\n}\n\nfunction evaluateFunction(\n fn: Function,\n contextStack: ContextStack,\n builtin: Builtin,\n getUndefinedSymbols: GetUndefinedSymbols,\n evaluateNode: EvaluateNode,\n): EvaluatedFunction {\n const functionContext: Context = {}\n\n const context = fn[0].reduce((ctx: Context, arg) => {\n Object.keys(getAllBindingTargetNames(arg)).forEach((name) => {\n ctx[name] = { value: null }\n })\n return ctx\n }, {})\n const undefinedSymbols = getUndefinedSymbols(fn[1], contextStack.new(context), builtin, evaluateNode)\n undefinedSymbols.forEach((name) => {\n const value = contextStack.getValue(name)\n if (isAny(value)) {\n functionContext[name] = { value }\n }\n })\n\n const evaluatedFunction: EvaluatedFunction = [\n fn[0],\n fn[1],\n functionContext,\n ]\n\n return evaluatedFunction\n}\n\nfunction getFunctionUnresolvedSymbols(\n fn: Function,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n functionNameContext?: Context,\n): UndefinedSymbols {\n const result = new Set<string>()\n\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n const newContext: Context = {}\n\n fn[0].forEach((arg) => {\n Object.assign(newContext, getAllBindingTargetNames(arg))\n\n walkDefaults(arg, (defaultNode) => {\n addToSet(result, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n })\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = getUndefinedSymbols(fn[1], newContextStack, builtin, evaluateNode)\n addToSet(result, overloadResult)\n return result\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type IfNode = SpecialExpressionNode<[typeof specialExpressionTypes['if'], [Node, Node, Node?]]>\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type UnlessNode = SpecialExpressionNode<[typeof specialExpressionTypes['unless'], [Node, Node, Node?]]>\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (!evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LetNode = SpecialExpressionNode<[typeof specialExpressionTypes['let'], BindingNode]>\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n paramCount: 0,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingNodeValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.addValues(values, target[2])\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport { joinSets } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopNode = SpecialExpressionNode<[typeof specialExpressionTypes['loop'], BindingNode[], Node[]]> // bindings, body\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNodes = node[1][1]\n const bindingContext: Context = bindingNodes.reduce((result: Context, bindingNode) => {\n const val = evaluateNode(bindingNode[1][1], contextStack.create(result))\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n result[name] = { value }\n })\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n const body = node[1][2]\n for (;;) {\n let result: Any = null\n try {\n for (const form of body) {\n result = evaluateNode(form, newContextStack)\n }\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== bindingNodes.length) {\n throw new LitsError(\n `recur expected ${bindingNodes.length} parameters, got ${valueToString(params.length)}`,\n node[2],\n )\n }\n bindingNodes.forEach((bindingNode, index) => {\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], asAny(params[index]), Node => evaluateNode(Node, contextStack))\n for (const [name, value] of Object.entries(valueRecord)) {\n bindingContext[name]!.value = value\n }\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNodes = node[1][1]\n\n const newContext = bindingNodes\n .reduce((context: Context, bindingNode) => {\n const names = getAllBindingTargetNames(bindingNode[1][0])\n\n Object.keys(names).forEach((name) => {\n context[name] = { value: true }\n })\n return context\n }, {})\n\n const bindingValueNodes = bindingNodes.map(bindingNode => bindingNode[1][1])\n const bindingsResult = getUndefinedSymbols(bindingValueNodes, contextStack, builtin, evaluateNode)\n const paramsResult = getUndefinedSymbols(node[1][2], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(bindingsResult, paramsResult)\n },\n}\n","import type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopBindingNode = [BindingNode, BindingNode[], Node?, Node?] // Binding, Let-Bindings, When, While\n\nexport type ForNode = SpecialExpressionNode<[typeof specialExpressionTypes['for'], LoopBindingNode[], Node[]]> // LoopBindings, body\nexport type DoSeqNode = SpecialExpressionNode<[typeof specialExpressionTypes['doseq'], LoopBindingNode[], Node[]]> // LoopBindings, body\n\ntype LoopNode = ForNode | DoSeqNode\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n for (const bindingNode of bindings) {\n const [target, bindingValue] = bindingNode[1]\n const val = evaluateNode(bindingValue, contextStack)\n const valueRecord = evalueateBindingNodeValues(target, val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n }\n}\n\nfunction evaluateLoop(\n returnResult: boolean,\n loopNode: LoopNode,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n const sourceCodeInfo = loopNode[2]\n const [, loopBindings, body] = loopNode[1]\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindings[bindingIndex]!\n const [targetNode, valueNode] = bindingNode[1]\n const coll = asColl(evaluateNode(valueNode, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n\n const val = asAny(seq[index], sourceCodeInfo)\n const valueRecord = evalueateBindingNodeValues(targetNode, val, Node => evaluateNode(Node, newContextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n if (letBindings) {\n addToContext(\n letBindings,\n context,\n newContextStack,\n evaluateNode,\n )\n }\n if (whenNode && !evaluateNode(whenNode, newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n if (whileNode && !evaluateNode(whileNode, newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n }\n if (!skip) {\n let value: Any = null\n for (const form of body) {\n value = evaluateNode(form, newContextStack)\n }\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n\n return returnResult ? result : null\n}\n\nfunction analyze(\n loopNode: LoopNode,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n): UndefinedSymbols {\n const result = new Set<string>()\n const newContext: Context = {}\n const [, loopBindings, body] = loopNode[1]\n loopBindings.forEach((loopBindingNode) => {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindingNode\n const [target, value] = bindingNode[1]\n getUndefinedSymbols([value], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(target))\n if (letBindings) {\n letBindings.forEach((letBindingNode) => {\n const [letTarget, letValue] = letBindingNode[1]\n\n getUndefinedSymbols([letValue], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(letTarget))\n })\n }\n if (whenNode) {\n getUndefinedSymbols([whenNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n getUndefinedSymbols([whileNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n getUndefinedSymbols(body, contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateNode),\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateNode)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type OrNode = SpecialExpressionNode<[typeof specialExpressionTypes['||'], Node[]]>\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = false\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = false\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (value)\n break\n }\n return value\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport { asAny, assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type QqNode = SpecialExpressionNode<[typeof specialExpressionTypes['??'], [Node, Node | undefined]]>\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n paramCount: { min: 1, max: 2 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [firstNode, secondNode] = node[1][1]\n\n if (isUserDefinedSymbolNode(firstNode) && contextStack.lookUp(firstNode) === null) {\n return secondNode ? evaluateNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node[2])\n const firstResult = evaluateNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateNode(secondNode, contextStack) : null)\n },\n\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const firstParam = asAny(params[0], sourceCodeInfo)\n const secondParam = params[1] !== undefined ? asAny(params[1], sourceCodeInfo) : null\n return firstParam ?? secondParam\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import { RecurSignal } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type RecurNode = SpecialExpressionNode<[typeof specialExpressionTypes['recur'], Node[]]>\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n const evaluatedParams = params.map(paramNode => evaluateNode(paramNode, contextStack))\n throw new RecurSignal(evaluatedParams)\n },\n evaluateAsNormalExpression: (params) => {\n throw new RecurSignal(params)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ThrowNode = SpecialExpressionNode<[typeof specialExpressionTypes['throw'], Node]>\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const message = asString(evaluateNode(node[1][1], contextStack), node[2], {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node[2])\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const message = asString(params[0], sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, undefined)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { joinSets } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type TryNode = SpecialExpressionNode<[typeof specialExpressionTypes['try'], Node, SymbolNode | undefined, Node]>\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n try {\n return evaluateNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: error as Any },\n }\n : {}\n return evaluateNode(catchExpression, contextStack.create(newContext))\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n const tryResult = getUndefinedSymbols([tryExpression], contextStack, builtin, evaluateNode)\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: true },\n }\n : {}\n const catchResult = getUndefinedSymbols([catchExpression], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Arr } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ArrayNode = SpecialExpressionNode<[typeof specialExpressionTypes['array'], Node[]]>\n\nexport const arraySpecialExpression: BuiltinSpecialExpression<Any, ArrayNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Arr = []\n\n for (const param of node[1][1]) {\n if (isSpreadNode(param)) {\n const spreadValue = evaluateNode(param[1], contextStack)\n if (!Array.isArray(spreadValue)) {\n throw new LitsError('Spread value is not an array', param[2])\n }\n result.push(...spreadValue)\n }\n else {\n result.push(evaluateNode(param, contextStack))\n }\n }\n\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Arr = []\n\n for (const param of params) {\n result.push(asAny(param, sourceCodeInfo))\n }\n\n return result\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Obj } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUnknownRecord } from '../../typeGuards'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ObjectNode = SpecialExpressionNode<[typeof specialExpressionTypes['object'], Node[]]>\n\nexport const objectSpecialExpression: BuiltinSpecialExpression<Any, ObjectNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Obj = {}\n\n const params = node[1][1]\n for (let i = 0; i < params.length; i += 2) {\n const keyNode = params[i]!\n if (isSpreadNode(keyNode)) {\n const spreadObject = evaluateNode(keyNode[1], contextStack)\n if (!isUnknownRecord(spreadObject)) {\n throw new LitsError('Spread value is not an object', keyNode[2])\n }\n Object.assign(result, spreadObject)\n i -= 1\n }\n else {\n const key = evaluateNode(keyNode, contextStack)\n const value = evaluateNode(params[i + 1]!, contextStack)\n assertString(key, keyNode[2])\n result[key] = value\n }\n }\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Obj = {}\n\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value ?? null\n }\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Builtin } from './interface'\nimport { allNormalExpressions, normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { definedSpecialExpression } from './specialExpressions/defined'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, fnSpecialExpression, functionSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { arraySpecialExpression } from './specialExpressions/array'\nimport { objectSpecialExpression } from './specialExpressions/object'\nimport { specialExpressionTypes } from './specialExpressionTypes'\n\nexport const specialExpressions = [\n qqSpecialExpression,\n andSpecialExpression,\n orSpecialExpression,\n arraySpecialExpression,\n condSpecialExpression,\n defSpecialExpression,\n definedSpecialExpression,\n defnSpecialExpression,\n doSpecialExpression,\n doseqSpecialExpression,\n fnSpecialExpression,\n forSpecialExpression,\n functionSpecialExpression,\n ifSpecialExpression,\n letSpecialExpression,\n loopSpecialExpression,\n objectSpecialExpression,\n recurSpecialExpression,\n switchSpecialExpression,\n throwSpecialExpression,\n trySpecialExpression,\n unlessSpecialExpression,\n] as const\n\nexport type SpecialExpressions = typeof specialExpressions\nexport type SpecialExpression = SpecialExpressions[number]\nexport type SpecialExpressionName = keyof typeof specialExpressionTypes\nexport type CommonSpecialExpressionType = [\n | typeof specialExpressionTypes['??']\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['cond']\n | typeof specialExpressionTypes['switch']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['do']\n | typeof specialExpressionTypes['if']\n | typeof specialExpressionTypes['unless']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object'],\n]\n\nexport type SpecialExpressionType = typeof specialExpressionTypes[SpecialExpressionName]\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n allNormalExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressionTypes)\nexport const specialExpressionNameSet = new Set(specialExpressionKeys)\n\n// TODO, remove\n// console.log('builtin', [...specialExpressionKeys, ...normalExpressionKeys].length)\n","import { specialExpressions } from '../builtin'\nimport { evalueateBindingNodeValues } from '../builtin/bindingNode'\nimport { allNormalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n NormalBuiltinFunction,\n PartialFunction,\n SomePredFunction,\n SpecialBuiltinFunction,\n UserDefinedFunction,\n} from '../parser/types'\nimport { bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny, asFunctionLike } from '../typeGuards/lits'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport type { Context, EvaluateNode, ExecuteFunction } from './interface'\n\ntype FunctionExecutors = Record<LitsFunctionType, (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateNode: EvaluateNode, executeFunction: ExecuteFunction },\n) => Any>\n\nfunction checkParams(\n evaluatedFunction: EvaluatedFunction,\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n const minArity = evaluatedFunction[0].filter(arg => arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined).length\n if (nbrOfParams < minArity) {\n throw new LitsError(`Unexpected number of arguments. Expected at least ${minArity}, got ${nbrOfParams}.`, sourceCodeInfo)\n }\n}\n\nexport const functionExecutors: FunctionExecutors = {\n NativeJsFunction: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.nativeFn.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n UserDefined: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateNode }) => {\n for (;;) {\n checkParams(fn.evaluatedfunction, params.length, sourceCodeInfo)\n const evaluatedFunction = fn.evaluatedfunction\n const args = evaluatedFunction[0]\n const nbrOfNonRestArgs: number = args.filter(arg => arg[0] !== bindingTargetTypes.rest).length\n\n const newContextStack = contextStack.create(fn.evaluatedfunction[2])\n const newContext: Context = {}\n\n const rest: Arr = []\n for (let i = 0; i < params.length; i += 1) {\n if (i < nbrOfNonRestArgs) {\n const param = toAny(params[i])\n const valueRecord = evalueateBindingNodeValues(args[i]!, param, Node =>\n evaluateNode(Node, newContextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n for (let i = params.length; i < nbrOfNonRestArgs; i++) {\n const arg = args[i]!\n const defaultValue = evaluateNode(arg[1][1]!, contextStack.create(newContext))\n const valueRecord = evalueateBindingNodeValues(arg, defaultValue, Node =>\n evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n const restArgument = args.find(arg => arg[0] === bindingTargetTypes.rest)\n if (restArgument !== undefined) {\n const valueRecord = evalueateBindingNodeValues(restArgument, rest, Node => evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n try {\n let result: Any = null\n const newContextStack2 = newContextStack.create(newContext)\n for (const node of evaluatedFunction[1]) {\n result = evaluateNode(node, newContextStack2)\n }\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n Partial: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const actualParams = [...fn.params]\n if (params.length !== fn.placeholders.length) {\n throw new LitsError(`(partial) expects ${fn.placeholders.length} arguments, got ${params.length}.`, sourceCodeInfo)\n }\n const paramsCopy = [...params]\n for (const placeholderIndex of fn.placeholders) {\n actualParams.splice(placeholderIndex, 0, paramsCopy.shift())\n }\n return executeFunction(fn.function, actualParams, contextStack, sourceCodeInfo)\n },\n Comp: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { params: f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(asFunctionLike(fun, sourceCodeInfo), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n Constantly: (fn: ConstantlyFunction) => {\n return fn.value\n },\n Juxt: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.params.map(fun => executeFunction(asFunctionLike(fun, sourceCodeInfo), params, contextStack, sourceCodeInfo))\n },\n Complement: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.function, params, contextStack, sourceCodeInfo)\n },\n EveryPred: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(asFunctionLike(f, sourceCodeInfo), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n SomePred: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(asFunctionLike(f, sourceCodeInfo), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n Fnull: (fn: FNullFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fnulledParams = params.map((param, index) => (param === null ? toAny(fn.params[index]) : param))\n return executeFunction(asFunctionLike(fn.function, sourceCodeInfo), fnulledParams, contextStack, sourceCodeInfo)\n },\n Builtin: (fn: NormalBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(allNormalExpressions[fn.normalBuitinSymbolType], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n SpecialBuiltin: (fn: SpecialBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const specialExpression = asNonUndefined(specialExpressions[fn.specialBuiltinSymbolType], sourceCodeInfo)\n if (specialExpression.evaluateAsNormalExpression) {\n return specialExpression.evaluateAsNormalExpression(params, sourceCodeInfo, contextStack, { executeFunction })\n }\n else {\n throw new LitsError(`Special builtin function ${fn.specialBuiltinSymbolType} is not supported as normal expression.`, sourceCodeInfo)\n }\n },\n}\n","import type { SpecialExpression } from '../builtin'\nimport { builtin } from '../builtin'\nimport { NodeTypes, getNodeTypeName } from '../constants/constants'\nimport { LitsError, UndefinedSymbolError } from '../errors'\nimport { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport type { Any, Arr, Obj } from '../interface'\nimport type {\n Ast,\n FunctionLike,\n Node,\n NormalExpressionNode,\n NumberNode,\n PartialFunction,\n ReservedSymbolNode,\n SpecialExpressionNode,\n StringNode,\n SymbolNode,\n} from '../parser/types'\nimport { reservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { annotate } from '../typeGuards/annotatedArrays'\nimport { isNormalBuiltinSymbolNode, isNormalExpressionNodeWithName, isSpreadNode } from '../typeGuards/astNode'\nimport { asFunctionLike, assertSeq, isObj } from '../typeGuards/lits'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { assertString } from '../typeGuards/string'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n for (const node of ast.body) {\n result = evaluateNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateNode(node: Node, contextStack: ContextStack): Any {\n switch (node[0]) {\n case NodeTypes.Number:\n return evaluateNumber(node as NumberNode)\n case NodeTypes.String:\n return evaluateString(node as StringNode)\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.UserDefinedSymbol:\n return contextStack.evaluateSymbol(node as SymbolNode)\n case NodeTypes.ReservedSymbol:\n return evaluateReservedSymbol(node as ReservedSymbolNode)\n case NodeTypes.NormalExpression:\n return annotate(evaluateNormalExpression(node as NormalExpressionNode, contextStack))\n case NodeTypes.SpecialExpression:\n return annotate(evaluateSpecialExpression(node as SpecialExpressionNode, contextStack))\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`${getNodeTypeName(node[0])}-node cannot be evaluated`, node[2])\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node[1]\n}\n\nfunction evaluateString(node: StringNode): string {\n return node[1]\n}\n\nfunction evaluateReservedSymbol(node: ReservedSymbolNode): Any {\n const reservedName = node[1]\n if (!['true', 'false', 'null'].includes(reservedName)) {\n throw new LitsError(`Reserved symbol ${reservedName} cannot be evaluated`, node[2])\n }\n const value = reservedSymbolRecord[reservedName]\n return asNonUndefined(value, node[2])\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const sourceCodeInfo = node[2]\n const paramNodes: Node[] = node[1][1]\n const params: Arr = []\n const placeholders: number[] = []\n paramNodes.forEach((paramNode, index) => {\n if (isSpreadNode(paramNode)) {\n const spreadValue = evaluateNode(paramNode[1], contextStack)\n if (Array.isArray(spreadValue)) {\n params.push(...spreadValue)\n }\n else {\n throw new LitsError(`Spread operator requires an array, got ${valueToString(paramNode)}`, paramNode[2])\n }\n }\n else if (paramNode[0] === NodeTypes.ReservedSymbol && paramNode[1] === '_') {\n placeholders.push(index)\n }\n else {\n params.push(evaluateNode(paramNode, contextStack))\n }\n })\n if (isNormalExpressionNodeWithName(node)) {\n const nameSymbol = node[1][0]\n if (placeholders.length > 0) {\n const fn = evaluateNode(nameSymbol, contextStack)\n const partialFunction: PartialFunction = {\n '^^fn^^': true,\n 'function': asFunctionLike(fn, sourceCodeInfo),\n 'functionType': 'Partial',\n params,\n placeholders,\n sourceCodeInfo,\n }\n return partialFunction\n }\n\n if (isNormalBuiltinSymbolNode(nameSymbol)) {\n const type = nameSymbol[1]\n const normalExpression = builtin.allNormalExpressions[type]!\n return normalExpression.evaluate(params, node[2], contextStack, { executeFunction })\n }\n else {\n const fn = contextStack.getValue(nameSymbol[1])\n if (fn !== undefined) {\n return executeFunction(asFunctionLike(fn, sourceCodeInfo), params, contextStack, sourceCodeInfo)\n }\n throw new UndefinedSymbolError(nameSymbol[1], node[2])\n }\n }\n else {\n const fnNode: Node = node[1][0]\n const fn = asFunctionLike(evaluateNode(fnNode, contextStack), sourceCodeInfo)\n if (placeholders.length > 0) {\n const partialFunction: PartialFunction = {\n '^^fn^^': true,\n 'function': asFunctionLike(fn, sourceCodeInfo),\n 'functionType': 'Partial',\n params,\n placeholders,\n sourceCodeInfo,\n }\n return partialFunction\n }\n return executeFunction(fn, params, contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: FunctionLike, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.functionType](fn, params, sourceCodeInfo, contextStack, { evaluateNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn)) {\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n /* v8 ignore next 4 */\n }\n throw new LitsError('Unexpected function type', sourceCodeInfo)\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpressionType = node[1][0]\n const specialExpression: SpecialExpression = asNonUndefined(builtin.specialExpressions[specialExpressionType], node[2])\n const castedEvaluate = specialExpression.evaluate as Function\n\n return castedEvaluate(node, contextStack, { evaluateNode, builtin, getUndefinedSymbols }) as Any\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Any, Arr } from '../interface'\nimport type { FunctionLike, Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateNode = (node: Node, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: FunctionLike, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import { normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { LitsError, UndefinedSymbolError } from '../errors'\nimport type { Any } from '../interface'\nimport type { ContextParams, LazyValue } from '../Lits/Lits'\nimport type { NativeJsFunction, NormalBuiltinFunction, SymbolNode, UserDefinedSymbolNode } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode } from '../typeGuards/astNode'\nimport { toAny } from '../utils'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport type { Context, LookUpResult } from './interface'\nimport { isContextEntry } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.globalContext = asNonUndefined(contexts[0])\n this.contexts = contexts\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public new(context: Context): ContextStack {\n const contexts = [{}, context]\n\n return new ContextStackImpl({ contexts })\n }\n\n public exportValues(values: Record<string, Any>, sourceCodeInfo: SourceCodeInfo | undefined) {\n for (const [name, value] of Object.entries(values)) {\n if (this.globalContext[name]) {\n throw new LitsError(`Cannot redefine exported value \"${name}\"`, sourceCodeInfo)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow special expression \"${name}\"`, sourceCodeInfo)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow builtin function \"${name}\"`, sourceCodeInfo)\n }\n this.globalContext[name] = { value }\n }\n this.addValues(values, sourceCodeInfo)\n }\n\n public addValues(values: Record<string, Any>, sourceCodeInfo: SourceCodeInfo | undefined) {\n const currentContext = this.contexts[0]!\n for (const [name, value] of Object.entries(values)) {\n if (currentContext[name]) {\n throw new LitsError(`Cannot redefine value \"${name}\"`, sourceCodeInfo)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow special expression \"${name}\"`, sourceCodeInfo)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow builtin function \"${name}\"`, sourceCodeInfo)\n }\n currentContext[name] = { value: toAny(value) }\n }\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: UserDefinedSymbolNode): LookUpResult {\n const value = node[1]\n // const sourceCodeInfo = node[2]\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateSymbol(node: SymbolNode): Any {\n if (isSpecialBuiltinSymbolNode(node)) {\n const functionType = node[1]\n switch (functionType) {\n case specialExpressionTypes['&&']:\n case specialExpressionTypes['||']:\n case specialExpressionTypes.array:\n case specialExpressionTypes.object:\n case specialExpressionTypes['defined?']:\n case specialExpressionTypes.recur:\n case specialExpressionTypes.throw:\n case specialExpressionTypes['??']:\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'SpecialBuiltin',\n specialBuiltinSymbolType: functionType,\n sourceCodeInfo: node[2],\n }\n default:\n throw new LitsError(`Unknown special builtin symbol type: ${functionType}`, node[2])\n }\n }\n if (isNormalBuiltinSymbolNode(node)) {\n const type = node[1]\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'Builtin',\n normalBuitinSymbolType: type,\n sourceCodeInfo: node[2],\n } satisfies NormalBuiltinFunction\n }\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n\n throw new UndefinedSymbolError(node[1], node[2])\n }\n}\n\nexport function createContextStack(params: ContextParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n functionType: 'NativeJsFunction',\n nativeFn: jsFunction,\n name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack.create({})\n}\n","import { LitsError } from '../errors'\n\nconst binaryOperators = [\n '^', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '++', // string concatenation\n\n '<', // less than\n '<=', // less than or equal\n '≤', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n '≥', // greater than or equal\n\n '=', // equal\n '!=', // not equal\n '≠', // not equal\n '~', // approximate\n '≈', // approximate\n\n '&', // bitwise AND\n 'xor', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n\n '|>', // pipe\n] as const\n\nconst otherOperators = [\n '->', // lambda\n '...', // rest\n '.', // property accessor\n ',', // item separator\n ':=', // property assignment\n ';', // statement terminator\n] as const\n\nconst symbolicOperators = [\n ...binaryOperators,\n ...otherOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n '&&',\n '||',\n 'comment',\n 'cond',\n 'def',\n 'defined?',\n // 'defn',\n 'do',\n 'doseq',\n // 'fn',\n 'if',\n 'let',\n 'loop',\n 'recur',\n 'throw',\n 'try',\n 'unless',\n 'while',\n]\n\nconst nonFunctionOperatorSet = new Set(nonFunctionOperators)\nexport function isFunctionOperator(operator: string): boolean {\n return !nonFunctionOperatorSet.has(operator)\n}\n\nexport type SymbolicBinaryOperator = typeof binaryOperators[number]\nexport type SymbolicOperator = typeof symbolicOperators[number]\n\nconst binaryOperatorSet = new Set(binaryOperators)\nexport function isBinaryOperator(operator: string): operator is SymbolicBinaryOperator {\n return binaryOperatorSet.has(operator as SymbolicBinaryOperator)\n}\nexport function assertBinaryOperator(operator: string): asserts operator is SymbolicBinaryOperator {\n if (!isBinaryOperator(operator)) {\n throw new LitsError(`Expected symbolic binary operator, got ${operator}`, undefined)\n }\n}\nexport function asBinaryOperator(operator: string): SymbolicBinaryOperator {\n assertBinaryOperator(operator)\n return operator\n}\n\nconst symbolicOperatorSet = new Set(symbolicOperators)\nexport function isSymbolicOperator(operator: string): operator is SymbolicOperator {\n return symbolicOperatorSet.has(operator as SymbolicOperator)\n}\nexport function assertSymbolicOperator(operator: string): asserts operator is SymbolicOperator {\n if (!isSymbolicOperator(operator)) {\n throw new LitsError(`Expected symbolic operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicOperator(operator: string): SymbolicOperator {\n assertSymbolicOperator(operator)\n return operator\n}\n","import { LitsError } from '../errors'\nimport { isSymbolicOperator } from './operators'\nimport type { BasePrefixedNumberToken, LBraceToken, LBracketToken, LParenToken, MultiLineCommentToken, NumberToken, OperatorToken, RBraceToken, RBracketToken, RParenToken, RegexpShorthandToken, ReservedSymbolToken, SingleLineCommentToken, StringToken, SymbolToken, Token, TokenDescriptor, WhitespaceToken } from './token'\nimport type { ReservedSymbol, ValidReservedSymbol } from './reservedNames'\nimport { reservedSymbolRecord } from './reservedNames'\n\nexport type Tokenizer<T extends Token> = (input: string, position: number) => TokenDescriptor<T>\n\nconst illegalSymbolCharacters = [\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '\\'',\n '\"',\n '`',\n ',',\n '.',\n ';',\n ' ',\n '\\n',\n '\\r',\n '\\t',\n]\nconst illegalFirstSymbolCharacters = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ...illegalSymbolCharacters,\n]\nconst illegalSymbolCharacterSet = new Set(illegalSymbolCharacters)\nconst illegalFirstSymbolCharacterSet = new Set(illegalFirstSymbolCharacters)\n\nconst whitespaceRegExp = /\\s/\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeToken('RBrace', '}', input, position)\n\nconst tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nconst tokenizeRegexpShorthand: Tokenizer<RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['RegexpShorthand', `#${token[1]}${options}`]]\n}\n\nfunction tokenizeToken<T extends Token>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type, value] as T]\n else\n return NO_MATCH\n}\n\nexport const tokenizeWhitespace: Tokenizer<WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst postNumberRegExp = /[\\s)\\]}(,;]/\n\nexport const tokenizeNumber: Tokenizer<NumberToken> = (input, position) => {\n let i: number\n const negate = input[position] === '-'\n const plusPrefix = input[position] === '+'\n const start = negate || plusPrefix ? position + 1 : position\n let hasDecimalPoint = false\n let hasExponent = false\n for (i = start; i < input.length; i += 1) {\n const char = input[i] as string\n\n if (char === '_') {\n if (!decimalNumberRegExp.test(input[i - 1]!) || !decimalNumberRegExp.test(input[i + 1]!)) {\n return NO_MATCH\n }\n }\n\n else if (char === '.') {\n if (i === start || hasDecimalPoint || hasExponent) {\n return NO_MATCH\n }\n hasDecimalPoint = true\n }\n\n else if (char === 'e' || char === 'E') {\n if (i === start || hasExponent) {\n return NO_MATCH\n }\n\n if (input[i - 1] === '.' || input[i - 1] === '+' || input[i - 1] === '-') {\n return NO_MATCH\n }\n\n if (input[i + 1] === '+' || input[i + 1] === '-') {\n i += 1\n }\n\n hasExponent = true\n }\n\n else if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n\n if ((negate || plusPrefix) && i === start) {\n return NO_MATCH\n }\n\n const length = i - position\n if (length === 0) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['Number', input.substring(position, i)]]\n}\n\nexport const tokenizeBasePrefixedNumber: Tokenizer<BasePrefixedNumberToken> = (input, position) => {\n if (input[position] !== '0') {\n return NO_MATCH\n }\n\n const baseChar = input[position + 1]\n\n const type = baseChar === 'b' || baseChar === 'B'\n ? 'binary'\n : baseChar === 'o' || baseChar === 'O'\n ? 'octal'\n : baseChar === 'x' || baseChar === 'X'\n ? 'hex'\n : null\n\n if (type === null) {\n return NO_MATCH\n }\n\n let i: number\n for (i = position + 2; i < input.length; i += 1) {\n const char = input[i] as string\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length <= 2) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['BasePrefixedNumber', input.substring(position, i)]]\n}\n\nexport const tokenizeSymbol: Tokenizer<SymbolToken> = (input, position) => {\n let value = input[position]!\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['Symbol', value]]\n }\n\n if (!illegalFirstSymbolCharacterSet.has(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && !illegalSymbolCharacterSet.has(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeReservedSymbolToken: Tokenizer<ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeSymbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = reservedSymbolRecord[symbolName as ReservedSymbol]\n if (info === undefined) {\n return NO_MATCH\n }\n return [symbolMeta[0], ['ReservedSymbol', symbolName as ValidReservedSymbol]]\n}\n\nexport const tokenizeOperator: Tokenizer<OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isSymbolicOperator(threeChars)) {\n return [3, ['Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isSymbolicOperator(twoChars)) {\n return [2, ['Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isSymbolicOperator(oneChar)) {\n return [1, ['Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeMultiLineComment: Tokenizer<MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while ((input[position + length] !== '*' || input[position + length + 1] !== '/') && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeSingleLineComment: Tokenizer<SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const tokenizers = [\n tokenizeWhitespace,\n tokenizeMultiLineComment,\n tokenizeSingleLineComment,\n tokenizeReservedSymbolToken,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n tokenizeRegexpShorthand,\n tokenizeBasePrefixedNumber,\n tokenizeNumber,\n tokenizeOperator,\n tokenizeSymbol,\n] as const satisfies Tokenizer<Token>[]\n","import { LitsError } from '../errors'\nimport type { FilePathParams } from '../Lits/Lits'\nimport { tokenizers } from './tokenizers'\nimport type { SourceCodeInfo, Token, TokenDescriptor } from './token'\n\nexport interface TokenStream {\n tokens: Token[]\n hasDebugData: boolean\n filePath?: string\n}\n\nexport function tokenize(input: string, debug: boolean, filePath: FilePathParams['filePath']): TokenStream {\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath,\n hasDebugData: debug,\n }\n\n while (position < input.length) {\n const tokenDescriptor = getCurrentToken(input, position)\n\n const sourceCodeInfo: SourceCodeInfo | undefined = debug\n ? createSourceCodeInfo(input, position, filePath)\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (sourceCodeInfo) {\n token[2] = sourceCodeInfo\n }\n\n tokenStream.tokens.push(token)\n }\n }\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n return [position - initialPosition, token]\n }\n return null\n}\n","import { LitsError } from '../errors'\nimport type { ValidReservedSymbol } from './reservedNames'\nimport { type SymbolicBinaryOperator, type SymbolicOperator, isBinaryOperator } from './operators'\n\nexport const tokenTypes = [\n 'LBrace',\n 'LBracket',\n 'RBrace',\n 'RBracket',\n 'LParen',\n 'RParen',\n 'BasePrefixedNumber',\n 'MultiLineComment',\n 'Number',\n 'Operator',\n 'RegexpShorthand',\n 'ReservedSymbol',\n 'SingleLineComment',\n 'String',\n 'Symbol',\n 'Whitespace',\n] as const\n\nexport type TokenType = typeof tokenTypes[number]\n\nconst modifierNames = ['&rest', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\ntype GenericToken<T extends TokenType, V extends string = string> = [T, V] | [T, V, SourceCodeInfo]\n\nexport type LBraceToken = GenericToken<'LBrace', '{'>\nexport type LBracketToken = GenericToken<'LBracket', '['>\nexport type LParenToken = GenericToken<'LParen', '('>\nexport type RBraceToken = GenericToken<'RBrace', '}'>\nexport type RBracketToken = GenericToken<'RBracket', ']'>\nexport type RParenToken = GenericToken<'RParen', ')'>\n\nexport type BasePrefixedNumberToken = GenericToken<'BasePrefixedNumber'>\nexport type MultiLineCommentToken = GenericToken<'MultiLineComment'>\nexport type NumberToken = GenericToken<'Number'>\nexport type OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericToken<'Operator', T>\nexport type RegexpShorthandToken = GenericToken<'RegexpShorthand'>\nexport type ReservedSymbolToken<T extends ValidReservedSymbol = ValidReservedSymbol> = GenericToken<'ReservedSymbol', T>\nexport type SingleLineCommentToken = GenericToken<'SingleLineComment'>\nexport type StringToken = GenericToken<'String'>\nexport type SymbolToken<T extends string = string> = GenericToken<'Symbol', T>\nexport type WhitespaceToken = GenericToken<'Whitespace'>\n\nexport type Token =\n | LBraceToken\n | LBracketToken\n | LParenToken\n | RBraceToken\n | RBracketToken\n | RParenToken\n | BasePrefixedNumberToken\n | MultiLineCommentToken\n | NumberToken\n | OperatorToken\n | RegexpShorthandToken\n | ReservedSymbolToken\n | SingleLineCommentToken\n | StringToken\n | SymbolToken\n | WhitespaceToken\n\nexport type TokenDescriptor<T extends Token> = [length: number, token?: T]\n\nexport interface SourceCodeInfo {\n position: {\n line: number\n column: number\n }\n code: string\n filePath?: string\n}\n\nexport function isSymbolToken<T extends string>(token: Token, symbolName?: T): token is SymbolToken<T> {\n if (token?.[0] !== 'Symbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\n\nexport function assertSymbolToken<T extends string>(token: Token, symbolName?: T): asserts token is SymbolToken<T> {\n if (!isSymbolToken(token, symbolName)) {\n throwUnexpectedToken('Symbol', undefined, token)\n }\n}\nexport function asSymbolToken<T extends string>(token: Token, symbolName?: T): SymbolToken<T> {\n assertSymbolToken(token, symbolName)\n return token\n}\n\nexport function isReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): token is ReservedSymbolToken<T> {\n if (token?.[0] !== 'ReservedSymbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\nexport function assertReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): asserts token is ReservedSymbolToken<T> {\n if (!isReservedSymbolToken(token, symbolName)) {\n throwUnexpectedToken('ReservedSymbol', symbolName, token)\n }\n}\nexport function asReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): ReservedSymbolToken<T> {\n assertReservedSymbolToken(token, symbolName)\n return token\n}\n\nexport function isSingleLineCommentToken(token: Token): token is SingleLineCommentToken {\n return token?.[0] === 'SingleLineComment'\n}\nexport function assertSingleLineCommentToken(token: Token): asserts token is SingleLineCommentToken {\n if (!isSingleLineCommentToken(token)) {\n throwUnexpectedToken('SingleLineComment', undefined, token)\n }\n}\nexport function asSingleLineCommentToken(token: Token): SingleLineCommentToken {\n assertSingleLineCommentToken(token)\n return token\n}\n\nexport function isMultiLineCommentToken(token: Token): token is MultiLineCommentToken {\n return token?.[0] === 'MultiLineComment'\n}\nexport function assertMultiLineCommentToken(token: Token): asserts token is MultiLineCommentToken {\n if (!isMultiLineCommentToken(token)) {\n throwUnexpectedToken('MultiLineComment', undefined, token)\n }\n}\nexport function asMultiLineCommentToken(token: Token): MultiLineCommentToken {\n assertMultiLineCommentToken(token)\n return token\n}\n\nexport function isOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): token is OperatorToken<T> {\n if (token?.[0] !== 'Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): asserts token is OperatorToken<T> {\n if (!isOperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, token[2])\n }\n throwUnexpectedToken('Operator', operatorName, token)\n }\n}\nexport function asOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): OperatorToken<T> {\n assertOperatorToken(token, operatorName)\n return token\n}\n\nexport function isWhitespaceToken(token: Token): token is WhitespaceToken {\n return token?.[0] === 'Whitespace'\n}\nexport function assertWhitespaceToken(token: Token): asserts token is WhitespaceToken {\n if (!isWhitespaceToken(token)) {\n throwUnexpectedToken('Whitespace', undefined, token)\n }\n}\nexport function asWhitespaceToken(token: Token): WhitespaceToken {\n assertWhitespaceToken(token)\n return token\n}\n\nexport function isNumberToken(token: Token): token is NumberToken {\n return token?.[0] === 'Number'\n}\nexport function assertNumberToken(token: Token): asserts token is NumberToken {\n if (!isNumberToken(token)) {\n throwUnexpectedToken('Number', undefined, token)\n }\n}\nexport function asNumberToken(token: Token): NumberToken {\n assertNumberToken(token)\n return token\n}\n\nexport function isBasePrefixedNumberToken(token: Token): token is BasePrefixedNumberToken {\n return token?.[0] === 'BasePrefixedNumber'\n}\nexport function assertBasePrefixedNumberToken(token: Token): asserts token is BasePrefixedNumberToken {\n if (!isBasePrefixedNumberToken(token)) {\n throwUnexpectedToken('BasePrefixedNumber', undefined, token)\n }\n}\nexport function asBasePrefixedNumberToken(token: Token): BasePrefixedNumberToken {\n assertBasePrefixedNumberToken(token)\n return token\n}\n\nexport function isLParenToken(token: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', undefined, token)\n }\n}\nexport function asLParenToken(token: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', undefined, token)\n }\n}\nexport function asRParenToken(token: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', undefined, token)\n }\n}\nexport function asLBracketToken(token: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', undefined, token)\n }\n}\nexport function asRBracketToken(token: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', undefined, token)\n }\n}\nexport function asLBraceToken(token: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', undefined, token)\n }\n}\nexport function asRBraceToken(token: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', undefined, token)\n }\n}\nexport function asStringToken(token: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isRegexpShorthandToken(token: Token): token is RegexpShorthandToken {\n return token?.[0] === 'RegexpShorthand'\n}\nexport function assertRegexpShorthandToken(token: Token): asserts token is RegexpShorthandToken {\n if (!isRegexpShorthandToken(token)) {\n throwUnexpectedToken('RegexpShorthand', undefined, token)\n }\n}\nexport function asRegexpShorthandToken(token: Token): RegexpShorthandToken {\n assertRegexpShorthandToken(token)\n return token\n}\n\nexport function isA_BinaryOperatorToken(token: Token): token is OperatorToken<SymbolicBinaryOperator> {\n return token?.[0] === 'Operator' && isBinaryOperator(token[1])\n}\nexport function assertA_BinaryOperatorToken(token: Token): asserts token is OperatorToken<SymbolicBinaryOperator> {\n if (!isA_BinaryOperatorToken(token)) {\n throwUnexpectedToken('Operator', undefined, token)\n }\n}\nexport function asA_BinaryOperatorToken(token: Token): OperatorToken<SymbolicBinaryOperator> {\n assertA_BinaryOperatorToken(token)\n return token\n}\n\nfunction throwUnexpectedToken(expected: TokenType, expectedValue: string | undefined, actual: Token): never {\n const actualOutput = `${actual[0]} '${actual[1]}'`\n throw new LitsError(`Unexpected token: ${actualOutput}, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, actual[2])\n}\n","import type { TokenStream } from './tokenize'\nimport { isMultiLineCommentToken, isSingleLineCommentToken, isWhitespaceToken } from './token'\n\nexport function minifyTokenStream(tokenStream: TokenStream, { removeWhiteSpace }: { removeWhiteSpace: boolean }): TokenStream {\n const tokens = tokenStream.tokens\n .filter((token) => {\n if (isSingleLineCommentToken(token)\n || isMultiLineCommentToken(token)\n || (removeWhiteSpace && isWhitespaceToken(token))) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\nimport { isSymbolToken } from '../tokenizer/token'\n\nexport function transformSymbolTokens(tokenStram: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => isSymbolToken(token)\n ? [token[0], transformer(token[1])]\n : token),\n }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${token[1]}`\n }, '')\n}\n","import type { NormalExpressionName } from '../../reference/api'\nimport type { SpecialExpressionName, SpecialExpressionType } from '../builtin'\nimport { getAllBindingTargetNames } from '../builtin/bindingNode'\nimport { allNormalExpressions, normalExpressionTypes } from '../builtin/normalExpressions'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { ArrayNode } from '../builtin/specialExpressions/array'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DefinedNode } from '../builtin/specialExpressions/defined'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode, FunctionNode } from '../builtin/specialExpressions/functions'\nimport type { IfNode } from '../builtin/specialExpressions/if'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { ObjectNode } from '../builtin/specialExpressions/object'\nimport type { OrNode } from '../builtin/specialExpressions/or'\nimport type { QqNode } from '../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../builtin/specialExpressions/recur'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { UnlessNode } from '../builtin/specialExpressions/unless'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { type SymbolicBinaryOperator, isBinaryOperator, isFunctionOperator } from '../tokenizer/operators'\nimport { isNumberReservedSymbol, numberReservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { OperatorToken, ReservedSymbolToken, SourceCodeInfo, SymbolToken, Token, TokenType } from '../tokenizer/token'\nimport {\n asLBraceToken,\n asLBracketToken,\n asReservedSymbolToken,\n asSymbolToken,\n assertLParenToken,\n assertOperatorToken,\n assertRBraceToken,\n assertRBracketToken,\n assertRParenToken,\n assertReservedSymbolToken,\n assertSymbolToken,\n isA_BinaryOperatorToken,\n isLBraceToken,\n isLBracketToken,\n isLParenToken,\n isOperatorToken,\n isRBraceToken,\n isRBracketToken,\n isRParenToken,\n isReservedSymbolToken,\n isStringToken,\n isSymbolToken,\n} from '../tokenizer/token'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { assertNumberOfParams } from '../typeGuards'\nimport { asUserDefinedSymbolNode, isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode, isUserDefinedSymbolNode } from '../typeGuards/astNode'\nimport { type BindingNode, type BindingTarget, type Node, type NormalBuiltinSymbolNode, type NormalExpressionNodeExpression, type NormalExpressionNodeWithName, type NumberNode, type ParseState, type ReservedSymbolNode, type SpecialBuiltinSymbolNode, type StringNode, type SymbolNode, type UserDefinedSymbolNode, bindingTargetTypes } from './types'\n\nconst exponentiationPrecedence = 11\nconst binaryFunctionalOperatorPrecedence = 2\nconst placeholderRegexp = /^\\$([1-9]\\d?)?$/\n\nfunction withSourceCodeInfo<T extends Node | BindingTarget>(node: T, sourceCodeInfo: SourceCodeInfo | undefined): T {\n if (sourceCodeInfo) {\n node[2] = sourceCodeInfo\n }\n return node\n}\n\nfunction getPrecedence(operatorSign: SymbolicBinaryOperator, sourceCodeInfo: SourceCodeInfo | undefined): number {\n switch (operatorSign) {\n case '^': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 10\n\n case '+': // addition\n case '-': // subtraction\n return 9\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 8\n\n case '++': // string concatenation\n return 7\n\n case '<': // less than\n case '<=': // less than or equal\n case '≤': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n case '≥': // greater than or equal\n return 6\n\n case '=': // equal\n case '!=': // not equal\n case '≠': // not equal\n case '~': // approximate\n case '≈': // approximate\n return 5\n\n case '&': // bitwise AND\n case 'xor': // bitwise XOR\n case '|': // bitwise OR\n return 4\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 3\n\n case '|>': // pipe\n return 1\n\n // leave room for binaryFunctionalOperatorPrecedence = 2\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unknown binary operator: ${operatorSign satisfies never}`, sourceCodeInfo)\n }\n}\n\nfunction createNamedNormalExpressionNode(symbolNode: NormalBuiltinSymbolNode | UserDefinedSymbolNode, params: Node[], sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeWithName {\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([NodeTypes.NormalExpression, [symbolNode, params]], sourceCodeInfo)\n\n if (isNormalBuiltinSymbolNode(symbolNode)) {\n assertNumberOfParams(allNormalExpressions[symbolNode[1]]!.paramCount, node)\n }\n\n return node\n}\n\nfunction createAccessorNode(left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeExpression {\n // Unnamed normal expression\n return withSourceCodeInfo([NodeTypes.NormalExpression, [left, [right]]], sourceCodeInfo)\n}\n\nfunction fromBinaryOperatorToNode(operator: OperatorToken, symbolNode: SymbolNode, left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): Node {\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '^': // exponentiation\n case '*':\n case '/':\n case '%':\n case '+':\n case '-':\n case '<<':\n case '>>':\n case '>>>':\n case '++':\n case '<':\n case '<=':\n case '≤':\n case '>':\n case '>=':\n case '≥':\n case '=':\n case '!=':\n case '≠':\n case '&':\n case 'xor':\n case '|':\n case '~':\n case '≈':\n case '|>':\n return createNamedNormalExpressionNode(symbolNode as NormalBuiltinSymbolNode, [left, right], sourceCodeInfo)\n case '&&':\n case '||':\n case '??':\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]] as AndNode, sourceCodeInfo)\n /* v8 ignore next 10 */\n case '.':\n case ';':\n case ':=':\n case ',':\n case '->':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, sourceCodeInfo)\n }\n}\n\nexport class Parser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(count: number): Token {\n return this.tokenStream.tokens[this.parseState.position + count]!\n }\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): Node[] {\n const nodes: Node[] = []\n while (!this.isAtEnd()) {\n nodes.push(this.parseExpression(0, true))\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else {\n if (!this.isAtEnd()) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n }\n return nodes\n }\n\n private parseExpression(precedence = 0, moduleScope = false): Node {\n const firstToken = this.peek()\n\n let left: Node\n\n if (isSymbolToken(firstToken)) {\n switch (firstToken[1]) {\n case 'let':\n return this.parseLet(firstToken)\n case 'if':\n case 'unless':\n left = this.parseIfOrUnless(firstToken)\n break\n case 'cond':\n left = this.parseCond(firstToken)\n break\n case 'switch':\n left = this.parseSwitch(firstToken)\n break\n case 'for':\n case 'doseq':\n left = this.parseForOrDoseq(firstToken)\n break\n case 'do':\n left = this.parseDo(firstToken)\n break\n case 'loop':\n left = this.parseLoop(firstToken)\n break\n case 'try':\n left = this.parseTry(firstToken)\n break\n }\n }\n else if (isReservedSymbolToken(firstToken, 'function')) {\n return this.parseFunction(firstToken)\n }\n else if (isReservedSymbolToken(firstToken, 'export')) {\n if (!moduleScope) {\n throw new LitsError('export is only allowed in module scope', firstToken[2])\n }\n return this.parseExport(firstToken)\n }\n\n left ||= this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtExpressionEnd()) {\n if (isA_BinaryOperatorToken(operator)) {\n const name = operator[1]\n const newPrecedece = getPrecedence(name, operator[2])\n if (\n newPrecedece <= precedence\n // ^ (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n const symbol: SymbolNode = specialExpressionTypes[name as SpecialExpressionName]\n ? withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[name as SpecialExpressionName]], operator[2])\n : withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[name]!], operator[2])\n this.advance()\n const right = this.parseExpression(newPrecedece)\n left = fromBinaryOperatorToNode(operator, symbol, left, right, operator[2])\n }\n else if (isSymbolToken(operator)) {\n if (!isFunctionOperator(operator[1])) {\n break\n }\n const newPrecedece = binaryFunctionalOperatorPrecedence\n if (newPrecedece <= precedence) {\n break\n }\n const operatorSymbol = this.parseSymbol()\n const right = this.parseExpression(newPrecedece)\n if (isSpecialBuiltinSymbolNode(operatorSymbol)) {\n throw new LitsError('Special expressions are not allowed in binary functional operators', operatorSymbol[2])\n }\n left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2])\n }\n else {\n break\n }\n\n operator = this.peek()\n }\n\n return left\n }\n\n private parseOperand(): Node {\n let operand = this.parseOperandPart()\n let token = this.peek()\n while (isOperatorToken(token, '.') || isLBracketToken(token) || isLParenToken(token)) {\n if (token[1] === '.') {\n this.advance()\n const symbolToken = this.peek()\n if (!isSymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, symbolToken[1]], symbolToken[2])\n operand = createAccessorNode(operand, stringNode, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLBracketToken(token)) {\n this.advance()\n const expression = this.parseExpression()\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', this.peek()[2])\n }\n operand = createAccessorNode(operand, expression, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLParenToken(token)) {\n operand = this.parseFunctionCall(operand)\n token = this.peek()\n }\n }\n return operand\n }\n\n private parseOperandPart(): Node {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n return expression\n }\n\n else if (isOperatorToken(token)) {\n const operatorName = token[1]\n if (isBinaryOperator(operatorName)) {\n this.advance()\n if (specialExpressionTypes[operatorName as SpecialExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[operatorName as SpecialExpressionName]], token[2]) satisfies SpecialBuiltinSymbolNode\n }\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[operatorName as NormalExpressionName] as number], token[2]) satisfies NormalBuiltinSymbolNode\n }\n\n if (operatorName === '->') {\n return this.parseShorthandLamdaFunction()\n }\n else {\n throw new LitsError(`Illegal operator: ${operatorName}`, token[2])\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n TokenType,\n | 'Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'MultiLineComment' // Should have been removed\n | 'SingleLineComment' // Should have been removed\n | 'Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'Number':\n case 'BasePrefixedNumber':\n return this.parseNumber()\n case 'String':\n return this.parseString()\n case 'Symbol': {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n return this.parseSymbol()\n }\n case 'ReservedSymbol':\n return this.parseReservedSymbol()\n case 'RegexpShorthand':\n return this.parseRegexpShorthand()\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, token[2])\n }\n }\n\n private parseObject(): ObjectNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n const token = this.peek()\n if (isStringToken(token)) {\n const stringNode = this.parseString()\n params.push(withSourceCodeInfo([NodeTypes.String, stringNode[1]], token[2]))\n }\n else if (isSymbolToken(token)) {\n const value = token[1].startsWith('\\'')\n ? this.stringFromQuotedSymbol(token[1])\n : token[1]\n params.push(withSourceCodeInfo([NodeTypes.String, value], token[2]))\n this.advance()\n }\n else {\n throw new LitsError('Expected key to be a symbol or a string', this.peek()[2])\n }\n\n assertOperatorToken(this.peek(), ':=')\n this.advance()\n\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', this.peek()[2])\n }\n\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.object, params]], firstToken[2])\n }\n\n private parseArray(): ArrayNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.array, params]], firstToken[2])\n }\n\n private parseFunctionCall(symbol: Node): Node {\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n\n if (isSpecialBuiltinSymbolNode(symbol)) { // Named function\n const specialExpressionType = symbol[1]\n const type = specialExpressionType as Exclude<\n SpecialExpressionType,\n | typeof specialExpressionTypes.for\n | typeof specialExpressionTypes.if\n | typeof specialExpressionTypes.unless\n | typeof specialExpressionTypes.cond\n | typeof specialExpressionTypes.switch\n | typeof specialExpressionTypes.let\n | typeof specialExpressionTypes.do\n | typeof specialExpressionTypes.loop\n | typeof specialExpressionTypes.try\n | typeof specialExpressionTypes.doseq\n | typeof specialExpressionTypes.function\n >\n switch (type) {\n case specialExpressionTypes['||']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies OrNode\n case specialExpressionTypes['&&']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies AndNode\n case specialExpressionTypes.recur:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies RecurNode\n case specialExpressionTypes.array:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ArrayNode\n case specialExpressionTypes.object:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ObjectNode\n case specialExpressionTypes['??']: {\n if (params.length === 1) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, undefined]]], symbol[2]) satisfies QqNode\n }\n if (params.length === 2) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, params[1]!]]], symbol[2]) satisfies QqNode\n }\n throw new LitsError('Expected exactly two parameters', symbol[2])\n }\n case specialExpressionTypes['defined?']: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param as SymbolNode]], symbol[2]) satisfies DefinedNode\n }\n case specialExpressionTypes.throw: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param!]], symbol[2]) satisfies ThrowNode\n }\n case specialExpressionTypes['0_fn']:\n case specialExpressionTypes['0_def']:\n case specialExpressionTypes['0_defn']:\n throw new LitsError(`${type} is not allowed`, symbol[2])\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unknown special expression: ${type satisfies never}`, symbol[2])\n }\n }\n else if (isNormalBuiltinSymbolNode(symbol) || isNormalBuiltinSymbolNode(symbol)) {\n return createNamedNormalExpressionNode(symbol, params, symbol[2])\n }\n\n else {\n return withSourceCodeInfo([NodeTypes.NormalExpression, [symbol, params]], symbol[2]) satisfies NormalExpressionNodeExpression\n }\n }\n\n parseLambdaFunction(): FnNode | null {\n const firstToken = this.peek()\n\n if (isLParenToken(firstToken)\n && isSymbolToken(this.peekAhead(1))\n && isOperatorToken(this.peekAhead(2), '->')) {\n return null\n }\n\n try {\n const functionArguments = this.parseFunctionArguments()\n\n if (!isOperatorToken(this.peek(), '->')) {\n return null\n }\n this.advance()\n\n const body = this.parseExpression()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [body],\n ]]], firstToken[2]) satisfies FnNode\n }\n catch {\n return null\n }\n }\n\n parseFunctionArguments(): BindingTarget[] {\n const firstToken = this.peek()\n if (isSymbolToken(firstToken)) {\n return [withSourceCodeInfo([bindingTargetTypes.symbol, [this.parseSymbol(), undefined]], firstToken[2])]\n }\n\n assertLParenToken(firstToken)\n this.advance()\n\n let rest = false\n let defaults = false\n const functionArguments: BindingTarget[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n if (rest) {\n throw new LitsError('Rest argument must be last', this.peek()[2])\n }\n const bindingTarget = this.parseBindingTarget()\n if (bindingTarget[1][1] !== undefined) {\n defaults = true\n }\n if (bindingTarget[0] === bindingTargetTypes.rest) {\n rest = true\n }\n if (defaults && !bindingTarget[1][1]) {\n throw new LitsError('Default arguments must be last', this.peek()[2])\n }\n functionArguments.push(bindingTarget)\n\n if (!isOperatorToken(this.peek(), ',') && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n\n this.advance()\n\n return functionArguments\n }\n\n private parseShorthandLamdaFunction(): FnNode {\n const firstToken = this.peek()\n this.advance()\n const startPos = this.parseState.position\n const exprNode = this.parseExpression()\n const endPos = this.parseState.position - 1\n\n let arity = 0\n let dollar1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. $ = NAKED, $1, $2, $3, etc = WITH_1\n for (let pos = startPos; pos <= endPos; pos += 1) {\n const token = this.tokenStream.tokens[pos]!\n if (isSymbolToken(token)) {\n const match = placeholderRegexp.exec(token[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && dollar1 === 'WITH_1') || (match[1] && dollar1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use $ or $1', firstToken[2])\n\n dollar1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', firstToken[2])\n }\n }\n }\n\n const functionArguments: BindingTarget[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && dollar1 === 'NAKED') {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, '$'], undefined]], firstToken[2]))\n }\n else {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, `$${i}`], undefined]], firstToken[2]))\n }\n }\n\n const node: FnNode = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [exprNode],\n ]]], firstToken[2])\n\n return node\n }\n\n private parseOptionalDefaulValue(): Node | undefined {\n if (isOperatorToken(this.peek(), ':=')) {\n this.advance()\n return this.parseExpression()\n }\n return undefined\n }\n\n private parseBindingTarget({ requireDefaultValue, noRest }: { requireDefaultValue?: true, noRest?: true } = {}): BindingTarget {\n const firstToken = this.peek()\n\n // Symbol\n if (isSymbolToken(firstToken)) {\n const symbol = this.parseSymbol()\n if (!isUserDefinedSymbolNode(symbol)) {\n throw new LitsError('Expected user defined symbol', firstToken[2])\n }\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.symbol, [symbol, defaultValue]], firstToken[2])\n }\n\n // Rest\n if (isOperatorToken(firstToken, '...')) {\n if (noRest) {\n throw new LitsError('Rest element not allowed', firstToken[2])\n }\n this.advance()\n const symbol = asUserDefinedSymbolNode(this.parseSymbol())\n if (isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n return withSourceCodeInfo([bindingTargetTypes.rest, [symbol[1], undefined]], firstToken[2])\n }\n\n // Array\n if (isLBracketToken(firstToken)) {\n this.advance()\n const elements: (BindingTarget | null)[] = []\n let token = this.peek()\n let rest = false\n while (!isRBracketToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, ',')) {\n elements.push(null)\n this.advance()\n token = this.peek()\n continue\n }\n\n const target = this.parseBindingTarget()\n\n if (target[0] === bindingTargetTypes.rest) {\n rest = true\n }\n\n elements.push(target)\n token = this.peek()\n\n if (!isRBracketToken(token)) {\n assertOperatorToken(token, ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.array, [elements, defaultValue]], firstToken[2])\n }\n\n // Object\n if (isLBraceToken(firstToken)) {\n this.advance()\n const elements: Record<string, BindingTarget> = {}\n let token = this.peek()\n let rest = false\n while (!isRBraceToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, '...')) {\n rest = true\n this.advance()\n }\n const key = asUserDefinedSymbolNode(this.parseSymbol())\n token = this.peek()\n if (isReservedSymbolToken(token, 'as')) {\n if (rest) {\n throw new LitsError('Rest argument can not have alias', token[2])\n }\n this.advance()\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n if (elements[name[1]]) {\n throw new LitsError(`Duplicate binding name: ${name}`, token[2])\n }\n elements[key[1]] = withSourceCodeInfo([bindingTargetTypes.symbol, [name, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n else if (isRBraceToken(token) || isOperatorToken(token, ',') || isOperatorToken(token, ':=')) {\n if (elements[key[1]]) {\n throw new LitsError(`Duplicate binding name: ${key}`, token[2])\n }\n if (rest && isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n\n elements[key[1]] = rest\n ? withSourceCodeInfo([bindingTargetTypes.rest, [key[1], this.parseOptionalDefaulValue()]], firstToken[2])\n : withSourceCodeInfo([bindingTargetTypes.symbol, [key, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n\n else if (isLBraceToken(token) || isLBracketToken(token)) {\n elements[key[1]] = this.parseBindingTarget()\n }\n\n if (!isRBraceToken(this.peek())) {\n assertOperatorToken(this.peek(), ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n token = this.peek()\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', token[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.object, [elements, defaultValue]], firstToken[2])\n }\n\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n\n private parseLet(token: SymbolToken, optionalSemicolon = false): LetNode {\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n\n const value = target[1][1]!\n target[1][1] = undefined\n\n if (!optionalSemicolon) {\n assertOperatorToken(this.peek(), ';')\n }\n\n const bindingTarget: BindingNode = withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2])\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.let, bindingTarget]], token[2]) satisfies LetNode\n }\n\n private parseDo(token: SymbolToken): DoNode {\n this.advance()\n const expressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n }\n\n private parseLoop(firstToken: SymbolToken): LoopNode {\n this.advance()\n\n const bindingNodes: BindingNode[] = []\n let token = this.peek()\n while (!this.isAtEnd() && !isSymbolToken(token, 'do')) {\n assertSymbolToken(token, 'let')\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n const value = target[1][1]!\n target[1][1] = undefined\n\n bindingNodes.push(withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2]) satisfies BindingNode)\n\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n token = this.peek()\n }\n if (bindingNodes.length === 0) {\n throw new LitsError('Expected binding', this.peek()[2])\n }\n\n assertSymbolToken(token, 'do')\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n params.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.loop, bindingNodes, params]], firstToken[2]) satisfies LoopNode\n }\n\n private parseTry(token: SymbolToken): TryNode {\n this.advance()\n const tryExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'catch')) {\n tryExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'catch')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const tryExpression = tryExpressions.length === 1\n ? tryExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, tryExpressions]], token[2]) satisfies DoNode\n\n assertReservedSymbolToken(this.peek(), 'catch')\n this.advance()\n\n let errorSymbol: SymbolNode | undefined\n if (isLParenToken(this.peek())) {\n this.advance()\n errorSymbol = this.parseSymbol()\n assertRParenToken(this.peek())\n this.advance()\n }\n\n const catchExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n catchExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const catchExpression = catchExpressions.length === 1\n ? catchExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, catchExpressions]], token[2]) satisfies DoNode\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.try, tryExpression, errorSymbol, catchExpression]], token[2]) satisfies TryNode\n }\n\n private parseForOrDoseq(firstToken: SymbolToken): ForNode | DoSeqNode {\n const isDoseq = firstToken[1] === 'doseq'\n this.advance()\n\n const forLoopBindings: LoopBindingNode[] = []\n\n while (!this.isAtEnd() && !isSymbolToken(this.peek(), 'do')) {\n const loopBinding = this.parseForLoopBinding()\n const existingBoundNames = forLoopBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[0][1][0])))\n const newBoundNames = getAllBindingTargetNames(loopBinding[0][1][0])\n if (Object.keys(newBoundNames).some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', loopBinding[0][2])\n }\n forLoopBindings.push(loopBinding)\n }\n\n assertSymbolToken(this.peek(), 'do')\n this.advance()\n\n const expressions: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return isDoseq\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.doseq, forLoopBindings, expressions]], firstToken[2]) satisfies DoSeqNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.for, forLoopBindings, expressions]], firstToken[2]) satisfies ForNode\n }\n\n private parseForLoopBinding(): LoopBindingNode {\n assertReservedSymbolToken(this.peek(), 'each')\n\n this.advance()\n\n const bindingNode = this.parseBinding()\n\n const modifiers: Array<'&let' | '&when' | '&while'> = []\n let token = this.peek()\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'let')\n && !isReservedSymbolToken(token, 'when')\n && !isReservedSymbolToken(token, 'while')\n && !isSymbolToken(token, 'do')\n && !isReservedSymbolToken(token, 'each')\n ) {\n throw new LitsError('Expected symbol each, do, let, when or while', token[2])\n }\n\n const letBindings: BindingNode[] = []\n if (token[1] === 'let') {\n modifiers.push('&let')\n while (isSymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n const existingBoundNames = letBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[1][0])))\n const newBoundNames = Object.keys(getAllBindingTargetNames(letNode[1][1][1][0]))\n if (newBoundNames.some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', letNode[1][1][2])\n }\n\n letBindings.push(letNode[1][1])\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n }\n\n let whenNode: Node | undefined\n let whileNode: Node | undefined\n while (\n isReservedSymbolToken(token, 'when')\n || isReservedSymbolToken(token, 'while')\n ) {\n this.advance()\n\n if (token[1] === 'when') {\n if (modifiers.includes('&when')) {\n throw new LitsError('Multiple when modifiers in for loop', token[2])\n }\n modifiers.push('&when')\n whenNode = this.parseExpression()\n }\n else {\n if (modifiers.includes('&while')) {\n throw new LitsError('Multiple while modifiers in for loop', token[2])\n }\n modifiers.push('&while')\n whileNode = this.parseExpression()\n }\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each')) {\n throw new LitsError('Expected do or each', token[2])\n }\n\n return [bindingNode, letBindings, whenNode, whileNode] satisfies LoopBindingNode\n }\n\n private parseBinding(): BindingNode {\n const firstToken = asSymbolToken(this.peek())\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n\n assertReservedSymbolToken(this.peek(), 'in')\n this.advance()\n\n const value = this.parseExpression()\n\n const node: BindingNode = withSourceCodeInfo(\n [\n NodeTypes.Binding,\n [\n withSourceCodeInfo([bindingTargetTypes.symbol, [name, undefined]], firstToken[2]),\n value,\n ],\n ],\n firstToken[2],\n )\n return node\n }\n\n parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode {\n const isUnless = token[1] === 'unless'\n this.advance()\n const condition = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const thenExpressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'else')\n && !isReservedSymbolToken(this.peek(), 'end')\n ) {\n thenExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'else') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = thenExpressions.length === 1\n ? thenExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, thenExpressions]], token[2]) satisfies DoNode\n\n let elseExpression: Node | undefined\n if (isReservedSymbolToken(this.peek(), 'else')) {\n this.advance()\n const elseExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n elseExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n elseExpression = elseExpressions.length === 1\n ? elseExpressions[0]\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, elseExpressions]], token[2]) satisfies DoNode\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const params = [condition, thenExpression]\n if (elseExpression) {\n params.push(elseExpression)\n }\n\n return isUnless\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.unless, [condition, thenExpression, elseExpression]]], token[2]) satisfies UnlessNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [condition, thenExpression, elseExpression]]], token[2]) satisfies IfNode\n }\n\n parseCond(token: SymbolToken): CondNode {\n this.advance()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.cond, params]], token[2]) satisfies CondNode\n }\n\n parseSwitch(token: SymbolToken): SwitchNode {\n this.advance()\n const valueExpression = this.parseExpression()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.switch, valueExpression, params]], token[2]) satisfies SwitchNode\n }\n\n parseFunction(token: ReservedSymbolToken<'function'>): FunctionNode {\n this.advance()\n const symbol = this.parseSymbol()\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n assertOperatorToken(this.peek(), ';')\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.function, symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies FunctionNode\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private isAtExpressionEnd(): boolean {\n if (this.isAtEnd()) {\n return true\n }\n const token = this.peek()\n if (isOperatorToken(token)) {\n return [';', ',', ':='].includes(token[1])\n }\n if (isReservedSymbolToken(token)) {\n return ['else', 'when', 'while', 'then', 'end', 'case', 'catch'].includes(token[1])\n }\n return false\n }\n\n private parseExport(token: ReservedSymbolToken<'export'>): DefNode | DefnNode {\n this.advance()\n if (isSymbolToken(this.peek(), 'let')) {\n const letNode = this.parseLet(asSymbolToken(this.peek()))\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_def'], letNode[1][1]]], token[2]) satisfies DefNode\n }\n else if (isReservedSymbolToken(this.peek(), 'function')) {\n this.advance()\n const symbol = this.parseSymbol()\n\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_defn'], symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies DefnNode\n }\n else {\n throw new LitsError('Expected let or function', this.peek()[2])\n }\n }\n\n private stringToSymbolNode(value: string, sourceCodeInfo: SourceCodeInfo | undefined): SymbolNode {\n if (specialExpressionTypes[value as SpecialExpressionName] !== undefined && value !== 'fn' && value !== 'def' && value !== 'defn') {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[value as SpecialExpressionName]], sourceCodeInfo) satisfies SymbolNode\n }\n if (normalExpressionTypes[value as NormalExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[value as NormalExpressionName] as number], sourceCodeInfo) satisfies SymbolNode\n }\n return withSourceCodeInfo([NodeTypes.UserDefinedSymbol, value], sourceCodeInfo) satisfies SymbolNode\n }\n\n stringFromQuotedSymbol(value: string): string {\n return value.substring(1, value.length - 1)\n .replace(\n /(\\\\{2})|(\\\\')|\\\\(.)/g,\n (\n _,\n backslash: string,\n singleQuote: string,\n normalChar: string,\n ) => {\n if (backslash) {\n return '\\\\'\n }\n if (singleQuote) {\n return '\\''\n }\n return `\\\\${normalChar}`\n },\n )\n }\n\n private parseSymbol(): SymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode {\n const token = this.peek()\n this.advance()\n if (!isSymbolToken(token)) {\n throw new LitsError(`Expected symbol token, got ${token[0]}`, token[2])\n }\n if (token[1][0] === '\\'') {\n return this.stringToSymbolNode(this.stringFromQuotedSymbol(token[1]), token[2])\n }\n else {\n return this.stringToSymbolNode(token[1], token[2])\n }\n }\n\n private parseReservedSymbol(): ReservedSymbolNode | NumberNode {\n const token = asReservedSymbolToken(this.peek())\n this.advance()\n\n const symbol = token[1]\n if (isNumberReservedSymbol(symbol)) {\n return withSourceCodeInfo([NodeTypes.Number, numberReservedSymbolRecord[symbol]], token[2]) satisfies NumberNode\n }\n return withSourceCodeInfo([NodeTypes.ReservedSymbol, token[1]], token[2]) satisfies ReservedSymbolNode\n }\n\n private parseNumber(): NumberNode {\n const token = this.peek()\n this.advance()\n\n const value = token[1]\n const negative = value[0] === '-'\n const numberString = (negative ? value.substring(1) : value).replace(/_/g, '')\n return withSourceCodeInfo([NodeTypes.Number, negative ? -Number(numberString) : Number(numberString)], token[2]) satisfies NumberNode\n }\n\n private parseString(): StringNode {\n const token = this.peek()\n this.advance()\n const value = token[1].substring(1, token[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return withSourceCodeInfo([NodeTypes.String, value], token[2]) satisfies StringNode\n }\n\n private parseRegexpShorthand(): NormalExpressionNodeWithName {\n const token = this.peek()\n this.advance()\n\n const endStringPosition = token[1].lastIndexOf('\"')\n const regexpString = token[1].substring(2, endStringPosition)\n const optionsString = token[1].substring(endStringPosition + 1)\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, regexpString], token[2]) satisfies StringNode\n\n const optionsNode: StringNode = withSourceCodeInfo([NodeTypes.String, optionsString], token[2]) satisfies StringNode\n\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([\n NodeTypes.NormalExpression,\n [\n withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes.regexp as number], token[2]),\n [stringNode, optionsNode],\n ],\n ], token[2])\n\n return node\n }\n}\n","import type { Ast } from '../parser/types'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport { evaluate, evaluateNode } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport type { Ast, LitsFunction, ParseState } from '../parser/types'\nimport { tokenize } from '../tokenizer/tokenize'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { minifyTokenStream } from '../tokenizer/minifyTokenStream'\nimport { transformSymbolTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { builtin } from '../builtin'\nimport { Parser } from '../parser/Parser'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface ContextParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n}\n\nexport interface MinifyParams {\n minify?: boolean\n}\n\nexport interface FilePathParams {\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: ContextParams & FilePathParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public context(programOrAst: string | Ast, params: ContextParams & FilePathParams = {}): Context {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public getUndefinedSymbols(programOrAst: string | Ast, params: ContextParams = {}): Set<string> {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n return getUndefinedSymbols(ast, contextStack, builtin, evaluateNode)\n }\n\n public tokenize(program: string, tokenizeParams: FilePathParams & MinifyParams = {}): TokenStream {\n const tokenStream = tokenize(program, this.debug, tokenizeParams.filePath)\n return tokenizeParams.minify ? minifyTokenStream(tokenStream, { removeWhiteSpace: false }) : tokenStream\n }\n\n public parse(tokenStream: TokenStream): Ast {\n tokenStream = minifyTokenStream(tokenStream, { removeWhiteSpace: true })\n const ast: Ast = {\n body: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n }\n\n ast.body = new Parser(tokenStream, parseState).parse()\n\n return ast\n }\n\n public evaluate(ast: Ast, params: ContextParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transformSymbols(tokenStream: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return transformSymbolTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: ContextParams = {}): Any {\n const fnName = 'FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59'\n const program = this.generateApplyFunctionCall(fnName, fnParams)\n\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateApplyFunctionCall(fnName: string, fnParams: unknown[]) {\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(', ')\n return `${fnName}(${paramsString})`\n }\n\n private generateAst(program: string, params: ContextParams & FilePathParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n filePath: params.filePath,\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { LitsError } from '../errors'\nimport type { Context } from '../evaluator/interface'\nimport { Lits } from '../Lits/Lits'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getCodeMarker } from '../utils/debug/getCodeMarker'\n\ninterface TestChunk {\n name: string\n program: string\n directive: 'SKIP' | null\n}\n\nexport interface RunTestParams {\n testPath: string\n testNamePattern?: RegExp\n}\n\nexport interface TestResult {\n /**\n * Test report\n * http://testanything.org/\n */\n tap: string\n success: boolean\n}\n\nexport function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult {\n const includedFilePaths = getIncludedFilePaths(filePath)\n const testResult: TestResult = {\n tap: 'TAP version 13\\n',\n success: true,\n }\n try {\n const testChunks = getTestChunks(filePath)\n testResult.tap += `1..${testChunks.length}\\n`\n testChunks.forEach((testChunkProgram, index) => {\n const testNumber = index + 1\n if (testNamePattern && !testNamePattern.test(testChunkProgram.name)) {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip - Not matching testNamePattern ${testNamePattern}\\n`\n }\n else if (testChunkProgram.directive === 'SKIP') {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip\\n`\n }\n else {\n try {\n const lits = new Lits({ debug: true })\n const contexts = getContexts(includedFilePaths, lits)\n lits.run(testChunkProgram.program, {\n contexts,\n filePath,\n })\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name}\\n`\n }\n catch (error) {\n testResult.success = false\n testResult.tap += `not ok ${testNumber} ${testChunkProgram.name}${getErrorYaml(error)}`\n }\n }\n })\n }\n catch (error: unknown) {\n testResult.tap += `Bail out! ${getErrorMessage(error)}\\n`\n testResult.success = false\n }\n return testResult\n}\n\nfunction readLitsFile(litsPath: string): string {\n if (!litsPath.endsWith('.lits'))\n throw new Error(`Expected .lits file, got ${litsPath}`)\n\n return fs.readFileSync(litsPath, { encoding: 'utf-8' })\n}\n\nfunction getContexts(includedFilePaths: string[], lits: Lits): Context[] {\n return includedFilePaths.reduce((acc: Context[], filePath) => {\n const fileContent = readLitsFile(filePath)\n acc.push(lits.context(fileContent, { filePath, contexts: acc }))\n return acc\n }, [])\n}\n\nfunction getIncludedFilePaths(absoluteFilePath: string): string[] {\n const result: string[] = []\n getIncludesRecursively(absoluteFilePath, result)\n return result.reduce((acc: string[], entry: string) => {\n if (!acc.includes(entry))\n acc.push(entry)\n\n return acc\n }, [])\n\n function getIncludesRecursively(filePath: string, includedFilePaths: string[]): void {\n const includeFilePaths = readIncludeDirectives(filePath)\n includeFilePaths.forEach((includeFilePath) => {\n getIncludesRecursively(includeFilePath, includedFilePaths)\n includedFilePaths.push(includeFilePath)\n })\n }\n}\n\nfunction readIncludeDirectives(filePath: string): string[] {\n const fileContent = readLitsFile(filePath)\n const dirname = path.dirname(filePath)\n let okToInclude = true\n return fileContent.split('\\n').reduce((acc: string[], line) => {\n const includeMatch = line.match(/^\\s*\\/{2}\\s*@include\\s*(\\S+)\\s*$/)\n if (includeMatch) {\n if (!okToInclude)\n throw new Error(`@include must be in the beginning of file: ${filePath}:${line + 1}`)\n\n const relativeFilePath = includeMatch[1] as string\n acc.push(path.resolve(dirname, relativeFilePath))\n }\n if (!line.match(/^\\s*\\/.*$/))\n okToInclude = false\n\n return acc\n }, [])\n}\n\n// Splitting test file based on @test annotations\nfunction getTestChunks(testPath: string): TestChunk[] {\n const testProgram = readLitsFile(testPath)\n let currentTest: TestChunk | undefined\n let setupCode = ''\n return testProgram.split('\\n').reduce((result: TestChunk[], line, index) => {\n const currentLineNbr = index + 1\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const testNameAnnotationMatch = line.match(/^\\s*\\/{2}\\s*@(?:(skip)-)?test\\s*(.*)$/)\n if (testNameAnnotationMatch) {\n const directive = (testNameAnnotationMatch[1] ?? '').toUpperCase()\n const testName = testNameAnnotationMatch[2]\n if (!testName)\n throw new Error(`Missing test name on line ${currentLineNbr}`)\n\n if (result.find(chunk => chunk.name === testName))\n throw new Error(`Duplicate test name ${testName}`)\n\n currentTest = {\n directive: (directive || null) as TestChunk['directive'],\n name: testName,\n // Adding new-lines to make lits debug information report correct rows\n program:\n setupCode + [...Array(currentLineNbr + 2 - setupCode.split('\\n').length).keys()].map(() => '').join('\\n'),\n }\n result.push(currentTest)\n return result\n }\n if (!currentTest)\n setupCode += `${line}\\n`\n else\n currentTest.program += `${line}\\n`\n\n return result\n }, [])\n}\n\nexport function getErrorYaml(error: unknown): string {\n const message = getErrorMessage(error)\n /* v8 ignore next 7 */\n if (!isAbstractLitsError(error)) {\n return `\n ---\n message: ${JSON.stringify(message)}\n ...\n`\n }\n\n const sourceCodeInfo = error.sourceCodeInfo\n /* v8 ignore next 8 */\n if (!sourceCodeInfo || typeof sourceCodeInfo === 'string') {\n return `\n ---\n message: ${JSON.stringify(message)}\n error: ${JSON.stringify(error.name)}\n ...\n`\n }\n\n const formattedMessage = message.includes('\\n')\n ? `|\\n ${message.split(/\\r?\\n/).join('\\n ')}`\n : JSON.stringify(message)\n return `\n ---\n error: ${JSON.stringify(error.name)}\n message: ${formattedMessage}\n location: ${JSON.stringify(getLocation(sourceCodeInfo))}\n code:\n - \"${sourceCodeInfo.code}\"\n - \"${getCodeMarker(sourceCodeInfo)}\"\n ...\n`\n}\n\nfunction getLocation(sourceCodeInfo: SourceCodeInfo): string {\n const terms: string[] = []\n if (sourceCodeInfo.filePath)\n terms.push(sourceCodeInfo.filePath)\n\n if (sourceCodeInfo.position) {\n terms.push(`${sourceCodeInfo.position.line}`)\n terms.push(`${sourceCodeInfo.position.column}`)\n }\n\n return terms.join(':')\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (!isAbstractLitsError(error)) {\n // error should always be an Error (other cases is just for kicks)\n /* v8 ignore next 1 */\n return typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error'\n }\n return error.shortMessage\n}\n\nfunction isAbstractLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n"],"names":["isLitsFunction","addReductionFunctions","addNormalExpressions","evalueateBindingTargetValues"],"mappings":"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","x_google_ignoreList":[0]}