@mojir/lits 1.1.0

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 (229) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +146 -0
  3. package/dist/cli/cli/src/cli.d.ts +2 -0
  4. package/dist/cli/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
  5. package/dist/cli/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
  6. package/dist/cli/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
  7. package/dist/cli/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
  8. package/dist/cli/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
  9. package/dist/cli/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
  10. package/dist/cli/cli/src/cliDocumentation/getCliType.d.ts +3 -0
  11. package/dist/cli/cli/src/cliFormatterRules.d.ts +13 -0
  12. package/dist/cli/cli/src/colorizer.d.ts +906 -0
  13. package/dist/cli/cli/src/createReadlineInterface.d.ts +6 -0
  14. package/dist/cli/cli.js +14963 -0
  15. package/dist/cli/common/clojureDocs.d.ts +1 -0
  16. package/dist/cli/common/createFormatter.d.ts +6 -0
  17. package/dist/cli/common/utils.d.ts +3 -0
  18. package/dist/cli/reference/api.d.ts +59 -0
  19. package/dist/cli/reference/categories/array.d.ts +3 -0
  20. package/dist/cli/reference/categories/assert.d.ts +3 -0
  21. package/dist/cli/reference/categories/bitwise.d.ts +3 -0
  22. package/dist/cli/reference/categories/collection.d.ts +3 -0
  23. package/dist/cli/reference/categories/functional.d.ts +3 -0
  24. package/dist/cli/reference/categories/math.d.ts +3 -0
  25. package/dist/cli/reference/categories/misc.d.ts +3 -0
  26. package/dist/cli/reference/categories/object.d.ts +3 -0
  27. package/dist/cli/reference/categories/predicate.d.ts +3 -0
  28. package/dist/cli/reference/categories/regularExpression.d.ts +3 -0
  29. package/dist/cli/reference/categories/sequence.d.ts +3 -0
  30. package/dist/cli/reference/categories/specialExpressions.d.ts +3 -0
  31. package/dist/cli/reference/categories/string.d.ts +3 -0
  32. package/dist/cli/reference/datatype.d.ts +3 -0
  33. package/dist/cli/reference/examples.d.ts +16 -0
  34. package/dist/cli/reference/index.d.ts +50 -0
  35. package/dist/cli/reference/shorthand.d.ts +3 -0
  36. package/dist/cli/src/Lits/Cache.d.ts +16 -0
  37. package/dist/cli/src/Lits/Lits.d.ts +50 -0
  38. package/dist/cli/src/analyze/index.d.ts +2 -0
  39. package/dist/cli/src/analyze/interface.d.ts +12 -0
  40. package/dist/cli/src/analyze/utils.d.ts +3 -0
  41. package/dist/cli/src/builtin/index.d.ts +5 -0
  42. package/dist/cli/src/builtin/interface.d.ts +43 -0
  43. package/dist/cli/src/builtin/normalExpressions/categories/array.d.ts +2 -0
  44. package/dist/cli/src/builtin/normalExpressions/categories/assert.d.ts +2 -0
  45. package/dist/cli/src/builtin/normalExpressions/categories/bitwise.d.ts +2 -0
  46. package/dist/cli/src/builtin/normalExpressions/categories/collection.d.ts +2 -0
  47. package/dist/cli/src/builtin/normalExpressions/categories/functional.d.ts +2 -0
  48. package/dist/cli/src/builtin/normalExpressions/categories/math.d.ts +2 -0
  49. package/dist/cli/src/builtin/normalExpressions/categories/misc.d.ts +2 -0
  50. package/dist/cli/src/builtin/normalExpressions/categories/object.d.ts +2 -0
  51. package/dist/cli/src/builtin/normalExpressions/categories/predicates.d.ts +2 -0
  52. package/dist/cli/src/builtin/normalExpressions/categories/regexp.d.ts +2 -0
  53. package/dist/cli/src/builtin/normalExpressions/categories/sequence.d.ts +4 -0
  54. package/dist/cli/src/builtin/normalExpressions/categories/string.d.ts +2 -0
  55. package/dist/cli/src/builtin/normalExpressions/index.d.ts +2 -0
  56. package/dist/cli/src/builtin/specialExpressions/and.d.ts +3 -0
  57. package/dist/cli/src/builtin/specialExpressions/comment.d.ts +2 -0
  58. package/dist/cli/src/builtin/specialExpressions/cond.d.ts +8 -0
  59. package/dist/cli/src/builtin/specialExpressions/declared.d.ts +2 -0
  60. package/dist/cli/src/builtin/specialExpressions/def.d.ts +3 -0
  61. package/dist/cli/src/builtin/specialExpressions/defs.d.ts +3 -0
  62. package/dist/cli/src/builtin/specialExpressions/do.d.ts +3 -0
  63. package/dist/cli/src/builtin/specialExpressions/functions.d.ts +9 -0
  64. package/dist/cli/src/builtin/specialExpressions/if-let.d.ts +3 -0
  65. package/dist/cli/src/builtin/specialExpressions/if-not.d.ts +3 -0
  66. package/dist/cli/src/builtin/specialExpressions/if.d.ts +3 -0
  67. package/dist/cli/src/builtin/specialExpressions/let.d.ts +3 -0
  68. package/dist/cli/src/builtin/specialExpressions/loop.d.ts +3 -0
  69. package/dist/cli/src/builtin/specialExpressions/loops.d.ts +12 -0
  70. package/dist/cli/src/builtin/specialExpressions/or.d.ts +3 -0
  71. package/dist/cli/src/builtin/specialExpressions/qq.d.ts +3 -0
  72. package/dist/cli/src/builtin/specialExpressions/recur.d.ts +2 -0
  73. package/dist/cli/src/builtin/specialExpressions/throw.d.ts +2 -0
  74. package/dist/cli/src/builtin/specialExpressions/time.d.ts +3 -0
  75. package/dist/cli/src/builtin/specialExpressions/try.d.ts +3 -0
  76. package/dist/cli/src/builtin/specialExpressions/when-first.d.ts +3 -0
  77. package/dist/cli/src/builtin/specialExpressions/when-let.d.ts +3 -0
  78. package/dist/cli/src/builtin/specialExpressions/when-not.d.ts +3 -0
  79. package/dist/cli/src/builtin/specialExpressions/when.d.ts +3 -0
  80. package/dist/cli/src/builtin/utils.d.ts +18 -0
  81. package/dist/cli/src/cli.d.ts +2 -0
  82. package/dist/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
  83. package/dist/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
  84. package/dist/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
  85. package/dist/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
  86. package/dist/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
  87. package/dist/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
  88. package/dist/cli/src/cliDocumentation/getCliType.d.ts +3 -0
  89. package/dist/cli/src/cliFormatterRules.d.ts +13 -0
  90. package/dist/cli/src/colorizer.d.ts +906 -0
  91. package/dist/cli/src/constants/constants.d.ts +42 -0
  92. package/dist/cli/src/createReadlineInterface.d.ts +6 -0
  93. package/dist/cli/src/errors.d.ts +26 -0
  94. package/dist/cli/src/evaluator/ContextStack.d.ts +21 -0
  95. package/dist/cli/src/evaluator/functionExecutors.d.ts +11 -0
  96. package/dist/cli/src/evaluator/index.d.ts +5 -0
  97. package/dist/cli/src/evaluator/interface.d.ts +12 -0
  98. package/dist/cli/src/index.d.ts +12 -0
  99. package/dist/cli/src/interface.d.ts +8 -0
  100. package/dist/cli/src/parser/index.d.ts +3 -0
  101. package/dist/cli/src/parser/interface.d.ts +160 -0
  102. package/dist/cli/src/parser/parsers.d.ts +4 -0
  103. package/dist/cli/src/reservedNames.d.ts +7 -0
  104. package/dist/cli/src/testFramework/index.d.ts +14 -0
  105. package/dist/cli/src/tokenizer/index.d.ts +2 -0
  106. package/dist/cli/src/tokenizer/interface.d.ts +25 -0
  107. package/dist/cli/src/tokenizer/sugar/applyCollectionAccessor.d.ts +2 -0
  108. package/dist/cli/src/tokenizer/sugar/index.d.ts +3 -0
  109. package/dist/cli/src/tokenizer/tokenizers.d.ts +19 -0
  110. package/dist/cli/src/typeGuards/array.d.ts +9 -0
  111. package/dist/cli/src/typeGuards/astNode.d.ts +17 -0
  112. package/dist/cli/src/typeGuards/index.d.ts +15 -0
  113. package/dist/cli/src/typeGuards/lits.d.ts +21 -0
  114. package/dist/cli/src/typeGuards/litsFunction.d.ts +12 -0
  115. package/dist/cli/src/typeGuards/number.d.ts +66 -0
  116. package/dist/cli/src/typeGuards/string.d.ts +15 -0
  117. package/dist/cli/src/typeGuards/token.d.ts +13 -0
  118. package/dist/cli/src/utils/debug/debugTools.d.ts +3 -0
  119. package/dist/cli/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
  120. package/dist/cli/src/utils/getAssertionError.d.ts +3 -0
  121. package/dist/cli/src/utils/index.d.ts +10 -0
  122. package/dist/cli/src/utils/symbols.d.ts +2 -0
  123. package/dist/common/clojureDocs.d.ts +1 -0
  124. package/dist/common/createFormatter.d.ts +6 -0
  125. package/dist/common/utils.d.ts +3 -0
  126. package/dist/index.esm.js +7078 -0
  127. package/dist/index.esm.js.map +1 -0
  128. package/dist/index.js +7095 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/lits.iife.js +7100 -0
  131. package/dist/lits.iife.js.map +1 -0
  132. package/dist/reference/api.d.ts +59 -0
  133. package/dist/reference/categories/array.d.ts +3 -0
  134. package/dist/reference/categories/assert.d.ts +3 -0
  135. package/dist/reference/categories/bitwise.d.ts +3 -0
  136. package/dist/reference/categories/collection.d.ts +3 -0
  137. package/dist/reference/categories/functional.d.ts +3 -0
  138. package/dist/reference/categories/math.d.ts +3 -0
  139. package/dist/reference/categories/misc.d.ts +3 -0
  140. package/dist/reference/categories/object.d.ts +3 -0
  141. package/dist/reference/categories/predicate.d.ts +3 -0
  142. package/dist/reference/categories/regularExpression.d.ts +3 -0
  143. package/dist/reference/categories/sequence.d.ts +3 -0
  144. package/dist/reference/categories/specialExpressions.d.ts +3 -0
  145. package/dist/reference/categories/string.d.ts +3 -0
  146. package/dist/reference/datatype.d.ts +3 -0
  147. package/dist/reference/index.d.ts +50 -0
  148. package/dist/reference/shorthand.d.ts +3 -0
  149. package/dist/src/Lits/Cache.d.ts +16 -0
  150. package/dist/src/Lits/Lits.d.ts +50 -0
  151. package/dist/src/analyze/index.d.ts +2 -0
  152. package/dist/src/analyze/interface.d.ts +12 -0
  153. package/dist/src/analyze/utils.d.ts +3 -0
  154. package/dist/src/builtin/index.d.ts +5 -0
  155. package/dist/src/builtin/interface.d.ts +43 -0
  156. package/dist/src/builtin/normalExpressions/categories/array.d.ts +2 -0
  157. package/dist/src/builtin/normalExpressions/categories/assert.d.ts +2 -0
  158. package/dist/src/builtin/normalExpressions/categories/bitwise.d.ts +2 -0
  159. package/dist/src/builtin/normalExpressions/categories/collection.d.ts +2 -0
  160. package/dist/src/builtin/normalExpressions/categories/functional.d.ts +2 -0
  161. package/dist/src/builtin/normalExpressions/categories/math.d.ts +2 -0
  162. package/dist/src/builtin/normalExpressions/categories/misc.d.ts +2 -0
  163. package/dist/src/builtin/normalExpressions/categories/object.d.ts +2 -0
  164. package/dist/src/builtin/normalExpressions/categories/predicates.d.ts +2 -0
  165. package/dist/src/builtin/normalExpressions/categories/regexp.d.ts +2 -0
  166. package/dist/src/builtin/normalExpressions/categories/sequence.d.ts +4 -0
  167. package/dist/src/builtin/normalExpressions/categories/string.d.ts +2 -0
  168. package/dist/src/builtin/normalExpressions/index.d.ts +2 -0
  169. package/dist/src/builtin/specialExpressions/and.d.ts +3 -0
  170. package/dist/src/builtin/specialExpressions/comment.d.ts +2 -0
  171. package/dist/src/builtin/specialExpressions/cond.d.ts +8 -0
  172. package/dist/src/builtin/specialExpressions/declared.d.ts +2 -0
  173. package/dist/src/builtin/specialExpressions/def.d.ts +3 -0
  174. package/dist/src/builtin/specialExpressions/defs.d.ts +3 -0
  175. package/dist/src/builtin/specialExpressions/do.d.ts +3 -0
  176. package/dist/src/builtin/specialExpressions/functions.d.ts +9 -0
  177. package/dist/src/builtin/specialExpressions/if-let.d.ts +3 -0
  178. package/dist/src/builtin/specialExpressions/if-not.d.ts +3 -0
  179. package/dist/src/builtin/specialExpressions/if.d.ts +3 -0
  180. package/dist/src/builtin/specialExpressions/let.d.ts +3 -0
  181. package/dist/src/builtin/specialExpressions/loop.d.ts +3 -0
  182. package/dist/src/builtin/specialExpressions/loops.d.ts +12 -0
  183. package/dist/src/builtin/specialExpressions/or.d.ts +3 -0
  184. package/dist/src/builtin/specialExpressions/qq.d.ts +3 -0
  185. package/dist/src/builtin/specialExpressions/recur.d.ts +2 -0
  186. package/dist/src/builtin/specialExpressions/throw.d.ts +2 -0
  187. package/dist/src/builtin/specialExpressions/time.d.ts +3 -0
  188. package/dist/src/builtin/specialExpressions/try.d.ts +3 -0
  189. package/dist/src/builtin/specialExpressions/when-first.d.ts +3 -0
  190. package/dist/src/builtin/specialExpressions/when-let.d.ts +3 -0
  191. package/dist/src/builtin/specialExpressions/when-not.d.ts +3 -0
  192. package/dist/src/builtin/specialExpressions/when.d.ts +3 -0
  193. package/dist/src/builtin/utils.d.ts +18 -0
  194. package/dist/src/constants/constants.d.ts +42 -0
  195. package/dist/src/errors.d.ts +26 -0
  196. package/dist/src/evaluator/ContextStack.d.ts +21 -0
  197. package/dist/src/evaluator/functionExecutors.d.ts +11 -0
  198. package/dist/src/evaluator/index.d.ts +5 -0
  199. package/dist/src/evaluator/interface.d.ts +12 -0
  200. package/dist/src/index.d.ts +12 -0
  201. package/dist/src/interface.d.ts +8 -0
  202. package/dist/src/parser/index.d.ts +3 -0
  203. package/dist/src/parser/interface.d.ts +160 -0
  204. package/dist/src/parser/parsers.d.ts +4 -0
  205. package/dist/src/reservedNames.d.ts +7 -0
  206. package/dist/src/testFramework/index.d.ts +14 -0
  207. package/dist/src/tokenizer/index.d.ts +2 -0
  208. package/dist/src/tokenizer/interface.d.ts +25 -0
  209. package/dist/src/tokenizer/sugar/applyCollectionAccessor.d.ts +2 -0
  210. package/dist/src/tokenizer/sugar/index.d.ts +3 -0
  211. package/dist/src/tokenizer/tokenizers.d.ts +19 -0
  212. package/dist/src/typeGuards/array.d.ts +9 -0
  213. package/dist/src/typeGuards/astNode.d.ts +17 -0
  214. package/dist/src/typeGuards/index.d.ts +15 -0
  215. package/dist/src/typeGuards/lits.d.ts +21 -0
  216. package/dist/src/typeGuards/litsFunction.d.ts +12 -0
  217. package/dist/src/typeGuards/number.d.ts +66 -0
  218. package/dist/src/typeGuards/string.d.ts +15 -0
  219. package/dist/src/typeGuards/token.d.ts +13 -0
  220. package/dist/src/utils/debug/debugTools.d.ts +3 -0
  221. package/dist/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
  222. package/dist/src/utils/getAssertionError.d.ts +3 -0
  223. package/dist/src/utils/index.d.ts +10 -0
  224. package/dist/src/utils/symbols.d.ts +2 -0
  225. package/dist/testFramework.esm.js +7197 -0
  226. package/dist/testFramework.esm.js.map +1 -0
  227. package/dist/testFramework.js +7200 -0
  228. package/dist/testFramework.js.map +1 -0
  229. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testFramework.js","sources":["../node_modules/tslib/tslib.es6.js","../src/constants/constants.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/errors.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/typeGuards/index.ts","../src/analyze/index.ts","../src/typeGuards/token.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/analyze/utils.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/reservedNames.ts","../src/builtin/utils.ts","../src/typeGuards/string.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/time.ts","../src/builtin/specialExpressions/try.ts","../src/typeGuards/number.ts","../src/utils/index.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/array.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/comment.ts","../src/builtin/specialExpressions/declared.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/index.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/parser/parsers.ts","../src/parser/index.ts","../src/tokenizer/sugar/applyCollectionAccessor.ts","../src/tokenizer/sugar/index.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/index.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\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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;\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 }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\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\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","export enum AstNodeType {\n Number = 201,\n String = 202,\n NormalExpression = 203,\n SpecialExpression = 204,\n Name = 205,\n Modifier = 206,\n ReservedName = 207,\n Binding = 208,\n Argument = 209,\n Partial = 210,\n}\n\nexport const astNodeTypeName = new Map([\n [AstNodeType.Number, 'Number'],\n [AstNodeType.String, 'String'],\n [AstNodeType.NormalExpression, 'NormalExpression'],\n [AstNodeType.SpecialExpression, 'SpecialExpression'],\n [AstNodeType.Name, 'Name'],\n [AstNodeType.Modifier, 'Modifier'],\n [AstNodeType.ReservedName, 'ReservedName'],\n [AstNodeType.Binding, 'Binding'],\n [AstNodeType.Argument, 'Argument'],\n [AstNodeType.Partial, 'Partial'],\n])\n\nexport function isAstNodeType(type: unknown): type is AstNodeType {\n return typeof type === 'number' && astNodeTypeName.has(type)\n}\n\nexport enum TokenType {\n Bracket = 101,\n Number = 102,\n Name = 103,\n String = 104,\n ReservedName = 105,\n Modifier = 106,\n RegexpShorthand = 107,\n FnShorthand = 108,\n CollectionAccessor = 109,\n}\n\nexport const tokenTypeName = new Map([\n [TokenType.Bracket, 'Bracket'],\n [TokenType.Number, 'Number'],\n [TokenType.Name, 'Name'],\n [TokenType.String, 'String'],\n [TokenType.ReservedName, 'ReservedName'],\n [TokenType.Modifier, 'Modifier'],\n [TokenType.RegexpShorthand, 'RegexpShorthand'],\n [TokenType.FnShorthand, 'FnShorthand'],\n [TokenType.CollectionAccessor, 'CollectionAccessor'],\n])\n\nexport function isTokenType(type: unknown): type is TokenType {\n return typeof type === 'number' && tokenTypeName.has(type)\n}\n\nexport enum FunctionType {\n UserDefined = 301,\n Partial = 302,\n Comp = 303,\n Constantly = 304,\n Juxt = 305,\n Complement = 306,\n EveryPred = 307,\n SomePred = 308,\n Fnil = 309,\n Builtin = 310,\n NativeJsFunction = 399,\n}\n\nexport const functionTypeName = new Map([\n [FunctionType.UserDefined, 'UserDefined'],\n [FunctionType.Partial, 'Partial'],\n [FunctionType.Comp, 'Comp'],\n [FunctionType.Constantly, 'Constantly'],\n [FunctionType.Juxt, 'Juxt'],\n [FunctionType.Complement, 'Complement'],\n [FunctionType.EveryPred, 'EveryPred'],\n [FunctionType.SomePred, 'SomePred'],\n [FunctionType.Fnil, 'Fnil'],\n [FunctionType.Builtin, 'Builtin'],\n])\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'number' && functionTypeName.has(type)\n}\n","export const FUNCTION_SYMBOL = '__fn'\nexport const REGEXP_SYMBOL = '__re'\n","import { astNodeTypeName, isAstNodeType, isFunctionType, isTokenType, tokenTypeName } from '../../constants/constants'\nimport type { AstNode, LitsFunction } from '../../parser/interface'\nimport type { SourceCodeInfo, Token } from '../../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (!isUnknownRecord(func))\n return false\n\n return !!func[FUNCTION_SYMBOL] && isFunctionType(func.t)\n}\n\nfunction isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isToken(value: unknown): value is Token {\n return isUnknownRecord(value) && isTokenType(value.t) && typeof value.v === 'string'\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return isUnknownRecord(value) && isAstNodeType(value.t)\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 (isToken(value))\n return `${tokenTypeName.get(value.t)}-token \"${value.v}\"`\n\n if (isAstNode(value))\n return `${astNodeTypeName.get(value.t)}-node`\n\n if (value === null)\n return 'nil'\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\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 type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/interface'\nimport { getCodeMarker, valueToString } from './utils/debug/debugTools'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n const filePathLine = sourceCodeInfo?.filePath ? `\\n${sourceCodeInfo.filePath}` : ''\n const codeLine = sourceCodeInfo?.code ? `\\n${sourceCodeInfo.code}` : ''\n const codeMarker = sourceCodeInfo && codeLine ? `\\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) {\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 ${valueToString(fn)}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\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","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo?: SourceCodeInfo): 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 { UnknownRecord } from '../interface'\nimport type { NormalExpressionNode, SpecialExpressionNode } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertEventNumberOfParams(node: NormalExpressionNode): void {\n const length = node.p.length\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments, expected an even number, got ${valueToString(length)}.`,\n node.tkn?.sourceCodeInfo,\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\n/* v8 ignore next 3 */\nexport function assertUnreachable(_: never): never {\n throw new Error('This should not be reached')\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 assertNumberOfParams(\n count: number | { min?: number, max?: number },\n node: NormalExpressionNode | SpecialExpressionNode,\n): void {\n const length = node.p.length\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${node.n}\", expected ${count}, got ${valueToString(length)}.`,\n node.tkn?.sourceCodeInfo,\n )\n }\n }\n else {\n const { min, max } = count\n if (min === undefined && max === undefined)\n throw new LitsError('Min or max must be specified.', sourceCodeInfo)\n\n if (typeof min === 'number' && length < min) {\n throw new LitsError(\n `Wrong number of arguments to \"${node.n}\", expected at least ${min}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n\n if (typeof max === 'number' && length > max) {\n throw new LitsError(\n `Wrong number of arguments to \"${node.n}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n}\n","import type { Builtin } from '../builtin/interface'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport { AstNodeType } from '../constants/constants'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport type { AnalyzeAst, AnalyzeResult, UndefinedSymbolEntry } from './interface'\n\nexport const analyzeAst: AnalyzeAst = (astNode, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(astNode) ? astNode : [astNode]\n\n const analyzeResult: AnalyzeResult = {\n undefinedSymbols: new Set<UndefinedSymbolEntry>(),\n }\n\n for (const subNode of astNodes) {\n const result = analyzeAstNode(subNode, contextStack, builtin)\n result.undefinedSymbols.forEach(symbol => analyzeResult.undefinedSymbols.add(symbol))\n }\n\n return analyzeResult\n}\n\nfunction analyzeAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): AnalyzeResult {\n const emptySet = new Set<UndefinedSymbolEntry>()\n switch (astNode.t) {\n case AstNodeType.Name: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return { undefinedSymbols: new Set([{ symbol: astNode.v, token: astNode.tkn }]) }\n\n return { undefinedSymbols: emptySet }\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedName:\n return { undefinedSymbols: emptySet }\n case AstNodeType.NormalExpression: {\n const undefinedSymbols = new Set<UndefinedSymbolEntry>()\n const { e: expression, n: name, tkn: token } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Name, v: name, tkn: token })\n if (lookUpResult === null)\n undefinedSymbols.add({ symbol: name, token: astNode.tkn })\n }\n if (expression) {\n switch (expression.t) {\n case AstNodeType.String:\n case AstNodeType.Number:\n break\n case AstNodeType.NormalExpression:\n case AstNodeType.SpecialExpression: {\n const subResult = analyzeAstNode(expression, contextStack, builtin)\n subResult.undefinedSymbols.forEach(symbol => undefinedSymbols.add(symbol))\n break\n }\n }\n }\n\n for (const subNode of astNode.p) {\n const subNodeResult = analyzeAst(subNode, contextStack, builtin)\n subNodeResult.undefinedSymbols.forEach(symbol => undefinedSymbols.add(symbol))\n }\n return { undefinedSymbols }\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], astNode.tkn?.sourceCodeInfo)\n const result = specialExpression.analyze(astNode, contextStack, {\n analyzeAst,\n builtin,\n })\n return result\n }\n }\n}\n","import { type TokenType, isTokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { SourceCodeInfo, Token } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype TokenAssertionOptions =\n | {\n type: TokenType\n value?: string\n }\n | {\n type?: never\n value?: never\n }\n\nexport function isToken(value: unknown, options: TokenAssertionOptions = {}): value is Token {\n if (typeof value !== 'object' || value === null)\n return false\n\n const tkn = value as Token\n if (typeof tkn.v !== 'string')\n return false\n\n if (!isTokenType(tkn.t))\n return false\n\n if (options.type && tkn.t !== options.type)\n return false\n\n if (options.value && tkn.v !== options.value)\n return false\n\n return true\n}\n\nexport function assertToken(\n value: unknown,\n filePath: string | undefined,\n options: TokenAssertionOptions = {},\n): asserts value is Token {\n if (!isToken(value, options)) {\n const sourceCodeInfo: SourceCodeInfo | undefined = isToken(value)\n ? value.sourceCodeInfo\n : typeof filePath === 'string'\n ? { filePath }\n : undefined\n\n throw new LitsError(\n `Expected ${options.type ? `${options.type}-` : ''}token${\n typeof options.value === 'string' ? ` value='${options.value}'` : ''\n }, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asToken(value: unknown, filePath: string | undefined, options: TokenAssertionOptions = {}): Token {\n assertToken(value, filePath, options)\n return value\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = true\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, ParseToken, SpecialExpressionNode } from '../../parser/interface'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface Condition {\n t: AstNode // test\n f: AstNode // form\n}\n\ntype CondNode = SpecialExpressionNode & {\n c: Condition[]\n}\n\nfunction parseConditions(tokenStream: TokenStream, position: number, parseToken: ParseToken): [number, Condition[]] {\n const conditions: Condition[] = []\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let test: AstNode\n ;[position, test] = parseToken(tokenStream, position)\n\n let form: AstNode\n ;[position, form] = parseToken(tokenStream, position)\n\n conditions.push({ t: test, f: form })\n\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, conditions]\n}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let conditions: Condition[]\n ;[position, conditions] = parseConditions(tokenStream, position, parseToken)\n\n return [\n position + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n c: conditions,\n p: [],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const condition of (node as CondNode).c) {\n const value = evaluateAstNode(condition.t, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(condition.f, contextStack)\n }\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const astNodes = (node as CondNode).c.flatMap(condition => [condition.t, condition.f])\n return analyzeAst(astNodes, contextStack, builtin)\n },\n}\n","import type { AnalyzeResult } from './interface'\n\nexport function joinAnalyzeResults(...results: AnalyzeResult[]): AnalyzeResult {\n const result: AnalyzeResult = {\n undefinedSymbols: new Set(),\n }\n for (const input of results)\n input.undefinedSymbols.forEach(symbol => result.undefinedSymbols.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: AnalyzeResult, source: AnalyzeResult): void {\n source.undefinedSymbols.forEach(symbol => target.undefinedSymbols.add(symbol))\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\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 { AstNodeType, isAstNodeType } from '../constants/constants'\nimport type {\n AstNode,\n ExpressionNode,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isAstNode(value: unknown): value is AstNode {\n if (value === null || typeof value !== 'object')\n return false\n\n if (!isAstNodeType((value as AstNode).t))\n return false\n\n return true\n}\nexport function asAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): AstNode {\n assertAstNode(value, sourceCodeInfo)\n return value\n}\nexport function assertAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is AstNode {\n if (!isAstNode(value))\n throw getAssertionError('AstNode', value, sourceCodeInfo)\n}\n\nexport function isNameNode(value: unknown): value is NameNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.Name\n}\nexport function asNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NameNode {\n assertNameNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NameNode {\n if (!isNameNode(value))\n throw getAssertionError('NameNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNode(value: unknown): value is NormalExpressionNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression\n}\nexport function asNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNode(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNode {\n if (!isNormalExpressionNode(value))\n throw getAssertionError('NormalExpressionNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(value: unknown): value is NormalExpressionNodeWithName {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression && typeof value.n === 'string'\n}\nexport function asNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(value))\n throw getAssertionError('NormalExpressionNodeWithName', value, sourceCodeInfo)\n}\n\nexport function isExpressionNode(value: unknown): value is ExpressionNode {\n if (!isAstNode(value))\n return false\n\n return (\n value.t === AstNodeType.NormalExpression\n || value.t === AstNodeType.SpecialExpression\n || value.t === AstNodeType.Number\n || value.t === AstNodeType.String\n )\n}\nexport function asExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is ExpressionNode {\n if (!isExpressionNode(value))\n throw getAssertionError('ExpressionNode', value, sourceCodeInfo)\n}\n","import type { Any } from './interface'\n\nexport type ReservedName = 'true' | 'false' | 'nil' | 'null' | 'undefined' | '===' | '!==' | '&&' | '||'\nexport const reservedNamesRecord: Record<ReservedName, { value: Any, forbidden?: true }> = {\n 'true': { value: true },\n 'false': { value: false },\n 'nil': { value: null },\n 'null': { value: null, forbidden: true },\n 'undefined': { value: null, forbidden: true },\n '===': { value: null, forbidden: true },\n '!==': { value: null, forbidden: true },\n '&&': { value: null, forbidden: true },\n '||': { value: null, forbidden: true },\n}\n\nexport const reservedNames: ReservedName[] = Object.keys(reservedNamesRecord) as ReservedName[]\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode, BindingNode } from '../parser/interface'\nimport { reservedNamesRecord } from '../reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport type { Builtin } from './interface'\n\nexport type Arity = number | { min: number }\n\nexport interface FunctionOverload {\n as: FunctionArguments\n a: Arity\n b: AstNode[]\n}\n\nexport interface FunctionArguments {\n m: string[]\n r?: string\n b: BindingNode[]\n}\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 if (builtin.specialExpressions[name])\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 // eslint-disable-next-line ts/no-unsafe-member-access\n if ((reservedNamesRecord as any)[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 { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\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 new LitsError(\n getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n ),\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 { AnalyzeAst, AnalyzeResult } from '../../analyze/interface'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport { AstNodeType, FunctionType, TokenType } from '../../constants/constants'\nimport type {\n AstNode,\n BindingNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n NameNode,\n SpecialExpressionNode,\n} from '../../parser/interface'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { asToken } from '../../typeGuards/token'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\nimport { asString } from '../../typeGuards/string'\n\ntype DefnNode = SpecialExpressionNode & {\n f: NameNode\n o: FunctionOverload[]\n}\n\ntype DefnsNode = SpecialExpressionNode & {\n f: AstNode\n o: FunctionOverload[]\n}\n\nexport type FnNode = SpecialExpressionNode & {\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, parsers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let functionName\n ;[position, functionName] = parseToken(tokenStream, position)\n assertNameNode(functionName, functionName.tkn?.sourceCodeInfo)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n\n return [\n position,\n {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.tkn?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.tkn?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n contextStack.globalContext[(node as DefnNode).f.v] = { value: true }\n const newContext: Context = { [(node as DefnNode).f.v]: { value: true } }\n return addOverloadsUndefinedSymbols((node as DefnNode).o, contextStack, analyzeAst, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, parsers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let functionName: AstNode\n ;[position, functionName] = parseToken(tokenStream, position)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n\n return [\n position,\n {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n f: functionName,\n p: [],\n o: functionOverloades,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.tkn?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.tkn?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) =>\n addOverloadsUndefinedSymbols((node as DefnsNode).o, contextStack, analyzeAst, builtin),\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction> = {\n parse: (tokenStream, position, parsers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n\n return [\n position,\n {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.tkn?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) =>\n addOverloadsUndefinedSymbols((node as FnNode).o, contextStack, analyzeAst, builtin),\n}\n\nfunction getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f as NameNode).v\n\n const name = evaluateAstNode((node as DefnsNode).f, contextStack)\n return asString(name, sourceCodeInfo)\n}\n\nfunction evaluateFunctionOverloades(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): EvaluatedFunctionOverload[] {\n const evaluatedFunctionOverloades: EvaluatedFunctionOverload[] = []\n for (const functionOverload of (node as DefnNode | DefnsNode | FnNode).o) {\n const functionContext: Context = {}\n for (const binding of functionOverload.as.b) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n functionContext[binding.n] = { value: bindingValue }\n }\n\n const evaluatedFunctionOverload: EvaluatedFunctionOverload = {\n as: {\n mandatoryArguments: functionOverload.as.m,\n restArgument: functionOverload.as.r,\n },\n a: functionOverload.a,\n b: functionOverload.b,\n f: functionContext,\n }\n\n evaluatedFunctionOverloades.push(evaluatedFunctionOverload)\n }\n return evaluatedFunctionOverloades\n}\n\nfunction addOverloadsUndefinedSymbols(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n analyzeAst: AnalyzeAst,\n builtin: Builtin,\n functionNameContext?: Context,\n): AnalyzeResult {\n const result: AnalyzeResult = { undefinedSymbols: new Set() }\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n for (const overload of overloads) {\n const newContext: Context = {}\n overload.as.b.forEach((binding) => {\n const bindingResult = analyzeAst(binding.v, contextStack, builtin)\n addAnalyzeResults(result, bindingResult)\n newContext[binding.n] = { value: true }\n })\n overload.as.m.forEach((arg) => {\n newContext[arg] = { value: true }\n })\n if (typeof overload.as.r === 'string')\n newContext[overload.as.r] = { value: true }\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = analyzeAst(overload.b, newContextStack, builtin)\n addAnalyzeResults(result, overloadResult)\n }\n return result\n}\n\nfunction arityOk(overloadedFunctions: FunctionOverload[], arity: Arity) {\n if (typeof arity === 'number') {\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a !== arity\n\n return fun.a.min > arity\n })\n }\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a < arity.min\n\n return false\n })\n}\n\nfunction parseFunctionBody(\n tokenStream: TokenStream,\n position: number,\n { parseToken }: ParserHelpers,\n): [number, AstNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const body: AstNode[] = []\n while (!(tkn.t === TokenType.Bracket && tkn.v === ')')) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n body.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n if (body.length === 0)\n throw new LitsError('Missing body in function', tkn.sourceCodeInfo)\n\n return [position + 1, body]\n}\n\nfunction parseFunctionOverloades(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, FunctionOverload[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v === '(') {\n const functionOverloades: FunctionOverload[] = []\n while (!(tkn.t === TokenType.Bracket && tkn.v === ')')) {\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let functionArguments: FunctionArguments\n ;[position, functionArguments] = parseFunctionArguments(tokenStream, position, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n\n if (!arityOk(functionOverloades, arity))\n throw new LitsError('All overloaded functions must have different arity', tkn.sourceCodeInfo)\n\n let functionBody: AstNode[]\n ;[position, functionBody] = parseFunctionBody(tokenStream, position, parsers)\n functionOverloades.push({\n as: functionArguments,\n b: functionBody,\n a: arity,\n })\n\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v !== ')' && tkn.v !== '(')\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, tkn.sourceCodeInfo)\n }\n\n return [position + 1, functionOverloades]\n }\n else if (tkn.v === '[') {\n let functionArguments: FunctionArguments\n ;[position, functionArguments] = parseFunctionArguments(tokenStream, position, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n let functionBody: AstNode[]\n ;[position, functionBody] = parseFunctionBody(tokenStream, position, parsers)\n return [\n position,\n [\n {\n as: functionArguments,\n b: functionBody,\n a: arity,\n },\n ],\n ]\n }\n else {\n throw new LitsError(`Expected [ or ( token, got ${valueToString(tkn)}`, tkn.sourceCodeInfo)\n }\n}\n\nfunction parseFunctionArguments(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, FunctionArguments] {\n const { parseArgument, parseBindings } = parsers\n\n let bindings: BindingNode[] = []\n let restArgument: string | undefined\n const mandatoryArguments: string[] = []\n let state: 'mandatory' | 'rest' | 'let' = 'mandatory'\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n if (state === 'let') {\n ;[position, bindings] = parseBindings(tokenStream, position)\n break\n }\n else {\n const [newPosition, node] = parseArgument(tokenStream, position)\n position = newPosition\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n if (node.t === AstNodeType.Modifier) {\n switch (node.v) {\n case '&':\n if (state === 'rest')\n throw new LitsError('& can only appear once', tkn.sourceCodeInfo)\n\n state = 'rest'\n break\n case '&let':\n if (state === 'rest' && !restArgument)\n throw new LitsError('No rest argument was specified', tkn.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, tkn.sourceCodeInfo)\n }\n }\n else {\n switch (state) {\n case 'mandatory':\n mandatoryArguments.push(node.n)\n break\n case 'rest':\n if (restArgument !== undefined)\n throw new LitsError('Can only specify one rest argument', tkn.sourceCodeInfo)\n\n restArgument = node.n\n break\n }\n }\n }\n }\n\n if (state === 'rest' && restArgument === undefined)\n throw new LitsError('Missing rest argument name', tkn.sourceCodeInfo)\n\n position += 1\n\n const args: FunctionArguments = {\n m: mandatoryArguments,\n r: restArgument,\n b: bindings,\n }\n\n return [position, args]\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode, asNameNode, assertNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport const defSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n assertNameNode(params[0], firstToken.sourceCodeInfo)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const name = asNameNode(node.p[0], sourceCodeInfo).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n const value = evaluateAstNode(asAstNode(node.p[1], sourceCodeInfo), contextStack)\n\n contextStack.globalContext[name] = { value }\n\n return value\n },\n validate: node => assertNumberOfParams(2, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const subNode = asAstNode(node.p[1], sourceCodeInfo)\n const result = analyzeAst(subNode, contextStack, builtin)\n const name = asNameNode(node.p[0], sourceCodeInfo).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\nimport { assertString } from '../../typeGuards/string'\nimport { assertNumberOfParams } from '../../typeGuards'\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.p[0], sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, node.tkn?.sourceCodeInfo)\n\n const value = evaluateAstNode(asAstNode(node.p[1], sourceCodeInfo), contextStack)\n\n contextStack.globalContext[name] = { value }\n\n return value\n },\n validate: node => assertNumberOfParams(2, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const subNode = asAstNode(node.p[1], node.tkn?.sourceCodeInfo)\n return analyzeAst(subNode, contextStack, builtin)\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: [],\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n node.p.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { BuiltinFunction, LitsFunction, NativeJsFunction, UserDefinedFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\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.t === 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.t === 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 BuiltinFunction {\n return isUnknownRecord(value) && value.t === FunctionType.Builtin\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\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 { AnalyzeAst, AnalyzeResult } from '../../analyze/interface'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken, assertToken, isToken } from '../../typeGuards/token'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport { asNonUndefined } from '../../typeGuards'\n\ntype LoopNode = SpecialExpressionNode & {\n l: LoopBindingNode[]\n}\n\nexport interface LoopBindingNode {\n b: BindingNode // Binding\n m: Array<'&let' | '&when' | '&while'> // Modifiers\n l?: BindingNode[] // Let-Bindings\n wn?: AstNode // When Node\n we?: AstNode // While Node\n}\n\nfunction parseLoopBinding(\n tokenStream: TokenStream,\n position: number,\n { parseBinding, parseBindings, parseToken }: ParserHelpers,\n): [number, LoopBindingNode] {\n let bindingNode: BindingNode\n ;[position, bindingNode] = parseBinding(tokenStream, position)\n\n const loopBinding: LoopBindingNode = {\n b: bindingNode,\n m: [],\n }\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (tkn.t === TokenType.Modifier) {\n switch (tkn.v) {\n case '&let':\n if (loopBinding.l)\n throw new LitsError('Only one &let modifier allowed', tkn.sourceCodeInfo)\n\n ;[position, loopBinding.l] = parseBindings(tokenStream, position + 1)\n loopBinding.m.push('&let')\n break\n case '&when':\n if (loopBinding.wn)\n throw new LitsError('Only one &when modifier allowed', tkn.sourceCodeInfo)\n\n ;[position, loopBinding.wn] = parseToken(tokenStream, position + 1)\n loopBinding.m.push('&when')\n break\n case '&while':\n if (loopBinding.we)\n throw new LitsError('Only one &while modifier allowed', tkn.sourceCodeInfo)\n\n ;[position, loopBinding.we] = parseToken(tokenStream, position + 1)\n loopBinding.m.push('&while')\n break\n default:\n throw new LitsError(`Illegal modifier: ${tkn.v}`, tkn.sourceCodeInfo)\n }\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, loopBinding]\n}\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n for (const binding of bindings) {\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n }\n}\n\nfunction parseLoopBindings(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, LoopBindingNode[]] {\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '[' })\n position += 1\n\n const loopBindings: LoopBindingNode[] = []\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ']' })) {\n let loopBinding: LoopBindingNode\n ;[position, loopBinding] = parseLoopBinding(tokenStream, position, parsers)\n loopBindings.push(loopBinding)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, loopBindings]\n}\nfunction evaluateLoop(\n returnResult: boolean,\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n) {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\n const expression = asAstNode(params[0], sourceCodeInfo)\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 {\n b: binding,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n m: modifiers,\n } = asNonUndefined(loopBindings[bindingIndex], sourceCodeInfo)\n const coll = asColl(evaluateAstNode(binding.v, 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 if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = {\n value: asAny(seq[index], sourceCodeInfo),\n }\n for (const modifier of modifiers) {\n switch (modifier) {\n case '&let':\n addToContext(\n asNonUndefined(letBindings, sourceCodeInfo),\n context,\n newContextStack,\n evaluateAstNode,\n sourceCodeInfo,\n )\n break\n case '&when':\n if (!evaluateAstNode(asAstNode(whenNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n break\n case '&while':\n if (!evaluateAstNode(asAstNode(whileNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n break\n }\n }\n }\n if (!skip) {\n const value = evaluateAstNode(expression, newContextStack)\n if (returnResult)\n result.push(value)\n\n bindingIndices[bindingIndices.length - 1] += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n analyzeAst: AnalyzeAst,\n builtin: Builtin,\n): AnalyzeResult {\n const result: AnalyzeResult = {\n undefinedSymbols: new Set(),\n }\n const newContext: Context = {}\n const { l: loopBindings } = node as LoopNode\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n analyzeAst(binding.v, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n analyzeAst(letBinding.v, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n analyzeAst(whenNode, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n }\n if (whileNode) {\n analyzeAst(whileNode, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n }\n })\n analyzeAst(node.p, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream: TokenStream, position: number, parsers: ParserHelpers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let expression: AstNode\n ;[position, expression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LoopNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: [expression],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyze(node, contextStack, analyzeAst, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream: TokenStream, position: number, parsers: ParserHelpers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let expression: AstNode\n ;[position, expression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LoopNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: [expression],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyze(node, contextStack, analyzeAst, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\n\ntype IfLetNode = SpecialExpressionNode & {\n b: BindingNode\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], firstToken.sourceCodeInfo),\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode((node as IfLetNode).b.v, contextStack)\n if (bindingValue) {\n locals[(node as IfLetNode).b.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n const thenForm = asAstNode(node.p[0], sourceCodeInfo)\n return evaluateAstNode(thenForm, newContextStack)\n }\n if (node.p.length === 2) {\n const elseForm = asAstNode(node.p[1], sourceCodeInfo)\n return evaluateAstNode(elseForm, contextStack)\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const newContext: Context = { [(node as IfLetNode).b.n]: { value: true } }\n const bindingResult = analyzeAst((node as IfLetNode).b.v, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'if-not',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (!evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'if',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\ntype LetNode = SpecialExpressionNode & {\n bs: BindingNode[]\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: params,\n bs: bindings,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const newContextStack = contextStack.create(locals)\n for (const binding of (node as LetNode).bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, newContextStack)\n locals[binding.n] = { value: bindingValue }\n }\n\n let result: Any = null\n for (const astNode of node.p)\n result = evaluateAstNode(astNode, newContextStack)\n\n return result\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const newContext = (node as LetNode).bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n const bindingContext: Context = {}\n const bindingResults = (node as LetNode).bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = analyzeAst(valueNode, contextStack.create(bindingContext), builtin)\n bindingContext[bindingNode.n] = { value: true }\n return bindingsResult\n })\n\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\n\ntype LoopNode = SpecialExpressionNode & { bs: BindingNode[] }\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens, parseBindings }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const bindingContext: Context = (node as LoopNode).bs.reduce((result: Context, binding) => {\n result[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n for (;;) {\n let result: Any = null\n try {\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== (node as LoopNode).bs.length) {\n throw new LitsError(\n `recur expected ${(node as LoopNode).bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;(node as LoopNode).bs.forEach((binding, index) => {\n asNonUndefined(bindingContext[binding.n], sourceCodeInfo).value = asAny(params[index], sourceCodeInfo)\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const newContext = (node as LoopNode).bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n\n const bindingValueNodes = (node as LoopNode).bs.map(binding => binding.v)\n const bindingsResult = analyzeAst(bindingValueNodes, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = false\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { RecurSignal } from '../../errors'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let params\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n throw new RecurSignal(params)\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { UserDefinedError } from '../../errors'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asString } from '../../typeGuards/string'\n\ntype ThrowNode = SpecialExpressionNode & {\n m: AstNode\n}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, messageNode] = parseToken(tokenStream, position)\n position = newPosition\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n const node: ThrowNode = {\n t: AstNodeType.SpecialExpression,\n n: 'throw',\n p: [],\n m: messageNode,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode((node as ThrowNode).m, contextStack), node.tkn?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node.tkn?.sourceCodeInfo)\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst((node as ThrowNode).m, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, astNode] = parseToken(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'time!',\n p: [astNode],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [param] = node.p\n assertAstNode(param, node.tkn?.sourceCodeInfo)\n\n const startTime = Date.now()\n const result = evaluateAstNode(param, contextStack)\n const totalTime = Date.now() - startTime\n // eslint-disable-next-line no-console\n console.log(`Elapsed time: ${totalTime} ms`)\n\n return result\n },\n validate: node => assertNumberOfParams(1, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, NameNode, SpecialExpressionNode } from '../../parser/interface'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asAny } from '../../typeGuards/lits'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\n\ntype TryNode = SpecialExpressionNode & {\n te: AstNode\n e: NameNode\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let tryExpression: AstNode\n ;[position, tryExpression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' })\n position += 1\n\n let catchNode: AstNode\n ;[position, catchNode] = parseToken(tokenStream, position)\n assertNameNode(catchNode, catchNode.tkn?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, catchNode.tkn?.sourceCodeInfo),\n )\n }\n\n let error: AstNode\n ;[position, error] = parseToken(tokenStream, position)\n assertNameNode(error, error.tkn?.sourceCodeInfo)\n\n let catchExpression: AstNode\n ;[position, catchExpression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [],\n te: tryExpression,\n ce: catchExpression,\n e: error,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { te: tryExpression, ce: catchExpression, e: errorNode } = node as TryNode\n try {\n return evaluateAstNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = {\n [errorNode.v]: { value: asAny(error, node.tkn?.sourceCodeInfo) },\n }\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const { te: tryExpression, ce: catchExpression, e: errorNode } = node as TryNode\n const tryResult = analyzeAst(tryExpression, contextStack, builtin)\n const newContext: Context = {\n [errorNode.v]: { value: true },\n }\n const catchResult = analyzeAst(catchExpression, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\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 type { Any, Arr, Coll, Obj } from '../interface'\nimport type { NativeJsFunction, RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { FunctionType } from '../constants/constants'\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\ntype Type = 'null' | 'boolean' | 'number' | 'string' | 'object' | 'array' | 'regexp' | 'unknown'\n\nconst sortOrderByType: Record<Type, number> = {\n boolean: 0,\n number: 1,\n string: 2,\n array: 3,\n object: 4,\n regexp: 5,\n unknown: 6,\n null: 7,\n}\n\nfunction getType(value: unknown): Type {\n if (value === null)\n return 'null'\n else if (typeof value === 'boolean')\n return 'boolean'\n else if (typeof value === 'number')\n return 'number'\n else if (typeof value === 'string')\n return 'string'\n else if (Array.isArray(value))\n return 'array'\n else if (isObj(value))\n return 'object'\n else if (isRegularExpression(value))\n return 'regexp'\n else\n return 'unknown'\n}\n\nexport function compare(a: unknown, b: unknown): number {\n const aType = getType(a)\n const bType = getType(b)\n if (aType !== bType)\n return Math.sign(sortOrderByType[aType] - sortOrderByType[bType])\n\n switch (aType) {\n case 'null':\n return 0\n case 'boolean':\n if (a === b)\n return 0\n\n return a === false ? -1 : 1\n case 'number':\n return Math.sign((a as number) - (b as number))\n case 'string': {\n const aString = a as string\n const bString = b as string\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'array': {\n const aArray = a as Arr\n const bArray = b as Arr\n if (aArray.length < bArray.length)\n return -1\n else if (aArray.length > bArray.length)\n return 1\n\n for (let i = 0; i < aArray.length; i += 1) {\n const innerComp = compare(aArray[i], bArray[i])\n if (innerComp !== 0)\n return innerComp\n }\n return 0\n }\n case 'object': {\n const aObj = a as Obj\n const bObj = b as Obj\n return Math.sign(Object.keys(aObj).length - Object.keys(bObj).length)\n }\n case 'regexp': {\n const aString = (a as RegularExpression).s\n const bString = (b as RegularExpression).s\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'unknown':\n return 0\n }\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 __fn: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\n\ntype WhenFirstNode = SpecialExpressionNode & {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], firstToken.sourceCodeInfo),\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node as WhenFirstNode\n const evaluatedBindingForm = evaluateAstNode(binding.v, contextStack)\n if (!isSeq(evaluatedBindingForm)) {\n throw new LitsError(\n `Expected undefined or a sequence, got ${valueToString(evaluatedBindingForm)}`,\n node.tkn?.sourceCodeInfo,\n )\n }\n\n if (evaluatedBindingForm.length === 0)\n return null\n\n const bindingValue = toAny(evaluatedBindingForm[0])\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 0 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const { b: binding } = node as WhenFirstNode\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = analyzeAst(binding.v, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\n\ntype WhenLetNode = SpecialExpressionNode & {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], firstToken.sourceCodeInfo),\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node as WhenLetNode\n const locals: Context = {}\n const bindingValue = evaluateAstNode(binding.v, contextStack)\n if (!bindingValue)\n return null\n\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 0 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const { b: binding } = node as WhenLetNode\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = analyzeAst(binding.v, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-not',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.tkn?.sourceCodeInfo)\n\n if (evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.tkn?.sourceCodeInfo)\n\n if (!evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n 'bit-shift-left': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'bit-shift-right': {\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 validate: node => assertNumberOfParams(2, node),\n },\n 'bit-not': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'bit-and': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-or': {\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-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 validate: node => assertNumberOfParams({ min: 2 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\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 { LitsFunction } from '../../..'\nimport type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { cloneColl, collHasKey, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asColl, assertAny, assertColl, assertObj, assertSeq, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // nil 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isSeq(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n assertNumber(key, sourceCodeInfo, { integer: true })\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has?': {\n evaluate: ([coll, value], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.includes(value)\n\n if (typeof coll === 'string')\n return typeof value === 'string' ? coll.split('').includes(value) : false\n\n return Object.values(coll).includes(value)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has-some?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null || seq === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (coll.includes(value))\n return true\n }\n return false\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (isString(value, { char: true }) ? coll.split('').includes(value) : false)\n return true\n }\n return false\n }\n for (const value of seq) {\n if (Object.values(coll).includes(value))\n return true\n }\n return false\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has-every?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (seq === null)\n return true\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (!coll.includes(value))\n return false\n }\n return true\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (!isString(value, { char: true }) || !coll.split('').includes(value))\n return false\n }\n return true\n }\n for (const value of seq) {\n if (!Object.values(coll).includes(value))\n return false\n }\n return true\n },\n validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(3, node),\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 validate: node => assertNumberOfParams(3, node),\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 validate: node => assertNumberOfParams({ min: 3 }, node),\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 validate: node => assertNumberOfParams({ min: 3 }, node),\n },\n 'concat': {\n evaluate: (params, sourceCodeInfo): Any => {\n assertColl(params[0], sourceCodeInfo)\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 (isString(params[0])) {\n return params.reduce((result: string, s) => {\n assertString(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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n 'every?': {\n evaluate: ([fn, coll], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'any?': {\n evaluate: ([fn, coll], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'not-any?': {\n evaluate: ([fn, coll], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'not-every?': {\n evaluate: ([fn, coll], 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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { collHasKey, compare, toAny, toNonNegativeInteger } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport type { BuiltinNormalExpressions, NormalExpressionEvaluator } from '../../interface'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const evaluateMap: NormalExpressionEvaluator<Arr | string> = (\n params: Arr,\n sourceCodeInfo,\n contextStack,\n { executeFunction },\n) => {\n const [fn, firstList] = params\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(firstList, sourceCodeInfo)\n const isStringSeq = typeof firstList === 'string'\n\n const length = firstList.length\n if (params.length === 2) {\n if (Array.isArray(firstList)) {\n return firstList.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return firstList\n .split('')\n .map((elem) => {\n const newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo, { char: true })\n return newVal\n })\n .join('')\n }\n }\n else {\n params.slice(2).forEach((collParam) => {\n if (isStringSeq)\n assertString(collParam, sourceCodeInfo)\n else\n assertArray(collParam, sourceCodeInfo)\n\n if (length !== collParam.length)\n throw new LitsError('All arguments to \"map\" must have the same length.', sourceCodeInfo)\n })\n\n if (isStringSeq) {\n let result = ''\n for (let i = 0; i < length; i += 1) {\n const fnParams = params.slice(1).map(l => (l as string)[i]) as string[]\n const newValue = executeFunction(fn, fnParams, contextStack, sourceCodeInfo)\n assertString(newValue, sourceCodeInfo, { char: true })\n result += newValue\n }\n return result\n }\n else {\n const result: Arr = []\n for (let i = 0; i < length; i += 1) {\n const fnParams = params.slice(1).map(l => toAny((l as Arr)[i]))\n result.push(executeFunction(fn, fnParams, contextStack, sourceCodeInfo))\n }\n return result\n }\n }\n}\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'cons': {\n evaluate: ([elem, seq], sourceCodeInfo): Any => {\n assertAny(elem, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [elem, ...seq]\n\n assertString(elem, sourceCodeInfo, { char: true })\n return `${elem}${seq}`\n },\n validate: node => assertNumberOfParams(2, node),\n },\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'filter': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, 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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n 'map': {\n evaluate: evaluateMap,\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substr(0, seq.length - 1)\n\n const copy = [...seq]\n copy.pop()\n return copy\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'position': {\n evaluate: ([fn, seq]: 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 validate: node => assertNumberOfParams(2, node),\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.indexOf(value)\n return index !== -1 ? index : null\n }\n },\n validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, arr] = params\n assertSeq(arr, sourceCodeInfo)\n if (arr.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (arr.length === 1)\n return [toAny(arr[0])]\n\n if (typeof arr === 'string') {\n const chars = arr.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(arr[0])]\n arr.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(arr[0]))\n return resultArray\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, arr] = params\n assertSeq(arr, sourceCodeInfo)\n if (arr.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (arr.length === 1)\n return toAny(arr[0])\n\n if (typeof arr === 'string') {\n const chars = arr.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 arr.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(arr[0]))\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, seq] = params\n assertSeq(seq, sourceCodeInfo)\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, seq] = params\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'rest': {\n evaluate: ([first], sourceCodeInfo): Arr | string => {\n assertSeq(first, sourceCodeInfo)\n if (Array.isArray(first)) {\n if (first.length <= 1)\n return []\n\n return first.slice(1)\n }\n return first.substr(1)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'nthrest': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substr(integerCount)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'next': {\n evaluate: ([first], sourceCodeInfo): Arr | string | null => {\n assertSeq(first, sourceCodeInfo)\n if (Array.isArray(first)) {\n if (first.length <= 1)\n return null\n\n return first.slice(1)\n }\n if (first.length <= 1)\n return null\n\n return first.substr(1)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'nthnext': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (seq.length <= count)\n return null\n\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substr(integerCount)\n },\n validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n 'second': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[1])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substr(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n\n if (params.length === 1)\n return seq\n\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 validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\n },\n 'some': {\n evaluate: ([fn, seq]: 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 validate: node => assertNumberOfParams(2, node),\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const defaultComparer = params.length === 1\n const seq = defaultComparer ? params[0] : params[1]\n const comparer = defaultComparer ? null : params[0]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort(compare)\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(compare)\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const defaultComparer = params.length === 2\n\n const keyfn = asAny(params[0], sourceCodeInfo)\n const comparer = defaultComparer ? null : params[1]\n const seq = asSeq(defaultComparer ? params[1] : params[2], sourceCodeInfo)\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 const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\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 const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'take': {\n evaluate: ([n, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'take-last': {\n evaluate: ([n, array], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'take-while': {\n evaluate: ([fn, seq]: 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 validate: node => assertNumberOfParams(2, node),\n },\n 'drop': {\n evaluate: ([n, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'drop-last': {\n evaluate: ([n, array], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'drop-while': {\n evaluate: ([fn, seq]: 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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'random-sample!': {\n evaluate: ([prob, seq], sourceCodeInfo): Seq => {\n assertNumber(prob, sourceCodeInfo, { finite: true })\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n return seq\n .split('')\n .filter(() => Math.random() < prob)\n .join('')\n }\n else {\n return seq.filter(() => Math.random() < prob)\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'rand-nth!': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (seq.length === 0)\n return null\n\n const index = Math.floor(Math.random() * seq.length)\n\n if (typeof seq === 'string')\n return toAny(seq.split('')[index])\n\n return toAny(seq[index])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'shuffle!': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n const array: Arr = typeof input === 'string' ? [...input.split('')] : [...input]\n let remainingLength = array.length\n let arrayElement: Any\n let pickedIndex: number\n\n // Fisher–Yates Shuffle\n while (remainingLength) {\n remainingLength -= 1\n\n // Pick a remaining element\n pickedIndex = Math.floor(Math.random() * remainingLength)\n\n // And swap it with the current element.\n arrayElement = toAny(array[remainingLength])\n array[remainingLength] = toAny(array[pickedIndex])\n array[pickedIndex] = arrayElement\n }\n\n return typeof input === 'string' ? array.join('') : array\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return Array.from(new Set(input))\n\n return Array.from(new Set(input.split(''))).join('')\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'remove': {\n evaluate: ([fn, input], 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 validate: node => assertNumberOfParams(2, node),\n },\n 'remove-at': {\n evaluate: ([index, input], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n\n const intIndex = Math.ceil(index)\n if (intIndex < 0 || intIndex >= input.length)\n return input\n\n if (Array.isArray(input)) {\n const copy = [...input]\n copy.splice(index, 1)\n return copy\n }\n return `${input.substring(0, index)}${input.substring(index + 1)}`\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'split-at': {\n evaluate: ([pos, seq], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { finite: true })\n const intPos = toNonNegativeInteger(pos)\n assertSeq(seq, sourceCodeInfo)\n return [seq.slice(0, intPos), seq.slice(intPos)]\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'split-with': {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'group-by': {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams(2, node),\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq\n = len === 2\n ? asSeq(params[1], sourceCodeInfo)\n : len === 3\n ? asSeq(params[2], sourceCodeInfo)\n : asSeq(params[3], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n const pad = len === 4 ? (params[2] === null ? [] : asArray(params[2], sourceCodeInfo)) : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 4 }, node),\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq = len === 2 ? asSeq(params[1], sourceCodeInfo) : asSeq(params[2], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'partition-by': {\n evaluate: ([fn, seq], 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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\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 type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { evaluateMap } from './sequence'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\n },\n\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 validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\n },\n\n repeat: {\n evaluate: ([count, value], 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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n mapcat: {\n evaluate: (params, sourceCodeInfo, contextStack, helpers): Arr | string => {\n const mapResult = evaluateMap(params, sourceCodeInfo, contextStack, helpers)\n assertArray(mapResult, sourceCodeInfo)\n return mapResult.flat(1)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n validate: node => assertNumberOfParams(1, node),\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 },\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 },\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 },\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 },\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'rem': {\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pow': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'rand!': {\n evaluate: (parameters, sourceCodeInfo): number => {\n const num = asNumber(parameters.length === 1 ? parameters[0] : 1, sourceCodeInfo)\n return Math.random() * num\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 0, max: 1 }, node),\n },\n\n 'rand-int!': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(Math.random() * Math.abs(first)) * Math.sign(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'max-safe-integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min-safe-integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'max-value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min-value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'positive-infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'negative-infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { version } from '../../../../package.json'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nconst uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\nconst xyRegexp = /[xy]/g\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n 'not=': {\n evaluate: (params): boolean => {\n for (let i = 0; i < params.length - 1; i += 1) {\n for (let j = i + 1; j < params.length; j += 1) {\n if (params[i] === params[j])\n return false\n }\n }\n\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n '=': {\n evaluate: ([first, ...rest]): boolean => {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n '>': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) <= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '<': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) >= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '>=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) < 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '<=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) > 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not': {\n evaluate: ([first]): boolean => !first,\n validate: node => assertNumberOfParams(1, node),\n },\n 'inst-ms!': {\n evaluate: (): number => {\n return Date.now()\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'inst-ms->iso-date-time': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'iso-date-time->inst-ms': {\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 validate: node => assertNumberOfParams(1, node),\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 },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'uuid!': {\n evaluate: (): string => {\n return uuidTemplate.replace(xyRegexp, (character) => {\n const randomNbr = Math.floor(Math.random() * 16)\n const newValue = character === 'x' ? randomNbr : (randomNbr & 0x3) | 0x8\n return newValue.toString(16)\n })\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'lits-version!': {\n evaluate: (): Any => {\n return version\n },\n validate: node => assertNumberOfParams(0, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\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 } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== second)\n throw new AssertionError(`Expected ${first} to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first === second)\n throw new AssertionError(`Expected ${first} not to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected\\n${JSON.stringify(first, null, 2)}\\nto deep equal\\n${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not-equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert>': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert>=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert<': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert<=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-nil': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be nil.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${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 validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { collHasKey, toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { assertEventNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'object': {\n evaluate: (params, sourceCodeInfo): Obj => {\n const result: Obj = {}\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\n }\n return result\n },\n validate: node => assertEventNumberOfParams(node),\n },\n\n 'keys': {\n evaluate: ([first], sourceCodeInfo): string[] => {\n assertObj(first, sourceCodeInfo)\n return Object.keys(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'vals': {\n evaluate: ([first], sourceCodeInfo): Arr => {\n assertObj(first, sourceCodeInfo)\n return Object.values(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'entries': {\n evaluate: ([first], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(first, sourceCodeInfo)\n return Object.entries(first)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams({ min: 0 }, node),\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [fn, first, ...rest] = params\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 1)\n return null\n\n assertObj(first, 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 validate: node => assertNumberOfParams({ min: 1 }, node),\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 validate: node => assertNumberOfParams(2, node),\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 validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n match: {\n evaluate: ([regexp, text], 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 validate: node => assertNumberOfParams(2, node),\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const regExp = new RegExp(regexp.s, regexp.f)\n return str.replace(regExp, value)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { NormalExpressionNode } from '../../../parser/interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'subs': {\n evaluate: ([first, second, third], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (third === undefined)\n return (first).substring(second)\n\n assertNumber(third, sourceCodeInfo, { gte: second })\n return (first).substring(second, third)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\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 validate: node => assertNumberOfParams(2, node),\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 },\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number-to-string': {\n evaluate: (params, sourceCodeInfo): string => {\n const [num, base] = params\n assertNumber(num, sourceCodeInfo, { finite: true })\n if (params.length === 1) {\n return `${num}`\n }\n else {\n assertNumber(base, sourceCodeInfo, { finite: true })\n if (base !== 2 && base !== 8 && base !== 10 && base !== 16) {\n throw new LitsError(\n `Expected \"number-to-string\" base argument to be 2, 8, 10 or 16, got: ${base}`,\n sourceCodeInfo,\n )\n }\n if (base === 10)\n return `${num}`\n\n assertNumber(num, sourceCodeInfo, { integer: true, nonNegative: true })\n return Number(num).toString(base)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertString(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\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 validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 10 }, node),\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 validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n validate: node => assertNumberOfParams(1, node),\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 validate: node => assertNumberOfParams(1, node),\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 { FunctionType } from '../../../constants/constants'\nimport type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/interface'\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'\nimport { assertNumberOfParams } from '../../../typeGuards'\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 validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Partial,\n f: toAny(fn),\n p: params,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'comp': {\n evaluate: (fns, sourceCodeInfo): CompFunction => {\n if (fns.length > 1) {\n const last = fns[fns.length - 1]\n if (Array.isArray(last))\n // eslint-disable-next-line ts/no-unsafe-assignment\n fns = [...fns.slice(0, -1), ...last]\n }\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Comp,\n f: fns,\n }\n },\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Constantly,\n v: toAny(value),\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'juxt': {\n evaluate: (fns, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Juxt,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Complement,\n f: toAny(fn),\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'every-pred': {\n evaluate: (fns, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.EveryPred,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'some-pred': {\n evaluate: (fns, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.SomePred,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'fnil': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNilFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Fnil,\n f: toAny(fn),\n p: params,\n }\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n}\n","import type { BuiltinNormalExpressions } 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\nexport const normalExpressions: 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","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, { parseToken }) => {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'comment',\n p: [],\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n node.p.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, node]\n },\n evaluate: () => null,\n analyze: () => ({ undefinedSymbols: new Set() }),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'declared?',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack) => {\n const [astNode] = node.p\n assertNameNode(astNode, node.tkn?.sourceCodeInfo)\n\n const lookUpResult = contextStack.lookUp(astNode)\n return lookUpResult !== null\n },\n validate: node => assertNumberOfParams(1, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { isNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertAny } from '../../typeGuards/lits'\nimport { assertNumberOfParams } from '../../typeGuards'\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: '??',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [firstNode, secondNode] = node.p\n\n if (isNameNode(firstNode)) {\n if (contextStack.lookUp(firstNode) === null)\n return secondNode ? evaluateAstNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node.tkn?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport type { Builtin, BuiltinSpecialExpressions } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { qqSpecialExpression } from './specialExpressions/qq'\n\nexport const specialExpressions: BuiltinSpecialExpressions = {\n 'and': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'defns': defnsSpecialExpression,\n 'defs': defsSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'if-let': ifLetSpecialExpression,\n 'if-not': ifNotSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n 'or': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'time!': timeSpecialExpression,\n 'try': trySpecialExpression,\n 'when': whenSpecialExpression,\n 'when-first': whenFirstSpecialExpression,\n 'when-let': whenLetSpecialExpression,\n 'when-not': whenNotSpecialExpression,\n 'declared?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n}\n\nObject.keys(specialExpressions).forEach((key) => {\n /* v8 ignore next 2 */\n if (normalExpressions[key])\n throw new Error(`Expression ${key} is defined as both a normal expression and a special expression`)\n})\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressions)\n","import { normalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n BuiltinFunction,\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunctionOverload,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n PartialFunction,\n SomePredFunction,\n UserDefinedFunction,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { FunctionType } from '../constants/constants'\nimport { asString } from '../typeGuards/string'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport type { Context, EvaluateAstNode, ExecuteFunction } from './interface'\nimport type { ContextStack } from './ContextStack'\n\ntype FunctionExecutors = Record<\n LitsFunctionType,\n (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateAstNode: EvaluateAstNode, executeFunction: ExecuteFunction },\n ) => Any\n>\n\nfunction findOverloadFunction(\n overloads: EvaluatedFunctionOverload[],\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n): EvaluatedFunctionOverload {\n const overloadFunction = overloads.find((overload) => {\n const arity = overload.a\n if (typeof arity === 'number')\n return arity === nbrOfParams\n else\n return arity.min <= nbrOfParams\n })\n if (!overloadFunction)\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n\n return overloadFunction\n}\n\nexport const functionExecutors: FunctionExecutors = {\n [FunctionType.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.f.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 [FunctionType.UserDefined]: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateAstNode }) => {\n for (;;) {\n const overloadFunction = findOverloadFunction(fn.o, params.length, sourceCodeInfo)\n const args = overloadFunction.as\n const nbrOfMandatoryArgs: number = args.mandatoryArguments.length\n\n const newContext: Context = { ...overloadFunction.f }\n\n const length = Math.max(params.length, args.mandatoryArguments.length)\n const rest: Arr = []\n for (let i = 0; i < length; i += 1) {\n if (i < nbrOfMandatoryArgs) {\n const param = toAny(params[i])\n const key = asString(args.mandatoryArguments[i], sourceCodeInfo)\n newContext[key] = { value: param }\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n if (args.restArgument)\n newContext[args.restArgument] = { value: rest }\n\n try {\n let result: Any = null\n const newContextStack = contextStack.create(newContext, fn.x)\n for (const node of overloadFunction.b)\n result = evaluateAstNode(node, newContextStack)\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 [FunctionType.Partial]: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.f, [...fn.p, ...params], contextStack, sourceCodeInfo)\n },\n [FunctionType.Comp]: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { 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 [FunctionType.Constantly]: (fn: ConstantlyFunction) => {\n return fn.v\n },\n [FunctionType.Juxt]: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.f.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n [FunctionType.Complement]: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.f, params, contextStack, sourceCodeInfo)\n },\n [FunctionType.EveryPred]: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\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 [FunctionType.SomePred]: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\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 [FunctionType.Fnil]: (fn: FNilFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fniledParams = params.map((param, index) => (param === null ? toAny(fn.p[index]) : param))\n return executeFunction(toAny(fn.f), fniledParams, contextStack, sourceCodeInfo)\n },\n [FunctionType.Builtin]: (fn: BuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(normalExpressions[fn.n], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type {\n Ast,\n AstNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ReservedNameNode,\n SpecialExpressionNode,\n StringNode,\n} from '../parser/interface'\nimport { builtin } from '../builtin'\nimport { reservedNamesRecord } from '../reservedNames'\nimport { toAny } from '../utils'\nimport type { Any, Arr, Obj } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { isNormalExpressionNodeWithName } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { asNonUndefined } from '../typeGuards'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { assertString } from '../typeGuards/string'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n for (const node of ast.b)\n result = evaluateAstNode(node, contextStack)\n\n return result\n}\n\nexport function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any {\n switch (node.t) {\n case AstNodeType.Number:\n return evaluateNumber(node)\n case AstNodeType.String:\n return evaluateString(node)\n case AstNodeType.Name:\n return contextStack.evaluateName(node)\n case AstNodeType.ReservedName:\n return evaluateReservedName(node)\n case AstNodeType.NormalExpression:\n return evaluateNormalExpression(node, contextStack)\n case AstNodeType.SpecialExpression:\n return evaluateSpecialExpression(node, contextStack)\n default:\n throw new LitsError(`${node.t}-node cannot be evaluated`, node.tkn?.sourceCodeInfo)\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node.v\n}\n\nfunction evaluateString(node: StringNode): string {\n return node.v\n}\n\nfunction evaluateReservedName(node: ReservedNameNode): Any {\n return asNonUndefined(reservedNamesRecord[node.v], node.tkn?.sourceCodeInfo).value\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n if (isNormalExpressionNodeWithName(node)) {\n const value = contextStack.getValue(node.n)\n if (value !== undefined)\n return executeFunction(asAny(value), params, contextStack, sourceCodeInfo)\n\n return evaluateBuiltinNormalExpression(node, params, contextStack)\n }\n else {\n const fn = evaluateAstNode(node.e, 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.t](fn, params, sourceCodeInfo, contextStack, { evaluateAstNode, 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 evaluateBuiltinNormalExpression(\n node: NormalExpressionNodeWithName,\n params: Arr,\n contextStack: ContextStack,\n): Any {\n const normalExpression = builtin.normalExpressions[node.n]\n if (!normalExpression)\n throw new UndefinedSymbolError(node.n, node.tkn?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, node.tkn?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], node.tkn?.sourceCodeInfo)\n\n return specialExpression.evaluate(node, contextStack, { evaluateAstNode, builtin })\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 { AstNode, BuiltinFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import type { BuiltinFunction, ExtraData, NameNode, NativeJsFunction } from '../parser/interface'\nimport { builtin } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue } from '../Lits/Lits'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { asNonUndefined } from '../typeGuards'\nimport { isBuiltinFunction } from '../typeGuards/litsFunction'\nimport { isContextEntry } from './interface'\nimport type { Context, LookUpResult } from './interface'\n\nexport class ContextStack {\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.contexts = contexts\n this.globalContext = asNonUndefined(contexts[0])\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context, extraData?: ExtraData): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStack({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: extraData ? { ...this.lazyValues, ...extraData } : this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\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: NameNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\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 if (builtin.normalExpressions[value]) {\n const builtinFunction: BuiltinFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Builtin,\n n: value,\n }\n return builtinFunction\n }\n\n if (builtin.specialExpressions[value])\n return 'specialExpression'\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 evaluateName(node: NameNode): Any {\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n else if (isBuiltinFunction(lookUpResult))\n return lookUpResult\n\n throw new UndefinedSymbolError(node.v, node.tkn?.sourceCodeInfo)\n }\n}\n","import { builtin } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { FunctionArguments } from '../builtin/utils'\nimport { AstNodeType, TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ReservedName } from '../reservedNames'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { asNonUndefined, assertEventNumberOfParams, assertNonUndefined, assertUnreachable } from '../typeGuards'\nimport { assertNameNode, isExpressionNode } from '../typeGuards/astNode'\nimport { asToken } from '../typeGuards/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type {\n AstNode,\n BindingNode,\n ModifierName,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ParseArgument,\n ParseExpression,\n ReservedNameNode,\n SpecialExpressionNode,\n StringNode,\n} from './interface'\n\nexport function parseNumber(tokenStream: TokenStream, position: number): [number, NumberNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [position + 1, { t: AstNodeType.Number, v: Number(tkn.v), tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n}\n\nfunction parseString(tokenStream: TokenStream, position: number): [number, StringNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [position + 1, { t: AstNodeType.String, v: tkn.v, tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n}\n\nfunction parseName(tokenStream: TokenStream, position: number): [number, NameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [position + 1, { t: AstNodeType.Name, v: tkn.v, tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n}\n\nfunction parseReservedName(tokenStream: TokenStream, position: number): [number, ReservedNameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n { t: AstNodeType.ReservedName, v: tkn.v as ReservedName, tkn: tkn.sourceCodeInfo ? tkn : undefined },\n ]\n}\n\nfunction parseTokens(tokenStream: TokenStream, position: number): [number, AstNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const astNodes: AstNode[] = []\n let astNode: AstNode\n while (!(tkn.t === TokenType.Bracket && (tkn.v === ')' || tkn.v === ']'))) {\n ;[position, astNode] = parseToken(tokenStream, position)\n astNodes.push(astNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, astNodes]\n}\n\nconst parseExpression: ParseExpression = (tokenStream, position) => {\n position += 1 // Skip parenthesis\n\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n if (tkn.t === TokenType.Name && builtin.specialExpressions[tkn.v])\n return parseSpecialExpression(tokenStream, position)\n\n return parseNormalExpression(tokenStream, position)\n}\n\nfunction parseArrayLitteral(tokenStream: TokenStream, position: number): [number, AstNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n position = position + 1\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const params: AstNode[] = []\n let param: AstNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n ;[position, param] = parseToken(tokenStream, position)\n params.push(param)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n position = position + 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position, node]\n}\n\nfunction parseObjectLitteral(tokenStream: TokenStream, position: number): [number, NormalExpressionNodeWithName] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n position = position + 1\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const params: AstNode[] = []\n let param: AstNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === '}')) {\n ;[position, param] = parseToken(tokenStream, position)\n params.push(param)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n position = position + 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n assertEventNumberOfParams(node)\n\n return [position, node]\n}\n\nfunction parseRegexpShorthand(tokenStream: TokenStream, position: number): [number, NormalExpressionNodeWithName] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: tkn.v,\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n assertNonUndefined(tkn.o, tkn.sourceCodeInfo)\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: `${tkn.o.g ? 'g' : ''}${tkn.o.i ? 'i' : ''}`,\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n return [position + 1, node]\n}\n\nconst placeholderRegexp = /^%([1-9][0-9]?)?$/\ntype ParseFnShorthand = (tokenStream: TokenStream, position: number) => [number, FnNode]\nconst parseFnShorthand: ParseFnShorthand = (tokenStream, position) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n position += 1\n const [newPosition, exprNode] = parseExpression(tokenStream, position)\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET'\n for (let pos = position + 1; pos < newPosition - 1; pos += 1) {\n const tkn = asToken(tokenStream.tokens[pos], tokenStream.filePath)\n if (tkn.t === TokenType.Name) {\n const match = placeholderRegexp.exec(tkn.v)\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use % or %1', firstToken.sourceCodeInfo)\n\n percent1 = 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.sourceCodeInfo)\n }\n }\n if (tkn.t === TokenType.FnShorthand)\n throw new LitsError('Nested shortcut functions are not allowed', firstToken.sourceCodeInfo)\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('%')\n else\n mandatoryArguments.push(`%${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition, node]\n}\n\nconst parseArgument: ParseArgument = (tokenStream, position) => {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n if (tkn.t === TokenType.Name) {\n return [position + 1, { t: AstNodeType.Argument, n: tkn.v, tkn }]\n }\n else if (tkn.t === TokenType.Modifier) {\n const value = tkn.v as ModifierName\n return [position + 1, { t: AstNodeType.Modifier, v: value, tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, tkn.sourceCodeInfo)\n }\n}\n\nfunction parseBindings(tokenStream: TokenStream, position: number): [number, BindingNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '[' })\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const bindings: BindingNode[] = []\n let binding: BindingNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n ;[position, binding] = parseBinding(tokenStream, position)\n bindings.push(binding)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n position += 1\n\n return [position, bindings]\n}\n\nfunction parseBinding(tokenStream: TokenStream, position: number): [number, BindingNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Name })\n const name = firstToken.v\n\n position += 1\n let value: AstNode\n ;[position, value] = parseToken(tokenStream, position)\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name,\n v: value,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position, node]\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, position: number): [number, NormalExpressionNode] {\n const [newPosition, fnNode] = parseToken(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, newPosition)\n position += 1\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n e: fnNode,\n p: params,\n tkn: fnNode.tkn,\n }\n\n return [position, node]\n }\n\n assertNameNode(fnNode, fnNode.tkn?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n tkn: fnNode.tkn,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression)\n builtinExpression.validate?.(node)\n\n return [position, node]\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, position: number): [number, SpecialExpressionNode] {\n const { v: expressionName, sourceCodeInfo } = asToken(\n tokenStream.tokens[position],\n tokenStream.filePath,\n )\n position += 1\n\n const { parse, validate } = asNonUndefined(builtin.specialExpressions[expressionName], sourceCodeInfo)\n\n const [positionAfterParse, node] = parse(tokenStream, position, {\n parseExpression,\n parseTokens,\n parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n validate?.(node)\n\n return [positionAfterParse, node]\n}\n\nexport function parseToken(tokenStream: TokenStream, position: number): [number, AstNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n switch (tkn.t) {\n case TokenType.Number:\n return parseNumber(tokenStream, position)\n case TokenType.String:\n return parseString(tokenStream, position)\n case TokenType.Name:\n return parseName(tokenStream, position)\n case TokenType.ReservedName:\n return parseReservedName(tokenStream, position)\n case TokenType.Bracket:\n if (tkn.v === '(')\n return parseExpression(tokenStream, position)\n else if (tkn.v === '[')\n return parseArrayLitteral(tokenStream, position)\n else if (tkn.v === '{')\n return parseObjectLitteral(tokenStream, position)\n\n break\n case TokenType.RegexpShorthand:\n return parseRegexpShorthand(tokenStream, position)\n case TokenType.FnShorthand:\n return parseFnShorthand(tokenStream, position)\n case TokenType.CollectionAccessor:\n case TokenType.Modifier:\n break\n /* v8 ignore next 2 */\n default:\n assertUnreachable(tkn.t)\n }\n throw new LitsError(`Unrecognized token: ${tkn.t} value=${tkn.v}`, tkn.sourceCodeInfo)\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport type { Ast, AstNode } from './interface'\nimport { parseToken } from './parsers'\n\nexport function parse(tokenStream: TokenStream): Ast {\n const ast: Ast = {\n b: [],\n }\n\n let position = 0\n let node: AstNode\n while (position < tokenStream.tokens.length) {\n ;[position, node] = parseToken(tokenStream, position)\n ast.b.push(node)\n }\n\n return ast\n}\n","import { TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport { asNonUndefined } from '../../typeGuards'\nimport { assertNumber } from '../../typeGuards/number'\nimport type { SourceCodeInfo, Token, TokenStream } from '../interface'\nimport type { SugarFunction } from '.'\n\nexport const applyCollectionAccessors: SugarFunction = (tokenStream) => {\n let dotTokenIndex = tokenStream.tokens.findIndex(tkn => tkn.t === TokenType.CollectionAccessor)\n while (dotTokenIndex >= 0) {\n applyCollectionAccessor(tokenStream, dotTokenIndex)\n dotTokenIndex = tokenStream.tokens.findIndex(tkn => tkn.t === TokenType.CollectionAccessor)\n }\n return tokenStream\n}\n\nfunction applyCollectionAccessor(tokenStream: TokenStream, position: number) {\n const dotTkn = asNonUndefined(tokenStream.tokens[position])\n const sourceCodeInfo = dotTkn.sourceCodeInfo\n const backPosition = getPositionBackwards(tokenStream, position, sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, {\n t: TokenType.Bracket,\n v: '(',\n sourceCodeInfo,\n })\n const nextTkn = asNonUndefined(tokenStream.tokens[position + 1])\n if (dotTkn.v === '.') {\n tokenStream.tokens[position + 1] = {\n t: TokenType.String,\n v: nextTkn.v,\n sourceCodeInfo: nextTkn.sourceCodeInfo,\n }\n }\n else {\n assertNumber(Number(nextTkn.v), sourceCodeInfo, { integer: true, nonNegative: true })\n tokenStream.tokens[position + 1] = {\n t: TokenType.Number,\n v: nextTkn.v,\n sourceCodeInfo: nextTkn.sourceCodeInfo,\n }\n }\n tokenStream.tokens.splice(position + 2, 0, {\n t: TokenType.Bracket,\n v: ')',\n sourceCodeInfo,\n })\n}\n\nfunction getPositionBackwards(tokenStream: TokenStream, position: number, sourceCodeInfo: SourceCodeInfo | undefined) {\n let bracketCount: number | null = null\n if (position <= 0)\n throw new LitsError('Array accessor # must come after a sequence', sourceCodeInfo)\n\n const prevToken = asNonUndefined(tokenStream.tokens[position - 1])\n let openBracket: null | '(' | '[' | '{' = null\n let closeBracket: null | ')' | ']' | '}' = null\n\n if (prevToken.t === TokenType.Bracket) {\n switch (prevToken.v) {\n case ')':\n openBracket = '('\n closeBracket = ')'\n break\n case ']':\n openBracket = '['\n closeBracket = ']'\n break\n case '}':\n openBracket = '{'\n closeBracket = '}'\n break\n default:\n throw new LitsError('# or . must be preceeded by a collection', sourceCodeInfo)\n }\n }\n\n while (bracketCount !== 0) {\n bracketCount = bracketCount === null ? 0 : bracketCount\n position -= 1\n const tkn = asNonUndefined(tokenStream.tokens[position], sourceCodeInfo)\n if (tkn.t === TokenType.Bracket) {\n if (tkn.v === openBracket)\n bracketCount += 1\n\n if (tkn.v === closeBracket)\n bracketCount -= 1\n }\n }\n if (openBracket === '(' && position > 0) {\n const tokenBeforeBracket = asNonUndefined(tokenStream.tokens[position - 1])\n if (tokenBeforeBracket.t === TokenType.FnShorthand)\n throw new LitsError('# or . must NOT be preceeded by shorthand lambda function', sourceCodeInfo)\n }\n return position\n}\n\nfunction checkForward(\n tokenStream: TokenStream,\n position: number,\n dotTkn: Token,\n sourceCodeInfo: SourceCodeInfo | undefined,\n) {\n const tkn = asNonUndefined(tokenStream.tokens[position + 1], sourceCodeInfo)\n\n if (dotTkn.v === '.' && tkn.t !== TokenType.Name)\n throw new LitsError('# as a collection accessor must be followed by an name', sourceCodeInfo)\n\n if (dotTkn.v === '#' && tkn.t !== TokenType.Number)\n throw new LitsError('# as a collection accessor must be followed by an integer', sourceCodeInfo)\n}\n","import type { TokenStream } from '../interface'\nimport { applyCollectionAccessors } from './applyCollectionAccessor'\n\nexport type SugarFunction = (tokenStream: TokenStream) => TokenStream\n\nexport function getSugar(): SugarFunction[] {\n return [applyCollectionAccessors]\n}\n","import { TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ModifierName } from '../parser/interface'\nimport { reservedNamesRecord } from '../reservedNames'\nimport { asString } from '../typeGuards/string'\nimport type { SourceCodeInfo, TokenDescriptor, Tokenizer } from './interface'\n\nconst NO_MATCH: TokenDescriptor = [0, undefined]\n\n// A name (function or variable) can contain a lot of different characters\n\nexport const nameCharacters = '[@%0-9a-zA-ZàáâãăäāåæćčçèéêĕëēìíîĭïðłñòóôõöőøšùúûüűýÿþÀÁÂÃĂÄĀÅÆĆČÇÈÉÊĔËĒÌÍÎĬÏÐŁÑÒÓÔÕÖŐØŠÙÚÛÜŰÝÞß_^?=!$%<>+*/-]'\n\nconst nameRegExp = new RegExp(`${nameCharacters}`)\nconst whitespaceRegExp = /\\s|,/\n\nexport const skipWhiteSpace: Tokenizer = (input, current) =>\n whitespaceRegExp.test(input[current] as string) ? [1, undefined] : NO_MATCH\n\nexport const skipComment: Tokenizer = (input, current) => {\n if (input[current] === ';') {\n let length = 1\n while (input[current + length] !== '\\n' && current + length < input.length)\n length += 1\n\n if (input[current + length] === '\\n' && current + length < input.length)\n length += 1\n\n return [length, undefined]\n }\n return NO_MATCH\n}\n\nexport const tokenizeLeftParen: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '(', input, position, sourceCodeInfo)\nexport const tokenizeRightParen: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, ')', input, position, sourceCodeInfo)\nexport const tokenizeLeftBracket: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '[', input, position, sourceCodeInfo)\nexport const tokenizeRightBracket: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, ']', input, position, sourceCodeInfo)\nexport const tokenizeLeftCurly: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '{', input, position, sourceCodeInfo)\nexport const tokenizeRightCurly: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '}', input, position, sourceCodeInfo)\n\nexport const tokenizeString: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = ''\n let length = 1\n let char = input[position + length]\n let escape = false\n while (char !== '\"' || escape) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, sourceCodeInfo)\n\n length += 1\n if (escape) {\n escape = false\n if (char === '\"' || char === '\\\\') {\n value += char\n }\n else {\n value += '\\\\'\n value += char\n }\n }\n else {\n if (char === '\\\\')\n escape = true\n else\n value += char\n }\n char = input[position + length]\n }\n return [length + 1, { t: TokenType.String, v: value, sourceCodeInfo }]\n}\n\nexport const tokenizeCollectionAccessor: Tokenizer = (input, position, sourceCodeInfo) => {\n const char = input[position]\n if (char !== '.' && char !== '#')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.CollectionAccessor,\n v: char,\n sourceCodeInfo,\n },\n ]\n}\n\nexport const tokenizeSymbolString: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input[position] !== ':')\n return NO_MATCH\n\n let value = ''\n let length = 1\n let char = input[position + length]\n while (char && nameRegExp.test(char)) {\n length += 1\n value += char\n char = input[position + length]\n }\n if (length === 1)\n return NO_MATCH\n\n return [length, { t: TokenType.String, v: value, sourceCodeInfo }]\n}\n\nexport const tokenizeRegexpShorthand: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1, sourceCodeInfo)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n const options: Record<string, boolean> = {}\n while (input[position] === 'g' || input[position] === 'i') {\n if (input[position] === 'g') {\n if (options.g)\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, sourceCodeInfo)\n\n length += 1\n options.g = true\n }\n else {\n if (options.i)\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, sourceCodeInfo)\n\n length += 1\n options.i = true\n }\n position += 1\n }\n\n if (nameRegExp.test(input[position] ?? ''))\n throw new LitsError(`Unexpected regexp option \"${input[position]}\" at position ${position}.`, sourceCodeInfo)\n\n return [\n length,\n {\n t: TokenType.RegexpShorthand,\n v: token.v,\n o: options,\n sourceCodeInfo,\n },\n ]\n}\n\nexport const tokenizeFnShorthand: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.FnShorthand,\n v: '#',\n sourceCodeInfo,\n },\n ]\n}\n\nconst endOfNumberRegExp = /\\s|[)\\]},#]/\nconst decimalNumberRegExp = /[0-9]/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-fA-F]/\nconst binaryNumberRegExp = /[0-1]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeNumber: Tokenizer = (input, position, sourceCodeInfo) => {\n let type: 'decimal' | 'octal' | 'hex' | 'binary' = 'decimal'\n const firstChar = input[position] as string\n if (!firstCharRegExp.test(firstChar))\n return NO_MATCH\n\n let hasDecimals = firstChar === '.'\n\n let i: number\n for (i = position + 1; i < input.length; i += 1) {\n const char = asString(input[i], sourceCodeInfo, { char: true })\n if (endOfNumberRegExp.test(char))\n break\n\n if (char === '.') {\n const nextChar = input[i + 1]\n if (typeof nextChar === 'string' && !decimalNumberRegExp.test(nextChar))\n break\n }\n if (i === position + 1 && firstChar === '0') {\n if (char === 'b' || char === 'B') {\n type = 'binary'\n continue\n }\n if (char === 'o' || char === 'O') {\n type = 'octal'\n continue\n }\n if (char === 'x' || char === 'X') {\n type = 'hex'\n continue\n }\n }\n if (type === 'decimal' && hasDecimals) {\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'binary') {\n if (!binaryNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'octal') {\n if (!octalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'hex') {\n if (!hexNumberRegExp.test(char))\n return NO_MATCH\n }\n else {\n if (char === '.') {\n hasDecimals = true\n continue\n }\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n }\n\n const length = i - position\n const value = input.substring(position, i)\n if ((type !== 'decimal' && length <= 2) || value === '.' || value === '-')\n return NO_MATCH\n\n return [length, { t: TokenType.Number, v: value, sourceCodeInfo }]\n}\n\nexport const tokenizeReservedName: Tokenizer = (input, position, sourceCodeInfo) => {\n for (const [reservedName, { forbidden }] of Object.entries(reservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && nameRegExp.test(nextChar))\n continue\n\n const name = input.substr(position, length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, sourceCodeInfo)\n\n return [length, { t: TokenType.ReservedName, v: reservedName, sourceCodeInfo }]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeName: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizePattern(TokenType.Name, nameRegExp, input, position, sourceCodeInfo)\n\nexport const tokenizeModifier: Tokenizer = (input, position, sourceCodeInfo) => {\n const modifiers: ModifierName[] = ['&', '&let', '&when', '&while']\n for (const modifier of modifiers) {\n const length = modifier.length\n const charAfterModifier = input[position + length]\n if (input.substr(position, length) === modifier && (!charAfterModifier || !nameRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifier\n return [length, { t: TokenType.Modifier, v: value, sourceCodeInfo }]\n }\n }\n return NO_MATCH\n}\n\nfunction tokenizeCharacter(\n type: TokenType,\n value: string,\n input: string,\n position: number,\n sourceCodeInfo?: SourceCodeInfo,\n): TokenDescriptor {\n if (value === input[position])\n return [1, { t: type, v: value, sourceCodeInfo }]\n else\n return NO_MATCH\n}\n\nfunction tokenizePattern(\n type: TokenType,\n pattern: RegExp,\n input: string,\n position: number,\n sourceCodeInfo?: SourceCodeInfo,\n): TokenDescriptor {\n let char = input[position]\n let length = 0\n let value = ''\n\n if (!char || !pattern.test(char))\n return NO_MATCH\n\n while (char && pattern.test(char)) {\n value += char\n length += 1\n char = input[position + length]\n }\n\n return [length, { t: type, v: value, sourceCodeInfo }]\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo, Token, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { getSugar } from './sugar'\nimport {\n skipComment,\n skipWhiteSpace,\n tokenizeCollectionAccessor,\n tokenizeFnShorthand,\n tokenizeLeftBracket,\n tokenizeLeftCurly,\n tokenizeLeftParen,\n tokenizeModifier,\n tokenizeName,\n tokenizeNumber,\n tokenizeRegexpShorthand,\n tokenizeReservedName,\n tokenizeRightBracket,\n tokenizeRightCurly,\n tokenizeRightParen,\n tokenizeString,\n tokenizeSymbolString,\n} from './tokenizers'\n\n// All tokenizers, order matters!\nconst tokenizers: Tokenizer[] = [\n skipComment,\n skipWhiteSpace,\n tokenizeLeftParen,\n tokenizeRightParen,\n tokenizeLeftBracket,\n tokenizeRightBracket,\n tokenizeLeftCurly,\n tokenizeRightCurly,\n tokenizeString,\n tokenizeSymbolString,\n tokenizeNumber,\n tokenizeReservedName,\n tokenizeName,\n tokenizeModifier,\n tokenizeRegexpShorthand,\n tokenizeFnShorthand,\n tokenizeCollectionAccessor,\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.substr(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\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const tokens: Token[] = []\n let position = 0\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n // Loop through all tokenizer until one matches\n const sourceCodeInfo: SourceCodeInfo | undefined = params.debug\n ? createSourceCodeInfo(input, position, params.filePath)\n : undefined\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, sourceCodeInfo)\n\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token)\n tokens.push(token)\n\n break\n }\n }\n if (!tokenized)\n throw new LitsError(`Unrecognized character '${input[position]}'.`, sourceCodeInfo)\n }\n\n const tokenStream = {\n tokens,\n filePath: params.filePath,\n }\n\n applySugar(tokenStream)\n\n return tokenStream\n}\n\nfunction applySugar(tokenStream: TokenStream) {\n const sugar = getSugar()\n sugar.forEach(sugarFn => sugarFn(tokenStream))\n}\n","import type { Ast } from '../parser/interface'\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 { analyzeAst } from '../analyze'\nimport type { AnalyzeResult } from '../analyze/interface'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { FunctionType } from '../constants/constants'\nimport { evaluate } from '../evaluator'\nimport { ContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction, NativeJsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream } from '../tokenizer/interface'\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 [key: string]: unknown\n}\n\nexport interface LitsParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\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: LitsParams = {}): unknown {\n const ast = this.generateAst(program, params.filePath)\n const result = this.evaluate(ast, params)\n return result\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params.filePath)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string): AnalyzeResult {\n const params: LitsParams = {}\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params.filePath)\n\n return analyzeAst(ast.b, contextStack, builtin)\n }\n\n public tokenize(program: string, filePath?: string): TokenStream {\n return tokenize(program, { debug: this.debug, filePath })\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n private evaluate(ast: Ast, params: LitsParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: LitsParams = {}): Any {\n const fnName = 'FN_2eb7b316-471c-5bfa-90cb-d3dfd9164a59'\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(' ')\n const program = `(${fnName} ${paramsString})`\n const ast = this.generateAst(program, params.filePath)\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 generateAst(untrimmedProgram: string, filePath?: string): Ast {\n const program = untrimmedProgram.trim()\n\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, filePath)\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n\nexport function createContextStack(params: LitsParams = {}): 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 ContextStack({\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 t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n __fn: true,\n }\n return acc\n }, {}),\n })\n return contextStack\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/interface'\nimport { getCodeMarker } from '../utils/debug/debugTools'\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*;+\\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 const testNameAnnotationMatch = line.match(/^\\s*;+\\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","isUnknownRecord","isToken","isAstNode"],"mappings":"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","x_google_ignoreList":[0]}