@mojir/lits 1.3.0 → 2.0.2

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 (97) hide show
  1. package/README.md +2 -1
  2. package/dist/cli/cli.js +2661 -1980
  3. package/dist/cli/reference/api.d.ts +2 -2
  4. package/dist/cli/src/Lits/Lits.d.ts +5 -1
  5. package/dist/cli/src/analyze/index.d.ts +1 -1
  6. package/dist/cli/src/builtin/index.d.ts +1 -1
  7. package/dist/cli/src/builtin/interface.d.ts +4 -3
  8. package/dist/cli/src/builtin/specialExpressions/functions.d.ts +2 -2
  9. package/dist/cli/src/builtin/specialExpressions/if-let.d.ts +1 -4
  10. package/dist/cli/src/builtin/specialExpressions/let.d.ts +1 -4
  11. package/dist/cli/src/builtin/specialExpressions/try.d.ts +2 -2
  12. package/dist/cli/src/constants/constants.d.ts +2 -17
  13. package/dist/cli/src/errors.d.ts +1 -1
  14. package/dist/cli/src/evaluator/ContextStack.d.ts +3 -3
  15. package/dist/cli/src/identifier.d.ts +4 -0
  16. package/dist/cli/src/index.d.ts +12 -6
  17. package/dist/cli/src/parser/AlgebraicParser.d.ts +17 -0
  18. package/dist/cli/src/parser/PolishTokenParsers.d.ts +3 -0
  19. package/dist/cli/src/parser/commonTokenParsers.d.ts +6 -0
  20. package/dist/cli/src/parser/index.d.ts +2 -1
  21. package/dist/cli/src/parser/interface.d.ts +26 -20
  22. package/dist/cli/src/removeCommentNodes/index.d.ts +1 -1
  23. package/dist/cli/src/tokenizer/algebraic/algebraicReservedNames.d.ts +8 -0
  24. package/dist/cli/src/tokenizer/algebraic/algebraicTokenizers.d.ts +10 -0
  25. package/dist/cli/src/tokenizer/algebraic/algebraicTokens.d.ts +47 -0
  26. package/dist/cli/src/tokenizer/common/commonTokenizers.d.ts +8 -0
  27. package/dist/cli/src/tokenizer/common/commonTokens.d.ts +51 -0
  28. package/dist/cli/src/tokenizer/index.d.ts +1 -8
  29. package/dist/cli/src/tokenizer/interface.d.ts +5 -18
  30. package/dist/cli/src/tokenizer/polish/polishReservedNames.d.ts +7 -0
  31. package/dist/cli/src/tokenizer/polish/polishTokenizers.d.ts +13 -0
  32. package/dist/cli/src/tokenizer/polish/polishTokens.d.ts +59 -0
  33. package/dist/cli/src/tokenizer/tokens.d.ts +20 -0
  34. package/dist/cli/src/tokenizer/utils.d.ts +9 -0
  35. package/dist/cli/src/transformer/index.d.ts +2 -0
  36. package/dist/cli/src/typeGuards/astNode.d.ts +4 -4
  37. package/dist/cli/src/typeGuards/index.d.ts +0 -1
  38. package/dist/cli/src/untokenizer/index.d.ts +2 -0
  39. package/dist/cli/src/utils/debug/debugTools.d.ts +0 -2
  40. package/dist/cli/src/utils/debug/getCodeMarker.d.ts +2 -0
  41. package/dist/index.esm.js +9078 -1569
  42. package/dist/index.esm.js.map +1 -1
  43. package/dist/index.js +9089 -1569
  44. package/dist/index.js.map +1 -1
  45. package/dist/lits.iife.js +9089 -1569
  46. package/dist/lits.iife.js.map +1 -1
  47. package/dist/reference/api.d.ts +2 -2
  48. package/dist/src/Lits/Lits.d.ts +5 -1
  49. package/dist/src/analyze/index.d.ts +1 -1
  50. package/dist/src/builtin/index.d.ts +1 -1
  51. package/dist/src/builtin/interface.d.ts +4 -3
  52. package/dist/src/builtin/specialExpressions/functions.d.ts +2 -2
  53. package/dist/src/builtin/specialExpressions/if-let.d.ts +1 -4
  54. package/dist/src/builtin/specialExpressions/let.d.ts +1 -4
  55. package/dist/src/builtin/specialExpressions/try.d.ts +2 -2
  56. package/dist/src/constants/constants.d.ts +2 -17
  57. package/dist/src/errors.d.ts +1 -1
  58. package/dist/src/evaluator/ContextStack.d.ts +3 -3
  59. package/dist/src/identifier.d.ts +4 -0
  60. package/dist/src/index.d.ts +12 -6
  61. package/dist/src/parser/AlgebraicParser.d.ts +17 -0
  62. package/dist/src/parser/PolishTokenParsers.d.ts +3 -0
  63. package/dist/src/parser/commonTokenParsers.d.ts +6 -0
  64. package/dist/src/parser/index.d.ts +2 -1
  65. package/dist/src/parser/interface.d.ts +26 -20
  66. package/dist/src/removeCommentNodes/index.d.ts +1 -1
  67. package/dist/src/tokenizer/algebraic/algebraicReservedNames.d.ts +8 -0
  68. package/dist/src/tokenizer/algebraic/algebraicTokenizers.d.ts +10 -0
  69. package/dist/src/tokenizer/algebraic/algebraicTokens.d.ts +47 -0
  70. package/dist/src/tokenizer/common/commonTokenizers.d.ts +8 -0
  71. package/dist/src/tokenizer/common/commonTokens.d.ts +51 -0
  72. package/dist/src/tokenizer/index.d.ts +1 -8
  73. package/dist/src/tokenizer/interface.d.ts +5 -18
  74. package/dist/src/tokenizer/polish/polishReservedNames.d.ts +7 -0
  75. package/dist/src/tokenizer/polish/polishTokenizers.d.ts +13 -0
  76. package/dist/src/tokenizer/polish/polishTokens.d.ts +59 -0
  77. package/dist/src/tokenizer/tokens.d.ts +20 -0
  78. package/dist/src/tokenizer/utils.d.ts +9 -0
  79. package/dist/src/transformer/index.d.ts +2 -0
  80. package/dist/src/typeGuards/astNode.d.ts +4 -4
  81. package/dist/src/typeGuards/index.d.ts +0 -1
  82. package/dist/src/untokenizer/index.d.ts +2 -0
  83. package/dist/src/utils/debug/debugTools.d.ts +0 -2
  84. package/dist/src/utils/debug/getCodeMarker.d.ts +2 -0
  85. package/dist/testFramework.esm.js +2196 -1539
  86. package/dist/testFramework.esm.js.map +1 -1
  87. package/dist/testFramework.js +2196 -1539
  88. package/dist/testFramework.js.map +1 -1
  89. package/package.json +6 -5
  90. package/dist/cli/src/parser/parsers.d.ts +0 -4
  91. package/dist/cli/src/reservedNames.d.ts +0 -7
  92. package/dist/cli/src/tokenizer/tokenizers.d.ts +0 -20
  93. package/dist/cli/src/typeGuards/token.d.ts +0 -13
  94. package/dist/src/parser/parsers.d.ts +0 -4
  95. package/dist/src/reservedNames.d.ts +0 -7
  96. package/dist/src/tokenizer/tokenizers.d.ts +0 -20
  97. package/dist/src/typeGuards/token.d.ts +0 -13
@@ -1 +1 @@
1
- {"version":3,"file":"lits.iife.js","sources":["../src/constants/constants.ts","../node_modules/tslib/tslib.es6.js","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/errors.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/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/typeGuards/token.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/comment.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/declared.ts","../src/reservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/time.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.ts","../src/builtin/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/analyze/findUnresolvedIdentifiers.ts","../src/analyze/calculateOutcomes/calculateAndOutcomes.ts","../src/analyze/calculateOutcomes/calculateCondOutcomes.ts","../src/analyze/calculateOutcomes/calculateDeclaredOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefsOutcomes.ts","../src/analyze/calculateOutcomes/calculateDoOutcomes.ts","../src/analyze/calculateOutcomes/calculateFunctionOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfOutcomes.ts","../src/analyze/calculateOutcomes/calculateLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopsOutcomes.ts","../src/analyze/calculateOutcomes/calculateOrOutcomes.ts","../src/analyze/calculateOutcomes/calculateQqOutcomes.ts","../src/analyze/calculateOutcomes/calculateThrowOutcomes.ts","../src/analyze/calculateOutcomes/calculateTimeOutcomes.ts","../src/analyze/calculateOutcomes/calculateTryOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenOutcomes.ts","../src/analyze/calculateOutcomes/calculateRecurOutcomes.ts","../src/analyze/calculateOutcomes/calculateCommentOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopOutcomes.ts","../src/analyze/calculateOutcomes/specialExpressionCalculators.ts","../src/analyze/calculateOutcomes/index.ts","../src/analyze/index.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"],"sourcesContent":["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 Comment = 211,\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 Comment = 110,\n NewLine = 111,\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 [TokenType.Comment, 'Comment'],\n [TokenType.NewLine, 'NewLine'],\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","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","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 public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","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 { 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 { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../builtin/specialExpressions/declared'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfLetNode } from '../builtin/specialExpressions/if-let'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../builtin/specialExpressions/loops'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../builtin/specialExpressions/time'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { WhenNode } from '../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../builtin/specialExpressions/when-not'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n 'and': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'comment': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'cond': (node: CondNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'declared?': (node: DeclaredNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defn': (_node: DefnNode, _removeOptions: RemoveOptions) => {},\n 'def': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defns': (_node: DefnsNode, _removeOptions: RemoveOptions) => {},\n 'defs': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'do': (node: DoNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'doseq': (_node: DoSeqNode, _removeOptions: RemoveOptions) => {},\n 'fn': (_node: FnNode, _removeOptions: RemoveOptions) => {},\n 'for': (_node: ForNode, _removeOptions: RemoveOptions) => {},\n 'if-let': (_node: IfLetNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'if-not': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'let': (node: LetNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n node.bs.forEach((bindingNode) => {\n removeOptions.recursivelyRemoveCommentNodes(bindingNode.v)\n })\n },\n 'loop': (_node: LoopNode, _removeOptions: RemoveOptions) => {},\n 'or': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n '??': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'recur': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'time!': (node: TimeNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'throw': (node: ThrowNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'try': (_node: TryNode, _removeOptions: RemoveOptions) => {},\n 'when-first': (_node: WhenFirstNode, _removeOptions: RemoveOptions) => {},\n 'when-let': (_node: WhenLetNode, _removeOptions: RemoveOptions) => {},\n 'when': (_node: WhenNode, _removeOptions: RemoveOptions) => {},\n 'when-not': (_node: WhenNotNode, _removeOptions: RemoveOptions) => {},\n\n} satisfies Record<SpecialExpressionName, (astNode: any, removeOptions: RemoveOptions) => void>\n\nexport function removeCommentNodesFromSpecialExpression(\n node: SpecialExpressionNode,\n removeOptions: RemoveOptions,\n) {\n const uncommenter = specialExpressionCommentRemovers[node.n as 'and']\n return uncommenter?.(node as AndNode, removeOptions)\n}\n","import { AstNodeType } from '../constants/constants'\nimport type { Ast, AstNode } from '../parser/interface'\nimport { isNormalExpressionNode } from '../typeGuards/astNode'\nimport { removeCommentNodesFromSpecialExpression } from './removeCommentNodesFromSpecialExpression'\n\nconst removeOptions = {\n recursivelyRemoveCommentNodes,\n removeCommenNodesFromArray,\n} as const\n\nexport type RemoveOptions = typeof removeOptions\n\nexport function removeCommenNodes(ast: Ast): void {\n removeCommenNodesFromArray(ast.b)\n ast.b.forEach(recursivelyRemoveCommentNodes)\n}\n\nfunction recursivelyRemoveCommentNodes(astNode: AstNode) {\n if (isNormalExpressionNode(astNode)) {\n removeCommenNodesFromArray(astNode.p)\n astNode.p.forEach(recursivelyRemoveCommentNodes)\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n removeCommentNodesFromSpecialExpression(astNode, removeOptions)\n }\n}\n\nfunction removeCommenNodesFromArray(astNodes: AstNode[]): void {\n let i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n while (i >= 0) {\n astNodes.splice(i, 1)\n i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n }\n}\n\nexport function withoutCommentNodes(astNodes: AstNode[]) {\n return astNodes.filter(n => n.t !== AstNodeType.Comment)\n}\n","import { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { GenericNode } from '../parser/interface'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype Count = number | { min?: number, max?: number }\n\nexport function assertEvenNumberOfParams(node: GenericNode): void {\n const length = withoutCommentNodes(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.debugData?.token.debugData?.sourceCodeInfo,\n )\n }\n}\n\nexport function assertNumberOfParams(count: Count, node: GenericNode): void {\n assertCount({\n count,\n length: withoutCommentNodes(node.p).length,\n name: node.n ?? 'expression',\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\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\nfunction assertCount({ count, length, name, sourceCodeInfo }: { name: string | undefined, count: Count, length: number, sourceCodeInfo?: SourceCodeInfo }): void {\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n 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 \"${name}\", 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 \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\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 { 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 { 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 { 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 { 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 { 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'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\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 [FUNCTION_SYMBOL]: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n\nexport function arrayToPairs<T>(arr: T[]): T[][] {\n const pairs: T[][] = []\n for (let i = 0; i < arr.length; i += 2)\n pairs.push([arr[i]!, arr[i + 1]!])\n\n return pairs\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.substring(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.substring(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.substring(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.substring(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.substring(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.substring(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 { assertEvenNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n '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 => assertEvenNumberOfParams(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 { 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 != null) && 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) && value.debugData?.sourceCodeInfo\n ? value.debugData.sourceCodeInfo\n : typeof filePath === 'string'\n ? { filePath }\n : undefined\n\n throw new LitsError(\n `Expected ${(options.type != null) ? `${TokenType[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 { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface AndNode extends CommonSpecialExpressionNode<'and'> {}\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: AndNode = {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n newPosition + 1,\n node,\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface CommentExpressionNode extends CommonSpecialExpressionNode<'comment'> {}\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null, CommentExpressionNode> = {\n parse: (tokenStream, position, firstToken, { parseToken }) => {\n const node: CommentExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'comment',\n p: [],\n debugData: undefined,\n } satisfies CommentExpressionNode\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\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\n node.debugData = firstToken.debugData\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined\n\n return [position + 1, node]\n },\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertEvenNumberOfParams } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface CondNode extends CommonSpecialExpressionNode<'cond'> {}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: CondNode = {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertEvenNumberOfParams(node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const [test, form] of arrayToPairs(node.p)) {\n const value = evaluateAstNode(test!, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(form!, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, NameNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'declared?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DeclaredNode = {\n t: AstNodeType.SpecialExpression,\n n: 'declared?',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack) => {\n const lookUpResult = contextStack.lookUp(node.p[0] as NameNode)\n return lookUpResult !== null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\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'\nimport type { SpecialExpressionName } from '.'\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 as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n // 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 { AstNodeType, TokenType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, NameNode } from '../../parser/interface'\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 interface DefNode extends CommonSpecialExpressionNode<'def'> {}\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefNode = {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNameNode(node.p[0], node.debugData?.token.debugData?.sourceCodeInfo)\n assertNumberOfParams(2, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const name = (node.p[0] as NameNode).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const subNode = asAstNode(node.p[1])\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = asNameNode(node.p[0]).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertString } from '../../typeGuards/string'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefsNode extends CommonSpecialExpressionNode<'defs'> {}\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<null, DefsNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(2, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, node.debugData?.token.debugData?.sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const subNode = node.p[1]!\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface DoNode extends CommonSpecialExpressionNode<'do'> {}\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n parse: (tokenStream, position, firstToken, { parseToken }) => {\n const node: DoNode = {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: [],\n debugData: undefined,\n }\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\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\n node.debugData = firstToken.debugData\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport function joinAnalyzeResults(...results: UnresolvedIdentifiers[]): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n for (const identifier of results)\n identifier.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: UnresolvedIdentifiers, source: UnresolvedIdentifiers): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nexport function combinate<T>(arrays: T[][]): T[][] {\n return arrays.reduce((acc: T[][], curr) => {\n return acc.flatMap(a => curr.map(c => [...a, c]))\n }, [[]])\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, FunctionType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type {\n AstNode,\n BindingNode,\n CommonSpecialExpressionNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n NameNode,\n} from '../../parser/interface'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asAstNode, assertNameNode } from '../../typeGuards/astNode'\nimport { asString, assertString } from '../../typeGuards/string'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefnNode extends CommonSpecialExpressionNode<'defn'> {\n f: NameNode\n o: FunctionOverload[]\n}\n\nexport interface DefnsNode extends CommonSpecialExpressionNode<'defns'> {\n f: AstNode\n o: FunctionOverload[]\n}\n\nexport interface FnNode extends CommonSpecialExpressionNode<'fn'> {\n p: AstNode[]\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseToken } = parsers\n let functionName\n ;[position, functionName] = parseToken(tokenStream, position)\n assertNameNode(functionName, functionName.debugData?.token.debugData?.sourceCodeInfo)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n position + 1,\n node,\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.debugData?.token.debugData?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.globalContext[node.f.v] = { value: true }\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null, DefnsNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\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 const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DefnsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n p: [],\n f: functionName,\n o: functionOverloades,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n position + 1,\n node,\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.debugData?.token.debugData?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.debugData?.token.debugData?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.f, sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n const newContext = { [name]: { value: true } }\n\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [\n position + 1,\n node,\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.debugData?.token.debugData?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) =>\n addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nfunction getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f).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 addOverloadsUnresolvedIdentifiers(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n functionNameContext?: Context,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\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 = findUnresolvedIdentifiers([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 = findUnresolvedIdentifiers(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.debugData?.sourceCodeInfo)\n\n return [position, 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.debugData?.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 + 1], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v !== ')' && tkn.v !== '(')\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, tkn.debugData?.sourceCodeInfo)\n position += 1\n }\n\n return [position, 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.debugData?.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.debugData?.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.debugData?.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, tkn.debugData?.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.debugData?.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.debugData?.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 { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfNode extends CommonSpecialExpressionNode<'if'> {}\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: IfNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 2, max: 3 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, NormalExpressionNode } from '../../parser/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode, asNormalExpressionNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfLetNode extends CommonSpecialExpressionNode<'if-let'> {\n b: BindingNode\n debugData: CommonSpecialExpressionNode<'let'>['debugData'] & ({\n bindingArray: NormalExpressionNode\n } | undefined)\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any, IfLetNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket, parseToken }) => {\n const bindingArray = firstToken.debugData?.sourceCodeInfo ? asNormalExpressionNode(parseToken(tokenStream, position)[1]) : undefined\n\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.debugData?.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], firstToken.debugData?.sourceCodeInfo),\n p: params,\n debugData: firstToken.debugData?.sourceCodeInfo && bindingArray && {\n token: firstToken,\n lastToken,\n bindingArray,\n },\n }\n\n assertNumberOfParams({ min: 1, max: 2 }, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode(node.b.v, contextStack)\n if (bindingValue) {\n locals[node.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext: Context = { [node.b.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([node.b.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfNotNode extends CommonSpecialExpressionNode<'if-not'> {}\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any, IfNotNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: IfNotNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-not',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 2, max: 3 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, NormalExpressionNode } from '../../parser/interface'\nimport { asNormalExpressionNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LetNode extends CommonSpecialExpressionNode<'let'> {\n bs: BindingNode[]\n debugData: CommonSpecialExpressionNode<'let'>['debugData'] & ({\n bindingArray: NormalExpressionNode\n } | undefined)\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket, parseToken }) => {\n const bindingArray = firstToken.debugData?.sourceCodeInfo && asNormalExpressionNode(parseToken(tokenStream, position)[1])\n\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: params,\n bs: bindings,\n debugData: firstToken.debugData?.sourceCodeInfo && bindingArray && {\n token: firstToken,\n lastToken,\n bindingArray,\n },\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.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.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.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack.create(bindingContext), builtin)\n bindingContext[bindingNode.n] = { value: true }\n return bindingsResult\n })\n\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LoopNode extends CommonSpecialExpressionNode<'loop'> {\n bs: BindingNode[]\n}\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket, parseBindings }) => {\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.debugData?.token.debugData?.sourceCodeInfo\n const bindingContext: Context = node.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.bs.length) {\n throw new LitsError(\n `recur expected ${node.bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;node.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.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.bs.map(binding => binding.v)\n const bindingsResult = findUnresolvedIdentifiers(bindingValueNodes, contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport { asToken, assertToken, isToken } from '../../typeGuards/token'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\n\nexport interface ForNode extends CommonSpecialExpressionNode<'for'> {\n l: LoopBindingNode[]\n}\n\nexport interface DoSeqNode extends CommonSpecialExpressionNode<'doseq'> {\n l: LoopBindingNode[]\n}\n\ntype LoopNode = ForNode | DoSeqNode\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.debugData?.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.debugData?.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.debugData?.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.debugData?.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.debugData?.token.debugData?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\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(params[0]!, newContextStack)\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: LoopNode,\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const newContext: Context = {}\n const { l: loopBindings } = node\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n findUnresolvedIdentifiers([binding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n findUnresolvedIdentifiers([letBinding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n findUnresolvedIdentifiers([whenNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n findUnresolvedIdentifiers([whileNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: ForNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n parse: (tokenStream, position, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: DoSeqNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface OrNode extends CommonSpecialExpressionNode<'or'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: OrNode = {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n return [newPosition + 1, node]\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { isNameNode } from '../../typeGuards/astNode'\nimport { assertAny } from '../../typeGuards/lits'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface QqNode extends CommonSpecialExpressionNode<'??'> {}\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: QqNode = {\n t: AstNodeType.SpecialExpression,\n n: '??',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 1, max: 2 }, node)\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.debugData?.token.debugData?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport { RecurSignal } from '../../errors'\nimport type { AstNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface RecurNode extends CommonSpecialExpressionNode<'recur'> {}\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: RecurNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport { UserDefinedError } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asString } from '../../typeGuards/string'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface ThrowNode extends CommonSpecialExpressionNode<'throw'> {}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n position = newPosition\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: ThrowNode = {\n t: AstNodeType.SpecialExpression,\n n: 'throw',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode(node.p[0]!, contextStack), node.debugData?.token.debugData?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node.debugData?.token.debugData?.sourceCodeInfo)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TimeNode extends CommonSpecialExpressionNode<'time!'> {}\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any, TimeNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: TimeNode = {\n t: AstNodeType.SpecialExpression,\n n: 'time!',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const param = node.p[0]!\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode, NameNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TryNode extends CommonSpecialExpressionNode<'try'> {\n e: NameNode\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n parse: (tokenStream, position, firstToken, { parseToken }) => {\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.debugData?.token.debugData?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, catchNode.debugData?.token.debugData?.sourceCodeInfo),\n )\n }\n\n let error: AstNode\n ;[position, error] = parseToken(tokenStream, position)\n assertNameNode(error, error.debugData?.token.debugData?.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 const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: error,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams(1, node)\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n try {\n return evaluateAstNode(tryExpressions[0]!, contextStack)\n }\n catch (error) {\n const newContext: Context = {\n [errorNode.v]: { value: asAny(error, node.debugData?.token.debugData?.sourceCodeInfo) },\n }\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n const tryResult = findUnresolvedIdentifiers(tryExpressions, contextStack, builtin)\n const newContext: Context = {\n [errorNode.v]: { value: true },\n }\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenNode extends CommonSpecialExpressionNode<'when'> {}\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any, WhenNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 1 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.debugData?.token.debugData?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\nimport { asToken } from '../../typeGuards/token'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenFirstNode extends CommonSpecialExpressionNode<'when-first'> {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any, WhenFirstNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\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.debugData?.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], firstToken.debugData?.sourceCodeInfo),\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node\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.debugData?.token.debugData?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asToken } from '../../typeGuards/token'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenLetNode extends CommonSpecialExpressionNode<'when-let'> {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any, WhenLetNode> = {\n parse: (tokenStream, position, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\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.debugData?.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], firstToken.debugData?.sourceCodeInfo),\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenNotNode extends CommonSpecialExpressionNode<'when-not'> {}\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any, WhenNotNode> = {\n parse: (tokenStream, position, firstToken, { parseTokensUntilClosingBracket }) => {\n const [newPosition, params] = parseTokensUntilClosingBracket(tokenStream, position)\n const lastToken = asToken(tokenStream.tokens[newPosition], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: WhenNotNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-not',\n p: params,\n debugData: firstToken.debugData && {\n token: firstToken,\n lastToken,\n },\n }\n\n assertNumberOfParams({ min: 1 }, node)\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.debugData?.token.debugData?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Builtin } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\n\nconst specialExpressions = {\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} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type BuiltinSpecialExpressions = typeof specialExpressions\nexport type BuiltinSpecialExpression = typeof specialExpressions[SpecialExpressionName]\nexport type SpecialExpressionNode = ReturnType<typeof specialExpressions[SpecialExpressionName]['parse']>[1]\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 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 type { SpecialExpressionName } from '../builtin'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue, LitsParams } 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 type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.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 ContextStackImpl({\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 clone(): ContextStack {\n // eslint-disable-next-line ts/no-unsafe-argument\n return new ContextStackImpl(JSON.parse(JSON.stringify({\n contexts: this.contexts,\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })))\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: NameNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = node.debugData?.token.debugData?.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 as SpecialExpressionName])\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.debugData?.token.debugData?.sourceCodeInfo)\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 ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack\n}\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 StringNode,\n} from '../parser/interface'\nimport type { SpecialExpressionNode } from '../builtin'\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 { removeCommenNodes } from '../removeCommentNodes'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n const safeAstNode = ast.hasDebugData ? JSON.parse(JSON.stringify(ast)) as Ast : ast\n if (safeAstNode.hasDebugData)\n removeCommenNodes(safeAstNode)\n for (const node of safeAstNode.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.debugData?.token.debugData?.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.debugData?.token.debugData?.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.debugData?.token.debugData?.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 = params[0]!\n return executeFunction(fn, params.slice(1), 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.debugData?.token.debugData?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, node.debugData?.token.debugData?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], node.debugData?.token.debugData?.sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpression.evaluate(node as any, 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 { Builtin } from '../builtin/interface'\nimport { AstNodeType } from '../constants/constants'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport { evaluateAstNode } from '../evaluator'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast) ? ast : ast.b\n\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n\n for (const subNode of astNodes) {\n findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n .forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n\n return unresolvedIdentifiers\n}\n\nfunction findUnresolvedIdentifiersInAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): UnresolvedIdentifiers {\n const emptySet = new Set<UnresolvedIdentifier>()\n switch (astNode.t) {\n case AstNodeType.Name: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return new Set([{ symbol: astNode.v, token: astNode.debugData?.token }])\n\n return emptySet\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedName:\n case AstNodeType.Comment:\n return emptySet\n case AstNodeType.NormalExpression: {\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n const { n: name, debugData: debug } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Name, v: name, debugData: debug, p: [], n: undefined })\n if (lookUpResult === null)\n unresolvedIdentifiers.add({ symbol: name, token: astNode.debugData?.token })\n }\n for (const subNode of astNode.p) {\n const innerUnresolvedIdentifiers = findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n innerUnresolvedIdentifiers.forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n return unresolvedIdentifiers\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], astNode.debugData?.token.debugData?.sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-argument\n const unresolvedIdentifiers = specialExpression.findUnresolvedIdentifiers(astNode as any, contextStack, {\n findUnresolvedIdentifiers,\n builtin,\n evaluateAstNode,\n })\n return unresolvedIdentifiers\n }\n }\n}\n","import type { AndNode } from '../../builtin/specialExpressions/and'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateAndOutcomes: CalculatePossibleAstNodesHelper<AndNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<AndNode>(p => ({\n n: 'and',\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }))\n}\n","import type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { AstNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport { arrayToPairs } from '../../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCondOutcomes: CalculatePossibleAstNodesHelper<CondNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n isAstComputable,\n}) => {\n const testNodes = arrayToPairs(astNode.p).map(([t]) => t!)\n if (isAstComputable(testNodes)) {\n return combinate(arrayToPairs(astNode.p)\n // Create a list of ast nodes from the test and form of each condition\n .reduce((acc: AstNode[][], [test, form]) => {\n acc.push(calculatePossibleAstNodes(test!), calculatePossibleAstNodes(form!))\n return acc\n }, []),\n )\n // Create a new CondNode for each combination of test and form outcomes\n .map<CondNode>(conditionAsts => ({\n ...astNode,\n c: arrayToPairs(conditionAsts).map(([t, f]) => ({ t: t!, f: f! })),\n }))\n }\n\n return [\n ...arrayToPairs(astNode.p).flatMap(([_, form]) => calculatePossibleAstNodes(form!)),\n nilNode,\n ]\n}\n","import type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { AstNode } from '../../parser/interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nconst trueNode: AstNode = { t: AstNodeType.ReservedName, v: 'true', debugData: undefined, p: [], n: undefined }\nconst falseNode: AstNode = { t: AstNodeType.ReservedName, v: 'false', debugData: undefined, p: [], n: undefined }\n\nexport const calculateDeclaredOutcomes: CalculatePossibleAstNodesHelper<DeclaredNode> = (\n {\n astNode,\n isAstComputable,\n },\n) => {\n if (isAstComputable(astNode.p))\n return [trueNode]\n\n return [trueNode, falseNode]\n}\n","import type { DefNode } from '../../builtin/specialExpressions/def'\nimport { asNameNode } from '../../typeGuards/astNode'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefOutcomes: CalculatePossibleAstNodesHelper<DefNode> = ({\n astNode,\n calculatePossibleAstNodes,\n addGlobalIdentifier,\n}) => {\n const nameNode = asNameNode(astNode.p[0])\n const valueNode = astNode.p[1]!\n addGlobalIdentifier(nameNode.v)\n return calculatePossibleAstNodes(valueNode)\n .map<DefNode>(node => ({\n ...astNode,\n p: [nameNode, node],\n }))\n}\n","import type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefsOutcomes: CalculatePossibleAstNodesHelper<DefsNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<DefsNode>(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDoOutcomes: CalculatePossibleAstNodesHelper<DoNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p).map<DoNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { FunctionOverload } from '../../builtin/utils'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper, CombinateAstNodes } from '.'\n\nfunction calculateFunctionOverloadOutcomes(combinateAstNodes: CombinateAstNodes, functionOverloads: FunctionOverload[]) {\n return combinate(functionOverloads\n // For each overload, calculate the possible outcomes for each parameter\n .map<FunctionOverload[]>(functionOverload =>\n combinateAstNodes(functionOverload.b, [\n functionOverload.as.m,\n functionOverload.as.b.map(bindingNode => bindingNode.n),\n functionOverload.as.r ?? [],\n ].flat())\n\n // For each combination of parameter outcomes, create a new overload\n .map<FunctionOverload>(body => ({\n ...functionOverload,\n b: body,\n })),\n ),\n // For each combination of overloads, create a new DefnNode\n )\n}\n\nexport const calculateDefnOutcomes: CalculatePossibleAstNodesHelper<DefnNode> = ({\n astNode,\n combinateAstNodes,\n addGlobalIdentifier,\n}) => {\n addGlobalIdentifier(astNode.f.v)\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n\nexport const calculateDefnsOutcomes: CalculatePossibleAstNodesHelper<DefnsNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculatePossibleAstNodes(astNode.f).flatMap(functionName =>\n calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnsNode>(functionOverloads => ({\n ...astNode,\n f: functionName,\n o: functionOverloads,\n })),\n )\n}\n\nexport const calculateFnOutcomes: CalculatePossibleAstNodesHelper<FnNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<FnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n","import type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfLetOutcomes: CalculatePossibleAstNodesHelper<IfLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n const thenBranch = astNode.p[0]!\n const elseBranch = astNode.p[1] ?? nilNode\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap<IfLetNode>(b => combinateAstNodes(astNode.p, [newIdentifier])\n .map<IfLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfNotOutcomes: CalculatePossibleAstNodesHelper<IfNotNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if-not',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfOutcomes: CalculatePossibleAstNodesHelper<IfNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { BindingNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLetOutcomes: CalculatePossibleAstNodesHelper<LetNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n try {\n // check bindings, if any binding value cannot be calculated, convert the whole let to a do-expression\n if (!isAstComputable(astNode.bs.map(b => calculatePossibleAstNodes(b.v))))\n throw new Error('Could not calculate binding value')\n }\n catch {\n const doNodes: DoNode[] = combinateAstNodes(astNode.p)\n .map((p) => {\n return {\n n: 'do',\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }\n })\n return doNodes\n }\n\n const newIdentifiers = astNode.bs.map(bindingNode => bindingNode.n)\n const letNodes: LetNode[] = combinate(\n astNode.bs.map<BindingNode[]>(bindingNode =>\n calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValues => ({ ...bindingNode, v: bindingValues })),\n ),\n )\n .flatMap(bindingNodes => combinate(astNode.p.map(p => calculatePossibleAstNodes(p, newIdentifiers)))\n .map((p) => {\n return {\n n: 'let',\n bs: bindingNodes,\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }\n }))\n\n return letNodes\n}\n","import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodes, CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateForOutcomes: CalculatePossibleAstNodesHelper<ForNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate for loop, not deterministic')\n\n return [astNode]\n}\n\nexport const calculateDoSeqOutcomes: CalculatePossibleAstNodesHelper<DoSeqNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate doSeq node, not deterministic')\n\n return [astNode]\n}\n\nfunction isDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: ForNode | DoSeqNode): boolean {\n for (const { b, l, wn, we } of astNode.l) {\n if (l && l.some(({ v }) => !astIsDeterministic(calculatePossibleAstNodes, v)))\n return false\n\n if (!astIsDeterministic(calculatePossibleAstNodes, b.v))\n return false\n\n if (wn && !astIsDeterministic(calculatePossibleAstNodes, wn))\n return false\n\n if (we && !astIsDeterministic(calculatePossibleAstNodes, we))\n return false\n }\n\n if (!astIsDeterministic(calculatePossibleAstNodes, astNode.p[0]!))\n return false\n\n return true\n}\n\nfunction astIsDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: AstNode) {\n return calculatePossibleAstNodes(astNode).length === 1\n}\n","import type { OrNode } from '../../builtin/specialExpressions/or'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateOrOutcomes: CalculatePossibleAstNodesHelper<OrNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<OrNode>(p => ({\n n: 'or',\n t: AstNodeType.SpecialExpression,\n p,\n debugData: astNode.debugData,\n }))\n}\n","import type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateQqOutcomes: CalculatePossibleAstNodesHelper<QqNode> = ({\n astNode,\n combinateAstNodes,\n isAstComputable,\n}) => {\n if (!isAstComputable(astNode.p[0]!))\n throw new Error('First argument of ?? not computable')\n\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateThrowOutcomes: CalculatePossibleAstNodesHelper<ThrowNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!).map<ThrowNode>(m => ({\n ...astNode,\n p: [m],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTimeOutcomes: CalculatePossibleAstNodesHelper<TimeNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!)\n .map<DoNode>(p => ({\n ...astNode,\n n: 'do',\n p: [p],\n }))\n}\n","import type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { AstNode } from '../../parser/interface'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTryOutcomes: CalculatePossibleAstNodesHelper<TryNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n const { vals, throws } = calculatePossibleAstNodes(astNode.p[0]!).reduce((acc: { vals: AstNode[], throws: AstNode[] }, node) => {\n if (node.n === 'throw') {\n acc.throws.push((node as ThrowNode).p[0]!)\n }\n else {\n acc.vals.push(node)\n }\n return acc\n }, { vals: [], throws: [] })\n\n const catches = throws.flatMap<AstNode>((throwNode) => {\n const letNode: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n bs: [{\n t: AstNodeType.Binding,\n n: astNode.e.v,\n v: throwNode,\n debugData: undefined,\n p: [],\n }],\n p: [astNode.ce],\n debugData: undefined,\n }\n return calculatePossibleAstNodes(letNode)\n })\n\n return [\n ...vals,\n ...catches,\n ]\n}\n","import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenFirstOutcomes: CalculatePossibleAstNodesHelper<WhenFirstNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v))\n throw new Error('Could not calculate binding value')\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenFirstNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenLetOutcomes: CalculatePossibleAstNodesHelper<WhenLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...combinateAstNodes(astNode.p)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n })),\n nilNode,\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenNotOutcomes: CalculatePossibleAstNodesHelper<WhenNotNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map<WhenNotNode>(p => ({\n n: 'when-not',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n })),\n nilNode,\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenOutcomes: CalculatePossibleAstNodesHelper<WhenNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'when',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n debugData: astNode.debugData,\n })),\n nilNode,\n ]\n}\n","import type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateRecurOutcomes: CalculatePossibleAstNodesHelper<RecurNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCommentOutcomes: CalculatePossibleAstNodesHelper<CommentExpressionNode> = ({\n nilNode,\n}) => {\n return [nilNode]\n}\n","import type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLoopOutcomes: CalculatePossibleAstNodesHelper<LoopNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p, astNode.bs.map(bindingNode => bindingNode.n))\n .map<LoopNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { SpecialExpressionName } from '../../builtin'\nimport type { AndNode } from '../../builtin/specialExpressions/and'\nimport type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { DefNode } from '../../builtin/specialExpressions/def'\nimport type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { OrNode } from '../../builtin/specialExpressions/or'\nimport type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { AstNode } from '../../parser/interface'\nimport { calculateAndOutcomes } from './calculateAndOutcomes'\nimport { calculateCondOutcomes } from './calculateCondOutcomes'\nimport { calculateDeclaredOutcomes } from './calculateDeclaredOutcomes'\nimport { calculateDefOutcomes } from './calculateDefOutcomes'\nimport { calculateDefsOutcomes } from './calculateDefsOutcomes'\nimport { calculateDoOutcomes } from './calculateDoOutcomes'\nimport { calculateDefnOutcomes, calculateDefnsOutcomes, calculateFnOutcomes } from './calculateFunctionOutcomes'\nimport { calculateIfLetOutcomes } from './calculateIfLetOutcomes'\nimport { calculateIfNotOutcomes } from './calculateIfNotOutcomes'\nimport { calculateIfOutcomes } from './calculateIfOutcomes'\nimport { calculateLetOutcomes } from './calculateLetOutcomes'\nimport { calculateDoSeqOutcomes, calculateForOutcomes } from './calculateLoopsOutcomes'\nimport { calculateOrOutcomes } from './calculateOrOutcomes'\nimport { calculateQqOutcomes } from './calculateQqOutcomes'\nimport { calculateThrowOutcomes } from './calculateThrowOutcomes'\nimport { calculateTimeOutcomes } from './calculateTimeOutcomes'\nimport { calculateTryOutcomes } from './calculateTryOutcomes'\nimport { calculateWhenFirstOutcomes } from './calculateWhenFirstOutcomes'\nimport { calculateWhenLetOutcomes } from './calculateWhenLetOutcomes'\nimport { calculateWhenNotOutcomes } from './calculateWhenNotOutcomes'\nimport { calculateWhenOutcomes } from './calculateWhenOutcomes'\nimport { calculateRecurOutcomes } from './calculateRecurOutcomes'\nimport { calculateCommentOutcomes } from './calculateCommentOutcomes'\nimport { calculateLoopOutcomes } from './calculateLoopOutcomes'\nimport type { CalculatePossibleAstNodesHelperOptions } from '.'\n\nexport const specialExpressionCalculator = {\n 'and': (astNode: AndNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateAndOutcomes({ astNode, ...helperOptions }),\n 'comment': (astNode: CommentExpressionNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCommentOutcomes({ astNode, ...helperOptions }),\n 'cond': (astNode: CondNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCondOutcomes({ astNode, ...helperOptions }),\n 'declared?': (astNode: DeclaredNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDeclaredOutcomes({ astNode, ...helperOptions }),\n 'defn': (astNode: DefnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnOutcomes({ astNode, ...helperOptions }),\n 'def': (astNode: DefNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefOutcomes({ astNode, ...helperOptions }),\n 'defns': (astNode: DefnsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnsOutcomes({ astNode, ...helperOptions }),\n 'defs': (astNode: DefsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefsOutcomes({ astNode, ...helperOptions }),\n 'do': (astNode: DoNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoOutcomes({ astNode, ...helperOptions }),\n 'doseq': (astNode: DoSeqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoSeqOutcomes({ astNode, ...helperOptions }),\n 'fn': (astNode: FnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateFnOutcomes({ astNode, ...helperOptions }),\n 'for': (astNode: ForNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateForOutcomes({ astNode, ...helperOptions }),\n 'if-let': (astNode: IfLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfLetOutcomes({ astNode, ...helperOptions }),\n 'if': (astNode: IfNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfOutcomes({ astNode, ...helperOptions }),\n 'if-not': (astNode: IfNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfNotOutcomes({ astNode, ...helperOptions }),\n 'let': (astNode: LetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLetOutcomes({ astNode, ...helperOptions }),\n 'loop': (astNode: LoopNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLoopOutcomes({ astNode, ...helperOptions }),\n 'or': (astNode: OrNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateOrOutcomes({ astNode, ...helperOptions }),\n '??': (astNode: QqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateQqOutcomes({ astNode, ...helperOptions }),\n 'recur': (astNode: RecurNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateRecurOutcomes({ astNode, ...helperOptions }),\n 'time!': (astNode: TimeNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTimeOutcomes({ astNode, ...helperOptions }),\n 'throw': (astNode: ThrowNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateThrowOutcomes({ astNode, ...helperOptions }),\n 'try': (astNode: TryNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTryOutcomes({ astNode, ...helperOptions }),\n 'when-first': (astNode: WhenFirstNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenFirstOutcomes({ astNode, ...helperOptions }),\n 'when-let': (astNode: WhenLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenLetOutcomes({ astNode, ...helperOptions }),\n 'when': (astNode: WhenNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenOutcomes({ astNode, ...helperOptions }),\n 'when-not': (astNode: WhenNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenNotOutcomes({ astNode, ...helperOptions }),\n\n} satisfies Record<SpecialExpressionName, unknown>\n","import type { Outcomes } from '..'\nimport { builtin } from '../../builtin'\nimport { AstNodeType } from '../../constants/constants'\nimport { evaluate } from '../../evaluator'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context } from '../../evaluator/interface'\nimport type { Ast, AstNode } from '../../parser/interface'\nimport { findUnresolvedIdentifiers } from '../findUnresolvedIdentifiers'\nimport { combinate } from '../utils'\nimport { specialExpressionCalculator } from './specialExpressionCalculators'\n\nexport type CalculatePossibleAstNodes = (astNode: AstNode, indentifiers?: string[]) => AstNode[]\nexport type CombinateAstNodes = (astNodes: AstNode[], indentifiers?: string[]) => AstNode[][]\nexport type IsAstComputable = (node: AstNode | AstNode[] | AstNode[][]) => boolean\nexport type AddGlobaleIdentifier = (name: string) => void\n\nexport interface CalculatePossibleAstNodesHelperOptions<T extends AstNode> {\n astNode: T\n nilNode: AstNode\n calculatePossibleAstNodes: CalculatePossibleAstNodes\n combinateAstNodes: CombinateAstNodes\n isAstComputable: IsAstComputable\n addGlobalIdentifier: AddGlobaleIdentifier\n}\n\nexport type CalculatePossibleAstNodesHelper<T extends AstNode> = (\n options: CalculatePossibleAstNodesHelperOptions<T>,\n) => AstNode[]\n\nfunction isIdempotent(normalExpressionName: string): boolean {\n return !normalExpressionName.endsWith('!')\n || normalExpressionName === 'write!'\n}\n\nexport function calculateOutcomes(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n // First, we try to calculate outcomes for the whole astNodes array.\n // If that fails, we try to calculate outcomes for the array without the first element.\n // If that fails, we try to calculate outcomes for the array without the first two elements.\n // And so on.\n\n // This makes it possible to calculate outcomes for e.g.\n // (write! x) x\n\n // Problems occur for e.g.\n // (def x 1) (write! x) x\n // This should output [1], but since (write! x) fails to calculate outcomes, we get null.\n\n // Ok, but not optimal\n // The contract is that when an array is returned, it must be correct.\n // But returning null (indicating that the calculation failed) is always a way out.\n for (let i = 0; i < astNodes.length; i++) {\n const usingAstNode = astNodes.slice(i)\n const outcomes = calculateOutcomesInner(contextStack, usingAstNode)\n if (outcomes !== null)\n return outcomes\n }\n return null\n}\n\nexport function calculateOutcomesInner(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n const possibleAsts = calculatePossibleAsts(contextStack.clone(), astNodes)\n\n if (possibleAsts === null)\n return null\n\n const outcomes: Outcomes = []\n\n for (const possibleAst of possibleAsts) {\n const unresolvedIdentifiers = findUnresolvedIdentifiers(possibleAst, contextStack.clone(), builtin)\n if (unresolvedIdentifiers.size !== 0)\n return null\n\n const ast: Ast = {\n b: possibleAst,\n hasDebugData: true,\n }\n try {\n outcomes.push(evaluate(ast, contextStack.clone()))\n }\n catch (e) {\n outcomes.push(e)\n }\n }\n\n return outcomes\n}\n\nfunction calculatePossibleAsts(contextStack: ContextStack, astNodes: AstNode[]): AstNode[][] | null {\n let possibleAsts: AstNode[][]\n\n try {\n possibleAsts = combinate(\n astNodes.map(\n astNode => calculatePossibleAstNodes(contextStack, astNode),\n ),\n )\n }\n catch (e) {\n return null\n }\n return possibleAsts\n}\n\nconst nilNode: AstNode = { t: AstNodeType.ReservedName, v: 'nil', debugData: undefined, p: [], n: undefined }\n\nfunction calculatePossibleAstNodes(contextStack: ContextStack, astNode: AstNode, newIndentifiers?: string[]): AstNode[] {\n const newContext = newIndentifiers\n ? newIndentifiers.reduce((acc: Context, identity) => {\n acc[identity] = { value: null }\n return acc\n }, {})\n : undefined\n const newContextStack = newContext ? contextStack.create(newContext) : contextStack\n\n if (astNode.t === AstNodeType.NormalExpression) {\n if (astNode.n && !isIdempotent(astNode.n))\n throw new Error(`NormalExpressionNode with name ${astNode.n} is not idempotent. Cannot calculate possible ASTs.`)\n\n return combinate(astNode.p.map(n => calculatePossibleAstNodes(newContextStack, n)))\n .map(p => ({ ...astNode, p }))\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n const helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'> = {\n nilNode,\n calculatePossibleAstNodes: (node: AstNode, identifiers?: string[]) => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers),\n combinateAstNodes: (nodes: AstNode[], identifiers?: string[]) =>\n combinate(nodes.map(node => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers))),\n isAstComputable: (node: AstNode | AstNode[] | AstNode[][]) =>\n calculateOutcomesInner(newContextStack, Array.isArray(node) ? node.flat() : [node]) !== null,\n addGlobalIdentifier: (name: string) => newContextStack.globalContext[name] = { value: null },\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpressionCalculator[astNode.n](astNode as any, helperOptions)\n }\n return [astNode]\n}\n","import type { LitsParams } from '../Lits/Lits'\nimport { builtin } from '../builtin'\nimport type { Builtin } from '../builtin/interface'\nimport { type ContextStack, createContextStack } from '../evaluator/ContextStack'\nimport type { Ast, AstNode } from '../parser/interface'\nimport type { Token } from '../tokenizer/interface'\nimport { calculateOutcomes } from './calculateOutcomes'\nimport { findUnresolvedIdentifiers } from './findUnresolvedIdentifiers'\n\nexport interface UnresolvedIdentifier {\n symbol: string\n token: Token | undefined\n}\n\n// A set of unresolved identifiers\nexport type UnresolvedIdentifiers = Set<UnresolvedIdentifier>\n\n// A set of potential outcomes from evaluating the AST\nexport type Outcomes = unknown[]\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n outcomes: Outcomes | null\n}\n\n// A function that finds unresolved identifiers in an AST node or array of AST nodes\nexport type FindUnresolvedIdentifiers = (ast: Ast | AstNode[], contextStack: ContextStack, builtin: Builtin) => UnresolvedIdentifiers\n\nexport function analyze(ast: Ast, params: LitsParams): Analysis {\n return {\n unresolvedIdentifiers: findUnresolvedIdentifiers(ast, createContextStack(params), builtin),\n outcomes: calculateOutcomes(createContextStack(params), ast.b),\n }\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { 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 { withoutCommentNodes } from '../removeCommentNodes'\nimport type { ReservedName } from '../reservedNames'\nimport type { Token, TokenStream } from '../tokenizer/interface'\nimport { asNonUndefined, assertEvenNumberOfParams, 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 CommentNode,\n ModifierName,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ParseArgument,\n ParseExpression,\n ReservedNameNode,\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 [\n position + 1,\n {\n t: AstNodeType.Number,\n v: Number(tkn.v),\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseString(tokenStream: TokenStream, position: number): [number, StringNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.String,\n v: tkn.v,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseName(tokenStream: TokenStream, position: number): [number, NameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.Name,\n v: tkn.v,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\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 {\n t: AstNodeType.ReservedName,\n v: tkn.v as ReservedName,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseComment(tokenStream: TokenStream, position: number): [number, CommentNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n {\n t: AstNodeType.Comment,\n v: tkn.v as ReservedName,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? { token: tkn, lastToken: tkn }\n : undefined,\n },\n ]\n}\n\nfunction parseTokensUntilClosingBracket(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 const tkn = asToken(tokenStream.tokens[position + 1], tokenStream.filePath)\n if (tkn.t === TokenType.Name && builtin.specialExpressions[tkn.v as SpecialExpressionName])\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 debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : 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 debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: tkn,\n }\n : undefined,\n }\n\n assertEvenNumberOfParams(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 p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n }\n\n assertNonUndefined(tkn.o, tkn.debugData?.sourceCodeInfo)\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: `${tkn.o.g ? 'g' : ''}${tkn.o.i ? 'i' : ''}`,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n }\n\n return [\n position + 1,\n node,\n ]\n}\n\nconst placeholderRegexp = /^%([1-9]\\d?)?$/\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.debugData?.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.debugData?.sourceCodeInfo)\n }\n }\n if (tkn.t === TokenType.FnShorthand)\n throw new LitsError('Nested shortcut functions are not allowed', firstToken.debugData?.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 debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: exprNode.debugData!.lastToken,\n }\n : 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 [\n position + 1,\n {\n t: AstNodeType.Argument,\n n: tkn.v,\n p: [],\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n },\n ]\n }\n else if (tkn.t === TokenType.Modifier) {\n const value = tkn.v as ModifierName\n return [\n position + 1,\n {\n t: AstNodeType.Modifier,\n v: value,\n p: [],\n n: undefined,\n debugData: tkn.debugData?.sourceCodeInfo\n ? {\n token: tkn,\n lastToken: tkn,\n }\n : undefined,\n },\n ]\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, tkn.debugData?.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 p: [],\n debugData: firstToken.debugData?.sourceCodeInfo\n ? {\n token: firstToken,\n lastToken: value.debugData!.lastToken,\n }\n : undefined,\n }\n return [position, node]\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, position: number): [number, NormalExpressionNode] {\n const startBracketToken = tokenStream.hasDebugData ? asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' }) : undefined\n position += 1\n const [newPosition, fnNode] = parseToken(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokensUntilClosingBracket(tokenStream, newPosition)\n\n const lastToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n p: [fnNode, ...params],\n n: undefined,\n debugData: startBracketToken\n ? {\n token: startBracketToken,\n lastToken,\n }\n : undefined,\n }\n\n return [position, node]\n }\n\n assertNameNode(fnNode, fnNode.debugData?.token.debugData?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n debugData: startBracketToken\n ? {\n token: startBracketToken,\n nameToken: fnNode.debugData?.token,\n lastToken,\n }\n : undefined,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\n }\n\n return [position, node]\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, position: number): [number, SpecialExpressionNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' })\n position += 1\n const nameToken = asToken(\n tokenStream.tokens[position],\n tokenStream.filePath,\n { type: TokenType.Name },\n )\n const { v: expressionName, debugData } = nameToken\n position += 1\n\n const { parse } = asNonUndefined(builtin.specialExpressions[expressionName as SpecialExpressionName], debugData?.sourceCodeInfo)\n\n const [positionAfterParse, node] = parse(tokenStream, position, firstToken, {\n parseExpression,\n parseTokensUntilClosingBracket,\n parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n if (node.debugData)\n node.debugData.nameToken = nameToken\n\n return [positionAfterParse, node]\n}\n\nexport function parseToken(tokenStream: TokenStream, position: number): [number, AstNode] {\n const tkn = getNextParsableToken(tokenStream, position)\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.Comment:\n return parseComment(tokenStream, position)\n case TokenType.CollectionAccessor:\n case TokenType.Modifier:\n case TokenType.NewLine:\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.debugData?.sourceCodeInfo)\n}\n\nfunction getNextParsableToken(tokenStream: TokenStream, position: number): Token {\n let token = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (token.t === TokenType.NewLine) {\n position += 1\n token = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return token\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 hasDebugData: tokenStream.hasDebugData,\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 debugData = dotTkn.debugData\n const backPosition = getPositionBackwards(tokenStream, position, debugData?.sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, debugData?.sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, {\n t: TokenType.Bracket,\n v: '(',\n debugData,\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 debugData: nextTkn.debugData,\n }\n }\n else {\n assertNumber(Number(nextTkn.v), debugData?.sourceCodeInfo, { integer: true, nonNegative: true })\n tokenStream.tokens[position + 1] = {\n t: TokenType.Number,\n v: nextTkn.v,\n debugData: nextTkn.debugData,\n }\n }\n tokenStream.tokens.splice(position + 2, 0, {\n t: TokenType.Bracket,\n v: ')',\n debugData,\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 { Token, TokenDebugData, TokenDescriptor, Tokenizer } from './interface'\n\nconst NO_MATCH: TokenDescriptor = [0, undefined]\n\nexport const nameCharacters = '[\\\\w@%^?=!$<>+*/-]'\n\nconst nameRegExp = new RegExp(nameCharacters)\nconst whitespaceRegExp = /\\s|,/\nconst newLineRegExp = /\\n/\n\nexport const tokenizeNewLine: Tokenizer = (input, current, debugData) =>\n newLineRegExp.test(input[current] as string)\n ? [1, { t: TokenType.NewLine, v: '\\n', debugData }]\n : NO_MATCH\n\nexport const tokenizeComment: Tokenizer = (input, current, debugData) => {\n if (input[current] === ';') {\n let length = 0\n let value = ''\n while (input[current + length] !== '\\n' && current + length < input.length) {\n value += input[current + length]\n length += 1\n }\n\n if (input[current + length] === '\\n' && current + length < input.length)\n length += 1\n\n return [length, { t: TokenType.Comment, v: value.trim(), debugData }]\n }\n return NO_MATCH\n}\n\nexport const skipWhiteSpace: Tokenizer = (input, current) =>\n whitespaceRegExp.test(input[current] as string) ? [1, undefined] : NO_MATCH\n\nexport const tokenizeLeftParen: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '(', input, position, debugData)\nexport const tokenizeRightParen: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, ')', input, position, debugData)\nexport const tokenizeLeftBracket: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '[', input, position, debugData)\nexport const tokenizeRightBracket: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, ']', input, position, debugData)\nexport const tokenizeLeftCurly: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '{', input, position, debugData)\nexport const tokenizeRightCurly: Tokenizer = (input, position, debugData) =>\n tokenizeCharacter(TokenType.Bracket, '}', input, position, debugData)\n\nexport const tokenizeString: Tokenizer = (input, position, debugData) => {\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}.`, debugData?.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, debugData }]\n}\n\nexport const tokenizeCollectionAccessor: Tokenizer = (input, position, debugData) => {\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 debugData,\n },\n ]\n}\n\nexport const tokenizeSymbolString: Tokenizer = (input, position, debugData) => {\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, debugData, o: { s: true } } satisfies Token]\n}\n\nexport const tokenizeRegexpShorthand: Tokenizer = (input, position, debugData) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1, debugData)\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}.`, debugData?.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}.`, debugData?.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}.`, debugData?.sourceCodeInfo)\n\n return [\n length,\n {\n t: TokenType.RegexpShorthand,\n v: token.v,\n o: options,\n debugData,\n },\n ]\n}\n\nexport const tokenizeFnShorthand: Tokenizer = (input, position, debugData) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.FnShorthand,\n v: '#',\n debugData,\n },\n ]\n}\n\nconst endOfNumberRegExp = /[\\s)\\]},#]/\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeNumber: Tokenizer = (input, position, debugData) => {\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], debugData?.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, debugData }]\n}\n\nexport const tokenizeReservedName: Tokenizer = (input, position, debugData) => {\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.substring(position, position + length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, debugData?.sourceCodeInfo)\n\n return [length, { t: TokenType.ReservedName, v: reservedName, debugData }]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeName: Tokenizer = (input, position, debugData) =>\n tokenizePattern(TokenType.Name, nameRegExp, input, position, debugData)\n\nexport const tokenizeModifier: Tokenizer = (input, position, debugData) => {\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.substring(position, position + length) === modifier && (!charAfterModifier || !nameRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifier\n return [length, { t: TokenType.Modifier, v: value, debugData }]\n }\n }\n return NO_MATCH\n}\n\nfunction tokenizeCharacter(\n type: TokenType,\n value: string,\n input: string,\n position: number,\n debugData?: TokenDebugData,\n): TokenDescriptor {\n if (value === input[position])\n return [1, { t: type, v: value, debugData }]\n else\n return NO_MATCH\n}\n\nfunction tokenizePattern(\n type: TokenType,\n pattern: RegExp,\n input: string,\n position: number,\n debugData?: TokenDebugData,\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, debugData }]\n}\n","import { TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { MetaToken, SourceCodeInfo, Token, TokenDebugData, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { getSugar } from './sugar'\nimport {\n skipWhiteSpace,\n tokenizeCollectionAccessor,\n tokenizeComment,\n tokenizeFnShorthand,\n tokenizeLeftBracket,\n tokenizeLeftCurly,\n tokenizeLeftParen,\n tokenizeModifier,\n tokenizeName,\n tokenizeNewLine,\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 skipWhiteSpace,\n tokenizeComment,\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.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const debug = !!params.debug\n const tokens: Token[] = []\n let position = 0\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n let leadingNewLineTokens: MetaToken[]\n [position, leadingNewLineTokens] = readLeadingNewLineTokens(input, position, params)\n if (position >= input.length)\n break\n\n let leadingCommentTokens: MetaToken[]\n [position, leadingCommentTokens] = readLeadingCommentTokens(input, position, params)\n if (position >= input.length)\n break\n\n const leadingMetaTokens: MetaToken[] = [...leadingNewLineTokens, ...leadingCommentTokens]\n\n // Loop through all tokenizer until one matches\n const debugData: TokenDebugData | undefined = debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens },\n }\n : undefined\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n let inlineCommentToken: Token<TokenType.Comment> | null = null\n if (!isCommentToken(token))\n [position, inlineCommentToken] = readInlineCommentToken(input, position, params)\n\n if (token.debugData)\n token.debugData.metaTokens.inlineCommentToken = inlineCommentToken\n\n if (!isCommentToken(token) || debug)\n tokens.push(token)\n }\n\n break\n }\n }\n if (!tokenized)\n throw new LitsError(`Unrecognized character '${input[position]}'.`, debugData?.sourceCodeInfo)\n }\n\n const tokenStream: TokenStream = {\n tokens,\n filePath: params.filePath,\n hasDebugData: debug,\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\nconst newLineTokenizers = [\n tokenizeNewLine,\n skipWhiteSpace,\n]\n\nfunction readLeadingNewLineTokens(input: string, position: number, params: TokenizeParams): [number, MetaToken[]] {\n const newLineTokens: Token<TokenType.NewLine>[] = []\n\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n const debugData: TokenDebugData | undefined = params.debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens: [] },\n }\n : undefined\n\n // Loop through all tokenizer until one matches\n for (const tokenizer of newLineTokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n assertNewLineToken(token)\n\n if (newLineTokens.length < 2)\n newLineTokens.push(token)\n }\n break\n }\n }\n if (!tokenized)\n // All newline tokens read!\n return [position, newLineTokens]\n }\n // Ending up here means that no non newline token was found. I.e. this cannot be leading newline tokens\n return [position, []]\n}\n\nconst metaTokenizers = [\n tokenizeNewLine,\n skipWhiteSpace,\n tokenizeComment,\n]\n\nfunction readLeadingCommentTokens(input: string, position: number, params: TokenizeParams): [number, MetaToken[]] {\n const commentTokens: Token<TokenType.Comment>[] = []\n\n const rollbackPosition = position\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n const debugData: TokenDebugData | undefined = params.debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens: [] },\n }\n : undefined\n\n // Loop through all tokenizer until one matches\n for (const tokenizer of metaTokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n assertMetaToken(token)\n\n // If a newline token is found, then this is not a leading comment\n if (isNewLineToken(token))\n return [rollbackPosition, []]\n\n commentTokens.push(token)\n }\n break\n }\n }\n if (!tokenized)\n // All metatokens read!\n return [position, commentTokens]\n }\n // Ending up here means that no non meta token was found. I.e. this cannot be leading meta tokens\n return [rollbackPosition, []]\n}\n\nconst commentTokenizers = [\n tokenizeNewLine,\n skipWhiteSpace,\n tokenizeComment,\n]\n\nfunction readInlineCommentToken(input: string, position: number, params: TokenizeParams): [number, Token<TokenType.Comment> | null] {\n const rollbackPosition = position\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n const debugData: TokenDebugData | undefined = params.debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n metaTokens: { inlineCommentToken: null, leadingMetaTokens: [] },\n }\n : undefined\n\n // Loop through all tokenizer until one matches\n for (const tokenizer of commentTokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, debugData)\n\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token) {\n if (isNewLineToken(token))\n return [rollbackPosition, null]\n assertCommentToken(token)\n return [position, token]\n }\n break\n }\n }\n if (!tokenized)\n // All metatokens read! Return undefined if not debug mode\n return [rollbackPosition, null]\n }\n // Ending up here means that no comment token was found and end of tokens reached\n return [position, null]\n}\n\nexport function isMetaToken(token?: Token): token is MetaToken {\n return !!token && (token.t === TokenType.NewLine || token.t === TokenType.Comment)\n}\n\nexport function assertMetaToken(token?: Token): asserts token is MetaToken {\n if (!isMetaToken(token))\n throw new LitsError(`Expected meta token, got ${token?.t}.`)\n}\n\nexport function isCommentToken(token?: Token): token is Token<TokenType.Comment> {\n return !!token && token.t === TokenType.Comment\n}\n\nexport function assertCommentToken(token?: Token): asserts token is Token<TokenType.Comment> {\n if (!isCommentToken(token))\n throw new LitsError(`Expected comment token, got ${token?.t}.`)\n}\n\nexport function isNewLineToken(token?: Token): token is Token<TokenType.NewLine> {\n return !!token && token.t === TokenType.NewLine\n}\n\nexport function assertNewLineToken(token?: Token): asserts token is Token<TokenType.NewLine> {\n if (!isNewLineToken(token))\n throw new LitsError(`Expected newline token, got ${token?.t}.`)\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 type { Analysis } from '../analyze'\nimport { analyze } from '../analyze'\nimport { evaluate } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream, TokenizeParams } 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 debug?: boolean\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)\n return this.evaluate(ast, params)\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string, params: LitsParams = {}): Analysis {\n const ast = this.generateAst(program, params)\n\n return analyze(ast, params)\n }\n\n public tokenize(program: string, tokenizeParams: TokenizeParams = {}): TokenStream {\n return tokenize(program, { ...tokenizeParams, debug: tokenizeParams.debug ?? this.debug })\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n public 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)\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(program: string, params: LitsParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, { debug: params.debug ?? this.debug, filePath: params.filePath })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n"],"names":["AstNodeType","TokenType","FunctionType","isLitsFunction","isUnknownRecord","isToken","isAstNode","analyze"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"lits.iife.js","sources":["../src/constants/constants.ts","../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/tokenizer/utils.ts","../src/tokenizer/common/commonTokens.ts","../src/tokenizer/algebraic/algebraicTokens.ts","../src/tokenizer/polish/polishTokens.ts","../src/tokenizer/tokens.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/removeCommentNodes/removeCommentNodesFromSpecialExpression.ts","../src/removeCommentNodes/index.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/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/and.ts","../src/builtin/specialExpressions/comment.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/declared.ts","../src/tokenizer/polish/polishReservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/analyze/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/time.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.ts","../src/builtin/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/analyze/findUnresolvedIdentifiers.ts","../src/analyze/calculateOutcomes/calculateAndOutcomes.ts","../src/analyze/calculateOutcomes/calculateCondOutcomes.ts","../src/analyze/calculateOutcomes/calculateDeclaredOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefOutcomes.ts","../src/analyze/calculateOutcomes/calculateDefsOutcomes.ts","../src/analyze/calculateOutcomes/calculateDoOutcomes.ts","../src/analyze/calculateOutcomes/calculateFunctionOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateIfOutcomes.ts","../src/analyze/calculateOutcomes/calculateLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopsOutcomes.ts","../src/analyze/calculateOutcomes/calculateOrOutcomes.ts","../src/analyze/calculateOutcomes/calculateQqOutcomes.ts","../src/analyze/calculateOutcomes/calculateThrowOutcomes.ts","../src/analyze/calculateOutcomes/calculateTimeOutcomes.ts","../src/analyze/calculateOutcomes/calculateTryOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenFirstOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenLetOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenNotOutcomes.ts","../src/analyze/calculateOutcomes/calculateWhenOutcomes.ts","../src/analyze/calculateOutcomes/calculateRecurOutcomes.ts","../src/analyze/calculateOutcomes/calculateCommentOutcomes.ts","../src/analyze/calculateOutcomes/calculateLoopOutcomes.ts","../src/analyze/calculateOutcomes/specialExpressionCalculators.ts","../src/analyze/calculateOutcomes/index.ts","../src/analyze/index.ts","../src/parser/commonTokenParsers.ts","../src/parser/AlgebraicParser.ts","../src/parser/PolishTokenParsers.ts","../src/parser/index.ts","../src/identifier.ts","../src/tokenizer/common/commonTokenizers.ts","../src/tokenizer/polish/polishTokenizers.ts","../src/tokenizer/algebraic/algebraicReservedNames.ts","../src/tokenizer/algebraic/algebraicTokenizers.ts","../src/tokenizer/sugar/applyCollectionAccessor.ts","../src/tokenizer/sugar/index.ts","../src/tokenizer/index.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../reference/categories/collection.ts","../reference/categories/functional.ts","../reference/categories/array.ts","../reference/categories/sequence.ts","../reference/categories/math.ts","../reference/categories/misc.ts","../reference/categories/assert.ts","../reference/categories/object.ts","../reference/categories/predicate.ts","../reference/categories/regularExpression.ts","../reference/categories/specialExpressions.ts","../reference/categories/string.ts","../reference/categories/bitwise.ts","../reference/shorthand.ts","../reference/datatype.ts","../reference/index.ts","../reference/api.ts"],"sourcesContent":["export enum AstNodeType {\n Number = 201,\n String = 202,\n NormalExpression = 203,\n SpecialExpression = 204,\n Symbol = 205,\n Modifier = 206,\n ReservedSymbol = 207,\n Binding = 208,\n Argument = 209,\n Partial = 210,\n Comment = 211,\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.Symbol, 'Name'],\n [AstNodeType.Modifier, 'Modifier'],\n [AstNodeType.ReservedSymbol, '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 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","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/interface'\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 | undefined) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${fn}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from './interface'\nimport type { Token, TokenType } from './tokens'\n\nexport type TokenDebugData = {\n sourceCodeInfo: SourceCodeInfo\n}\n\nfunction isTokenDebugData(tokenDebugData: unknown): tokenDebugData is TokenDebugData {\n return (\n typeof tokenDebugData === 'object'\n && tokenDebugData !== null\n && 'sourceCodeInfo' in tokenDebugData\n )\n}\n\nexport function getTokenDebugData(token?: Token): TokenDebugData | undefined {\n const debugData = token?.at(-1)\n return isTokenDebugData(debugData) ? debugData : undefined\n}\n\nexport function hasTokenDebugData(token?: Token): boolean {\n return isTokenDebugData(token?.at(-1))\n}\n\nexport function addTokenDebugData(token: Token, debugData: TokenDebugData): void {\n if (isTokenDebugData(token.at(-1))) {\n throw new Error(`Token already has debug data: ${token}`)\n }\n ;(token as unknown[]).push(debugData)\n}\n\nexport function throwUnexpectedToken(expected: TokenType, actual?: Token): never {\n throw new LitsError(`Unexpected token: ${actual}, expected ${expected}`, undefined)\n}\n","import { type TokenDebugData, throwUnexpectedToken } from '../utils'\nimport type { Token } from '../tokens'\n\nexport const commonSimpleTokenTypes = [\n 'LBrace',\n 'LBracket',\n 'LParen',\n 'RBrace',\n 'RBracket',\n 'RParen',\n 'AlgNotation',\n 'PolNotation',\n 'EndNotation',\n] as const\n\nexport const commomValueTokenTypes = [\n 'String',\n] as const\n\nexport type CommonSimpleTokenType = typeof commonSimpleTokenTypes[number]\nexport type CommonValueTokenType = typeof commomValueTokenTypes[number]\n\ntype GenericCommonSimpleToken<T extends CommonSimpleTokenType> = [T] | [T, TokenDebugData]\ntype GenericCommonValueToken<T extends CommonValueTokenType, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type LParenToken = GenericCommonSimpleToken<'LParen'>\nexport type RParenToken = GenericCommonSimpleToken<'RParen'>\nexport type LBracketToken = GenericCommonSimpleToken<'LBracket'>\nexport type RBracketToken = GenericCommonSimpleToken<'RBracket'>\nexport type LBraceToken = GenericCommonSimpleToken<'LBrace'>\nexport type RBraceToken = GenericCommonSimpleToken<'RBrace'>\nexport type AlgebraicNotationToken = GenericCommonSimpleToken<'AlgNotation'>\nexport type PolishNotationToken = GenericCommonSimpleToken<'PolNotation'>\nexport type EndNotationToken = GenericCommonSimpleToken<'EndNotation'>\n\nexport type StringToken = GenericCommonValueToken<'String'>\n\nexport type CommonSimpleToken =\n | LParenToken\n | RParenToken\n | LBracketToken\n | RBracketToken\n | LBraceToken\n | RBraceToken\n | AlgebraicNotationToken\n | PolishNotationToken\n | EndNotationToken\n\nexport type CommonValueToken =\n | StringToken\n\nexport function isLParenToken(token?: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token?: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', token)\n }\n}\nexport function asLParenToken(token?: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token?: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token?: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', token)\n }\n}\nexport function asRParenToken(token?: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token?: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token?: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', token)\n }\n}\nexport function asLBracketToken(token?: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token?: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token?: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', token)\n }\n}\nexport function asRBracketToken(token?: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token?: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token?: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', token)\n }\n}\nexport function asLBraceToken(token?: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token?: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token?: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', token)\n }\n}\nexport function asRBraceToken(token?: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token?: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token?: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', token)\n }\n}\nexport function asStringToken(token?: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isAlgebraicNotationToken(token?: Token): token is AlgebraicNotationToken {\n return token?.[0] === 'AlgNotation'\n}\nexport function assertAlgebraicNotationToken(token?: Token): asserts token is AlgebraicNotationToken {\n if (!isAlgebraicNotationToken(token)) {\n throwUnexpectedToken('AlgNotation', token)\n }\n}\nexport function asAlgebraicNotationToken(token?: Token): AlgebraicNotationToken {\n assertAlgebraicNotationToken(token)\n return token\n}\n\nexport function isPolishNotationToken(token?: Token): token is PolishNotationToken {\n return token?.[0] === 'PolNotation'\n}\nexport function assertPolishNotationToken(token?: Token): asserts token is PolishNotationToken {\n if (!isPolishNotationToken(token)) {\n throwUnexpectedToken('PolNotation', token)\n }\n}\nexport function asPolishNotationToken(token?: Token): PolishNotationToken {\n assertPolishNotationToken(token)\n return token\n}\n\nexport function isEndNotationToken(token?: Token): token is EndNotationToken {\n return token?.[0] === 'EndNotation'\n}\nexport function assertEndNotationToken(token?: Token): asserts token is EndNotationToken {\n if (!isEndNotationToken(token)) {\n throwUnexpectedToken('EndNotation', token)\n }\n}\nexport function asEndNotationToken(token?: Token): EndNotationToken {\n assertEndNotationToken(token)\n return token\n}\n","import { LitsError } from '../../errors'\nimport type { CommonSimpleToken, CommonValueToken, CommonValueTokenType } from '../common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from '../common/commonTokens'\nimport type { Token } from '../tokens'\nimport { type TokenDebugData, throwUnexpectedToken } from '../utils'\n\nexport const algebraicSimpleTokenTypes = [\n ...commonSimpleTokenTypes,\n] as const\n\nexport const algebraicOnlyValueTokenTypes = [\n 'A_Whitespace',\n 'A_Operator',\n 'A_Symbol',\n 'A_ReservedSymbol',\n 'A_SingleLineComment',\n 'A_MultiLineComment',\n 'A_Number',\n] as const satisfies `A_${string}`[]\n\nexport const algebraicValueTokenTypes = [\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n] as const\n\nexport const algebraicTokenTypes = [\n ...algebraicSimpleTokenTypes,\n ...algebraicValueTokenTypes,\n] as const\n\nexport const AlgebraicOperators = [\n // Unary only operators\n '!', // logical NOT\n '~', // bitwise NOT\n '=', // property assignemnt operator\n ',', // element delimiter\n\n // Only used in lamda function parser\n '=>',\n '...',\n\n '.', // property accessor\n\n '**', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '<', // less than\n '<=', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n\n '==', // equal\n '!=', // not equal\n\n '&', // bitwise AND\n '^', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n\n] as const\n\nexport type AlgebraicOperator = typeof AlgebraicOperators[number]\n\nexport function isAlgebraicOperator(operator: string): operator is AlgebraicOperator {\n return AlgebraicOperators.includes(operator as AlgebraicOperator)\n}\nexport function assertAlgebraicOperator(operator: string): asserts operator is AlgebraicOperator {\n if (!isAlgebraicOperator(operator)) {\n throw new LitsError(`Expected algebraic operator, got ${operator}`, undefined)\n }\n}\nexport function asAlgebraicOperator(operator: string): AlgebraicOperator {\n assertAlgebraicOperator(operator)\n return operator\n}\n\nexport type AlgebraicSimpleTokenType = typeof algebraicSimpleTokenTypes[number]\nexport type AlgebraicValueTokenType = typeof algebraicValueTokenTypes[number]\nexport type AlgebraicTokenType = typeof algebraicTokenTypes[number]\n\ntype GenericAlgebraicValueToken<T extends Exclude<AlgebraicValueTokenType, CommonValueTokenType>, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type A_WhitespaceToken = GenericAlgebraicValueToken<'A_Whitespace'>\nexport type A_NumberToken = GenericAlgebraicValueToken<'A_Number'>\nexport type A_OperatorToken<T extends AlgebraicOperator = AlgebraicOperator> = GenericAlgebraicValueToken<'A_Operator', T>\nexport type A_SymbolToken = GenericAlgebraicValueToken<'A_Symbol'>\nexport type A_ReservedSymbolToken = GenericAlgebraicValueToken<'A_ReservedSymbol'>\nexport type A_SingleLineCommentToken = GenericAlgebraicValueToken<'A_SingleLineComment'>\nexport type A_MultiLineCommentToken = GenericAlgebraicValueToken<'A_MultiLineComment'>\n\nexport type AlgebraicOnlyValueToken =\n | A_WhitespaceToken\n | A_NumberToken\n | A_OperatorToken\n | A_SymbolToken\n | A_ReservedSymbolToken\n | A_SingleLineCommentToken\n | A_MultiLineCommentToken\n\nexport type AlgebraicToken =\n | AlgebraicOnlyValueToken\n | CommonSimpleToken\n | CommonValueToken\n\nexport function isA_SymbolToken(token?: Token): token is A_SymbolToken {\n return token?.[0] === 'A_Symbol'\n}\nexport function assertA_SymbolToken(token?: Token): asserts token is A_SymbolToken {\n if (!isA_SymbolToken(token)) {\n throwUnexpectedToken('A_Symbol', token)\n }\n}\nexport function asA_SymbolToken(token?: Token): A_SymbolToken {\n assertA_SymbolToken(token)\n return token\n}\n\nexport function isA_ReservedSymbolToken(token?: Token): token is A_ReservedSymbolToken {\n return token?.[0] === 'A_ReservedSymbol'\n}\nexport function assertA_ReservedSymbolToken(token?: Token): asserts token is A_ReservedSymbolToken {\n if (!isA_ReservedSymbolToken(token)) {\n throwUnexpectedToken('A_ReservedSymbol', token)\n }\n}\nexport function asA_ReservedSymbolToken(token?: Token): A_ReservedSymbolToken {\n assertA_ReservedSymbolToken(token)\n return token\n}\n\nexport function isA_CommentToken(token?: Token): token is A_SingleLineCommentToken {\n return token?.[0] === 'A_SingleLineComment'\n}\nexport function assertA_CommentToken(token?: Token): asserts token is A_SingleLineCommentToken {\n if (!isA_CommentToken(token)) {\n throwUnexpectedToken('A_SingleLineComment', token)\n }\n}\nexport function asA_CommentToken(token?: Token): A_SingleLineCommentToken {\n assertA_CommentToken(token)\n return token\n}\n\nexport function isA_MultiLineCommentToken(token?: Token): token is A_MultiLineCommentToken {\n return token?.[0] === 'A_MultiLineComment'\n}\nexport function assertA_MultiLineCommentToken(token?: Token): asserts token is A_MultiLineCommentToken {\n if (!isA_MultiLineCommentToken(token)) {\n throwUnexpectedToken('A_MultiLineComment', token)\n }\n}\nexport function asA_MultiLineCommentToken(token?: Token): A_MultiLineCommentToken {\n assertA_MultiLineCommentToken(token)\n return token\n}\n\nexport function isA_OperatorToken<T extends AlgebraicOperator>(token?: Token, operatorName?: T): token is A_OperatorToken<T> {\n if (token?.[0] !== 'A_Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertA_OperatorToken<T extends AlgebraicOperator>(token?: Token, operatorName?: T): asserts token is A_OperatorToken<T> {\n if (!isA_OperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, undefined)\n }\n throwUnexpectedToken('A_Operator', token)\n }\n}\nexport function asA_OperatorToken<T extends AlgebraicOperator>(token?: Token, operatorName?: T): A_OperatorToken<T> {\n assertA_OperatorToken(token, operatorName)\n return token\n}\n\nexport function isA_WhitespaceToken(token?: Token): token is A_WhitespaceToken {\n return token?.[0] === 'A_Whitespace'\n}\nexport function assertA_WhitespaceToken(token?: Token): asserts token is A_WhitespaceToken {\n if (!isA_WhitespaceToken(token)) {\n throwUnexpectedToken('A_Whitespace', token)\n }\n}\nexport function asA_WhitespaceToken(token?: Token): A_WhitespaceToken {\n assertA_WhitespaceToken(token)\n return token\n}\n\nexport function isA_NumberToken(token?: Token): token is A_NumberToken {\n return token?.[0] === 'A_Number'\n}\nexport function assertA_NumberToken(token?: Token): asserts token is A_NumberToken {\n if (!isA_NumberToken(token)) {\n throwUnexpectedToken('A_Number', token)\n }\n}\nexport function asA_NumberToken(token?: Token): A_NumberToken {\n assertA_NumberToken(token)\n return token\n}\n","import type { CommonSimpleToken, CommonSimpleTokenType, CommonValueToken, CommonValueTokenType } from '../common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from '../common/commonTokens'\nimport type { Token } from '../tokens'\nimport { type TokenDebugData, throwUnexpectedToken } from '../utils'\n\nexport const modifierNames = ['&', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\nexport const polishOnlySimpleTokenTypes = [\n 'P_FnShorthand',\n] as const satisfies `P_${string}`[]\n\nexport const polishSimpleTokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n] as const\n\nexport const polishOnlyValueTokenTypes = [\n 'P_Modifier',\n 'P_StringShorthand',\n 'P_Symbol',\n 'P_ReservedSymbol',\n 'P_RegexpShorthand',\n 'P_CollectionAccessor',\n 'P_Comment',\n 'P_Whitespace',\n 'P_Number',\n] as const satisfies `P_${string}`[]\n\nexport const polishValueTokenTypes = [\n ...commomValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\nexport const polishTokenTypes = [\n ...polishSimpleTokenTypes,\n ...polishValueTokenTypes,\n] as const\n\nexport type PolishSimpleTokenType = typeof polishSimpleTokenTypes[number]\nexport type PolishValueTokenType = typeof polishValueTokenTypes[number]\nexport type PolishTokenType = typeof polishTokenTypes[number]\n\ntype GenericPolishSimpleToken<T extends Exclude<PolishSimpleTokenType, CommonSimpleTokenType>> = [T] | [T, TokenDebugData]\ntype GenericPolishValueToken<T extends Exclude<PolishValueTokenType, CommonValueTokenType>, V extends string = string> = [T, V] | [T, V, TokenDebugData]\n\nexport type P_FnShorthandToken = GenericPolishSimpleToken<'P_FnShorthand'>\nexport type P_ModifierToken = GenericPolishValueToken<'P_Modifier', ModifierName>\nexport type P_StringShorthandToken = GenericPolishValueToken<'P_StringShorthand'>\nexport type P_SymbolToken = GenericPolishValueToken<'P_Symbol'>\nexport type P_ReservedSymbolToken = GenericPolishValueToken<'P_ReservedSymbol'>\nexport type P_RegexpShorthandToken = GenericPolishValueToken<'P_RegexpShorthand'>\nexport type P_CollectionAccessorToken = GenericPolishValueToken<'P_CollectionAccessor', '.' | '#'>\nexport type P_CommentToken = GenericPolishValueToken<'P_Comment'>\nexport type P_WhitespaceToken = GenericPolishValueToken<'P_Whitespace'>\nexport type P_NumberToken = GenericPolishValueToken<'P_Number'>\n\nexport type PolishOnlySimpleToken =\n | P_FnShorthandToken\n\nexport type PolishOnlyValueToken =\n | P_ModifierToken\n | P_StringShorthandToken\n | P_SymbolToken\n | P_ReservedSymbolToken\n | P_RegexpShorthandToken\n | P_CollectionAccessorToken\n | P_CommentToken\n | P_WhitespaceToken\n | P_NumberToken\n\nexport type PolishToken =\n | PolishOnlySimpleToken\n | PolishOnlyValueToken\n | CommonSimpleToken\n | CommonValueToken\n\nexport function isP_StringShorthandToken(token?: Token): token is P_StringShorthandToken {\n return token?.[0] === 'P_StringShorthand'\n}\nexport function assertP_StringShorthandToken(token?: Token): asserts token is P_StringShorthandToken {\n if (!isP_StringShorthandToken(token)) {\n throwUnexpectedToken('P_StringShorthand', token)\n }\n}\nexport function asP_StringShorthandToken(token?: Token): P_StringShorthandToken {\n assertP_StringShorthandToken(token)\n return token\n}\n\nexport function isP_SymbolToken(token?: Token): token is P_SymbolToken {\n return token?.[0] === 'P_Symbol'\n}\nexport function assertP_SymbolToken(token?: Token): asserts token is P_SymbolToken {\n if (!isP_SymbolToken(token)) {\n throwUnexpectedToken('P_Symbol', token)\n }\n}\nexport function asP_SymbolToken(token?: Token): P_SymbolToken {\n assertP_SymbolToken(token)\n return token\n}\n\nexport function isP_ReservedSymbolToken(token?: Token): token is P_ReservedSymbolToken {\n return token?.[0] === 'P_ReservedSymbol'\n}\nexport function assertP_ReservedSymbolToken(token?: Token): asserts token is P_ReservedSymbolToken {\n if (!isP_ReservedSymbolToken(token)) {\n throwUnexpectedToken('P_ReservedSymbol', token)\n }\n}\nexport function asP_ReservedSymbolToken(token?: Token): P_ReservedSymbolToken {\n assertP_ReservedSymbolToken(token)\n return token\n}\n\nexport function isP_ModifierToken(token?: Token): token is P_ModifierToken {\n return token?.[0] === 'P_Modifier'\n}\nexport function assertP_ModifierToken(token?: Token): asserts token is P_ModifierToken {\n if (!isP_ModifierToken(token)) {\n throwUnexpectedToken('P_Modifier', token)\n }\n}\nexport function asP_ModifierToken(token?: Token): P_ModifierToken {\n assertP_ModifierToken(token)\n return token\n}\n\nexport function isP_RegexpShorthandToken(token?: Token): token is P_RegexpShorthandToken {\n return token?.[0] === 'P_RegexpShorthand'\n}\nexport function assertP_RegexpShorthandToken(token?: Token): asserts token is P_RegexpShorthandToken {\n if (!isP_RegexpShorthandToken(token)) {\n throwUnexpectedToken('P_RegexpShorthand', token)\n }\n}\nexport function asP_RegexpShorthandToken(token?: Token): P_RegexpShorthandToken {\n assertP_RegexpShorthandToken(token)\n return token\n}\n\nexport function isP_FnShorthandToken(token?: Token): token is P_FnShorthandToken {\n return token?.[0] === 'P_FnShorthand'\n}\nexport function assertP_FnShorthandToken(token?: Token): asserts token is P_FnShorthandToken {\n if (!isP_FnShorthandToken(token)) {\n throwUnexpectedToken('P_FnShorthand', token)\n }\n}\nexport function asP_FnShorthandToken(token?: Token): P_FnShorthandToken {\n assertP_FnShorthandToken(token)\n return token\n}\n\nexport function isP_CollectionAccessorToken(token?: Token): token is P_CollectionAccessorToken {\n return token?.[0] === 'P_CollectionAccessor'\n}\nexport function assertP_CollectionAccessorToken(token?: Token): asserts token is P_CollectionAccessorToken {\n if (!isP_CollectionAccessorToken(token)) {\n throwUnexpectedToken('P_CollectionAccessor', token)\n }\n}\nexport function asP_CollectionAccessorToken(token?: Token): P_CollectionAccessorToken {\n assertP_CollectionAccessorToken(token)\n return token\n}\n\nexport function isP_CommentToken(token?: Token): token is P_CommentToken {\n return token?.[0] === 'P_Comment'\n}\nexport function assertP_CommentToken(token?: Token): asserts token is P_CommentToken {\n if (!isP_CommentToken(token)) {\n throwUnexpectedToken('P_Comment', token)\n }\n}\nexport function asP_CommentToken(token?: Token): P_CommentToken {\n assertP_CommentToken(token)\n return token\n}\n\nexport function isP_WhitespaceToken(token?: Token): token is P_WhitespaceToken {\n return token?.[0] === 'P_Whitespace'\n}\nexport function assertP_WhitespaceToken(token?: Token): asserts token is P_WhitespaceToken {\n if (!isP_WhitespaceToken(token)) {\n throwUnexpectedToken('P_Whitespace', token)\n }\n}\nexport function asP_WhitespaceToken(token?: Token): P_WhitespaceToken {\n assertP_WhitespaceToken(token)\n return token\n}\n\nexport function isP_NumberToken(token?: Token): token is P_NumberToken {\n return token?.[0] === 'P_Number'\n}\nexport function assertP_NumberToken(token?: Token): asserts token is P_NumberToken {\n if (!isP_NumberToken(token)) {\n throwUnexpectedToken('P_Number', token)\n }\n}\nexport function asP_NumberToken(token?: Token): P_NumberToken {\n assertP_NumberToken(token)\n return token\n}\n","import { LitsError } from '../errors'\nimport type { CommonSimpleToken, CommonValueToken } from './common/commonTokens'\nimport { commomValueTokenTypes, commonSimpleTokenTypes } from './common/commonTokens'\nimport type { AlgebraicOnlyValueToken, AlgebraicSimpleTokenType, AlgebraicValueTokenType } from './algebraic/algebraicTokens'\nimport { algebraicOnlyValueTokenTypes } from './algebraic/algebraicTokens'\nimport type { PolishOnlySimpleToken, PolishOnlyValueToken, PolishSimpleTokenType, PolishValueTokenType } from './polish/polishTokens'\nimport { polishOnlySimpleTokenTypes, polishOnlyValueTokenTypes } from './polish/polishTokens'\n\nexport const simpleTokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n] as const\n\nexport const valueTokenTypes = [\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\nexport const tokenTypes = [\n ...commonSimpleTokenTypes,\n ...polishOnlySimpleTokenTypes,\n ...commomValueTokenTypes,\n ...algebraicOnlyValueTokenTypes,\n ...polishOnlyValueTokenTypes,\n] as const\n\ntype SimpleTokenType = AlgebraicSimpleTokenType | PolishSimpleTokenType\ntype ValueTokenType = AlgebraicValueTokenType | PolishValueTokenType\n\nexport type TokenType = typeof tokenTypes[number]\n\nexport type SimpleToken =\n | CommonSimpleToken\n | PolishOnlySimpleToken\n\nexport type ValueToken =\n | CommonValueToken\n | AlgebraicOnlyValueToken\n | PolishOnlyValueToken\n\nexport type Token =\n | SimpleToken\n | ValueToken\n\nexport function isTokenType(type: string): type is TokenType {\n return typeof type === 'string' && tokenTypes.includes(type as TokenType)\n}\n\nexport function isToken(token?: Token): token is Token {\n return !!token\n}\nexport function assertToken(token?: Token): asserts token is Token {\n if (!isToken(token)) {\n throw new LitsError(`Expected token, got ${token}`, undefined)\n }\n}\nexport function asToken(token?: Token): Token {\n assertToken(token)\n return token\n}\n\nexport function isSimpleToken(token?: Token): token is SimpleToken {\n return isToken(token) && simpleTokenTypes.includes(token[0] as SimpleTokenType)\n}\n\nexport function assertSimpleToken(token?: Token): asserts token is SimpleToken {\n if (!isSimpleToken(token)) {\n throw new LitsError(`Expected simple token, got ${token}`, undefined)\n }\n}\n\nexport function asSimpleToken(token?: Token): SimpleToken {\n assertSimpleToken(token)\n return token\n}\n\nexport function isValueToken(token?: Token): token is ValueToken {\n return isToken(token) && valueTokenTypes.includes(token[0] as ValueTokenType)\n}\n\nexport function assertValueToken(token?: Token): asserts token is ValueToken {\n if (!isValueToken(token)) {\n throw new LitsError(`Expected value token, got ${token}`, undefined)\n }\n}\n\nexport function asValueToken(token?: Token): ValueToken {\n assertValueToken(token)\n return token\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { astNodeTypeName, isAstNodeType, isFunctionType } from '../../constants/constants'\nimport type { AstNode, LitsFunction } from '../../parser/interface'\nimport { type Token, isTokenType } from '../../tokenizer/tokens'\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 Array.isArray(value) && value.length >= 1 && value.length <= 3 && typeof value[0] === 'string' && isTokenType(value[0])\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 `${value[0]}-token${value[1] ? `\"${value[1]}\"` : ''}`\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","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 { 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 NormalExpressionNode,\n NormalExpressionNodeWithName,\n SymbolNode,\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 isSymbolNode(value: unknown): value is SymbolNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.Symbol\n}\nexport function asSymbolNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(value, sourceCodeInfo)\n return value\n}\nexport function assertSymbolNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is SymbolNode {\n if (!isSymbolNode(value))\n throw getAssertionError('SymbolNode', 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 { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../builtin/specialExpressions/declared'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../builtin/specialExpressions/functions'\nimport type { IfLetNode } from '../builtin/specialExpressions/if-let'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../builtin/specialExpressions/loops'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../builtin/specialExpressions/time'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { WhenNode } from '../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../builtin/specialExpressions/when-not'\nimport type { RemoveOptions } from '.'\n\nconst specialExpressionCommentRemovers = {\n 'and': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'comment': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'cond': (node: CondNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'declared?': (node: DeclaredNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defn': (_node: DefnNode, _removeOptions: RemoveOptions) => {},\n 'def': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'defns': (_node: DefnsNode, _removeOptions: RemoveOptions) => {},\n 'defs': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'do': (node: DoNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'doseq': (_node: DoSeqNode, _removeOptions: RemoveOptions) => {},\n 'fn': (_node: FnNode, _removeOptions: RemoveOptions) => {},\n 'for': (_node: ForNode, _removeOptions: RemoveOptions) => {},\n 'if-let': (_node: IfLetNode, _removeOptions: RemoveOptions) => {},\n 'if': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'if-not': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'let': (node: LetNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n node.bs.forEach((bindingNode) => {\n removeOptions.recursivelyRemoveCommentNodes(bindingNode.v)\n })\n },\n 'loop': (_node: LoopNode, _removeOptions: RemoveOptions) => {},\n 'or': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n '??': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'recur': (node: AndNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'time!': (node: TimeNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'throw': (node: ThrowNode, removeOptions: RemoveOptions) => {\n removeOptions.removeCommenNodesFromArray(node.p)\n node.p.forEach(removeOptions.recursivelyRemoveCommentNodes)\n },\n 'try': (_node: TryNode, _removeOptions: RemoveOptions) => {},\n 'when-first': (_node: WhenFirstNode, _removeOptions: RemoveOptions) => {},\n 'when-let': (_node: WhenLetNode, _removeOptions: RemoveOptions) => {},\n 'when': (_node: WhenNode, _removeOptions: RemoveOptions) => {},\n 'when-not': (_node: WhenNotNode, _removeOptions: RemoveOptions) => {},\n\n} satisfies Record<SpecialExpressionName, (astNode: any, removeOptions: RemoveOptions) => void>\n\nexport function removeCommentNodesFromSpecialExpression(\n node: SpecialExpressionNode,\n removeOptions: RemoveOptions,\n) {\n const uncommenter = specialExpressionCommentRemovers[node.n as 'and']\n return uncommenter?.(node as AndNode, removeOptions)\n}\n","import { AstNodeType } from '../constants/constants'\nimport type { Ast, AstNode } from '../parser/interface'\nimport { isNormalExpressionNode } from '../typeGuards/astNode'\nimport { removeCommentNodesFromSpecialExpression } from './removeCommentNodesFromSpecialExpression'\n\nconst removeOptions = {\n recursivelyRemoveCommentNodes,\n removeCommenNodesFromArray,\n} as const\n\nexport type RemoveOptions = typeof removeOptions\n\nexport function removeCommenNodes(ast: Ast): void {\n removeCommenNodesFromArray(ast.b)\n ast.b.forEach(recursivelyRemoveCommentNodes)\n}\n\nfunction recursivelyRemoveCommentNodes(astNode: AstNode) {\n if (isNormalExpressionNode(astNode)) {\n removeCommenNodesFromArray(astNode.p)\n astNode.p.forEach(recursivelyRemoveCommentNodes)\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n removeCommentNodesFromSpecialExpression(astNode, removeOptions)\n }\n}\n\nfunction removeCommenNodesFromArray(astNodes: AstNode[]): void {\n let i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n while (i >= 0) {\n astNodes.splice(i, 1)\n i = astNodes.findIndex(n => n.t === AstNodeType.Comment)\n }\n}\n\nexport function withoutCommentNodes(astNodes: AstNode[]) {\n return astNodes.filter(n => n.t !== AstNodeType.Comment)\n}\n","import { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { GenericNode } from '../parser/interface'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype Count = number | { min?: number, max?: number }\n\nexport function assertEvenNumberOfParams(node: GenericNode): void {\n const length = withoutCommentNodes(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 getTokenDebugData(node.token)?.sourceCodeInfo,\n )\n }\n}\n\nexport function assertNumberOfParams(count: Count, node: GenericNode): void {\n assertCount({\n count,\n length: withoutCommentNodes(node.p).length,\n name: node.n ?? 'expression',\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n })\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nfunction assertCount({ count, length, name, sourceCodeInfo }: { name: string | undefined, count: Count, length: number, sourceCodeInfo?: SourceCodeInfo }): void {\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n 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 \"${name}\", 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 \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\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 { 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 { 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 'unsigned-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 { 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 { 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 getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, 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'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\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 [FUNCTION_SYMBOL]: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n\nexport function arrayToPairs<T>(arr: T[]): T[][] {\n const pairs: T[][] = []\n for (let i = 0; i < arr.length; i += 2)\n pairs.push([arr[i]!, arr[i + 1]!])\n\n return pairs\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.substring(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.substring(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.substring(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.substring(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.substring(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.substring(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 { assertEvenNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n '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 => assertEvenNumberOfParams(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 } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface AndNode extends CommonSpecialExpressionNode<'and'> {}\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: AndNode = {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { isRParenToken } from '../../tokenizer/common/commonTokens'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface CommentExpressionNode extends CommonSpecialExpressionNode<'comment'> {}\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null, CommentExpressionNode> = {\n parse: (tokenStream, parseState, firstToken, { parseToken }) => {\n const node: CommentExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'comment',\n p: [],\n token: undefined,\n }\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRParenToken(tkn)) {\n node.p.push(parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n\n node.token = getTokenDebugData(firstToken) && firstToken\n\n return node\n },\n evaluate: () => null,\n findUnresolvedIdentifiers: () => new Set(),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertEvenNumberOfParams } from '../../typeGuards'\nimport { arrayToPairs } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface CondNode extends CommonSpecialExpressionNode<'cond'> {}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: CondNode = {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertEvenNumberOfParams(node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const [test, form] of arrayToPairs(node.p)) {\n const value = evaluateAstNode(test!, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(form!, contextStack)\n }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface DeclaredNode extends CommonSpecialExpressionNode<'declared?'> {}\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean, DeclaredNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DeclaredNode = {\n t: AstNodeType.SpecialExpression,\n n: 'declared?',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(1, node)\n\n return node\n },\n evaluate: (node, contextStack) => {\n const lookUpResult = contextStack.lookUp(node.p[0] as SymbolNode)\n return lookUpResult !== null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\n\nexport const polishReservedNamesRecord: Record<string, { value: Any, forbidden?: true }> = {\n true: { value: true },\n false: { value: false },\n nil: { value: null },\n null: { value: null },\n} as const\n\nexport type PolishReservedName = keyof typeof polishReservedNamesRecord\n\nexport const polishReservedNames: PolishReservedName[] = Object.keys(polishReservedNamesRecord)\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode, BindingNode } from '../parser/interface'\nimport { polishReservedNamesRecord } from '../tokenizer/polish/polishReservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport type { Builtin } from './interface'\nimport type { SpecialExpressionName } from '.'\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 as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-member-access\n if ((polishReservedNamesRecord 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 { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode, asSymbolNode, assertSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefNode extends CommonSpecialExpressionNode<'def'> {}\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefNode = {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertSymbolNode(node.p[0], getTokenDebugData(node.token)?.sourceCodeInfo)\n assertNumberOfParams(2, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = (node.p[0] as SymbolNode).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const subNode = asAstNode(node.p[1])\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = asSymbolNode(node.p[0]).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefsNode extends CommonSpecialExpressionNode<'defs'> {}\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<null, DefsNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(2, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n contextStack.globalContext[name] = {\n value: evaluateAstNode(node.p[1]!, contextStack),\n }\n\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const subNode = node.p[1]!\n const result = findUnresolvedIdentifiers([subNode], contextStack, builtin)\n const name = evaluateAstNode(node.p[0]!, contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { isRParenToken } from '../../tokenizer/common/commonTokens'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface DoNode extends CommonSpecialExpressionNode<'do'> {}\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n parse: (tokenStream, parseState, firstToken, { parseToken }) => {\n const node: DoNode = {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: [],\n token: undefined,\n }\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRParenToken(tkn)) {\n node.p.push(parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n\n node.token = getTokenDebugData(firstToken) && firstToken\n\n return 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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport function joinAnalyzeResults(...results: UnresolvedIdentifiers[]): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n for (const identifier of results)\n identifier.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: UnresolvedIdentifiers, source: UnresolvedIdentifiers): void {\n source.forEach(symbol => target.add(symbol))\n}\n\nexport function combinate<T>(arrays: T[][]): T[][] {\n return arrays.reduce((acc: T[][], curr) => {\n return acc.flatMap(a => curr.map(c => [...a, c]))\n }, [[]])\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType, FunctionType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type {\n AstNode,\n BindingNode,\n CommonSpecialExpressionNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n ParseState,\n SymbolNode,\n} from '../../parser/interface'\nimport { asLBracketToken, assertRParenToken, isLBracketToken, isLParenToken, isRBracketToken, isRParenToken } from '../../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asAstNode, assertSymbolNode } from '../../typeGuards/astNode'\nimport { asString, assertString } from '../../typeGuards/string'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\n\nexport interface DefnNode extends CommonSpecialExpressionNode<'defn'> {\n f: SymbolNode\n o: FunctionOverload[]\n}\n\nexport interface DefnsNode extends CommonSpecialExpressionNode<'defns'> {\n f: AstNode\n o: FunctionOverload[]\n}\n\nexport interface FnNode extends CommonSpecialExpressionNode<'fn'> {\n p: AstNode[]\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n parse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseToken } = parsers\n const functionName = parseToken(tokenStream, parseState)\n assertSymbolNode(functionName, getTokenDebugData(functionName.token)?.sourceCodeInfo)\n\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n contextStack.globalContext[node.f.v] = { value: true }\n const newContext: Context = { [node.f.v]: { value: true } }\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null, DefnsNode> = {\n parse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseToken } = parsers\n const functionName = parseToken(tokenStream, parseState)\n\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DefnsNode = {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n p: [],\n f: functionName,\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin, evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.f, sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n const newContext = { [name]: { value: true } }\n\n return addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n parse: (tokenStream, parseState, firstToken, parsers) => {\n const functionOverloades = parseFunctionOverloades(tokenStream, parseState, parsers)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: getTokenDebugData(node.token)?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) =>\n addOverloadsUnresolvedIdentifiers(node.o, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nfunction getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f).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 addOverloadsUnresolvedIdentifiers(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n functionNameContext?: Context,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\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 = findUnresolvedIdentifiers([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 = findUnresolvedIdentifiers(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 parseState: ParseState,\n { parseToken }: ParserHelpers,\n): AstNode[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const body: AstNode[] = []\n while (!isRParenToken(tkn)) {\n body.push(parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n if (body.length === 0)\n throw new LitsError('Missing body in function', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n return body\n}\n\nfunction parseFunctionOverloades(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): FunctionOverload[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n if (isLParenToken(tkn)) {\n const functionOverloades: FunctionOverload[] = []\n while (!isRParenToken(tkn)) {\n parseState.position++\n tkn = asLBracketToken(tokenStream.tokens[parseState.position])\n const functionArguments = parseFunctionArguments(tokenStream, parseState, 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', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n const functionBody = parseFunctionBody(tokenStream, parseState, parsers)\n functionOverloades.push({\n as: functionArguments,\n b: functionBody,\n a: arity,\n })\n\n tkn = asToken(tokenStream.tokens[++parseState.position])\n if (!isRParenToken(tkn) && !isLParenToken(tkn))\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n\n return functionOverloades\n }\n else if (isLBracketToken(tkn)) {\n const functionArguments = parseFunctionArguments(tokenStream, parseState, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n const functionBody = parseFunctionBody(tokenStream, parseState, parsers)\n return [\n {\n as: functionArguments,\n b: functionBody,\n a: arity,\n },\n ]\n }\n else {\n throw new LitsError(`Expected [ or ( token, got ${valueToString(tkn)}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n}\n\nfunction parseFunctionArguments(\n tokenStream: TokenStream,\n parseState: ParseState,\n parsers: ParserHelpers,\n): 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[++parseState.position])\n\n // let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRBracketToken(tkn)) {\n if (state === 'let') {\n bindings = parseBindings(tokenStream, parseState)\n break\n }\n else {\n const node = parseArgument(tokenStream, parseState)\n tkn = asToken(tokenStream.tokens[parseState.position])\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', getTokenDebugData(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', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, getTokenDebugData(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', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n restArgument = node.n\n break\n }\n }\n }\n }\n parseState.position += 1\n\n if (state === 'rest' && restArgument === undefined)\n throw new LitsError('Missing rest argument name', getTokenDebugData(tkn)?.sourceCodeInfo)\n\n const args: FunctionArguments = {\n m: mandatoryArguments,\n r: restArgument,\n b: bindings,\n }\n\n return args\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfNode extends CommonSpecialExpressionNode<'if'> {}\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: IfNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ min: 2, max: 3 }, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfLetNode extends CommonSpecialExpressionNode<'if-let'> {\n b: BindingNode\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any, IfLetNode> = {\n parse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ min: 1, max: 2 }, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode(node.b.v, contextStack)\n if (bindingValue) {\n locals[node.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext: Context = { [node.b.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([node.b.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface IfNotNode extends CommonSpecialExpressionNode<'if-not'> {}\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any, IfNotNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: IfNotNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-not',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ min: 2, max: 3 }, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LetNode extends CommonSpecialExpressionNode<'let'> {\n bs: BindingNode[]\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n parse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: params,\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const newContextStack = contextStack.create(locals)\n for (const binding of node.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.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.bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = findUnresolvedIdentifiers([valueNode], contextStack.create(bindingContext), builtin)\n bindingContext[bindingNode.n] = { value: true }\n return bindingsResult\n })\n\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface LoopNode extends CommonSpecialExpressionNode<'loop'> {\n bs: BindingNode[]\n}\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket, parseBindings }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const bindingContext: Context = node.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.bs.length) {\n throw new LitsError(\n `recur expected ${node.bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;node.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const newContext = node.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.bs.map(binding => binding.v)\n const bindingsResult = findUnresolvedIdentifiers(bindingValueNodes, contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { SpecialExpressionNode } from '..'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '../../analyze'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { AstNode, BindingNode, CommonSpecialExpressionNode, ParseState } from '../../parser/interface'\nimport { assertLBracketToken, assertRParenToken, isRBracketToken } from '../../tokenizer/common/commonTokens'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { isP_ModifierToken } from '../../tokenizer/polish/polishTokens'\nimport { asToken } from '../../tokenizer/tokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\n\nexport interface ForNode extends CommonSpecialExpressionNode<'for'> {\n l: LoopBindingNode[]\n}\n\nexport interface DoSeqNode extends CommonSpecialExpressionNode<'doseq'> {\n l: LoopBindingNode[]\n}\n\ntype LoopNode = ForNode | DoSeqNode\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 parseState: ParseState,\n { parseBinding, parseBindings, parseToken }: ParserHelpers,\n): LoopBindingNode {\n const bindingNode = parseBinding(tokenStream, parseState)\n\n const loopBinding: LoopBindingNode = {\n b: bindingNode,\n m: [],\n }\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (isP_ModifierToken(tkn)) {\n const modifier = tkn[1]\n switch (modifier) {\n case '&let':\n if (loopBinding.l) {\n throw new LitsError('Only one &let modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.l = parseBindings(tokenStream, parseState)\n loopBinding.m.push('&let')\n break\n case '&when':\n if (loopBinding.wn) {\n throw new LitsError('Only one &when modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.wn = parseToken(tokenStream, parseState)\n loopBinding.m.push('&when')\n break\n case '&while':\n if (loopBinding.we) {\n throw new LitsError('Only one &while modifier allowed', getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n parseState.position += 1\n loopBinding.we = parseToken(tokenStream, parseState)\n loopBinding.m.push('&while')\n break\n case '&':\n throw new LitsError(`Illegal modifier: ${modifier}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n default:\n throw new LitsError(`Illegal modifier: ${modifier satisfies never}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n return 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 parseState: ParseState,\n parsers: ParserHelpers,\n): LoopBindingNode[] {\n assertLBracketToken(tokenStream.tokens[parseState.position++])\n\n const loopBindings: LoopBindingNode[] = []\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n while (!isRBracketToken(tkn)) {\n loopBindings.push(parseLoopBinding(tokenStream, parseState, parsers))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n return loopBindings\n}\nfunction evaluateLoop(\n returnResult: boolean,\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n) {\n const sourceCodeInfo = getTokenDebugData(node.token)?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\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(params[0]!, newContextStack)\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: LoopNode,\n contextStack: ContextStack,\n findUnresolvedIdentifiers: FindUnresolvedIdentifiers,\n builtin: Builtin,\n): UnresolvedIdentifiers {\n const result = new Set<UnresolvedIdentifier>()\n const newContext: Context = {}\n const { l: loopBindings } = node\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n findUnresolvedIdentifiers([binding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n findUnresolvedIdentifiers([letBinding.v], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n findUnresolvedIdentifiers([whenNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n findUnresolvedIdentifiers([whileNode], contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n parse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n const loopBindings = parseLoopBindings(tokenStream, parseState, parsers)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: ForNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(1, node)\n\n return node\n },\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n parse: (tokenStream, parseState, firstToken, parsers) => {\n const { parseTokensUntilClosingBracket } = parsers\n const loopBindings = parseLoopBindings(tokenStream, parseState, parsers)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: DoSeqNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(1, node)\n\n return node\n },\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => analyze(node, contextStack, findUnresolvedIdentifiers, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface OrNode extends CommonSpecialExpressionNode<'or'> {}\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: OrNode = {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { isSymbolNode } from '../../typeGuards/astNode'\nimport { assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface QqNode extends CommonSpecialExpressionNode<'??'> {}\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: QqNode = {\n t: AstNodeType.SpecialExpression,\n n: '??',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ min: 1, max: 2 }, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [firstNode, secondNode] = node.p\n\n if (isSymbolNode(firstNode)) {\n if (contextStack.lookUp(firstNode) === null)\n return secondNode ? evaluateAstNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, getTokenDebugData(node.token)?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport { RecurSignal } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface RecurNode extends CommonSpecialExpressionNode<'recur'> {}\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: RecurNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n throw new RecurSignal(params)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport { UserDefinedError } from '../../errors'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface ThrowNode extends CommonSpecialExpressionNode<'throw'> {}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: ThrowNode = {\n t: AstNodeType.SpecialExpression,\n n: 'throw',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(1, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode(node.p[0]!, contextStack), getTokenDebugData(node.token)?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, getTokenDebugData(node.token)?.sourceCodeInfo)\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TimeNode extends CommonSpecialExpressionNode<'time!'> {}\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any, TimeNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: TimeNode = {\n t: AstNodeType.SpecialExpression,\n n: 'time!',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(1, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const param = node.p[0]!\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { AstNode, CommonSpecialExpressionNode, SymbolNode } from '../../parser/interface'\nimport { assertLParenToken, assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertSymbolNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface TryNode extends CommonSpecialExpressionNode<'try'> {\n e: SymbolNode\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n parse: (tokenStream, parseState, firstToken, { parseToken }) => {\n const tryExpression = parseToken(tokenStream, parseState)\n\n assertLParenToken(tokenStream.tokens[parseState.position++])\n\n const catchNode = parseToken(tokenStream, parseState)\n assertSymbolNode(catchNode, getTokenDebugData(catchNode.token)?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, getTokenDebugData(catchNode.token)?.sourceCodeInfo),\n )\n }\n\n const error = parseToken(tokenStream, parseState)\n assertSymbolNode(error, getTokenDebugData(error.token)?.sourceCodeInfo)\n\n const catchExpression = parseToken(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [tryExpression],\n ce: catchExpression,\n e: error,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams(1, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n try {\n return evaluateAstNode(tryExpressions[0]!, contextStack)\n }\n catch (error) {\n const newContext: Context = {\n [errorNode.v]: { value: asAny(error, getTokenDebugData(node.token)?.sourceCodeInfo) },\n }\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { p: tryExpressions, ce: catchExpression, e: errorNode } = node\n const tryResult = findUnresolvedIdentifiers(tryExpressions, contextStack, builtin)\n const newContext: Context = {\n [errorNode.v]: { value: true },\n }\n const catchResult = findUnresolvedIdentifiers([catchExpression], contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenNode extends CommonSpecialExpressionNode<'when'> {}\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any, WhenNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ min: 1 }, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, getTokenDebugData(node.token)?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenFirstNode extends CommonSpecialExpressionNode<'when-first'> {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any, WhenFirstNode> = {\n parse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node\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 getTokenDebugData(node.token)?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { AstNodeType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { asNonUndefined } from '../../typeGuards'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenLetNode extends CommonSpecialExpressionNode<'when-let'> {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any, WhenLetNode> = {\n parse: (tokenStream, parseState, firstToken, { parseBindings, parseTokensUntilClosingBracket }) => {\n const bindings = parseBindings(tokenStream, parseState)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n getTokenDebugData(firstToken)?.sourceCodeInfo,\n )\n }\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], getTokenDebugData(firstToken)?.sourceCodeInfo),\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node\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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => {\n const { b: binding } = node\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = findUnresolvedIdentifiers([binding.v], contextStack, builtin)\n const paramsResult = findUnresolvedIdentifiers(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { Any } from '../../interface'\nimport type { CommonSpecialExpressionNode } from '../../parser/interface'\nimport { assertRParenToken } from '../../tokenizer/common/commonTokens'\nimport { getTokenDebugData } from '../../tokenizer/utils'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface WhenNotNode extends CommonSpecialExpressionNode<'when-not'> {}\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any, WhenNotNode> = {\n parse: (tokenStream, parseState, firstToken, { parseTokensUntilClosingBracket }) => {\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n const node: WhenNotNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-not',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertNumberOfParams({ min: 1 }, node)\n\n return node\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, getTokenDebugData(node.token)?.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 findUnresolvedIdentifiers: (node, contextStack, { findUnresolvedIdentifiers, builtin }) => findUnresolvedIdentifiers(node.p, contextStack, builtin),\n}\n","import type { Builtin } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\n\nconst specialExpressions = {\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} as const\n\nexport type SpecialExpressionName = keyof typeof specialExpressions\nexport type BuiltinSpecialExpressions = typeof specialExpressions\nexport type BuiltinSpecialExpression = typeof specialExpressions[SpecialExpressionName]\nexport type SpecialExpressionNode = ReturnType<typeof specialExpressions[SpecialExpressionName]['parse']>\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 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, NativeJsFunction, SymbolNode } from '../parser/interface'\nimport type { SpecialExpressionName } from '../builtin'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue, LitsParams } from '../Lits/Lits'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { asNonUndefined } from '../typeGuards'\nimport { isBuiltinFunction } from '../typeGuards/litsFunction'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { isContextEntry } from './interface'\nimport type { Context, LookUpResult } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.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 ContextStackImpl({\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 clone(): ContextStack {\n // eslint-disable-next-line ts/no-unsafe-argument\n return new ContextStackImpl(JSON.parse(JSON.stringify({\n contexts: this.contexts,\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })))\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: SymbolNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = getTokenDebugData(node.token)?.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 as SpecialExpressionName])\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: SymbolNode): 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, getTokenDebugData(node.token)?.sourceCodeInfo)\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 ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack\n}\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 ReservedSymbolNode,\n StringNode,\n} from '../parser/interface'\nimport type { SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport { polishReservedNamesRecord } from '../tokenizer/polish/polishReservedNames'\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 { removeCommenNodes } from '../removeCommentNodes'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n const safeAstNode = ast.hasDebugData ? JSON.parse(JSON.stringify(ast)) as Ast : ast\n if (safeAstNode.hasDebugData)\n removeCommenNodes(safeAstNode)\n for (const node of safeAstNode.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.Symbol:\n return contextStack.evaluateName(node)\n case AstNodeType.ReservedSymbol:\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`, getTokenDebugData(node.token)?.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: ReservedSymbolNode): Any {\n return asNonUndefined(polishReservedNamesRecord[node.v], getTokenDebugData(node.token)?.sourceCodeInfo).value\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n const sourceCodeInfo = getTokenDebugData(node.token)?.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 = params[0]!\n return executeFunction(fn, params.slice(1), 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, getTokenDebugData(node.token)?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, getTokenDebugData(node.token)?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], getTokenDebugData(node.token)?.sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpression.evaluate(node as any, 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 { Builtin } from '../builtin/interface'\nimport { AstNodeType } from '../constants/constants'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport { evaluateAstNode } from '../evaluator'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type { FindUnresolvedIdentifiers, UnresolvedIdentifier, UnresolvedIdentifiers } from '.'\n\nexport const findUnresolvedIdentifiers: FindUnresolvedIdentifiers = (ast, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(ast) ? ast : ast.b\n\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n\n for (const subNode of astNodes) {\n findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n .forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n\n return unresolvedIdentifiers\n}\n\nfunction findUnresolvedIdentifiersInAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): UnresolvedIdentifiers {\n const emptySet = new Set<UnresolvedIdentifier>()\n switch (astNode.t) {\n case AstNodeType.Symbol: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return new Set([{ symbol: astNode.v, token: astNode.token }])\n\n return emptySet\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedSymbol:\n case AstNodeType.Comment:\n return emptySet\n case AstNodeType.NormalExpression: {\n const unresolvedIdentifiers = new Set<UnresolvedIdentifier>()\n const { n: name, token: debug } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Symbol, v: name, token: debug, p: [], n: undefined })\n if (lookUpResult === null)\n unresolvedIdentifiers.add({ symbol: name, token: astNode.token })\n }\n for (const subNode of astNode.p) {\n const innerUnresolvedIdentifiers = findUnresolvedIdentifiersInAstNode(subNode, contextStack, builtin)\n innerUnresolvedIdentifiers.forEach(symbol => unresolvedIdentifiers.add(symbol))\n }\n return unresolvedIdentifiers\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], getTokenDebugData(astNode.token)?.sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-argument\n const unresolvedIdentifiers = specialExpression.findUnresolvedIdentifiers(astNode as any, contextStack, {\n findUnresolvedIdentifiers,\n builtin,\n evaluateAstNode,\n })\n return unresolvedIdentifiers\n }\n }\n}\n","import type { AndNode } from '../../builtin/specialExpressions/and'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateAndOutcomes: CalculatePossibleAstNodesHelper<AndNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<AndNode>(p => ({\n n: 'and',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }))\n}\n","import type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { AstNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport { arrayToPairs } from '../../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCondOutcomes: CalculatePossibleAstNodesHelper<CondNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n isAstComputable,\n}) => {\n const testNodes = arrayToPairs(astNode.p).map(([t]) => t!)\n if (isAstComputable(testNodes)) {\n return combinate(arrayToPairs(astNode.p)\n // Create a list of ast nodes from the test and form of each condition\n .reduce((acc: AstNode[][], [test, form]) => {\n acc.push(calculatePossibleAstNodes(test!), calculatePossibleAstNodes(form!))\n return acc\n }, []),\n )\n // Create a new CondNode for each combination of test and form outcomes\n .map<CondNode>(conditionAsts => ({\n ...astNode,\n c: arrayToPairs(conditionAsts).map(([t, f]) => ({ t: t!, f: f! })),\n }))\n }\n\n return [\n ...arrayToPairs(astNode.p).flatMap(([_, form]) => calculatePossibleAstNodes(form!)),\n nilNode,\n ]\n}\n","import type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { AstNode } from '../../parser/interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nconst trueNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'true', token: undefined, p: [], n: undefined }\nconst falseNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'false', token: undefined, p: [], n: undefined }\n\nexport const calculateDeclaredOutcomes: CalculatePossibleAstNodesHelper<DeclaredNode> = (\n {\n astNode,\n isAstComputable,\n },\n) => {\n if (isAstComputable(astNode.p))\n return [trueNode]\n\n return [trueNode, falseNode]\n}\n","import type { DefNode } from '../../builtin/specialExpressions/def'\nimport { asSymbolNode } from '../../typeGuards/astNode'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefOutcomes: CalculatePossibleAstNodesHelper<DefNode> = ({\n astNode,\n calculatePossibleAstNodes,\n addGlobalIdentifier,\n}) => {\n const nameNode = asSymbolNode(astNode.p[0])\n const valueNode = astNode.p[1]!\n addGlobalIdentifier(nameNode.v)\n return calculatePossibleAstNodes(valueNode)\n .map<DefNode>(node => ({\n ...astNode,\n p: [nameNode, node],\n }))\n}\n","import type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDefsOutcomes: CalculatePossibleAstNodesHelper<DefsNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<DefsNode>(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateDoOutcomes: CalculatePossibleAstNodesHelper<DoNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p).map<DoNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { FunctionOverload } from '../../builtin/utils'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper, CombinateAstNodes } from '.'\n\nfunction calculateFunctionOverloadOutcomes(combinateAstNodes: CombinateAstNodes, functionOverloads: FunctionOverload[]) {\n return combinate(functionOverloads\n // For each overload, calculate the possible outcomes for each parameter\n .map<FunctionOverload[]>(functionOverload =>\n combinateAstNodes(functionOverload.b, [\n functionOverload.as.m,\n functionOverload.as.b.map(bindingNode => bindingNode.n),\n functionOverload.as.r ?? [],\n ].flat())\n\n // For each combination of parameter outcomes, create a new overload\n .map<FunctionOverload>(body => ({\n ...functionOverload,\n b: body,\n })),\n ),\n // For each combination of overloads, create a new DefnNode\n )\n}\n\nexport const calculateDefnOutcomes: CalculatePossibleAstNodesHelper<DefnNode> = ({\n astNode,\n combinateAstNodes,\n addGlobalIdentifier,\n}) => {\n addGlobalIdentifier(astNode.f.v)\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n\nexport const calculateDefnsOutcomes: CalculatePossibleAstNodesHelper<DefnsNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculatePossibleAstNodes(astNode.f).flatMap(functionName =>\n calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<DefnsNode>(functionOverloads => ({\n ...astNode,\n f: functionName,\n o: functionOverloads,\n })),\n )\n}\n\nexport const calculateFnOutcomes: CalculatePossibleAstNodesHelper<FnNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n // astNode.o is an array of overloads\n return calculateFunctionOverloadOutcomes(combinateAstNodes, astNode.o).map<FnNode>(functionOverloads => ({\n ...astNode,\n o: functionOverloads,\n }))\n}\n","import type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfLetOutcomes: CalculatePossibleAstNodesHelper<IfLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n const thenBranch = astNode.p[0]!\n const elseBranch = astNode.p[1] ?? nilNode\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap<IfLetNode>(b => combinateAstNodes(astNode.p, [newIdentifier])\n .map<IfLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfNotOutcomes: CalculatePossibleAstNodesHelper<IfNotNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if-not',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateIfOutcomes: CalculatePossibleAstNodesHelper<IfNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n const thenBranch = astNode.p[1]!\n const elseBranch = astNode.p[2] ?? nilNode\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'if',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n return [\n ...calculatePossibleAstNodes(thenBranch),\n ...calculatePossibleAstNodes(elseBranch),\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { BindingNode } from '../../parser/interface'\nimport { combinate } from '../utils'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLetOutcomes: CalculatePossibleAstNodesHelper<LetNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n try {\n // check bindings, if any binding value cannot be calculated, convert the whole let to a do-expression\n if (!isAstComputable(astNode.bs.map(b => calculatePossibleAstNodes(b.v))))\n throw new Error('Could not calculate binding value')\n }\n catch {\n const doNodes: DoNode[] = combinateAstNodes(astNode.p)\n .map((p) => {\n return {\n n: 'do',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }\n })\n return doNodes\n }\n\n const newIdentifiers = astNode.bs.map(bindingNode => bindingNode.n)\n const letNodes: LetNode[] = combinate(\n astNode.bs.map<BindingNode[]>(bindingNode =>\n calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValues => ({ ...bindingNode, v: bindingValues })),\n ),\n )\n .flatMap(bindingNodes => combinate(astNode.p.map(p => calculatePossibleAstNodes(p, newIdentifiers)))\n .map((p) => {\n return {\n n: 'let',\n bs: bindingNodes,\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }\n }))\n\n return letNodes\n}\n","import type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodes, CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateForOutcomes: CalculatePossibleAstNodesHelper<ForNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate for loop, not deterministic')\n\n return [astNode]\n}\n\nexport const calculateDoSeqOutcomes: CalculatePossibleAstNodesHelper<DoSeqNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n if (!isDeterministic(calculatePossibleAstNodes, astNode))\n throw new Error('Could not calculate doSeq node, not deterministic')\n\n return [astNode]\n}\n\nfunction isDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: ForNode | DoSeqNode): boolean {\n for (const { b, l, wn, we } of astNode.l) {\n if (l && l.some(({ v }) => !astIsDeterministic(calculatePossibleAstNodes, v)))\n return false\n\n if (!astIsDeterministic(calculatePossibleAstNodes, b.v))\n return false\n\n if (wn && !astIsDeterministic(calculatePossibleAstNodes, wn))\n return false\n\n if (we && !astIsDeterministic(calculatePossibleAstNodes, we))\n return false\n }\n\n if (!astIsDeterministic(calculatePossibleAstNodes, astNode.p[0]!))\n return false\n\n return true\n}\n\nfunction astIsDeterministic(calculatePossibleAstNodes: CalculatePossibleAstNodes, astNode: AstNode) {\n return calculatePossibleAstNodes(astNode).length === 1\n}\n","import type { OrNode } from '../../builtin/specialExpressions/or'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateOrOutcomes: CalculatePossibleAstNodesHelper<OrNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map<OrNode>(p => ({\n n: 'or',\n t: AstNodeType.SpecialExpression,\n p,\n token: astNode.token,\n }))\n}\n","import type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { AstNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateQqOutcomes: CalculatePossibleAstNodesHelper<QqNode> = ({\n astNode,\n combinateAstNodes,\n isAstComputable,\n}) => {\n if (!isAstComputable(astNode.p[0]!))\n throw new Error('First argument of ?? not computable')\n\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p: p as [AstNode, AstNode],\n }))\n}\n","import type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateThrowOutcomes: CalculatePossibleAstNodesHelper<ThrowNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!).map<ThrowNode>(m => ({\n ...astNode,\n p: [m],\n }))\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTimeOutcomes: CalculatePossibleAstNodesHelper<TimeNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n return calculatePossibleAstNodes(astNode.p[0]!)\n .map<DoNode>(p => ({\n ...astNode,\n n: 'do',\n p: [p],\n }))\n}\n","import type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { AstNode } from '../../parser/interface'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport { AstNodeType } from '../../constants/constants'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateTryOutcomes: CalculatePossibleAstNodesHelper<TryNode> = ({\n astNode,\n calculatePossibleAstNodes,\n}) => {\n const { vals, throws } = calculatePossibleAstNodes(astNode.p[0]!).reduce((acc: { vals: AstNode[], throws: AstNode[] }, node) => {\n if (node.n === 'throw') {\n acc.throws.push((node as ThrowNode).p[0]!)\n }\n else {\n acc.vals.push(node)\n }\n return acc\n }, { vals: [], throws: [] })\n\n const catches = throws.flatMap<AstNode>((throwNode) => {\n const letNode: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n bs: [{\n t: AstNodeType.Binding,\n n: astNode.e.v,\n v: throwNode,\n token: undefined,\n p: [],\n }],\n p: [astNode.ce],\n token: undefined,\n }\n return calculatePossibleAstNodes(letNode)\n })\n\n return [\n ...vals,\n ...catches,\n ]\n}\n","import type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenFirstOutcomes: CalculatePossibleAstNodesHelper<WhenFirstNode> = ({\n astNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v))\n throw new Error('Could not calculate binding value')\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenFirstNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { BindingNode } from '../../parser/interface'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenLetOutcomes: CalculatePossibleAstNodesHelper<WhenLetNode> = ({\n astNode,\n nilNode,\n calculatePossibleAstNodes,\n combinateAstNodes,\n isAstComputable,\n}) => {\n const bindingNode = astNode.b\n\n if (!isAstComputable(bindingNode.v)) {\n return [\n ...combinateAstNodes(astNode.p)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n }\n\n const newIdentifier = bindingNode.n\n return calculatePossibleAstNodes(bindingNode.v)\n .map<BindingNode>(bindingValue => ({ ...bindingNode, v: bindingValue }))\n .flatMap(b =>\n combinateAstNodes(astNode.p, [newIdentifier])\n .map<WhenLetNode>(p => ({\n ...astNode,\n b,\n p,\n })),\n )\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenNotOutcomes: CalculatePossibleAstNodesHelper<WhenNotNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map<WhenNotNode>(p => ({\n n: 'when-not',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n}\n","import type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateWhenOutcomes: CalculatePossibleAstNodesHelper<WhenNode> = ({\n astNode,\n combinateAstNodes,\n nilNode,\n isAstComputable,\n}) => {\n const condition = astNode.p[0]!\n\n if (isAstComputable(condition)) {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n n: 'when',\n t: astNode.t,\n p,\n token: astNode.token,\n }))\n }\n\n const body = astNode.p.slice(1)\n\n return [\n ...combinateAstNodes(body)\n .map<DoNode>(p => ({\n n: 'do',\n t: astNode.t,\n p,\n token: astNode.token,\n })),\n nilNode,\n ]\n}\n","import type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateRecurOutcomes: CalculatePossibleAstNodesHelper<RecurNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p)\n .map(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateCommentOutcomes: CalculatePossibleAstNodesHelper<CommentExpressionNode> = ({\n nilNode,\n}) => {\n return [nilNode]\n}\n","import type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { CalculatePossibleAstNodesHelper } from '.'\n\nexport const calculateLoopOutcomes: CalculatePossibleAstNodesHelper<LoopNode> = ({\n astNode,\n combinateAstNodes,\n}) => {\n return combinateAstNodes(astNode.p, astNode.bs.map(bindingNode => bindingNode.n))\n .map<LoopNode>(p => ({\n ...astNode,\n p,\n }))\n}\n","import type { SpecialExpressionName } from '../../builtin'\nimport type { AndNode } from '../../builtin/specialExpressions/and'\nimport type { CommentExpressionNode } from '../../builtin/specialExpressions/comment'\nimport type { CondNode } from '../../builtin/specialExpressions/cond'\nimport type { DeclaredNode } from '../../builtin/specialExpressions/declared'\nimport type { DefNode } from '../../builtin/specialExpressions/def'\nimport type { DefsNode } from '../../builtin/specialExpressions/defs'\nimport type { DoNode } from '../../builtin/specialExpressions/do'\nimport type { DefnNode, DefnsNode, FnNode } from '../../builtin/specialExpressions/functions'\nimport type { IfNode } from '../../builtin/specialExpressions/if'\nimport type { IfLetNode } from '../../builtin/specialExpressions/if-let'\nimport type { IfNotNode } from '../../builtin/specialExpressions/if-not'\nimport type { LetNode } from '../../builtin/specialExpressions/let'\nimport type { LoopNode } from '../../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode } from '../../builtin/specialExpressions/loops'\nimport type { OrNode } from '../../builtin/specialExpressions/or'\nimport type { QqNode } from '../../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../../builtin/specialExpressions/recur'\nimport type { ThrowNode } from '../../builtin/specialExpressions/throw'\nimport type { TimeNode } from '../../builtin/specialExpressions/time'\nimport type { TryNode } from '../../builtin/specialExpressions/try'\nimport type { WhenNode } from '../../builtin/specialExpressions/when'\nimport type { WhenFirstNode } from '../../builtin/specialExpressions/when-first'\nimport type { WhenLetNode } from '../../builtin/specialExpressions/when-let'\nimport type { WhenNotNode } from '../../builtin/specialExpressions/when-not'\nimport type { AstNode } from '../../parser/interface'\nimport { calculateAndOutcomes } from './calculateAndOutcomes'\nimport { calculateCondOutcomes } from './calculateCondOutcomes'\nimport { calculateDeclaredOutcomes } from './calculateDeclaredOutcomes'\nimport { calculateDefOutcomes } from './calculateDefOutcomes'\nimport { calculateDefsOutcomes } from './calculateDefsOutcomes'\nimport { calculateDoOutcomes } from './calculateDoOutcomes'\nimport { calculateDefnOutcomes, calculateDefnsOutcomes, calculateFnOutcomes } from './calculateFunctionOutcomes'\nimport { calculateIfLetOutcomes } from './calculateIfLetOutcomes'\nimport { calculateIfNotOutcomes } from './calculateIfNotOutcomes'\nimport { calculateIfOutcomes } from './calculateIfOutcomes'\nimport { calculateLetOutcomes } from './calculateLetOutcomes'\nimport { calculateDoSeqOutcomes, calculateForOutcomes } from './calculateLoopsOutcomes'\nimport { calculateOrOutcomes } from './calculateOrOutcomes'\nimport { calculateQqOutcomes } from './calculateQqOutcomes'\nimport { calculateThrowOutcomes } from './calculateThrowOutcomes'\nimport { calculateTimeOutcomes } from './calculateTimeOutcomes'\nimport { calculateTryOutcomes } from './calculateTryOutcomes'\nimport { calculateWhenFirstOutcomes } from './calculateWhenFirstOutcomes'\nimport { calculateWhenLetOutcomes } from './calculateWhenLetOutcomes'\nimport { calculateWhenNotOutcomes } from './calculateWhenNotOutcomes'\nimport { calculateWhenOutcomes } from './calculateWhenOutcomes'\nimport { calculateRecurOutcomes } from './calculateRecurOutcomes'\nimport { calculateCommentOutcomes } from './calculateCommentOutcomes'\nimport { calculateLoopOutcomes } from './calculateLoopOutcomes'\nimport type { CalculatePossibleAstNodesHelperOptions } from '.'\n\nexport const specialExpressionCalculator = {\n 'and': (astNode: AndNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateAndOutcomes({ astNode, ...helperOptions }),\n 'comment': (astNode: CommentExpressionNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCommentOutcomes({ astNode, ...helperOptions }),\n 'cond': (astNode: CondNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateCondOutcomes({ astNode, ...helperOptions }),\n 'declared?': (astNode: DeclaredNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDeclaredOutcomes({ astNode, ...helperOptions }),\n 'defn': (astNode: DefnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnOutcomes({ astNode, ...helperOptions }),\n 'def': (astNode: DefNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefOutcomes({ astNode, ...helperOptions }),\n 'defns': (astNode: DefnsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefnsOutcomes({ astNode, ...helperOptions }),\n 'defs': (astNode: DefsNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDefsOutcomes({ astNode, ...helperOptions }),\n 'do': (astNode: DoNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoOutcomes({ astNode, ...helperOptions }),\n 'doseq': (astNode: DoSeqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateDoSeqOutcomes({ astNode, ...helperOptions }),\n 'fn': (astNode: FnNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateFnOutcomes({ astNode, ...helperOptions }),\n 'for': (astNode: ForNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateForOutcomes({ astNode, ...helperOptions }),\n 'if-let': (astNode: IfLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfLetOutcomes({ astNode, ...helperOptions }),\n 'if': (astNode: IfNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfOutcomes({ astNode, ...helperOptions }),\n 'if-not': (astNode: IfNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateIfNotOutcomes({ astNode, ...helperOptions }),\n 'let': (astNode: LetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLetOutcomes({ astNode, ...helperOptions }),\n 'loop': (astNode: LoopNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateLoopOutcomes({ astNode, ...helperOptions }),\n 'or': (astNode: OrNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateOrOutcomes({ astNode, ...helperOptions }),\n '??': (astNode: QqNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateQqOutcomes({ astNode, ...helperOptions }),\n 'recur': (astNode: RecurNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateRecurOutcomes({ astNode, ...helperOptions }),\n 'time!': (astNode: TimeNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTimeOutcomes({ astNode, ...helperOptions }),\n 'throw': (astNode: ThrowNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateThrowOutcomes({ astNode, ...helperOptions }),\n 'try': (astNode: TryNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateTryOutcomes({ astNode, ...helperOptions }),\n 'when-first': (astNode: WhenFirstNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenFirstOutcomes({ astNode, ...helperOptions }),\n 'when-let': (astNode: WhenLetNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenLetOutcomes({ astNode, ...helperOptions }),\n 'when': (astNode: WhenNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenOutcomes({ astNode, ...helperOptions }),\n 'when-not': (astNode: WhenNotNode, helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'>) => calculateWhenNotOutcomes({ astNode, ...helperOptions }),\n\n} satisfies Record<SpecialExpressionName, unknown>\n","import type { Outcomes } from '..'\nimport { builtin } from '../../builtin'\nimport { AstNodeType } from '../../constants/constants'\nimport { evaluate } from '../../evaluator'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context } from '../../evaluator/interface'\nimport type { Ast, AstNode } from '../../parser/interface'\nimport { findUnresolvedIdentifiers } from '../findUnresolvedIdentifiers'\nimport { combinate } from '../utils'\nimport { specialExpressionCalculator } from './specialExpressionCalculators'\n\nexport type CalculatePossibleAstNodes = (astNode: AstNode, indentifiers?: string[]) => AstNode[]\nexport type CombinateAstNodes = (astNodes: AstNode[], indentifiers?: string[]) => AstNode[][]\nexport type IsAstComputable = (node: AstNode | AstNode[] | AstNode[][]) => boolean\nexport type AddGlobaleIdentifier = (name: string) => void\n\nexport interface CalculatePossibleAstNodesHelperOptions<T extends AstNode> {\n astNode: T\n nilNode: AstNode\n calculatePossibleAstNodes: CalculatePossibleAstNodes\n combinateAstNodes: CombinateAstNodes\n isAstComputable: IsAstComputable\n addGlobalIdentifier: AddGlobaleIdentifier\n}\n\nexport type CalculatePossibleAstNodesHelper<T extends AstNode> = (\n options: CalculatePossibleAstNodesHelperOptions<T>,\n) => AstNode[]\n\nfunction isIdempotent(normalExpressionName: string): boolean {\n return !normalExpressionName.endsWith('!')\n || normalExpressionName === 'write!'\n}\n\nexport function calculateOutcomes(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n // First, we try to calculate outcomes for the whole astNodes array.\n // If that fails, we try to calculate outcomes for the array without the first element.\n // If that fails, we try to calculate outcomes for the array without the first two elements.\n // And so on.\n\n // This makes it possible to calculate outcomes for e.g.\n // (write! x) x\n\n // Problems occur for e.g.\n // (def x 1) (write! x) x\n // This should output [1], but since (write! x) fails to calculate outcomes, we get null.\n\n // Ok, but not optimal\n // The contract is that when an array is returned, it must be correct.\n // But returning null (indicating that the calculation failed) is always a way out.\n for (let i = 0; i < astNodes.length; i++) {\n const usingAstNode = astNodes.slice(i)\n const outcomes = calculateOutcomesInner(contextStack, usingAstNode)\n if (outcomes !== null)\n return outcomes\n }\n return null\n}\n\nexport function calculateOutcomesInner(contextStack: ContextStack, astNodes: AstNode[]): Outcomes | null {\n const possibleAsts = calculatePossibleAsts(contextStack.clone(), astNodes)\n\n if (possibleAsts === null)\n return null\n\n const outcomes: Outcomes = []\n\n for (const possibleAst of possibleAsts) {\n const unresolvedIdentifiers = findUnresolvedIdentifiers(possibleAst, contextStack.clone(), builtin)\n if (unresolvedIdentifiers.size !== 0)\n return null\n\n const ast: Ast = {\n b: possibleAst,\n hasDebugData: true,\n }\n try {\n outcomes.push(evaluate(ast, contextStack.clone()))\n }\n catch (e) {\n outcomes.push(e)\n }\n }\n\n return outcomes\n}\n\nfunction calculatePossibleAsts(contextStack: ContextStack, astNodes: AstNode[]): AstNode[][] | null {\n let possibleAsts: AstNode[][]\n\n try {\n possibleAsts = combinate(\n astNodes.map(\n astNode => calculatePossibleAstNodes(contextStack, astNode),\n ),\n )\n }\n catch (e) {\n return null\n }\n return possibleAsts\n}\n\nconst nilNode: AstNode = { t: AstNodeType.ReservedSymbol, v: 'nil', token: undefined, p: [], n: undefined }\n\nfunction calculatePossibleAstNodes(contextStack: ContextStack, astNode: AstNode, newIndentifiers?: string[]): AstNode[] {\n const newContext = newIndentifiers\n ? newIndentifiers.reduce((acc: Context, identity) => {\n acc[identity] = { value: null }\n return acc\n }, {})\n : undefined\n const newContextStack = newContext ? contextStack.create(newContext) : contextStack\n\n if (astNode.t === AstNodeType.NormalExpression) {\n if (astNode.n && !isIdempotent(astNode.n))\n throw new Error(`NormalExpressionNode with name ${astNode.n} is not idempotent. Cannot calculate possible ASTs.`)\n\n return combinate(astNode.p.map(n => calculatePossibleAstNodes(newContextStack, n)))\n .map(p => ({ ...astNode, p }))\n }\n else if (astNode.t === AstNodeType.SpecialExpression) {\n const helperOptions: Omit<CalculatePossibleAstNodesHelperOptions<AstNode>, 'astNode'> = {\n nilNode,\n calculatePossibleAstNodes: (node: AstNode, identifiers?: string[]) => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers),\n combinateAstNodes: (nodes: AstNode[], identifiers?: string[]) =>\n combinate(nodes.map(node => calculatePossibleAstNodes(newContextStack.clone(), node, identifiers))),\n isAstComputable: (node: AstNode | AstNode[] | AstNode[][]) =>\n calculateOutcomesInner(newContextStack, Array.isArray(node) ? node.flat() : [node]) !== null,\n addGlobalIdentifier: (name: string) => newContextStack.globalContext[name] = { value: null },\n }\n\n // eslint-disable-next-line ts/no-unsafe-argument\n return specialExpressionCalculator[astNode.n](astNode as any, helperOptions)\n }\n return [astNode]\n}\n","import type { LitsParams } from '../Lits/Lits'\nimport { builtin } from '../builtin'\nimport type { Builtin } from '../builtin/interface'\nimport { type ContextStack, createContextStack } from '../evaluator/ContextStack'\nimport type { Ast, AstNode } from '../parser/interface'\nimport type { Token } from '../tokenizer/tokens'\nimport { calculateOutcomes } from './calculateOutcomes'\nimport { findUnresolvedIdentifiers } from './findUnresolvedIdentifiers'\n\nexport interface UnresolvedIdentifier {\n symbol: string\n token: Token | undefined\n}\n\n// A set of unresolved identifiers\nexport type UnresolvedIdentifiers = Set<UnresolvedIdentifier>\n\n// A set of potential outcomes from evaluating the AST\nexport type Outcomes = unknown[]\n\n// The result of analyzing an AST\nexport interface Analysis {\n unresolvedIdentifiers: UnresolvedIdentifiers\n outcomes: Outcomes | null\n}\n\n// A function that finds unresolved identifiers in an AST node or array of AST nodes\nexport type FindUnresolvedIdentifiers = (ast: Ast | AstNode[], contextStack: ContextStack, builtin: Builtin) => UnresolvedIdentifiers\n\nexport function analyze(ast: Ast, params: LitsParams): Analysis {\n return {\n unresolvedIdentifiers: findUnresolvedIdentifiers(ast, createContextStack(params), builtin),\n outcomes: calculateOutcomes(createContextStack(params), ast.b),\n }\n}\n","import { LitsError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { asStringToken } from '../tokenizer/common/commonTokens'\nimport { isA_NumberToken, isA_ReservedSymbolToken, isA_SymbolToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_NumberToken, isP_ReservedSymbolToken, isP_SymbolToken } from '../tokenizer/polish/polishTokens'\nimport { asToken } from '../tokenizer/tokens'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport type {\n NumberNode,\n ParseState,\n ReservedSymbolNode,\n StringNode,\n SymbolNode,\n} from './interface'\n\nexport function parseSymbol(tokenStream: TokenStream, parseState: ParseState): SymbolNode {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n if (!isA_SymbolToken(tkn) && !isP_SymbolToken(tkn)) {\n throw new LitsError(`Expected symbol token, got ${tkn[0]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n return {\n t: AstNodeType.Symbol,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseReservedSymbol(tokenStream: TokenStream, parseState: ParseState): ReservedSymbolNode {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n\n if (!isA_ReservedSymbolToken(tkn) && !isP_ReservedSymbolToken(tkn)) {\n throw new LitsError(`Expected symbol token, got ${tkn[0]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n return {\n t: AstNodeType.ReservedSymbol,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseNumber(tokenStream: TokenStream, parseState: ParseState): NumberNode {\n const tkn = tokenStream.tokens[parseState.position++]\n if (!isP_NumberToken(tkn) && !isA_NumberToken(tkn)) {\n throw new LitsError(`Expected number token, got ${tkn}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n const value = tkn[1]\n const negative = value[0] === '-'\n const numberString = negative ? value.substring(1) : value\n return {\n t: AstNodeType.Number,\n v: negative ? -Number(numberString) : Number(numberString),\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nexport function parseString(tokenStream: TokenStream, parseState: ParseState): StringNode {\n const tkn = asStringToken(tokenStream.tokens[parseState.position++])\n const value = tkn[1].substring(1, tkn[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return {\n t: AstNodeType.String,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n","import { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { asLBraceToken, asLBracketToken, assertEndNotationToken, assertRBraceToken, assertRBracketToken, isEndNotationToken, isLBraceToken, isLBracketToken, isLParenToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { A_OperatorToken, AlgebraicTokenType } from '../tokenizer/algebraic/algebraicTokens'\nimport { assertA_OperatorToken, isA_OperatorToken, isA_SymbolToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { Token } from '../tokenizer/tokens'\nimport { getTokenDebugData, hasTokenDebugData } from '../tokenizer/utils'\nimport { asSymbolNode, isSymbolNode } from '../typeGuards/astNode'\nimport { specialExpressionKeys } from '../builtin'\nimport type { SpecialExpressionName } from '../builtin'\nimport type { Arity } from '../builtin/utils'\nimport { parseNumber, parseReservedSymbol, parseString, parseSymbol } from './commonTokenParsers'\nimport type { AstNode, NormalExpressionNodeWithName, ParseState, StringNode, SymbolNode } from './interface'\n\nconst exponentiationPrecedence = 8\nfunction getPrecedence(operator: A_OperatorToken): number {\n const operatorSign = operator[1]\n switch (operatorSign) {\n case '.': // accessor\n return 9\n\n case '**': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 7\n\n case '+': // addition\n case '-': // subtraction\n return 6\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 5\n\n case '<': // less than\n case '<=': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n return 4\n\n case '==': // equal\n case '!=': // not equal\n return 3\n\n case '&': // bitwise AND\n case '^': // bitwise XOR\n case '|': // bitwise OR\n return 2\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 1\n\n /* v8 ignore next 8 */\n case '!': // logical NOT\n case '~': // bitwise NOT\n case '=': // property assignemnt operator\n case ',': // element delimiter\n case '=>': // Only used in lamda function parser\n case '...': // Only used in lamda function parser\n throw new Error(`Unknown binary operator: ${operatorSign}`)\n\n default:\n throw new Error(`Unknown binary operator: ${operatorSign satisfies never}`)\n }\n}\n\nfunction createNamedNormalExpressionNode(name: string, params: AstNode[], token: Token | undefined): NormalExpressionNodeWithName {\n return {\n t: AstNodeType.NormalExpression,\n n: name,\n p: params,\n token: getTokenDebugData(token) && token,\n }\n}\n\nfunction fromSymbolToStringNode(symbol: SymbolNode): StringNode {\n return {\n t: AstNodeType.String,\n v: symbol.v,\n token: getTokenDebugData(symbol.token) && symbol.token,\n p: [],\n n: undefined,\n }\n}\n\nfunction createAccessorNode(left: AstNode, right: AstNode, token: Token | undefined): AstNode {\n // Unnamed normal expression\n return {\n t: AstNodeType.NormalExpression,\n p: [left, right],\n n: undefined,\n token: getTokenDebugData(token) && token,\n }\n}\n\nfunction fromUnaryAlgebraicToAstNode(operator: A_OperatorToken, operand: AstNode): AstNode {\n const token: Token | undefined = hasTokenDebugData(operator) ? operand.token : undefined\n\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '+':\n return createNamedNormalExpressionNode('+', [operand], token)\n case '-':\n return createNamedNormalExpressionNode('-', [operand], token)\n case '!':\n return createNamedNormalExpressionNode('not', [operand], token)\n case '~':\n return createNamedNormalExpressionNode('bit-not', [operand], token)\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown operator: ${operatorName}`)\n }\n}\n\nfunction fromBinaryAlgebraicToAstNode(operator: A_OperatorToken, left: AstNode, right: AstNode): AstNode {\n const token: Token | undefined = hasTokenDebugData(operator) ? operator : undefined\n\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '.':\n return createAccessorNode(left, fromSymbolToStringNode(asSymbolNode(right, getTokenDebugData(token)?.sourceCodeInfo)), token)\n case '**': // exponentiation\n return createNamedNormalExpressionNode('pow', [left, right], token)\n case '*':\n return createNamedNormalExpressionNode('*', [left, right], token)\n case '/':\n return createNamedNormalExpressionNode('/', [left, right], token)\n case '%':\n return createNamedNormalExpressionNode('rem', [left, right], token)\n case '+':\n return createNamedNormalExpressionNode('+', [left, right], token)\n case '-':\n return createNamedNormalExpressionNode('-', [left, right], token)\n case '<<':\n return createNamedNormalExpressionNode('bit-shift-left', [left, right], token)\n case '>>':\n return createNamedNormalExpressionNode('bit-shift-right', [left, right], token)\n case '>>>':\n return createNamedNormalExpressionNode('unsigned-bit-shift-right', [left, right], token)\n case '<':\n return createNamedNormalExpressionNode('<', [left, right], token)\n case '<=':\n return createNamedNormalExpressionNode('<=', [left, right], token)\n case '>':\n return createNamedNormalExpressionNode('>', [left, right], token)\n case '>=':\n return createNamedNormalExpressionNode('>=', [left, right], token)\n case '==':\n return createNamedNormalExpressionNode('=', [left, right], token)\n case '!=':\n return createNamedNormalExpressionNode('not=', [left, right], token)\n case '&':\n return createNamedNormalExpressionNode('bit-and', [left, right], token)\n case '^':\n return createNamedNormalExpressionNode('bit-xor', [left, right], token)\n case '|':\n return createNamedNormalExpressionNode('bit-or', [left, right], token)\n case '&&':\n return {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n case '||':\n return {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n case '??':\n return {\n t: AstNodeType.SpecialExpression,\n n: '??',\n p: [left, right],\n token: getTokenDebugData(token) && token,\n }\n /* v8 ignore next 8 */\n case '!':\n case '~':\n case '=':\n case ',':\n case '=>':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, getTokenDebugData(token)?.sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, getTokenDebugData(token)?.sourceCodeInfo)\n }\n}\n\nexport class AlgebraicParser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): AstNode {\n return this.parseExpression()\n }\n\n private parseExpression(precedence = 0): AstNode {\n let left = this.parseOperand()\n\n while (!this.isAtEnd() && !isA_OperatorToken(this.peek(), ',') && !isRBracketToken(this.peek()) && !isRParenToken(this.peek())) {\n const operator = this.peek()\n\n // Handle index accessor\n if (isLParenToken(operator)) {\n if (precedence >= 9) {\n break\n }\n left = this.parseFunctionCall(left)\n }\n // Handle index accessor\n else if (isLBracketToken(operator)) {\n if (precedence >= 9) {\n break\n }\n this.advance()\n const right = this.parseExpression(1)\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n left = createAccessorNode(left, right, operator)\n }\n else {\n if (!isA_OperatorToken(operator)) {\n break\n }\n const newPrecedece = getPrecedence(operator)\n if (\n newPrecedece <= precedence\n // ** (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n this.advance()\n const right = this.parseExpression(newPrecedece)\n left = fromBinaryAlgebraicToAstNode(operator, left, right)\n }\n }\n\n return left\n }\n\n private parseOperand(): AstNode {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLamdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new Error('Expected closing parenthesis')\n }\n this.advance()\n return expression\n }\n\n // Unary operators\n if (isA_OperatorToken(token)) {\n const operatorName = token[1]\n if (['-', '+', '!', '~'].includes(operatorName)) {\n this.advance()\n const operand = this.parseOperand()\n return fromUnaryAlgebraicToAstNode(token, operand)\n }\n else {\n throw new Error(`Unknown unary operator: ${operatorName}`)\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n AlgebraicTokenType,\n | 'A_Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'A_MultiLineComment' // Should have been removed\n | 'A_SingleLineComment' // Should have been removed\n | 'A_Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'A_Number':\n return parseNumber(this.tokenStream, this.parseState)\n case 'String':\n return parseString(this.tokenStream, this.parseState)\n case 'A_Symbol': {\n return parseSymbol(this.tokenStream, this.parseState)\n }\n case 'A_ReservedSymbol':\n return parseReservedSymbol(this.tokenStream, this.parseState)\n case 'PolNotation': {\n this.parseState.algebraic = false\n let astNode: AstNode\n this.advance()\n do {\n astNode = this.parseState.parseToken(this.tokenStream, this.parseState)\n } while (!isEndNotationToken(this.peek()))\n this.advance()\n this.parseState.algebraic = true\n return astNode\n }\n case 'AlgNotation': {\n this.advance()\n const node = this.parseOperand()\n assertEndNotationToken(this.peek())\n this.advance()\n return node\n }\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, getTokenDebugData(token)?.sourceCodeInfo)\n }\n }\n\n private parseObject(): AstNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n const key = this.parseOperand()\n if (key.t !== AstNodeType.Symbol && key.t !== AstNodeType.String) {\n throw new LitsError('Expected key to be a symbol or a string', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n params.push({\n t: AstNodeType.String,\n v: key.v,\n token: getTokenDebugData(key.token) && key.token,\n p: [],\n n: undefined,\n })\n\n assertA_OperatorToken(this.peek(), '=')\n this.advance()\n\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private parseArray(): AstNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: AstNode[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private parseFunctionCall(symbol: AstNode): AstNode {\n const params: AstNode[] = []\n this.advance()\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isA_OperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n if (isA_OperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n if (isSymbolNode(symbol)) {\n if (specialExpressionKeys.includes(symbol.v)) {\n const name: SpecialExpressionName = symbol.v as SpecialExpressionName\n switch (name) {\n case '??':\n case 'and':\n case 'comment':\n case 'cond':\n case 'declared?':\n case 'if':\n case 'if-not':\n case 'or':\n case 'when':\n case 'when-not':\n return {\n t: AstNodeType.SpecialExpression,\n n: name,\n p: params,\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n case 'def':\n case 'defs':\n case 'let':\n case 'if-let':\n case 'when-let':\n case 'when-first':\n case 'fn':\n case 'defn':\n case 'defns':\n case 'try':\n case 'throw':\n case 'recur':\n case 'loop':\n case 'time!':\n case 'doseq':\n case 'for':\n case 'do':\n throw new Error(`Special expression ${name} is not available in algebraic notation`)\n default:\n throw new Error(`Unknown special expression: ${name satisfies never}`)\n }\n }\n return createNamedNormalExpressionNode(symbol.v, params, symbol.token)\n }\n else {\n return {\n t: AstNodeType.NormalExpression,\n n: undefined,\n p: [symbol, ...params],\n token: getTokenDebugData(symbol.token) && symbol.token,\n }\n }\n }\n\n parseLamdaFunction(): AstNode | null {\n const firstToken = this.peek()\n this.advance()\n let spread = false\n const args: string[] = []\n let restArg: string | undefined\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n if (isA_OperatorToken(this.peek(), '...')) {\n if (spread) {\n throw new LitsError('Multiple spread operators in lambda function', getTokenDebugData(this.peek())?.sourceCodeInfo)\n }\n this.advance()\n spread = true\n }\n const symbolToken = this.peek()\n if (!isA_SymbolToken(symbolToken)) {\n return null\n }\n if (spread) {\n restArg = symbolToken[1]\n }\n else {\n args.push(symbolToken[1])\n }\n this.advance()\n if (!isA_OperatorToken(this.peek(), ',') && !isRParenToken(this.peek())) {\n return null\n }\n if (isA_OperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n return null\n }\n this.advance()\n if (!isA_OperatorToken(this.peek(), '=>')) {\n return null\n }\n this.advance()\n const body = this.parseExpression()\n const arity: Arity = restArg !== undefined ? { min: args.length } : args.length\n\n return {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [{\n as: {\n m: args,\n r: restArg,\n b: [],\n },\n b: [body],\n a: arity,\n }],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n}\n","import type { SpecialExpressionName, SpecialExpressionNode } from '../builtin'\nimport { builtin } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { FunctionArguments } from '../builtin/utils'\nimport { AstNodeType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { withoutCommentNodes } from '../removeCommentNodes'\nimport { asLParenToken, assertEndNotationToken, assertLBracketToken, assertRParenToken, isEndNotationToken, isRBraceToken, isRBracketToken, isRParenToken } from '../tokenizer/common/commonTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport type { PolishTokenType } from '../tokenizer/polish/polishTokens'\nimport { asP_CommentToken, asP_RegexpShorthandToken, asP_StringShorthandToken, asP_SymbolToken, isP_FnShorthandToken, isP_ModifierToken, isP_SymbolToken } from '../tokenizer/polish/polishTokens'\nimport { asToken } from '../tokenizer/tokens'\nimport { getTokenDebugData } from '../tokenizer/utils'\nimport { asNonUndefined, assertEvenNumberOfParams } from '../typeGuards'\nimport { assertSymbolNode, isExpressionNode } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { AlgebraicParser } from './AlgebraicParser'\nimport { parseNumber, parseReservedSymbol, parseString, parseSymbol } from './commonTokenParsers'\nimport type {\n AstNode,\n BindingNode,\n CommentNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n ParseArgument,\n ParseExpression,\n ParseState,\n StringNode,\n} from './interface'\n\nfunction parseStringShorthand(tokenStream: TokenStream, parseState: ParseState): StringNode {\n const tkn = asP_StringShorthandToken(tokenStream.tokens[parseState.position++])\n const value = tkn[1].substring(1)\n\n return {\n t: AstNodeType.String,\n v: value,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nfunction parseComment(tokenStream: TokenStream, parseState: ParseState): CommentNode {\n const tkn = asP_CommentToken(tokenStream.tokens[parseState.position++])\n return {\n t: AstNodeType.Comment,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n}\n\nfunction parseTokensUntilClosingBracket(tokenStream: TokenStream, parseState: ParseState): AstNode[] {\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const astNodes: AstNode[] = []\n while (!isRParenToken(tkn) && !isRBracketToken(tkn)) {\n astNodes.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n return astNodes\n}\n\nconst parseExpression: ParseExpression = (tokenStream, parseState) => {\n const tkn = asToken(tokenStream.tokens[parseState.position + 1])\n if (isP_SymbolToken(tkn) && builtin.specialExpressions[tkn[1] as SpecialExpressionName])\n return parseSpecialExpression(tokenStream, parseState)\n\n return parseNormalExpression(tokenStream, parseState)\n}\n\nfunction parseArrayLitteral(tokenStream: TokenStream, parseState: ParseState): AstNode {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const params: AstNode[] = []\n while (!isRBracketToken(tkn)) {\n params.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n\n parseState.position += 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n}\n\nfunction parseObjectLitteral(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const params: AstNode[] = []\n while (!isRBraceToken(tkn)) {\n params.push(parseState.parseToken(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n\n parseState.position += 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n token: getTokenDebugData(firstToken) && firstToken,\n }\n\n assertEvenNumberOfParams(node)\n\n return node\n}\n\nfunction parseRegexpShorthand(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNodeWithName {\n const tkn = asP_RegexpShorthandToken(tokenStream.tokens[parseState.position++])\n\n const endStringPosition = tkn[1].lastIndexOf('\"')\n const regexpString = tkn[1].substring(2, endStringPosition)\n const optionsString = tkn[1].substring(endStringPosition + 1)\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: regexpString,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: optionsString,\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n token: getTokenDebugData(tkn) && tkn,\n }\n\n return node\n}\n\nconst placeholderRegexp = /^%([1-9]\\d?)?$/\nfunction parseFnShorthand(tokenStream: TokenStream, parseState: ParseState): FnNode {\n const firstToken = asToken(tokenStream.tokens[parseState.position++])\n const startPos = parseState.position + 1\n const exprNode = parseExpression(tokenStream, parseState)\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. % = NAKED, %1, %2, %3, etc = WITH_1\n for (let pos = startPos; pos < parseState.position - 1; pos += 1) {\n const tkn = asToken(tokenStream.tokens[pos])\n if (isP_SymbolToken(tkn)) {\n const match = placeholderRegexp.exec(tkn[1])\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', getTokenDebugData(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', getTokenDebugData(firstToken)?.sourceCodeInfo)\n }\n }\n if (isP_FnShorthandToken(tkn))\n throw new LitsError('Nested shortcut functions are not allowed', getTokenDebugData(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 token: getTokenDebugData(firstToken) && firstToken,\n }\n\n return node\n}\n\nconst parseArgument: ParseArgument = (tokenStream, parseState) => {\n const tkn = asToken(tokenStream.tokens[parseState.position++])\n\n if (isP_SymbolToken(tkn)) {\n return {\n t: AstNodeType.Argument,\n n: tkn[1],\n p: [],\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else if (isP_ModifierToken(tkn)) {\n return {\n t: AstNodeType.Modifier,\n v: tkn[1],\n p: [],\n n: undefined,\n token: getTokenDebugData(tkn) && tkn,\n }\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n}\n\nfunction parseBindings(tokenStream: TokenStream, parseState: ParseState): BindingNode[] {\n assertLBracketToken(tokenStream.tokens[parseState.position++])\n let tkn = asToken(tokenStream.tokens[parseState.position])\n const bindings: BindingNode[] = []\n while (!isRBracketToken(tkn)) {\n bindings.push(parseBinding(tokenStream, parseState))\n tkn = asToken(tokenStream.tokens[parseState.position])\n }\n parseState.position += 1\n\n return bindings\n}\n\nfunction parseBinding(tokenStream: TokenStream, parseState: ParseState): BindingNode {\n const firstToken = asP_SymbolToken(tokenStream.tokens[parseState.position++])\n const name = firstToken[1]\n\n const value = parseState.parseToken(tokenStream, parseState)\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name,\n v: value,\n p: [],\n token: getTokenDebugData(firstToken) && firstToken,\n }\n return node\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, parseState: ParseState): NormalExpressionNode {\n const startBracketToken = tokenStream.hasDebugData ? asLParenToken(tokenStream.tokens[parseState.position]) : undefined\n parseState.position += 1\n const fnNode = parseState.parseToken(tokenStream, parseState)\n\n const params = parseTokensUntilClosingBracket(tokenStream, parseState)\n\n assertRParenToken(tokenStream.tokens[parseState.position++])\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n p: [fnNode, ...params],\n n: undefined,\n token: startBracketToken,\n }\n\n return node\n }\n\n assertSymbolNode(fnNode, getTokenDebugData(fnNode.token)?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n token: startBracketToken,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression) {\n builtinExpression.validate?.({\n ...node,\n p: withoutCommentNodes(node.p),\n })\n }\n\n return node\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, parseState: ParseState): SpecialExpressionNode {\n const firstToken = asLParenToken(tokenStream.tokens[parseState.position++])\n\n const nameToken = asP_SymbolToken(tokenStream.tokens[parseState.position++])\n const expressionName = nameToken[1] as SpecialExpressionName\n\n const { parse } = asNonUndefined(builtin.specialExpressions[expressionName], getTokenDebugData(nameToken)?.sourceCodeInfo)\n\n const node = parse(tokenStream, parseState, firstToken, {\n parseExpression,\n parseTokensUntilClosingBracket,\n parseToken: parseState.parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n return node\n}\n\nexport function parsePolishToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n const tkn = asToken(tokenStream.tokens[parseState.position])\n\n const tokenType = tkn[0] as PolishTokenType\n switch (tokenType) {\n case 'String':\n return parseString(tokenStream, parseState)\n case 'P_Number':\n return parseNumber(tokenStream, parseState)\n case 'P_StringShorthand':\n return parseStringShorthand(tokenStream, parseState)\n case 'P_Symbol':\n return parseSymbol(tokenStream, parseState)\n case 'P_ReservedSymbol':\n return parseReservedSymbol(tokenStream, parseState)\n case 'LParen':\n return parseExpression(tokenStream, parseState)\n case 'LBracket':\n return parseArrayLitteral(tokenStream, parseState)\n case 'LBrace':\n return parseObjectLitteral(tokenStream, parseState)\n case 'P_RegexpShorthand':\n return parseRegexpShorthand(tokenStream, parseState)\n case 'P_FnShorthand':\n return parseFnShorthand(tokenStream, parseState)\n case 'P_Comment':\n return parseComment(tokenStream, parseState)\n case 'AlgNotation': {\n parseState.position += 1\n parseState.algebraic = true\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n const node = algebraicParser.parse()\n assertEndNotationToken(tokenStream.tokens[parseState.position++])\n parseState.algebraic = false\n return node\n }\n case 'PolNotation': {\n let node: AstNode\n parseState.position += 1\n do {\n node = parsePolishToken(tokenStream, parseState)\n } while (!isEndNotationToken(asToken(tokenStream.tokens[parseState.position])))\n parseState.position += 1\n return node\n }\n case 'P_CollectionAccessor':\n case 'P_Modifier':\n case 'RParen':\n case 'RBracket':\n case 'RBrace':\n case 'P_Whitespace':\n case 'EndNotation':\n break\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unrecognized token: ${tokenType satisfies never} ${tkn[1]}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n }\n throw new LitsError(`Unrecognized token: ${tokenType}${tkn[1] ? ` ${tkn[1]}` : ''}`, getTokenDebugData(tkn)?.sourceCodeInfo)\n}\n","import { isA_WhitespaceToken } from '../tokenizer/algebraic/algebraicTokens'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { isP_CommentToken, isP_WhitespaceToken } from '../tokenizer/polish/polishTokens'\nimport { AlgebraicParser } from './AlgebraicParser'\nimport type { Ast, AstNode, ParseState } from './interface'\nimport { parsePolishToken } from './PolishTokenParsers'\n\nexport function parse(tokenStream: TokenStream): Ast {\n const safeTokenStream = removeUnnecessaryTokens(tokenStream)\n\n const ast: Ast = {\n b: [],\n hasDebugData: safeTokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n algebraic: safeTokenStream.algebraic ?? false,\n parseToken,\n }\n\n while (parseState.position < safeTokenStream.tokens.length) {\n ast.b.push(parseToken(safeTokenStream, parseState))\n }\n\n return ast\n}\n\nfunction removeUnnecessaryTokens(tokenStream: TokenStream): TokenStream {\n const tokens = tokenStream.tokens.filter((token) => {\n if (isP_CommentToken(token) || isA_WhitespaceToken(token) || isP_WhitespaceToken(token)) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n\nexport function parseToken(tokenStream: TokenStream, parseState: ParseState): AstNode {\n if (parseState.algebraic) {\n const algebraicParser = new AlgebraicParser(tokenStream, parseState)\n return algebraicParser.parse()\n }\n\n return parsePolishToken(tokenStream, parseState)\n}\n","export const polishIdentifierCharacterClass = '[\\\\w@%^?=!$<>+*/:-]'\nexport const polishIdentifierFirstCharacterClass = '[a-zA-Z_@%^?=!$<>+*/-]'\nexport const algebraicIdentifierCharacterClass = '[\\\\w$:]'\nexport const algebraicIdentifierFirstCharacterClass = '[a-zA-Z_$]'\n","import { LitsError } from '../../errors'\nimport type { TokenDescriptor, Tokenizer } from '../interface'\nimport type { SimpleToken } from '../tokens'\nimport type { AlgebraicNotationToken, EndNotationToken, LBraceToken, LBracketToken, LParenToken, PolishNotationToken, RBraceToken, RBracketToken, RParenToken, StringToken } from './commonTokens'\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nexport function isNoMatch(tokenDescriptor: TokenDescriptor<any>): tokenDescriptor is TokenDescriptor<never> {\n return tokenDescriptor[0] === 0\n}\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeSimpleToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeSimpleToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeSimpleToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeSimpleToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeSimpleToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeSimpleToken('RBrace', '}', input, position)\nconst tokenizePolishNotation: Tokenizer<PolishNotationToken> = (input, position) =>\n tokenizeSimpleToken('PolNotation', '$`', input, position)\nconst tokenizeAlgebraicNotation: Tokenizer<AlgebraicNotationToken> = (input, position) =>\n tokenizeSimpleToken('AlgNotation', '@`', input, position)\nconst tokenizeEndNotation: Tokenizer<EndNotationToken> = (input, position) =>\n tokenizeSimpleToken('EndNotation', '`', input, position)\n\nexport const tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nexport function tokenizeSimpleToken<T extends SimpleToken>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type] as T]\n else\n return NO_MATCH\n}\n\nexport const commonTokenizers = [\n tokenizePolishNotation,\n tokenizeAlgebraicNotation,\n tokenizeEndNotation,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n] as const\n","import { LitsError } from '../../errors'\nimport { polishIdentifierCharacterClass } from '../../identifier'\nimport {\n NO_MATCH,\n commonTokenizers,\n isNoMatch,\n tokenizeString,\n} from '../common/commonTokenizers'\nimport type { Tokenizer } from '../interface'\nimport { polishReservedNamesRecord } from './polishReservedNames'\nimport type {\n ModifierName,\n P_CollectionAccessorToken,\n P_CommentToken,\n P_FnShorthandToken,\n P_ModifierToken,\n P_NumberToken,\n P_RegexpShorthandToken,\n P_ReservedSymbolToken,\n P_StringShorthandToken,\n P_SymbolToken,\n P_WhitespaceToken,\n PolishToken,\n} from './polishTokens'\nimport { asP_SymbolToken, modifierNames } from './polishTokens'\n\nconst whitespaceRegExp = /\\s|,/\n\nexport const tokenizeP_Comment: Tokenizer<P_CommentToken> = (input, position) => {\n if (input[position] === ';') {\n let length = 0\n let value = ''\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['P_Comment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeP_Whitespace: Tokenizer<P_WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['P_Whitespace', value]]\n}\n\nconst endOfNumberRegExp = /[\\s)\\]},;#`]/\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeP_Number: Tokenizer<P_NumberToken> = (input, position) => {\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 = input[i] as string\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, ['P_Number', value]]\n}\n\nexport const P_symbolRegExp = new RegExp(polishIdentifierCharacterClass)\nexport const tokenizeP_Symbol: Tokenizer<P_SymbolToken> = (input, position) => {\n let char = input[position]\n let length = 0\n let value = ''\n\n if (!char || !P_symbolRegExp.test(char))\n return NO_MATCH\n\n while (char && P_symbolRegExp.test(char)) {\n value += char\n length += 1\n char = input[position + length]\n }\n\n return [length, ['P_Symbol', value]]\n}\n\nexport const tokenizeP_FnShorthand: Tokenizer<P_FnShorthandToken> = (input, position) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [1, ['P_FnShorthand']]\n}\n\nexport const tokenizeP_ReservedSymbol: Tokenizer<P_ReservedSymbolToken> = (input, position) => {\n for (const [reservedName, { forbidden }] of Object.entries(polishReservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && P_symbolRegExp.test(nextChar)) {\n continue\n }\n\n const symbol = input.substring(position, position + length)\n if (symbol === reservedName) {\n if (forbidden)\n throw new LitsError(`${symbol} is forbidden!`, undefined)\n\n return [length, ['P_ReservedSymbol', reservedName]]\n }\n }\n return NO_MATCH\n}\n\nconst tokenizeP_StringShorthand: Tokenizer<P_StringShorthandToken> = (input, position) => {\n if (input[position] !== ':')\n return NO_MATCH\n\n const symbolDescription = tokenizeP_Symbol(input, position + 1)\n if (isNoMatch(symbolDescription)) {\n return symbolDescription\n }\n\n const symbolToken = asP_SymbolToken(symbolDescription[1])\n\n return [symbolDescription[0] + 1, ['P_StringShorthand', `:${symbolToken[1]}`]]\n}\n\nexport const tokenizeP_Modifier: Tokenizer<P_ModifierToken> = (input, position) => {\n for (const modifierName of modifierNames) {\n const length = modifierName.length\n const charAfterModifier = input[position + length]\n if (input.substring(position, position + length) === modifierName && (!charAfterModifier || !P_symbolRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifierName\n return [length, ['P_Modifier', value]]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeP_CollectionAccessor: Tokenizer<P_CollectionAccessorToken> = (input, position) => {\n const char = input[position]\n if (char !== '.' && char !== '#')\n return NO_MATCH\n\n return [1, ['P_CollectionAccessor', char]]\n}\n\nexport const tokenizeP_RegexpShorthand: Tokenizer<P_RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['P_RegexpShorthand', `#${token[1]}${options}`]]\n}\n\n// All tokenizers, order matters!\nexport const polishTokenizers = [\n tokenizeP_Whitespace,\n tokenizeP_Comment,\n ...commonTokenizers,\n tokenizeP_StringShorthand,\n tokenizeP_Number,\n tokenizeP_ReservedSymbol,\n tokenizeP_Symbol,\n tokenizeP_Modifier,\n tokenizeP_RegexpShorthand,\n tokenizeP_FnShorthand,\n tokenizeP_CollectionAccessor,\n] as const satisfies Tokenizer<PolishToken>[]\n","import type { Any } from '../../interface'\n\nexport const algebraicReservedNamesRecord: Record<string, { value: Any, forbidden?: true }> = {\n 'true': { value: true },\n 'false': { value: false },\n 'nil': { value: null },\n 'null': { value: null },\n 'def': { value: null, forbidden: true },\n 'defs': { value: null, forbidden: true },\n 'let': { value: null, forbidden: true },\n 'if-let': { value: null, forbidden: true },\n 'when-let': { value: null, forbidden: true },\n 'when-first': { value: null, forbidden: true },\n 'fn': { value: null, forbidden: true },\n 'defn': { value: null, forbidden: true },\n 'defns': { value: null, forbidden: true },\n 'try': { value: null, forbidden: true },\n 'throw': { value: null, forbidden: true },\n 'recur': { value: null, forbidden: true },\n 'loop': { value: null, forbidden: true },\n 'time!': { value: null, forbidden: true },\n 'doseq': { value: null, forbidden: true },\n 'for': { value: null, forbidden: true },\n 'do': { value: null, forbidden: true },\n\n} as const\n\ntype AlgebraicReservedName = keyof typeof algebraicReservedNamesRecord\n\nexport const algebraicReservedNames: AlgebraicReservedName[] = Object.keys(algebraicReservedNamesRecord)\n","import { LitsError } from '../../errors'\nimport { algebraicIdentifierCharacterClass, algebraicIdentifierFirstCharacterClass } from '../../identifier'\nimport {\n NO_MATCH,\n commonTokenizers,\n} from '../common/commonTokenizers'\nimport type { Tokenizer } from '../interface'\nimport { tokenizeP_Symbol } from '../polish/polishTokenizers'\nimport { algebraicReservedNamesRecord } from './algebraicReservedNames'\nimport type { A_MultiLineCommentToken, A_NumberToken, A_OperatorToken, A_ReservedSymbolToken, A_SingleLineCommentToken, A_SymbolToken, A_WhitespaceToken, AlgebraicToken } from './algebraicTokens'\nimport { isAlgebraicOperator } from './algebraicTokens'\n\nconst identifierRegExp = new RegExp(algebraicIdentifierCharacterClass)\nconst identifierFirstCharacterRegExp = new RegExp(algebraicIdentifierFirstCharacterClass)\nconst whitespaceRegExp = /\\s/\n\nexport const tokenizeA_Whitespace: Tokenizer<A_WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['A_Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst firstCharRegExp = /[0-9.]/\nexport const tokenizeA_Number: Tokenizer<A_NumberToken> = (input, position) => {\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 = input[i] as string\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\n if (type === 'decimal') {\n if (hasDecimals) {\n if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n else if (char !== '.' && !decimalNumberRegExp.test(char)) {\n break\n }\n }\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n\n if (char === '.') {\n const nextChar = input[i + 1]\n if (typeof nextChar === 'string' && !decimalNumberRegExp.test(nextChar))\n break\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, ['A_Number', value]]\n}\n\nexport const tokenizeA_ReservedSymbolToken: Tokenizer<A_ReservedSymbolToken> = (input, position) => {\n for (const [reservedName, { forbidden }] of Object.entries(algebraicReservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && identifierRegExp.test(nextChar))\n continue\n\n const name = input.substring(position, position + length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, undefined)\n\n return [length, ['A_ReservedSymbol', reservedName]]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_Symbol: Tokenizer<A_SymbolToken> = (input, position) => {\n const initialPosition = position\n let value = input[position]\n\n if (!value) {\n return NO_MATCH\n }\n\n if (identifierFirstCharacterRegExp.test(value)) {\n position += 1\n let char = input[position]\n\n while (char && identifierRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['A_Symbol', value]]\n }\n\n if (value === '\\'') {\n position += 1\n const [count, pfSymbolToken] = tokenizeP_Symbol(input, position)\n if (pfSymbolToken === undefined) {\n return NO_MATCH\n }\n position += count\n if (input[position] !== '\\'') {\n return NO_MATCH\n }\n position += 1\n const pfValue = pfSymbolToken[1]\n return [position - initialPosition, ['A_Symbol', pfValue]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeA_Operator: Tokenizer<A_OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isAlgebraicOperator(threeChars)) {\n return [3, ['A_Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isAlgebraicOperator(twoChars)) {\n return [2, ['A_Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isAlgebraicOperator(oneChar)) {\n return [1, ['A_Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_MultiLineComment: Tokenizer<A_MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while (input[position + length] !== '*' && input[position + length + 1] !== '/' && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['A_MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeA_SingleLineComment: Tokenizer<A_SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['A_SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const algebraicTokenizers = [\n tokenizeA_Whitespace,\n tokenizeA_MultiLineComment,\n tokenizeA_SingleLineComment,\n ...commonTokenizers,\n tokenizeA_Number,\n tokenizeA_Operator,\n tokenizeA_ReservedSymbolToken,\n tokenizeA_Symbol,\n] as const satisfies Tokenizer<AlgebraicToken>[]\n","import { LitsError } from '../../errors'\nimport { asNonUndefined } from '../../typeGuards'\nimport { assertNumber, isNumber } from '../../typeGuards/number'\nimport type { SourceCodeInfo, TokenStream } from '../interface'\nimport { addTokenDebugData, getTokenDebugData } from '../utils'\nimport type { P_CollectionAccessorToken, P_StringShorthandToken } from '../polish/polishTokens'\nimport { asP_CollectionAccessorToken, assertP_NumberToken, assertP_SymbolToken, isP_CollectionAccessorToken, isP_FnShorthandToken, isP_SymbolToken } from '../polish/polishTokens'\nimport { isRBraceToken, isRBracketToken, isRParenToken } from '../common/commonTokens'\nimport { asToken } from '../tokens'\nimport type { SugarFunction } from '.'\n\nexport const applyCollectionAccessors: SugarFunction = (tokenStream) => {\n let dotTokenIndex = tokenStream.tokens.findIndex(isP_CollectionAccessorToken)\n while (dotTokenIndex >= 0) {\n applyCollectionAccessor(tokenStream, dotTokenIndex)\n dotTokenIndex = tokenStream.tokens.findIndex(isP_CollectionAccessorToken)\n }\n return tokenStream\n}\n\nfunction applyCollectionAccessor(tokenStream: TokenStream, position: number) {\n const dotTkn = asP_CollectionAccessorToken(tokenStream.tokens[position])\n const debugData = getTokenDebugData(dotTkn)\n const backPosition = getPositionBackwards(tokenStream, position, debugData?.sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, debugData?.sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, ['LParen'])\n const nextTkn = asToken(tokenStream.tokens[position + 1])\n if (dotTkn[1] === '.') {\n assertP_SymbolToken(nextTkn)\n const token: P_StringShorthandToken = ['P_StringShorthand', `:${nextTkn[1]}`]\n tokenStream.tokens[position + 1] = token\n\n const nextTkndebugData = getTokenDebugData(nextTkn)\n if (nextTkndebugData) {\n addTokenDebugData(token, nextTkndebugData)\n }\n }\n else {\n assertP_NumberToken(nextTkn)\n assertNumber(Number(nextTkn[1]), debugData?.sourceCodeInfo, { integer: true, nonNegative: true })\n\n tokenStream.tokens[position + 1] = ['P_Number', nextTkn[1]]\n }\n tokenStream.tokens.splice(position + 2, 0, ['RParen'])\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: 'LParen' | 'LBracket' | 'LBrace' | null = null\n let closeBracket: 'RParen' | 'RBracket' | 'RBrace' | null = null\n\n if (isRParenToken(prevToken)) {\n openBracket = 'LParen'\n closeBracket = 'RParen'\n }\n else if (isRBracketToken(prevToken)) {\n openBracket = 'LBracket'\n closeBracket = 'RBracket'\n }\n else if (isRBraceToken(prevToken)) {\n openBracket = 'LBrace'\n closeBracket = 'RBrace'\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[0] === openBracket) {\n bracketCount += 1\n }\n else if (tkn[0] === closeBracket) {\n bracketCount -= 1\n }\n }\n if (openBracket === 'LParen' && position > 0) {\n const tokenBeforeBracket = asNonUndefined(tokenStream.tokens[position - 1])\n if (isP_FnShorthandToken(tokenBeforeBracket))\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: P_CollectionAccessorToken,\n sourceCodeInfo: SourceCodeInfo | undefined,\n) {\n const tkn = tokenStream.tokens[position + 1]\n\n if (dotTkn[1] === '.' && !isP_SymbolToken(tkn)) {\n throw new LitsError('# as a collection accessor must be followed by an name', sourceCodeInfo)\n }\n\n if (dotTkn[1] === '#' && isNumber(tkn)) {\n throw new LitsError('# as a collection accessor must be followed by an integer', sourceCodeInfo)\n }\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 { LitsError } from '../errors'\nimport { algebraicTokenizers } from './algebraic/algebraicTokenizers'\nimport { isAlgebraicNotationToken, isEndNotationToken, isPolishNotationToken } from './common/commonTokens'\nimport type { SourceCodeInfo, TokenDescriptor, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { polishTokenizers } from './polish/polishTokenizers'\nimport { getSugar } from './sugar'\nimport type { Token } from './tokens'\nimport type { TokenDebugData } from './utils'\nimport { addTokenDebugData } from './utils'\n\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const debug = !!params.debug\n const notationStack: ('polish' | 'algebraic')[] = [params.algebraic ? 'algebraic' : 'polish']\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath: params.filePath,\n hasDebugData: debug,\n algebraic: !!params.algebraic,\n }\n\n while (position < input.length) {\n const tokenizers = notationStack.at(-1) === 'algebraic' ? algebraicTokenizers : polishTokenizers\n const tokenDescriptor = getCurrentToken(input, position, tokenizers)\n\n const debugData: TokenDebugData | undefined = debug\n ? {\n sourceCodeInfo: createSourceCodeInfo(input, position, params.filePath),\n }\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, debugData?.sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (debugData) {\n addTokenDebugData(token, debugData)\n }\n\n tokenStream.tokens.push(token)\n if (isAlgebraicNotationToken(token)) {\n notationStack.push('algebraic')\n }\n if (isPolishNotationToken(token)) {\n notationStack.push('polish')\n }\n if (isEndNotationToken(token)) {\n notationStack.pop()\n if (notationStack.length < 1) {\n throw new LitsError('Unexpected end directive `.', debugData?.sourceCodeInfo)\n }\n }\n }\n }\n\n if (notationStack.length > 1) {\n throw new LitsError('Missing end directive `.', createSourceCodeInfo(input, position, params.filePath))\n }\n\n applySugar(tokenStream)\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number, tokenizers: Tokenizer<Token>[]): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n let tryNext = true\n while (tryNext) {\n if (position >= input.length) {\n return [position - initialPosition, undefined]\n }\n tryNext = false\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n if (!token) {\n tryNext = true\n break\n }\n\n return [position - initialPosition, token]\n }\n }\n return null\n}\n\nfunction applySugar(tokenStream: TokenStream) {\n const sugar = getSugar()\n sugar.forEach(sugarFn => sugarFn(tokenStream))\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport { isP_SymbolToken } from '../tokenizer/polish/polishTokens'\n\nexport function transformTokens(tokenStram: TokenStream, transformer: (name: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => !isP_SymbolToken(token) ? token : [token[0], transformer(token[1])]),\n }\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport { type Token, assertSimpleToken, isValueToken } from '../tokenizer/tokens'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${untokenizeToken(token)}`\n }, '')\n}\n\nfunction untokenizeToken(token: Token): string {\n if (isValueToken(token)) {\n return token[1]\n }\n assertSimpleToken(token)\n const tokenType = token[0]\n switch (tokenType) {\n case 'LParen': return '('\n case 'RParen': return ')'\n case 'LBracket': return '['\n case 'RBracket': return ']'\n case 'LBrace': return '{'\n case 'RBrace': return '}'\n case 'PolNotation': return '$`'\n case 'AlgNotation': return '@`'\n case 'EndNotation': return '`'\n case 'P_FnShorthand': return '#'\n\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown token type: ${tokenType satisfies never}`)\n }\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 type { Analysis } from '../analyze'\nimport { analyze } from '../analyze'\nimport { evaluate } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream, TokenizeParams } from '../tokenizer/interface'\nimport { transformTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface 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 debug?: boolean\n algebraic?: boolean\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n algebraic?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n private algebraic: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.algebraic = config.algebraic ?? 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)\n return this.evaluate(ast, params)\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string, params: LitsParams = {}): Analysis {\n const ast = this.generateAst(program, params)\n\n return analyze(ast, params)\n }\n\n public tokenize(program: string, tokenizeParams: TokenizeParams = {}): TokenStream {\n const debug = tokenizeParams.debug ?? this.debug\n const algebraic = tokenizeParams.algebraic ?? this.algebraic\n return tokenize(program, { ...tokenizeParams, debug, algebraic })\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n public evaluate(ast: Ast, params: LitsParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transform(tokenStream: TokenStream, transformer: (name: string) => string): TokenStream {\n return transformTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\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)\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(program: string, params: LitsParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n debug: params.debug ?? this.debug,\n filePath: params.filePath,\n algebraic: params.algebraic ?? this.algebraic,\n\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import type { CollectionApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const collectionReference: Record<CollectionApiName, FunctionReference<'Collection'>> = {\n 'count': {\n title: 'count',\n category: 'Collection',\n linkName: 'count',\n returns: {\n type: 'number',\n },\n args: {\n coll: {\n type: ['collection', 'string', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns number of elements in $coll.',\n examples: [\n '(count [1 2 3])',\n '(count [])',\n '(count (object :a 1))',\n '(count \"\")',\n '(count \"Albert\")',\n '(count nil)',\n ],\n },\n 'get': {\n title: 'get',\n category: 'Collection',\n linkName: 'get',\n returns: {\n type: 'any',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'key': {\n type: ['string', 'integer'],\n },\n 'not-found': {\n type: 'any',\n description: 'Default value to return if $key is not found.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'key'] },\n { argumentNames: ['coll', 'key', 'not-found'] },\n ],\n description: 'Returns value in $coll mapped at \\`key\\`.',\n examples: [\n `\n(get\n [1 2 3]\n 1)`,\n `\n(get\n []\n 1)`,\n `\n(get\n []\n 1\n \"default\")`,\n `\n(get\n (object :a 1)\n :a)`,\n `\n(get\n (object :a 1)\n :b)`,\n `\n(get\n (object :a 1)\n :b\n \"default\")`,\n `\n(get\n nil\n :a)`,\n `\n(get\n nil\n :b\n \"default\")`,\n ],\n },\n 'get-in': {\n title: 'get-in',\n category: 'Collection',\n linkName: 'get-in',\n returns: {\n type: 'any',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'keys': {\n type: 'array',\n },\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['coll', 'keys'] },\n { argumentNames: ['coll', 'keys', 'not-found'] },\n ],\n description: 'Returns the value in a nested collection, where $keys is an array of keys. Returns $not-found if the key is not present. If $not-found is not set, `nil` is returned.',\n examples: [\n `\n(get-in\n [[1 2 3] [4 {:a \"Kalle\"} 6]]\n [1 1 :a 0])`,\n `\n(get-in\n [[1 2 3] [4 {:a \"Kalle\"} 6]]\n [1 1 :b 0])`,\n `\n(get-in\n [[1 2 3] [4 {:a \"Kalle\"} 6]]\n [1 1 :b 0]\n \"Lisa\")`,\n ],\n },\n 'contains?': {\n title: 'contains?',\n category: 'Collection',\n linkName: 'contains_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'nil'],\n },\n key: {\n type: ['string', 'number'],\n },\n },\n variants: [\n { argumentNames: ['coll', 'key'] },\n ],\n description: 'Returns `true` if $coll contains $key, otherwise returns `false`.',\n examples: [\n `\n(contains?\n []\n 1)`,\n `\n(contains?\n [1]\n 1)`,\n `\n(contains?\n [1 2 3]\n 1)`,\n `\n(contains?\n {}\n :a)`,\n `\n(contains?\n {:a 1 :b 2}\n :a)`,\n ],\n },\n 'has?': {\n title: 'has?',\n category: 'Collection',\n linkName: 'has_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'nil'],\n },\n value: {\n type: ['any'],\n description: 'Only support primitive values: `number`, `string`, `boolean`, or `nil`.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'value'] },\n ],\n description: 'Returns `true` if $coll has $value, otherwise returns `false`.',\n examples: [\n `\n(has?\n [1 2 3]\n 1)`,\n `\n(has?\n [1 2 3]\n 0)`,\n `\n(has?\n {:a 1 :b 2}\n 1)`,\n `\n(has?\n {:a 1 :b 2}\n 0)`,\n `\n(has?\n \"Albert\"\n :A)`,\n `\n(has?\n \"Albert\"\n :a)`,\n `\n(has?\n nil\n :a)`,\n ],\n },\n 'has-some?': {\n title: 'has-some?',\n category: 'Collection',\n linkName: 'has-some_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n values: {\n type: 'any',\n array: true,\n description: 'Only support primitive values: `number`, `string`, `boolean`, or `nil`.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'values'] },\n ],\n description: 'Returns `true` if $coll has any of the elements in $values, otherwise returns `false`.',\n examples: [\n `\n(has-some?\n []\n [])`,\n `\n(has-some?\n [1 2 3]\n [])`,\n `\n(has-some?\n [1 2 3]\n [0])`,\n `\n (has-some?\n [1 2 3]\n [0 1])`,\n `\n(has-some?\n (object :a 1 :b 2)\n [0])`,\n `\n(has-some?\n (object :a 1 :b 2)\n [0 1])`,\n `\n(has-some?\n \"Albert\"\n \"xyz\")`,\n `\n(has-some?\n \"Albert\"\n \"xyzl\")`,\n `\n(has-some?\n [:a :b :c :d]\n \"xyz\")`,\n `\n(has-some?\n [:a :b :c :d]\n \"xyzc\")`,\n `\n(has-some?\n nil\n [1])`,\n `\n(has-some?\n nil\n \"\")`,\n ],\n },\n 'has-every?': {\n title: 'has-every?',\n category: 'Collection',\n linkName: 'has-every_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n values: {\n type: 'any',\n array: true,\n description: 'Only support primitive values: `number`, `string`, `boolean`, or `nil`.',\n },\n },\n variants: [\n { argumentNames: ['coll', 'values'] },\n ],\n description: 'Returns `true` if $coll has all of the elements in $values, otherwise returns `false`.',\n examples: [\n `\n(has-every?\n []\n [])`,\n `\n(has-every?\n [1 2 3]\n [])`,\n `\n(has-every?\n [1 2 3]\n [0 1])`,\n `\n(has-every?\n [1 2 3]\n [1 2])`,\n `\n(has-every?\n (object :a 1 :b 2)\n [0 1])`,\n `\n(has-every?\n (object :a 1 :b 2)\n [1 2])`,\n `\n(has-every?\n \"Albert\"\n \"xyz\")`,\n `\n(has-every?\n \"Albert\"\n \"treblA\")`,\n `\n(has-every?\n [:a :b :c :d]\n \"xyz\")`,\n `\n(has-every?\n [:a :b :c :d]\n \"dcba\")`,\n `\n(has-every?\n nil\n \"abc\")`,\n `\n(has-every?\n nil\n [0, 1, nil])`,\n `\n(has-every?\n nil\n nil)`,\n `\n(has-every?\n [1, 2, 3]\n nil)`,\n ],\n },\n 'assoc': {\n title: 'assoc',\n category: 'Collection',\n linkName: 'assoc',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n key: {\n type: ['string', 'number'],\n },\n value: {\n type: 'any',\n },\n kvs: {\n type: 'any',\n description: 'Key-value pairs to associate.',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'key', 'value'] },\n { argumentNames: ['coll', 'key', 'value', 'kvs'] },\n ],\n description: `\nAdd or replace the value of element $key to $value in $coll. Repeated for all key-value pairs in $kvs. \nIf $coll is an \\'array\\', $key must be \\`number\\` satisfying \\`0 <=\\` $key \\`<= length\\`.`,\n examples: [\n `\n(assoc\n [1 2 3]\n 1\n \"Two\")`,\n `\n(assoc\n [1 2 3]\n 3\n \"Four\")`,\n `\n(assoc\n {:a 1 :b 2}\n :a\n \"One\")`,\n `\n(assoc\n {:a 1 :b 2}\n :c\n \"Three\")`,\n `\n(assoc\n :Albert\n 6\n :a)`,\n ],\n },\n 'assoc-in': {\n title: 'assoc-in',\n category: 'Collection',\n linkName: 'assoc-in',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n keys: {\n type: ['number', 'string'],\n array: true,\n },\n value: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['coll', 'keys', 'value'] },\n ],\n description: `\nAssociates a value in the nested collection $coll, where $keys is an array of keys and $value is the new value.\n\nIf any levels do not exist, objects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\n(assoc-in\n {}\n [:a :b :c]\n \"Albert\")`,\n `\n(assoc-in\n [1 2 [1 2 3]]\n [2 1]\n \"Albert\")`,\n `\n(assoc-in\n [1 2 {\"name\" \"albert\"}]\n [2 \"name\" 0]\n :A)`,\n ],\n },\n 'concat': {\n title: 'concat',\n category: 'Collection',\n linkName: 'concat',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n colls: {\n type: 'collection',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n { argumentNames: ['coll', 'colls'] },\n ],\n description: 'Concatenates collections into one collection.',\n examples: [\n '(concat :A :l :b :e :r :t)',\n '(concat [1 2] [3 4])',\n '(concat [] [3 4])',\n '(concat [1 2] [])',\n '(concat [1 2] [3 4] [5 6])',\n '(concat [])',\n '(concat {:a 1 :b 2} {:b 1 :c 2})',\n '(concat {} {:a 1})',\n ],\n },\n 'not-empty': {\n title: 'not-empty',\n category: 'Collection',\n linkName: 'not-empty',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns `nil` if $coll is empty or `nil`, otherwise $coll.',\n examples: [\n '(not-empty [])',\n '(not-empty [1 2 3])',\n '(not-empty {})',\n '(not-empty {:a 2})',\n '(not-empty \"\")',\n '(not-empty \"Albert\")',\n '(not-empty nil)',\n ],\n },\n 'every?': {\n title: 'every?',\n category: 'Collection',\n linkName: 'every_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `true` if all entries in $coll pass the test implemented by $fn, otherwise returns `false`.',\n examples: [\n `\n(every?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(every?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(every?\n number?\n [])`,\n `\n(every?\n number?\n \"\")`,\n `\n(every?\n number?\n {})`,\n `\n(every?\n #(even? (second %))\n {:a 2 :b 4})`,\n `\n(every?\n #(even? (second %))\n {:a 2 :b 3})`,\n ],\n },\n 'not-every?': {\n title: 'not-every?',\n category: 'Collection',\n linkName: 'not-every_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `true` if at least one element in $coll does not pass the test implemented by $fn, otherwise returns `false`.',\n examples: [\n `\n(not-every?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(not-every?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(not-every?\n number?\n [])`,\n `\n(not-every?\n number?\n \"\")`,\n `\n(not-every?\n number?\n {})`,\n `\n(not-every?\n #(even? (second %))\n {:a 2 :b 4})`,\n `\n(not-every?\n #(even? (second %))\n {:a 2 :b 3})`,\n ],\n },\n 'any?': {\n title: 'any?',\n category: 'Collection',\n linkName: 'any_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `true` if any element in $coll pass the test implemented by $fn, otherwise returns `false`.',\n examples: [\n `\n(any?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(any?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(any?\n number?\n [])`,\n `\n(any?\n number?\n \"\")`,\n `\n(any?\n number?\n {})`,\n `\n(any?\n #(even? (second %))\n {:a 2 :b 3})`,\n `\n(any?\n #(even? (second %))\n {:a 1 :b 3})`,\n ],\n },\n 'not-any?': {\n title: 'not-any?',\n category: 'Collection',\n linkName: 'not-any_question',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: 'collection',\n },\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['coll', 'fn'] },\n ],\n description: 'Returns `false` if any element in $coll pass the test implemented by $fn, otherwise returns `true`.',\n examples: [\n `\n(not-any?\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(not-any?\n (fn [x] (> x 10))\n [50 100 150 200])`,\n `\n(not-any?\n number?\n [])`,\n `\n(not-any?\n number?\n \"\")`,\n `\n(not-any?\n number?\n {})`,\n `\n(not-any?\n #(even? (second %))\n {:a 2 :b 3})`,\n `\n(not-any?\n #(even? (second %))\n {:a 1 :b 3})`,\n ],\n },\n 'update': {\n title: 'update',\n category: 'Collection',\n linkName: 'update',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'key': {\n type: ['string', 'number'],\n },\n 'fn': {\n type: 'function',\n },\n 'fn-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'value', 'fn'] },\n { argumentNames: ['coll', 'value', 'fn', 'fn-args'] },\n ],\n description: `\nUpdates a value in the $coll collection, where $key is a key. $fn is a function\nthat will take the old value and any supplied $fn-args and\nreturn the new value.\nIf the key does not exist, \\`nil\\` is passed as the old value.`,\n examples: [\n `\n(def x {:a 1 :b 2})\n(update x :a inc)`,\n `\n(def x {:a 1 :b 2})\n(update\n x\n :c\n (fn [val]\n (if (nil? val) 0 (inc val))))`,\n ],\n },\n 'update-in': {\n title: 'update-in',\n category: 'Collection',\n linkName: 'update-in',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'keys': {\n type: 'array',\n },\n 'fn': {\n type: 'function',\n },\n 'fn-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'keys', 'fn'] },\n { argumentNames: ['coll', 'keys', 'fn', 'fn-args'] },\n ],\n description: `Updates a value in the $coll collection, where $keys is an array of\nkeys and $fn is a function that will take the old value and\nany supplied $fn-args and return the new value. If any levels do not exist,\nobjects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\n(update-in\n {:a [1 2 3]}\n [:a 1]\n (fn [val]\n (when (nil? val) 0)))`,\n `\n(update-in\n {:a {:foo :bar}}\n [:a :foo]\n (fn [val]\n (if (nil? val) \"?\" \"!\")))`,\n `\n(update-in\n {:a {:foo :bar}}\n [:a :baz]\n (fn [val]\n (if (nil? val) \"?\" \"!\")))`,\n `\n(update-in\n {:a [1 2 3]}\n [:a 1]\n *\n 10\n 10\n 10)`,\n ],\n },\n}\n","import type { FunctionalApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const functionalReference: Record<FunctionalApiName, FunctionReference<'Functional'>> = {\n 'apply': {\n title: 'apply',\n category: 'Functional',\n linkName: 'apply',\n returns: {\n type: 'any',\n },\n args: {\n fn: {\n type: 'function',\n },\n args: {\n type: 'array',\n },\n },\n variants: [\n { argumentNames: ['fn', 'args'] },\n ],\n description: 'Call supplied function $fn with specified arguments $args.',\n examples: [\n `\n(apply + [1 2 3])`,\n `\n(apply\n (fn [x y]\n (sqrt\n (+\n (* x x)\n (* y y))))\n [3 4])`,\n ],\n },\n 'identity': {\n title: 'identity',\n category: 'Functional',\n linkName: 'identity',\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns $x.',\n examples: ['(identity 1)', '(identity \"Albert\")', '(identity {:a 1})', '(identity nil)'],\n },\n 'partial': {\n title: 'partial',\n category: 'Functional',\n linkName: 'partial',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn', 'args'] },\n ],\n description: `Takes a function $fn and a optional number arguments $args to $fn.\nIt returns a function that takes the additional additional arguments.\nWhen called, the returned function calls \\`(\\`$fn \\`...\\`$args\\` ...additional_arguments)\\`.`,\n examples: [\n '(partial + 100)',\n `\n(def plusMany (partial + 100 1000))\n(plusMany 1 10)`,\n `\n(def addHundred (partial + 100))\n(addHundred 10)`,\n ],\n },\n 'comp': {\n title: 'comp',\n category: 'Functional',\n linkName: 'comp',\n returns: {\n type: 'function',\n },\n args: {\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fns'] },\n ],\n description: `Takes a variable number of functions and returns a function that is the composition of those.\n\n The returned function takes a variable number of arguments,\n applies the rightmost function to the args,\n the next function (right-to-left) to the result, etc.`,\n examples: [\n `\n(def negative-quotient (comp - /))\n(negative-quotient 9 3)`,\n `\n(\n #((apply comp first (repeat %2 rest)) %1)\n [1 2 3 4 5 6 7]\n 3)`,\n `\n(def x {\"bar\" {\"foo\" 42}})\n((comp \"foo\" \"bar\") x)`,\n ],\n },\n 'constantly': {\n title: 'constantly',\n category: 'Functional',\n linkName: 'constantly',\n returns: {\n type: 'function',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns a function that takes any number of arguments and always returns $x.',\n examples: [\n `\n(def always-true (constantly true))\n(always-true 9 3)`,\n `\n(\n #((apply constantly first (repeat %2 rest)) %1)\n [1 2 3 4 5 6 7]\n 3)`,\n ],\n },\n\n 'juxt': {\n title: 'juxt',\n category: 'Functional',\n linkName: 'juxt',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'fns'] },\n ],\n description: `Takes one or many function and returns a function that is the juxtaposition of those functions. \nThe returned function takes a variable number of args,\nand returns a vector containing the result of applying each function to the args (left-to-right).`,\n examples: [\n `\n(\n (juxt + * min max)\n 3\n 4\n 6)`,\n `\n(\n (juxt :a :b)\n {:a 1, :b 2, :c 3, :d 4})`,\n `\n(apply\n (juxt + * min max)\n (range 1 11))`,\n ],\n },\n 'complement': {\n title: 'complement',\n category: 'Functional',\n linkName: 'complement',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n ],\n description: 'Takes a function $fn and returns a new function that takes the same arguments as f, has the same effects, if any, and returns the opposite truth value.',\n examples: ['((complement >) 1 3)', '((complement <) 1 3)', '((complement +) 1 3)', '((complement +) 0 0)'],\n },\n 'every-pred': {\n title: 'every-pred',\n category: 'Functional',\n linkName: 'every-pred',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'fns'] },\n ],\n description: `\nTakes a number of predicates and returns a function that returns \\`true\\` if all predicates\nreturn a truthy value against all of its arguments, else it returns \\`false\\`.`,\n examples: [\n `\n(\n (every-pred string? #(> (count %1) 3))\n \"Albert\"\n \"Mojir\")`,\n `\n(\n (every-pred string? #(> (count %1) 3))\n \"Albert\"\n :M)`,\n `\n(\n (every-pred string? #(> (count %1) 3))\n \"Albert\"\n [1 2 3])`,\n ],\n },\n 'some-pred': {\n title: 'some-pred',\n category: 'Functional',\n linkName: 'some-pred',\n clojureDocs: null,\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'fns'] },\n ],\n description: 'Takes a number of `predicates` and returns a function that returns \\`true\\` if at least one of the `predicates` return a truthy \\`true\\` value against at least one of its arguments, else it returns `false`.',\n examples: [\n '((some-pred string? #(> (count %1) 3)) \"Albert\" \"Mojir\")',\n '((some-pred string? #(> (count %1) 3)) :A :M)',\n '((some-pred string? #(> (count %1) 3)) :A [1 2 3])',\n '((some-pred string? #(> (count %1) 3)) [1 2 3] [2])',\n ],\n },\n 'fnil': {\n title: 'fnil',\n category: 'Functional',\n linkName: 'fnil',\n returns: {\n type: 'function',\n },\n args: {\n fn: {\n type: 'function',\n },\n arg: {\n type: 'any',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn', 'arg'] },\n { argumentNames: ['fn', 'arg', 'args'] },\n ],\n description: 'Takes a function $fn, and returns a function that calls $fn, replacing a nil argument to the corresponding argument.',\n examples: [\n '((fnil + 1 2) 0 0)',\n '((fnil + 1 2) nil 0)',\n '((fnil + 1 2) 0 nil)',\n '((fnil + 1 2) nil nil)',\n '((fnil + 1 2) nil nil 3 4)',\n ],\n },\n}\n","import type { ArrayApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const arrayReference: Record<ArrayApiName, FunctionReference<'Array'>> = {\n array: {\n title: 'array',\n category: 'Array',\n linkName: 'array',\n clojureDocs: 'vector',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Makes new array from $values.',\n examples: [\n '(array 1 2 3)',\n '(array (array nil false true))',\n '[]',\n '[1 2 3]',\n '[[nil false true]]',\n '[]',\n '([1 2 3] 1)',\n '([1 2 3 4 5 6 7 8 9] 3)',\n ],\n },\n range: {\n title: 'range',\n category: 'Array',\n linkName: 'range',\n returns: {\n type: 'number',\n array: true,\n },\n args: {\n start: {\n type: 'number',\n },\n end: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['end'] },\n { argumentNames: ['start', 'end'] },\n { argumentNames: ['start', 'end', 'step'] },\n ],\n description: `$range creates an array with a range of numbers from $start to $end (exclusive), by $step.\n\n$start defaults to 0. \n$step defaults to 1.`,\n examples: [\n '(range 4)',\n '(range 1 4)',\n '(range 0.4 4.9)',\n `\n(range\n 0.25 ;; start value\n 1 ;; end value (exclusive)\n 0.25 ;; step value\n)`,\n ],\n },\n repeat: {\n title: 'repeat',\n category: 'Array',\n linkName: 'repeat',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n n: {\n type: 'integer',\n },\n x: {\n type: 'any',\n },\n },\n variants: [{\n argumentNames: ['n', 'x'],\n }],\n description: 'Returns an array with $x repeated $n times.',\n examples: [\n '(repeat 3 10)',\n '(repeat 0 10)',\n '(repeat 5 \"Albert\")',\n ],\n },\n flatten: {\n title: 'flatten',\n category: 'Array',\n linkName: 'flatten',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n x: {\n type: ['array', 'any'],\n description: 'If $x is not an array, `[ ]` is returned.',\n },\n },\n variants: [{\n argumentNames: ['x'],\n }],\n description: 'Takes a nested array $x and flattens it.',\n examples: [\n '(flatten [1 2 [3 4] 5])',\n `\n(let [foo :bar]\n (flatten\n [1\n \" 2 A \"\n [foo [4 [:ABC]]] 6]))`,\n\n '(flatten 12)',\n ],\n },\n mapcat: {\n title: 'mapcat',\n category: 'Array',\n linkName: 'mapcat',\n returns: {\n type: 'collection',\n },\n args: {\n f: {\n type: 'function',\n },\n colls: {\n type: 'collection',\n array: true,\n },\n },\n variants: [{\n argumentNames: ['f', 'colls'],\n }],\n description: 'Returns the result of applying concat to the result of applying map to $f and $colls.',\n examples: [\n '(mapcat reverse [[3 2 1 0] [6 5 4] [9 8 7]])',\n '(mapcat reverse [[3 2 1 0] [6 [5] 4] [9 8 7]])',\n '(defn foo [n] [(- n 1) n (+ n 1)]) (mapcat foo [1 2 3])',\n '(mapcat #(remove even? %1) [[1 2] [2 2] [2 3]])',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { SequenceApiName } from '../api'\n\nexport const sequenceReference: Record<SequenceApiName, FunctionReference<'Sequence'>> = {\n 'nth': {\n title: 'nth',\n category: 'Sequence',\n linkName: 'nth',\n returns: {\n type: 'any',\n },\n args: {\n 'seq': {\n type: ['sequence', 'nil'],\n },\n 'n': {\n type: 'integer',\n },\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'not-found'] },\n ],\n description: 'Accesses element $n of $seq. Accessing out-of-bounds indices returns $not-found, if present, else `nil`.',\n examples: [\n '(nth [1 2 3] 1)',\n '(nth [1 2 3] 3)',\n '(nth [1 2 3] -1)',\n '(nth [1 2 3] 3 99)',\n '(nth \"A string\" 1)',\n '(nth \"A string\" 3)',\n '(nth \"A string\" -3)',\n '(nth \"A string\" 30 :X)',\n '(nth nil 1)',\n '(nth nil 1 \"Default value\")',\n ],\n },\n 'push': {\n title: 'push',\n category: 'Sequence',\n linkName: 'push',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n values: {\n type: 'any',\n rest: true,\n description: 'At least one.',\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the end of it.',\n examples: [\n '(push [1 2 3] 4)',\n '(push [1 2 3] 4 5 6)',\n '(def l [1 2 3]) (push l 4) l',\n ],\n },\n 'pop': {\n title: 'pop',\n category: 'Sequence',\n linkName: 'pop',\n returns: {\n type: ['sequence', 'nil'],\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with last element removed. If $seq is empty `nil` is returned.',\n examples: [\n '(pop [1 2 3])',\n '(pop [])',\n ],\n },\n 'unshift': {\n title: 'unshift',\n category: 'Sequence',\n linkName: 'unshift',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n values: {\n type: 'any',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the beginning.',\n examples: [\n '(unshift [1 2 3] 4)',\n '(unshift [1 2 3] 4 5 6)',\n `\n(def l [1 2 3])\n(unshift l 4)\nl`,\n ],\n },\n 'shift': {\n title: 'shift',\n category: 'Sequence',\n linkName: 'shift',\n clojureDocs: null,\n returns: {\n type: ['sequence', 'nil'],\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with first element removed. If $seq is empty `nil` is returned.',\n examples: [\n '(shift [1 2 3])',\n '(shift [])',\n ],\n },\n 'slice': {\n title: 'slice',\n category: 'Sequence',\n linkName: 'slice',\n clojureDocs: null,\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n array: true,\n },\n start: {\n type: 'integer',\n description: 'Defaults to `0`.',\n },\n end: {\n type: 'integer',\n description: 'Defaults lenght of sequence + 1.',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'start'] },\n { argumentNames: ['seq', 'start', 'end'] },\n ],\n description: 'Returns a copy of a portion of $seq from index $start (inclusive) to $end (exclusive).',\n examples: [\n '(slice [1 2 3 4 5] 2 4)',\n '(slice [1 2 3 4 5] 2)',\n ],\n },\n 'reductions': {\n title: 'reductions',\n category: 'Sequence',\n linkName: 'reductions',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n array: true,\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n { argumentNames: ['fn', 'start', 'seq'] },\n ],\n description: 'Returns an array of the intermediate values of the reduction (see `reduce`) of $seq by $fn.',\n examples: [\n '(reductions + [1 2 3])',\n '(reductions + 10 [1 2 3])',\n '(reductions + 0 [])',\n `\n(reductions\n (fn [result value] (+ result (if (even? value) value 0)))\n 0\n [1 2 3 4 5 6 7 8 9])`,\n ],\n },\n 'reduce': {\n title: 'reduce',\n category: 'Sequence',\n linkName: 'reduce',\n returns: {\n type: 'any',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n { argumentNames: ['fn', 'start', 'seq'] },\n ],\n description: 'Runs $fn function on each element of the $seq, passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n '(reduce + [1 2 3])',\n '(reduce + 0 [1 2 3])',\n '(reduce + 0 [])',\n `\n(reduce\n (fn [result value] (+ result (if (even? value) value 0)))\n 0\n [1 2 3 4 5 6 7 8 9])`,\n ],\n },\n 'reduce-right': {\n title: 'reduce-right',\n category: 'Sequence',\n linkName: 'reduce-right',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n { argumentNames: ['fn', 'start', 'seq'] },\n ],\n description: 'Runs $fn function on each element of the $seq (starting from the last item), passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n '(reduce-right str [:A :B :C] \"\")',\n ],\n },\n 'map': {\n title: 'map',\n category: 'Sequence',\n linkName: 'map',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Creates a new array populated with the results of calling $fn on every elements in $seq.',\n examples: [\n '(map str [\"Albert\" \"Mojir\" 42])',\n '(map str [])',\n '(map + [1 2 3] [1 2 3])',\n '(map max [2 6 3] [2 4 7] [1 6 2])',\n ],\n },\n 'filter': {\n title: 'filter',\n category: 'Sequence',\n linkName: 'filter',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Creates a new array with all elements that pass the test implemented by $fn.',\n examples: [\n `\n(filter\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(filter\n (fn [x] (> x 10))\n [5 10 15 20])`,\n ],\n },\n 'position': {\n title: 'position',\n category: 'Sequence',\n linkName: 'position',\n clojureDocs: null,\n returns: {\n type: ['number', 'nil'],\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the index of the first elements that passes the test implemented by $fn. If no element was found, `nil` is returned.',\n examples: [\n `\n(position\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(position\n (fn [x] (> x 10))\n [5 10 15 20])`,\n `\n(position\n (fn [x] (> x 100))\n [5 10 15 20])`,\n `\n(position\n (fn [x] (> x 100))\n nil)`,\n ],\n },\n 'index-of': {\n title: 'index-of',\n category: 'Sequence',\n linkName: 'index-of',\n clojureDocs: null,\n returns: {\n type: ['number', 'nil'],\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'x'] },\n ],\n description: 'Returns the index of $x in $seq. If element is not present in $seq `nil` is returned.',\n examples: [\n '(index-of [\"Albert\" \"Mojir\" 160 [1 2]] \"Mojir\")',\n '(index-of [5 10 15 20] 15)',\n '(index-of [5 10 15 20] 1)',\n '(index-of nil 1)',\n ],\n },\n 'some': {\n title: 'some',\n category: 'Sequence',\n linkName: 'some',\n returns: {\n type: 'any',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the first element that passes the test implemented by $fn. I no element was found, `nil` is returned.',\n examples: [\n `\n(some\n string?\n [\"Albert\" \"Mojir\" 160 [1 2]])`,\n `\n(some\n (fn [x] (> x 10))\n [5 10 15 20])`,\n `\n(some\n (fn [x] (> x 10))\n [1 2 3 4])`,\n `\n(some\n (fn [x] (> x 10))\n [])`,\n `\n(some\n (fn [x] (> x 10))\n nil)`,\n ],\n },\n 'reverse': {\n title: 'reverse',\n category: 'Sequence',\n linkName: 'reverse',\n returns: {\n type: ['sequence', 'nil'],\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, creates a new array with the elements from $seq in reversed order. If $seq is a string, returns new reversed string.',\n examples: [\n '(reverse [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(reverse [])',\n '(reverse \"Albert\")',\n '(reverse nil)',\n ],\n },\n 'first': {\n title: 'first',\n category: 'Sequence',\n linkName: 'first',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the first element of $seq. If $seq is empty or `nil`, `nil` is returned.',\n examples: [\n '(first [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(first [])',\n '(first nil)',\n ],\n },\n 'second': {\n title: 'second',\n category: 'Sequence',\n linkName: 'second',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the second element of $seq. If $seq has less than two elements or is `nil`, `nil` is returned.',\n examples: [\n '(second [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(second [1])',\n '(second [])',\n '(second nil)',\n ],\n },\n 'last': {\n title: 'last',\n category: 'Sequence',\n linkName: 'last',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the last element of $seq. If $seq is empty, `nil` is returned.',\n examples: [\n '(last [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(last [1 2])',\n '(last [1])',\n '(last [])',\n '(last nil)',\n ],\n },\n 'rest': {\n title: 'rest',\n category: 'Sequence',\n linkName: 'rest',\n returns: {\n type: ['sequence', 'nil'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: `If $seq is an array, returns a new array with all but the first element from $seq.\nIf $seq has less than two elements, an empty array is returned.\nFor string $seq returns all but the first characters in $seq.`,\n examples: [\n '(rest [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(rest [\"Albert\"])',\n '(rest [])',\n '(rest \"Albert\")',\n '(rest :A)',\n '(rest \"\")',\n ],\n },\n 'nthrest': {\n title: 'nthrest',\n category: 'Sequence',\n linkName: 'nthrest',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first $n elements from $seq. For string $seq returns all but the first $n characters in $seq.',\n examples: [\n '(nthrest [\"Albert\" \"Mojir\" 160 [1 2]] 2)',\n '(nthrest \"Albert\" 3)',\n '(nthrest \"Albert\" 10)',\n '(nthrest [] 0)',\n '(nthrest \"\" 0)',\n ],\n },\n 'next': {\n title: 'next',\n category: 'Sequence',\n linkName: 'next',\n returns: {\n type: ['sequence', 'nil'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first element from $seq. If $seq has less than two elements, `nil` is returned. For string $seq returns all but the first characters in $seq. If length of string $seq is less than two, `nil` is returned.',\n examples: [\n '(next [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(next [\"Albert\"])',\n '(next [])',\n '(next \"Albert\")',\n '(next :A)',\n '(next \"\")',\n ],\n },\n 'nthnext': {\n title: 'nthnext',\n category: 'Sequence',\n linkName: 'nthnext',\n returns: {\n type: ['sequence', 'nil'],\n array: true,\n },\n args: {\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first $n elements from $seq. If $seq has less or equal than $n elements, `nil` returned. For string $seq returns all but the first $n characters in $seq. If length of string $seq is less or equal than $n, `nil` is returned.',\n examples: [\n '(nthnext [\"Albert\" \"Mojir\" 160 [1 2]] 2)',\n '(nthnext \"Albert\" 3)',\n '(nthnext \"Albert\" 6)',\n '(nthnext [] 0)',\n '(nthnext \"\" 0)',\n ],\n },\n 'cons': {\n title: 'cons',\n category: 'Sequence',\n linkName: 'cons',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n x: {\n type: 'any',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['x', 'seq'] },\n ],\n description: 'Constructs a new array with $x as first element and $seq as the rest.',\n examples: [\n '(cons \"Hi\" [\"Albert\" \"Mojir\" 160 [1 2]])',\n '(cons \"Hi\" [])',\n ],\n },\n 'take': {\n title: 'take',\n category: 'Sequence',\n linkName: 'take',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array/string with the $n first elements from $seq.',\n examples: [\n '(take 3 [1 2 3 4 5])',\n '(take 0 [1 2 3 4 5])',\n '(take 2 \"Albert\")',\n '(take 50 \"Albert\")',\n ],\n },\n 'take-last': {\n title: 'take-last',\n category: 'Sequence',\n linkName: 'take-last',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array with the $n last elements from $seq.',\n examples: [\n '(take-last 3 [1 2 3 4 5])',\n '(take-last 0 [1 2 3 4 5])',\n ],\n },\n 'take-while': {\n title: 'take-while',\n category: 'Sequence',\n linkName: 'take-while',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the members of $seq in order, stopping before the first one for which `predicate` returns a falsy value.',\n examples: [\n `\n(take-while\n (fn [x] (< x 3))\n [1 2 3 2 1])`,\n `\n(take-while\n (fn [x] (> x 3))\n [1 2 3 2 1])`,\n ],\n },\n 'drop': {\n title: 'drop',\n category: 'Sequence',\n linkName: 'drop',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array/string with the $n first elements dropped from $seq.',\n examples: [\n '(drop 3 [1 2 3 4 5])',\n '(drop 0 [1 2 3 4 5])',\n '(drop 2 \"Albert\")',\n '(drop 50 \"Albert\")',\n ],\n },\n 'drop-last': {\n title: 'drop-last',\n category: 'Sequence',\n linkName: 'drop-last',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array with the $n last elements dropped from $seq.',\n examples: [\n '(drop-last 3 [1 2 3 4 5])',\n '(drop-last 0 [1 2 3 4 5])',\n ],\n },\n 'drop-while': {\n title: 'drop-while',\n category: 'Sequence',\n linkName: 'drop-while',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns the members of $seq in order, skipping the fist elements for witch the `predicate` returns a truethy value.',\n examples: [\n `\n(drop-while\n (fn [x] (< x 3))\n [1 2 3 2 1])`,\n `\n(drop-while\n (fn [x] (> x 3))\n [1 2 3 2 1])`,\n ],\n },\n 'sort': {\n title: 'sort',\n category: 'Sequence',\n linkName: 'sort',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns a new sequence with the elements from $seq sorted according to $fn. If no $fn is supplied, builtin `compare` will be used.',\n examples: [\n '(sort [3 1 2])',\n `\n(sort\n (fn [a b] (cond (< a b) -1 (> a b) 1 true -1))\n [3 1 2])`,\n `\n(sort\n (fn [a b] (cond (> a b) -1 (< a b) 1 true -1))\n [3 1 2])`,\n ],\n },\n 'sort-by': {\n title: 'sort-by',\n category: 'Sequence',\n linkName: 'sort-by',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n keyfn: {\n type: 'function',\n },\n comp: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'keyfn'] },\n { argumentNames: ['seq', 'keyfn', 'comp'] },\n ],\n description: 'Returns a sorted sequence of the items in $seq, where the sort order is determined by comparing `(keyfn item)`. If no $comp is supplied, uses builtin `compare`.',\n examples: [\n '(sort-by count [\"Albert\" \"Mojir\" \"Nina\"])',\n '(sort-by lower-case #(compare %2 %1) \"Albert\")',\n ],\n },\n 'random-sample!': {\n title: 'random-sample!',\n category: 'Sequence',\n linkName: 'random-sample_exclamation',\n clojureDocs: 'random-sample',\n returns: {\n type: 'sequence',\n },\n args: {\n prob: {\n type: 'number',\n description: 'Probability of including an element from $seq. Between 0 and 1.',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['prob', 'seq'] },\n ],\n description: 'Each element from $seq has the probability $prob to be included in the result.',\n examples: [\n '(random-sample! 0.5 [1 2 3 4 5 6 7 8 9 10])',\n '(random-sample! 0.5 \"Albert\")',\n ],\n },\n 'rand-nth!': {\n title: 'rand-nth!',\n category: 'Sequence',\n linkName: 'rand-nth_exclamation',\n clojureDocs: 'rand-nth',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a random element from $seq. Returns `nil` if $seq is empty.',\n examples: [\n '(rand-nth! [1 2 3 4 5 6 7 8 9 10])',\n '(rand-nth! \"Albert\")',\n '(rand-nth! [])',\n ],\n },\n 'shuffle!': {\n title: 'shuffle!',\n category: 'Sequence',\n linkName: 'shuffle_exclamation',\n clojureDocs: 'shuffle',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a shuffled copy of $seq.',\n examples: [\n '(shuffle! [1 2 3 4 5 6 7 8 9 10])',\n '(shuffle! \"Albert Mojir\")',\n '(shuffle! [1 2])',\n '(shuffle! [1])',\n '(shuffle! [])',\n ],\n },\n 'distinct': {\n title: 'distinct',\n category: 'Sequence',\n linkName: 'distinct',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with no duplicates.',\n examples: [\n '(distinct [1 2 3 1 3 5])',\n '(distinct \"Albert Mojir\")',\n '(distinct [])',\n '(distinct \"\")',\n ],\n },\n 'remove': {\n title: 'remove',\n category: 'Sequence',\n linkName: 'remove',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns a new sequence of items in $seq for witch ``(pred item)`` returns a falsy value.',\n examples: [\n '(remove even? [1 2 3 1 3 5])',\n '(remove #(has? \"aoueiyAOUEIY\" %1) \"Albert Mojir\")',\n ],\n },\n 'remove-at': {\n title: 'remove-at',\n category: 'Sequence',\n linkName: 'remove-at',\n clojureDocs: null,\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'number',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Returns a new sequence of all items in $seq except item at position $n.',\n examples: [\n '(remove-at 0 [1 2 3 1 3 5])',\n '(remove-at -1 [1 2 3 1 3 5])',\n '(remove-at 6 \"Albert Mojir\")',\n ],\n },\n 'split-at': {\n title: 'split-at',\n category: 'Sequence',\n linkName: 'split-at',\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n n: {\n type: 'number',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Returns a pair of sequence ``[(take pos input) (drop pos input)]``.',\n examples: [\n '(split-at 2 [1 2 3 4 5])',\n '(split-at 2 \"Albert\")',\n ],\n },\n 'split-with': {\n title: 'split-with',\n category: 'Sequence',\n linkName: 'split-with',\n returns: {\n type: 'sequence',\n array: true,\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns a pair of sequences ``[(take-while fn input) (drop-while fn input)]``.',\n examples: [\n '(split-with #(> %1 3) [1 2 3 4 5])',\n '(split-with #(<= %1 :Z) \"Albert\")',\n ],\n },\n 'frequencies': {\n title: 'frequencies',\n category: 'Sequence',\n linkName: 'frequencies',\n returns: {\n type: 'object',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns an object from distinct items in $seq to the number of times they appear. Note that all items in $seq must be valid object keys i.e. strings.',\n examples: [\n '(frequencies [\"Albert\" \"Mojir\" \"Nina\" \"Mojir\"])',\n '(frequencies \"Pneumonoultramicroscopicsilicovolcanoconiosis\")',\n ],\n },\n 'group-by': {\n title: 'group-by',\n category: 'Sequence',\n linkName: 'group-by',\n returns: {\n type: 'object',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Returns an object of the elements of $seq keyed by the result of $fn on each element. The value at each key will be an array of the corresponding elements.',\n examples: [\n '(group-by \"name\" [{\"name\" \"Albert\"} {\"name\" \"Albert\"} {\"name\" \"Mojir\"}])',\n '(group-by (fn [char] (if (has? \"aoueiAOUEI\" char) \"vowel\" \"other\")) \"Albert Mojir\")',\n ],\n },\n 'partition': {\n title: 'partition',\n category: 'Sequence',\n linkName: 'partition',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n pad: {\n type: 'array',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n { argumentNames: ['n', 'step', 'seq'] },\n { argumentNames: ['n', 'step', 'pad', 'seq'] },\n ],\n description: 'Returns an array of sequences of $n items each, at offsets $step apart. If $step is not supplied, defaults to $n. If a $pad array is supplied, use its elements as necessary to complete last partition upto $n items. In case there are not enough padding elements, return a partition with less than $n items.',\n examples: [\n '(partition 4 (range 20))',\n '(partition 4 (range 22))',\n '(partition 4 6 (range 20))',\n '(partition 4 3 (range 20))',\n '(partition 3 6 [:a] (range 20))',\n '(partition 4 6 [:a] (range 20))',\n '(partition 4 6 [:a :b :c :d] (range 20))',\n '(partition 3 1 [:a :b :c :d :e :f])',\n '(partition 10 [1 2 3 4])',\n '(partition 10 10 [1 2 3 4])',\n '(partition 10 10 [] [1 2 3 4])',\n '(partition 10 10 nil [1 2 3 4])',\n '(partition 5 \"superfragilistic\")',\n '(partition 5 5 nil \"superfragilistic\")',\n '(def foo [5 6 7 8]) (partition 2 1 foo foo)',\n ],\n },\n 'partition-all': {\n title: 'partition-all',\n category: 'Sequence',\n linkName: 'partition-all',\n returns: {\n type: 'sequence',\n },\n args: {\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n { argumentNames: ['n', 'step', 'seq'] },\n ],\n description: 'Returns an array of sequences like partition, but may include partitions with fewer than n items at the end.',\n examples: [\n '(partition-all 4 [0 1 2 3 4 5 6 7 8 9])',\n '(partition 4 [0 1 2 3 4 5 6 7 8 9])',\n '(partition-all 2 4 [0 1 2 3 4 5 6 7 8 9])',\n ],\n },\n 'partition-by': {\n title: 'partition-by',\n category: 'Sequence',\n linkName: 'partition-by',\n returns: {\n type: 'sequence',\n },\n args: {\n fn: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['fn', 'seq'] },\n ],\n description: 'Applies $fn to each value in $seq, splitting it each time $fn returns a new value. Returns an array of sequences.',\n examples: [\n '(partition-by #(= 3 %1) [1 2 3 4 5])',\n '(partition-by odd? [1 1 1 2 2 3 3])',\n '(partition-by identity \"Leeeeeerrroyyy\")',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { MathApiName } from '../api'\n\nexport const mathReference: Record<MathApiName, FunctionReference<'Math'>> = { '+': {\n title: '+',\n category: 'Math',\n linkName: '_plus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes sum of $xs.',\n examples: ['(+)', '(+ 1)', '(+ 2 4)', '(+ 1 2 3 4)', '(+ (+ 2 3) (+ 5 6))'],\n}, '-': {\n title: '-',\n category: 'Math',\n linkName: '_minus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes difference between first value and sum of the rest. When called with only one argument, it does negation.',\n examples: ['(-)', '(- 1)', '(- 2 4)', '(- 4 3 2 1)'],\n}, '*': {\n title: '*',\n category: 'Math',\n linkName: '_star',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes product of $xs.',\n examples: ['(*)', '(* 2)', '(* 2 4)', '(* 1 2 3 4)'],\n}, '/': {\n title: '/',\n category: 'Math',\n linkName: '_slash',\n clojureDocs: '_fs',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes division or reciprocal. When called with one argument it computes reciprocal. When called with two or more arguments it does compute division of the first by the all remaining $xs.',\n examples: ['(/)', '(/ 2)', '(/ 2 4)', '(/ 4 3 2 1)'],\n}, 'mod': {\n title: 'mod',\n category: 'Math',\n linkName: 'mod',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Modulus of `dividend` and `divisor`. Truncates toward negative infinity.',\n examples: ['(mod 5 3)', '(mod 5.2 3.1)', '(mod -5 3)', '(mod 5 -3)', '(mod -5 -3)'],\n}, 'rem': {\n title: 'rem',\n category: 'Math',\n linkName: 'rem',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Remainder of dividing `dividend` and `divisor`.',\n examples: ['(rem 5 3)', '(rem 5.2 3.1)', '(rem -5 3)', '(rem 5 -3)', '(rem -5 -3)'],\n}, 'quot': {\n title: 'quot',\n category: 'Math',\n linkName: 'quot',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Quotient of dividing `dividend` and `divisor`.',\n examples: ['(quot 5 3)', '(quot 5.2 3.1)', '(quot -5 3)', '(quot 5 -3)', '(quot -5 -3)'],\n}, 'inc': {\n title: 'inc',\n category: 'Math',\n linkName: 'inc',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Adds one to $x.',\n examples: ['(inc 0)', '(inc 1)', '(inc 100.1)'],\n}, 'dec': {\n title: 'dec',\n category: 'Math',\n linkName: 'dec',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Subtracts one from $x.',\n examples: ['(dec 0)', '(dec 1)', '(dec 100.1)'],\n}, 'sqrt': {\n title: 'sqrt',\n category: 'Math',\n linkName: 'sqrt',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes square root of $x.',\n examples: ['(sqrt 0)', '(sqrt 9)', '(sqrt 2)'],\n}, 'cbrt': {\n title: 'cbrt',\n category: 'Math',\n linkName: 'cbrt',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes cube root of $x.',\n examples: ['(cbrt 0)', '(cbrt 27)', '(cbrt 2)', '(cbrt 1)'],\n}, 'pow': {\n title: 'pow',\n category: 'Math',\n linkName: 'pow',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'number',\n },\n b: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Computes returns $a raised to the power of $b.',\n examples: ['(pow 2 3)', '(pow 2 0)', '(pow 2 -3)', '(pow -2 3)', '(pow -2 -3)'],\n}, 'exp': {\n title: 'exp',\n category: 'Math',\n linkName: 'exp',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes `e` rasied to the power of $x.',\n examples: ['(exp 3)', '(exp 0)', '(exp -3)', '(exp 3)'],\n}, 'round': {\n title: 'round',\n category: 'Math',\n linkName: 'round',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n decimals: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'decimals'] },\n ],\n description: 'Returns rounded $x. If $decimals is provided it return a number with that many decimals.',\n examples: [\n '(round 2)',\n '(round 2.49)',\n '(round 2.5)',\n '(round -2.49)',\n '(round -2.5)',\n '(round -2.501)',\n '(round 1.23456789 4)',\n ],\n}, 'trunc': {\n title: 'trunc',\n category: 'Math',\n linkName: 'trunc',\n clojureDocs: null,\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the integer part of $x by removing any fractional digits.',\n examples: ['(trunc 2)', '(trunc 2.49)', '(trunc 2.5)', '(trunc -2.49)', '(trunc -2.5)', '(trunc -2.501)'],\n}, 'floor': {\n title: 'floor',\n category: 'Math',\n linkName: 'floor',\n clojureDocs: null,\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the largest `integer` less than or equal to $x.',\n examples: ['(floor 2)', '(floor 2.49)', '(floor 2.5)', '(floor -2.49)', '(floor -2.5)', '(floor -2.501)'],\n}, 'ceil': {\n title: 'ceil',\n category: 'Math',\n linkName: 'ceil',\n clojureDocs: null,\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the smallest `integer` larger than or equal to $x.',\n examples: ['(ceil 2)', '(ceil 2.49)', '(ceil 2.5)', '(ceil -2.49)', '(ceil -2.5)', '(ceil -2.501)'],\n}, 'min': {\n title: 'min',\n category: 'Math',\n linkName: 'min',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the smallest number of the arguments.',\n examples: ['(min 2 0 1)', '(min 2 -1 1)', '(min 2.5)'],\n}, 'max': {\n title: 'max',\n category: 'Math',\n linkName: 'max',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the largest number of the arguments.',\n examples: ['(max 2 0 1)', '(max 2 -1 1)', '(max 2.5)'],\n}, 'abs': {\n title: 'abs',\n category: 'Math',\n linkName: 'abs',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the absolute value of $x.',\n examples: ['(abs -2.3)', '(abs 0)', '(abs 2.5)'],\n}, 'sign': {\n title: 'sign',\n category: 'Math',\n linkName: 'sign',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `1` if $x `> 0`, `-1` if $x `< 0`, `0` if $x `= 0` or `-0` if $x `= -0`.',\n examples: ['(sign -2.3)', '(sign -0)', '(sign 0)', '(sign 12312)'],\n}, 'positive-infinity': {\n title: 'positive-infinity',\n category: 'Math',\n linkName: 'positive-infinity',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing positive positive-infinity.',\n examples: ['(positive-infinity)'],\n}, 'negative-infinity': {\n title: 'negative-infinity',\n category: 'Math',\n linkName: 'negative-infinity',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing negative infinity.',\n examples: ['(negative-infinity)'],\n}, 'max-safe-integer': {\n title: 'max-safe-integer',\n category: 'Math',\n linkName: 'max-safe-integer',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the maximum safe integer.',\n examples: ['(max-safe-integer)'],\n}, 'min-safe-integer': {\n title: 'min-safe-integer',\n category: 'Math',\n linkName: 'min-safe-integer',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the minimum safe integer.',\n examples: ['(min-safe-integer)'],\n}, 'max-value': {\n title: 'max-value',\n category: 'Math',\n linkName: 'max-value',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the maximum numeric value.',\n examples: ['(max-value)'],\n}, 'min-value': {\n title: 'min-value',\n category: 'Math',\n linkName: 'min-value',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the smallest positive numeric value.',\n examples: ['(min-value)'],\n}, 'epsilon': {\n title: 'epsilon',\n category: 'Math',\n linkName: 'epsilon',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing the difference between 1 and the smallest floating point number greater than 1.',\n examples: ['(epsilon)'],\n}, 'nan': {\n title: 'nan',\n category: 'Math',\n linkName: 'nan',\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns a number representing Not-A-Number.',\n examples: ['(nan)'],\n}, 'e': {\n title: 'e',\n category: 'Math',\n linkName: 'e',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns Euler\\'s number, the base of natural logarithms, e.',\n examples: ['(e)'],\n}, 'pi': {\n title: 'pi',\n category: 'Math',\n linkName: 'pi',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns Pi, the ratio of the circumference of a circle to its diameter.',\n examples: ['(pi)'],\n}, 'log': {\n title: 'log',\n category: 'Math',\n linkName: 'log',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the natural logarithm (base e) of $x.',\n examples: ['(log 0.01)', '(log (exp 12))', '(log 2.5)'],\n}, 'log2': {\n title: 'log2',\n category: 'Math',\n linkName: 'log2',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the base `2` logarithm of a number.',\n examples: ['(log2 0.01)', '(log2 (pow 2 12))', '(log2 2.5)'],\n}, 'log10': {\n title: 'log10',\n category: 'Math',\n linkName: 'log10',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the `10` logarithm of a number.',\n examples: ['(log10 0.01)', '(log10 (pow 10 12))', '(log10 2.5)'],\n}, 'rand!': {\n title: 'rand!',\n category: 'Math',\n linkName: 'rand_exclamation',\n clojureDocs: 'rand',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n description: 'Positive number',\n },\n },\n variants: [\n { argumentNames: [] },\n { argumentNames: ['x'] },\n ],\n description: 'Returns a semi random number between `0` (inclusive) and $x (default 1) (exclusive).',\n examples: ['(rand! 1)', '(rand! 0.01)', '(rand! 2.5)'],\n}, 'rand-int!': {\n title: 'rand-int!',\n category: 'Math',\n linkName: 'rand-int_exclamation',\n clojureDocs: 'rand-int',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n description: 'Positive number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns a semi random integer between `0` (inclusive) and $x (exclusive).',\n examples: ['(rand-int! 1)', '(rand-int! 10.12)', '(rand-int! 123)'],\n}, 'sin': {\n title: 'sin',\n category: 'Math',\n linkName: 'sin',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the sine of $x. $x must be specified in radians.',\n examples: ['(sin 0)', '(sin 1)', '(sin (pi))', '(sin -0.5)'],\n}, 'cos': {\n title: 'cos',\n category: 'Math',\n linkName: 'cos',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the cosine of $x. $x must be specified in radians.',\n examples: ['(cos 0)', '(cos 1)', '(cos (pi))', '(cos -0.5)'],\n}, 'tan': {\n title: 'tan',\n category: 'Math',\n linkName: 'tan',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the tangent of $x. $x must be specified in radians.',\n examples: ['(tan 0)', '(tan 1)', '(tan (pi))', '(tan -0.5)'],\n}, 'asin': {\n title: 'asin',\n category: 'Math',\n linkName: 'asin',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arcsine (in radians) of $x.',\n examples: ['(asin 0)', '(asin 1)', '(asin -0.5)'],\n}, 'acos': {\n title: 'acos',\n category: 'Math',\n linkName: 'acos',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arccosine (in radians) of $x.',\n examples: ['(acos 0)', '(acos 1)', '(acos -0.5)'],\n}, 'atan': {\n title: 'atan',\n category: 'Math',\n linkName: 'atan',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arctangent (in radians) of $x.',\n examples: ['(atan 0)', '(atan 1)', '(atan -0.5)'],\n}, 'sinh': {\n title: 'sinh',\n category: 'Math',\n linkName: 'sinh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic sine of $x.',\n examples: ['(sinh 0)', '(sinh 1)', '(sinh -0.5)'],\n}, 'cosh': {\n title: 'cosh',\n category: 'Math',\n linkName: 'cosh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic cosine of $x.',\n examples: ['(cosh 0)', '(cosh 1)', '(cosh -0.5)'],\n}, 'tanh': {\n title: 'tanh',\n category: 'Math',\n linkName: 'tanh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic tangent of $x.',\n examples: ['(tanh 0)', '(tanh 1)', '(tanh -0.5)', '(tanh 50)'],\n}, 'asinh': {\n title: 'asinh',\n category: 'Math',\n linkName: 'asinh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arcsine of $x.',\n examples: ['(asinh 0)', '(asinh 0.9)', '(asinh -0.5)'],\n}, 'acosh': {\n title: 'acosh',\n category: 'Math',\n linkName: 'acosh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arccosine of $x.',\n examples: ['(acosh 1)', '(acosh 2)', '(acosh 100)'],\n}, 'atanh': {\n title: 'atanh',\n category: 'Math',\n linkName: 'atanh',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arctangent of $x.',\n examples: ['(atanh 0)', '(atanh 0.9)', '(atanh -0.5)'],\n} }\n","import type { FunctionReference } from '..'\nimport type { MiscApiName } from '../api'\n\nexport const miscReference: Record<MiscApiName, FunctionReference<'Misc'>> = {\n 'not=': {\n title: 'not=',\n category: 'Misc',\n linkName: 'not_equal',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Result is `true` if no two `values` are equal to each other, otherwise result is `false`. Note that only two argument version result is negation of `=` function, that is `(not= a b)` is same as `(not (= a b))`.',\n examples: ['(not= 3)', '(not= 3 2)', '(not= :3 3)', '(not= 3 3 2)', '(not= :3 :2 :1 :0)', '(not= 0 -0)'],\n },\n '=': {\n title: '=',\n category: 'Misc',\n linkName: '_equal',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Compares `values` according to \\'equal\\' predicate. Result is `true` if every specified value is equal to each other, otherwise result is `false`.',\n examples: ['(= 1 1)', '(= 1.01 1)', '(= :1 1)', '(= :2 :2 :2 :2)', '(= 2 2 1 2)'],\n },\n '<': {\n title: '<',\n category: 'Misc',\n linkName: '_lt',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in increasing order, `false` otherwise.',\n examples: ['(< 0 1)', '(< 1 1.01)', '(< 1 1)', '(< 1 2 2 3)', '(< :a :b)', '(< [9] [1 2])'],\n },\n '>': {\n title: '>',\n category: 'Misc',\n linkName: '_gt',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in decreasing order, `false` otherwise.',\n examples: ['(> 1 0)', '(> 1.01 1)', '(> 1 1)', '(> 4 3 2 1)', '(> 3 2 2 1)'],\n },\n '<=': {\n title: '<=',\n category: 'Misc',\n linkName: '_lte',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in non decreasing order, `false` otherwise.',\n examples: ['(<= 0 1)', '(<= 1 1.01)', '(<= 1 1)', '(<= 1 2 3 4)', '(<= 1 2 2 3)'],\n },\n '>=': {\n title: '>=',\n category: 'Misc',\n linkName: '_gte',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n ys: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if the number $x and $ys are in non increasing order, `false` otherwise.',\n examples: ['(>= 1 0)', '(>= 1.01 1)', '(>= 1 1)', '(>= 4 3 2 1)', '(>= 3 2 2 1)'],\n },\n 'not': {\n title: 'not',\n category: 'Misc',\n linkName: 'not',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes logical negation. Note that any other $x than `false`, `0`, `nil` and `\\'\\'` is truthy.',\n examples: ['(not 3)', '(not true)', '(not \"A string\")', '(not 0)', '(not false)', '(not nil)', '(not \"\")'],\n },\n 'write!': {\n title: 'write!',\n category: 'Misc',\n linkName: 'write_exclamation',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'It logs the $values and then returns the last argument. If called with no arguments `nil` is returned.',\n examples: [\n '(write! \"A string\")',\n '(write! 100 \"items\")',\n '(write! (object :a 10))',\n '(write! [:a :b :c])',\n '(write! #\"^start\")',\n '(write! nil true false)',\n ],\n },\n 'inst-ms!': {\n title: 'inst-ms!',\n category: 'Misc',\n linkName: 'inst-ms_exclamation',\n clojureDocs: 'inst-ms',\n returns: {\n type: 'number',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns milliseconds elapsed since the UNIX epoch.',\n examples: ['(inst-ms!)'],\n },\n 'iso-date-time->inst-ms': {\n title: 'iso-date-time->inst-ms',\n category: 'Misc',\n linkName: 'iso-date-time-_gtinst-ms',\n returns: {\n type: 'number',\n },\n args: {\n iso: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['iso'] },\n ],\n description: 'Returns milliseconds elapsed since the UNIX epoch to `iso`.',\n examples: [\n '(iso-date-time->inst-ms \"2022-04-12T09:37:10.899Z\")',\n '(iso-date-time->inst-ms \"1980-01-01\")',\n ],\n },\n 'inst-ms->iso-date-time': {\n title: 'inst-ms->iso-date-time',\n category: 'Misc',\n linkName: 'inst-ms-_gtiso-date-time',\n returns: {\n type: 'string',\n },\n args: {\n ms: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['ms'] },\n ],\n description: 'Returns IOS date time string from `ms` (milliseconds elapsed since the UNIX epoch).',\n examples: [\n '(inst-ms->iso-date-time 1649756230899)',\n '(inst-ms->iso-date-time 0)',\n ],\n },\n 'boolean': {\n title: 'boolean',\n category: 'Misc',\n linkName: 'boolean',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Coerces $x to boolean.',\n examples: [\n '(boolean 0)',\n '(boolean 1)',\n '(boolean nil)',\n '(boolean \"Albert\")',\n ],\n },\n 'compare': {\n title: 'compare',\n category: 'Misc',\n linkName: 'compare',\n returns: {\n type: 'number',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Compares two values. Returns `-1` if $a < $b, `1` if $a > $b and `0` if $a and $b have the same sort order.',\n examples: [\n '(compare 0 1)',\n '(compare \"Albert\" \"Mojir\")',\n '(compare 1 :1)',\n '(compare [1 2 3] [2 3])',\n '(compare [1 2 3] [2 3 4])',\n '(compare {:a 1 :b 2} {:a 1})',\n '(compare {:a 1} [2 3])',\n '(compare + -)',\n ],\n },\n 'lits-version!': {\n title: 'lits-version!',\n category: 'Misc',\n linkName: 'lits-version_exclamation',\n returns: {\n type: 'string',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns the lits version.',\n examples: ['(lits-version!)'],\n },\n 'uuid!': {\n title: 'uuid!',\n category: 'Misc',\n linkName: 'uuid_exclamation',\n returns: {\n type: 'string',\n },\n args: {},\n variants: [\n { argumentNames: [] },\n ],\n description: 'Returns random UUID string.',\n examples: ['(uuid!)'],\n },\n 'equal?': {\n title: 'equal?',\n category: 'Misc',\n linkName: 'equal_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns true if $a and $b are structually equal.',\n examples: [\n '(equal? {:a 10 :b 20} {:b 20 :a 10})',\n '(equal? [1 true nil] [1 true nil])',\n '(equal? {:a 10 :b [1 2 {:b 20}]} {:b [1 2 {:b 20}] :a 10})',\n '(equal? {:a 10 :b [1 2 {:b 20}]} {:b [1 2 {:b 21}] :a 10})',\n '(= 0.3 (+ 0.1 0.2))',\n '(equal? 0.3 (+ 0.1 0.2))',\n ],\n },\n 'json-parse': {\n title: 'json-parse',\n category: 'Misc',\n linkName: 'json-parse',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `JSON.parse(`$x`)`.',\n examples: [\n '(json-parse \"[1, 2, 3]\")',\n ],\n },\n 'json-stringify': {\n title: 'json-stringify',\n category: 'Misc',\n linkName: 'json-stringify',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n x: {\n type: 'any',\n },\n indent: {\n type: 'integer',\n description: 'Number of spaces to use for indentation.',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'indent'] },\n ],\n description: 'Returns `JSON.stringify(`$x`)`. If second argument is provided, returns `JSON.stringify(`$x`, null, `$indent`)`.',\n examples: [\n '(json-stringify [1, 2, 3])',\n '(json-stringify {:a {:b 10}} 2)',\n ],\n },\n}\n","import type { AssertApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const assertReference: Record<AssertApiName, FunctionReference<'Assert'>> = { 'assert': {\n title: 'assert',\n category: 'Assert',\n linkName: 'assert',\n returns: {\n type: 'any',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is falsy it throws `AssertionError` with $message. If no $message is provided, message is set to $value.',\n examples: ['(assert 0 \"Expected a positive value\")'],\n}, 'assert=': {\n title: 'assert=',\n category: 'Assert',\n linkName: 'assert_equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not the same as $b it throws `AssertionError`.',\n examples: [\n '(assert= 0 1 \"Expected same values\")',\n '(assert= 0 1)',\n '(assert= 1 1)',\n ],\n}, 'assert-not=': {\n title: 'assert-not=',\n category: 'Assert',\n linkName: 'assert-not_equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is the same as $b it throws `AssertionError`.',\n examples: [\n '(assert-not= 0 0 \"Expected different values\")',\n '(assert-not= 0 0)',\n '(assert-not= 0 1)',\n ],\n}, 'assert-equal': {\n title: 'assert-equal',\n category: 'Assert',\n linkName: 'assert-equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not deep equal to $b it throws `AssertionError`.',\n examples: [\n '(assert-equal { :a 1 } { :a 2 } \"Expected equal values\")',\n '(assert-equal { :a 1 } { :a 2 })',\n '(assert-equal { :a 1 } { :a 1 })',\n ],\n}, 'assert-not-equal': {\n title: 'assert-not-equal',\n category: 'Assert',\n linkName: 'assert-not-equal',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not deep equal to $b it throws `AssertionError`.',\n examples: [\n '(assert-not-equal { :a 2 } { :a 2 } \"Expected different values\")',\n '(assert-not-equal { :a 2 } { :a 2 })',\n '(assert-not-equal { :a 1 } { :a 2 })',\n ],\n}, 'assert>': {\n title: 'assert>',\n category: 'Assert',\n linkName: 'assert_gt',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not greater than $b it throws `AssertionError`.',\n examples: [\n '(assert> 0 1 \"Expected greater value\")',\n '(assert> 0 0)',\n '(assert> 1 0)',\n ],\n}, 'assert<': {\n title: 'assert<',\n category: 'Assert',\n linkName: 'assert_lt',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not less than $b it throws `AssertionError`.',\n examples: [\n '(assert< 1 0 \"Expected smaller value value\")',\n '(assert< 1 1)',\n '(assert< 0 1)',\n ],\n}, 'assert>=': {\n title: 'assert>=',\n category: 'Assert',\n linkName: 'assert_gte',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is less than $b it throws `AssertionError`.',\n examples: [\n '(assert>= 0 1 \"Expected greater value\")',\n '(assert>= 0 1)',\n '(assert>= 1 1)',\n ],\n}, 'assert<=': {\n title: 'assert<=',\n category: 'Assert',\n linkName: 'assert_lte',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n a: {\n type: 'any',\n },\n b: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is grater than $b it throws `AssertionError`.',\n examples: [\n '(assert<= 1 0 \"Expected smaller value value\")',\n '(assert<= 1 0)',\n '(assert<= 1 1)',\n ],\n}, 'assert-true': {\n title: 'assert-true',\n category: 'Assert',\n linkName: 'assert-true',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `true` it throws `AssertionError`.',\n examples: [\n '(assert-true false \"Expected true\")',\n '(assert-true false)',\n '(assert-true true)',\n ],\n}, 'assert-false': {\n title: 'assert-false',\n category: 'Assert',\n linkName: 'assert-false',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `false` it throws `AssertionError`.',\n examples: [\n '(assert-false true \"Expected false\")',\n '(assert-false true)',\n '(assert-false false)',\n ],\n}, 'assert-truthy': {\n title: 'assert-truthy',\n category: 'Assert',\n linkName: 'assert-truthy',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `truthy` it throws `AssertionError`.',\n examples: [\n '(assert-truthy false \"Expected truthy\")',\n '(assert-truthy false)',\n '(assert-truthy 0)',\n '(assert-truthy nil)',\n '(assert-truthy \"\")',\n '(assert-truthy true)',\n '(assert-truthy 1)',\n '(assert-truthy :x)',\n '(assert-truthy [])',\n '(assert-truthy {})',\n ],\n}, 'assert-falsy': {\n title: 'assert-falsy',\n category: 'Assert',\n linkName: 'assert-falsy',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `falsy` it throws `AssertionError`.',\n examples: [\n '(assert-falsy true \"Expected falsy\")',\n '(assert-falsy :x)',\n '(assert-falsy [])',\n '(assert-falsy {})',\n '(assert-falsy 1)',\n '(assert-falsy false)',\n '(assert-falsy 0)',\n '(assert-falsy nil)',\n '(assert-falsy \"\")',\n ],\n}, 'assert-nil': {\n title: 'assert-nil',\n category: 'Assert',\n linkName: 'assert-nil',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `nil` it throws `AssertionError`.',\n examples: [\n '(assert-nil nil)',\n '(assert-nil true \"Expected nil\")',\n '(assert-nil :x)',\n '(assert-nil [])',\n '(assert-nil {})',\n '(assert-nil 1)',\n '(assert-nil false)',\n '(assert-nil 0)',\n '(assert-nil \"\")',\n ],\n}, 'assert-throws': {\n title: 'assert-throws',\n category: 'Assert',\n linkName: 'assert-throws',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n fn: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'message'] },\n ],\n description: 'If $fn does not throw, it throws `AssertionError`.',\n examples: ['(assert-throws #(throw \"Error\"))', '(assert-throws #(identity \"Error\"))'],\n}, 'assert-throws-error': {\n title: 'assert-throws-error',\n category: 'Assert',\n linkName: 'assert-throws-error',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n 'fn': {\n type: 'function',\n },\n 'error-message': {\n type: 'string',\n },\n 'message': {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value', 'error-message'] },\n { argumentNames: ['value', 'error-message', 'message'] },\n ],\n description: 'If $fn does not throw $error-message, it throws `AssertionError`.',\n examples: [\n '(assert-throws-error #(throw :Error) :Error)',\n '(assert-throws-error #(throw \"Something else\") :Error \"Hej alla barn\")',\n '(assert-throws-error #(identity :Error) :Error)',\n ],\n}, 'assert-not-throws': {\n title: 'assert-not-throws',\n category: 'Assert',\n linkName: 'assert-not-throws',\n clojureDocs: null,\n returns: {\n type: 'nil',\n },\n args: {\n fn: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fn'] },\n { argumentNames: ['fn', 'message'] },\n ],\n description: 'If $fn throws, it throws `AssertionError`.',\n examples: ['(assert-not-throws #(identity \"Error\"))', '(assert-not-throws #(throw \"Error\"))'],\n} }\n","import type { FunctionReference } from '..'\nimport type { ObjectApiName } from '../api'\n\nexport const objectReference: Record<ObjectApiName, FunctionReference<'Object'>> = {\n 'dissoc': {\n title: 'dissoc',\n category: 'Object',\n linkName: 'dissoc',\n returns: {\n type: 'object',\n },\n args: {\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Return shallow copy of $obj with $key deleted.',\n examples: [\n '(dissoc (object :x 10 :y 20) :x)',\n '(dissoc { :x 10 } :y)',\n `\n(def o { :a 5 }) (dissoc o :a)\no`,\n ],\n },\n 'object': {\n title: 'object',\n category: 'Object',\n linkName: 'object',\n clojureDocs: null,\n returns: {\n type: 'object',\n },\n args: {\n kvps: {\n type: 'any',\n rest: true,\n description: 'key - value pairs, where key is a string',\n },\n },\n variants: [\n { argumentNames: ['kvps'] },\n ],\n description: 'Constructs a new object. Object members are created from the $kvps key-value pairs. Requires an even number of arguments.',\n examples: [\n '(object)',\n '(object :x 10 :y true :z \"A string\")',\n '{}',\n '{:a 1 :b 2}',\n ],\n },\n 'keys': {\n title: 'keys',\n category: 'Object',\n linkName: 'keys',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all keys in $obj.',\n examples: [\n '(keys (object))',\n '(keys (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'vals': {\n title: 'vals',\n category: 'Object',\n linkName: 'vals',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all values in $obj.',\n examples: [\n '(vals (object))',\n '(vals (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'entries': {\n title: 'entries',\n category: 'Object',\n linkName: 'entries',\n clojureDocs: null,\n returns: {\n type: 'array',\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns nested array of all key - value pairs in $obj.',\n examples: [\n '(entries (object))',\n '(entries (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'find': {\n title: 'find',\n category: 'Object',\n linkName: 'find',\n returns: {\n type: ['array', 'nil'],\n },\n args: {\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Returns entry (key-value pair) for $key, or `nil` if $key not present in $obj.',\n examples: [\n '(find (object :a 1 :b 2) :b)',\n '(find (object :a 1 :b 2) :c)',\n ],\n },\n 'merge': {\n title: 'merge',\n category: 'Object',\n linkName: 'merge',\n returns: {\n type: 'object',\n },\n args: {\n objs: {\n type: 'object',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['objs'] },\n ],\n description: `Returns a new object created by merging together all arguments.\n\nIf two keys appears in more than one object the value from the last object is used. \nIf no arguments are provided \\`nil\\` is returned.`,\n examples: [\n '(merge (object :x 10) (object :y 20))',\n '(merge (object :x 10) (object :x 15 :y 20))',\n ],\n },\n 'merge-with': {\n title: 'merge-with',\n category: 'Object',\n linkName: 'merge-with',\n returns: {\n type: 'object',\n },\n args: {\n fn: {\n type: 'function',\n },\n objs: {\n type: 'object',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fn', 'objs'] },\n ],\n description: `\nReturns a new object created by merging together all arguments.\nIf two keys appears in more than one object $fn is used to calculate the new value.\n\nIf no arguments are provided \\`nil\\` is returned.`,\n examples: [\n '(merge-with + (object :x 10) (object :y 20))',\n '(merge-with + (object :x 10) (object :x 15 :y 20))',\n '(merge-with - (object :x 10) (object :x 20) (object :x 30) (object :x 40))',\n ],\n },\n 'zipmap': {\n title: 'zipmap',\n category: 'Object',\n linkName: 'zipmap',\n returns: {\n type: 'object',\n },\n args: {\n keys: {\n type: 'string',\n array: true,\n },\n values: {\n type: 'any',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['keys', 'values'] },\n ],\n description: 'Returns a new object created by mapping $keys to $values.',\n examples: [\n '(zipmap [:a :b :c] [10 nil [1 2 3]])',\n '(zipmap [:a :b :c] [1])',\n '(zipmap [] [10 nil [1 2 3]])',\n ],\n },\n 'select-keys': {\n title: 'select-keys',\n category: 'Object',\n linkName: 'select-keys',\n returns: {\n type: 'object',\n },\n args: {\n obj: {\n type: 'object',\n },\n keys: {\n type: 'string',\n array: true,\n },\n },\n variants: [\n { argumentNames: ['obj', 'keys'] },\n ],\n description: 'Returns an object containing only those entries in $obj whose key is in $keys.',\n examples: [\n '(select-keys {:a 1 :b 2 :c 3} [:a :b])',\n '(select-keys {:a 1} [:a :b])',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { PredicateApiName } from '../api'\n\nexport const predicateReference: Record<PredicateApiName, FunctionReference<'Predicate'>> = {\n 'boolean?': {\n title: 'boolean?',\n category: 'Predicate',\n linkName: 'boolean_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a `boolean`, otherwise `false`.',\n examples: [\n '(boolean? true)',\n '(boolean? false)',\n '(boolean? [1 2 3])',\n '(boolean? 0)',\n '(boolean? \"A string\")',\n ],\n },\n 'nil?': {\n title: 'nil?',\n category: 'Predicate',\n linkName: 'nil_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `nil`, otherwise `false`.',\n examples: [\n '(nil? nil)',\n '(nil? false)',\n '(nil? [1 2 3])',\n '(nil? 0)',\n '(nil? \"A string\")',\n ],\n },\n 'number?': {\n title: 'number?',\n category: 'Predicate',\n linkName: 'number_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a number, otherwise `false`.',\n examples: [\n '(number? 0)',\n '(number? 2)',\n '(number? -0.12)',\n '(number? false)',\n '(number? [1 2 3])',\n '(number? \"A string\")',\n ],\n },\n 'string?': {\n title: 'string?',\n category: 'Predicate',\n linkName: 'string_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a string, otherwise `false`.',\n examples: [\n '(string? \"\")',\n '(string? \"A string\")',\n '(string? (if true \"A string\" false))',\n '(string? false)',\n '(string? [1 2 3])',\n '(string? 100)',\n ],\n },\n 'function?': {\n title: 'function?',\n category: 'Predicate',\n linkName: 'function_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a function, otherwise `false`.',\n examples: [\n '(function? +)',\n '(function? /)',\n '(function? (fn [x y] (+ x y)))',\n '(function? false)',\n '(function? \"false\")',\n '(function? [1 2 3])',\n ],\n },\n 'integer?': {\n title: 'integer?',\n category: 'Predicate',\n linkName: 'integer_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an integer, otherwise `false`.',\n examples: [\n '(integer? 0)',\n '(integer? -12)',\n '(integer? 42)',\n '(integer? 10.1)',\n '(integer? (fn [x y] (+ x y)))',\n '(integer? false)',\n '(integer? \"false\")',\n '(integer? [1 2 3])',\n ],\n },\n 'array?': {\n title: 'array?',\n category: 'Predicate',\n linkName: 'array_question',\n clojureDocs: 'vector_q',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an array, otherwise `false`.',\n examples: [\n '(array? [])',\n '(array? [1 2 3])',\n '(array? (object :a 10))',\n '(array? 42)',\n '(array? 10.1)',\n '(array? (fn [x y] (+ x y)))',\n ],\n },\n 'object?': {\n title: 'object?',\n category: 'Predicate',\n linkName: 'object_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an object, otherwise `false`.',\n examples: [\n '(object? (object :a 10))',\n '(object? (object))',\n '(object? 42)',\n '(object? 10.1)',\n '(object? (fn [x y] (+ x y)))',\n '(object? #\"^start\")',\n '(object? \"false\")',\n '(object? [1 2 3])',\n ],\n },\n 'coll?': {\n title: 'coll?',\n category: 'Predicate',\n linkName: 'coll_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Coll i.e. an array, an object or a string, otherwise `false`.',\n examples: [\n '(coll? [])',\n '(coll? [1 2 3])',\n '(coll? (object :a 10))',\n '(coll? \"Albert\")',\n '(coll? 42)',\n '(coll? 10.1)',\n '(coll? (fn [x y] (+ x y)))',\n ],\n },\n 'seq?': {\n title: 'seq?',\n category: 'Predicate',\n linkName: 'seq_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Seq i.e. an array or a string, otherwise `false`.',\n examples: [\n '(seq? [])',\n '(seq? [1 2 3])',\n '(seq? (object :a 10))',\n '(seq? \"Albert\")',\n '(seq? 42)',\n '(seq? 10.1)',\n '(seq? (fn [x y] (+ x y)))',\n ],\n },\n 'regexp?': {\n title: 'regexp?',\n category: 'Predicate',\n linkName: 'regexp_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a regexp, otherwise `false`.',\n examples: [\n '(regexp? (regexp \"^start\"))',\n '(regexp? #\"^start\")',\n '(regexp? -12)',\n '(regexp? (object))',\n '(regexp? 10.1)',\n '(regexp? (fn [x y] (+ x y)))',\n '(regexp? false)',\n '(regexp? \"false\")',\n '(regexp? [1 2 3])',\n ],\n },\n 'zero?': {\n title: 'zero?',\n category: 'Predicate',\n linkName: 'zero_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `0`, otherwise `false`.',\n examples: [\n '(zero? 0)',\n '(zero? -0.0)',\n '(zero? 1)',\n '(zero? 0.1)',\n ],\n },\n 'pos?': {\n title: 'pos?',\n category: 'Predicate',\n linkName: 'pos_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is greater than `0`, otherwise `false`.',\n examples: [\n '(pos? 0)',\n '(pos? -0.0)',\n '(pos? 1)',\n '(pos? -0.1)',\n ],\n },\n 'neg?': {\n title: 'neg?',\n category: 'Predicate',\n linkName: 'neg_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is less than `0`, otherwise `false`.',\n examples: [\n '(neg? 0)',\n '(neg? -0.0)',\n '(neg? 1)',\n '(neg? -0.1)',\n ],\n },\n 'even?': {\n title: 'even?',\n category: 'Predicate',\n linkName: 'even_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is even, otherwise `false`.',\n examples: [\n '(even? 0)',\n '(even? -0.0)',\n '(even? -1)',\n '(even? 2.1)',\n ],\n },\n 'odd?': {\n title: 'odd?',\n category: 'Predicate',\n linkName: 'odd_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is odd, otherwise `false`.',\n examples: [\n '(odd? 1.0)',\n '(odd? 1.001)',\n '(odd? -1)',\n '(odd? 2.1)',\n ],\n },\n 'finite?': {\n title: 'finite?',\n category: 'Predicate',\n linkName: 'finite_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is finite, otherwise `false`.',\n examples: [\n '(finite? 1.0)',\n '(finite? (/ 1 0))',\n '(finite? (/ -1 0))',\n '(finite? (sqrt -1))',\n ],\n },\n 'nan?': {\n title: 'nan?',\n category: 'Predicate',\n linkName: 'nan_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is NaN (not a number), otherwise `false`.',\n examples: [\n '(nan? 1.0)',\n '(nan? (/ 1 0))',\n '(nan? (/ -1 0))',\n '(nan? (sqrt -1))',\n ],\n },\n 'negative-infinity?': {\n title: 'negative-infinity?',\n category: 'Predicate',\n linkName: 'negative-infinity_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals negative infinity, otherwise `false`.',\n examples: [\n '(negative-infinity? 1.0)',\n '(negative-infinity? (/ 1 0))',\n '(negative-infinity? (/ -1 0))',\n '(negative-infinity? (sqrt -1))',\n ],\n },\n 'positive-infinity?': {\n title: 'positive-infinity?',\n category: 'Predicate',\n linkName: 'positive-infinity_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals positive infinity, otherwise `false`.',\n examples: [\n '(positive-infinity? 1.0)',\n '(positive-infinity? (/ 1 0))',\n '(positive-infinity? (/ -1 0))',\n '(positive-infinity? (sqrt -1))',\n ],\n },\n 'false?': {\n title: 'false?',\n category: 'Predicate',\n linkName: 'false_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n '(false? false)',\n '(false? true)',\n '(false? 1)',\n '(false? 0)',\n ],\n },\n 'true?': {\n title: 'true?',\n category: 'Predicate',\n linkName: 'true_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n '(true? false)',\n '(true? true)',\n '(true? 1)',\n '(true? 0)',\n ],\n },\n 'empty?': {\n title: 'empty?',\n category: 'Predicate',\n linkName: 'empty_question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is empty or `nil`, otherwise `false`.',\n examples: [\n '(empty? [])',\n '(empty? [1 2 3])',\n '(empty? {})',\n '(empty? {:a 2})',\n '(empty? \"\")',\n '(empty? \"Albert\")',\n '(empty? nil)',\n ],\n },\n 'not-empty?': {\n title: 'not-empty?',\n category: 'Predicate',\n linkName: 'not-empty_question',\n clojureDocs: null,\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'nil'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `false` if $x is empty or `nil`, otherwise `true`.',\n examples: [\n '(not-empty? [])',\n '(not-empty? [1 2 3])',\n '(not-empty? {})',\n '(not-empty? {:a 2})',\n '(not-empty? \"\")',\n '(not-empty? \"Albert\")',\n '(not-empty? nil)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { RegularExpressionApiName } from '../api'\n\nexport const regularExpressionReference: Record<RegularExpressionApiName, FunctionReference<'Regular expression'>> = {\n regexp: {\n title: 'regexp',\n category: 'Regular expression',\n linkName: 'regexp',\n clojureDocs: null,\n returns: {\n type: 'regexp',\n },\n args: {\n pattern: {\n type: 'string',\n },\n flags: {\n type: 'string',\n description: 'Optional flags for the regular expression. Possible values are the same as Javascript RegExp takes.',\n },\n },\n variants: [\n { argumentNames: ['pattern'] },\n { argumentNames: ['pattern', 'flags'] },\n ],\n description: 'Creates a RegExp from $pattern and $flags.',\n examples: [\n '(regexp \"^\\\\s*(.*)$\")',\n '#\"^\\\\s*(.*)$\"',\n '(regexp \"albert\" :i)',\n '#\"albert\"ig',\n ],\n },\n match: {\n title: 'match',\n category: 'Regular expression',\n linkName: 'match',\n clojureDocs: null,\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n r: {\n type: 'regexp',\n },\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['r', 's'] },\n ],\n description: `Matches $s against regular expression $r.\nIf $s is a string and matches the regular expression, a \\`match\\`-array is returned, otherwise \\`nil\\` is returned.`,\n examples: [\n '(match (regexp \"^\\\\s*(.*)$\") \" A string\")',\n '(match #\"albert\"i \"My name is Albert\")',\n '(match #\"albert\"i \"My name is Ben\")',\n '(match #\"albert\"i nil)',\n '(match #\"albert\"i 1)',\n '(match #\"albert\"i {})',\n ],\n },\n replace: {\n title: 'replace',\n category: 'Regular expression',\n linkName: 'replace',\n clojureDocs: null,\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n s: {\n type: 'string',\n },\n r: {\n type: 'regexp',\n },\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'r', 'x'] },\n ],\n description: 'Returns a new string with some or all matches of regular expression $r replaced by $x.',\n examples: [\n '(replace \"Duck\" (regexp :u) :i)',\n '(replace \"abcABC\" (regexp :a \"gi\") \"-\")',\n '(replace \"abcABC\" #\"a\"gi \"-\")',\n ],\n },\n}\n","import type { SpecialExpressionsApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const specialExpressionsReference: Record<SpecialExpressionsApiName, FunctionReference<'Special expression'>> = {\n 'and': {\n title: 'and',\n category: 'Special expression',\n linkName: 'and',\n returns: {\n type: 'boolean',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: `\nComputes logical \\`and\\` function. Evaluation of $expressions starts from left.\nAs soon as a \\`expression\\` evaluates to a falsy value, the result is returned.\n\nIf all expressions evaluate to truthy values, the value of the last expression is returned.`,\n examples: [\n '(and 1 1)',\n '(and (> 3 2) \"string\")',\n '(and (< 3 2) \"string\")',\n '(and true true true true)',\n '(and true true 0 true)',\n ],\n },\n\n 'or': {\n title: 'or',\n category: 'Special expression',\n linkName: 'or',\n returns: {\n type: 'boolean',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: `\nComputes logical \\`or\\` function. Evaluation of $expressions evaluation starts from left.\nAs soon as a \\`expression\\` evaluates to a truthy value, the result is returned.\n\nIf all expressions evaluate to falsy values, the value of the last expression is returned.`,\n examples: [\n '(or 1 1)',\n '(or (> 3 2) \"string\")',\n '(or (< 3 2) \"string\")',\n '(or true true true true)',\n '(or 1 2 3 4)',\n ],\n },\n 'def': {\n title: 'def',\n category: 'Special expression',\n linkName: 'def',\n returns: {\n type: 'any',\n },\n args: {\n n: {\n type: '*name',\n },\n value: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['n', 'value'] },\n ],\n description: `Bind $value to variable $n.\n\nIf $n is already defined, an error is thrown.`,\n examples: [\n '(def a (object))',\n '(def a (object :x 10 :y true :z \"A string\"))',\n ],\n },\n 'defs': {\n title: 'defs',\n category: 'Special expression',\n linkName: 'defs',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n name: {\n type: '*expression',\n },\n value: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['name', 'value'] },\n ],\n description: `\nCreates a variable with name set to $name evaluated and value set to $value.\n\nIf a variable with name $name is already defined, an error is thrown.`,\n examples: [\n '(defs :a :b)',\n `\n(defs (str :a :1) (object :x 10 :y true :z \"A string\"))\na1`,\n `\n(defs :a :b)\n(defs a :c)\nb`,\n ],\n },\n 'let': {\n title: 'let',\n category: 'Special expression',\n linkName: 'let',\n returns: {\n type: 'any',\n },\n args: {\n bindings: {\n type: '*binding',\n rest: true,\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['bindings', 'expressions'] },\n ],\n description: `\nBinds local variables. The variables lives only within $expressions.\nIt returns evaluation of the last expression in $expressions.`,\n examples: [`\n (let [a (+ 1 2 3 4) \n b (* 1 2 3 4)]\n (write! a b))`],\n },\n 'if-let': {\n title: 'if-let',\n category: 'Special expression',\n linkName: 'if-let',\n returns: {\n type: 'any',\n },\n args: {\n 'binding': {\n type: '*binding',\n },\n 'then-expr': {\n type: '*expression',\n },\n 'else-expr': {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['binding', 'then-expr'] },\n { argumentNames: ['binding', 'then-expr', 'else-expr'] },\n ],\n description: `\nBinds one local variable. If it evaluates to a truthy value\n$then-expr is executed with the variable accessable.\nIf the bound variable evaluates to false, the $else-expr is evaluated\n(without variable accessable).`,\n examples: [\n `\n(if-let [a (> (count \"Albert\") 4)]\n (write! (str a \", is big enough\"))\n (write! \"Sorry, not big enough.\"))`,\n `\n(if-let [a (> (count \"Albert\") 10)]\n (write! (str a \", is big enough\"))\n (write! \"Sorry, not big enough.\"))`,\n ],\n },\n 'when-let': {\n title: 'when-let',\n category: 'Special expression',\n linkName: 'when-let',\n returns: {\n type: 'any',\n },\n args: {\n binding: {\n type: '*binding',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['binding', 'expressions'] },\n ],\n description: `\nBinds one local variable. If it evaluates to a truthy value\n$expressions is executed with the variable accessable.\nIf the bound variable evaluates to a falsy value, \\`nil\\` is returned.`,\n examples: [\n `\n(when-let [a (> (count \"Albert\") 4)]\n (write! a))`,\n ],\n },\n 'when-first': {\n title: 'when-first',\n category: 'Special expression',\n linkName: 'when-first',\n returns: {\n type: 'any',\n },\n args: {\n binding: {\n type: '*binding',\n rest: true,\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['binding', 'expressions'] },\n ],\n description: 'When the binding value in $binding is a non empty sequence, the first element of that sequence (instead of the sequence itself) is bound to the variable.',\n examples: [\n `\n(when-first [x [1 2 3]]\n (write! x)\n x)`,\n `\n(when-first [x \"Albert\"]\n (write! x)\n x)`,\n `\n(when-first [x [0]]\n (write! x)\n x)`,\n `\n(when-first [x [nil]]\n (write! x)\n x)`,\n `\n(when-first [x []]\n (write! x)\n x)`,\n ],\n },\n\n 'fn': {\n title: 'fn',\n category: 'Special expression',\n linkName: 'fn',\n returns: {\n type: 'function',\n },\n args: {\n args: {\n type: '*arguments',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['args', 'expressions'] },\n ],\n description: 'Creates a function. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\n(fn [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))`,\n `\n(\n (fn [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\n 3\n 4)`,\n ],\n },\n 'defn': {\n title: 'defn',\n category: 'Special expression',\n linkName: 'defn',\n returns: {\n type: 'function',\n },\n args: {\n n: {\n type: '*name',\n },\n args: {\n type: '*arguments',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['n', 'args', 'expressions'] },\n ],\n description: 'Creates a named global function. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\n(defn hyp [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\nhyp`,\n `\n(defn hyp [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\n(hyp 3 4)`,\n `\n(defn sumOfSquares [& s]\n (apply\n +\n (map\n (fn [x] (* x x))\n s)))\n(sumOfSquares 1 2 3 4 5)`,\n ],\n },\n 'defns': {\n title: 'defns',\n category: 'Special expression',\n linkName: 'defns',\n clojureDocs: null,\n returns: {\n type: 'function',\n },\n args: {\n name: {\n type: '*expression',\n },\n args: {\n type: '*arguments',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['name', 'args', 'expressions'] },\n ],\n description: 'Creates a named global function with its name set to $name evaluated. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\n(defns \"hyp\" [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\nhyp`,\n `\n(defns\n (str :h :y :p)\n [a b]\n (sqrt\n (+\n (* a a)\n (* b b))))\n(hyp 3 4)`,\n `\n(defns \"sumOfSquares\" [& s]\n (apply\n +\n (map\n (fn [x] (* x x))\n s)))\n(sumOfSquares 1 2 3 4 5)`,\n ],\n },\n 'try': {\n title: 'try',\n category: 'Special expression',\n linkName: 'try',\n clojureDocs: null,\n returns: {\n type: 'any',\n },\n args: {\n exp: {\n type: '*expression',\n },\n catch: {\n type: '*catch-expression',\n },\n },\n variants: [\n { argumentNames: ['exp', 'catch'] },\n ],\n description: 'Executes $exp. If that throws, the $catch `body` gets executed. See examples for details.',\n examples: [\n `\n(try\n (/ 2 4)\n (catch error \"Oops!\"))`,\n `\n(try\n (foo)\n (catch error \"Oops!\"))`,\n `\n(try\n (foo)\n (catch error error))`,\n ],\n },\n 'throw': {\n title: 'throw',\n category: 'Special expression',\n linkName: 'throw',\n clojureDocs: null,\n returns: {\n type: 'never',\n },\n args: {\n expr: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['expr'] },\n ],\n description: 'Throws `UserDefinedError` with message set to $expr evaluated. $expr must evaluate to a string.',\n examples: [\n '(throw \"You shall not pass!\")',\n '(throw (subs \"You shall not pass!\" 0 3))',\n ],\n },\n 'if': {\n title: 'if',\n category: 'Special expression',\n linkName: 'if',\n returns: {\n type: 'any',\n },\n args: {\n 'test': {\n type: 'any',\n },\n 'then-expr': {\n type: 'any',\n },\n 'else-expr': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['test', 'then-expr'] },\n { argumentNames: ['test', 'then-expr', 'else-expr'] },\n ],\n description: 'Either $then-expr or $else-expr branch is taken. $then-expr is selected when $test is truthy. If $test is falsy $else-expr is executed, if no $else-expr exists, `nil` is returned.',\n examples: [\n '(if true (write! \"TRUE\") (write! \"FALSE\"))',\n '(if false (write! \"TRUE\") (write! \"FALSE\"))',\n '(if true (write! \"TRUE\"))',\n '(if false (write! \"TRUE\"))',\n ],\n },\n 'if-not': {\n title: 'if-not',\n category: 'Special expression',\n linkName: 'if-not',\n returns: {\n type: 'any',\n },\n args: {\n 'test': {\n type: 'any',\n },\n 'then-expr': {\n type: 'any',\n },\n 'else-expr': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['test', 'then-expr'] },\n { argumentNames: ['test', 'then-expr', 'else-expr'] },\n ],\n description: 'Either $then-expr or $else-expr branch is taken. $then-expr is selected when $test is falsy. If $test is truthy $else-expr is executed, if no $else-expr exists, `nil` is returned.',\n examples: [\n '(if-not true (write! \"TRUE\") (write! \"FALSE\"))',\n '(if-not false (write! \"TRUE\") (write! \"FALSE\"))',\n '(if-not true (write! \"TRUE\"))',\n '(if-not false (write! \"TRUE\"))',\n ],\n },\n 'cond': {\n title: 'cond',\n category: 'Special expression',\n linkName: 'cond',\n returns: {\n type: 'any',\n },\n args: {\n conds: {\n type: '*conditions',\n },\n },\n variants: [\n { argumentNames: ['conds'] },\n ],\n description: 'Used for branching. $conds are tested sequentially from the top. If no branch is tested truthy, `nil` is returned.',\n examples: [\n `\n(cond\n false (write! \"FALSE\")\n nil (write! \"nil\")\n :else (write! \"TRUE\"))`,\n `\n(cond\n false (write! \"FALSE\")\n nil (write! \"nil\")\n true (write! \"TRUE\"))`,\n `\n(cond\n false (write! \"FALSE\")\n nil (write! \"nil\"))`,\n ],\n },\n 'when': {\n title: 'when',\n category: 'Special expression',\n linkName: 'when',\n returns: {\n type: 'any',\n },\n args: {\n test: {\n type: '*expression',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['test', 'expressions'] },\n ],\n description: `If $test yields a thruthy value, the expressions are evaluated\nand the value returned by the last expression is returned.\nOtherwise, if $test yields a falsy value, the expressions are not evaluated,\nand \\`nil\\` is returned. If no $expressions are provided, \\`nil\\` is returned.`,\n examples: [\n `(when true\n (write! \"Hi\")\n (write! \"There\"))`,\n `(when false\n (write! \"Hi\")\n (write! \"There\"))`,\n '(when true)',\n '(when false)',\n ],\n },\n 'when-not': {\n title: 'when-not',\n category: 'Special expression',\n linkName: 'when-not',\n returns: {\n type: 'any',\n },\n args: {\n test: {\n type: '*expression',\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['test', 'expressions'] },\n ],\n description: `If $test yields a falsy value, the expressions are evaluated\nand the value returned by the last \\`expression\\` is returned.\nOtherwise, if $test yields a truthy value, the $expressions are not evaluated,\nand \\`nil\\` is returned. If no \\`expression\\` is provided, \\`nil\\` is returned.`,\n examples: [\n '(when-not true (write! \"Hi\") (write! \"There\"))',\n '(when-not false (write! \"Hi\") (write! \"There\"))',\n '(when-not true)',\n '(when-not false)',\n ],\n },\n 'comment': {\n title: 'comment',\n category: 'Special expression',\n linkName: 'comment',\n returns: {\n type: 'nil',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: 'All $expressions are read and must be valid `lits` but they are not eveluated. `nil` is returned.',\n examples: ['(comment (write! \"Hi\") (write! \"Albert\"))', '(comment)'],\n },\n 'do': {\n title: 'do',\n category: 'Special expression',\n linkName: 'do',\n returns: {\n type: 'any',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: 'Evaluates $expressions. Resulting value is the value of the last expression.',\n examples: [\n `\n(do \n (write! \"Hi\")\n (write! \"Albert\"))`,\n '(do)',\n ],\n },\n 'recur': {\n title: 'recur',\n category: 'Special expression',\n linkName: 'recur',\n returns: {\n type: 'nil',\n },\n args: {\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['expressions'] },\n ],\n description: 'Recursevly calls enclosing function or loop with its evaluated $expressions.',\n examples: [\n `\n(defn foo [n]\n (write! n)\n (when (not (zero? n))\n (recur\n (dec n))))\n(foo 3)`,\n `\n(\n (fn [n]\n (write! n)\n (when (not (zero? n))\n (recur\n (dec n))))\n 3)`,\n `\n(\n loop [n 3]\n (write! n)\n (when\n (not (zero? n))\n (recur (dec n))))`,\n ],\n },\n 'loop': {\n title: 'loop',\n category: 'Special expression',\n linkName: 'loop',\n returns: {\n type: 'any',\n },\n args: {\n bindings: {\n type: '*binding',\n rest: true,\n },\n expressions: {\n type: '*expression',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['bindings', 'expressions'] },\n ],\n description: 'Executes $expressions with initial $bindings. The $bindings will be replaced with the recur parameters for subsequent recursions.',\n examples: [\n `\n(loop [n 3]\n (write! n)\n (when\n (not (zero? n))\n (recur (dec n))))`,\n `\n(loop [n 3]\n (write! n)\n (if\n (not (zero? n))\n (recur (dec n))\n n))`,\n ],\n },\n 'time!': {\n title: 'time!',\n category: 'Special expression',\n linkName: 'time_exclamation',\n clojureDocs: 'time',\n returns: {\n type: 'any',\n },\n args: {\n expression: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['expression'] },\n ],\n description: 'Prints the time it took to evaluate $expression. Returns $expression evaluated.',\n examples: [`\n(defn fib [x]\n (if\n (<= x 2)\n 1\n (+ \n (fib (dec x))\n (fib (- x 2)))))\n(time! (fib 20))`],\n },\n\n 'doseq': {\n title: 'doseq',\n category: 'Special expression',\n linkName: 'doseq',\n returns: {\n type: 'nil',\n },\n args: {\n bindings: {\n type: '*for-binding',\n rest: true,\n },\n expr: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['vars', 'expr'] },\n ],\n description: 'Same syntax as `for`, but returns `nil`. Use for side effects. Consumes less memory than `for`.',\n examples: ['(doseq [x [1 2 4]] (write! x))'],\n },\n 'for': {\n title: 'for',\n category: 'Special expression',\n linkName: 'for',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n bindings: {\n type: '*for-binding',\n rest: true,\n },\n expr: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['vars', 'expr'] },\n ],\n description: `List comprehension. Takes one or more $bindings, each followed by zero or more modifiers, and returns an array of evaluations of $expr.\n \n Collections are iterated in a nested fashion, rightmost fastest. Supported modifiers are: &let &while and &when.`,\n examples: [\n `\n(for [x \"Al\" y [1 2]]\n (repeat y x))`,\n `\n(for [x {:a 10 :b 20} y [1 2]]\n (repeat y x))`,\n `\n(for [x [1 2] y [1 10]]\n (* x y))`,\n `\n(for\n [x [1 2]\n &let [z (* x x x)]]\n \n z)`,\n `\n(for\n [x [0 1 2 3 4 5]\n &let [y (* x 3)]\n &when (even? y)]\n \n y)`,\n `\n(for\n [x [0 1 2 3 4 5]\n &let [y (* x 3)]\n &while (even? y)]\n \n y)`,\n `\n(for\n [x [0 1 2 3 4 5]\n &let [y (* x 3)]\n &while (odd? y)]\n \n y)`,\n `\n(for\n [x [1 2 3] y [1 2 3]\n &while (<= x y)\n z [1 2 3]]\n \n [x y z])`,\n `\n(for\n [x [1 2 3] y [1 2 3] z [1 2 3]\n &while (<= x y)]\n \n [x y z])`,\n ],\n },\n 'declared?': {\n title: 'declared?',\n category: 'Special expression',\n linkName: 'declared_question',\n returns: {\n type: 'boolean',\n },\n args: {\n n: {\n type: '*name',\n },\n },\n variants: [\n { argumentNames: ['n'] },\n ],\n description: 'Returns `true` if $n is a declared variable or a builtin function, otherwise `false`.',\n examples: [\n '(declared? foo)',\n `\n(def foo :foo)\n(declared? foo)`,\n '(declared? +)',\n `\n(def foo nil)\n(declared? foo)`,\n '(declared? if)',\n ],\n },\n '??': {\n title: '??',\n category: 'Special expression',\n linkName: '_question_question',\n returns: {\n type: 'any',\n },\n args: {\n test: {\n type: '*expression',\n },\n default: {\n type: '*expression',\n },\n },\n variants: [\n { argumentNames: ['test'] },\n { argumentNames: ['test', 'default'] },\n ],\n description: 'If $test is declared and evaluated to non `nil` value $test is result, else $default is returned. If $default is not provided, `nil` is returned.',\n examples: [\n '(?? foo)',\n `\n(def foo :foo)\n(?? foo)`,\n '(?? +)',\n `\n(def foo nil)\n(?? foo)`,\n `\n(def foo nil)\n(?? foo :bar)`,\n '(?? foo 1)',\n '(?? \"\")',\n '(?? 0)',\n '(?? 0 1)',\n '(?? 2 1)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { StringApiName } from '../api'\n\nexport const stringReference: Record<StringApiName, FunctionReference<'String'>> = {\n 'subs': {\n title: 'subs',\n category: 'String',\n linkName: 'subs',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n start: {\n type: 'integer',\n },\n end: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'start', 'end'] },\n { argumentNames: ['s', 'start'] },\n ],\n description: 'Extracts characters from $start up to but not including $end.',\n examples: [\n '(subs \"A string\" 2)',\n '(subs \"A string\" 2 5)',\n '(subs \"A string\" 2 100)',\n '(subs \"A string\" 100)',\n ],\n },\n 'string-repeat': {\n title: 'string-repeat',\n category: 'String',\n linkName: 'string-repeat',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n s: {\n type: 'string',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'n'] },\n ],\n description: 'Repeates $s $n times.',\n examples: [\n '(string-repeat \"*\" 10)',\n '(string-repeat \"***\" 0)',\n ],\n },\n 'str': {\n title: 'str',\n category: 'String',\n linkName: 'str',\n returns: {\n type: 'string',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Concatenats $values into one string. If `value` equals `nil` empty string is returned.',\n examples: [\n '(str \"A string\" \", and another string\" \" ...and more\")',\n '(str \"Just one string\")',\n '(str)',\n '(str 0 false true nil #\"^kalle\" [1 2 3] {:a :a})',\n ],\n },\n 'number': {\n title: 'number',\n category: 'String',\n linkName: 'number',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Parses $s to a number.',\n examples: [\n '(number \"10\")',\n '(number \"010\")',\n '(number \"-1.01\")',\n ],\n },\n 'number-to-string': {\n title: 'number-to-string',\n category: 'String',\n linkName: 'number-to-string',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n n: {\n type: 'number',\n },\n base: {\n type: 'number',\n description: '2, 8, 10 or 16',\n },\n },\n variants: [\n { argumentNames: ['n'] },\n { argumentNames: ['n', 'base'] },\n ],\n description: 'Converts $n to a string. If $base is not equal to `10`, $n must be a non negative integer.',\n examples: [\n '(number-to-string 10)',\n '(number-to-string -1.01)',\n '(number-to-string -.01)',\n '(number-to-string 15 2)',\n '(number-to-string 15 8)',\n '(number-to-string 15 16)',\n ],\n },\n 'lower-case': {\n title: 'lower-case',\n category: 'String',\n linkName: 'lower-case',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to lower case.',\n examples: [\n '(lower-case \"Albert\")',\n '(lower-case \"\")',\n ],\n },\n 'upper-case': {\n title: 'upper-case',\n category: 'String',\n linkName: 'upper-case',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to upper case.',\n examples: [\n '(upper-case \"Albert\")',\n '(upper-case \"\")',\n ],\n },\n 'trim': {\n title: 'trim',\n category: 'String',\n linkName: 'trim',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading and trailing whitespaces removed.',\n examples: [\n '(trim \" Albert \")',\n '(trim \" \")',\n '(trim \"\")',\n ],\n },\n 'trim-left': {\n title: 'trim-left',\n category: 'String',\n linkName: 'trim-left',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading whitespaces removed.',\n examples: [\n '(trim-left \" Albert \")',\n '(trim-left \" \")',\n '(trim-left \"\")',\n ],\n },\n 'trim-right': {\n title: 'trim-right',\n category: 'String',\n linkName: 'trim-right',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with trailing whitespaces removed.',\n examples: [\n '(trim-right \" Albert \")',\n '(trim-right \" \")',\n '(trim-right \"\")',\n ],\n },\n 'pad-left': {\n title: 'pad-left',\n category: 'String',\n linkName: 'pad-left',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given $length.',\n examples: [\n '(pad-left \"Albert\" 20)',\n '(pad-left \"Albert\" 20 \"-*-\")',\n '(pad-left \"Albert\" 5)',\n '(pad-left \"Albert\" -1)',\n ],\n },\n 'pad-right': {\n title: 'pad-right',\n category: 'String',\n linkName: 'pad-right',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given `length`.',\n examples: [\n '(pad-right \"Albert\" 20)',\n '(pad-right \"Albert\" 20 \"-*-\")',\n '(pad-right \"Albert\" 5)',\n '(pad-right \"Albert\" -1)',\n ],\n },\n 'split': {\n title: 'split',\n category: 'String',\n linkName: 'split',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n delimiter: {\n type: 'string',\n },\n limit: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'delimiter'] },\n { argumentNames: ['s', 'delimiter', 'limit'] },\n ],\n description: 'Divides $s into an array of substrings. The division is done by searching for `delimiter`. If `limit` as provided, at most `limit` number of substrings are returned.',\n examples: [\n '(split \"Albert Mojir\" \" \")',\n '(split \"abcdefghijklmnopqrstuvw\" (regexp \"[aoueiy]\"))',\n '(split \"0123456789\" \"\")',\n '(map number (split \"0123456789\" \"\" 5))',\n ],\n },\n 'template': {\n title: 'template',\n category: 'String',\n linkName: 'template',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n params: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['s', 'params'] },\n ],\n description: 'Applies placeholders to a string. Support for basic pluralization - see examples. If pluralization is used, first placeholder must be a number.',\n examples: [\n '(template \"Hi, $1 and $2\" \"Carl\" \"Larry\")',\n '(template \"Hi $1, $2, $3, $4, $5, $6, $7, $8 and $9\" :A :B :C :D :E :F :G :H :I)',\n '(template \"$1 book||||$1 books\" 0)',\n '(template \"$1 book||||$1 books\" 1)',\n '(template \"$1 book||||$1 books\" 2)',\n '(template \"No book||||$1 book||||$1 books\" 0)',\n '(template \"No book||||$1 book||||$1 books\" 1)',\n '(template \"No book||||$1 book||||$1 books\" 10)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 0)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 1)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 2)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 3)',\n '(template \"No book||||One book||||Two books||||Three books||||$1 books\" 4)',\n ],\n },\n 'to-char-code': {\n title: 'to-char-code',\n category: 'String',\n linkName: 'to-char-code',\n clojureDocs: null,\n returns: {\n type: 'number',\n },\n args: {\n c: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['c'] },\n ],\n description: 'Return code point for first character in $c.',\n examples: [\n '(to-char-code :A)',\n '(to-char-code \"Albert\")',\n ],\n },\n 'from-char-code': {\n title: 'from-char-code',\n category: 'String',\n linkName: 'from-char-code',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n code: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['code'] },\n ],\n description: 'Return character for code point $code.',\n examples: [\n '(from-char-code 65)',\n '(from-char-code 0)',\n ],\n },\n 'encode-base64': {\n title: 'encode-base64',\n category: 'String',\n linkName: 'encode-base64',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a Base64 encoded string from $s.',\n examples: [\n '(encode-base64 \"Albert\")',\n ],\n },\n 'decode-base64': {\n title: 'decode-base64',\n category: 'String',\n linkName: 'decode-base64',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n base64string: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['base64string'] },\n ],\n description: 'Returns a Base64 decoded string from $base64string.',\n examples: [\n '(decode-base64 \"QWxiZXJ0IPCfkLs=\")',\n ],\n },\n 'encode-uri-component': {\n title: 'encode-uri-component',\n category: 'String',\n linkName: 'encode-uri-component',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an escaped `URI` string.',\n examples: [\n '(encode-uri-component \"Hi everyone!?\")',\n ],\n },\n 'decode-uri-component': {\n title: 'decode-uri-component',\n category: 'String',\n linkName: 'decode-uri-component',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an un-escaped `URI` string.',\n examples: [\n '(decode-uri-component \"Hi%20everyone!%3F%20%F0%9F%91%8D\")',\n ],\n },\n\n 'join': {\n title: 'join',\n category: 'String',\n linkName: 'join',\n clojureDocs: null,\n returns: {\n type: 'string',\n },\n args: {\n arr: {\n type: 'array',\n },\n delimiter: {\n type: 'string',\n },\n },\n variants: [{\n argumentNames: ['arr', 'delimiter'],\n }],\n description: 'Returns a new string by concatenating all of the elements in $arr, separated by $delimiter.',\n examples: [\n '(join [\"Albert\" \"Mojir\"] \" \")',\n '(join (map number-to-string [0 1 2 3 4 5 6 7 8 9]) \", \")',\n ],\n },\n}\n","import type { BitwiseApiName } from '../api.ts'\nimport type { FunctionReference } from '../index.ts'\n\nexport const bitwiseReference: Record<BitwiseApiName, FunctionReference<'Bitwise'>> = { 'bit-shift-left': {\n title: 'bit-shift-left',\n category: 'Bitwise',\n linkName: 'bit-shift-left',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Shifts $x arithmetically left by $n bit positions.',\n examples: ['(bit-shift-left 1 10)', '(bit-shift-left -4 2)'],\n}, 'bit-shift-right': {\n title: 'bit-shift-right',\n category: 'Bitwise',\n linkName: 'bit-shift-right',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Shifts $x arithmetically right by $n bit positions.',\n examples: ['(bit-shift-right 2048 10)', '(bit-shift-right 4 10)'],\n}, 'unsigned-bit-shift-right': {\n title: 'unsigned-bit-shift-right',\n category: 'Bitwise',\n linkName: 'unsigned-bit-shift-right',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Shifts $x arithmetically right by $n bit positions without sign extension.',\n examples: ['(unsigned-bit-shift-right 2048 10)', '(unsigned-bit-shift-right 4 10)', '(unsigned-bit-shift-right -1 10)'],\n}, 'bit-not': {\n title: 'bit-not',\n category: 'Bitwise',\n linkName: 'bit-not',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns bitwise `not` of $x.',\n examples: ['(bit-not 0)', '(bit-not 255)'],\n}, 'bit-and': {\n title: 'bit-and',\n category: 'Bitwise',\n linkName: 'bit-and',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `and` of all arguments.',\n examples: [\n '(bit-and 0b0011 0b0110)',\n '(bit-and 0b0011 0b0110 0b1001)',\n ],\n}, 'bit-and-not': {\n title: 'bit-and-not',\n category: 'Bitwise',\n linkName: 'bit-and-not',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `and` with complement.',\n examples: ['(bit-and-not 0b0011 0b0110)', '(bit-and-not 0b0011 0b0110 0b1001)'],\n}, 'bit-or': {\n title: 'bit-or',\n category: 'Bitwise',\n linkName: 'bit-or',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `or` of all arguments.',\n examples: ['(bit-or 0b0011 0b0110)', '(bit-or 0b1000 0b0100 0b0010)'],\n}, 'bit-xor': {\n title: 'bit-xor',\n category: 'Bitwise',\n linkName: 'bit-xor',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n y: {\n type: 'integer',\n },\n rest: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x', 'y'] },\n { argumentNames: ['x', 'y', 'rest'] },\n ],\n description: 'Returns bitwise `xor` of all arguments.',\n examples: ['(bit-xor 0b0011 0b0110)', '(bit-xor 0b11110000 0b00111100 0b10101010)'],\n}, 'bit-flip': {\n title: 'bit-flip',\n category: 'Bitwise',\n linkName: 'bit-flip',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Flips bit number $n.',\n examples: ['(bit-flip 0b0011 1)', '(bit-flip 0b1100 1)'],\n}, 'bit-clear': {\n title: 'bit-clear',\n category: 'Bitwise',\n linkName: 'bit-clear',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Clears bit number $n.',\n examples: ['(bit-clear 0b0011 1)', '(bit-clear 0b1100 1)'],\n}, 'bit-set': {\n title: 'bit-set',\n category: 'Bitwise',\n linkName: 'bit-set',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Sets bit number $n.',\n examples: ['(bit-set 0b0011 1)', '(bit-set 0b1100 1)'],\n}, 'bit-test': {\n title: 'bit-test',\n category: 'Bitwise',\n linkName: 'bit-test',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'integer',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x', 'n'] },\n ],\n description: 'Checks if bit number $n is set.',\n examples: ['(bit-test 0b0011 1)', '(bit-test 0b1100 1)'],\n} }\n","import type { ShorthandName } from './api'\nimport type { ShorthandReference } from '.'\n\nexport const shorthand: Record<ShorthandName, ShorthandReference> = {\n _short_regexp: {\n shorthand: true,\n title: '#\"pattern\"',\n category: 'Shorthand',\n linkName: '_short_regexp',\n clojureDocs: null,\n description: 'Shorthand for ``(regexp pattern)``',\n examples: [\n '#\"^\\\\s*(.*)$\"',\n '#\"albert\"ig',\n ],\n seeAlso: ['regexp'],\n },\n _short_fn: {\n shorthand: true,\n title: '#(expression)',\n category: 'Shorthand',\n linkName: '_short_fn',\n clojureDocs: null,\n description: `\nShorthand for \\`\\`(fn [args] (expression))\\`\\`.\n\\`%1, %2, %3, ...\\` are shorthand for the first, second, third, ... argument.\n\nYou can reference the first argument using either \\`%1\\` or \\`%\\`.\nHowever, please note that \\`%1\\` and \\`%\\` are mutually exclusive and cannot be used simultaneously.\nE.g. \\`\\`#(* % %1)\\`\\` is not valid.`,\n examples: [\n '#(+ %1 %2)',\n '#(* % %)',\n ],\n seeAlso: ['fn'],\n },\n _short_string: {\n shorthand: true,\n title: ':abc',\n category: 'Shorthand',\n linkName: '_short_string',\n clojureDocs: null,\n description: 'Shorthand for ``\"abc\"``. The string can only contain `name` characters',\n examples: [\n ':abc',\n ':a-b',\n ],\n },\n _short_dot: {\n shorthand: true,\n title: 'foo.bar',\n category: 'Shorthand',\n linkName: '_short_dot',\n clojureDocs: null,\n description: 'Shorthand for ``(foo \"bar\")``.',\n examples: [\n `\n(def foo {:bar {:baz 42}})\nfoo.bar.baz`,\n ],\n },\n _short_hash: {\n shorthand: true,\n title: 'foo#3',\n category: 'Shorthand',\n linkName: '_short_hash',\n clojureDocs: null,\n description: 'Shorthand for ``(foo 3)``.',\n examples: [\n `\n(def foo {:bar [1 2 3]})\nfoo.bar#2`,\n ],\n },\n}\n","import type { DatatypeName } from './api'\nimport type { DatatypeReference } from '.'\n\nexport const datatype: Record<DatatypeName, DatatypeReference> = {\n _type_number: {\n datatype: true,\n clojureDocs: null,\n title: 'number',\n category: 'Datatype',\n linkName: '_type_number',\n description: 'A number',\n examples: [\n '42',\n '3.14',\n ],\n },\n _type_string: {\n datatype: true,\n clojureDocs: null,\n title: 'string',\n category: 'Datatype',\n linkName: '_type_string',\n description: 'A string',\n examples: [\n '\"hello\"',\n '\"\"',\n ],\n },\n _type_object: {\n datatype: true,\n clojureDocs: null,\n title: 'object',\n category: 'Datatype',\n linkName: '_type_object',\n description: 'An object, a collection of key-value pairs where keys are strings',\n examples: [\n '{}',\n '{:a 1 :b 2}',\n ],\n },\n _type_array: {\n datatype: true,\n clojureDocs: null,\n title: 'array',\n category: 'Datatype',\n linkName: '_type_array',\n description: 'An array, a collection of values',\n examples: [\n '[]',\n '[1 2 3]',\n '[:a nil true]',\n ],\n },\n _type_boolean: {\n datatype: true,\n clojureDocs: null,\n title: 'boolean',\n category: 'Datatype',\n linkName: '_type_boolean',\n description: 'A boolean',\n examples: [\n 'true',\n 'false',\n ],\n },\n _type_function: {\n datatype: true,\n clojureDocs: null,\n title: 'function',\n category: 'Datatype',\n linkName: '_type_function',\n description: 'A function',\n examples: [\n '(fn [x] (+ x 1))',\n '(fn [] 42)',\n '#(+ %1 %2)',\n ],\n },\n _type_integer: {\n datatype: true,\n clojureDocs: null,\n title: 'integer',\n category: 'Datatype',\n linkName: '_type_integer',\n description: 'An integer',\n examples: [\n '42',\n '-42',\n ],\n },\n _type_any: {\n datatype: true,\n clojureDocs: null,\n title: 'any',\n category: 'Datatype',\n linkName: '_type_any',\n description: 'Any value',\n examples: [\n '42',\n '\"hello\"',\n 'true',\n 'nil',\n ],\n },\n _type_nil: {\n datatype: true,\n clojureDocs: null,\n title: 'nil',\n category: 'Datatype',\n linkName: '_type_nil',\n description: 'The value nil',\n examples: [\n 'nil',\n ],\n },\n _type_collection: {\n datatype: true,\n clojureDocs: null,\n title: 'collection',\n category: 'Datatype',\n linkName: '_type_collection',\n description: 'A collection, an object, an array or a string',\n examples: [\n '{:foo 42}',\n '[1, 2, 3]',\n '\"hello\"',\n ],\n },\n _type_sequence: {\n datatype: true,\n clojureDocs: null,\n title: 'sequence',\n category: 'Datatype',\n linkName: '_type_sequence',\n description: 'A sequence, an array or a string',\n examples: [\n '[1 2 3]',\n '\"hello\"',\n ],\n },\n _type_regexp: {\n datatype: true,\n clojureDocs: null,\n title: 'regexp',\n category: 'Datatype',\n linkName: '_type_regexp',\n description: 'A regular expression',\n examples: [\n '(regexp \"^\\\\s*(.*)$\")',\n '#\"albert\"ig',\n ],\n },\n _type_never: {\n datatype: true,\n clojureDocs: null,\n title: 'never',\n category: 'Datatype',\n linkName: '_type_never',\n description: 'A value that can never be created',\n examples: [\n '(throw \"error\")',\n ],\n },\n}\n","import { isUnknownRecord } from '../src/typeGuards'\nimport { collectionReference } from './categories/collection'\nimport { functionalReference } from './categories/functional'\nimport { arrayReference } from './categories/array'\nimport { sequenceReference } from './categories/sequence'\nimport { mathReference } from './categories/math'\nimport { miscReference } from './categories/misc'\nimport { assertReference } from './categories/assert'\nimport { objectReference } from './categories/object'\nimport { predicateReference } from './categories/predicate'\nimport { regularExpressionReference } from './categories/regularExpression'\nimport { specialExpressionsReference } from './categories/specialExpressions'\nimport { stringReference } from './categories/string'\nimport { bitwiseReference } from './categories/bitwise'\nimport { shorthand } from './shorthand'\nimport { datatype } from './datatype'\nimport type { ApiName, Category, DataType, FunctionName } from './api'\n\nexport interface TypedValue {\n type: DataType[] | DataType\n rest?: true\n array?: true\n}\n\ntype NormalExpressionArgument = TypedValue & {\n description?: string\n}\ninterface SpecialExpressionArgument {\n type: '*expression' | '*name' | '*binding' | '*arguments' | '*catch-expression' | '*conditions' | '*for-binding'\n rest?: true\n array?: true\n description?: string\n}\n\nexport type Argument = NormalExpressionArgument | SpecialExpressionArgument\n\nexport function isSpecialExpressionArgument(arg?: Argument): arg is SpecialExpressionArgument {\n return isUnknownRecord(arg) && typeof arg.type === 'string' && arg.type.startsWith('*')\n}\n\nexport function isNormalExpressionArgument(arg?: Argument): arg is NormalExpressionArgument {\n return isUnknownRecord(arg) && !isSpecialExpressionArgument(arg)\n}\n\nexport function isTypedValue(arg?: Argument): arg is TypedValue {\n return isUnknownRecord(arg) && !isSpecialExpressionArgument(arg)\n}\n\ninterface Variant {\n argumentNames: string[]\n}\n\nexport interface CommonReference<T extends Category> {\n title: string\n category: T\n linkName: string\n examples: string[]\n description: string\n clojureDocs?: string | null\n seeAlso?: ApiName[]\n}\nexport interface FunctionReference<T extends Category = Category> extends CommonReference<T> {\n returns: TypedValue\n args: Record<string, Argument>\n variants: Variant[]\n}\n\nexport interface ShorthandReference extends CommonReference<'Shorthand'> {\n shorthand: true\n linkName: `_short_${string}`\n}\n\nexport interface DatatypeReference extends CommonReference<'Datatype'> {\n datatype: true\n linkName: `_type_${string}`\n}\n\nexport type Reference<T extends Category = Category> = FunctionReference<T> | ShorthandReference | DatatypeReference\n\nexport function isFunctionReference<T extends Category>(ref: Reference<T>): ref is FunctionReference<T> {\n return 'returns' in ref && 'args' in ref && 'variants' in ref\n}\n\nexport function isShorthandReference<T extends Category>(ref: Reference<T>): ref is ShorthandReference {\n return 'shorthand' in ref\n}\n\nexport function isDatatypeReference<T extends Category>(ref: Reference<T>): ref is DatatypeReference {\n return 'datatype' in ref\n}\n\nexport const functionReference: Record<FunctionName, FunctionReference> = {\n ...collectionReference,\n ...arrayReference,\n ...sequenceReference,\n ...mathReference,\n ...functionalReference,\n ...miscReference,\n ...objectReference,\n ...predicateReference,\n ...regularExpressionReference,\n ...specialExpressionsReference,\n ...stringReference,\n ...bitwiseReference,\n ...assertReference,\n}\n\nexport const apiReference: Record<ApiName, Reference> = { ...functionReference, ...shorthand, ...datatype }\n\nObject.values(apiReference).forEach((ref) => {\n ref.title = ref.title.replace(/\"/g, '&quot;')\n})\n","import { normalExpressionKeys, specialExpressionKeys } from '../src/builtin'\n\nexport const api = {\n collection: [\n 'count',\n 'get',\n 'get-in',\n 'contains?',\n 'has?',\n 'has-some?',\n 'has-every?',\n 'assoc',\n 'assoc-in',\n 'concat',\n 'not-empty',\n 'every?',\n 'not-every?',\n 'any?',\n 'not-any?',\n 'update',\n 'update-in',\n ] as const,\n array: [\n 'array',\n 'range',\n 'repeat',\n 'flatten',\n 'mapcat',\n ] as const,\n sequence: [\n 'nth',\n 'push',\n 'pop',\n 'unshift',\n 'shift',\n 'slice',\n 'reductions',\n 'reduce',\n 'reduce-right',\n 'map',\n 'filter',\n 'position',\n 'index-of',\n 'some',\n 'reverse',\n 'first',\n 'second',\n 'last',\n 'rest',\n 'nthrest',\n 'next',\n 'nthnext',\n 'cons',\n 'take',\n 'take-last',\n 'take-while',\n 'drop',\n 'drop-last',\n 'drop-while',\n 'sort',\n 'sort-by',\n 'random-sample!',\n 'rand-nth!',\n 'shuffle!',\n 'distinct',\n 'remove',\n 'remove-at',\n 'split-at',\n 'split-with',\n 'frequencies',\n 'group-by',\n 'partition',\n 'partition-all',\n 'partition-by',\n ] as const,\n math: [\n '+',\n '-',\n '*',\n '/',\n 'mod',\n 'rem',\n 'quot',\n 'inc',\n 'dec',\n 'sqrt',\n 'cbrt',\n 'pow',\n 'exp',\n 'round',\n 'trunc',\n 'floor',\n 'ceil',\n 'min',\n 'max',\n 'abs',\n 'sign',\n 'positive-infinity',\n 'negative-infinity',\n 'max-safe-integer',\n 'min-safe-integer',\n 'max-value',\n 'min-value',\n 'epsilon',\n 'nan',\n 'e',\n 'pi',\n 'log',\n 'log2',\n 'log10',\n 'rand!',\n 'rand-int!',\n 'sin',\n 'cos',\n 'tan',\n 'asin',\n 'acos',\n 'atan',\n 'sinh',\n 'cosh',\n 'tanh',\n 'asinh',\n 'acosh',\n 'atanh',\n ] as const,\n functional: [\n 'apply',\n 'identity',\n 'partial',\n 'comp',\n 'constantly',\n 'juxt',\n 'complement',\n 'every-pred',\n 'some-pred',\n 'fnil',\n ] as const,\n misc: [\n 'not=',\n '=',\n '<',\n '>',\n '<=',\n '>=',\n 'not',\n 'write!',\n 'inst-ms!',\n 'iso-date-time->inst-ms',\n 'inst-ms->iso-date-time',\n 'boolean',\n 'compare',\n 'lits-version!',\n 'uuid!',\n 'equal?',\n 'json-parse',\n 'json-stringify',\n ] as const,\n object: [\n 'dissoc',\n 'object',\n 'keys',\n 'vals',\n 'entries',\n 'find',\n 'merge',\n 'merge-with',\n 'zipmap',\n 'select-keys',\n ] as const,\n predicate: [\n 'boolean?',\n 'nil?',\n 'number?',\n 'string?',\n 'function?',\n 'integer?',\n 'array?',\n 'object?',\n 'coll?',\n 'seq?',\n 'regexp?',\n 'zero?',\n 'pos?',\n 'neg?',\n 'even?',\n 'odd?',\n 'finite?',\n 'nan?',\n 'negative-infinity?',\n 'positive-infinity?',\n 'false?',\n 'true?',\n 'empty?',\n 'not-empty?',\n ] as const,\n regularExpression: [\n 'regexp',\n 'match',\n 'replace',\n ] as const,\n specialExpressions: [\n 'and',\n 'or',\n 'def',\n 'defs',\n 'let',\n 'if-let',\n 'when-let',\n 'when-first',\n 'fn',\n 'defn',\n 'defns',\n 'try',\n 'throw',\n 'if',\n 'if-not',\n 'cond',\n 'when',\n 'when-not',\n 'comment',\n 'do',\n 'recur',\n 'loop',\n 'time!',\n 'doseq',\n 'for',\n 'declared?',\n '??',\n ] as const,\n string: [\n 'subs',\n 'string-repeat',\n 'str',\n 'number',\n 'number-to-string',\n 'lower-case',\n 'upper-case',\n 'trim',\n 'trim-left',\n 'trim-right',\n 'pad-left',\n 'pad-right',\n 'split',\n 'template',\n 'to-char-code',\n 'from-char-code',\n 'encode-base64',\n 'decode-base64',\n 'encode-uri-component',\n 'decode-uri-component',\n 'join',\n ] as const,\n bitwise: [\n 'bit-shift-left',\n 'bit-shift-right',\n 'unsigned-bit-shift-right',\n 'bit-not',\n 'bit-and',\n 'bit-and-not',\n 'bit-or',\n 'bit-xor',\n 'bit-flip',\n 'bit-clear',\n 'bit-set',\n 'bit-test',\n ] as const,\n assert: [\n 'assert',\n 'assert=',\n 'assert-not=',\n 'assert-equal',\n 'assert-not-equal',\n 'assert>',\n 'assert<',\n 'assert>=',\n 'assert<=',\n 'assert-true',\n 'assert-false',\n 'assert-truthy',\n 'assert-falsy',\n 'assert-nil',\n 'assert-throws',\n 'assert-throws-error',\n 'assert-not-throws',\n ] as const,\n shorthand: [\n '_short_regexp',\n '_short_fn',\n '_short_string',\n '_short_dot',\n '_short_hash',\n ] as const satisfies `_short_${string}`[],\n datatype: [\n '_type_number',\n '_type_string',\n '_type_object',\n '_type_array',\n '_type_boolean',\n '_type_function',\n '_type_integer',\n '_type_any',\n '_type_nil',\n '_type_collection',\n '_type_sequence',\n '_type_regexp',\n '_type_never',\n ] as const satisfies `_type_${string}`[],\n} as const\n\nexport type CollectionApiName = typeof api.collection[number]\nexport type ArrayApiName = typeof api.array[number]\nexport type SequenceApiName = typeof api.sequence[number]\nexport type MathApiName = typeof api.math[number]\nexport type FunctionalApiName = typeof api.functional[number]\nexport type MiscApiName = typeof api.misc[number]\nexport type ObjectApiName = typeof api.object[number]\nexport type PredicateApiName = typeof api.predicate[number]\nexport type RegularExpressionApiName = typeof api.regularExpression[number]\nexport type SpecialExpressionsApiName = typeof api.specialExpressions[number]\nexport type StringApiName = typeof api.string[number]\nexport type BitwiseApiName = typeof api.bitwise[number]\nexport type AssertApiName = typeof api.assert[number]\n\nexport type FunctionName =\n | CollectionApiName\n | ArrayApiName\n | SequenceApiName\n | MathApiName\n | FunctionalApiName\n | MiscApiName\n | ObjectApiName\n | PredicateApiName\n | RegularExpressionApiName\n | SpecialExpressionsApiName\n | StringApiName\n | BitwiseApiName\n | AssertApiName\n\nexport type ShorthandName = typeof api.shorthand[number]\n\nexport type DatatypeName = typeof api.datatype[number]\n\nconst functionNames = [\n ...api.collection,\n ...api.array,\n ...api.sequence,\n ...api.math,\n ...api.functional,\n ...api.misc,\n ...api.object,\n ...api.predicate,\n ...api.regularExpression,\n ...api.specialExpressions,\n ...api.string,\n ...api.bitwise,\n ...api.assert,\n] as const\n\nconst apiNames = [\n ...functionNames,\n ...api.shorthand,\n ...api.datatype,\n] as const\n\nconst functionNamesFromLitsSrc = [...normalExpressionKeys, ...specialExpressionKeys] as const\n\nfor (const functionName of functionNamesFromLitsSrc) {\n if (!apiNames.includes(functionName as ApiName))\n throw new Error(`Function name \"${functionName}\" is not included in the API`)\n}\n\nfor (const functionName of functionNames) {\n if (!functionNamesFromLitsSrc.includes(functionName as FunctionName))\n throw new Error(`Function name \"${functionName}\" is not included in the Lits source`)\n}\n\nexport type ApiName = typeof apiNames[number]\n\nexport function isApiName(arg: string): arg is ApiName {\n return apiNames.includes(arg as ApiName)\n}\n\nexport const categoryRecord = {\n 'Special expression': true,\n 'Predicate': true,\n 'Sequence': true,\n 'Collection': true,\n 'Array': true,\n 'Object': true,\n 'String': true,\n 'Math': true,\n 'Functional': true,\n 'Regular expression': true,\n 'Bitwise': true,\n 'Misc': true,\n 'Assert': true,\n 'Shorthand': true,\n 'Datatype': true,\n} as const\n\nexport type Category = keyof typeof categoryRecord\n\nexport const categories = Object.keys(categoryRecord) as Category[]\n\nconst dataTypes = [\n 'number',\n 'string',\n 'object',\n 'array',\n 'boolean',\n 'function',\n 'integer',\n 'any',\n 'nil',\n 'collection',\n 'sequence',\n 'regexp',\n 'never',\n] as const\nexport type DataType = typeof dataTypes[number]\n\nexport function isDataType(arg: string): arg is DataType {\n return dataTypes.includes(arg as DataType)\n}\n"],"names":["AstNodeType","FunctionType","isToken","isLitsFunction","isUnknownRecord","isAstNode","analyze","_a","whitespaceRegExp","decimalNumberRegExp","octalNumberRegExp","hexNumberRegExp","binaryNumberRegExp","firstCharRegExp"],"mappings":"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","x_google_ignoreList":[1]}