@mojir/lits 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +146 -0
- package/dist/cli/cli/src/cli.d.ts +2 -0
- package/dist/cli/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
- package/dist/cli/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
- package/dist/cli/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
- package/dist/cli/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
- package/dist/cli/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
- package/dist/cli/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
- package/dist/cli/cli/src/cliDocumentation/getCliType.d.ts +3 -0
- package/dist/cli/cli/src/cliFormatterRules.d.ts +13 -0
- package/dist/cli/cli/src/colorizer.d.ts +906 -0
- package/dist/cli/cli/src/createReadlineInterface.d.ts +6 -0
- package/dist/cli/cli.js +14963 -0
- package/dist/cli/common/clojureDocs.d.ts +1 -0
- package/dist/cli/common/createFormatter.d.ts +6 -0
- package/dist/cli/common/utils.d.ts +3 -0
- package/dist/cli/reference/api.d.ts +59 -0
- package/dist/cli/reference/categories/array.d.ts +3 -0
- package/dist/cli/reference/categories/assert.d.ts +3 -0
- package/dist/cli/reference/categories/bitwise.d.ts +3 -0
- package/dist/cli/reference/categories/collection.d.ts +3 -0
- package/dist/cli/reference/categories/functional.d.ts +3 -0
- package/dist/cli/reference/categories/math.d.ts +3 -0
- package/dist/cli/reference/categories/misc.d.ts +3 -0
- package/dist/cli/reference/categories/object.d.ts +3 -0
- package/dist/cli/reference/categories/predicate.d.ts +3 -0
- package/dist/cli/reference/categories/regularExpression.d.ts +3 -0
- package/dist/cli/reference/categories/sequence.d.ts +3 -0
- package/dist/cli/reference/categories/specialExpressions.d.ts +3 -0
- package/dist/cli/reference/categories/string.d.ts +3 -0
- package/dist/cli/reference/datatype.d.ts +3 -0
- package/dist/cli/reference/examples.d.ts +16 -0
- package/dist/cli/reference/index.d.ts +50 -0
- package/dist/cli/reference/shorthand.d.ts +3 -0
- package/dist/cli/src/Lits/Cache.d.ts +16 -0
- package/dist/cli/src/Lits/Lits.d.ts +50 -0
- package/dist/cli/src/analyze/index.d.ts +2 -0
- package/dist/cli/src/analyze/interface.d.ts +12 -0
- package/dist/cli/src/analyze/utils.d.ts +3 -0
- package/dist/cli/src/builtin/index.d.ts +5 -0
- package/dist/cli/src/builtin/interface.d.ts +43 -0
- package/dist/cli/src/builtin/normalExpressions/categories/array.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/assert.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/bitwise.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/collection.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/functional.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/math.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/misc.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/object.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/predicates.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/regexp.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/categories/sequence.d.ts +4 -0
- package/dist/cli/src/builtin/normalExpressions/categories/string.d.ts +2 -0
- package/dist/cli/src/builtin/normalExpressions/index.d.ts +2 -0
- package/dist/cli/src/builtin/specialExpressions/and.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/comment.d.ts +2 -0
- package/dist/cli/src/builtin/specialExpressions/cond.d.ts +8 -0
- package/dist/cli/src/builtin/specialExpressions/declared.d.ts +2 -0
- package/dist/cli/src/builtin/specialExpressions/def.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/defs.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/do.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/functions.d.ts +9 -0
- package/dist/cli/src/builtin/specialExpressions/if-let.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/if-not.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/if.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/let.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/loop.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/loops.d.ts +12 -0
- package/dist/cli/src/builtin/specialExpressions/or.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/qq.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/recur.d.ts +2 -0
- package/dist/cli/src/builtin/specialExpressions/throw.d.ts +2 -0
- package/dist/cli/src/builtin/specialExpressions/time.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/try.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/when-first.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/when-let.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/when-not.d.ts +3 -0
- package/dist/cli/src/builtin/specialExpressions/when.d.ts +3 -0
- package/dist/cli/src/builtin/utils.d.ts +18 -0
- package/dist/cli/src/cli.d.ts +2 -0
- package/dist/cli/src/cliDocumentation/formatCliDescription.d.ts +3 -0
- package/dist/cli/src/cliDocumentation/getCliArgumentInfo.d.ts +3 -0
- package/dist/cli/src/cliDocumentation/getCliDocumentation.d.ts +2 -0
- package/dist/cli/src/cliDocumentation/getCliFunctionExamples.d.ts +3 -0
- package/dist/cli/src/cliDocumentation/getCliFunctionSignature.d.ts +3 -0
- package/dist/cli/src/cliDocumentation/getCliTitle.d.ts +3 -0
- package/dist/cli/src/cliDocumentation/getCliType.d.ts +3 -0
- package/dist/cli/src/cliFormatterRules.d.ts +13 -0
- package/dist/cli/src/colorizer.d.ts +906 -0
- package/dist/cli/src/constants/constants.d.ts +42 -0
- package/dist/cli/src/createReadlineInterface.d.ts +6 -0
- package/dist/cli/src/errors.d.ts +26 -0
- package/dist/cli/src/evaluator/ContextStack.d.ts +21 -0
- package/dist/cli/src/evaluator/functionExecutors.d.ts +11 -0
- package/dist/cli/src/evaluator/index.d.ts +5 -0
- package/dist/cli/src/evaluator/interface.d.ts +12 -0
- package/dist/cli/src/index.d.ts +12 -0
- package/dist/cli/src/interface.d.ts +8 -0
- package/dist/cli/src/parser/index.d.ts +3 -0
- package/dist/cli/src/parser/interface.d.ts +160 -0
- package/dist/cli/src/parser/parsers.d.ts +4 -0
- package/dist/cli/src/reservedNames.d.ts +7 -0
- package/dist/cli/src/testFramework/index.d.ts +14 -0
- package/dist/cli/src/tokenizer/index.d.ts +2 -0
- package/dist/cli/src/tokenizer/interface.d.ts +25 -0
- package/dist/cli/src/tokenizer/sugar/applyCollectionAccessor.d.ts +2 -0
- package/dist/cli/src/tokenizer/sugar/index.d.ts +3 -0
- package/dist/cli/src/tokenizer/tokenizers.d.ts +19 -0
- package/dist/cli/src/typeGuards/array.d.ts +9 -0
- package/dist/cli/src/typeGuards/astNode.d.ts +17 -0
- package/dist/cli/src/typeGuards/index.d.ts +15 -0
- package/dist/cli/src/typeGuards/lits.d.ts +21 -0
- package/dist/cli/src/typeGuards/litsFunction.d.ts +12 -0
- package/dist/cli/src/typeGuards/number.d.ts +66 -0
- package/dist/cli/src/typeGuards/string.d.ts +15 -0
- package/dist/cli/src/typeGuards/token.d.ts +13 -0
- package/dist/cli/src/utils/debug/debugTools.d.ts +3 -0
- package/dist/cli/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
- package/dist/cli/src/utils/getAssertionError.d.ts +3 -0
- package/dist/cli/src/utils/index.d.ts +10 -0
- package/dist/cli/src/utils/symbols.d.ts +2 -0
- package/dist/common/clojureDocs.d.ts +1 -0
- package/dist/common/createFormatter.d.ts +6 -0
- package/dist/common/utils.d.ts +3 -0
- package/dist/index.esm.js +7078 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +7095 -0
- package/dist/index.js.map +1 -0
- package/dist/lits.iife.js +7100 -0
- package/dist/lits.iife.js.map +1 -0
- package/dist/reference/api.d.ts +59 -0
- package/dist/reference/categories/array.d.ts +3 -0
- package/dist/reference/categories/assert.d.ts +3 -0
- package/dist/reference/categories/bitwise.d.ts +3 -0
- package/dist/reference/categories/collection.d.ts +3 -0
- package/dist/reference/categories/functional.d.ts +3 -0
- package/dist/reference/categories/math.d.ts +3 -0
- package/dist/reference/categories/misc.d.ts +3 -0
- package/dist/reference/categories/object.d.ts +3 -0
- package/dist/reference/categories/predicate.d.ts +3 -0
- package/dist/reference/categories/regularExpression.d.ts +3 -0
- package/dist/reference/categories/sequence.d.ts +3 -0
- package/dist/reference/categories/specialExpressions.d.ts +3 -0
- package/dist/reference/categories/string.d.ts +3 -0
- package/dist/reference/datatype.d.ts +3 -0
- package/dist/reference/index.d.ts +50 -0
- package/dist/reference/shorthand.d.ts +3 -0
- package/dist/src/Lits/Cache.d.ts +16 -0
- package/dist/src/Lits/Lits.d.ts +50 -0
- package/dist/src/analyze/index.d.ts +2 -0
- package/dist/src/analyze/interface.d.ts +12 -0
- package/dist/src/analyze/utils.d.ts +3 -0
- package/dist/src/builtin/index.d.ts +5 -0
- package/dist/src/builtin/interface.d.ts +43 -0
- package/dist/src/builtin/normalExpressions/categories/array.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/assert.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/bitwise.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/collection.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/functional.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/math.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/misc.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/object.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/predicates.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/regexp.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/categories/sequence.d.ts +4 -0
- package/dist/src/builtin/normalExpressions/categories/string.d.ts +2 -0
- package/dist/src/builtin/normalExpressions/index.d.ts +2 -0
- package/dist/src/builtin/specialExpressions/and.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/comment.d.ts +2 -0
- package/dist/src/builtin/specialExpressions/cond.d.ts +8 -0
- package/dist/src/builtin/specialExpressions/declared.d.ts +2 -0
- package/dist/src/builtin/specialExpressions/def.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/defs.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/do.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/functions.d.ts +9 -0
- package/dist/src/builtin/specialExpressions/if-let.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/if-not.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/if.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/let.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/loop.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/loops.d.ts +12 -0
- package/dist/src/builtin/specialExpressions/or.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/qq.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/recur.d.ts +2 -0
- package/dist/src/builtin/specialExpressions/throw.d.ts +2 -0
- package/dist/src/builtin/specialExpressions/time.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/try.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/when-first.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/when-let.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/when-not.d.ts +3 -0
- package/dist/src/builtin/specialExpressions/when.d.ts +3 -0
- package/dist/src/builtin/utils.d.ts +18 -0
- package/dist/src/constants/constants.d.ts +42 -0
- package/dist/src/errors.d.ts +26 -0
- package/dist/src/evaluator/ContextStack.d.ts +21 -0
- package/dist/src/evaluator/functionExecutors.d.ts +11 -0
- package/dist/src/evaluator/index.d.ts +5 -0
- package/dist/src/evaluator/interface.d.ts +12 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/interface.d.ts +8 -0
- package/dist/src/parser/index.d.ts +3 -0
- package/dist/src/parser/interface.d.ts +160 -0
- package/dist/src/parser/parsers.d.ts +4 -0
- package/dist/src/reservedNames.d.ts +7 -0
- package/dist/src/testFramework/index.d.ts +14 -0
- package/dist/src/tokenizer/index.d.ts +2 -0
- package/dist/src/tokenizer/interface.d.ts +25 -0
- package/dist/src/tokenizer/sugar/applyCollectionAccessor.d.ts +2 -0
- package/dist/src/tokenizer/sugar/index.d.ts +3 -0
- package/dist/src/tokenizer/tokenizers.d.ts +19 -0
- package/dist/src/typeGuards/array.d.ts +9 -0
- package/dist/src/typeGuards/astNode.d.ts +17 -0
- package/dist/src/typeGuards/index.d.ts +15 -0
- package/dist/src/typeGuards/lits.d.ts +21 -0
- package/dist/src/typeGuards/litsFunction.d.ts +12 -0
- package/dist/src/typeGuards/number.d.ts +66 -0
- package/dist/src/typeGuards/string.d.ts +15 -0
- package/dist/src/typeGuards/token.d.ts +13 -0
- package/dist/src/utils/debug/debugTools.d.ts +3 -0
- package/dist/src/utils/debug/getSourceCodeInfo.d.ts +2 -0
- package/dist/src/utils/getAssertionError.d.ts +3 -0
- package/dist/src/utils/index.d.ts +10 -0
- package/dist/src/utils/symbols.d.ts +2 -0
- package/dist/testFramework.esm.js +7197 -0
- package/dist/testFramework.esm.js.map +1 -0
- package/dist/testFramework.js +7200 -0
- package/dist/testFramework.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +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/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/token.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/analyze/utils.ts","../src/typeGuards/astNode.ts","../src/reservedNames.ts","../src/builtin/utils.ts","../src/typeGuards/string.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/defs.ts","../src/builtin/specialExpressions/do.ts","../src/typeGuards/lits.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/if-let.ts","../src/builtin/specialExpressions/if-not.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/time.ts","../src/builtin/specialExpressions/try.ts","../src/typeGuards/number.ts","../src/utils/index.ts","../src/builtin/specialExpressions/when-first.ts","../src/builtin/specialExpressions/when-let.ts","../src/builtin/specialExpressions/when-not.ts","../src/builtin/specialExpressions/when.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/comment.ts","../src/builtin/specialExpressions/declared.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/index.ts","../src/analyze/index.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/parser/parsers.ts","../src/parser/index.ts","../src/tokenizer/sugar/applyCollectionAccessor.ts","../src/tokenizer/sugar/index.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/index.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts"],"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}\n\nexport const astNodeTypeName = new Map([\n [AstNodeType.Number, 'Number'],\n [AstNodeType.String, 'String'],\n [AstNodeType.NormalExpression, 'NormalExpression'],\n [AstNodeType.SpecialExpression, 'SpecialExpression'],\n [AstNodeType.Name, 'Name'],\n [AstNodeType.Modifier, 'Modifier'],\n [AstNodeType.ReservedName, 'ReservedName'],\n [AstNodeType.Binding, 'Binding'],\n [AstNodeType.Argument, 'Argument'],\n [AstNodeType.Partial, 'Partial'],\n])\n\nexport function isAstNodeType(type: unknown): type is AstNodeType {\n return typeof type === 'number' && astNodeTypeName.has(type)\n}\n\nexport enum TokenType {\n Bracket = 101,\n Number = 102,\n Name = 103,\n String = 104,\n ReservedName = 105,\n Modifier = 106,\n RegexpShorthand = 107,\n FnShorthand = 108,\n CollectionAccessor = 109,\n}\n\nexport const tokenTypeName = new Map([\n [TokenType.Bracket, 'Bracket'],\n [TokenType.Number, 'Number'],\n [TokenType.Name, 'Name'],\n [TokenType.String, 'String'],\n [TokenType.ReservedName, 'ReservedName'],\n [TokenType.Modifier, 'Modifier'],\n [TokenType.RegexpShorthand, 'RegexpShorthand'],\n [TokenType.FnShorthand, 'FnShorthand'],\n [TokenType.CollectionAccessor, 'CollectionAccessor'],\n])\n\nexport function isTokenType(type: unknown): type is TokenType {\n return typeof type === 'number' && tokenTypeName.has(type)\n}\n\nexport enum FunctionType {\n UserDefined = 301,\n Partial = 302,\n Comp = 303,\n Constantly = 304,\n Juxt = 305,\n Complement = 306,\n EveryPred = 307,\n SomePred = 308,\n Fnil = 309,\n Builtin = 310,\n NativeJsFunction = 399,\n}\n\nexport const functionTypeName = new Map([\n [FunctionType.UserDefined, 'UserDefined'],\n [FunctionType.Partial, 'Partial'],\n [FunctionType.Comp, 'Comp'],\n [FunctionType.Constantly, 'Constantly'],\n [FunctionType.Juxt, 'Juxt'],\n [FunctionType.Complement, 'Complement'],\n [FunctionType.EveryPred, 'EveryPred'],\n [FunctionType.SomePred, 'SomePred'],\n [FunctionType.Fnil, 'Fnil'],\n [FunctionType.Builtin, 'Builtin'],\n])\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'number' && functionTypeName.has(type)\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export const FUNCTION_SYMBOL = '__fn'\nexport const REGEXP_SYMBOL = '__re'\n","import { astNodeTypeName, isAstNodeType, isFunctionType, isTokenType, tokenTypeName } from '../../constants/constants'\nimport type { AstNode, LitsFunction } from '../../parser/interface'\nimport type { SourceCodeInfo, Token } from '../../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (!isUnknownRecord(func))\n return false\n\n return !!func[FUNCTION_SYMBOL] && isFunctionType(func.t)\n}\n\nfunction isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null\n}\n\nfunction isToken(value: unknown): value is Token {\n return isUnknownRecord(value) && isTokenType(value.t) && typeof value.v === 'string'\n}\n\nfunction isAstNode(value: unknown): value is AstNode {\n return isUnknownRecord(value) && isAstNodeType(value.t)\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isToken(value))\n return `${tokenTypeName.get(value.t)}-token \"${value.v}\"`\n\n if (isAstNode(value))\n return `${astNodeTypeName.get(value.t)}-node`\n\n if (value === null)\n return 'nil'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/interface'\nimport { getCodeMarker, valueToString } from './utils/debug/debugTools'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n const filePathLine = sourceCodeInfo?.filePath ? `\\n${sourceCodeInfo.filePath}` : ''\n const codeLine = sourceCodeInfo?.code ? `\\n${sourceCodeInfo.code}` : ''\n const codeMarker = sourceCodeInfo && codeLine ? `\\n${getCodeMarker(sourceCodeInfo)}` : ''\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${valueToString(fn)}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","import type { SourceCodeInfo } from '../../tokenizer/interface'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo?: SourceCodeInfo): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { 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 { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { NormalExpressionNode, SpecialExpressionNode } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertEventNumberOfParams(node: NormalExpressionNode): void {\n const length = node.p.length\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments, expected an even number, got ${valueToString(length)}.`,\n node.tkn?.sourceCodeInfo,\n )\n }\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\n/* v8 ignore next 3 */\nexport function assertUnreachable(_: never): never {\n throw new Error('This should not be reached')\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNumberOfParams(\n count: number | { min?: number, max?: number },\n node: NormalExpressionNode | SpecialExpressionNode,\n): void {\n const length = node.p.length\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n if (typeof count === 'number') {\n if (length !== count) {\n throw new LitsError(\n `Wrong number of arguments to \"${node.n}\", expected ${count}, got ${valueToString(length)}.`,\n node.tkn?.sourceCodeInfo,\n )\n }\n }\n else {\n const { min, max } = count\n if (min === undefined && max === undefined)\n throw new LitsError('Min or max must be specified.', sourceCodeInfo)\n\n if (typeof min === 'number' && length < min) {\n throw new LitsError(\n `Wrong number of arguments to \"${node.n}\", expected at least ${min}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n\n if (typeof max === 'number' && length > max) {\n throw new LitsError(\n `Wrong number of arguments to \"${node.n}\", expected at most ${max}, got ${valueToString(length)}.`,\n sourceCodeInfo,\n )\n }\n }\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { BuiltinFunction, LitsFunction, NativeJsFunction, UserDefinedFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.t === FunctionType.UserDefined\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.t === FunctionType.NativeJsFunction\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is BuiltinFunction {\n return isUnknownRecord(value) && value.t === FunctionType.Builtin\n}\n","import { type TokenType, isTokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { SourceCodeInfo, Token } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype TokenAssertionOptions =\n | {\n type: TokenType\n value?: string\n }\n | {\n type?: never\n value?: never\n }\n\nexport function isToken(value: unknown, options: TokenAssertionOptions = {}): value is Token {\n if (typeof value !== 'object' || value === null)\n return false\n\n const tkn = value as Token\n if (typeof tkn.v !== 'string')\n return false\n\n if (!isTokenType(tkn.t))\n return false\n\n if (options.type && tkn.t !== options.type)\n return false\n\n if (options.value && tkn.v !== options.value)\n return false\n\n return true\n}\n\nexport function assertToken(\n value: unknown,\n filePath: string | undefined,\n options: TokenAssertionOptions = {},\n): asserts value is Token {\n if (!isToken(value, options)) {\n const sourceCodeInfo: SourceCodeInfo | undefined = isToken(value)\n ? value.sourceCodeInfo\n : typeof filePath === 'string'\n ? { filePath }\n : undefined\n\n throw new LitsError(\n `Expected ${options.type ? `${options.type}-` : ''}token${\n typeof options.value === 'string' ? ` value='${options.value}'` : ''\n }, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asToken(value: unknown, filePath: string | undefined, options: TokenAssertionOptions = {}): Token {\n assertToken(value, filePath, options)\n return value\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'and',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = true\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, ParseToken, SpecialExpressionNode } from '../../parser/interface'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport interface Condition {\n t: AstNode // test\n f: AstNode // form\n}\n\ntype CondNode = SpecialExpressionNode & {\n c: Condition[]\n}\n\nfunction parseConditions(tokenStream: TokenStream, position: number, parseToken: ParseToken): [number, Condition[]] {\n const conditions: Condition[] = []\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let test: AstNode\n ;[position, test] = parseToken(tokenStream, position)\n\n let form: AstNode\n ;[position, form] = parseToken(tokenStream, position)\n\n conditions.push({ t: test, f: form })\n\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, conditions]\n}\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let conditions: Condition[]\n ;[position, conditions] = parseConditions(tokenStream, position, parseToken)\n\n return [\n position + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'cond',\n c: conditions,\n p: [],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n for (const condition of (node as CondNode).c) {\n const value = evaluateAstNode(condition.t, contextStack)\n if (!value)\n continue\n\n return evaluateAstNode(condition.f, contextStack)\n }\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const astNodes = (node as CondNode).c.flatMap(condition => [condition.t, condition.f])\n return analyzeAst(astNodes, contextStack, builtin)\n },\n}\n","import type { AnalyzeResult } from './interface'\n\nexport function joinAnalyzeResults(...results: AnalyzeResult[]): AnalyzeResult {\n const result: AnalyzeResult = {\n undefinedSymbols: new Set(),\n }\n for (const input of results)\n input.undefinedSymbols.forEach(symbol => result.undefinedSymbols.add(symbol))\n\n return result\n}\n\nexport function addAnalyzeResults(target: AnalyzeResult, source: AnalyzeResult): void {\n source.undefinedSymbols.forEach(symbol => target.undefinedSymbols.add(symbol))\n}\n","import { AstNodeType, isAstNodeType } from '../constants/constants'\nimport type {\n AstNode,\n ExpressionNode,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isAstNode(value: unknown): value is AstNode {\n if (value === null || typeof value !== 'object')\n return false\n\n if (!isAstNodeType((value as AstNode).t))\n return false\n\n return true\n}\nexport function asAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): AstNode {\n assertAstNode(value, sourceCodeInfo)\n return value\n}\nexport function assertAstNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is AstNode {\n if (!isAstNode(value))\n throw getAssertionError('AstNode', value, sourceCodeInfo)\n}\n\nexport function isNameNode(value: unknown): value is NameNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.Name\n}\nexport function asNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NameNode {\n assertNameNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNameNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is NameNode {\n if (!isNameNode(value))\n throw getAssertionError('NameNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNode(value: unknown): value is NormalExpressionNode {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression\n}\nexport function asNormalExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNode(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNode {\n if (!isNormalExpressionNode(value))\n throw getAssertionError('NormalExpressionNode', value, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(value: unknown): value is NormalExpressionNodeWithName {\n if (!isAstNode(value))\n return false\n\n return value.t === AstNodeType.NormalExpression && typeof value.n === 'string'\n}\nexport function asNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(value, sourceCodeInfo)\n return value\n}\nexport function assertNormalExpressionNodeWithName(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(value))\n throw getAssertionError('NormalExpressionNodeWithName', value, sourceCodeInfo)\n}\n\nexport function isExpressionNode(value: unknown): value is ExpressionNode {\n if (!isAstNode(value))\n return false\n\n return (\n value.t === AstNodeType.NormalExpression\n || value.t === AstNodeType.SpecialExpression\n || value.t === AstNodeType.Number\n || value.t === AstNodeType.String\n )\n}\nexport function asExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(value, sourceCodeInfo)\n return value\n}\nexport function assertExpressionNode(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is ExpressionNode {\n if (!isExpressionNode(value))\n throw getAssertionError('ExpressionNode', value, sourceCodeInfo)\n}\n","import type { Any } from './interface'\n\nexport type ReservedName = 'true' | 'false' | 'nil' | 'null' | 'undefined' | '===' | '!==' | '&&' | '||'\nexport const reservedNamesRecord: Record<ReservedName, { value: Any, forbidden?: true }> = {\n 'true': { value: true },\n 'false': { value: false },\n 'nil': { value: null },\n 'null': { value: null, forbidden: true },\n 'undefined': { value: null, forbidden: true },\n '===': { value: null, forbidden: true },\n '!==': { value: null, forbidden: true },\n '&&': { value: null, forbidden: true },\n '||': { value: null, forbidden: true },\n}\n\nexport const reservedNames: ReservedName[] = Object.keys(reservedNamesRecord) as ReservedName[]\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { AstNode, BindingNode } from '../parser/interface'\nimport { reservedNamesRecord } from '../reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport type { Builtin } from './interface'\n\nexport type Arity = number | { min: number }\n\nexport interface FunctionOverload {\n as: FunctionArguments\n a: Arity\n b: AstNode[]\n}\n\nexport interface FunctionArguments {\n m: string[]\n r?: string\n b: BindingNode[]\n}\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n if (builtin.specialExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n // eslint-disable-next-line ts/no-unsafe-member-access\n if ((reservedNamesRecord as any)[name])\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw new LitsError(\n getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n ),\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { AnalyzeAst, AnalyzeResult } from '../../analyze/interface'\nimport { addAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport { AstNodeType, FunctionType, TokenType } from '../../constants/constants'\nimport type {\n AstNode,\n BindingNode,\n EvaluatedFunctionOverload,\n LitsFunction,\n NameNode,\n SpecialExpressionNode,\n} from '../../parser/interface'\nimport type { TokenStream } from '../../tokenizer/interface'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { asToken } from '../../typeGuards/token'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport type { Arity, FunctionArguments, FunctionOverload } from '../utils'\nimport { assertNameNotDefined } from '../utils'\nimport { asString } from '../../typeGuards/string'\n\ntype DefnNode = SpecialExpressionNode & {\n f: NameNode\n o: FunctionOverload[]\n}\n\ntype DefnsNode = SpecialExpressionNode & {\n f: AstNode\n o: FunctionOverload[]\n}\n\nexport type FnNode = SpecialExpressionNode & {\n o: FunctionOverload[]\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, parsers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let functionName\n ;[position, functionName] = parseToken(tokenStream, position)\n assertNameNode(functionName, functionName.tkn?.sourceCodeInfo)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n\n return [\n position,\n {\n t: AstNodeType.SpecialExpression,\n n: 'defn',\n f: functionName,\n p: [],\n o: functionOverloades,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defn', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.tkn?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.tkn?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n contextStack.globalContext[(node as DefnNode).f.v] = { value: true }\n const newContext: Context = { [(node as DefnNode).f.v]: { value: true } }\n return addOverloadsUndefinedSymbols((node as DefnNode).o, contextStack, analyzeAst, builtin, newContext)\n },\n}\n\nexport const defnsSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, parsers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let functionName: AstNode\n ;[position, functionName] = parseToken(tokenStream, position)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n\n return [\n position,\n {\n t: AstNodeType.SpecialExpression,\n n: 'defns',\n f: functionName,\n p: [],\n o: functionOverloades,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { builtin, evaluateAstNode }) => {\n const name = getFunctionName('defns', node, contextStack, evaluateAstNode)\n\n assertNameNotDefined(name, contextStack, builtin, node.tkn?.sourceCodeInfo)\n\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.tkn?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: name,\n o: evaluatedFunctionOverloades,\n }\n\n contextStack.globalContext[name] = { value: litsFunction }\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) =>\n addOverloadsUndefinedSymbols((node as DefnsNode).o, contextStack, analyzeAst, builtin),\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction> = {\n parse: (tokenStream, position, parsers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n let functionOverloades: FunctionOverload[]\n ;[position, functionOverloades] = parseFunctionOverloades(tokenStream, position, parsers)\n\n return [\n position,\n {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: functionOverloades,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const evaluatedFunctionOverloades = evaluateFunctionOverloades(node, contextStack, evaluateAstNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node.tkn?.sourceCodeInfo,\n t: FunctionType.UserDefined,\n n: undefined,\n o: evaluatedFunctionOverloades,\n }\n\n return litsFunction\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) =>\n addOverloadsUndefinedSymbols((node as FnNode).o, contextStack, analyzeAst, builtin),\n}\n\nfunction getFunctionName(\n expressionName: 'defn' | 'defns',\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): string {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n if (expressionName === 'defn')\n return ((node as DefnNode).f as NameNode).v\n\n const name = evaluateAstNode((node as DefnsNode).f, contextStack)\n return asString(name, sourceCodeInfo)\n}\n\nfunction evaluateFunctionOverloades(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n): EvaluatedFunctionOverload[] {\n const evaluatedFunctionOverloades: EvaluatedFunctionOverload[] = []\n for (const functionOverload of (node as DefnNode | DefnsNode | FnNode).o) {\n const functionContext: Context = {}\n for (const binding of functionOverload.as.b) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, contextStack)\n functionContext[binding.n] = { value: bindingValue }\n }\n\n const evaluatedFunctionOverload: EvaluatedFunctionOverload = {\n as: {\n mandatoryArguments: functionOverload.as.m,\n restArgument: functionOverload.as.r,\n },\n a: functionOverload.a,\n b: functionOverload.b,\n f: functionContext,\n }\n\n evaluatedFunctionOverloades.push(evaluatedFunctionOverload)\n }\n return evaluatedFunctionOverloades\n}\n\nfunction addOverloadsUndefinedSymbols(\n overloads: FunctionOverload[],\n contextStack: ContextStack,\n analyzeAst: AnalyzeAst,\n builtin: Builtin,\n functionNameContext?: Context,\n): AnalyzeResult {\n const result: AnalyzeResult = { undefinedSymbols: new Set() }\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n for (const overload of overloads) {\n const newContext: Context = {}\n overload.as.b.forEach((binding) => {\n const bindingResult = analyzeAst(binding.v, contextStack, builtin)\n addAnalyzeResults(result, bindingResult)\n newContext[binding.n] = { value: true }\n })\n overload.as.m.forEach((arg) => {\n newContext[arg] = { value: true }\n })\n if (typeof overload.as.r === 'string')\n newContext[overload.as.r] = { value: true }\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = analyzeAst(overload.b, newContextStack, builtin)\n addAnalyzeResults(result, overloadResult)\n }\n return result\n}\n\nfunction arityOk(overloadedFunctions: FunctionOverload[], arity: Arity) {\n if (typeof arity === 'number') {\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a !== arity\n\n return fun.a.min > arity\n })\n }\n return overloadedFunctions.every((fun) => {\n if (typeof fun.a === 'number')\n return fun.a < arity.min\n\n return false\n })\n}\n\nfunction parseFunctionBody(\n tokenStream: TokenStream,\n position: number,\n { parseToken }: ParserHelpers,\n): [number, AstNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const body: AstNode[] = []\n while (!(tkn.t === TokenType.Bracket && tkn.v === ')')) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n body.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n if (body.length === 0)\n throw new LitsError('Missing body in function', tkn.sourceCodeInfo)\n\n return [position + 1, body]\n}\n\nfunction parseFunctionOverloades(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, FunctionOverload[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v === '(') {\n const functionOverloades: FunctionOverload[] = []\n while (!(tkn.t === TokenType.Bracket && tkn.v === ')')) {\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let functionArguments: FunctionArguments\n ;[position, functionArguments] = parseFunctionArguments(tokenStream, position, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n\n if (!arityOk(functionOverloades, arity))\n throw new LitsError('All overloaded functions must have different arity', tkn.sourceCodeInfo)\n\n let functionBody: AstNode[]\n ;[position, functionBody] = parseFunctionBody(tokenStream, position, parsers)\n functionOverloades.push({\n as: functionArguments,\n b: functionBody,\n a: arity,\n })\n\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket })\n if (tkn.v !== ')' && tkn.v !== '(')\n throw new LitsError(`Expected ( or ) token, got ${valueToString(tkn)}.`, tkn.sourceCodeInfo)\n }\n\n return [position + 1, functionOverloades]\n }\n else if (tkn.v === '[') {\n let functionArguments: FunctionArguments\n ;[position, functionArguments] = parseFunctionArguments(tokenStream, position, parsers)\n const arity: Arity = functionArguments.r ? { min: functionArguments.m.length } : functionArguments.m.length\n let functionBody: AstNode[]\n ;[position, functionBody] = parseFunctionBody(tokenStream, position, parsers)\n return [\n position,\n [\n {\n as: functionArguments,\n b: functionBody,\n a: arity,\n },\n ],\n ]\n }\n else {\n throw new LitsError(`Expected [ or ( token, got ${valueToString(tkn)}`, tkn.sourceCodeInfo)\n }\n}\n\nfunction parseFunctionArguments(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, FunctionArguments] {\n const { parseArgument, parseBindings } = parsers\n\n let bindings: BindingNode[] = []\n let restArgument: string | undefined\n const mandatoryArguments: string[] = []\n let state: 'mandatory' | 'rest' | 'let' = 'mandatory'\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n if (state === 'let') {\n ;[position, bindings] = parseBindings(tokenStream, position)\n break\n }\n else {\n const [newPosition, node] = parseArgument(tokenStream, position)\n position = newPosition\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n if (node.t === AstNodeType.Modifier) {\n switch (node.v) {\n case '&':\n if (state === 'rest')\n throw new LitsError('& can only appear once', tkn.sourceCodeInfo)\n\n state = 'rest'\n break\n case '&let':\n if (state === 'rest' && !restArgument)\n throw new LitsError('No rest argument was specified', tkn.sourceCodeInfo)\n\n state = 'let'\n break\n default:\n throw new LitsError(`Illegal modifier: ${node.v}`, tkn.sourceCodeInfo)\n }\n }\n else {\n switch (state) {\n case 'mandatory':\n mandatoryArguments.push(node.n)\n break\n case 'rest':\n if (restArgument !== undefined)\n throw new LitsError('Can only specify one rest argument', tkn.sourceCodeInfo)\n\n restArgument = node.n\n break\n }\n }\n }\n }\n\n if (state === 'rest' && restArgument === undefined)\n throw new LitsError('Missing rest argument name', tkn.sourceCodeInfo)\n\n position += 1\n\n const args: FunctionArguments = {\n m: mandatoryArguments,\n r: restArgument,\n b: bindings,\n }\n\n return [position, args]\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode, asNameNode, assertNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\n\nexport const defSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n assertNameNode(params[0], firstToken.sourceCodeInfo)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'def',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const name = asNameNode(node.p[0], sourceCodeInfo).v\n\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n\n const value = evaluateAstNode(asAstNode(node.p[1], sourceCodeInfo), contextStack)\n\n contextStack.globalContext[name] = { value }\n\n return value\n },\n validate: node => assertNumberOfParams(2, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const subNode = asAstNode(node.p[1], sourceCodeInfo)\n const result = analyzeAst(subNode, contextStack, builtin)\n const name = asNameNode(node.p[0], sourceCodeInfo).v\n assertNameNotDefined(name, contextStack, builtin, sourceCodeInfo)\n contextStack.globalContext[name] = { value: true }\n return result\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertNameNotDefined } from '../utils'\nimport { assertString } from '../../typeGuards/string'\nimport { assertNumberOfParams } from '../../typeGuards'\n\nexport const defsSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'defs',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode, builtin }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const name = evaluateAstNode(asAstNode(node.p[0], sourceCodeInfo), contextStack)\n assertString(name, sourceCodeInfo)\n\n assertNameNotDefined(name, contextStack, builtin, node.tkn?.sourceCodeInfo)\n\n const value = evaluateAstNode(asAstNode(node.p[1], sourceCodeInfo), contextStack)\n\n contextStack.globalContext[name] = { value }\n\n return value\n },\n validate: node => assertNumberOfParams(2, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const subNode = asAstNode(node.p[1], node.tkn?.sourceCodeInfo)\n return analyzeAst(subNode, contextStack, builtin)\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'do',\n p: [],\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n node.p.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { AnalyzeAst, AnalyzeResult } from '../../analyze/interface'\nimport { LitsError } from '../../errors'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateAstNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport type { SourceCodeInfo, TokenStream } from '../../tokenizer/interface'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken, assertToken, isToken } from '../../typeGuards/token'\nimport type { Builtin, BuiltinSpecialExpression, ParserHelpers } from '../interface'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport { asNonUndefined } from '../../typeGuards'\n\ntype LoopNode = SpecialExpressionNode & {\n l: LoopBindingNode[]\n}\n\nexport interface LoopBindingNode {\n b: BindingNode // Binding\n m: Array<'&let' | '&when' | '&while'> // Modifiers\n l?: BindingNode[] // Let-Bindings\n wn?: AstNode // When Node\n we?: AstNode // While Node\n}\n\nfunction parseLoopBinding(\n tokenStream: TokenStream,\n position: number,\n { parseBinding, parseBindings, parseToken }: ParserHelpers,\n): [number, LoopBindingNode] {\n let bindingNode: BindingNode\n ;[position, bindingNode] = parseBinding(tokenStream, position)\n\n const loopBinding: LoopBindingNode = {\n b: bindingNode,\n m: [],\n }\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (tkn.t === TokenType.Modifier) {\n switch (tkn.v) {\n case '&let':\n if (loopBinding.l)\n throw new LitsError('Only one &let modifier allowed', tkn.sourceCodeInfo)\n\n ;[position, loopBinding.l] = parseBindings(tokenStream, position + 1)\n loopBinding.m.push('&let')\n break\n case '&when':\n if (loopBinding.wn)\n throw new LitsError('Only one &when modifier allowed', tkn.sourceCodeInfo)\n\n ;[position, loopBinding.wn] = parseToken(tokenStream, position + 1)\n loopBinding.m.push('&when')\n break\n case '&while':\n if (loopBinding.we)\n throw new LitsError('Only one &while modifier allowed', tkn.sourceCodeInfo)\n\n ;[position, loopBinding.we] = parseToken(tokenStream, position + 1)\n loopBinding.m.push('&while')\n break\n default:\n throw new LitsError(`Illegal modifier: ${tkn.v}`, tkn.sourceCodeInfo)\n }\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, loopBinding]\n}\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n for (const binding of bindings) {\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n }\n}\n\nfunction parseLoopBindings(\n tokenStream: TokenStream,\n position: number,\n parsers: ParserHelpers,\n): [number, LoopBindingNode[]] {\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '[' })\n position += 1\n\n const loopBindings: LoopBindingNode[] = []\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n while (!isToken(tkn, { type: TokenType.Bracket, value: ']' })) {\n let loopBinding: LoopBindingNode\n ;[position, loopBinding] = parseLoopBinding(tokenStream, position, parsers)\n loopBindings.push(loopBinding)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, loopBindings]\n}\nfunction evaluateLoop(\n returnResult: boolean,\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n evaluateAstNode: EvaluateAstNode,\n) {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const { l: loopBindings, p: params } = node as LoopNode\n const expression = asAstNode(params[0], sourceCodeInfo)\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const {\n b: binding,\n l: letBindings,\n wn: whenNode,\n we: whileNode,\n m: modifiers,\n } = asNonUndefined(loopBindings[bindingIndex], sourceCodeInfo)\n const coll = asColl(evaluateAstNode(binding.v, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n if (context[binding.n])\n throw new LitsError(`Variable already defined: ${binding.n}.`, sourceCodeInfo)\n\n context[binding.n] = {\n value: asAny(seq[index], sourceCodeInfo),\n }\n for (const modifier of modifiers) {\n switch (modifier) {\n case '&let':\n addToContext(\n asNonUndefined(letBindings, sourceCodeInfo),\n context,\n newContextStack,\n evaluateAstNode,\n sourceCodeInfo,\n )\n break\n case '&when':\n if (!evaluateAstNode(asAstNode(whenNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n break\n case '&while':\n if (!evaluateAstNode(asAstNode(whileNode, sourceCodeInfo), newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n break\n }\n }\n }\n if (!skip) {\n const value = evaluateAstNode(expression, newContextStack)\n if (returnResult)\n result.push(value)\n\n bindingIndices[bindingIndices.length - 1] += 1\n }\n }\n return returnResult ? result : null\n}\n\nfunction analyze(\n node: SpecialExpressionNode,\n contextStack: ContextStack,\n analyzeAst: AnalyzeAst,\n builtin: Builtin,\n): AnalyzeResult {\n const result: AnalyzeResult = {\n undefinedSymbols: new Set(),\n }\n const newContext: Context = {}\n const { l: loopBindings } = node as LoopNode\n loopBindings.forEach((loopBinding) => {\n const { b: binding, l: letBindings, wn: whenNode, we: whileNode } = loopBinding\n analyzeAst(binding.v, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n newContext[binding.n] = { value: true }\n if (letBindings) {\n letBindings.forEach((letBinding) => {\n analyzeAst(letBinding.v, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n newContext[letBinding.n] = { value: true }\n })\n }\n if (whenNode) {\n analyzeAst(whenNode, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n }\n if (whileNode) {\n analyzeAst(whileNode, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n }\n })\n analyzeAst(node.p, contextStack.create(newContext), builtin).undefinedSymbols.forEach(symbol =>\n result.undefinedSymbols.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream: TokenStream, position: number, parsers: ParserHelpers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let expression: AstNode\n ;[position, expression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LoopNode = {\n n: 'for',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: [expression],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateAstNode),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyze(node, contextStack, analyzeAst, builtin),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream: TokenStream, position: number, parsers: ParserHelpers) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const { parseToken } = parsers\n let loopBindings: LoopBindingNode[]\n ;[position, loopBindings] = parseLoopBindings(tokenStream, position, parsers)\n\n let expression: AstNode\n ;[position, expression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n\n const node: LoopNode = {\n n: 'doseq',\n t: AstNodeType.SpecialExpression,\n l: loopBindings,\n p: [expression],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateAstNode)\n return null\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyze(node, contextStack, analyzeAst, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\n\ntype IfLetNode = SpecialExpressionNode & {\n b: BindingNode\n}\n\nexport const ifLetSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: IfLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'if-let',\n b: asNonUndefined(bindings[0], firstToken.sourceCodeInfo),\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const locals: Context = {}\n const bindingValue = evaluateAstNode((node as IfLetNode).b.v, contextStack)\n if (bindingValue) {\n locals[(node as IfLetNode).b.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n const thenForm = asAstNode(node.p[0], sourceCodeInfo)\n return evaluateAstNode(thenForm, newContextStack)\n }\n if (node.p.length === 2) {\n const elseForm = asAstNode(node.p[1], sourceCodeInfo)\n return evaluateAstNode(elseForm, contextStack)\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const newContext: Context = { [(node as IfLetNode).b.n]: { value: true } }\n const bindingResult = analyzeAst((node as IfLetNode).b.v, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const ifNotSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'if-not',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (!evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { asAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'if',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n\n const [conditionNode, trueNode, falseNode] = node.p\n if (evaluateAstNode(asAstNode(conditionNode, sourceCodeInfo), contextStack)) {\n return evaluateAstNode(asAstNode(trueNode, sourceCodeInfo), contextStack)\n }\n else {\n if (node.p.length === 3)\n return evaluateAstNode(asAstNode(falseNode, sourceCodeInfo), contextStack)\n else\n return null\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\ntype LetNode = SpecialExpressionNode & {\n bs: BindingNode[]\n}\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: LetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'let',\n p: params,\n bs: bindings,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const newContextStack = contextStack.create(locals)\n for (const binding of (node as LetNode).bs) {\n const bindingValueNode = binding.v\n const bindingValue = evaluateAstNode(bindingValueNode, newContextStack)\n locals[binding.n] = { value: bindingValue }\n }\n\n let result: Any = null\n for (const astNode of node.p)\n result = evaluateAstNode(astNode, newContextStack)\n\n return result\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const newContext = (node as LetNode).bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n const bindingContext: Context = {}\n const bindingResults = (node as LetNode).bs.map((bindingNode) => {\n const valueNode = bindingNode.v\n const bindingsResult = analyzeAst(valueNode, contextStack.create(bindingContext), builtin)\n bindingContext[bindingNode.n] = { value: true }\n return bindingsResult\n })\n\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(...bindingResults, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny } from '../../typeGuards/lits'\n\ntype LoopNode = SpecialExpressionNode & { bs: BindingNode[] }\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens, parseBindings }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: LoopNode = {\n t: AstNodeType.SpecialExpression,\n n: 'loop',\n p: params,\n bs: bindings,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n const bindingContext: Context = (node as LoopNode).bs.reduce((result: Context, binding) => {\n result[binding.n] = { value: evaluateAstNode(binding.v, contextStack) }\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n for (;;) {\n let result: Any = null\n try {\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== (node as LoopNode).bs.length) {\n throw new LitsError(\n `recur expected ${(node as LoopNode).bs.length} parameters, got ${valueToString(params.length)}`,\n sourceCodeInfo,\n )\n }\n ;(node as LoopNode).bs.forEach((binding, index) => {\n asNonUndefined(bindingContext[binding.n], sourceCodeInfo).value = asAny(params[index], sourceCodeInfo)\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const newContext = (node as LoopNode).bs\n .map(binding => binding.n)\n .reduce((context: Context, name) => {\n context[name] = { value: true }\n return context\n }, {})\n\n const bindingValueNodes = (node as LoopNode).bs.map(binding => binding.v)\n const bindingsResult = analyzeAst(bindingValueNodes, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingsResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n return [\n newPosition + 1,\n {\n t: AstNodeType.SpecialExpression,\n n: 'or',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n },\n ]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n let value: Any = false\n\n for (const param of node.p) {\n value = evaluateAstNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { RecurSignal } from '../../errors'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let params\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'recur',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n throw new RecurSignal(params)\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { UserDefinedError } from '../../errors'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asString } from '../../typeGuards/string'\n\ntype ThrowNode = SpecialExpressionNode & {\n m: AstNode\n}\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, messageNode] = parseToken(tokenStream, position)\n position = newPosition\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n const node: ThrowNode = {\n t: AstNodeType.SpecialExpression,\n n: 'throw',\n p: [],\n m: messageNode,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const message = asString(evaluateAstNode((node as ThrowNode).m, contextStack), node.tkn?.sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node.tkn?.sourceCodeInfo)\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst((node as ThrowNode).m, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const timeSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, astNode] = parseToken(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'time!',\n p: [astNode],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [param] = node.p\n assertAstNode(param, node.tkn?.sourceCodeInfo)\n\n const startTime = Date.now()\n const result = evaluateAstNode(param, contextStack)\n const totalTime = Date.now() - startTime\n // eslint-disable-next-line no-console\n console.log(`Elapsed time: ${totalTime} ms`)\n\n return result\n },\n validate: node => assertNumberOfParams(1, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, NameNode, SpecialExpressionNode } from '../../parser/interface'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { asToken, assertToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asAny } from '../../typeGuards/lits'\nimport { getSourceCodeInfo } from '../../utils/debug/getSourceCodeInfo'\n\ntype TryNode = SpecialExpressionNode & {\n te: AstNode\n e: NameNode\n ce: AstNode\n}\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseToken }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let tryExpression: AstNode\n ;[position, tryExpression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '(' })\n position += 1\n\n let catchNode: AstNode\n ;[position, catchNode] = parseToken(tokenStream, position)\n assertNameNode(catchNode, catchNode.tkn?.sourceCodeInfo)\n if (catchNode.v !== 'catch') {\n throw new LitsError(\n `Expected 'catch', got '${catchNode.v}'.`,\n getSourceCodeInfo(catchNode, catchNode.tkn?.sourceCodeInfo),\n )\n }\n\n let error: AstNode\n ;[position, error] = parseToken(tokenStream, position)\n assertNameNode(error, error.tkn?.sourceCodeInfo)\n\n let catchExpression: AstNode\n ;[position, catchExpression] = parseToken(tokenStream, position)\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n assertToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: ')' })\n position += 1\n\n const node: TryNode = {\n t: AstNodeType.SpecialExpression,\n n: 'try',\n p: [],\n te: tryExpression,\n ce: catchExpression,\n e: error,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { te: tryExpression, ce: catchExpression, e: errorNode } = node as TryNode\n try {\n return evaluateAstNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = {\n [errorNode.v]: { value: asAny(error, node.tkn?.sourceCodeInfo) },\n }\n return evaluateAstNode(catchExpression, contextStack.create(newContext))\n }\n },\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const { te: tryExpression, ce: catchExpression, e: errorNode } = node as TryNode\n const tryResult = analyzeAst(tryExpression, contextStack, builtin)\n const newContext: Context = {\n [errorNode.v]: { value: true },\n }\n const catchResult = analyzeAst(catchExpression, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import type { Any, Arr, Coll, Obj } from '../interface'\nimport type { NativeJsFunction, RegularExpression } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { FunctionType } from '../constants/constants'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\ntype Type = 'null' | 'boolean' | 'number' | 'string' | 'object' | 'array' | 'regexp' | 'unknown'\n\nconst sortOrderByType: Record<Type, number> = {\n boolean: 0,\n number: 1,\n string: 2,\n array: 3,\n object: 4,\n regexp: 5,\n unknown: 6,\n null: 7,\n}\n\nfunction getType(value: unknown): Type {\n if (value === null)\n return 'null'\n else if (typeof value === 'boolean')\n return 'boolean'\n else if (typeof value === 'number')\n return 'number'\n else if (typeof value === 'string')\n return 'string'\n else if (Array.isArray(value))\n return 'array'\n else if (isObj(value))\n return 'object'\n else if (isRegularExpression(value))\n return 'regexp'\n else\n return 'unknown'\n}\n\nexport function compare(a: unknown, b: unknown): number {\n const aType = getType(a)\n const bType = getType(b)\n if (aType !== bType)\n return Math.sign(sortOrderByType[aType] - sortOrderByType[bType])\n\n switch (aType) {\n case 'null':\n return 0\n case 'boolean':\n if (a === b)\n return 0\n\n return a === false ? -1 : 1\n case 'number':\n return Math.sign((a as number) - (b as number))\n case 'string': {\n const aString = a as string\n const bString = b as string\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'array': {\n const aArray = a as Arr\n const bArray = b as Arr\n if (aArray.length < bArray.length)\n return -1\n else if (aArray.length > bArray.length)\n return 1\n\n for (let i = 0; i < aArray.length; i += 1) {\n const innerComp = compare(aArray[i], bArray[i])\n if (innerComp !== 0)\n return innerComp\n }\n return 0\n }\n case 'object': {\n const aObj = a as Obj\n const bObj = b as Obj\n return Math.sign(Object.keys(aObj).length - Object.keys(bObj).length)\n }\n case 'regexp': {\n const aString = (a as RegularExpression).s\n const bString = (b as RegularExpression).s\n return aString < bString ? -1 : aString > bString ? 1 : 0\n }\n case 'unknown':\n return 0\n }\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n __fn: true,\n f: {\n fn,\n },\n n: name,\n t: FunctionType.NativeJsFunction,\n }\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { toAny } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\nimport { isSeq } from '../../typeGuards/lits'\n\ntype WhenFirstNode = SpecialExpressionNode & {\n b: BindingNode\n}\n\nexport const whenFirstSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: WhenFirstNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-first',\n b: asNonUndefined(bindings[0], firstToken.sourceCodeInfo),\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const locals: Context = {}\n const { b: binding } = node as WhenFirstNode\n const evaluatedBindingForm = evaluateAstNode(binding.v, contextStack)\n if (!isSeq(evaluatedBindingForm)) {\n throw new LitsError(\n `Expected undefined or a sequence, got ${valueToString(evaluatedBindingForm)}`,\n node.tkn?.sourceCodeInfo,\n )\n }\n\n if (evaluatedBindingForm.length === 0)\n return null\n\n const bindingValue = toAny(evaluatedBindingForm[0])\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 0 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const { b: binding } = node as WhenFirstNode\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = analyzeAst(binding.v, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import { joinAnalyzeResults } from '../../analyze/utils'\nimport { LitsError } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { AstNode, BindingNode, SpecialExpressionNode } from '../../parser/interface'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../typeGuards'\n\ntype WhenLetNode = SpecialExpressionNode & {\n b: BindingNode\n}\n\nexport const whenLetSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseBindings, parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n let bindings: BindingNode[]\n ;[position, bindings] = parseBindings(tokenStream, position)\n\n if (bindings.length !== 1) {\n throw new LitsError(\n `Expected exactly one binding, got ${valueToString(bindings.length)}`,\n firstToken.sourceCodeInfo,\n )\n }\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, position)\n\n const node: WhenLetNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-let',\n b: asNonUndefined(bindings[0], firstToken.sourceCodeInfo),\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const { b: binding } = node as WhenLetNode\n const locals: Context = {}\n const bindingValue = evaluateAstNode(binding.v, contextStack)\n if (!bindingValue)\n return null\n\n locals[binding.n] = { value: bindingValue }\n const newContextStack = contextStack.create(locals)\n\n let result: Any = null\n for (const form of node.p)\n result = evaluateAstNode(form, newContextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 0 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => {\n const { b: binding } = node as WhenLetNode\n const newContext: Context = { [binding.n]: { value: true } }\n const bindingResult = analyzeAst(binding.v, contextStack, builtin)\n const paramsResult = analyzeAst(node.p, contextStack.create(newContext), builtin)\n return joinAnalyzeResults(bindingResult, paramsResult)\n },\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const whenNotSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when-not',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.tkn?.sourceCodeInfo)\n\n if (evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertAstNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const whenSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'when',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [whenExpression, ...body] = node.p\n assertAstNode(whenExpression, node.tkn?.sourceCodeInfo)\n\n if (!evaluateAstNode(whenExpression, contextStack))\n return null\n\n let result: Any = null\n for (const form of body)\n result = evaluateAstNode(form, contextStack)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n 'bit-shift-left': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-shift-right': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-not': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'bit-and': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-and-not': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-or': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-xor': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'bit-flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'bit-test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { SourceCodeInfo } from '../tokenizer/interface'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { LitsFunction } from '../../..'\nimport type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { cloneColl, collHasKey, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asColl, assertAny, assertColl, assertObj, assertSeq, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // nil behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isSeq(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n assertNumber(key, sourceCodeInfo, { integer: true })\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has?': {\n evaluate: ([coll, value], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.includes(value)\n\n if (typeof coll === 'string')\n return typeof value === 'string' ? coll.split('').includes(value) : false\n\n return Object.values(coll).includes(value)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has-some?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null || seq === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (coll.includes(value))\n return true\n }\n return false\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (isString(value, { char: true }) ? coll.split('').includes(value) : false)\n return true\n }\n return false\n }\n for (const value of seq) {\n if (Object.values(coll).includes(value))\n return true\n }\n return false\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'has-every?': {\n evaluate: ([coll, seq], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (seq === null)\n return true\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(coll)) {\n for (const value of seq) {\n if (!coll.includes(value))\n return false\n }\n return true\n }\n if (typeof coll === 'string') {\n for (const value of seq) {\n if (!isString(value, { char: true }) || !coll.split('').includes(value))\n return false\n }\n return true\n }\n for (const value of seq) {\n if (!Object.values(coll).includes(value))\n return false\n }\n return true\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n validate: node => assertNumberOfParams(3, node),\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 3 }, node),\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n validate: node => assertNumberOfParams({ min: 3 }, node),\n },\n 'concat': {\n evaluate: (params, sourceCodeInfo): Any => {\n assertColl(params[0], sourceCodeInfo)\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isString(params[0])) {\n return params.reduce((result: string, s) => {\n assertString(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'every?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'any?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'not-any?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'not-every?': {\n evaluate: ([fn, coll], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { collHasKey, compare, toAny, toNonNegativeInteger } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport type { BuiltinNormalExpressions, NormalExpressionEvaluator } from '../../interface'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const evaluateMap: NormalExpressionEvaluator<Arr | string> = (\n params: Arr,\n sourceCodeInfo,\n contextStack,\n { executeFunction },\n) => {\n const [fn, firstList] = params\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(firstList, sourceCodeInfo)\n const isStringSeq = typeof firstList === 'string'\n\n const length = firstList.length\n if (params.length === 2) {\n if (Array.isArray(firstList)) {\n return firstList.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return firstList\n .split('')\n .map((elem) => {\n const newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo, { char: true })\n return newVal\n })\n .join('')\n }\n }\n else {\n params.slice(2).forEach((collParam) => {\n if (isStringSeq)\n assertString(collParam, sourceCodeInfo)\n else\n assertArray(collParam, sourceCodeInfo)\n\n if (length !== collParam.length)\n throw new LitsError('All arguments to \"map\" must have the same length.', sourceCodeInfo)\n })\n\n if (isStringSeq) {\n let result = ''\n for (let i = 0; i < length; i += 1) {\n const fnParams = params.slice(1).map(l => (l as string)[i]) as string[]\n const newValue = executeFunction(fn, fnParams, contextStack, sourceCodeInfo)\n assertString(newValue, sourceCodeInfo, { char: true })\n result += newValue\n }\n return result\n }\n else {\n const result: Arr = []\n for (let i = 0; i < length; i += 1) {\n const fnParams = params.slice(1).map(l => toAny((l as Arr)[i]))\n result.push(executeFunction(fn, fnParams, contextStack, sourceCodeInfo))\n }\n return result\n }\n }\n}\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'cons': {\n evaluate: ([elem, seq], sourceCodeInfo): Any => {\n assertAny(elem, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [elem, ...seq]\n\n assertString(elem, sourceCodeInfo, { char: true })\n return `${elem}${seq}`\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'filter': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'map': {\n evaluate: evaluateMap,\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substr(0, seq.length - 1)\n\n const copy = [...seq]\n copy.pop()\n return copy\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'position': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, arr] = params\n assertSeq(arr, sourceCodeInfo)\n if (arr.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (arr.length === 1)\n return [toAny(arr[0])]\n\n if (typeof arr === 'string') {\n const chars = arr.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(arr[0])]\n arr.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(arr[0]))\n return resultArray\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, arr] = params\n assertSeq(arr, sourceCodeInfo)\n if (arr.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (arr.length === 1)\n return toAny(arr[0])\n\n if (typeof arr === 'string') {\n const chars = arr.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return arr.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(arr[0]))\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const fn = params[0]\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n const [, seq] = params\n assertSeq(seq, sourceCodeInfo)\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const [, val, seq] = params\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'rest': {\n evaluate: ([first], sourceCodeInfo): Arr | string => {\n assertSeq(first, sourceCodeInfo)\n if (Array.isArray(first)) {\n if (first.length <= 1)\n return []\n\n return first.slice(1)\n }\n return first.substr(1)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'nthrest': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substr(integerCount)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'next': {\n evaluate: ([first], sourceCodeInfo): Arr | string | null => {\n assertSeq(first, sourceCodeInfo)\n if (Array.isArray(first)) {\n if (first.length <= 1)\n return null\n\n return first.slice(1)\n }\n if (first.length <= 1)\n return null\n\n return first.substr(1)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'nthnext': {\n evaluate: ([seq, count], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { finite: true })\n const integerCount = Math.max(Math.ceil(count), 0)\n if (seq.length <= count)\n return null\n\n if (Array.isArray(seq))\n return seq.slice(integerCount)\n\n return seq.substr(integerCount)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'second': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[1])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substr(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n\n if (params.length === 1)\n return seq\n\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\n },\n 'some': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const defaultComparer = params.length === 1\n const seq = defaultComparer ? params[0] : params[1]\n const comparer = defaultComparer ? null : params[0]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort(compare)\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const defaultComparer = params.length === 2\n\n const keyfn = asAny(params[0], sourceCodeInfo)\n const comparer = defaultComparer ? null : params[1]\n const seq = asSeq(defaultComparer ? params[1] : params[2], sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n return compare(aKey, bKey)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'take': {\n evaluate: ([n, input], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'take-last': {\n evaluate: ([n, array], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'take-while': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'drop': {\n evaluate: ([n, input], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'drop-last': {\n evaluate: ([n, array], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'drop-while': {\n evaluate: ([fn, seq]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n 'random-sample!': {\n evaluate: ([prob, seq], sourceCodeInfo): Seq => {\n assertNumber(prob, sourceCodeInfo, { finite: true })\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n return seq\n .split('')\n .filter(() => Math.random() < prob)\n .join('')\n }\n else {\n return seq.filter(() => Math.random() < prob)\n }\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'rand-nth!': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (seq.length === 0)\n return null\n\n const index = Math.floor(Math.random() * seq.length)\n\n if (typeof seq === 'string')\n return toAny(seq.split('')[index])\n\n return toAny(seq[index])\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'shuffle!': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n const array: Arr = typeof input === 'string' ? [...input.split('')] : [...input]\n let remainingLength = array.length\n let arrayElement: Any\n let pickedIndex: number\n\n // Fisher–Yates Shuffle\n while (remainingLength) {\n remainingLength -= 1\n\n // Pick a remaining element\n pickedIndex = Math.floor(Math.random() * remainingLength)\n\n // And swap it with the current element.\n arrayElement = toAny(array[remainingLength])\n array[remainingLength] = toAny(array[pickedIndex])\n array[pickedIndex] = arrayElement\n }\n\n return typeof input === 'string' ? array.join('') : array\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return Array.from(new Set(input))\n\n return Array.from(new Set(input.split(''))).join('')\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'remove': {\n evaluate: ([fn, input], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'remove-at': {\n evaluate: ([index, input], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n\n const intIndex = Math.ceil(index)\n if (intIndex < 0 || intIndex >= input.length)\n return input\n\n if (Array.isArray(input)) {\n const copy = [...input]\n copy.splice(index, 1)\n return copy\n }\n return `${input.substring(0, index)}${input.substring(index + 1)}`\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'split-at': {\n evaluate: ([pos, seq], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { finite: true })\n const intPos = toNonNegativeInteger(pos)\n assertSeq(seq, sourceCodeInfo)\n return [seq.slice(0, intPos), seq.slice(intPos)]\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'split-with': {\n evaluate: ([fn, seq], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'group-by': {\n evaluate: ([fn, seq], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq\n = len === 2\n ? asSeq(params[1], sourceCodeInfo)\n : len === 3\n ? asSeq(params[2], sourceCodeInfo)\n : asSeq(params[3], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n const pad = len === 4 ? (params[2] === null ? [] : asArray(params[2], sourceCodeInfo)) : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 4 }, node),\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const len = params.length\n const n = toNonNegativeInteger(asNumber(params[0], sourceCodeInfo))\n const seq = len === 2 ? asSeq(params[1], sourceCodeInfo) : asSeq(params[2], sourceCodeInfo)\n const step = len >= 3 ? toNonNegativeInteger(asNumber(params[1], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'partition-by': {\n evaluate: ([fn, seq], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { evaluateMap } from './sequence'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n array: {\n evaluate: (params): Arr => params,\n },\n\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n validate: node => assertNumberOfParams({ min: 1, max: 3 }, node),\n },\n\n repeat: {\n evaluate: ([count, value], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n mapcat: {\n evaluate: (params, sourceCodeInfo, contextStack, helpers): Arr | string => {\n const mapResult = evaluateMap(params, sourceCodeInfo, contextStack, helpers)\n assertArray(mapResult, sourceCodeInfo)\n return mapResult.flat(1)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'rem': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'sqrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cbrt': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pow': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'rand!': {\n evaluate: (parameters, sourceCodeInfo): number => {\n const num = asNumber(parameters.length === 1 ? parameters[0] : 1, sourceCodeInfo)\n return Math.random() * num\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 0, max: 1 }, node),\n },\n\n 'rand-int!': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(Math.random() * Math.abs(first)) * Math.sign(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'max-safe-integer': {\n evaluate: (): number => {\n return Number.MAX_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min-safe-integer': {\n evaluate: (): number => {\n return Number.MIN_SAFE_INTEGER\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'max-value': {\n evaluate: (): number => {\n return Number.MAX_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'min-value': {\n evaluate: (): number => {\n return Number.MIN_VALUE\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'epsilon': {\n evaluate: (): number => {\n return Number.EPSILON\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'positive-infinity': {\n evaluate: (): number => {\n return Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'negative-infinity': {\n evaluate: (): number => {\n return Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'nan': {\n evaluate: (): number => {\n return Number.NaN\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'e': {\n evaluate: (): number => {\n return Math.E\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'pi': {\n evaluate: (): number => {\n return Math.PI\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(0, node),\n },\n\n 'exp': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.exp(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { version } from '../../../../package.json'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { assertString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nconst uuidTemplate = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\nconst xyRegexp = /[xy]/g\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n 'not=': {\n evaluate: (params): boolean => {\n for (let i = 0; i < params.length - 1; i += 1) {\n for (let j = i + 1; j < params.length; j += 1) {\n if (params[i] === params[j])\n return false\n }\n }\n\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n '=': {\n evaluate: ([first, ...rest]): boolean => {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'equal?': {\n evaluate: ([a, b], sourceCodeInfo): boolean => {\n return deepEqual(asAny(a, sourceCodeInfo), asAny(b, sourceCodeInfo), sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n '>': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) <= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '<': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) >= 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '>=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) < 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n '<=': {\n evaluate: ([first, ...rest]): boolean => {\n let currentValue = first\n for (const param of rest) {\n if (compare(currentValue, param) > 0)\n return false\n\n currentValue = param\n }\n return true\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n 'not': {\n evaluate: ([first]): boolean => !first,\n validate: node => assertNumberOfParams(1, node),\n },\n 'inst-ms!': {\n evaluate: (): number => {\n return Date.now()\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'inst-ms->iso-date-time': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'iso-date-time->inst-ms': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'compare': {\n evaluate: ([a, b]): number => {\n return compare(a, b)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n 'uuid!': {\n evaluate: (): string => {\n return uuidTemplate.replace(xyRegexp, (character) => {\n const randomNbr = Math.floor(Math.random() * 16)\n const newValue = character === 'x' ? randomNbr : (randomNbr & 0x3) | 0x8\n return newValue.toString(16)\n })\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'lits-version!': {\n evaluate: (): Any => {\n return version\n },\n validate: node => assertNumberOfParams(0, node),\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== second)\n throw new AssertionError(`Expected ${first} to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first === second)\n throw new AssertionError(`Expected ${first} not to be ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected\\n${JSON.stringify(first, null, 2)}\\nto deep equal\\n${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not-equal': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert>': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert>=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert<': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert<=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (compare(first, second) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-nil': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be nil.${message}`, sourceCodeInfo)\n\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n message = typeof message === 'string' && message ? ` \"${message}\"` : ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { collHasKey, toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { assertEventNumberOfParams, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'object': {\n evaluate: (params, sourceCodeInfo): Obj => {\n const result: Obj = {}\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value\n }\n return result\n },\n validate: node => assertEventNumberOfParams(node),\n },\n\n 'keys': {\n evaluate: ([first], sourceCodeInfo): string[] => {\n assertObj(first, sourceCodeInfo)\n return Object.keys(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'vals': {\n evaluate: ([first], sourceCodeInfo): Arr => {\n assertObj(first, sourceCodeInfo)\n return Object.values(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'entries': {\n evaluate: ([first], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(first, sourceCodeInfo)\n return Object.entries(first)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n validate: node => assertNumberOfParams({ min: 0 }, node),\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [fn, first, ...rest] = params\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 1)\n return null\n\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n validate: node => assertNumberOfParams(2, node),\n },\n}\n","import type { NormalExpressionNode } from '../../../parser/interface'\nimport { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nil?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n validate: node => assertNumberOfParams(1, node),\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n validate: node => assertNumberOfParams(1, node),\n },\n}\n","import type { RegularExpression } from '../../../parser/interface'\nimport { assertRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { assertNumberOfParams } from '../../../typeGuards'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n regexp: {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n match: {\n evaluate: ([regexp, text], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n validate: node => assertNumberOfParams(2, node),\n },\n replace: {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const regExp = new RegExp(regexp.s, regexp.f)\n return str.replace(regExp, value)\n },\n validate: node => assertNumberOfParams(3, node),\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Any, Arr } from '../../../interface'\nimport type { NormalExpressionNode } from '../../../parser/interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/interface'\nimport { asNonUndefined, assertNumberOfParams } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'subs': {\n evaluate: ([first, second, third], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo, { integer: true, nonNegative: true })\n\n if (third === undefined)\n return (first).substring(second)\n\n assertNumber(third, sourceCodeInfo, { gte: second })\n return (first).substring(second, third)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n validate: node => assertNumberOfParams(2, node),\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'number-to-string': {\n evaluate: (params, sourceCodeInfo): string => {\n const [num, base] = params\n assertNumber(num, sourceCodeInfo, { finite: true })\n if (params.length === 1) {\n return `${num}`\n }\n else {\n assertNumber(base, sourceCodeInfo, { finite: true })\n if (base !== 2 && base !== 8 && base !== 10 && base !== 16) {\n throw new LitsError(\n `Expected \"number-to-string\" base argument to be 2, 8, 10 or 16, got: ${base}`,\n sourceCodeInfo,\n )\n }\n if (base === 10)\n return `${num}`\n\n assertNumber(num, sourceCodeInfo, { integer: true, nonNegative: true })\n return Number(num).toString(base)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 2 }, node),\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(1, node),\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertString(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams(2, node),\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 2, max: 3 }, node),\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n validate: (node: NormalExpressionNode): void => assertNumberOfParams({ min: 1, max: 10 }, node),\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import { FunctionType } from '../../../constants/constants'\nimport type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/interface'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumberOfParams } from '../../../typeGuards'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Partial,\n f: toAny(fn),\n p: params,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'comp': {\n evaluate: (fns, sourceCodeInfo): CompFunction => {\n if (fns.length > 1) {\n const last = fns[fns.length - 1]\n if (Array.isArray(last))\n // eslint-disable-next-line ts/no-unsafe-assignment\n fns = [...fns.slice(0, -1), ...last]\n }\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Comp,\n f: fns,\n }\n },\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Constantly,\n v: toAny(value),\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'juxt': {\n evaluate: (fns, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Juxt,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Complement,\n f: toAny(fn),\n }\n },\n validate: node => assertNumberOfParams(1, node),\n },\n\n 'every-pred': {\n evaluate: (fns, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.EveryPred,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'some-pred': {\n evaluate: (fns, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.SomePred,\n f: fns,\n }\n },\n validate: node => assertNumberOfParams({ min: 1 }, node),\n },\n\n 'fnil': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNilFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Fnil,\n f: toAny(fn),\n p: params,\n }\n },\n validate: node => assertNumberOfParams({ min: 2 }, node),\n },\n}\n","import type { BuiltinNormalExpressions } from '../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n","import { AstNodeType, TokenType } from '../../constants/constants'\nimport type { AstNode, SpecialExpressionNode } from '../../parser/interface'\nimport { asToken, isToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const commentSpecialExpression: BuiltinSpecialExpression<null> = {\n parse: (tokenStream, position, { parseToken }) => {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'comment',\n p: [],\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n while (!isToken(tkn, { type: TokenType.Bracket, value: ')' })) {\n let bodyNode: AstNode\n ;[position, bodyNode] = parseToken(tokenStream, position)\n node.p.push(bodyNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position + 1, node]\n },\n evaluate: () => null,\n analyze: () => ({ undefinedSymbols: new Set() }),\n}\n","import { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { assertNumberOfParams } from '../../typeGuards'\nimport { assertNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\n\nexport const declaredSpecialExpression: BuiltinSpecialExpression<boolean> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: 'declared?',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack) => {\n const [astNode] = node.p\n assertNameNode(astNode, node.tkn?.sourceCodeInfo)\n\n const lookUpResult = contextStack.lookUp(astNode)\n return lookUpResult !== null\n },\n validate: node => assertNumberOfParams(1, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import type { Any } from '../../interface'\nimport { AstNodeType } from '../../constants/constants'\nimport type { SpecialExpressionNode } from '../../parser/interface'\nimport { isNameNode } from '../../typeGuards/astNode'\nimport { asToken } from '../../typeGuards/token'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport { assertAny } from '../../typeGuards/lits'\nimport { assertNumberOfParams } from '../../typeGuards'\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any> = {\n parse: (tokenStream, position, { parseTokens }) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const [newPosition, params] = parseTokens(tokenStream, position)\n const node: SpecialExpressionNode = {\n t: AstNodeType.SpecialExpression,\n n: '??',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition + 1, node]\n },\n evaluate: (node, contextStack, { evaluateAstNode }) => {\n const [firstNode, secondNode] = node.p\n\n if (isNameNode(firstNode)) {\n if (contextStack.lookUp(firstNode) === null)\n return secondNode ? evaluateAstNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node.tkn?.sourceCodeInfo)\n const firstResult = evaluateAstNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateAstNode(secondNode, contextStack) : null)\n },\n validate: node => assertNumberOfParams({ min: 1, max: 2 }, node),\n analyze: (node, contextStack, { analyzeAst, builtin }) => analyzeAst(node.p, contextStack, builtin),\n}\n","import { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { defnSpecialExpression, defnsSpecialExpression, fnSpecialExpression } from './specialExpressions/functions'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { defsSpecialExpression } from './specialExpressions/defs'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { ifLetSpecialExpression } from './specialExpressions/if-let'\nimport { ifNotSpecialExpression } from './specialExpressions/if-not'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { timeSpecialExpression } from './specialExpressions/time'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { whenFirstSpecialExpression } from './specialExpressions/when-first'\nimport { whenLetSpecialExpression } from './specialExpressions/when-let'\nimport { whenNotSpecialExpression } from './specialExpressions/when-not'\nimport { whenSpecialExpression } from './specialExpressions/when'\nimport type { Builtin, BuiltinSpecialExpressions } from './interface'\nimport { normalExpressions } from './normalExpressions'\nimport { commentSpecialExpression } from './specialExpressions/comment'\nimport { declaredSpecialExpression } from './specialExpressions/declared'\nimport { qqSpecialExpression } from './specialExpressions/qq'\n\nexport const specialExpressions: BuiltinSpecialExpressions = {\n 'and': andSpecialExpression,\n 'comment': commentSpecialExpression,\n 'cond': condSpecialExpression,\n 'def': defSpecialExpression,\n 'defn': defnSpecialExpression,\n 'defns': defnsSpecialExpression,\n 'defs': defsSpecialExpression,\n 'do': doSpecialExpression,\n 'doseq': doseqSpecialExpression,\n 'for': forSpecialExpression,\n 'fn': fnSpecialExpression,\n 'if': ifSpecialExpression,\n 'if-let': ifLetSpecialExpression,\n 'if-not': ifNotSpecialExpression,\n 'let': letSpecialExpression,\n 'loop': loopSpecialExpression,\n 'or': orSpecialExpression,\n 'recur': recurSpecialExpression,\n 'throw': throwSpecialExpression,\n 'time!': timeSpecialExpression,\n 'try': trySpecialExpression,\n 'when': whenSpecialExpression,\n 'when-first': whenFirstSpecialExpression,\n 'when-let': whenLetSpecialExpression,\n 'when-not': whenNotSpecialExpression,\n 'declared?': declaredSpecialExpression,\n '??': qqSpecialExpression,\n}\n\nObject.keys(specialExpressions).forEach((key) => {\n /* v8 ignore next 2 */\n if (normalExpressions[key])\n throw new Error(`Expression ${key} is defined as both a normal expression and a special expression`)\n})\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressions)\n","import type { Builtin } from '../builtin/interface'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport { AstNodeType } from '../constants/constants'\nimport type { AstNode } from '../parser/interface'\nimport { asNonUndefined } from '../typeGuards'\nimport type { AnalyzeAst, AnalyzeResult, UndefinedSymbolEntry } from './interface'\n\nexport const analyzeAst: AnalyzeAst = (astNode, contextStack, builtin: Builtin) => {\n const astNodes = Array.isArray(astNode) ? astNode : [astNode]\n\n const analyzeResult: AnalyzeResult = {\n undefinedSymbols: new Set<UndefinedSymbolEntry>(),\n }\n\n for (const subNode of astNodes) {\n const result = analyzeAstNode(subNode, contextStack, builtin)\n result.undefinedSymbols.forEach(symbol => analyzeResult.undefinedSymbols.add(symbol))\n }\n\n return analyzeResult\n}\n\nfunction analyzeAstNode(astNode: AstNode, contextStack: ContextStack, builtin: Builtin): AnalyzeResult {\n const emptySet = new Set<UndefinedSymbolEntry>()\n switch (astNode.t) {\n case AstNodeType.Name: {\n const lookUpResult = contextStack.lookUp(astNode)\n if (lookUpResult === null)\n return { undefinedSymbols: new Set([{ symbol: astNode.v, token: astNode.tkn }]) }\n\n return { undefinedSymbols: emptySet }\n }\n case AstNodeType.String:\n case AstNodeType.Number:\n case AstNodeType.Modifier:\n case AstNodeType.ReservedName:\n return { undefinedSymbols: emptySet }\n case AstNodeType.NormalExpression: {\n const undefinedSymbols = new Set<UndefinedSymbolEntry>()\n const { e: expression, n: name, tkn: token } = astNode\n if (typeof name === 'string') {\n const lookUpResult = contextStack.lookUp({ t: AstNodeType.Name, v: name, tkn: token })\n if (lookUpResult === null)\n undefinedSymbols.add({ symbol: name, token: astNode.tkn })\n }\n if (expression) {\n switch (expression.t) {\n case AstNodeType.String:\n case AstNodeType.Number:\n break\n case AstNodeType.NormalExpression:\n case AstNodeType.SpecialExpression: {\n const subResult = analyzeAstNode(expression, contextStack, builtin)\n subResult.undefinedSymbols.forEach(symbol => undefinedSymbols.add(symbol))\n break\n }\n }\n }\n\n for (const subNode of astNode.p) {\n const subNodeResult = analyzeAst(subNode, contextStack, builtin)\n subNodeResult.undefinedSymbols.forEach(symbol => undefinedSymbols.add(symbol))\n }\n return { undefinedSymbols }\n }\n case AstNodeType.SpecialExpression: {\n const specialExpression = asNonUndefined(builtin.specialExpressions[astNode.n], astNode.tkn?.sourceCodeInfo)\n const result = specialExpression.analyze(astNode, contextStack, {\n analyzeAst,\n builtin,\n })\n return result\n }\n }\n}\n","import { normalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n BuiltinFunction,\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunctionOverload,\n EveryPredFunction,\n FNilFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n PartialFunction,\n SomePredFunction,\n UserDefinedFunction,\n} from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { FunctionType } from '../constants/constants'\nimport { asString } from '../typeGuards/string'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport type { Context, EvaluateAstNode, ExecuteFunction } from './interface'\nimport type { ContextStack } from './ContextStack'\n\ntype FunctionExecutors = Record<\n LitsFunctionType,\n (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateAstNode: EvaluateAstNode, executeFunction: ExecuteFunction },\n ) => Any\n>\n\nfunction findOverloadFunction(\n overloads: EvaluatedFunctionOverload[],\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n): EvaluatedFunctionOverload {\n const overloadFunction = overloads.find((overload) => {\n const arity = overload.a\n if (typeof arity === 'number')\n return arity === nbrOfParams\n else\n return arity.min <= nbrOfParams\n })\n if (!overloadFunction)\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n\n return overloadFunction\n}\n\nexport const functionExecutors: FunctionExecutors = {\n [FunctionType.NativeJsFunction]: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.f.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n [FunctionType.UserDefined]: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateAstNode }) => {\n for (;;) {\n const overloadFunction = findOverloadFunction(fn.o, params.length, sourceCodeInfo)\n const args = overloadFunction.as\n const nbrOfMandatoryArgs: number = args.mandatoryArguments.length\n\n const newContext: Context = { ...overloadFunction.f }\n\n const length = Math.max(params.length, args.mandatoryArguments.length)\n const rest: Arr = []\n for (let i = 0; i < length; i += 1) {\n if (i < nbrOfMandatoryArgs) {\n const param = toAny(params[i])\n const key = asString(args.mandatoryArguments[i], sourceCodeInfo)\n newContext[key] = { value: param }\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n if (args.restArgument)\n newContext[args.restArgument] = { value: rest }\n\n try {\n let result: Any = null\n const newContextStack = contextStack.create(newContext, fn.x)\n for (const node of overloadFunction.b)\n result = evaluateAstNode(node, newContextStack)\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n [FunctionType.Partial]: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.f, [...fn.p, ...params], contextStack, sourceCodeInfo)\n },\n [FunctionType.Comp]: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n [FunctionType.Constantly]: (fn: ConstantlyFunction) => {\n return fn.v\n },\n [FunctionType.Juxt]: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.f.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n [FunctionType.Complement]: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.f, params, contextStack, sourceCodeInfo)\n },\n [FunctionType.EveryPred]: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n [FunctionType.SomePred]: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.f) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n [FunctionType.Fnil]: (fn: FNilFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fniledParams = params.map((param, index) => (param === null ? toAny(fn.p[index]) : param))\n return executeFunction(toAny(fn.f), fniledParams, contextStack, sourceCodeInfo)\n },\n [FunctionType.Builtin]: (fn: BuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(normalExpressions[fn.n], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type {\n Ast,\n AstNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ReservedNameNode,\n SpecialExpressionNode,\n StringNode,\n} from '../parser/interface'\nimport { builtin } from '../builtin'\nimport { reservedNamesRecord } from '../reservedNames'\nimport { toAny } from '../utils'\nimport type { Any, Arr, Obj } from '../interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { AstNodeType } from '../constants/constants'\nimport { isNormalExpressionNodeWithName } from '../typeGuards/astNode'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { asNonUndefined } from '../typeGuards'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { assertString } from '../typeGuards/string'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n for (const node of ast.b)\n result = evaluateAstNode(node, contextStack)\n\n return result\n}\n\nexport function evaluateAstNode(node: AstNode, contextStack: ContextStack): Any {\n switch (node.t) {\n case AstNodeType.Number:\n return evaluateNumber(node)\n case AstNodeType.String:\n return evaluateString(node)\n case AstNodeType.Name:\n return contextStack.evaluateName(node)\n case AstNodeType.ReservedName:\n return evaluateReservedName(node)\n case AstNodeType.NormalExpression:\n return evaluateNormalExpression(node, contextStack)\n case AstNodeType.SpecialExpression:\n return evaluateSpecialExpression(node, contextStack)\n default:\n throw new LitsError(`${node.t}-node cannot be evaluated`, node.tkn?.sourceCodeInfo)\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node.v\n}\n\nfunction evaluateString(node: StringNode): string {\n return node.v\n}\n\nfunction evaluateReservedName(node: ReservedNameNode): Any {\n return asNonUndefined(reservedNamesRecord[node.v], node.tkn?.sourceCodeInfo).value\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const params = node.p.map(paramNode => evaluateAstNode(paramNode, contextStack))\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n if (isNormalExpressionNodeWithName(node)) {\n const value = contextStack.getValue(node.n)\n if (value !== undefined)\n return executeFunction(asAny(value), params, contextStack, sourceCodeInfo)\n\n return evaluateBuiltinNormalExpression(node, params, contextStack)\n }\n else {\n const fn = evaluateAstNode(node.e, contextStack)\n return executeFunction(fn, params, contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.t](fn, params, sourceCodeInfo, contextStack, { evaluateAstNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateBuiltinNormalExpression(\n node: NormalExpressionNodeWithName,\n params: Arr,\n contextStack: ContextStack,\n): Any {\n const normalExpression = builtin.normalExpressions[node.n]\n if (!normalExpression)\n throw new UndefinedSymbolError(node.n, node.tkn?.sourceCodeInfo)\n\n return normalExpression.evaluate(params, node.tkn?.sourceCodeInfo, contextStack, { executeFunction })\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpression = asNonUndefined(builtin.specialExpressions[node.n], node.tkn?.sourceCodeInfo)\n\n return specialExpression.evaluate(node, contextStack, { evaluateAstNode, builtin })\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Any, Arr } from '../interface'\nimport type { AstNode, BuiltinFunction } from '../parser/interface'\nimport type { SourceCodeInfo } from '../tokenizer/interface'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateAstNode = (node: AstNode, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | BuiltinFunction | 'specialExpression' | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import type { BuiltinFunction, ExtraData, NameNode, NativeJsFunction } from '../parser/interface'\nimport { builtin } from '../builtin'\nimport { toAny } from '../utils'\nimport type { Any } from '../interface'\nimport { UndefinedSymbolError } from '../errors'\nimport type { LazyValue } from '../Lits/Lits'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { FunctionType } from '../constants/constants'\nimport { asNonUndefined } from '../typeGuards'\nimport { isBuiltinFunction } from '../typeGuards/litsFunction'\nimport { isContextEntry } from './interface'\nimport type { Context, LookUpResult } from './interface'\n\nexport class ContextStack {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.contexts = contexts\n this.globalContext = asNonUndefined(contexts[0])\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context, extraData?: ExtraData): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStack({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: extraData ? { ...this.lazyValues, ...extraData } : this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: NameNode): LookUpResult {\n const value = node.v\n const sourceCodeInfo = node.tkn?.sourceCodeInfo\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n if (builtin.normalExpressions[value]) {\n const builtinFunction: BuiltinFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n t: FunctionType.Builtin,\n n: value,\n }\n return builtinFunction\n }\n\n if (builtin.specialExpressions[value])\n return 'specialExpression'\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateName(node: NameNode): Any {\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n else if (isBuiltinFunction(lookUpResult))\n return lookUpResult\n\n throw new UndefinedSymbolError(node.v, node.tkn?.sourceCodeInfo)\n }\n}\n","import { builtin } from '../builtin'\nimport type { FnNode } from '../builtin/specialExpressions/functions'\nimport type { FunctionArguments } from '../builtin/utils'\nimport { AstNodeType, TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ReservedName } from '../reservedNames'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { asNonUndefined, assertEventNumberOfParams, assertNonUndefined, assertUnreachable } from '../typeGuards'\nimport { assertNameNode, isExpressionNode } from '../typeGuards/astNode'\nimport { asToken } from '../typeGuards/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type {\n AstNode,\n BindingNode,\n ModifierName,\n NameNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n NumberNode,\n ParseArgument,\n ParseExpression,\n ReservedNameNode,\n SpecialExpressionNode,\n StringNode,\n} from './interface'\n\nexport function parseNumber(tokenStream: TokenStream, position: number): [number, NumberNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [position + 1, { t: AstNodeType.Number, v: Number(tkn.v), tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n}\n\nfunction parseString(tokenStream: TokenStream, position: number): [number, StringNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [position + 1, { t: AstNodeType.String, v: tkn.v, tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n}\n\nfunction parseName(tokenStream: TokenStream, position: number): [number, NameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [position + 1, { t: AstNodeType.Name, v: tkn.v, tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n}\n\nfunction parseReservedName(tokenStream: TokenStream, position: number): [number, ReservedNameNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n return [\n position + 1,\n { t: AstNodeType.ReservedName, v: tkn.v as ReservedName, tkn: tkn.sourceCodeInfo ? tkn : undefined },\n ]\n}\n\nfunction parseTokens(tokenStream: TokenStream, position: number): [number, AstNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const astNodes: AstNode[] = []\n let astNode: AstNode\n while (!(tkn.t === TokenType.Bracket && (tkn.v === ')' || tkn.v === ']'))) {\n ;[position, astNode] = parseToken(tokenStream, position)\n astNodes.push(astNode)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n return [position, astNodes]\n}\n\nconst parseExpression: ParseExpression = (tokenStream, position) => {\n position += 1 // Skip parenthesis\n\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n if (tkn.t === TokenType.Name && builtin.specialExpressions[tkn.v])\n return parseSpecialExpression(tokenStream, position)\n\n return parseNormalExpression(tokenStream, position)\n}\n\nfunction parseArrayLitteral(tokenStream: TokenStream, position: number): [number, AstNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n position = position + 1\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const params: AstNode[] = []\n let param: AstNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n ;[position, param] = parseToken(tokenStream, position)\n params.push(param)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n position = position + 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'array',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [position, node]\n}\n\nfunction parseObjectLitteral(tokenStream: TokenStream, position: number): [number, NormalExpressionNodeWithName] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n position = position + 1\n\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const params: AstNode[] = []\n let param: AstNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === '}')) {\n ;[position, param] = parseToken(tokenStream, position)\n params.push(param)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n\n position = position + 1\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'object',\n p: params,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n assertEventNumberOfParams(node)\n\n return [position, node]\n}\n\nfunction parseRegexpShorthand(tokenStream: TokenStream, position: number): [number, NormalExpressionNodeWithName] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const stringNode: StringNode = {\n t: AstNodeType.String,\n v: tkn.v,\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n assertNonUndefined(tkn.o, tkn.sourceCodeInfo)\n\n const optionsNode: StringNode = {\n t: AstNodeType.String,\n v: `${tkn.o.g ? 'g' : ''}${tkn.o.i ? 'i' : ''}`,\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: 'regexp',\n p: [stringNode, optionsNode],\n tkn: tkn.sourceCodeInfo ? tkn : undefined,\n }\n\n return [position + 1, node]\n}\n\nconst placeholderRegexp = /^%([1-9][0-9]?)?$/\ntype ParseFnShorthand = (tokenStream: TokenStream, position: number) => [number, FnNode]\nconst parseFnShorthand: ParseFnShorthand = (tokenStream, position) => {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath)\n\n position += 1\n const [newPosition, exprNode] = parseExpression(tokenStream, position)\n\n let arity = 0\n let percent1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET'\n for (let pos = position + 1; pos < newPosition - 1; pos += 1) {\n const tkn = asToken(tokenStream.tokens[pos], tokenStream.filePath)\n if (tkn.t === TokenType.Name) {\n const match = placeholderRegexp.exec(tkn.v)\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && percent1 === 'WITH_1') || (match[1] && percent1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use % or %1', firstToken.sourceCodeInfo)\n\n percent1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', firstToken.sourceCodeInfo)\n }\n }\n if (tkn.t === TokenType.FnShorthand)\n throw new LitsError('Nested shortcut functions are not allowed', firstToken.sourceCodeInfo)\n }\n\n const mandatoryArguments: string[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && percent1 === 'NAKED')\n mandatoryArguments.push('%')\n else\n mandatoryArguments.push(`%${i}`)\n }\n\n const args: FunctionArguments = {\n b: [],\n m: mandatoryArguments,\n }\n\n const node: FnNode = {\n t: AstNodeType.SpecialExpression,\n n: 'fn',\n p: [],\n o: [\n {\n as: args,\n b: [exprNode],\n a: args.m.length,\n },\n ],\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n\n return [newPosition, node]\n}\n\nconst parseArgument: ParseArgument = (tokenStream, position) => {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n if (tkn.t === TokenType.Name) {\n return [position + 1, { t: AstNodeType.Argument, n: tkn.v, tkn }]\n }\n else if (tkn.t === TokenType.Modifier) {\n const value = tkn.v as ModifierName\n return [position + 1, { t: AstNodeType.Modifier, v: value, tkn: tkn.sourceCodeInfo ? tkn : undefined }]\n }\n else {\n throw new LitsError(`Expected name or modifier token, got ${valueToString(tkn)}.`, tkn.sourceCodeInfo)\n }\n}\n\nfunction parseBindings(tokenStream: TokenStream, position: number): [number, BindingNode[]] {\n let tkn = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Bracket, value: '[' })\n position += 1\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n const bindings: BindingNode[] = []\n let binding: BindingNode\n while (!(tkn.t === TokenType.Bracket && tkn.v === ']')) {\n ;[position, binding] = parseBinding(tokenStream, position)\n bindings.push(binding)\n tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n }\n position += 1\n\n return [position, bindings]\n}\n\nfunction parseBinding(tokenStream: TokenStream, position: number): [number, BindingNode] {\n const firstToken = asToken(tokenStream.tokens[position], tokenStream.filePath, { type: TokenType.Name })\n const name = firstToken.v\n\n position += 1\n let value: AstNode\n ;[position, value] = parseToken(tokenStream, position)\n\n const node: BindingNode = {\n t: AstNodeType.Binding,\n n: name,\n v: value,\n tkn: firstToken.sourceCodeInfo ? firstToken : undefined,\n }\n return [position, node]\n}\n\nfunction parseNormalExpression(tokenStream: TokenStream, position: number): [number, NormalExpressionNode] {\n const [newPosition, fnNode] = parseToken(tokenStream, position)\n\n let params: AstNode[]\n ;[position, params] = parseTokens(tokenStream, newPosition)\n position += 1\n\n if (isExpressionNode(fnNode)) {\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n e: fnNode,\n p: params,\n tkn: fnNode.tkn,\n }\n\n return [position, node]\n }\n\n assertNameNode(fnNode, fnNode.tkn?.sourceCodeInfo)\n const node: NormalExpressionNode = {\n t: AstNodeType.NormalExpression,\n n: fnNode.v,\n p: params,\n tkn: fnNode.tkn,\n }\n\n const builtinExpression = builtin.normalExpressions[node.n]\n\n if (builtinExpression)\n builtinExpression.validate?.(node)\n\n return [position, node]\n}\n\nfunction parseSpecialExpression(tokenStream: TokenStream, position: number): [number, SpecialExpressionNode] {\n const { v: expressionName, sourceCodeInfo } = asToken(\n tokenStream.tokens[position],\n tokenStream.filePath,\n )\n position += 1\n\n const { parse, validate } = asNonUndefined(builtin.specialExpressions[expressionName], sourceCodeInfo)\n\n const [positionAfterParse, node] = parse(tokenStream, position, {\n parseExpression,\n parseTokens,\n parseToken,\n parseBinding,\n parseBindings,\n parseArgument,\n })\n\n validate?.(node)\n\n return [positionAfterParse, node]\n}\n\nexport function parseToken(tokenStream: TokenStream, position: number): [number, AstNode] {\n const tkn = asToken(tokenStream.tokens[position], tokenStream.filePath)\n switch (tkn.t) {\n case TokenType.Number:\n return parseNumber(tokenStream, position)\n case TokenType.String:\n return parseString(tokenStream, position)\n case TokenType.Name:\n return parseName(tokenStream, position)\n case TokenType.ReservedName:\n return parseReservedName(tokenStream, position)\n case TokenType.Bracket:\n if (tkn.v === '(')\n return parseExpression(tokenStream, position)\n else if (tkn.v === '[')\n return parseArrayLitteral(tokenStream, position)\n else if (tkn.v === '{')\n return parseObjectLitteral(tokenStream, position)\n\n break\n case TokenType.RegexpShorthand:\n return parseRegexpShorthand(tokenStream, position)\n case TokenType.FnShorthand:\n return parseFnShorthand(tokenStream, position)\n case TokenType.CollectionAccessor:\n case TokenType.Modifier:\n break\n /* v8 ignore next 2 */\n default:\n assertUnreachable(tkn.t)\n }\n throw new LitsError(`Unrecognized token: ${tkn.t} value=${tkn.v}`, tkn.sourceCodeInfo)\n}\n","import type { TokenStream } from '../tokenizer/interface'\nimport type { Ast, AstNode } from './interface'\nimport { parseToken } from './parsers'\n\nexport function parse(tokenStream: TokenStream): Ast {\n const ast: Ast = {\n b: [],\n }\n\n let position = 0\n let node: AstNode\n while (position < tokenStream.tokens.length) {\n ;[position, node] = parseToken(tokenStream, position)\n ast.b.push(node)\n }\n\n return ast\n}\n","import { TokenType } from '../../constants/constants'\nimport { LitsError } from '../../errors'\nimport { asNonUndefined } from '../../typeGuards'\nimport { assertNumber } from '../../typeGuards/number'\nimport type { SourceCodeInfo, Token, TokenStream } from '../interface'\nimport type { SugarFunction } from '.'\n\nexport const applyCollectionAccessors: SugarFunction = (tokenStream) => {\n let dotTokenIndex = tokenStream.tokens.findIndex(tkn => tkn.t === TokenType.CollectionAccessor)\n while (dotTokenIndex >= 0) {\n applyCollectionAccessor(tokenStream, dotTokenIndex)\n dotTokenIndex = tokenStream.tokens.findIndex(tkn => tkn.t === TokenType.CollectionAccessor)\n }\n return tokenStream\n}\n\nfunction applyCollectionAccessor(tokenStream: TokenStream, position: number) {\n const dotTkn = asNonUndefined(tokenStream.tokens[position])\n const sourceCodeInfo = dotTkn.sourceCodeInfo\n const backPosition = getPositionBackwards(tokenStream, position, sourceCodeInfo)\n checkForward(tokenStream, position, dotTkn, sourceCodeInfo)\n\n tokenStream.tokens.splice(position, 1)\n tokenStream.tokens.splice(backPosition, 0, {\n t: TokenType.Bracket,\n v: '(',\n sourceCodeInfo,\n })\n const nextTkn = asNonUndefined(tokenStream.tokens[position + 1])\n if (dotTkn.v === '.') {\n tokenStream.tokens[position + 1] = {\n t: TokenType.String,\n v: nextTkn.v,\n sourceCodeInfo: nextTkn.sourceCodeInfo,\n }\n }\n else {\n assertNumber(Number(nextTkn.v), sourceCodeInfo, { integer: true, nonNegative: true })\n tokenStream.tokens[position + 1] = {\n t: TokenType.Number,\n v: nextTkn.v,\n sourceCodeInfo: nextTkn.sourceCodeInfo,\n }\n }\n tokenStream.tokens.splice(position + 2, 0, {\n t: TokenType.Bracket,\n v: ')',\n sourceCodeInfo,\n })\n}\n\nfunction getPositionBackwards(tokenStream: TokenStream, position: number, sourceCodeInfo: SourceCodeInfo | undefined) {\n let bracketCount: number | null = null\n if (position <= 0)\n throw new LitsError('Array accessor # must come after a sequence', sourceCodeInfo)\n\n const prevToken = asNonUndefined(tokenStream.tokens[position - 1])\n let openBracket: null | '(' | '[' | '{' = null\n let closeBracket: null | ')' | ']' | '}' = null\n\n if (prevToken.t === TokenType.Bracket) {\n switch (prevToken.v) {\n case ')':\n openBracket = '('\n closeBracket = ')'\n break\n case ']':\n openBracket = '['\n closeBracket = ']'\n break\n case '}':\n openBracket = '{'\n closeBracket = '}'\n break\n default:\n throw new LitsError('# or . must be preceeded by a collection', sourceCodeInfo)\n }\n }\n\n while (bracketCount !== 0) {\n bracketCount = bracketCount === null ? 0 : bracketCount\n position -= 1\n const tkn = asNonUndefined(tokenStream.tokens[position], sourceCodeInfo)\n if (tkn.t === TokenType.Bracket) {\n if (tkn.v === openBracket)\n bracketCount += 1\n\n if (tkn.v === closeBracket)\n bracketCount -= 1\n }\n }\n if (openBracket === '(' && position > 0) {\n const tokenBeforeBracket = asNonUndefined(tokenStream.tokens[position - 1])\n if (tokenBeforeBracket.t === TokenType.FnShorthand)\n throw new LitsError('# or . must NOT be preceeded by shorthand lambda function', sourceCodeInfo)\n }\n return position\n}\n\nfunction checkForward(\n tokenStream: TokenStream,\n position: number,\n dotTkn: Token,\n sourceCodeInfo: SourceCodeInfo | undefined,\n) {\n const tkn = asNonUndefined(tokenStream.tokens[position + 1], sourceCodeInfo)\n\n if (dotTkn.v === '.' && tkn.t !== TokenType.Name)\n throw new LitsError('# as a collection accessor must be followed by an name', sourceCodeInfo)\n\n if (dotTkn.v === '#' && tkn.t !== TokenType.Number)\n throw new LitsError('# as a collection accessor must be followed by an integer', sourceCodeInfo)\n}\n","import type { TokenStream } from '../interface'\nimport { applyCollectionAccessors } from './applyCollectionAccessor'\n\nexport type SugarFunction = (tokenStream: TokenStream) => TokenStream\n\nexport function getSugar(): SugarFunction[] {\n return [applyCollectionAccessors]\n}\n","import { TokenType } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ModifierName } from '../parser/interface'\nimport { reservedNamesRecord } from '../reservedNames'\nimport { asString } from '../typeGuards/string'\nimport type { SourceCodeInfo, TokenDescriptor, Tokenizer } from './interface'\n\nconst NO_MATCH: TokenDescriptor = [0, undefined]\n\n// A name (function or variable) can contain a lot of different characters\n\nexport const nameCharacters = '[@%0-9a-zA-ZàáâãăäāåæćčçèéêĕëēìíîĭïðłñòóôõöőøšùúûüűýÿþÀÁÂÃĂÄĀÅÆĆČÇÈÉÊĔËĒÌÍÎĬÏÐŁÑÒÓÔÕÖŐØŠÙÚÛÜŰÝÞß_^?=!$%<>+*/-]'\n\nconst nameRegExp = new RegExp(`${nameCharacters}`)\nconst whitespaceRegExp = /\\s|,/\n\nexport const skipWhiteSpace: Tokenizer = (input, current) =>\n whitespaceRegExp.test(input[current] as string) ? [1, undefined] : NO_MATCH\n\nexport const skipComment: Tokenizer = (input, current) => {\n if (input[current] === ';') {\n let length = 1\n while (input[current + length] !== '\\n' && current + length < input.length)\n length += 1\n\n if (input[current + length] === '\\n' && current + length < input.length)\n length += 1\n\n return [length, undefined]\n }\n return NO_MATCH\n}\n\nexport const tokenizeLeftParen: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '(', input, position, sourceCodeInfo)\nexport const tokenizeRightParen: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, ')', input, position, sourceCodeInfo)\nexport const tokenizeLeftBracket: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '[', input, position, sourceCodeInfo)\nexport const tokenizeRightBracket: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, ']', input, position, sourceCodeInfo)\nexport const tokenizeLeftCurly: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '{', input, position, sourceCodeInfo)\nexport const tokenizeRightCurly: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizeCharacter(TokenType.Bracket, '}', input, position, sourceCodeInfo)\n\nexport const tokenizeString: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = ''\n let length = 1\n let char = input[position + length]\n let escape = false\n while (char !== '\"' || escape) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, sourceCodeInfo)\n\n length += 1\n if (escape) {\n escape = false\n if (char === '\"' || char === '\\\\') {\n value += char\n }\n else {\n value += '\\\\'\n value += char\n }\n }\n else {\n if (char === '\\\\')\n escape = true\n else\n value += char\n }\n char = input[position + length]\n }\n return [length + 1, { t: TokenType.String, v: value, sourceCodeInfo }]\n}\n\nexport const tokenizeCollectionAccessor: Tokenizer = (input, position, sourceCodeInfo) => {\n const char = input[position]\n if (char !== '.' && char !== '#')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.CollectionAccessor,\n v: char,\n sourceCodeInfo,\n },\n ]\n}\n\nexport const tokenizeSymbolString: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input[position] !== ':')\n return NO_MATCH\n\n let value = ''\n let length = 1\n let char = input[position + length]\n while (char && nameRegExp.test(char)) {\n length += 1\n value += char\n char = input[position + length]\n }\n if (length === 1)\n return NO_MATCH\n\n return [length, { t: TokenType.String, v: value, sourceCodeInfo }]\n}\n\nexport const tokenizeRegexpShorthand: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1, sourceCodeInfo)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n const options: Record<string, boolean> = {}\n while (input[position] === 'g' || input[position] === 'i') {\n if (input[position] === 'g') {\n if (options.g)\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, sourceCodeInfo)\n\n length += 1\n options.g = true\n }\n else {\n if (options.i)\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, sourceCodeInfo)\n\n length += 1\n options.i = true\n }\n position += 1\n }\n\n if (nameRegExp.test(input[position] ?? ''))\n throw new LitsError(`Unexpected regexp option \"${input[position]}\" at position ${position}.`, sourceCodeInfo)\n\n return [\n length,\n {\n t: TokenType.RegexpShorthand,\n v: token.v,\n o: options,\n sourceCodeInfo,\n },\n ]\n}\n\nexport const tokenizeFnShorthand: Tokenizer = (input, position, sourceCodeInfo) => {\n if (input.slice(position, position + 2) !== '#(')\n return NO_MATCH\n\n return [\n 1,\n {\n t: TokenType.FnShorthand,\n v: '#',\n sourceCodeInfo,\n },\n ]\n}\n\nconst endOfNumberRegExp = /\\s|[)\\]},#]/\nconst decimalNumberRegExp = /[0-9]/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-fA-F]/\nconst binaryNumberRegExp = /[0-1]/\nconst firstCharRegExp = /[0-9.-]/\nexport const tokenizeNumber: Tokenizer = (input, position, sourceCodeInfo) => {\n let type: 'decimal' | 'octal' | 'hex' | 'binary' = 'decimal'\n const firstChar = input[position] as string\n if (!firstCharRegExp.test(firstChar))\n return NO_MATCH\n\n let hasDecimals = firstChar === '.'\n\n let i: number\n for (i = position + 1; i < input.length; i += 1) {\n const char = asString(input[i], sourceCodeInfo, { char: true })\n if (endOfNumberRegExp.test(char))\n break\n\n if (char === '.') {\n const nextChar = input[i + 1]\n if (typeof nextChar === 'string' && !decimalNumberRegExp.test(nextChar))\n break\n }\n if (i === position + 1 && firstChar === '0') {\n if (char === 'b' || char === 'B') {\n type = 'binary'\n continue\n }\n if (char === 'o' || char === 'O') {\n type = 'octal'\n continue\n }\n if (char === 'x' || char === 'X') {\n type = 'hex'\n continue\n }\n }\n if (type === 'decimal' && hasDecimals) {\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'binary') {\n if (!binaryNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'octal') {\n if (!octalNumberRegExp.test(char))\n return NO_MATCH\n }\n else if (type === 'hex') {\n if (!hexNumberRegExp.test(char))\n return NO_MATCH\n }\n else {\n if (char === '.') {\n hasDecimals = true\n continue\n }\n if (!decimalNumberRegExp.test(char))\n return NO_MATCH\n }\n }\n\n const length = i - position\n const value = input.substring(position, i)\n if ((type !== 'decimal' && length <= 2) || value === '.' || value === '-')\n return NO_MATCH\n\n return [length, { t: TokenType.Number, v: value, sourceCodeInfo }]\n}\n\nexport const tokenizeReservedName: Tokenizer = (input, position, sourceCodeInfo) => {\n for (const [reservedName, { forbidden }] of Object.entries(reservedNamesRecord)) {\n const length = reservedName.length\n const nextChar = input[position + length]\n if (nextChar && nameRegExp.test(nextChar))\n continue\n\n const name = input.substr(position, length)\n if (name === reservedName) {\n if (forbidden)\n throw new LitsError(`${name} is forbidden!`, sourceCodeInfo)\n\n return [length, { t: TokenType.ReservedName, v: reservedName, sourceCodeInfo }]\n }\n }\n return NO_MATCH\n}\n\nexport const tokenizeName: Tokenizer = (input, position, sourceCodeInfo) =>\n tokenizePattern(TokenType.Name, nameRegExp, input, position, sourceCodeInfo)\n\nexport const tokenizeModifier: Tokenizer = (input, position, sourceCodeInfo) => {\n const modifiers: ModifierName[] = ['&', '&let', '&when', '&while']\n for (const modifier of modifiers) {\n const length = modifier.length\n const charAfterModifier = input[position + length]\n if (input.substr(position, length) === modifier && (!charAfterModifier || !nameRegExp.test(charAfterModifier))) {\n const value: ModifierName = modifier\n return [length, { t: TokenType.Modifier, v: value, sourceCodeInfo }]\n }\n }\n return NO_MATCH\n}\n\nfunction tokenizeCharacter(\n type: TokenType,\n value: string,\n input: string,\n position: number,\n sourceCodeInfo?: SourceCodeInfo,\n): TokenDescriptor {\n if (value === input[position])\n return [1, { t: type, v: value, sourceCodeInfo }]\n else\n return NO_MATCH\n}\n\nfunction tokenizePattern(\n type: TokenType,\n pattern: RegExp,\n input: string,\n position: number,\n sourceCodeInfo?: SourceCodeInfo,\n): TokenDescriptor {\n let char = input[position]\n let length = 0\n let value = ''\n\n if (!char || !pattern.test(char))\n return NO_MATCH\n\n while (char && pattern.test(char)) {\n value += char\n length += 1\n char = input[position + length]\n }\n\n return [length, { t: type, v: value, sourceCodeInfo }]\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo, Token, TokenStream, TokenizeParams, Tokenizer } from './interface'\nimport { getSugar } from './sugar'\nimport {\n skipComment,\n skipWhiteSpace,\n tokenizeCollectionAccessor,\n tokenizeFnShorthand,\n tokenizeLeftBracket,\n tokenizeLeftCurly,\n tokenizeLeftParen,\n tokenizeModifier,\n tokenizeName,\n tokenizeNumber,\n tokenizeRegexpShorthand,\n tokenizeReservedName,\n tokenizeRightBracket,\n tokenizeRightCurly,\n tokenizeRightParen,\n tokenizeString,\n tokenizeSymbolString,\n} from './tokenizers'\n\n// All tokenizers, order matters!\nconst tokenizers: Tokenizer[] = [\n skipComment,\n skipWhiteSpace,\n tokenizeLeftParen,\n tokenizeRightParen,\n tokenizeLeftBracket,\n tokenizeRightBracket,\n tokenizeLeftCurly,\n tokenizeRightCurly,\n tokenizeString,\n tokenizeSymbolString,\n tokenizeNumber,\n tokenizeReservedName,\n tokenizeName,\n tokenizeModifier,\n tokenizeRegexpShorthand,\n tokenizeFnShorthand,\n tokenizeCollectionAccessor,\n]\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substr(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nexport function tokenize(input: string, params: TokenizeParams): TokenStream {\n const tokens: Token[] = []\n let position = 0\n let tokenized = false\n while (position < input.length) {\n tokenized = false\n\n // Loop through all tokenizer until one matches\n const sourceCodeInfo: SourceCodeInfo | undefined = params.debug\n ? createSourceCodeInfo(input, position, params.filePath)\n : undefined\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position, sourceCodeInfo)\n\n // tokenizer matched\n if (nbrOfCharacters > 0) {\n tokenized = true\n position += nbrOfCharacters\n if (token)\n tokens.push(token)\n\n break\n }\n }\n if (!tokenized)\n throw new LitsError(`Unrecognized character '${input[position]}'.`, sourceCodeInfo)\n }\n\n const tokenStream = {\n tokens,\n filePath: params.filePath,\n }\n\n applySugar(tokenStream)\n\n return tokenStream\n}\n\nfunction applySugar(tokenStream: TokenStream) {\n const sugar = getSugar()\n sugar.forEach(sugarFn => sugarFn(tokenStream))\n}\n","import type { Ast } from '../parser/interface'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import { analyzeAst } from '../analyze'\nimport type { AnalyzeResult } from '../analyze/interface'\nimport { builtin, normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { FunctionType } from '../constants/constants'\nimport { evaluate } from '../evaluator'\nimport { ContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport { parse } from '../parser'\nimport type { Ast, LitsFunction, NativeJsFunction } from '../parser/interface'\nimport { tokenize } from '../tokenizer'\nimport type { TokenStream } from '../tokenizer/interface'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n [key: string]: unknown\n}\n\nexport interface LitsParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: LitsParams = {}): unknown {\n const ast = this.generateAst(program, params.filePath)\n const result = this.evaluate(ast, params)\n return result\n }\n\n public context(program: string, params: LitsParams = {}): Context {\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params.filePath)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public analyze(program: string): AnalyzeResult {\n const params: LitsParams = {}\n const contextStack = createContextStack(params)\n const ast = this.generateAst(program, params.filePath)\n\n return analyzeAst(ast.b, contextStack, builtin)\n }\n\n public tokenize(program: string, filePath?: string): TokenStream {\n return tokenize(program, { debug: this.debug, filePath })\n }\n\n public parse(tokenStream: TokenStream): Ast {\n return parse(tokenStream)\n }\n\n private evaluate(ast: Ast, params: LitsParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: LitsParams = {}): Any {\n const fnName = 'FN_2eb7b316-471c-5bfa-90cb-d3dfd9164a59'\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(' ')\n const program = `(${fnName} ${paramsString})`\n const ast = this.generateAst(program, params.filePath)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateAst(untrimmedProgram: string, filePath?: string): Ast {\n const program = untrimmedProgram.trim()\n\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, filePath)\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n\nexport function createContextStack(params: LitsParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStack({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n t: FunctionType.NativeJsFunction,\n f: jsFunction,\n n: name,\n __fn: true,\n }\n return acc\n }, {}),\n })\n return contextStack\n}\n"],"names":["AstNodeType","TokenType","FunctionType","isLitsFunction","isUnknownRecord","isToken","isAstNode"],"mappings":"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","x_google_ignoreList":[1]}
|