@mojir/lits 2.1.2 → 2.1.3
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/dist/cli/cli.js +174 -37
- package/dist/cli/src/builtin/interface.d.ts +1 -0
- package/dist/cli/src/constants/constants.d.ts +1 -1
- package/dist/cli/src/evaluator/ContextStack.d.ts +3 -2
- package/dist/cli/src/evaluator/functionExecutors.d.ts +1 -1
- package/dist/cli/src/parser/types.d.ts +6 -1
- package/dist/cli/src/tokenizer/token.d.ts +2 -2
- package/dist/index.esm.js +173 -36
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +173 -36
- package/dist/index.js.map +1 -1
- package/dist/lits.iife.js +173 -36
- package/dist/lits.iife.js.map +1 -1
- package/dist/src/builtin/interface.d.ts +1 -0
- package/dist/src/constants/constants.d.ts +1 -1
- package/dist/src/evaluator/ContextStack.d.ts +3 -2
- package/dist/src/evaluator/functionExecutors.d.ts +1 -1
- package/dist/src/parser/types.d.ts +6 -1
- package/dist/src/tokenizer/token.d.ts +2 -2
- package/dist/testFramework.esm.js +173 -36
- package/dist/testFramework.esm.js.map +1 -1
- package/dist/testFramework.js +173 -36
- package/dist/testFramework.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testFramework.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/builtin/specialExpressionTypes.ts","../src/constants/constants.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/getUndefinedSymbols/index.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/builtin/specialExpressions/defined.ts","../src/parser/types.ts","../src/builtin/bindingNode.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/do.ts","../src/tokenizer/reservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/array.ts","../src/builtin/specialExpressions/object.ts","../src/builtin/index.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/tokenizer/operators.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/tokenize.ts","../src/tokenizer/token.ts","../src/tokenizer/minifyTokenStream.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/parser/Parser.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../src/testFramework/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/token'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n const filePathLine = sourceCodeInfo?.filePath ? `\\n${sourceCodeInfo.filePath}` : ''\n const codeLine = sourceCodeInfo?.code ? `\\n${sourceCodeInfo.code}` : ''\n const codeMarker = sourceCodeInfo && codeLine ? `\\n${getCodeMarker(sourceCodeInfo)}` : ''\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo: SourceCodeInfo | undefined) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${fn}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export const specialExpressionTypes = {\n '??': 0,\n '&&': 1,\n '||': 2,\n 'array': 3,\n 'cond': 4,\n '0_def': 5,\n 'defined?': 6,\n '0_defn': 7,\n 'do': 8,\n 'doseq': 9,\n '0_fn': 10,\n 'for': 11,\n 'function': 12,\n 'if': 13,\n 'let': 14,\n 'loop': 15,\n 'object': 16,\n 'recur': 17,\n 'switch': 18,\n 'throw': 19,\n 'try': 20,\n 'unless': 21,\n} as const\n\nexport type SpecialExpressionTypes = typeof specialExpressionTypes\n","export const NodeTypes = {\n Number: 1,\n String: 2,\n NormalExpression: 3,\n SpecialExpression: 4,\n UserDefinedSymbol: 5,\n NormalBuiltinSymbol: 6,\n SpecialBuiltinSymbol: 7,\n ReservedSymbol: 8,\n Binding: 9,\n Spread: 10,\n} as const\n\nconst NodeTypesSet = new Set(Object.values(NodeTypes))\n\nexport type NodeType = typeof NodeTypes[keyof typeof NodeTypes]\n\nexport function getNodeTypeName(type: NodeType): keyof typeof NodeTypes {\n return Object.keys(NodeTypes).find(key => NodeTypes[key as keyof typeof NodeTypes] === type) as keyof typeof NodeTypes\n}\n\n// TODO, is this needed?\nexport function isNodeType(type: unknown): type is NodeType {\n return typeof type === 'number' && NodeTypesSet.has(type as NodeType)\n}\n\nconst functionTypes = [\n 'UserDefined',\n 'Partial',\n 'Comp',\n 'Constantly',\n 'Juxt',\n 'Complement',\n 'EveryPred',\n 'SomePred',\n 'Fnull',\n 'Builtin',\n 'NativeJsFunction',\n] as const\n\nconst functionTypeSet = new Set(functionTypes)\n\nexport type FunctionType = typeof functionTypes[number]\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'string' && functionTypeSet.has(type as FunctionType)\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { getNodeTypeName, isFunctionType, isNodeType } from '../../constants/constants'\nimport type { LitsFunction, Node } from '../../parser/types'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (func === null || typeof func !== 'object')\n return false\n\n return FUNCTION_SYMBOL in func && 'functionType' in func && isFunctionType(func.functionType)\n}\n\nfunction isNode(value: unknown): value is Node {\n if (!Array.isArray(value) || value.length < 2)\n return false\n return isNodeType(value[0])\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isNode(value))\n return `${getNodeTypeName(value[0])}-node`\n\n if (value === null)\n return 'null'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo: SourceCodeInfo | undefined): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { NodeTypes } from '../constants/constants'\nimport type {\n ExpressionNode,\n Node,\n NormalBuiltinSymbolNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SpecialBuiltinSymbolNode,\n SpreadNode,\n SymbolNode,\n UserDefinedSymbolNode,\n} from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isSymbolNode(node: Node): node is SymbolNode {\n const nodeType = node[0]\n return NodeTypes.UserDefinedSymbol === nodeType\n || NodeTypes.NormalBuiltinSymbol === nodeType\n || NodeTypes.SpecialBuiltinSymbol === nodeType\n}\nexport function asSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is SymbolNode {\n if (!isSymbolNode(node))\n throw getAssertionError('SymbolNode', node, sourceCodeInfo)\n}\n\nexport function isUserDefinedSymbolNode(node: Node): node is UserDefinedSymbolNode {\n return NodeTypes.UserDefinedSymbol === node[0]\n}\nexport function asUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): UserDefinedSymbolNode {\n assertUserDefinedSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is UserDefinedSymbolNode {\n if (!isUserDefinedSymbolNode(node))\n throw getAssertionError('UserDefinedSymbolNode', node, sourceCodeInfo)\n}\n\nexport function isNormalBuiltinSymbolNode(node: Node): node is NormalBuiltinSymbolNode {\n return NodeTypes.NormalBuiltinSymbol === node[0]\n}\n\nexport function isSpecialBuiltinSymbolNode(node: Node): node is SpecialBuiltinSymbolNode {\n return NodeTypes.SpecialBuiltinSymbol === node[0]\n}\n\nexport function isNormalExpressionNode(node: Node): node is NormalExpressionNode {\n return node[0] === NodeTypes.NormalExpression\n}\nexport function asNormalExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNode(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNode {\n if (!isNormalExpressionNode(node))\n throw getAssertionError('NormalExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(node: Node): node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNode(node)) {\n return false\n }\n return isSymbolNode(node[1][0])\n}\nexport function asNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(node))\n throw getAssertionError('NormalExpressionNodeWithName', node, sourceCodeInfo)\n}\n\nexport function isExpressionNode(node: Node): node is ExpressionNode {\n return isNormalExpressionNode(node)\n || node[0] === NodeTypes.SpecialExpression\n || node[0] === NodeTypes.Number\n || node[0] === NodeTypes.String\n}\nexport function asExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is ExpressionNode {\n if (!isExpressionNode(node))\n throw getAssertionError('ExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isSpreadNode(node: Node): node is SpreadNode {\n return node[0] === NodeTypes.Spread\n}\n","import type { Builtin } from '../builtin/interface'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { EvaluateNode } from '../evaluator/interface'\nimport type { Ast, Node, NormalExpressionNode, SpecialExpressionNode, SpreadNode, UserDefinedSymbolNode } from '../parser/types'\nimport { isNormalExpressionNodeWithName, isUserDefinedSymbolNode } from '../typeGuards/astNode'\n\nexport type UndefinedSymbols = Set<string>\n\nexport const getUndefinedSymbols: GetUndefinedSymbols = (ast, contextStack, builtin, evaluateNode) => {\n const nodes: Node[] = Array.isArray(ast)\n ? ast\n : [[NodeTypes.SpecialExpression, [specialExpressionTypes.do, ast.body]] satisfies DoNode]\n\n const unresolvedSymbols = new Set<string>()\n\n for (const subNode of nodes) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)\n ?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n}\n\nexport type GetUndefinedSymbols = (ast: Ast | Node[], contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode) => UndefinedSymbols\n\nfunction findUnresolvedSymbolsInNode(node: Node, contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode): UndefinedSymbols | null {\n const nodeType = node[0]\n switch (nodeType) {\n case NodeTypes.UserDefinedSymbol: {\n const symbolNode = node as UserDefinedSymbolNode\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n return new Set([symbolNode[1]])\n\n return null\n }\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.String:\n case NodeTypes.Number:\n case NodeTypes.ReservedSymbol:\n case NodeTypes.Binding:\n return null\n case NodeTypes.NormalExpression: {\n const normalExpressionNode = node as NormalExpressionNode\n const unresolvedSymbols = new Set<string>()\n if (isNormalExpressionNodeWithName(normalExpressionNode)) {\n const [, [symbolNode]] = normalExpressionNode\n if (isUserDefinedSymbolNode(symbolNode)) {\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n unresolvedSymbols.add(symbolNode[1])\n }\n }\n else {\n const [, [expressionNode]] = normalExpressionNode\n findUnresolvedSymbolsInNode(expressionNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n for (const subNode of normalExpressionNode[1][1]) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n }\n case NodeTypes.SpecialExpression: {\n const specialExpressionNode = node as SpecialExpressionNode\n const specialExpressionType = specialExpressionNode[1][0]\n const specialExpression = builtin.specialExpressions[specialExpressionType]\n\n const castedGetUndefinedSymbols = specialExpression.getUndefinedSymbols as Function\n\n return castedGetUndefinedSymbols(specialExpressionNode, contextStack, {\n getUndefinedSymbols,\n builtin,\n evaluateNode,\n }) as UndefinedSymbols\n }\n case NodeTypes.Spread:\n return findUnresolvedSymbolsInNode((node as SpreadNode)[1], contextStack, builtin, evaluateNode)\n\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unhandled node type: ${nodeType satisfies never}`)\n }\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n paramCount: 2,\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n paramCount: 2,\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n paramCount: 2,\n },\n '~': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n paramCount: 1,\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-and-not': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '^': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n paramCount: 2,\n },\n 'bit-set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n paramCount: 2,\n },\n 'bit-clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n paramCount: 2,\n },\n 'bit-test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n paramCount: 2,\n },\n}\n","import type { Count } from '../builtin/interface'\nimport { getNodeTypeName } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { NormalExpressionNodeWithName } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertNumberOfParams(count: Count, node: NormalExpressionNodeWithName): void {\n const length = node[1][1].length\n if (typeof count === 'number') {\n if (length !== count) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n else {\n const { min, max, even, odd } = count\n if (even) {\n const name = getNodeTypeName(node[0])\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an even number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (odd) {\n if (length % 2 !== 1) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an odd number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (typeof min === 'number' && length < min) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n\n if (typeof max === 'number' && length > max) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nexport function canBeOperator(count: Count): boolean {\n if (typeof count === 'number') {\n return count === 2\n }\n\n if (count.odd) {\n return false\n }\n\n if (typeof count.max === 'number' && count.max < 2) {\n return false\n }\n\n if (typeof count.min === 'number' && count.min > 2) {\n return false\n }\n\n return true\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { LitsFunction, NativeJsFunction, NormalBuiltinFunction, UserDefinedFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.functionType === 'UserDefined'\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.functionType === 'NativeJsFunction'\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is NormalBuiltinFunction {\n return isUnknownRecord(value) && value.functionType === 'Builtin'\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Coll, Obj } from '../interface'\nimport type { NativeJsFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString, assertStringOrNumber } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { LitsError } from '../errors'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\nexport function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a < b ? -1 : a > b ? 1 : 0\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.sign((a) - (b))\n }\n throw new LitsError(`Cannot compare values of different types: ${typeof a} and ${typeof b}`, sourceCodeInfo)\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n nativeFn: {\n fn,\n },\n name,\n functionType: 'NativeJsFunction',\n }\n}\n\nexport function joinSets<T>(...results: Set<T>[]): Set<T> {\n const result = new Set<T>()\n for (const symbols of results)\n symbols.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addToSet<T>(target: Set<T>, source: Set<T>): void {\n source.forEach(symbol => target.add(symbol))\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { cloneColl, collHasKey, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asAny, asColl, assertAny, assertColl, assertObj, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString, isStringOrNumber } from '../../../typeGuards/string'\nimport type { LitsFunction } from '../../../parser/types'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // null behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isString(coll)) {\n assertString(key, sourceCodeInfo)\n return coll.includes(key)\n }\n if (isSeq(coll)) {\n assertAny(key, sourceCodeInfo)\n return !!coll.find(elem => deepEqual(asAny(elem), key, sourceCodeInfo))\n }\n assertString(key, sourceCodeInfo)\n return key in coll\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n '++': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (!isNumber(params[0])) {\n assertColl(params[0], sourceCodeInfo)\n }\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isStringOrNumber(params[0])) {\n return params.reduce((result: string, s) => {\n assertStringOrNumber(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n aliases: ['concat'],\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { collHasKey, compare, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }) => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n return seq.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return seq\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 paramCount: 2,\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last-index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findLastIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'splice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, start, deleteCount, ...rest] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { integer: true })\n assertNumber(deleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const from = start < 0 ? seq.length + start : start\n\n if (Array.isArray(seq)) {\n return [...seq.slice(0, from), ...rest, ...seq.slice(from + deleteCount)]\n }\n\n rest.forEach(elem => assertString(elem, sourceCodeInfo))\n return `${seq.substring(0, from)}${rest.join('')}${seq.substring(from + deleteCount)}`\n },\n paramCount: { min: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n\n if (Array.isArray(input)) {\n const result: Any[] = []\n for (const item of input) {\n assertAny(item, sourceCodeInfo)\n if (!result.some(existingItem => deepEqual(existingItem, item, sourceCodeInfo))) {\n result.push(item)\n }\n }\n return result\n }\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove-at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo, { integer: true })\n assertSeq(input, sourceCodeInfo)\n\n const at = index < 0 ? input.length + index : index\n if (at < 0 || at >= input.length)\n return input\n\n if (Array.isArray(input)) {\n return input.filter((_, i) => i !== at)\n }\n return `${input.substring(0, at)}${input.substring(at + 1)}`\n },\n paramCount: 2,\n },\n 'split-at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { integer: true })\n assertSeq(seq, sourceCodeInfo)\n\n const at = pos < 0 ? seq.length + pos : pos\n return [seq.slice(0, at), seq.slice(at)]\n },\n paramCount: 2,\n },\n\n 'split-with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends-with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return deepEqual(asAny(str.at(-1), sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'starts-with?': {\n evaluate: ([seq, search], sourceCodeInfo): boolean => {\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n assertString(search, sourceCodeInfo)\n return seq.startsWith(search)\n }\n\n return deepEqual(asAny(seq[0], sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n return seq.split('')\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n aliases: ['rem'],\n },\n\n '√': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n aliases: ['sqrt'],\n },\n\n '∛': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n aliases: ['cbrt'],\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '=': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n aliases: ['!='],\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '≥': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['>='],\n },\n '≤': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['<='],\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first, null, 2)} to deep equal ${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be null.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split-lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/types'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Partial',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n }\n },\n paramCount: {},\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n 'juxt': {\n evaluate: (params, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Juxt',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Complement',\n function: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n 'every-pred': {\n evaluate: (params, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'EveryPred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'some-pred': {\n evaluate: (params, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'SomePred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'fnull': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNullFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Fnull',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nconst expressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n\nconst aliases: BuiltinNormalExpressions = {}\n\nObject.values(expressions).forEach((normalExpression) => {\n normalExpression.aliases?.forEach((alias) => {\n aliases[alias] = normalExpression\n })\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n ...aliases,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import type { SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { assertSymbolNode, isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefinedNode = SpecialExpressionNode<[typeof specialExpressionTypes['defined?'], SymbolNode]>\n\nexport const definedSpecialExpression: BuiltinSpecialExpression<boolean, DefinedNode> = {\n paramCount: 1,\n evaluate: (node, contextStack) => {\n const symbolNode = node[1][1]\n assertSymbolNode(symbolNode)\n if (!isUserDefinedSymbolNode(symbolNode)) {\n return true // If the symbol is not a user defined symbol, it is defined. normal or special builtin\n }\n const lookUpResult = contextStack.lookUp(symbolNode)\n return lookUpResult !== null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { JsFunction } from '../Lits/Lits'\nimport type { SpecialExpressionType } from '../builtin'\nimport type { FunctionType, NodeType, NodeTypes } from '../constants/constants'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Arr } from '../interface'\nimport type { ReservedSymbol } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo, Token } from '../tokenizer/token'\nimport type { FUNCTION_SYMBOL, REGEXP_SYMBOL } from '../utils/symbols'\n\nexport interface ParseState {\n position: number\n}\n\nexport type EvaluatedFunction = [BindingTarget[], Node[], Context]\n\ninterface GenericLitsFunction {\n [FUNCTION_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n functionType: FunctionType\n}\n\nexport interface RegularExpression {\n [REGEXP_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n s: string\n f: string\n}\n\nexport interface NativeJsFunction extends GenericLitsFunction {\n functionType: 'NativeJsFunction'\n name: string | undefined // name\n nativeFn: JsFunction\n}\n\nexport interface UserDefinedFunction extends GenericLitsFunction {\n functionType: 'UserDefined'\n name: string | undefined // name\n evaluatedfunction: EvaluatedFunction\n}\n\nexport interface PartialFunction extends GenericLitsFunction {\n functionType: 'Partial'\n function: Any\n params: Arr\n}\n\nexport interface CompFunction extends GenericLitsFunction {\n functionType: 'Comp'\n params: Arr\n}\n\nexport interface ConstantlyFunction extends GenericLitsFunction {\n functionType: 'Constantly'\n value: Any\n}\n\nexport interface JuxtFunction extends GenericLitsFunction {\n functionType: 'Juxt'\n params: Arr\n}\n\nexport interface ComplementFunction extends GenericLitsFunction {\n functionType: 'Complement'\n function: Any\n}\n\nexport interface EveryPredFunction extends GenericLitsFunction {\n functionType: 'EveryPred'\n params: Arr\n}\n\nexport interface SomePredFunction extends GenericLitsFunction {\n functionType: 'SomePred'\n params: Arr\n}\n\nexport interface FNullFunction extends GenericLitsFunction {\n functionType: 'Fnull'\n function: Any\n params: Arr\n}\n\nexport interface NormalBuiltinFunction extends GenericLitsFunction {\n functionType: 'Builtin'\n normalBuitinSymbolType: number\n}\n\nexport type LitsFunction =\n | NativeJsFunction\n | UserDefinedFunction\n | NormalBuiltinFunction\n | PartialFunction\n | CompFunction\n | ConstantlyFunction\n | JuxtFunction\n | ComplementFunction\n | EveryPredFunction\n | SomePredFunction\n | FNullFunction\n\nexport type LitsFunctionType = LitsFunction['functionType']\n\nexport type DebugData = {\n token: Token\n nameToken?: Token\n}\nexport type Node<T extends NodeType = NodeType, Payload = unknown> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type ExpressionNode = NormalExpressionNode | SpecialExpressionNode | NumberNode | StringNode\n\nexport type SpreadNode = Node<typeof NodeTypes.Spread, Node> // Payload should be array or object depending on context\nexport type NumberNode = Node<typeof NodeTypes.Number, number>\nexport type StringNode = Node<typeof NodeTypes.String, string>\nexport type UserDefinedSymbolNode = Node<typeof NodeTypes.UserDefinedSymbol, string>\nexport type NormalBuiltinSymbolNode = Node<typeof NodeTypes.NormalBuiltinSymbol, number>\nexport type SpecialBuiltinSymbolNode = Node<typeof NodeTypes.SpecialBuiltinSymbol, SpecialExpressionType>\nexport type SymbolNode = UserDefinedSymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode\nexport type ReservedSymbolNode = Node<typeof NodeTypes.ReservedSymbol, ReservedSymbol>\nexport type SpecialExpressionNode<T extends [SpecialExpressionType, ...unknown[]] = [SpecialExpressionType, ...unknown[]]> = Node<typeof NodeTypes.SpecialExpression, T> // [name, params]\n\nexport type NormalExpressionNodeWithName = Node<typeof NodeTypes.NormalExpression, [NormalBuiltinSymbolNode | UserDefinedSymbolNode, Node[]]> // [params, name]\nexport type NormalExpressionNodeExpression = Node<typeof NodeTypes.NormalExpression, [Node, Node[]]> // [name, node as function] node can be string number object or array\nexport type NormalExpressionNode = NormalExpressionNodeWithName | NormalExpressionNodeExpression\nexport const bindingTargetTypes = {\n symbol: 11,\n rest: 12,\n object: 13,\n array: 14,\n} as const\n\nexport type BindingTargetType = typeof bindingTargetTypes[keyof typeof bindingTargetTypes]\n\ntype GenericTarget<T extends BindingTargetType, Payload extends unknown[]> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type SymbolBindingTarget = GenericTarget<typeof bindingTargetTypes.symbol, [SymbolNode, Node | undefined]>\nexport type RestBindingTarget = GenericTarget<typeof bindingTargetTypes.rest, [string, Node | undefined]>\nexport type ObjectBindingTarget = GenericTarget<typeof bindingTargetTypes.object, [Record<string, BindingTarget>, Node | undefined]>\nexport type ArrayBindingTarget = GenericTarget<typeof bindingTargetTypes.array, [(BindingTarget | null)[], Node | undefined]>\n\nexport type BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget\n\nexport type BindingNode = Node<typeof NodeTypes.Binding, [BindingTarget, Node]> // [target, value]\n\ntype AstBody = Node[]\nexport interface Ast {\n body: AstBody // body\n hasDebugData: boolean\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport { type BindingTarget, type Node, type RestBindingTarget, type UserDefinedSymbolNode, bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { assertUnknownRecord } from '../typeGuards'\nimport { assertArray } from '../typeGuards/array'\nimport { asAny, assertAny } from '../typeGuards/lits'\n\nexport function walkDefaults(\n bindingTarget: BindingTarget,\n onDefault: (Node: Node) => void,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n Object.values(bindingTarget[1][0]).forEach((element) => {\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n })\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n }\n }\n}\n\nexport function evalueateBindingNodeValues(\n target: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n): Record<string, Any> {\n const sourceCodeInfo = target[2]\n const record: Record<string, Any> = {}\n createRecord(target, value, evaluate, sourceCodeInfo, record)\n return record\n}\n\nfunction createRecord(\n bindingTarget: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n sourceCodeInfo: SourceCodeInfo | undefined,\n record: Record<string, Any>,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n assertUnknownRecord(value, sourceCodeInfo)\n const capturedKeys = new Set<string>()\n let restElement: RestBindingTarget | undefined\n Object.entries(bindingTarget[1][0]).forEach(([key, element]) => {\n if (element[0] === bindingTargetTypes.rest) {\n restElement = element\n return\n }\n capturedKeys.add(key)\n const val = (value[key] !== undefined ? value[key] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n })\n if (restElement) {\n const restValues = Object.entries(value)\n .filter(([key]) => !capturedKeys.has(key))\n .reduce((acc: Record<string, Any>, [key, val]) => {\n acc[key] = asAny(val)\n return acc\n }, {})\n\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n let restIndex: number | null = null\n assertArray(value, sourceCodeInfo)\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[0] === bindingTargetTypes.rest) {\n restIndex = index\n break\n }\n const val = (value[index] !== undefined ? value[index] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n }\n if (restIndex !== null) {\n const restValues = value.slice(restIndex)\n const restElement = bindingTarget[1][0][restIndex]! as RestBindingTarget\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.rest) {\n record[bindingTarget[1][0]] = asAny(value)\n }\n else {\n record[(bindingTarget[1][0] as UserDefinedSymbolNode)[1]] = asAny(value)\n }\n}\n\nexport function getAllBindingTargetNames(bindingTarget: BindingTarget): Record<string, true> {\n const names: Record<string, true> = {}\n getNamesFromBindingTarget(bindingTarget, names)\n return names\n}\n\nfunction getNamesFromBindingTarget(target: BindingTarget | null, names: Record<string, true>): void {\n if (target === null) {\n return\n }\n if (target[0] === bindingTargetTypes.array) {\n for (const element of target[1][0]) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.object) {\n for (const element of Object.values(target[1][0])) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.rest) {\n if (names[target[1][0]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0]] = true\n }\n else {\n if (names[target[1][0][1]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0][1]] = true\n }\n}\n","import type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_def'], BindingNode]> // binding, value\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n paramCount: 2,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingNodeValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.exportValues(values)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target))\n return bindingResult\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DoNode = SpecialExpressionNode<[typeof specialExpressionTypes['do'], Node[]]>\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node[1][1])\n result = evaluateNode(form, newContextStack)\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n return getUndefinedSymbols(node[1][1], contextStack.create({}), builtin, evaluateNode)\n },\n}\n","import type { Any } from '../interface'\n\nconst nonNumberReservedSymbolRecord = {\n true: true,\n false: false,\n null: null,\n then: null,\n else: null,\n end: null,\n case: null,\n each: null,\n in: null,\n when: null,\n while: null,\n catch: null,\n function: null,\n export: null,\n as: null,\n} as const satisfies Record<string, Any>\n\nconst phi = (1 + Math.sqrt(5)) / 2\nexport const numberReservedSymbolRecord = {\n 'E': Math.E,\n '-E': -Math.E,\n 'ε': Math.E,\n '-ε': -Math.E,\n 'PI': Math.PI,\n '-PI': -Math.PI,\n 'π': Math.PI,\n '-π': -Math.PI,\n 'PHI': phi,\n '-PHI': -phi,\n 'φ': phi,\n '-φ': -phi,\n 'POSITIVE_INFINITY': Number.POSITIVE_INFINITY,\n '∞': Number.POSITIVE_INFINITY,\n 'NEGATIVE_INFINITY': Number.NEGATIVE_INFINITY,\n '-∞': Number.NEGATIVE_INFINITY,\n 'MAX_SAFE_INTEGER': Number.MAX_SAFE_INTEGER,\n 'MIN_SAFE_INTEGER': Number.MIN_SAFE_INTEGER,\n 'MAX_VALUE': Number.MAX_VALUE,\n 'MIN_VALUE': Number.MIN_VALUE,\n 'DELTA': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-DELTA': -Number.EPSILON,\n 'δ': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-δ': -Number.EPSILON,\n 'NaN': Number.NaN,\n} as const satisfies Record<string, number>\n\nexport const reservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport const validReservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport type ValidReservedSymbol = keyof typeof validReservedSymbolRecord\nexport type ReservedSymbol = keyof typeof reservedSymbolRecord\n\nexport function isReservedSymbol(symbol: string): symbol is keyof typeof validReservedSymbolRecord {\n return symbol in validReservedSymbolRecord\n}\n\nexport function isNumberReservedSymbol(symbol: string): symbol is keyof typeof numberReservedSymbolRecord {\n return symbol in numberReservedSymbolRecord\n}\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { BindingTarget, Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isReservedSymbol } from '../tokenizer/reservedNames'\nimport type { Builtin } from './interface'\nimport { specialExpressionTypes } from './specialExpressionTypes'\nimport type { SpecialExpressionName } from '.'\n\nexport type Function = [BindingTarget[], Node[]]\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n // TODO only subset of special expressions are necessary to check (CommonSpecialExpressionType)\n if (specialExpressionTypes[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n if (isReservedSymbol(name))\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type {\n EvaluatedFunction,\n LitsFunction,\n SpecialExpressionNode,\n SymbolNode,\n} from '../../parser/types'\nimport { isAny } from '../../typeGuards/lits'\nimport { addToSet } from '../../utils'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport type { Function } from '../utils'\nimport { assertNameNotDefined } from '../utils'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\nimport { assertUserDefinedSymbolNode } from '../../typeGuards/astNode'\n\nexport type DefnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_defn'], SymbolNode, Function]>\nexport type FunctionNode = SpecialExpressionNode<[typeof specialExpressionTypes['function'], SymbolNode, Function]>\nexport type FnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_fn'], Function]>\n\nexport const functionSpecialExpression: BuiltinSpecialExpression<null, FunctionNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunction,\n }\n\n contextStack.addValues({ [functionSymbol[1]]: litsFunction })\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n contextStack.addValues({ [functionName]: true })\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(node[1][2], contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunctionOverloades = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunctionOverloades,\n }\n\n contextStack.exportValues({ [functionSymbol[1]]: litsFunction })\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n const fn = node[1][2]\n contextStack.exportValues({ [functionName]: true })\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const fn = node[1][1]\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: undefined,\n evaluatedfunction: evaluatedFunction,\n }\n\n return litsFunction\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const fn = node[1][1]\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode)\n },\n\n}\n\nfunction evaluateFunction(\n fn: Function,\n contextStack: ContextStack,\n builtin: Builtin,\n getUndefinedSymbols: GetUndefinedSymbols,\n evaluateNode: EvaluateNode,\n): EvaluatedFunction {\n const functionContext: Context = {}\n\n const context = fn[0].reduce((ctx: Context, arg) => {\n Object.keys(getAllBindingTargetNames(arg)).forEach((name) => {\n ctx[name] = { value: null }\n })\n return ctx\n }, {})\n const undefinedSymbols = getUndefinedSymbols(fn[1], contextStack.new(context), builtin, evaluateNode)\n undefinedSymbols.forEach((name) => {\n const value = contextStack.getValue(name)\n if (isAny(value)) {\n functionContext[name] = { value }\n }\n })\n\n const evaluatedFunction: EvaluatedFunction = [\n fn[0],\n fn[1],\n functionContext,\n ]\n\n return evaluatedFunction\n}\n\nfunction getFunctionUnresolvedSymbols(\n fn: Function,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n functionNameContext?: Context,\n): UndefinedSymbols {\n const result = new Set<string>()\n\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n const newContext: Context = {}\n\n fn[0].forEach((arg) => {\n Object.assign(newContext, getAllBindingTargetNames(arg))\n\n walkDefaults(arg, (defaultNode) => {\n addToSet(result, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n })\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = getUndefinedSymbols(fn[1], newContextStack, builtin, evaluateNode)\n addToSet(result, overloadResult)\n return result\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type IfNode = SpecialExpressionNode<[typeof specialExpressionTypes['if'], [Node, Node, Node?]]>\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type UnlessNode = SpecialExpressionNode<[typeof specialExpressionTypes['unless'], [Node, Node, Node?]]>\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (!evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LetNode = SpecialExpressionNode<[typeof specialExpressionTypes['let'], BindingNode]>\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n paramCount: 0,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingNodeValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.addValues(values)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target))\n return bindingResult\n },\n}\n","import { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport { joinSets } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopNode = SpecialExpressionNode<[typeof specialExpressionTypes['loop'], BindingNode[], Node[]]> // bindings, body\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNodes = node[1][1]\n const bindingContext: Context = bindingNodes.reduce((result: Context, bindingNode) => {\n const val = evaluateNode(bindingNode[1][1], contextStack.create(result))\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n result[name] = { value }\n })\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n const body = node[1][2]\n for (;;) {\n let result: Any = null\n try {\n for (const form of body) {\n result = evaluateNode(form, newContextStack)\n }\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== bindingNodes.length) {\n throw new LitsError(\n `recur expected ${bindingNodes.length} parameters, got ${valueToString(params.length)}`,\n node[2],\n )\n }\n bindingNodes.forEach((bindingNode, index) => {\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], asAny(params[index]), Node => evaluateNode(Node, contextStack))\n for (const [name, value] of Object.entries(valueRecord)) {\n bindingContext[name]!.value = value\n }\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNodes = node[1][1]\n\n const newContext = bindingNodes\n .reduce((context: Context, bindingNode) => {\n const names = getAllBindingTargetNames(bindingNode[1][0])\n\n Object.keys(names).forEach((name) => {\n context[name] = { value: true }\n })\n return context\n }, {})\n\n const bindingValueNodes = bindingNodes.map(bindingNode => bindingNode[1][1])\n const bindingsResult = getUndefinedSymbols(bindingValueNodes, contextStack, builtin, evaluateNode)\n const paramsResult = getUndefinedSymbols(node[1][2], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(bindingsResult, paramsResult)\n },\n}\n","import type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopBindingNode = [BindingNode, BindingNode[], Node?, Node?] // Binding, Let-Bindings, When, While\n\nexport type ForNode = SpecialExpressionNode<[typeof specialExpressionTypes['for'], LoopBindingNode[], Node[]]> // LoopBindings, body\nexport type DoSeqNode = SpecialExpressionNode<[typeof specialExpressionTypes['doseq'], LoopBindingNode[], Node[]]> // LoopBindings, body\n\ntype LoopNode = ForNode | DoSeqNode\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n for (const bindingNode of bindings) {\n const [target, bindingValue] = bindingNode[1]\n const val = evaluateNode(bindingValue, contextStack)\n const valueRecord = evalueateBindingNodeValues(target, val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n }\n}\n\nfunction evaluateLoop(\n returnResult: boolean,\n loopNode: LoopNode,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n const sourceCodeInfo = loopNode[2]\n const [, loopBindings, body] = loopNode[1]\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindings[bindingIndex]!\n const [targetNode, valueNode] = bindingNode[1]\n const coll = asColl(evaluateNode(valueNode, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n\n const val = asAny(seq[index], sourceCodeInfo)\n const valueRecord = evalueateBindingNodeValues(targetNode, val, Node => evaluateNode(Node, newContextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n if (letBindings) {\n addToContext(\n letBindings,\n context,\n newContextStack,\n evaluateNode,\n )\n }\n if (whenNode && !evaluateNode(whenNode, newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n if (whileNode && !evaluateNode(whileNode, newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n }\n if (!skip) {\n let value: Any = null\n for (const form of body) {\n value = evaluateNode(form, newContextStack)\n }\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n\n return returnResult ? result : null\n}\n\nfunction analyze(\n loopNode: LoopNode,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n): UndefinedSymbols {\n const result = new Set<string>()\n const newContext: Context = {}\n const [, loopBindings, body] = loopNode[1]\n loopBindings.forEach((loopBindingNode) => {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindingNode\n const [target, value] = bindingNode[1]\n getUndefinedSymbols([value], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(target))\n if (letBindings) {\n letBindings.forEach((letBindingNode) => {\n const [letTarget, letValue] = letBindingNode[1]\n\n getUndefinedSymbols([letValue], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(letTarget))\n })\n }\n if (whenNode) {\n getUndefinedSymbols([whenNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n getUndefinedSymbols([whileNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n getUndefinedSymbols(body, contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateNode),\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateNode)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type OrNode = SpecialExpressionNode<[typeof specialExpressionTypes['||'], Node[]]>\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = false\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport { assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type QqNode = SpecialExpressionNode<[typeof specialExpressionTypes['??'], [Node, Node | undefined]]>\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n paramCount: { min: 1, max: 2 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [firstNode, secondNode] = node[1][1]\n\n if (isUserDefinedSymbolNode(firstNode) && contextStack.lookUp(firstNode) === null) {\n return secondNode ? evaluateNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node[2])\n const firstResult = evaluateNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateNode(secondNode, contextStack) : null)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import { RecurSignal } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type RecurNode = SpecialExpressionNode<[typeof specialExpressionTypes['recur'], Node[]]>\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n const evaluatedParams = params.map(paramNode => evaluateNode(paramNode, contextStack))\n throw new RecurSignal(evaluatedParams)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ThrowNode = SpecialExpressionNode<[typeof specialExpressionTypes['throw'], Node]>\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const message = asString(evaluateNode(node[1][1], contextStack), node[2], {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node[2])\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { joinSets } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type TryNode = SpecialExpressionNode<[typeof specialExpressionTypes['try'], Node, SymbolNode | undefined, Node]>\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n try {\n return evaluateNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: error as Any },\n }\n : {}\n return evaluateNode(catchExpression, contextStack.create(newContext))\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n const tryResult = getUndefinedSymbols([tryExpression], contextStack, builtin, evaluateNode)\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: true },\n }\n : {}\n const catchResult = getUndefinedSymbols([catchExpression], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Arr } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ArrayNode = SpecialExpressionNode<[typeof specialExpressionTypes['array'], Node[]]>\n\nexport const arraySpecialExpression: BuiltinSpecialExpression<Any, ArrayNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Arr = []\n\n for (const param of node[1][1]) {\n if (isSpreadNode(param)) {\n const spreadValue = evaluateNode(param[1], contextStack)\n if (!Array.isArray(spreadValue)) {\n throw new LitsError('Spread value is not an array', param[2])\n }\n result.push(...spreadValue)\n }\n else {\n result.push(evaluateNode(param, contextStack))\n }\n }\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Obj } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUnknownRecord } from '../../typeGuards'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ObjectNode = SpecialExpressionNode<[typeof specialExpressionTypes['object'], Node[]]>\n\nexport const objectSpecialExpression: BuiltinSpecialExpression<Any, ObjectNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Obj = {}\n\n const params = node[1][1]\n for (let i = 0; i < params.length; i += 2) {\n const keyNode = params[i]!\n if (isSpreadNode(keyNode)) {\n const spreadObject = evaluateNode(keyNode[1], contextStack)\n if (!isUnknownRecord(spreadObject)) {\n throw new LitsError('Spread value is not an object', keyNode[2])\n }\n Object.assign(result, spreadObject)\n i -= 1\n }\n else {\n const key = evaluateNode(keyNode, contextStack)\n const value = evaluateNode(params[i + 1]!, contextStack)\n assertString(key, keyNode[2])\n result[key] = value\n }\n }\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Builtin } from './interface'\nimport { allNormalExpressions, normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { definedSpecialExpression } from './specialExpressions/defined'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, fnSpecialExpression, functionSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { arraySpecialExpression } from './specialExpressions/array'\nimport { objectSpecialExpression } from './specialExpressions/object'\nimport { specialExpressionTypes } from './specialExpressionTypes'\n\nexport const specialExpressions = [\n qqSpecialExpression,\n andSpecialExpression,\n orSpecialExpression,\n arraySpecialExpression,\n condSpecialExpression,\n defSpecialExpression,\n definedSpecialExpression,\n defnSpecialExpression,\n doSpecialExpression,\n doseqSpecialExpression,\n fnSpecialExpression,\n forSpecialExpression,\n functionSpecialExpression,\n ifSpecialExpression,\n letSpecialExpression,\n loopSpecialExpression,\n objectSpecialExpression,\n recurSpecialExpression,\n switchSpecialExpression,\n throwSpecialExpression,\n trySpecialExpression,\n unlessSpecialExpression,\n] as const\n\nexport type SpecialExpressions = typeof specialExpressions\nexport type SpecialExpression = SpecialExpressions[number]\nexport type SpecialExpressionName = keyof typeof specialExpressionTypes\nexport type CommonSpecialExpressionType = [\n | typeof specialExpressionTypes['??']\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['cond']\n | typeof specialExpressionTypes['switch']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['do']\n | typeof specialExpressionTypes['if']\n | typeof specialExpressionTypes['unless']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object'],\n]\n\nexport type SpecialExpressionType = typeof specialExpressionTypes[SpecialExpressionName]\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n allNormalExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressionTypes)\nexport const specialExpressionNameSet = new Set(specialExpressionKeys)\n","import { evalueateBindingNodeValues } from '../builtin/bindingNode'\nimport { allNormalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport {\n type CompFunction,\n type ComplementFunction,\n type ConstantlyFunction,\n type EvaluatedFunction,\n type EveryPredFunction,\n type FNullFunction,\n type JuxtFunction,\n type LitsFunctionType,\n type NativeJsFunction,\n type NormalBuiltinFunction,\n type PartialFunction,\n type SomePredFunction,\n type UserDefinedFunction,\n bindingTargetTypes,\n} from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport type { Context, EvaluateNode, ExecuteFunction } from './interface'\n\ntype FunctionExecutors = Record<\n LitsFunctionType,\n (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateNode: EvaluateNode, executeFunction: ExecuteFunction },\n ) => Any\n>\n\nfunction checkParams(\n evaluatedFunction: EvaluatedFunction,\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n const hasRest = evaluatedFunction[0].some(arg => arg[0] === bindingTargetTypes.rest)\n const minArity = evaluatedFunction[0].filter(arg => arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined).length\n const maxArity = hasRest ? Number.MAX_SAFE_INTEGER : evaluatedFunction[0].length\n if (nbrOfParams < minArity || nbrOfParams > maxArity) {\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n }\n}\n\nexport const functionExecutors: FunctionExecutors = {\n NativeJsFunction: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.nativeFn.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n UserDefined: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateNode }) => {\n for (;;) {\n checkParams(fn.evaluatedfunction, params.length, sourceCodeInfo)\n const evaluatedFunction = fn.evaluatedfunction\n const args = evaluatedFunction[0]\n const nbrOfNonRestArgs: number = args.filter(arg => arg[0] !== bindingTargetTypes.rest).length\n\n const newContextStack = contextStack.create(fn.evaluatedfunction[2])\n const newContext: Context = {}\n\n const rest: Arr = []\n for (let i = 0; i < params.length; i += 1) {\n if (i < nbrOfNonRestArgs) {\n const param = toAny(params[i])\n const valueRecord = evalueateBindingNodeValues(args[i]!, param, Node =>\n evaluateNode(Node, newContextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n for (let i = params.length; i < nbrOfNonRestArgs; i++) {\n const arg = args[i]!\n const defaultValue = evaluateNode(arg[1][1]!, contextStack.create(newContext))\n const valueRecord = evalueateBindingNodeValues(arg, defaultValue, Node =>\n evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n const restArgument = args.find(arg => arg[0] === bindingTargetTypes.rest)\n if (restArgument !== undefined) {\n const valueRecord = evalueateBindingNodeValues(restArgument, rest, Node => evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n try {\n let result: Any = null\n const newContextStack2 = newContextStack.create(newContext)\n for (const node of evaluatedFunction[1]) {\n result = evaluateNode(node, newContextStack2)\n }\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n Partial: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.function, [...fn.params, ...params], contextStack, sourceCodeInfo)\n },\n Comp: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { params: f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n Constantly: (fn: ConstantlyFunction) => {\n return fn.value\n },\n Juxt: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.params.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n Complement: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.function, params, contextStack, sourceCodeInfo)\n },\n EveryPred: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n SomePred: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n Fnull: (fn: FNullFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fnulledParams = params.map((param, index) => (param === null ? toAny(fn.params[index]) : param))\n return executeFunction(toAny(fn.function), fnulledParams, contextStack, sourceCodeInfo)\n },\n Builtin: (fn: NormalBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(allNormalExpressions[fn.normalBuitinSymbolType], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n}\n","import type { SpecialExpression } from '../builtin'\nimport { builtin } from '../builtin'\nimport { NodeTypes, getNodeTypeName } from '../constants/constants'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport type { Any, Arr, Obj } from '../interface'\nimport type {\n Ast,\n Node,\n NormalExpressionNode,\n NumberNode,\n ReservedSymbolNode,\n SpecialExpressionNode,\n StringNode,\n SymbolNode,\n} from '../parser/types'\nimport { reservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isNormalExpressionNodeWithName } from '../typeGuards/astNode'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { assertString } from '../typeGuards/string'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n for (const node of ast.body) {\n result = evaluateNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateNode(node: Node, contextStack: ContextStack): Any {\n switch (node[0]) {\n case NodeTypes.Number:\n return evaluateNumber(node as NumberNode)\n case NodeTypes.String:\n return evaluateString(node as StringNode)\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.UserDefinedSymbol:\n return contextStack.evaluateSymbol(node as SymbolNode)\n case NodeTypes.ReservedSymbol:\n return evaluateReservedSymbol(node as ReservedSymbolNode)\n case NodeTypes.NormalExpression:\n return evaluateNormalExpression(node as NormalExpressionNode, contextStack)\n case NodeTypes.SpecialExpression:\n return evaluateSpecialExpression(node as SpecialExpressionNode, contextStack)\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`${getNodeTypeName(node[0])}-node cannot be evaluated`, node[2])\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node[1]\n}\n\nfunction evaluateString(node: StringNode): string {\n return node[1]\n}\n\nfunction evaluateReservedSymbol(node: ReservedSymbolNode): Any {\n const reservedName = node[1]\n const value = reservedSymbolRecord[reservedName]\n return asNonUndefined(value, node[2])\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const sourceCodeInfo = node[2]\n const paramNodes: Node[] = node[1][1]\n const params = paramNodes.map(paramNode => evaluateNode(paramNode, contextStack))\n if (isNormalExpressionNodeWithName(node)) {\n const nameSymbol = node[1][0]\n\n if (isNormalBuiltinSymbolNode(nameSymbol)) {\n const type = nameSymbol[1]\n const normalExpression = builtin.allNormalExpressions[type]!\n return normalExpression.evaluate(params, node[2], contextStack, { executeFunction })\n }\n else {\n const fn = contextStack.getValue(nameSymbol[1])\n if (fn !== undefined) {\n return executeFunction(asAny(fn), params, contextStack, sourceCodeInfo)\n }\n throw new UndefinedSymbolError(nameSymbol[1], node[2])\n }\n }\n else {\n const fnNode: Node = node[1][0]\n const fn = evaluateNode(fnNode, contextStack)\n return executeFunction(fn, params, contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.functionType](fn, params, sourceCodeInfo, contextStack, { evaluateNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpressionType = node[1][0]\n const specialExpression: SpecialExpression = asNonUndefined(builtin.specialExpressions[specialExpressionType], node[2])\n const castedEvaluate = specialExpression.evaluate as Function\n\n return castedEvaluate(node, contextStack, { evaluateNode, builtin, getUndefinedSymbols }) as Any\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Any, Arr } from '../interface'\nimport type { Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateNode = (node: Node, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import { normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { UndefinedSymbolError } from '../errors'\nimport type { Any } from '../interface'\nimport type { ContextParams, LazyValue } from '../Lits/Lits'\nimport type { NativeJsFunction, NormalBuiltinFunction, SymbolNode, UserDefinedSymbolNode } from '../parser/types'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode } from '../typeGuards/astNode'\nimport { toAny } from '../utils'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport type { Context, LookUpResult } from './interface'\nimport { isContextEntry } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.globalContext = asNonUndefined(contexts[0])\n this.contexts = contexts\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public new(context: Context): ContextStack {\n const contexts = [{}, context]\n\n return new ContextStackImpl({ contexts })\n }\n\n public exportValues(values: Record<string, Any>) {\n for (const [name, value] of Object.entries(values)) {\n if (this.globalContext[name]) {\n throw new Error(`Cannot redefine exported value \"${name}\"`)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow special expression \"${name}\"`)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow builtin function \"${name}\"`)\n }\n this.globalContext[name] = { value }\n }\n this.addValues(values)\n }\n\n public addValues(values: Record<string, Any>) {\n const currentContext = this.contexts[0]!\n for (const [name, value] of Object.entries(values)) {\n if (currentContext[name]) {\n throw new Error(`Cannot redefine value \"${name}\"`)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow special expression \"${name}\"`)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new Error(`Cannot shadow builtin function \"${name}\"`)\n }\n currentContext[name] = { value: toAny(value) }\n }\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: UserDefinedSymbolNode): LookUpResult {\n const value = node[1]\n // const sourceCodeInfo = node[2]\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateSymbol(node: SymbolNode): Any {\n if (isSpecialBuiltinSymbolNode(node)) {\n throw new Error('Special builtin symbols should not be evaluated')\n }\n if (isNormalBuiltinSymbolNode(node)) {\n const type = node[1]\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'Builtin',\n normalBuitinSymbolType: type,\n sourceCodeInfo: node[2],\n } satisfies NormalBuiltinFunction\n }\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n\n throw new UndefinedSymbolError(node[1], node[2])\n }\n}\n\nexport function createContextStack(params: ContextParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n functionType: 'NativeJsFunction',\n nativeFn: jsFunction,\n name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack.create({})\n}\n","import { LitsError } from '../errors'\n\nconst binaryOperators = [\n '**', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '++', // string concatenation\n\n '<', // less than\n '<=', // less than or equal\n '≤', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n '≥', // greater than or equal\n\n '=', // equal\n '!=', // not equal\n '≠', // not equal\n\n '&', // bitwise AND\n '^', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n] as const\n\nconst otherOperators = [\n '->', // lambda\n '...', // rest\n '.', // property accessor\n ',', // item separator\n ':=', // property assignment\n ';', // statement terminator\n] as const\n\nconst symbolicOperators = [\n ...binaryOperators,\n ...otherOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n '&&',\n '||',\n 'comment',\n 'cond',\n 'def',\n 'defined?',\n // 'defn',\n 'do',\n 'doseq',\n // 'fn',\n 'if',\n 'let',\n 'loop',\n 'recur',\n 'throw',\n 'try',\n 'unless',\n 'while',\n]\n\nconst nonFunctionOperatorSet = new Set(nonFunctionOperators)\nexport function isFunctionOperator(operator: string): boolean {\n return !nonFunctionOperatorSet.has(operator)\n}\n\nexport type SymbolicBinaryOperator = typeof binaryOperators[number]\nexport type SymbolicOperator = typeof symbolicOperators[number]\n\nconst binaryOperatorSet = new Set(binaryOperators)\nexport function isBinaryOperator(operator: string): operator is SymbolicBinaryOperator {\n return binaryOperatorSet.has(operator as SymbolicBinaryOperator)\n}\nexport function assertBinaryOperator(operator: string): asserts operator is SymbolicBinaryOperator {\n if (!isBinaryOperator(operator)) {\n throw new LitsError(`Expected symbolic binary operator, got ${operator}`, undefined)\n }\n}\nexport function asBinaryOperator(operator: string): SymbolicBinaryOperator {\n assertBinaryOperator(operator)\n return operator\n}\n\nconst symbolicOperatorSet = new Set(symbolicOperators)\nexport function isSymbolicOperator(operator: string): operator is SymbolicOperator {\n return symbolicOperatorSet.has(operator as SymbolicOperator)\n}\nexport function assertSymbolicOperator(operator: string): asserts operator is SymbolicOperator {\n if (!isSymbolicOperator(operator)) {\n throw new LitsError(`Expected symbolic operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicOperator(operator: string): SymbolicOperator {\n assertSymbolicOperator(operator)\n return operator\n}\n","import { LitsError } from '../errors'\nimport { isSymbolicOperator } from './operators'\nimport type { BasePrefixedNumberToken, LBraceToken, LBracketToken, LParenToken, MultiLineCommentToken, NumberToken, OperatorToken, RBraceToken, RBracketToken, RParenToken, RegexpShorthandToken, ReservedSymbolToken, SingleLineCommentToken, StringToken, SymbolToken, Token, TokenDescriptor, WhitespaceToken } from './token'\nimport type { ReservedSymbol, ValidReservedSymbol } from './reservedNames'\nimport { reservedSymbolRecord } from './reservedNames'\n\nexport type Tokenizer<T extends Token> = (input: string, position: number) => TokenDescriptor<T>\n\nconst illegalSymbolCharacters = [\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '\\'',\n '\"',\n '`',\n ',',\n '.',\n ';',\n ' ',\n '\\n',\n '\\r',\n '\\t',\n]\nconst illegalFirstSymbolCharacters = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ...illegalSymbolCharacters,\n]\nconst illegalSymbolCharacterSet = new Set(illegalSymbolCharacters)\nconst illegalFirstSymbolCharacterSet = new Set(illegalFirstSymbolCharacters)\n\nconst whitespaceRegExp = /\\s/\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeToken('RBrace', '}', input, position)\n\nconst tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nconst tokenizeRegexpShorthand: Tokenizer<RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['RegexpShorthand', `#${token[1]}${options}`]]\n}\n\nfunction tokenizeToken<T extends Token>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type, value] as T]\n else\n return NO_MATCH\n}\n\nexport const tokenizeWhitespace: Tokenizer<WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst postNumberRegExp = /[\\s)\\]}(,;]/\n\nexport const tokenizeNumber: Tokenizer<NumberToken> = (input, position) => {\n let i: number\n const negate = input[position] === '-'\n const plusPrefix = input[position] === '+'\n const start = negate || plusPrefix ? position + 1 : position\n let hasDecimalPoint = false\n let hasExponent = false\n for (i = start; i < input.length; i += 1) {\n const char = input[i] as string\n\n if (char === '_') {\n if (!decimalNumberRegExp.test(input[i - 1]!) || !decimalNumberRegExp.test(input[i + 1]!)) {\n return NO_MATCH\n }\n }\n\n else if (char === '.') {\n if (i === start || hasDecimalPoint || hasExponent) {\n return NO_MATCH\n }\n hasDecimalPoint = true\n }\n\n else if (char === 'e' || char === 'E') {\n if (i === start || hasExponent) {\n return NO_MATCH\n }\n\n if (input[i - 1] === '.' || input[i - 1] === '+' || input[i - 1] === '-') {\n return NO_MATCH\n }\n\n if (input[i + 1] === '+' || input[i + 1] === '-') {\n i += 1\n }\n\n hasExponent = true\n }\n\n else if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n\n if ((negate || plusPrefix) && i === start) {\n return NO_MATCH\n }\n\n const length = i - position\n if (length === 0) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['Number', input.substring(position, i)]]\n}\n\nexport const tokenizeBasePrefixedNumber: Tokenizer<BasePrefixedNumberToken> = (input, position) => {\n if (input[position] !== '0') {\n return NO_MATCH\n }\n\n const baseChar = input[position + 1]\n\n const type = baseChar === 'b' || baseChar === 'B'\n ? 'binary'\n : baseChar === 'o' || baseChar === 'O'\n ? 'octal'\n : baseChar === 'x' || baseChar === 'X'\n ? 'hex'\n : null\n\n if (type === null) {\n return NO_MATCH\n }\n\n let i: number\n for (i = position + 2; i < input.length; i += 1) {\n const char = input[i] as string\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length <= 2) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['BasePrefixedNumber', input.substring(position, i)]]\n}\n\nexport const tokenizeSymbol: Tokenizer<SymbolToken> = (input, position) => {\n let value = input[position]!\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['Symbol', value]]\n }\n\n if (!illegalFirstSymbolCharacterSet.has(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && !illegalSymbolCharacterSet.has(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeReservedSymbolToken: Tokenizer<ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeSymbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = reservedSymbolRecord[symbolName as ReservedSymbol]\n if (info === undefined) {\n return NO_MATCH\n }\n return [symbolMeta[0], ['ReservedSymbol', symbolName as ValidReservedSymbol]]\n}\n\nexport const tokenizeOperator: Tokenizer<OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isSymbolicOperator(threeChars)) {\n return [3, ['Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isSymbolicOperator(twoChars)) {\n return [2, ['Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isSymbolicOperator(oneChar)) {\n return [1, ['Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeMultiLineComment: Tokenizer<MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while ((input[position + length] !== '*' || input[position + length + 1] !== '/') && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeSingleLineComment: Tokenizer<SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const tokenizers = [\n tokenizeWhitespace,\n tokenizeMultiLineComment,\n tokenizeSingleLineComment,\n tokenizeReservedSymbolToken,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n tokenizeRegexpShorthand,\n tokenizeBasePrefixedNumber,\n tokenizeNumber,\n tokenizeOperator,\n tokenizeSymbol,\n] as const satisfies Tokenizer<Token>[]\n","import { LitsError } from '../errors'\nimport type { FilePathParams } from '../Lits/Lits'\nimport { tokenizers } from './tokenizers'\nimport type { SourceCodeInfo, Token, TokenDescriptor } from './token'\n\nexport interface TokenStream {\n tokens: Token[]\n hasDebugData: boolean\n filePath?: string\n}\n\nexport function tokenize(input: string, debug: boolean, filePath: FilePathParams['filePath']): TokenStream {\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath,\n hasDebugData: debug,\n }\n\n while (position < input.length) {\n const tokenDescriptor = getCurrentToken(input, position)\n\n const sourceCodeInfo: SourceCodeInfo | undefined = debug\n ? createSourceCodeInfo(input, position, filePath)\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (sourceCodeInfo) {\n token[2] = sourceCodeInfo\n }\n\n tokenStream.tokens.push(token)\n }\n }\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n return [position - initialPosition, token]\n }\n return null\n}\n","import { LitsError } from '../errors'\nimport type { ValidReservedSymbol } from './reservedNames'\nimport { type SymbolicBinaryOperator, type SymbolicOperator, isBinaryOperator } from './operators'\n\nexport const tokenTypes = [\n 'LBrace',\n 'LBracket',\n 'RBrace',\n 'RBracket',\n 'LParen',\n 'RParen',\n 'BasePrefixedNumber',\n 'MultiLineComment',\n 'Number',\n 'Operator',\n 'RegexpShorthand',\n 'ReservedSymbol',\n 'SingleLineComment',\n 'String',\n 'Symbol',\n 'Whitespace',\n] as const\n\nexport type TokenType = typeof tokenTypes[number]\n\nconst modifierNames = ['&rest', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\ntype GenericToken<T extends TokenType, V extends string = string> = [T, V] | [T, V, SourceCodeInfo]\n\nexport type LBraceToken = GenericToken<'LBrace', '{'>\nexport type LBracketToken = GenericToken<'LBracket', '['>\nexport type LParenToken = GenericToken<'LParen', '('>\nexport type RBraceToken = GenericToken<'RBrace', '}'>\nexport type RBracketToken = GenericToken<'RBracket', ']'>\nexport type RParenToken = GenericToken<'RParen', ')'>\n\nexport type BasePrefixedNumberToken = GenericToken<'BasePrefixedNumber'>\nexport type MultiLineCommentToken = GenericToken<'MultiLineComment'>\nexport type NumberToken = GenericToken<'Number'>\nexport type OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericToken<'Operator', T>\nexport type RegexpShorthandToken = GenericToken<'RegexpShorthand'>\nexport type ReservedSymbolToken<T extends ValidReservedSymbol = ValidReservedSymbol> = GenericToken<'ReservedSymbol', T>\nexport type SingleLineCommentToken = GenericToken<'SingleLineComment'>\nexport type StringToken = GenericToken<'String'>\nexport type SymbolToken<T extends string = string> = GenericToken<'Symbol', T>\nexport type WhitespaceToken = GenericToken<'Whitespace'>\n\nexport type Token =\n | LBraceToken\n | LBracketToken\n | LParenToken\n | RBraceToken\n | RBracketToken\n | RParenToken\n | BasePrefixedNumberToken\n | MultiLineCommentToken\n | NumberToken\n | OperatorToken\n | RegexpShorthandToken\n | ReservedSymbolToken\n | SingleLineCommentToken\n | StringToken\n | SymbolToken\n | WhitespaceToken\n\nexport type TokenDescriptor<T extends Token> = [length: number, token?: T]\n\nexport interface SourceCodeInfo {\n position?: {\n line: number\n column: number\n }\n code?: string\n filePath?: string\n}\n\nexport function isSymbolToken<T extends string>(token: Token, symbolName?: T): token is SymbolToken<T> {\n if (token?.[0] !== 'Symbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\n\nexport function assertSymbolToken<T extends string>(token: Token, symbolName?: T): asserts token is SymbolToken<T> {\n if (!isSymbolToken(token, symbolName)) {\n throwUnexpectedToken('Symbol', undefined, token)\n }\n}\nexport function asSymbolToken<T extends string>(token: Token, symbolName?: T): SymbolToken<T> {\n assertSymbolToken(token, symbolName)\n return token\n}\n\nexport function isReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): token is ReservedSymbolToken<T> {\n if (token?.[0] !== 'ReservedSymbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\nexport function assertReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): asserts token is ReservedSymbolToken<T> {\n if (!isReservedSymbolToken(token, symbolName)) {\n throwUnexpectedToken('ReservedSymbol', symbolName, token)\n }\n}\nexport function asReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): ReservedSymbolToken<T> {\n assertReservedSymbolToken(token, symbolName)\n return token\n}\n\nexport function isSingleLineCommentToken(token: Token): token is SingleLineCommentToken {\n return token?.[0] === 'SingleLineComment'\n}\nexport function assertSingleLineCommentToken(token: Token): asserts token is SingleLineCommentToken {\n if (!isSingleLineCommentToken(token)) {\n throwUnexpectedToken('SingleLineComment', undefined, token)\n }\n}\nexport function asSingleLineCommentToken(token: Token): SingleLineCommentToken {\n assertSingleLineCommentToken(token)\n return token\n}\n\nexport function isMultiLineCommentToken(token: Token): token is MultiLineCommentToken {\n return token?.[0] === 'MultiLineComment'\n}\nexport function assertMultiLineCommentToken(token: Token): asserts token is MultiLineCommentToken {\n if (!isMultiLineCommentToken(token)) {\n throwUnexpectedToken('MultiLineComment', undefined, token)\n }\n}\nexport function asMultiLineCommentToken(token: Token): MultiLineCommentToken {\n assertMultiLineCommentToken(token)\n return token\n}\n\nexport function isOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): token is OperatorToken<T> {\n if (token?.[0] !== 'Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): asserts token is OperatorToken<T> {\n if (!isOperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, token[2])\n }\n throwUnexpectedToken('Operator', operatorName, token)\n }\n}\nexport function asOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): OperatorToken<T> {\n assertOperatorToken(token, operatorName)\n return token\n}\n\nexport function isWhitespaceToken(token: Token): token is WhitespaceToken {\n return token?.[0] === 'Whitespace'\n}\nexport function assertWhitespaceToken(token: Token): asserts token is WhitespaceToken {\n if (!isWhitespaceToken(token)) {\n throwUnexpectedToken('Whitespace', undefined, token)\n }\n}\nexport function asWhitespaceToken(token: Token): WhitespaceToken {\n assertWhitespaceToken(token)\n return token\n}\n\nexport function isNumberToken(token: Token): token is NumberToken {\n return token?.[0] === 'Number'\n}\nexport function assertNumberToken(token: Token): asserts token is NumberToken {\n if (!isNumberToken(token)) {\n throwUnexpectedToken('Number', undefined, token)\n }\n}\nexport function asNumberToken(token: Token): NumberToken {\n assertNumberToken(token)\n return token\n}\n\nexport function isBasePrefixedNumberToken(token: Token): token is BasePrefixedNumberToken {\n return token?.[0] === 'BasePrefixedNumber'\n}\nexport function assertBasePrefixedNumberToken(token: Token): asserts token is BasePrefixedNumberToken {\n if (!isBasePrefixedNumberToken(token)) {\n throwUnexpectedToken('BasePrefixedNumber', undefined, token)\n }\n}\nexport function asBasePrefixedNumberToken(token: Token): BasePrefixedNumberToken {\n assertBasePrefixedNumberToken(token)\n return token\n}\n\nexport function isLParenToken(token: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', undefined, token)\n }\n}\nexport function asLParenToken(token: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', undefined, token)\n }\n}\nexport function asRParenToken(token: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', undefined, token)\n }\n}\nexport function asLBracketToken(token: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', undefined, token)\n }\n}\nexport function asRBracketToken(token: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', undefined, token)\n }\n}\nexport function asLBraceToken(token: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', undefined, token)\n }\n}\nexport function asRBraceToken(token: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', undefined, token)\n }\n}\nexport function asStringToken(token: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isRegexpShorthandToken(token: Token): token is RegexpShorthandToken {\n return token?.[0] === 'RegexpShorthand'\n}\nexport function assertRegexpShorthandToken(token: Token): asserts token is RegexpShorthandToken {\n if (!isRegexpShorthandToken(token)) {\n throwUnexpectedToken('RegexpShorthand', undefined, token)\n }\n}\nexport function asRegexpShorthandToken(token: Token): RegexpShorthandToken {\n assertRegexpShorthandToken(token)\n return token\n}\n\nexport function isA_BinaryOperatorToken(token: Token): token is OperatorToken<SymbolicBinaryOperator> {\n return token?.[0] === 'Operator' && isBinaryOperator(token[1])\n}\nexport function assertA_BinaryOperatorToken(token: Token): asserts token is OperatorToken<SymbolicBinaryOperator> {\n if (!isA_BinaryOperatorToken(token)) {\n throwUnexpectedToken('Operator', undefined, token)\n }\n}\nexport function asA_BinaryOperatorToken(token: Token): OperatorToken<SymbolicBinaryOperator> {\n assertA_BinaryOperatorToken(token)\n return token\n}\n\nfunction throwUnexpectedToken(expected: TokenType, expectedValue: string | undefined, actual: Token): never {\n const actualOutput = `${actual[0]} '${actual[1]}'`\n throw new LitsError(`Unexpected token: ${actualOutput}, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, actual[2])\n}\n","import type { TokenStream } from './tokenize'\nimport { isMultiLineCommentToken, isSingleLineCommentToken, isWhitespaceToken } from './token'\n\nexport function minifyTokenStream(tokenStream: TokenStream, { removeWhiteSpace }: { removeWhiteSpace: boolean }): TokenStream {\n const tokens = tokenStream.tokens\n .filter((token) => {\n if (isSingleLineCommentToken(token)\n || isMultiLineCommentToken(token)\n || (removeWhiteSpace && isWhitespaceToken(token))) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\nimport { isSymbolToken } from '../tokenizer/token'\n\nexport function transformSymbolTokens(tokenStram: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => isSymbolToken(token)\n ? [token[0], transformer(token[1])]\n : token),\n }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${token[1]}`\n }, '')\n}\n","import type { NormalExpressionName } from '../../reference/api'\nimport type { SpecialExpressionName, SpecialExpressionType } from '../builtin'\nimport { getAllBindingTargetNames } from '../builtin/bindingNode'\nimport { allNormalExpressions, normalExpressionTypes } from '../builtin/normalExpressions'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { ArrayNode } from '../builtin/specialExpressions/array'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DefinedNode } from '../builtin/specialExpressions/defined'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode, FunctionNode } from '../builtin/specialExpressions/functions'\nimport type { IfNode } from '../builtin/specialExpressions/if'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { ObjectNode } from '../builtin/specialExpressions/object'\nimport type { OrNode } from '../builtin/specialExpressions/or'\nimport type { QqNode } from '../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../builtin/specialExpressions/recur'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { UnlessNode } from '../builtin/specialExpressions/unless'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { type SymbolicBinaryOperator, isBinaryOperator, isFunctionOperator } from '../tokenizer/operators'\nimport { isNumberReservedSymbol, numberReservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { OperatorToken, ReservedSymbolToken, SourceCodeInfo, SymbolToken, Token, TokenType } from '../tokenizer/token'\nimport {\n asLBraceToken,\n asLBracketToken,\n asReservedSymbolToken,\n asSymbolToken,\n assertLParenToken,\n assertOperatorToken,\n assertRBraceToken,\n assertRBracketToken,\n assertRParenToken,\n assertReservedSymbolToken,\n assertSymbolToken,\n isA_BinaryOperatorToken,\n isLBraceToken,\n isLBracketToken,\n isLParenToken,\n isOperatorToken,\n isRBraceToken,\n isRBracketToken,\n isRParenToken,\n isReservedSymbolToken,\n isStringToken,\n isSymbolToken,\n} from '../tokenizer/token'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { assertNumberOfParams } from '../typeGuards'\nimport { asUserDefinedSymbolNode, isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode, isUserDefinedSymbolNode } from '../typeGuards/astNode'\nimport { type BindingNode, type BindingTarget, type Node, type NormalBuiltinSymbolNode, type NormalExpressionNodeExpression, type NormalExpressionNodeWithName, type NumberNode, type ParseState, type ReservedSymbolNode, type SpecialBuiltinSymbolNode, type StringNode, type SymbolNode, type UserDefinedSymbolNode, bindingTargetTypes } from './types'\n\nconst exponentiationPrecedence = 10\nconst binaryFunctionalOperatorPrecedence = 1\nconst placeholderRegexp = /^\\$([1-9]\\d?)?$/\n\nfunction withSourceCodeInfo<T extends Node | BindingTarget>(node: T, sourceCodeInfo: SourceCodeInfo | undefined): T {\n if (sourceCodeInfo) {\n node[2] = sourceCodeInfo\n }\n return node\n}\n\nfunction getPrecedence(operatorSign: SymbolicBinaryOperator): number {\n switch (operatorSign) {\n case '**': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 9\n\n case '+': // addition\n case '-': // subtraction\n return 8\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 7\n\n case '++': // string concatenation\n return 6\n\n case '<': // less than\n case '<=': // less than or equal\n case '≤': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n case '≥': // greater than or equal\n return 5\n\n case '=': // equal\n case '!=': // not equal\n case '≠': // not equal\n return 4\n\n case '&': // bitwise AND\n case '^': // bitwise XOR\n case '|': // bitwise OR\n return 3\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 2\n\n // leave room for binaryFunctionalOperatorPrecedence = 1\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown binary operator: ${operatorSign satisfies never}`)\n }\n}\n\nfunction createNamedNormalExpressionNode(symbolNode: NormalBuiltinSymbolNode | UserDefinedSymbolNode, params: Node[], sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeWithName {\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([NodeTypes.NormalExpression, [symbolNode, params]], sourceCodeInfo)\n\n if (isNormalBuiltinSymbolNode(symbolNode)) {\n assertNumberOfParams(allNormalExpressions[symbolNode[1]]!.paramCount, node)\n }\n\n return node\n}\n\nfunction createAccessorNode(left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeExpression {\n // Unnamed normal expression\n return withSourceCodeInfo([NodeTypes.NormalExpression, [left, [right]]], sourceCodeInfo)\n}\n\nfunction fromBinaryOperatorToNode(operator: OperatorToken, symbolNode: SymbolNode, left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): Node {\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '**': // exponentiation\n case '*':\n case '/':\n case '%':\n case '+':\n case '-':\n case '<<':\n case '>>':\n case '>>>':\n case '++':\n case '<':\n case '<=':\n case '≤':\n case '>':\n case '>=':\n case '≥':\n case '=':\n case '!=':\n case '≠':\n case '&':\n case '^':\n case '|':\n return createNamedNormalExpressionNode(symbolNode as NormalBuiltinSymbolNode, [left, right], sourceCodeInfo)\n case '&&':\n case '||':\n case '??':\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]] as AndNode, sourceCodeInfo)\n /* v8 ignore next 10 */\n case '.':\n case ';':\n case ':=':\n case ',':\n case '->':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, sourceCodeInfo)\n }\n}\n\nexport class Parser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(count: number): Token {\n return this.tokenStream.tokens[this.parseState.position + count]!\n }\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): Node[] {\n const nodes: Node[] = []\n while (!this.isAtEnd()) {\n nodes.push(this.parseExpression(0, true))\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else {\n if (!this.isAtEnd()) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n }\n return nodes\n }\n\n private parseExpression(precedence = 0, moduleScope = false): Node {\n const firstToken = this.peek()\n\n let left: Node\n\n if (isSymbolToken(firstToken)) {\n switch (firstToken[1]) {\n case 'let':\n return this.parseLet(firstToken)\n case 'if':\n case 'unless':\n left = this.parseIfOrUnless(firstToken)\n break\n case 'cond':\n left = this.parseCond(firstToken)\n break\n case 'switch':\n left = this.parseSwitch(firstToken)\n break\n case 'for':\n case 'doseq':\n left = this.parseForOrDoseq(firstToken)\n break\n case 'do':\n left = this.parseDo(firstToken)\n break\n case 'loop':\n left = this.parseLoop(firstToken)\n break\n case 'try':\n left = this.parseTry(firstToken)\n break\n }\n }\n else if (isReservedSymbolToken(firstToken, 'function')) {\n return this.parseFunction(firstToken)\n }\n else if (isReservedSymbolToken(firstToken, 'export')) {\n if (!moduleScope) {\n throw new LitsError('export is only allowed in module scope', firstToken[2])\n }\n return this.parseExport(firstToken)\n }\n\n left ||= this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtExpressionEnd()) {\n if (isA_BinaryOperatorToken(operator)) {\n const name = operator[1]\n const newPrecedece = getPrecedence(name)\n if (\n newPrecedece <= precedence\n // ** (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n const symbol: SymbolNode = specialExpressionTypes[name as SpecialExpressionName]\n ? withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[name as SpecialExpressionName]], operator[2])\n : withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[name]!], operator[2])\n this.advance()\n const right = this.parseExpression(newPrecedece)\n left = fromBinaryOperatorToNode(operator, symbol, left, right, operator[2])\n }\n else if (isSymbolToken(operator)) {\n if (!isFunctionOperator(operator[1])) {\n break\n }\n const newPrecedece = binaryFunctionalOperatorPrecedence\n if (newPrecedece <= precedence) {\n break\n }\n const operatorSymbol = this.parseSymbol()\n const right = this.parseExpression(newPrecedece)\n if (isSpecialBuiltinSymbolNode(operatorSymbol)) {\n throw new LitsError('Special expressions are not allowed in binary functional operators', operatorSymbol[2])\n }\n left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2])\n }\n else {\n break\n }\n\n operator = this.peek()\n }\n\n return left\n }\n\n private parseOperand(): Node {\n let operand = this.parseOperandPart()\n let token = this.peek()\n while (isOperatorToken(token, '.') || isLBracketToken(token) || isLParenToken(token)) {\n if (token[1] === '.') {\n this.advance()\n const symbolToken = this.peek()\n if (!isSymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, symbolToken[1]], symbolToken[2])\n operand = createAccessorNode(operand, stringNode, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLBracketToken(token)) {\n this.advance()\n const expression = this.parseExpression()\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', this.peek()[2])\n }\n operand = createAccessorNode(operand, expression, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLParenToken(token)) {\n operand = this.parseFunctionCall(operand)\n token = this.peek()\n }\n }\n return operand\n }\n\n private parseOperandPart(): Node {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new Error('Expected closing parenthesis')\n }\n this.advance()\n return expression\n }\n\n else if (isOperatorToken(token)) {\n const operatorName = token[1]\n if (isBinaryOperator(operatorName)) {\n this.advance()\n if (specialExpressionTypes[operatorName as SpecialExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[operatorName as SpecialExpressionName]], token[2]) satisfies SpecialBuiltinSymbolNode\n }\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[operatorName as NormalExpressionName] as number], token[2]) satisfies NormalBuiltinSymbolNode\n }\n\n if (operatorName === '->') {\n return this.parseShorthandLamdaFunction()\n }\n else {\n throw new LitsError(`Illegal operator: ${operatorName}`, token[2])\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n TokenType,\n | 'Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'MultiLineComment' // Should have been removed\n | 'SingleLineComment' // Should have been removed\n | 'Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'Number':\n case 'BasePrefixedNumber':\n return this.parseNumber()\n case 'String':\n return this.parseString()\n case 'Symbol': {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n return this.parseSymbol()\n }\n case 'ReservedSymbol':\n return this.parseReservedSymbol()\n case 'RegexpShorthand':\n return this.parseRegexpShorthand()\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, token[2])\n }\n }\n\n private parseObject(): ObjectNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n const token = this.peek()\n if (isStringToken(token)) {\n const stringNode = this.parseString()\n params.push(withSourceCodeInfo([NodeTypes.String, stringNode[1]], token[2]))\n }\n else if (isSymbolToken(token)) {\n const value = token[1].startsWith('\\'')\n ? this.stringFromQuotedSymbol(token[1])\n : token[1]\n params.push(withSourceCodeInfo([NodeTypes.String, value], token[2]))\n this.advance()\n }\n else {\n throw new LitsError('Expected key to be a symbol or a string', this.peek()[2])\n }\n\n assertOperatorToken(this.peek(), ':=')\n this.advance()\n\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', this.peek()[2])\n }\n\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.object, params]], firstToken[2])\n }\n\n private parseArray(): ArrayNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.array, params]], firstToken[2])\n }\n\n private parseFunctionCall(symbol: Node): Node {\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n params.push(this.parseExpression())\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n\n if (isSpecialBuiltinSymbolNode(symbol)) { // Named function\n const specialExpressionType = symbol[1]\n const type = specialExpressionType as Exclude<\n SpecialExpressionType,\n | typeof specialExpressionTypes.for\n | typeof specialExpressionTypes.if\n | typeof specialExpressionTypes.unless\n | typeof specialExpressionTypes.cond\n | typeof specialExpressionTypes.switch\n | typeof specialExpressionTypes.let\n | typeof specialExpressionTypes.do\n | typeof specialExpressionTypes.loop\n | typeof specialExpressionTypes.try\n | typeof specialExpressionTypes.doseq\n | typeof specialExpressionTypes.function\n >\n switch (type) {\n case specialExpressionTypes['||']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies OrNode\n case specialExpressionTypes['&&']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies AndNode\n case specialExpressionTypes.recur:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies RecurNode\n case specialExpressionTypes.array:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ArrayNode\n case specialExpressionTypes.object:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ObjectNode\n case specialExpressionTypes['??']: {\n if (params.length === 1) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, undefined]]], symbol[2]) satisfies QqNode\n }\n if (params.length === 2) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, params[1]!]]], symbol[2]) satisfies QqNode\n }\n throw new LitsError('Expected exactly two parameters', symbol[2])\n }\n case specialExpressionTypes['defined?']: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param as SymbolNode]], symbol[2]) satisfies DefinedNode\n }\n case specialExpressionTypes.throw: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param!]], symbol[2]) satisfies ThrowNode\n }\n case specialExpressionTypes['0_fn']:\n case specialExpressionTypes['0_def']:\n case specialExpressionTypes['0_defn']:\n throw new LitsError(`${type} is not allowed`, symbol[2])\n /* v8 ignore next 2 */\n default:\n throw new Error(`Unknown special expression: ${type satisfies never}`)\n }\n }\n else if (isNormalBuiltinSymbolNode(symbol) || isNormalBuiltinSymbolNode(symbol)) {\n return createNamedNormalExpressionNode(symbol, params, symbol[2])\n }\n\n else {\n return withSourceCodeInfo([NodeTypes.NormalExpression, [symbol, params]], symbol[2]) satisfies NormalExpressionNodeExpression\n }\n }\n\n parseLambdaFunction(): FnNode | null {\n const firstToken = this.peek()\n\n if (isLParenToken(firstToken)\n && isSymbolToken(this.peekAhead(1))\n && isOperatorToken(this.peekAhead(2), '->')) {\n return null\n }\n\n try {\n const functionArguments = this.parseFunctionArguments()\n\n if (!isOperatorToken(this.peek(), '->')) {\n return null\n }\n this.advance()\n\n const body = this.parseExpression()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [body],\n ]]], firstToken[2]) satisfies FnNode\n }\n catch {\n return null\n }\n }\n\n parseFunctionArguments(): BindingTarget[] {\n const firstToken = this.peek()\n if (isSymbolToken(firstToken)) {\n return [withSourceCodeInfo([bindingTargetTypes.symbol, [this.parseSymbol(), undefined]], firstToken[2])]\n }\n\n assertLParenToken(firstToken)\n this.advance()\n\n let rest = false\n let defaults = false\n const functionArguments: BindingTarget[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n if (rest) {\n throw new LitsError('Rest argument must be last', this.peek()[2])\n }\n const bindingTarget = this.parseBindingTarget()\n if (bindingTarget[1][1] !== undefined) {\n defaults = true\n }\n if (bindingTarget[0] === bindingTargetTypes.rest) {\n rest = true\n }\n if (defaults && !bindingTarget[1][1]) {\n throw new LitsError('Default arguments must be last', this.peek()[2])\n }\n functionArguments.push(bindingTarget)\n\n if (!isOperatorToken(this.peek(), ',') && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n\n this.advance()\n\n return functionArguments\n }\n\n private parseShorthandLamdaFunction(): FnNode {\n const firstToken = this.peek()\n this.advance()\n const startPos = this.parseState.position\n const exprNode = this.parseExpression()\n const endPos = this.parseState.position - 1\n\n let arity = 0\n let dollar1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. $ = NAKED, $1, $2, $3, etc = WITH_1\n for (let pos = startPos; pos <= endPos; pos += 1) {\n const token = this.tokenStream.tokens[pos]!\n if (isSymbolToken(token)) {\n const match = placeholderRegexp.exec(token[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && dollar1 === 'WITH_1') || (match[1] && dollar1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use $ or $1', firstToken[2])\n\n dollar1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', firstToken[2])\n }\n }\n }\n\n const functionArguments: BindingTarget[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && dollar1 === 'NAKED') {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, '$'], undefined]], firstToken[2]))\n }\n else {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, `$${i}`], undefined]], firstToken[2]))\n }\n }\n\n const node: FnNode = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [exprNode],\n ]]], firstToken[2])\n\n return node\n }\n\n private parseOptionalDefaulValue(): Node | undefined {\n if (isOperatorToken(this.peek(), ':=')) {\n this.advance()\n return this.parseExpression()\n }\n return undefined\n }\n\n private parseBindingTarget({ requireDefaultValue, noRest }: { requireDefaultValue?: true, noRest?: true } = {}): BindingTarget {\n const firstToken = this.peek()\n\n // Symbol\n if (isSymbolToken(firstToken)) {\n const symbol = this.parseSymbol()\n if (!isUserDefinedSymbolNode(symbol)) {\n throw new LitsError('Expected user defined symbol', firstToken[2])\n }\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.symbol, [symbol, defaultValue]], firstToken[2])\n }\n\n // Rest\n if (isOperatorToken(firstToken, '...')) {\n if (noRest) {\n throw new LitsError('Rest element not allowed', firstToken[2])\n }\n this.advance()\n const symbol = asUserDefinedSymbolNode(this.parseSymbol())\n if (isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n return withSourceCodeInfo([bindingTargetTypes.rest, [symbol[1], undefined]], firstToken[2])\n }\n\n // Array\n if (isLBracketToken(firstToken)) {\n this.advance()\n const elements: (BindingTarget | null)[] = []\n let token = this.peek()\n let rest = false\n while (!isRBracketToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, ',')) {\n elements.push(null)\n this.advance()\n token = this.peek()\n continue\n }\n\n const target = this.parseBindingTarget()\n\n if (target[0] === bindingTargetTypes.rest) {\n rest = true\n }\n\n elements.push(target)\n token = this.peek()\n\n if (!isRBracketToken(token)) {\n assertOperatorToken(token, ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.array, [elements, defaultValue]], firstToken[2])\n }\n\n // Object\n if (isLBraceToken(firstToken)) {\n this.advance()\n const elements: Record<string, BindingTarget> = {}\n let token = this.peek()\n let rest = false\n while (!isRBraceToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, '...')) {\n rest = true\n this.advance()\n }\n const key = asUserDefinedSymbolNode(this.parseSymbol())\n token = this.peek()\n if (isReservedSymbolToken(token, 'as')) {\n if (rest) {\n throw new LitsError('Rest argument can not have alias', token[2])\n }\n this.advance()\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n if (elements[name[1]]) {\n throw new LitsError(`Duplicate binding name: ${name}`, token[2])\n }\n elements[key[1]] = withSourceCodeInfo([bindingTargetTypes.symbol, [name, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n else if (isRBraceToken(token) || isOperatorToken(token, ',') || isOperatorToken(token, ':=')) {\n if (elements[key[1]]) {\n throw new LitsError(`Duplicate binding name: ${key}`, token[2])\n }\n if (rest && isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n\n elements[key[1]] = rest\n ? withSourceCodeInfo([bindingTargetTypes.rest, [key[1], this.parseOptionalDefaulValue()]], firstToken[2])\n : withSourceCodeInfo([bindingTargetTypes.symbol, [key, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n\n else if (isLBraceToken(token) || isLBracketToken(token)) {\n elements[key[1]] = this.parseBindingTarget()\n }\n\n if (!isRBraceToken(this.peek())) {\n assertOperatorToken(this.peek(), ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n token = this.peek()\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', token[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.object, [elements, defaultValue]], firstToken[2])\n }\n\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n\n private parseLet(token: SymbolToken, optionalSemicolon = false): LetNode {\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n\n const value = target[1][1]!\n target[1][1] = undefined\n\n if (!optionalSemicolon) {\n assertOperatorToken(this.peek(), ';')\n }\n\n const bindingTarget: BindingNode = withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2])\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.let, bindingTarget]], token[2]) satisfies LetNode\n }\n\n private parseDo(token: SymbolToken): DoNode {\n this.advance()\n const expressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n }\n\n private parseLoop(firstToken: SymbolToken): LoopNode {\n this.advance()\n\n const bindingNodes: BindingNode[] = []\n let token = this.peek()\n while (!this.isAtEnd() && !isSymbolToken(token, 'do')) {\n assertSymbolToken(token, 'let')\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n const value = target[1][1]!\n target[1][1] = undefined\n\n bindingNodes.push(withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2]) satisfies BindingNode)\n\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n token = this.peek()\n }\n if (bindingNodes.length === 0) {\n throw new LitsError('Expected binding', this.peek()[2])\n }\n\n assertSymbolToken(token, 'do')\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n params.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.loop, bindingNodes, params]], firstToken[2]) satisfies LoopNode\n }\n\n private parseTry(token: SymbolToken): TryNode {\n this.advance()\n const tryExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'catch')) {\n tryExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'catch')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const tryExpression = tryExpressions.length === 1\n ? tryExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, tryExpressions]], token[2]) satisfies DoNode\n\n assertReservedSymbolToken(this.peek(), 'catch')\n this.advance()\n\n let errorSymbol: SymbolNode | undefined\n if (isLParenToken(this.peek())) {\n this.advance()\n errorSymbol = this.parseSymbol()\n assertRParenToken(this.peek())\n this.advance()\n }\n\n const catchExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n catchExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const catchExpression = catchExpressions.length === 1\n ? catchExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, catchExpressions]], token[2]) satisfies DoNode\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.try, tryExpression, errorSymbol, catchExpression]], token[2]) satisfies TryNode\n }\n\n private parseForOrDoseq(firstToken: SymbolToken): ForNode | DoSeqNode {\n const isDoseq = firstToken[1] === 'doseq'\n this.advance()\n\n const forLoopBindings: LoopBindingNode[] = []\n\n while (!this.isAtEnd() && !isSymbolToken(this.peek(), 'do')) {\n const loopBinding = this.parseForLoopBinding()\n const existingBoundNames = forLoopBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[0][1][0])))\n const newBoundNames = getAllBindingTargetNames(loopBinding[0][1][0])\n if (Object.keys(newBoundNames).some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', loopBinding[0][2])\n }\n forLoopBindings.push(loopBinding)\n }\n\n assertSymbolToken(this.peek(), 'do')\n this.advance()\n\n const expressions: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return isDoseq\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.doseq, forLoopBindings, expressions]], firstToken[2]) satisfies DoSeqNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.for, forLoopBindings, expressions]], firstToken[2]) satisfies ForNode\n }\n\n private parseForLoopBinding(): LoopBindingNode {\n assertReservedSymbolToken(this.peek(), 'each')\n\n this.advance()\n\n const bindingNode = this.parseBinding()\n\n const modifiers: Array<'&let' | '&when' | '&while'> = []\n let token = this.peek()\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'let')\n && !isReservedSymbolToken(token, 'when')\n && !isReservedSymbolToken(token, 'while')\n && !isSymbolToken(token, 'do')\n && !isReservedSymbolToken(token, 'each')\n ) {\n throw new LitsError('Expected symbol each, do, let, when or while', token[2])\n }\n\n const letBindings: BindingNode[] = []\n if (token[1] === 'let') {\n modifiers.push('&let')\n while (isSymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n const existingBoundNames = letBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[1][0])))\n const newBoundNames = Object.keys(getAllBindingTargetNames(letNode[1][1][1][0]))\n if (newBoundNames.some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', letNode[1][1][2])\n }\n\n letBindings.push(letNode[1][1])\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n }\n\n let whenNode: Node | undefined\n let whileNode: Node | undefined\n while (\n isReservedSymbolToken(token, 'when')\n || isReservedSymbolToken(token, 'while')\n ) {\n this.advance()\n\n if (token[1] === 'when') {\n if (modifiers.includes('&when')) {\n throw new LitsError('Multiple when modifiers in for loop', token[2])\n }\n modifiers.push('&when')\n whenNode = this.parseExpression()\n }\n else {\n if (modifiers.includes('&while')) {\n throw new LitsError('Multiple while modifiers in for loop', token[2])\n }\n modifiers.push('&while')\n whileNode = this.parseExpression()\n }\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each')) {\n throw new LitsError('Expected do or each', token[2])\n }\n\n return [bindingNode, letBindings, whenNode, whileNode] satisfies LoopBindingNode\n }\n\n private parseBinding(): BindingNode {\n const firstToken = asSymbolToken(this.peek())\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n\n assertReservedSymbolToken(this.peek(), 'in')\n this.advance()\n\n const value = this.parseExpression()\n\n const node: BindingNode = withSourceCodeInfo(\n [\n NodeTypes.Binding,\n [\n withSourceCodeInfo([bindingTargetTypes.symbol, [name, undefined]], firstToken[2]),\n value,\n ],\n ],\n firstToken[2],\n )\n return node\n }\n\n parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode {\n const isUnless = token[1] === 'unless'\n this.advance()\n const condition = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const thenExpressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'else')\n && !isReservedSymbolToken(this.peek(), 'end')\n ) {\n thenExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'else') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = thenExpressions.length === 1\n ? thenExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, thenExpressions]], token[2]) satisfies DoNode\n\n let elseExpression: Node | undefined\n if (isReservedSymbolToken(this.peek(), 'else')) {\n this.advance()\n const elseExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n elseExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n elseExpression = elseExpressions.length === 1\n ? elseExpressions[0]\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, elseExpressions]], token[2]) satisfies DoNode\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const params = [condition, thenExpression]\n if (elseExpression) {\n params.push(elseExpression)\n }\n\n return isUnless\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.unless, [condition, thenExpression, elseExpression]]], token[2]) satisfies UnlessNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [condition, thenExpression, elseExpression]]], token[2]) satisfies IfNode\n }\n\n parseCond(token: SymbolToken): CondNode {\n this.advance()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.cond, params]], token[2]) satisfies CondNode\n }\n\n parseSwitch(token: SymbolToken): SwitchNode {\n this.advance()\n const valueExpression = this.parseExpression()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.switch, valueExpression, params]], token[2]) satisfies SwitchNode\n }\n\n parseFunction(token: ReservedSymbolToken<'function'>): FunctionNode {\n this.advance()\n const symbol = this.parseSymbol()\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n assertOperatorToken(this.peek(), ';')\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.function, symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies FunctionNode\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private isAtExpressionEnd(): boolean {\n if (this.isAtEnd()) {\n return true\n }\n const token = this.peek()\n if (isOperatorToken(token)) {\n return [';', ',', ':='].includes(token[1])\n }\n if (isReservedSymbolToken(token)) {\n return ['else', 'when', 'while', 'then', 'end', 'case', 'catch'].includes(token[1])\n }\n return false\n }\n\n private parseExport(token: ReservedSymbolToken<'export'>): DefNode | DefnNode {\n this.advance()\n if (isSymbolToken(this.peek(), 'let')) {\n const letNode = this.parseLet(asSymbolToken(this.peek()))\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_def'], letNode[1][1]]], token[2]) satisfies DefNode\n }\n else if (isReservedSymbolToken(this.peek(), 'function')) {\n this.advance()\n const symbol = this.parseSymbol()\n\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_defn'], symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies DefnNode\n }\n else {\n throw new LitsError('Expected let or function', this.peek()[2])\n }\n }\n\n private stringToSymbolNode(value: string, sourceCodeInfo: SourceCodeInfo | undefined): SymbolNode {\n if (specialExpressionTypes[value as SpecialExpressionName] !== undefined && value !== 'fn' && value !== 'def' && value !== 'defn') {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[value as SpecialExpressionName]], sourceCodeInfo) satisfies SymbolNode\n }\n if (normalExpressionTypes[value as NormalExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[value as NormalExpressionName] as number], sourceCodeInfo) satisfies SymbolNode\n }\n return withSourceCodeInfo([NodeTypes.UserDefinedSymbol, value], sourceCodeInfo) satisfies SymbolNode\n }\n\n stringFromQuotedSymbol(value: string): string {\n return value.substring(1, value.length - 1)\n .replace(\n /(\\\\{2})|(\\\\')|\\\\(.)/g,\n (\n _,\n backslash: string,\n singleQuote: string,\n normalChar: string,\n ) => {\n if (backslash) {\n return '\\\\'\n }\n if (singleQuote) {\n return '\\''\n }\n return `\\\\${normalChar}`\n },\n )\n }\n\n private parseSymbol(): SymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode {\n const token = this.peek()\n this.advance()\n if (!isSymbolToken(token)) {\n throw new LitsError(`Expected symbol token, got ${token[0]}`, token[2])\n }\n if (token[1][0] === '\\'') {\n return this.stringToSymbolNode(this.stringFromQuotedSymbol(token[1]), token[2])\n }\n else {\n return this.stringToSymbolNode(token[1], token[2])\n }\n }\n\n private parseReservedSymbol(): ReservedSymbolNode | NumberNode {\n const token = asReservedSymbolToken(this.peek())\n this.advance()\n\n const symbol = token[1]\n if (isNumberReservedSymbol(symbol)) {\n return withSourceCodeInfo([NodeTypes.Number, numberReservedSymbolRecord[symbol]], token[2]) satisfies NumberNode\n }\n return withSourceCodeInfo([NodeTypes.ReservedSymbol, token[1]], token[2]) satisfies ReservedSymbolNode\n }\n\n private parseNumber(): NumberNode {\n const token = this.peek()\n this.advance()\n\n const value = token[1]\n const negative = value[0] === '-'\n const numberString = (negative ? value.substring(1) : value).replace(/_/g, '')\n return withSourceCodeInfo([NodeTypes.Number, negative ? -Number(numberString) : Number(numberString)], token[2]) satisfies NumberNode\n }\n\n private parseString(): StringNode {\n const token = this.peek()\n this.advance()\n const value = token[1].substring(1, token[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return withSourceCodeInfo([NodeTypes.String, value], token[2]) satisfies StringNode\n }\n\n private parseRegexpShorthand(): NormalExpressionNodeWithName {\n const token = this.peek()\n this.advance()\n\n const endStringPosition = token[1].lastIndexOf('\"')\n const regexpString = token[1].substring(2, endStringPosition)\n const optionsString = token[1].substring(endStringPosition + 1)\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, regexpString], token[2]) satisfies StringNode\n\n const optionsNode: StringNode = withSourceCodeInfo([NodeTypes.String, optionsString], token[2]) satisfies StringNode\n\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([\n NodeTypes.NormalExpression,\n [\n withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes.regexp as number], token[2]),\n [stringNode, optionsNode],\n ],\n ], token[2])\n\n return node\n }\n}\n","import type { Ast } from '../parser/types'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport { evaluate, evaluateNode } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport type { Ast, LitsFunction, ParseState } from '../parser/types'\nimport { tokenize } from '../tokenizer/tokenize'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { minifyTokenStream } from '../tokenizer/minifyTokenStream'\nimport { transformSymbolTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { builtin } from '../builtin'\nimport { Parser } from '../parser/Parser'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface ContextParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n}\n\nexport interface MinifyParams {\n minify?: boolean\n}\n\nexport interface FilePathParams {\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: ContextParams & FilePathParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public context(programOrAst: string | Ast, params: ContextParams & FilePathParams = {}): Context {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public getUndefinedSymbols(programOrAst: string | Ast, params: ContextParams = {}): Set<string> {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n return getUndefinedSymbols(ast, contextStack, builtin, evaluateNode)\n }\n\n public tokenize(program: string, tokenizeParams: FilePathParams & MinifyParams = {}): TokenStream {\n const tokenStream = tokenize(program, this.debug, tokenizeParams.filePath)\n return tokenizeParams.minify ? minifyTokenStream(tokenStream, { removeWhiteSpace: false }) : tokenStream\n }\n\n public parse(tokenStream: TokenStream): Ast {\n tokenStream = minifyTokenStream(tokenStream, { removeWhiteSpace: true })\n const ast: Ast = {\n body: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n }\n\n ast.body = new Parser(tokenStream, parseState).parse()\n\n return ast\n }\n\n public evaluate(ast: Ast, params: ContextParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transformSymbols(tokenStream: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return transformSymbolTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: ContextParams = {}): Any {\n const fnName = 'FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59'\n const program = this.generateApplyFunctionCall(fnName, fnParams)\n\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateApplyFunctionCall(fnName: string, fnParams: unknown[]) {\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(', ')\n return `${fnName}(${paramsString})`\n }\n\n private generateAst(program: string, params: ContextParams & FilePathParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n filePath: params.filePath,\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { LitsError } from '../errors'\nimport type { Context } from '../evaluator/interface'\nimport { Lits } from '../Lits/Lits'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getCodeMarker } from '../utils/debug/getCodeMarker'\n\ninterface TestChunk {\n name: string\n program: string\n directive: 'SKIP' | null\n}\n\nexport interface RunTestParams {\n testPath: string\n testNamePattern?: RegExp\n}\n\nexport interface TestResult {\n /**\n * Test report\n * http://testanything.org/\n */\n tap: string\n success: boolean\n}\n\nexport function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult {\n const includedFilePaths = getIncludedFilePaths(filePath)\n const testResult: TestResult = {\n tap: 'TAP version 13\\n',\n success: true,\n }\n try {\n const testChunks = getTestChunks(filePath)\n testResult.tap += `1..${testChunks.length}\\n`\n testChunks.forEach((testChunkProgram, index) => {\n const testNumber = index + 1\n if (testNamePattern && !testNamePattern.test(testChunkProgram.name)) {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip - Not matching testNamePattern ${testNamePattern}\\n`\n }\n else if (testChunkProgram.directive === 'SKIP') {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip\\n`\n }\n else {\n try {\n const lits = new Lits({ debug: true })\n const contexts = getContexts(includedFilePaths, lits)\n lits.run(testChunkProgram.program, {\n contexts,\n filePath,\n })\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name}\\n`\n }\n catch (error) {\n testResult.success = false\n testResult.tap += `not ok ${testNumber} ${testChunkProgram.name}${getErrorYaml(error)}`\n }\n }\n })\n }\n catch (error: unknown) {\n testResult.tap += `Bail out! ${getErrorMessage(error)}\\n`\n testResult.success = false\n }\n return testResult\n}\n\nfunction readLitsFile(litsPath: string): string {\n if (!litsPath.endsWith('.lits'))\n throw new Error(`Expected .lits file, got ${litsPath}`)\n\n return fs.readFileSync(litsPath, { encoding: 'utf-8' })\n}\n\nfunction getContexts(includedFilePaths: string[], lits: Lits): Context[] {\n return includedFilePaths.reduce((acc: Context[], filePath) => {\n const fileContent = readLitsFile(filePath)\n acc.push(lits.context(fileContent, { filePath, contexts: acc }))\n return acc\n }, [])\n}\n\nfunction getIncludedFilePaths(absoluteFilePath: string): string[] {\n const result: string[] = []\n getIncludesRecursively(absoluteFilePath, result)\n return result.reduce((acc: string[], entry: string) => {\n if (!acc.includes(entry))\n acc.push(entry)\n\n return acc\n }, [])\n\n function getIncludesRecursively(filePath: string, includedFilePaths: string[]): void {\n const includeFilePaths = readIncludeDirectives(filePath)\n includeFilePaths.forEach((includeFilePath) => {\n getIncludesRecursively(includeFilePath, includedFilePaths)\n includedFilePaths.push(includeFilePath)\n })\n }\n}\n\nfunction readIncludeDirectives(filePath: string): string[] {\n const fileContent = readLitsFile(filePath)\n const dirname = path.dirname(filePath)\n let okToInclude = true\n return fileContent.split('\\n').reduce((acc: string[], line) => {\n const includeMatch = line.match(/^\\s*\\/{2}\\s*@include\\s*(\\S+)\\s*$/)\n if (includeMatch) {\n if (!okToInclude)\n throw new Error(`@include must be in the beginning of file: ${filePath}:${line + 1}`)\n\n const relativeFilePath = includeMatch[1] as string\n acc.push(path.resolve(dirname, relativeFilePath))\n }\n if (!line.match(/^\\s*\\/.*$/))\n okToInclude = false\n\n return acc\n }, [])\n}\n\n// Splitting test file based on @test annotations\nfunction getTestChunks(testPath: string): TestChunk[] {\n const testProgram = readLitsFile(testPath)\n let currentTest: TestChunk | undefined\n let setupCode = ''\n return testProgram.split('\\n').reduce((result: TestChunk[], line, index) => {\n const currentLineNbr = index + 1\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const testNameAnnotationMatch = line.match(/^\\s*\\/{2}\\s*@(?:(skip)-)?test\\s*(.*)$/)\n if (testNameAnnotationMatch) {\n const directive = (testNameAnnotationMatch[1] ?? '').toUpperCase()\n const testName = testNameAnnotationMatch[2]\n if (!testName)\n throw new Error(`Missing test name on line ${currentLineNbr}`)\n\n if (result.find(chunk => chunk.name === testName))\n throw new Error(`Duplicate test name ${testName}`)\n\n currentTest = {\n directive: (directive || null) as TestChunk['directive'],\n name: testName,\n // Adding new-lines to make lits debug information report correct rows\n program:\n setupCode + [...Array(currentLineNbr + 2 - setupCode.split('\\n').length).keys()].map(() => '').join('\\n'),\n }\n result.push(currentTest)\n return result\n }\n if (!currentTest)\n setupCode += `${line}\\n`\n else\n currentTest.program += `${line}\\n`\n\n return result\n }, [])\n}\n\nexport function getErrorYaml(error: unknown): string {\n const message = getErrorMessage(error)\n /* v8 ignore next 7 */\n if (!isAbstractLitsError(error)) {\n return `\n ---\n message: ${JSON.stringify(message)}\n ...\n`\n }\n\n const sourceCodeInfo = error.sourceCodeInfo\n /* v8 ignore next 8 */\n if (!sourceCodeInfo || typeof sourceCodeInfo === 'string') {\n return `\n ---\n message: ${JSON.stringify(message)}\n error: ${JSON.stringify(error.name)}\n ...\n`\n }\n\n const formattedMessage = message.includes('\\n')\n ? `|\\n ${message.split(/\\r?\\n/).join('\\n ')}`\n : JSON.stringify(message)\n return `\n ---\n error: ${JSON.stringify(error.name)}\n message: ${formattedMessage}\n location: ${JSON.stringify(getLocation(sourceCodeInfo))}\n code:\n - \"${sourceCodeInfo.code}\"\n - \"${getCodeMarker(sourceCodeInfo)}\"\n ...\n`\n}\n\nfunction getLocation(sourceCodeInfo: SourceCodeInfo): string {\n const terms: string[] = []\n if (sourceCodeInfo.filePath)\n terms.push(sourceCodeInfo.filePath)\n\n if (sourceCodeInfo.position) {\n terms.push(`${sourceCodeInfo.position.line}`)\n terms.push(`${sourceCodeInfo.position.column}`)\n }\n\n return terms.join(':')\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (!isAbstractLitsError(error)) {\n // error should always be an Error (other cases is just for kicks)\n /* v8 ignore next 1 */\n return typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error'\n }\n return error.shortMessage\n}\n\nfunction isAbstractLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n"],"names":["isLitsFunction"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"testFramework.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.ts","../src/builtin/specialExpressionTypes.ts","../src/constants/constants.ts","../src/utils/symbols.ts","../src/utils/debug/debugTools.ts","../src/utils/debug/getSourceCodeInfo.ts","../src/utils/getAssertionError.ts","../src/typeGuards/astNode.ts","../src/getUndefinedSymbols/index.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/array.ts","../src/builtin/normalExpressions/categories/sequence.ts","../src/builtin/normalExpressions/categories/math.ts","../src/builtin/normalExpressions/categories/misc.ts","../src/builtin/normalExpressions/categories/assert.ts","../src/builtin/normalExpressions/categories/object.ts","../src/builtin/normalExpressions/categories/predicates.ts","../src/builtin/normalExpressions/categories/regexp.ts","../src/builtin/normalExpressions/categories/string.ts","../src/builtin/normalExpressions/categories/functional.ts","../src/builtin/normalExpressions/index.ts","../src/builtin/specialExpressions/and.ts","../src/builtin/specialExpressions/cond.ts","../src/builtin/specialExpressions/switch.ts","../src/builtin/specialExpressions/defined.ts","../src/parser/types.ts","../src/builtin/bindingNode.ts","../src/builtin/specialExpressions/def.ts","../src/builtin/specialExpressions/do.ts","../src/tokenizer/reservedNames.ts","../src/builtin/utils.ts","../src/builtin/specialExpressions/functions.ts","../src/builtin/specialExpressions/if.ts","../src/builtin/specialExpressions/unless.ts","../src/builtin/specialExpressions/let.ts","../src/builtin/specialExpressions/loop.ts","../src/builtin/specialExpressions/loops.ts","../src/builtin/specialExpressions/or.ts","../src/builtin/specialExpressions/qq.ts","../src/builtin/specialExpressions/recur.ts","../src/builtin/specialExpressions/throw.ts","../src/builtin/specialExpressions/try.ts","../src/builtin/specialExpressions/array.ts","../src/builtin/specialExpressions/object.ts","../src/builtin/index.ts","../src/evaluator/functionExecutors.ts","../src/evaluator/index.ts","../src/evaluator/interface.ts","../src/evaluator/ContextStack.ts","../src/tokenizer/operators.ts","../src/tokenizer/tokenizers.ts","../src/tokenizer/tokenize.ts","../src/tokenizer/token.ts","../src/tokenizer/minifyTokenStream.ts","../src/transformer/index.ts","../src/untokenizer/index.ts","../src/parser/Parser.ts","../src/Lits/Cache.ts","../src/Lits/Lits.ts","../src/testFramework/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getCodeMarker(sourceCodeInfo: SourceCodeInfo): string {\n if (!sourceCodeInfo.position || !sourceCodeInfo.code)\n return ''\n\n const leftPadding = sourceCodeInfo.position.column - 1\n const rightPadding = sourceCodeInfo.code.length - leftPadding - 1\n return `${' '.repeat(Math.max(leftPadding, 0))}^${' '.repeat(Math.max(rightPadding, 0))}`\n}\n","import { getCodeMarker } from '../src/utils/debug/getCodeMarker'\nimport type { Arr } from './interface'\nimport type { SourceCodeInfo } from './tokenizer/token'\n\nfunction getLitsErrorMessage(message: string, sourceCodeInfo?: SourceCodeInfo) {\n if (!sourceCodeInfo) {\n return message\n }\n const location = `${sourceCodeInfo.position.line}:${sourceCodeInfo.position.column}`\n const filePathLine = sourceCodeInfo.filePath\n ? `\\n${sourceCodeInfo.filePath}:${location}`\n : `\\nLocation ${location}`\n const codeLine = `\\n${sourceCodeInfo.code}`\n const codeMarker = `\\n${getCodeMarker(sourceCodeInfo)}`\n return `${message}${filePathLine}${codeLine}${codeMarker}`\n}\n\nexport class RecurSignal extends Error {\n public params: Arr\n constructor(params: Arr) {\n super(`recur, params: ${params}`)\n Object.setPrototypeOf(this, RecurSignal.prototype)\n this.name = 'RecurSignal'\n this.params = params\n }\n}\n\nexport class LitsError extends Error {\n public readonly sourceCodeInfo?: SourceCodeInfo\n public readonly shortMessage: string\n constructor(message: string | Error, sourceCodeInfo: SourceCodeInfo | undefined) {\n if (message instanceof Error)\n message = `${message.name}${message.message}`\n\n super(getLitsErrorMessage(message, sourceCodeInfo))\n this.shortMessage = message\n this.sourceCodeInfo = sourceCodeInfo\n Object.setPrototypeOf(this, LitsError.prototype)\n this.name = 'LitsError'\n }\n\n public getCodeMarker(): string | undefined {\n return this.sourceCodeInfo && getCodeMarker(this.sourceCodeInfo)\n }\n}\n\nexport class NotAFunctionError extends LitsError {\n constructor(fn: unknown, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Expected function, got ${fn}.`\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, NotAFunctionError.prototype)\n this.name = 'NotAFunctionError'\n }\n}\n\nexport class UserDefinedError extends LitsError {\n public userMessage: string\n constructor(message: string, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n this.userMessage = message\n Object.setPrototypeOf(this, UserDefinedError.prototype)\n this.name = 'UserDefinedError'\n }\n}\n\nexport class AssertionError extends LitsError {\n constructor(message: string | Error, sourceCodeInfo?: SourceCodeInfo) {\n super(message, sourceCodeInfo)\n Object.setPrototypeOf(this, AssertionError.prototype)\n this.name = 'AssertionError'\n }\n}\n\nexport class UndefinedSymbolError extends LitsError {\n public symbol: string\n constructor(symbolName: string, sourceCodeInfo?: SourceCodeInfo) {\n const message = `Undefined symbol '${symbolName}'.`\n super(message, sourceCodeInfo)\n this.symbol = symbolName\n Object.setPrototypeOf(this, UndefinedSymbolError.prototype)\n this.name = 'UndefinedSymbolError'\n }\n}\n\nexport function isLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n","export const specialExpressionTypes = {\n '??': 0,\n '&&': 1,\n '||': 2,\n 'array': 3,\n 'cond': 4,\n '0_def': 5,\n 'defined?': 6,\n '0_defn': 7,\n 'do': 8,\n 'doseq': 9,\n '0_fn': 10,\n 'for': 11,\n 'function': 12,\n 'if': 13,\n 'let': 14,\n 'loop': 15,\n 'object': 16,\n 'recur': 17,\n 'switch': 18,\n 'throw': 19,\n 'try': 20,\n 'unless': 21,\n} as const\n\nexport type SpecialExpressionTypes = typeof specialExpressionTypes\n","export const NodeTypes = {\n Number: 1,\n String: 2,\n NormalExpression: 3,\n SpecialExpression: 4,\n UserDefinedSymbol: 5,\n NormalBuiltinSymbol: 6,\n SpecialBuiltinSymbol: 7,\n ReservedSymbol: 8,\n Binding: 9,\n Spread: 10,\n} as const\n\nconst NodeTypesSet = new Set(Object.values(NodeTypes))\n\nexport type NodeType = typeof NodeTypes[keyof typeof NodeTypes]\n\nexport function getNodeTypeName(type: NodeType): keyof typeof NodeTypes {\n return Object.keys(NodeTypes).find(key => NodeTypes[key as keyof typeof NodeTypes] === type) as keyof typeof NodeTypes\n}\n\n// TODO, is this needed?\nexport function isNodeType(type: unknown): type is NodeType {\n return typeof type === 'number' && NodeTypesSet.has(type as NodeType)\n}\n\nconst functionTypes = [\n 'UserDefined',\n 'Partial',\n 'Comp',\n 'Constantly',\n 'Juxt',\n 'Complement',\n 'EveryPred',\n 'SomePred',\n 'Fnull',\n 'Builtin',\n 'SpecialBuiltin',\n 'NativeJsFunction',\n] as const\n\nconst functionTypeSet = new Set(functionTypes)\n\nexport type FunctionType = typeof functionTypes[number]\n\nexport function isFunctionType(type: unknown): type is FunctionType {\n return typeof type === 'string' && functionTypeSet.has(type as FunctionType)\n}\n","export const FUNCTION_SYMBOL = '^^fn^^'\nexport const REGEXP_SYMBOL = '^^re^^'\n","import { getNodeTypeName, isFunctionType, isNodeType } from '../../constants/constants'\nimport type { LitsFunction, Node } from '../../parser/types'\nimport { FUNCTION_SYMBOL } from '../symbols'\n\nfunction isLitsFunction(func: unknown): func is LitsFunction {\n if (func === null || typeof func !== 'object')\n return false\n\n return FUNCTION_SYMBOL in func && 'functionType' in func && isFunctionType(func.functionType)\n}\n\nfunction isNode(value: unknown): value is Node {\n if (!Array.isArray(value) || value.length < 2)\n return false\n return isNodeType(value[0])\n}\n\nexport function valueToString(value: unknown): string {\n if (isLitsFunction(value))\n // eslint-disable-next-line ts/no-unsafe-member-access\n return `<function ${(value as any).name || '\\u03BB'}>`\n\n if (isNode(value))\n return `${getNodeTypeName(value[0])}-node`\n\n if (value === null)\n return 'null'\n\n if (typeof value === 'object' && value instanceof RegExp)\n return `${value}`\n\n if (typeof value === 'object' && value instanceof Error)\n return value.toString()\n\n return JSON.stringify(value)\n}\n","import type { SourceCodeInfo } from '../../tokenizer/token'\n\nexport function getSourceCodeInfo(anyValue: any, sourceCodeInfo: SourceCodeInfo | undefined): SourceCodeInfo | undefined {\n // eslint-disable-next-line ts/no-unsafe-return, ts/no-unsafe-member-access\n return anyValue?.sourceCodeInfo ?? sourceCodeInfo\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from './debug/debugTools'\nimport { getSourceCodeInfo } from './debug/getSourceCodeInfo'\n\nexport function getAssertionError(typeName: string, value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsError {\n return new LitsError(`Expected ${typeName}, got ${valueToString(value)}.`, getSourceCodeInfo(value, sourceCodeInfo))\n}\n","import { NodeTypes } from '../constants/constants'\nimport type {\n ExpressionNode,\n Node,\n NormalBuiltinSymbolNode,\n NormalExpressionNode,\n NormalExpressionNodeWithName,\n SpecialBuiltinSymbolNode,\n SpreadNode,\n SymbolNode,\n UserDefinedSymbolNode,\n} from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\nexport function isSymbolNode(node: Node): node is SymbolNode {\n const nodeType = node[0]\n return NodeTypes.UserDefinedSymbol === nodeType\n || NodeTypes.NormalBuiltinSymbol === nodeType\n || NodeTypes.SpecialBuiltinSymbol === nodeType\n}\nexport function asSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): SymbolNode {\n assertSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is SymbolNode {\n if (!isSymbolNode(node))\n throw getAssertionError('SymbolNode', node, sourceCodeInfo)\n}\n\nexport function isUserDefinedSymbolNode(node: Node): node is UserDefinedSymbolNode {\n return NodeTypes.UserDefinedSymbol === node[0]\n}\nexport function asUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): UserDefinedSymbolNode {\n assertUserDefinedSymbolNode(node, sourceCodeInfo)\n return node\n}\nexport function assertUserDefinedSymbolNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is UserDefinedSymbolNode {\n if (!isUserDefinedSymbolNode(node))\n throw getAssertionError('UserDefinedSymbolNode', node, sourceCodeInfo)\n}\n\nexport function isNormalBuiltinSymbolNode(node: Node): node is NormalBuiltinSymbolNode {\n return NodeTypes.NormalBuiltinSymbol === node[0]\n}\n\nexport function isSpecialBuiltinSymbolNode(node: Node): node is SpecialBuiltinSymbolNode {\n return NodeTypes.SpecialBuiltinSymbol === node[0]\n}\n\nexport function isNormalExpressionNode(node: Node): node is NormalExpressionNode {\n return node[0] === NodeTypes.NormalExpression\n}\nexport function asNormalExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): NormalExpressionNode {\n assertNormalExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNode(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNode {\n if (!isNormalExpressionNode(node))\n throw getAssertionError('NormalExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isNormalExpressionNodeWithName(node: Node): node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNode(node)) {\n return false\n }\n return isSymbolNode(node[1][0])\n}\nexport function asNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): NormalExpressionNodeWithName {\n assertNormalExpressionNodeWithName(node, sourceCodeInfo)\n return node\n}\nexport function assertNormalExpressionNodeWithName(\n node: Node,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts node is NormalExpressionNodeWithName {\n if (!isNormalExpressionNodeWithName(node))\n throw getAssertionError('NormalExpressionNodeWithName', node, sourceCodeInfo)\n}\n\nexport function isExpressionNode(node: Node): node is ExpressionNode {\n return isNormalExpressionNode(node)\n || node[0] === NodeTypes.SpecialExpression\n || node[0] === NodeTypes.Number\n || node[0] === NodeTypes.String\n}\nexport function asExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): ExpressionNode {\n assertExpressionNode(node, sourceCodeInfo)\n return node\n}\nexport function assertExpressionNode(node: Node, sourceCodeInfo?: SourceCodeInfo): asserts node is ExpressionNode {\n if (!isExpressionNode(node))\n throw getAssertionError('ExpressionNode', node, sourceCodeInfo)\n}\n\nexport function isSpreadNode(node: Node): node is SpreadNode {\n return node[0] === NodeTypes.Spread\n}\n","import type { Builtin } from '../builtin/interface'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { EvaluateNode } from '../evaluator/interface'\nimport type { Ast, Node, NormalExpressionNode, SpecialExpressionNode, SpreadNode, UserDefinedSymbolNode } from '../parser/types'\nimport { isNormalExpressionNodeWithName, isUserDefinedSymbolNode } from '../typeGuards/astNode'\n\nexport type UndefinedSymbols = Set<string>\n\nexport const getUndefinedSymbols: GetUndefinedSymbols = (ast, contextStack, builtin, evaluateNode) => {\n const nodes: Node[] = Array.isArray(ast)\n ? ast\n : [[NodeTypes.SpecialExpression, [specialExpressionTypes.do, ast.body]] satisfies DoNode]\n\n const unresolvedSymbols = new Set<string>()\n\n for (const subNode of nodes) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)\n ?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n}\n\nexport type GetUndefinedSymbols = (ast: Ast | Node[], contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode) => UndefinedSymbols\n\nfunction findUnresolvedSymbolsInNode(node: Node, contextStack: ContextStack, builtin: Builtin, evaluateNode: EvaluateNode): UndefinedSymbols | null {\n const nodeType = node[0]\n switch (nodeType) {\n case NodeTypes.UserDefinedSymbol: {\n const symbolNode = node as UserDefinedSymbolNode\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n return new Set([symbolNode[1]])\n\n return null\n }\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.String:\n case NodeTypes.Number:\n case NodeTypes.ReservedSymbol:\n case NodeTypes.Binding:\n return null\n case NodeTypes.NormalExpression: {\n const normalExpressionNode = node as NormalExpressionNode\n const unresolvedSymbols = new Set<string>()\n if (isNormalExpressionNodeWithName(normalExpressionNode)) {\n const [, [symbolNode]] = normalExpressionNode\n if (isUserDefinedSymbolNode(symbolNode)) {\n const lookUpResult = contextStack.lookUp(symbolNode)\n if (lookUpResult === null)\n unresolvedSymbols.add(symbolNode[1])\n }\n }\n else {\n const [, [expressionNode]] = normalExpressionNode\n findUnresolvedSymbolsInNode(expressionNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n for (const subNode of normalExpressionNode[1][1]) {\n findUnresolvedSymbolsInNode(subNode, contextStack, builtin, evaluateNode)?.forEach(symbol => unresolvedSymbols.add(symbol))\n }\n return unresolvedSymbols\n }\n case NodeTypes.SpecialExpression: {\n const specialExpressionNode = node as SpecialExpressionNode\n const specialExpressionType = specialExpressionNode[1][0]\n const specialExpression = builtin.specialExpressions[specialExpressionType]\n\n const castedGetUndefinedSymbols = specialExpression.getUndefinedSymbols as Function\n\n return castedGetUndefinedSymbols(specialExpressionNode, contextStack, {\n getUndefinedSymbols,\n builtin,\n evaluateNode,\n }) as UndefinedSymbols\n }\n case NodeTypes.Spread:\n return findUnresolvedSymbolsInNode((node as SpreadNode)[1], contextStack, builtin, evaluateNode)\n\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unhandled node type: ${nodeType satisfies never}`, node[2])\n }\n}\n","import { LitsError } from '../errors'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\ntype SignOptions =\n | {\n positive?: true\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: true\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: true\n nonNegative?: never\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: true\n zero?: never\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: true\n nonZero?: never\n }\n | {\n positive?: never\n negative?: never\n nonPositive?: never\n nonNegative?: never\n zero?: never\n nonZero?: true\n }\n\ntype GtOptions =\n | {\n gt?: number\n gte?: never\n }\n | {\n gt?: never\n gte?: number\n }\n\ntype LtOptions =\n | {\n lt?: number\n lte?: never\n }\n | {\n lt?: never\n lte?: number\n }\n\ntype NumberOptions = {\n integer?: true\n finite?: true\n} & SignOptions &\nGtOptions &\nLtOptions\n\nfunction getRangeString(options: NumberOptions): string {\n const hasUpperAndLowerBound\n = (typeof options.gt === 'number' || typeof options.gte === 'number')\n && (typeof options.lt === 'number' || typeof options.lte === 'number')\n if (hasUpperAndLowerBound) {\n return `${typeof options.gt === 'number' ? `${options.gt} < n ` : `${options.gte} <= n `}${\n typeof options.lt === 'number' ? `< ${options.lt}` : `<= ${options.lte}`\n }`\n }\n else if (typeof options.gt === 'number' || typeof options.gte === 'number') {\n return `${typeof options.gt === 'number' ? `n > ${options.gt}` : `n >= ${options.gte}`}`\n }\n else if (typeof options.lt === 'number' || typeof options.lte === 'number') {\n return `${typeof options.lt === 'number' ? `n < ${options.lt}` : `n <= ${options.lte}`}`\n }\n else { return '' }\n}\n\nfunction getSignString(options: NumberOptions): string {\n return options.positive\n ? 'positive'\n : options.negative\n ? 'negative'\n : options.nonNegative\n ? 'non negative'\n : options.nonPositive\n ? 'non positive'\n : options.nonZero\n ? 'non zero'\n : ''\n}\n\nfunction getNumberTypeName(options: NumberOptions): string {\n if (options.zero)\n return 'zero'\n\n const sign = getSignString(options)\n const numberType = options.integer ? 'integer' : 'number'\n const finite = options.finite ? 'finite' : ''\n const range = getRangeString(options)\n\n return [sign, finite, numberType, range].filter(x => !!x).join(' ')\n}\n\nexport function isNumber(value: unknown, options: NumberOptions = {}): value is number {\n if (typeof value !== 'number')\n return false\n\n if (options.integer && !Number.isInteger(value))\n return false\n\n if (options.finite && !Number.isFinite(value))\n return false\n\n if (options.zero && value !== 0)\n return false\n\n if (options.nonZero && value === 0)\n return false\n\n if (options.positive && value <= 0)\n return false\n\n if (options.negative && value >= 0)\n return false\n\n if (options.nonPositive && value > 0)\n return false\n\n if (options.nonNegative && value < 0)\n return false\n\n if (typeof options.gt === 'number' && value <= options.gt)\n return false\n\n if (typeof options.gte === 'number' && value < options.gte)\n return false\n\n if (typeof options.lt === 'number' && value >= options.lt)\n return false\n\n if (typeof options.lte === 'number' && value > options.lte)\n return false\n\n return true\n}\n\nexport function assertNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n options: NumberOptions = {},\n): asserts value is number {\n if (!isNumber(value, options)) {\n throw new LitsError(\n `Expected ${getNumberTypeName(options)}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asNumber(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: NumberOptions = {},\n): number {\n assertNumber(value, sourceCodeInfo, options)\n return value\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const bitwiseNormalExpression: BuiltinNormalExpressions = {\n '<<': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num << count\n },\n paramCount: 2,\n },\n '>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >> count\n },\n paramCount: 2,\n },\n '>>>': {\n evaluate: ([num, count], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return num >>> count\n },\n paramCount: 2,\n },\n '~': {\n evaluate: ([num], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n return ~num\n },\n paramCount: 1,\n },\n '&': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-and-not': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result & ~value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '|': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result | value\n }, first)\n },\n paramCount: { min: 2 },\n },\n '^': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo, { integer: true })\n\n return rest.reduce((result: number, value) => {\n assertNumber(value, sourceCodeInfo, { integer: true })\n return result ^ value\n }, first)\n },\n paramCount: { min: 2 },\n },\n 'bit-flip': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num ^= mask)\n },\n paramCount: 2,\n },\n 'bit-set': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num |= mask)\n },\n paramCount: 2,\n },\n 'bit-clear': {\n evaluate: ([num, index], sourceCodeInfo): number => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return (num &= ~mask)\n },\n paramCount: 2,\n },\n 'bit-test': {\n evaluate: ([num, index], sourceCodeInfo): boolean => {\n assertNumber(num, sourceCodeInfo, { integer: true })\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const mask = 1 << index\n return !!(num & mask)\n },\n paramCount: 2,\n },\n}\n","import type { Count } from '../builtin/interface'\nimport { getNodeTypeName } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport type { UnknownRecord } from '../interface'\nimport type { NormalExpressionNodeWithName } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { valueToString } from '../utils/debug/debugTools'\nimport { getSourceCodeInfo } from '../utils/debug/getSourceCodeInfo'\n\nexport function assertNumberOfParams(count: Count, node: NormalExpressionNodeWithName): void {\n const length = node[1][1].length\n if (typeof count === 'number') {\n if (length !== count) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected ${count}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n else {\n const { min, max, even, odd } = count\n if (even) {\n const name = getNodeTypeName(node[0])\n if (length % 2 !== 0) {\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an even number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (odd) {\n if (length % 2 !== 1) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\",, expected an odd number, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n\n if (typeof min === 'number' && length < min) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at least ${min}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n\n if (typeof max === 'number' && length > max) {\n const name = getNodeTypeName(node[0])\n throw new LitsError(\n `Wrong number of arguments to \"${name}\", expected at most ${max}, got ${valueToString(length)}.`,\n node[2],\n )\n }\n }\n}\n\nexport function isNonUndefined<T>(value: T | undefined): value is T {\n return value !== undefined\n}\n\nexport function asNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): T {\n assertNonUndefined(value, sourceCodeInfo)\n return value\n}\n\nexport function assertNonUndefined<T>(value: T | undefined, sourceCodeInfo?: SourceCodeInfo): asserts value is T {\n if (!isNonUndefined(value))\n throw new LitsError('Unexpected undefined', getSourceCodeInfo(value, sourceCodeInfo))\n}\n\nexport function isUnknownRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nexport function assertUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is UnknownRecord {\n if (!isUnknownRecord(value)) {\n throw new LitsError(\n `Expected ${'UnknownRecord'}, got ${valueToString(value)}.`,\n getSourceCodeInfo(value, sourceCodeInfo),\n )\n }\n}\n\nexport function asUnknownRecord(value: unknown, sourceCodeInfo?: SourceCodeInfo): UnknownRecord {\n assertUnknownRecord(value, sourceCodeInfo)\n return value\n}\n\nexport function canBeOperator(count: Count): boolean {\n if (typeof count === 'number') {\n return count === 2\n }\n\n if (count.odd) {\n return false\n }\n\n if (typeof count.max === 'number' && count.max < 2) {\n return false\n }\n\n if (typeof count.min === 'number' && count.min > 2) {\n return false\n }\n\n return true\n}\n","import { getAssertionError } from '../utils/getAssertionError'\nimport type { LitsFunction, NativeJsFunction, NormalBuiltinFunction, UserDefinedFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport { isUnknownRecord } from '.'\n\nexport function isLitsFunction(value: unknown): value is LitsFunction {\n if (value === null || typeof value !== 'object')\n return false\n\n return !!(value as LitsFunction)[FUNCTION_SYMBOL]\n}\nexport function asLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): LitsFunction {\n assertLitsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertLitsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is LitsFunction {\n if (!isLitsFunction(value))\n throw getAssertionError('LitsFunction', value, sourceCodeInfo)\n}\n\nexport function isUserDefinedFunction(value: unknown): value is UserDefinedFunction {\n return isLitsFunction(value) && value.functionType === 'UserDefined'\n}\nexport function asUserDefinedFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): UserDefinedFunction {\n assertUserDefinedFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertUserDefinedFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is UserDefinedFunction {\n if (!isUserDefinedFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isNativeJsFunction(value: unknown): value is NativeJsFunction {\n return isLitsFunction(value) && value.functionType === 'NativeJsFunction'\n}\nexport function asNativeJsFunction(value: unknown, sourceCodeInfo?: SourceCodeInfo): NativeJsFunction {\n assertNativeJsFunction(value, sourceCodeInfo)\n return value\n}\nexport function assertNativeJsFunction(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is NativeJsFunction {\n if (!isNativeJsFunction(value))\n throw getAssertionError('NativeJsFunction', value, sourceCodeInfo)\n}\n\nexport function isBuiltinFunction(value: unknown): value is NormalBuiltinFunction {\n return isUnknownRecord(value) && value.functionType === 'Builtin'\n}\n","import type { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Coll, Obj } from '../interface'\nimport type { NativeJsFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString, assertStringOrNumber } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { LitsError } from '../errors'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\nexport function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a < b ? -1 : a > b ? 1 : 0\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.sign((a) - (b))\n }\n throw new LitsError(`Cannot compare values of different types: ${typeof a} and ${typeof b}`, sourceCodeInfo)\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n nativeFn: {\n fn,\n },\n name,\n functionType: 'NativeJsFunction',\n }\n}\n\nexport function joinSets<T>(...results: Set<T>[]): Set<T> {\n const result = new Set<T>()\n for (const symbols of results)\n symbols.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addToSet<T>(target: Set<T>, source: Set<T>): void {\n source.forEach(symbol => target.add(symbol))\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { cloneColl, collHasKey, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asAny, asColl, assertAny, assertColl, assertObj, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString, isStringOrNumber } from '../../../typeGuards/string'\nimport type { LitsFunction } from '../../../parser/types'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // null behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isString(coll)) {\n assertString(key, sourceCodeInfo)\n return coll.includes(key)\n }\n if (isSeq(coll)) {\n assertAny(key, sourceCodeInfo)\n return !!coll.find(elem => deepEqual(asAny(elem), key, sourceCodeInfo))\n }\n assertString(key, sourceCodeInfo)\n return key in coll\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n '++': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (!isNumber(params[0])) {\n assertColl(params[0], sourceCodeInfo)\n }\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isStringOrNumber(params[0])) {\n return params.reduce((result: string, s) => {\n assertStringOrNumber(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n aliases: ['concat'],\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { collHasKey, compare, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }) => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n return seq.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return seq\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 paramCount: 2,\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last-index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findLastIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'splice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, start, deleteCount, ...rest] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { integer: true })\n assertNumber(deleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const from = start < 0 ? seq.length + start : start\n\n if (Array.isArray(seq)) {\n return [...seq.slice(0, from), ...rest, ...seq.slice(from + deleteCount)]\n }\n\n rest.forEach(elem => assertString(elem, sourceCodeInfo))\n return `${seq.substring(0, from)}${rest.join('')}${seq.substring(from + deleteCount)}`\n },\n paramCount: { min: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n\n if (Array.isArray(input)) {\n const result: Any[] = []\n for (const item of input) {\n assertAny(item, sourceCodeInfo)\n if (!result.some(existingItem => deepEqual(existingItem, item, sourceCodeInfo))) {\n result.push(item)\n }\n }\n return result\n }\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove-at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo, { integer: true })\n assertSeq(input, sourceCodeInfo)\n\n const at = index < 0 ? input.length + index : index\n if (at < 0 || at >= input.length)\n return input\n\n if (Array.isArray(input)) {\n return input.filter((_, i) => i !== at)\n }\n return `${input.substring(0, at)}${input.substring(at + 1)}`\n },\n paramCount: 2,\n },\n 'split-at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { integer: true })\n assertSeq(seq, sourceCodeInfo)\n\n const at = pos < 0 ? seq.length + pos : pos\n return [seq.slice(0, at), seq.slice(at)]\n },\n paramCount: 2,\n },\n\n 'split-with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends-with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return deepEqual(asAny(str.at(-1), sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'starts-with?': {\n evaluate: ([seq, search], sourceCodeInfo): boolean => {\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n assertString(search, sourceCodeInfo)\n return seq.startsWith(search)\n }\n\n return deepEqual(asAny(seq[0], sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n return seq.split('')\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n aliases: ['rem'],\n },\n\n '√': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n aliases: ['sqrt'],\n },\n\n '∛': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n aliases: ['cbrt'],\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '=': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n aliases: ['!='],\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '≥': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['>='],\n },\n '≤': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['<='],\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first, null, 2)} to deep equal ${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be null.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split-lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/types'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Partial',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n }\n },\n paramCount: {},\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n 'juxt': {\n evaluate: (params, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Juxt',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Complement',\n function: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n 'every-pred': {\n evaluate: (params, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'EveryPred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'some-pred': {\n evaluate: (params, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'SomePred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'fnull': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNullFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Fnull',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nconst expressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n\nconst aliases: BuiltinNormalExpressions = {}\n\nObject.values(expressions).forEach((normalExpression) => {\n normalExpression.aliases?.forEach((alias) => {\n aliases[alias] = normalExpression\n })\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n ...aliases,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = true\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (!value)\n break\n }\n return value\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import type { SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { assertSymbolNode, isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefinedNode = SpecialExpressionNode<[typeof specialExpressionTypes['defined?'], SymbolNode]>\n\nexport const definedSpecialExpression: BuiltinSpecialExpression<boolean, DefinedNode> = {\n paramCount: 1,\n evaluate: (node, contextStack) => {\n const symbolNode = node[1][1]\n assertSymbolNode(symbolNode)\n if (!isUserDefinedSymbolNode(symbolNode)) {\n return true // If the symbol is not a user defined symbol, it is defined. normal or special builtin\n }\n const lookUpResult = contextStack.lookUp(symbolNode)\n return lookUpResult !== null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { JsFunction } from '../Lits/Lits'\nimport type { SpecialExpressionType } from '../builtin'\nimport type { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport type { FunctionType, NodeType, NodeTypes } from '../constants/constants'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Arr } from '../interface'\nimport type { ReservedSymbol } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo, Token } from '../tokenizer/token'\nimport type { FUNCTION_SYMBOL, REGEXP_SYMBOL } from '../utils/symbols'\n\nexport interface ParseState {\n position: number\n}\n\nexport type EvaluatedFunction = [BindingTarget[], Node[], Context]\n\ninterface GenericLitsFunction {\n [FUNCTION_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n functionType: FunctionType\n}\n\nexport interface RegularExpression {\n [REGEXP_SYMBOL]: true\n sourceCodeInfo?: SourceCodeInfo\n s: string\n f: string\n}\n\nexport interface NativeJsFunction extends GenericLitsFunction {\n functionType: 'NativeJsFunction'\n name: string | undefined // name\n nativeFn: JsFunction\n}\n\nexport interface UserDefinedFunction extends GenericLitsFunction {\n functionType: 'UserDefined'\n name: string | undefined // name\n evaluatedfunction: EvaluatedFunction\n}\n\nexport interface PartialFunction extends GenericLitsFunction {\n functionType: 'Partial'\n function: Any\n params: Arr\n}\n\nexport interface CompFunction extends GenericLitsFunction {\n functionType: 'Comp'\n params: Arr\n}\n\nexport interface ConstantlyFunction extends GenericLitsFunction {\n functionType: 'Constantly'\n value: Any\n}\n\nexport interface JuxtFunction extends GenericLitsFunction {\n functionType: 'Juxt'\n params: Arr\n}\n\nexport interface ComplementFunction extends GenericLitsFunction {\n functionType: 'Complement'\n function: Any\n}\n\nexport interface EveryPredFunction extends GenericLitsFunction {\n functionType: 'EveryPred'\n params: Arr\n}\n\nexport interface SomePredFunction extends GenericLitsFunction {\n functionType: 'SomePred'\n params: Arr\n}\n\nexport interface FNullFunction extends GenericLitsFunction {\n functionType: 'Fnull'\n function: Any\n params: Arr\n}\n\nexport interface NormalBuiltinFunction extends GenericLitsFunction {\n functionType: 'Builtin'\n normalBuitinSymbolType: number\n}\n\nexport interface SpecialBuiltinFunction extends GenericLitsFunction {\n functionType: 'SpecialBuiltin'\n specialBuiltinSymbolType:\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['recur']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['??']\n}\n\nexport type LitsFunction =\n | NativeJsFunction\n | UserDefinedFunction\n | NormalBuiltinFunction\n | SpecialBuiltinFunction\n | PartialFunction\n | CompFunction\n | ConstantlyFunction\n | JuxtFunction\n | ComplementFunction\n | EveryPredFunction\n | SomePredFunction\n | FNullFunction\n\nexport type LitsFunctionType = LitsFunction['functionType']\n\nexport type DebugData = {\n token: Token\n nameToken?: Token\n}\nexport type Node<T extends NodeType = NodeType, Payload = unknown> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type ExpressionNode = NormalExpressionNode | SpecialExpressionNode | NumberNode | StringNode\n\nexport type SpreadNode = Node<typeof NodeTypes.Spread, Node> // Payload should be array or object depending on context\nexport type NumberNode = Node<typeof NodeTypes.Number, number>\nexport type StringNode = Node<typeof NodeTypes.String, string>\nexport type UserDefinedSymbolNode = Node<typeof NodeTypes.UserDefinedSymbol, string>\nexport type NormalBuiltinSymbolNode = Node<typeof NodeTypes.NormalBuiltinSymbol, number>\nexport type SpecialBuiltinSymbolNode = Node<typeof NodeTypes.SpecialBuiltinSymbol, SpecialExpressionType>\nexport type SymbolNode = UserDefinedSymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode\nexport type ReservedSymbolNode = Node<typeof NodeTypes.ReservedSymbol, ReservedSymbol>\nexport type SpecialExpressionNode<T extends [SpecialExpressionType, ...unknown[]] = [SpecialExpressionType, ...unknown[]]> = Node<typeof NodeTypes.SpecialExpression, T> // [name, params]\n\nexport type NormalExpressionNodeWithName = Node<typeof NodeTypes.NormalExpression, [NormalBuiltinSymbolNode | UserDefinedSymbolNode, Node[]]> // [params, name]\nexport type NormalExpressionNodeExpression = Node<typeof NodeTypes.NormalExpression, [Node, Node[]]> // [name, node as function] node can be string number object or array\nexport type NormalExpressionNode = NormalExpressionNodeWithName | NormalExpressionNodeExpression\nexport const bindingTargetTypes = {\n symbol: 11,\n rest: 12,\n object: 13,\n array: 14,\n} as const\n\nexport type BindingTargetType = typeof bindingTargetTypes[keyof typeof bindingTargetTypes]\n\ntype GenericTarget<T extends BindingTargetType, Payload extends unknown[]> = [T, Payload] | [T, Payload, SourceCodeInfo]\n\nexport type SymbolBindingTarget = GenericTarget<typeof bindingTargetTypes.symbol, [SymbolNode, Node | undefined]>\nexport type RestBindingTarget = GenericTarget<typeof bindingTargetTypes.rest, [string, Node | undefined]>\nexport type ObjectBindingTarget = GenericTarget<typeof bindingTargetTypes.object, [Record<string, BindingTarget>, Node | undefined]>\nexport type ArrayBindingTarget = GenericTarget<typeof bindingTargetTypes.array, [(BindingTarget | null)[], Node | undefined]>\n\nexport type BindingTarget = SymbolBindingTarget | RestBindingTarget | ObjectBindingTarget | ArrayBindingTarget\n\nexport type BindingNode = Node<typeof NodeTypes.Binding, [BindingTarget, Node]> // [target, value]\n\ntype AstBody = Node[]\nexport interface Ast {\n body: AstBody // body\n hasDebugData: boolean\n}\n","import { LitsError } from '../errors'\nimport type { Any } from '../interface'\nimport { type BindingTarget, type Node, type RestBindingTarget, type UserDefinedSymbolNode, bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { assertUnknownRecord } from '../typeGuards'\nimport { assertArray } from '../typeGuards/array'\nimport { asAny, assertAny } from '../typeGuards/lits'\n\nexport function walkDefaults(\n bindingTarget: BindingTarget,\n onDefault: (Node: Node) => void,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n Object.values(bindingTarget[1][0]).forEach((element) => {\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n })\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[1][1]) {\n onDefault(element[1][1])\n }\n walkDefaults(element, onDefault)\n }\n }\n}\n\nexport function evalueateBindingNodeValues(\n target: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n): Record<string, Any> {\n const sourceCodeInfo = target[2]\n const record: Record<string, Any> = {}\n createRecord(target, value, evaluate, sourceCodeInfo, record)\n return record\n}\n\nfunction createRecord(\n bindingTarget: BindingTarget,\n value: Any,\n evaluate: (Node: Node) => Any,\n sourceCodeInfo: SourceCodeInfo | undefined,\n record: Record<string, Any>,\n): void {\n if (bindingTarget[0] === bindingTargetTypes.object) {\n assertUnknownRecord(value, sourceCodeInfo)\n const capturedKeys = new Set<string>()\n let restElement: RestBindingTarget | undefined\n Object.entries(bindingTarget[1][0]).forEach(([key, element]) => {\n if (element[0] === bindingTargetTypes.rest) {\n restElement = element\n return\n }\n capturedKeys.add(key)\n const val = (value[key] !== undefined ? value[key] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n })\n if (restElement) {\n const restValues = Object.entries(value)\n .filter(([key]) => !capturedKeys.has(key))\n .reduce((acc: Record<string, Any>, [key, val]) => {\n acc[key] = asAny(val)\n return acc\n }, {})\n\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.array) {\n let restIndex: number | null = null\n assertArray(value, sourceCodeInfo)\n for (let index = 0; index < bindingTarget[1][0].length; index += 1) {\n const element = bindingTarget[1][0][index] ?? null\n if (element === null) {\n continue\n }\n if (element[0] === bindingTargetTypes.rest) {\n restIndex = index\n break\n }\n const val = (value[index] !== undefined ? value[index] : element[1][1] && evaluate(element[1][1])) ?? null\n assertAny(val, sourceCodeInfo)\n createRecord(element, val, evaluate, sourceCodeInfo, record)\n }\n if (restIndex !== null) {\n const restValues = value.slice(restIndex)\n const restElement = bindingTarget[1][0][restIndex]! as RestBindingTarget\n record[restElement[1][0]] = restValues\n }\n }\n else if (bindingTarget[0] === bindingTargetTypes.rest) {\n record[bindingTarget[1][0]] = asAny(value)\n }\n else {\n record[(bindingTarget[1][0] as UserDefinedSymbolNode)[1]] = asAny(value)\n }\n}\n\nexport function getAllBindingTargetNames(bindingTarget: BindingTarget): Record<string, true> {\n const names: Record<string, true> = {}\n getNamesFromBindingTarget(bindingTarget, names)\n return names\n}\n\nfunction getNamesFromBindingTarget(target: BindingTarget | null, names: Record<string, true>): void {\n if (target === null) {\n return\n }\n if (target[0] === bindingTargetTypes.array) {\n for (const element of target[1][0]) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.object) {\n for (const element of Object.values(target[1][0])) {\n getNamesFromBindingTarget(element, names)\n }\n }\n else if (target[0] === bindingTargetTypes.rest) {\n if (names[target[1][0]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0]] = true\n }\n else {\n if (names[target[1][0][1]]) {\n throw new LitsError(`Duplicate binding name: ${target[1][0]}`, target[2])\n }\n names[target[1][0][1]] = true\n }\n}\n","import type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues as evalueateBindingTargetValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DefNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_def'], BindingNode]> // binding, value\n\nexport const defSpecialExpression: BuiltinSpecialExpression<null, DefNode> = {\n paramCount: 2,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingTargetValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.exportValues(values, target[2])\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode: BindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type DoNode = SpecialExpressionNode<[typeof specialExpressionTypes['do'], Node[]]>\n\nexport const doSpecialExpression: BuiltinSpecialExpression<Any, DoNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const newContext: Context = {}\n\n const newContextStack = contextStack.create(newContext)\n let result: Any = null\n for (const form of node[1][1])\n result = evaluateNode(form, newContextStack)\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n return getUndefinedSymbols(node[1][1], contextStack.create({}), builtin, evaluateNode)\n },\n}\n","import type { Any } from '../interface'\n\nconst nonNumberReservedSymbolRecord = {\n true: true,\n false: false,\n null: null,\n then: null,\n else: null,\n end: null,\n case: null,\n each: null,\n in: null,\n when: null,\n while: null,\n catch: null,\n function: null,\n export: null,\n as: null,\n} as const satisfies Record<string, Any>\n\nconst phi = (1 + Math.sqrt(5)) / 2\nexport const numberReservedSymbolRecord = {\n 'E': Math.E,\n '-E': -Math.E,\n 'ε': Math.E,\n '-ε': -Math.E,\n 'PI': Math.PI,\n '-PI': -Math.PI,\n 'π': Math.PI,\n '-π': -Math.PI,\n 'PHI': phi,\n '-PHI': -phi,\n 'φ': phi,\n '-φ': -phi,\n 'POSITIVE_INFINITY': Number.POSITIVE_INFINITY,\n '∞': Number.POSITIVE_INFINITY,\n 'NEGATIVE_INFINITY': Number.NEGATIVE_INFINITY,\n '-∞': Number.NEGATIVE_INFINITY,\n 'MAX_SAFE_INTEGER': Number.MAX_SAFE_INTEGER,\n 'MIN_SAFE_INTEGER': Number.MIN_SAFE_INTEGER,\n 'MAX_VALUE': Number.MAX_VALUE,\n 'MIN_VALUE': Number.MIN_VALUE,\n 'DELTA': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-DELTA': -Number.EPSILON,\n 'δ': Number.EPSILON, // TODO use DELTA instead of DELTA δ\n '-δ': -Number.EPSILON,\n 'NaN': Number.NaN,\n} as const satisfies Record<string, number>\n\nexport const reservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport const validReservedSymbolRecord = {\n ...nonNumberReservedSymbolRecord,\n ...numberReservedSymbolRecord,\n} as const\n\nexport type ValidReservedSymbol = keyof typeof validReservedSymbolRecord\nexport type ReservedSymbol = keyof typeof reservedSymbolRecord\n\nexport function isReservedSymbol(symbol: string): symbol is keyof typeof validReservedSymbolRecord {\n return symbol in validReservedSymbolRecord\n}\n\nexport function isNumberReservedSymbol(symbol: string): symbol is keyof typeof numberReservedSymbolRecord {\n return symbol in numberReservedSymbolRecord\n}\n","import { LitsError } from '../errors'\nimport type { ContextStack } from '../evaluator/ContextStack'\nimport type { BindingTarget, Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isReservedSymbol } from '../tokenizer/reservedNames'\nimport type { Builtin } from './interface'\nimport { specialExpressionTypes } from './specialExpressionTypes'\nimport type { SpecialExpressionName } from '.'\n\nexport type Function = [BindingTarget[], Node[]]\n\nexport function assertNameNotDefined<T>(\n name: T,\n contextStack: ContextStack,\n builtin: Builtin,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts name is T {\n if (typeof name !== 'string')\n return\n\n // TODO only subset of special expressions are necessary to check (CommonSpecialExpressionType)\n if (specialExpressionTypes[name as SpecialExpressionName])\n throw new LitsError(`Cannot define variable ${name}, it's a special expression.`, sourceCodeInfo)\n\n if (builtin.normalExpressions[name])\n throw new LitsError(`Cannot define variable ${name}, it's a builtin function.`, sourceCodeInfo)\n\n if (isReservedSymbol(name))\n throw new LitsError(`Cannot define variable ${name}, it's a reserved name.`, sourceCodeInfo)\n\n if (contextStack.globalContext[name])\n throw new LitsError(`Name already defined \"${name}\".`, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type {\n EvaluatedFunction,\n LitsFunction,\n SpecialExpressionNode,\n SymbolNode,\n} from '../../parser/types'\nimport { isAny } from '../../typeGuards/lits'\nimport { addToSet } from '../../utils'\nimport { FUNCTION_SYMBOL } from '../../utils/symbols'\nimport { getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport type { Function } from '../utils'\nimport { assertNameNotDefined } from '../utils'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\nimport { assertUserDefinedSymbolNode } from '../../typeGuards/astNode'\n\nexport type DefnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_defn'], SymbolNode, Function]>\nexport type FunctionNode = SpecialExpressionNode<[typeof specialExpressionTypes['function'], SymbolNode, Function]>\nexport type FnNode = SpecialExpressionNode<[typeof specialExpressionTypes['0_fn'], Function]>\n\nexport const functionSpecialExpression: BuiltinSpecialExpression<null, FunctionNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunction,\n }\n\n contextStack.addValues({ [functionSymbol[1]]: litsFunction }, functionSymbol[2])\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n contextStack.addValues({ [functionName]: true }, node[1][1][2])\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(node[1][2], contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const defnSpecialExpression: BuiltinSpecialExpression<null, DefnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const [, functionSymbol, fn] = node[1]\n\n assertUserDefinedSymbolNode(functionSymbol, node[2])\n assertNameNotDefined(functionSymbol[1], contextStack, builtin, node[2])\n\n const evaluatedFunctionOverloades = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: functionSymbol[1],\n evaluatedfunction: evaluatedFunctionOverloades,\n }\n\n contextStack.exportValues({ [functionSymbol[1]]: litsFunction }, functionSymbol[2])\n return null\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const functionName = node[1][1][1]\n const fn = node[1][2]\n contextStack.exportValues({ [functionName]: true }, node[1][1][2])\n const newContext: Context = { [functionName]: { value: true } }\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode, newContext)\n },\n}\n\nexport const fnSpecialExpression: BuiltinSpecialExpression<LitsFunction, FnNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { builtin, getUndefinedSymbols, evaluateNode }) => {\n const fn = node[1][1]\n const evaluatedFunction = evaluateFunction(fn, contextStack, builtin, getUndefinedSymbols, evaluateNode)\n\n const litsFunction: LitsFunction = {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo: node[2],\n functionType: 'UserDefined',\n name: undefined,\n evaluatedfunction: evaluatedFunction,\n }\n\n return litsFunction\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const fn = node[1][1]\n return getFunctionUnresolvedSymbols(fn, contextStack, getUndefinedSymbols, builtin, evaluateNode)\n },\n\n}\n\nfunction evaluateFunction(\n fn: Function,\n contextStack: ContextStack,\n builtin: Builtin,\n getUndefinedSymbols: GetUndefinedSymbols,\n evaluateNode: EvaluateNode,\n): EvaluatedFunction {\n const functionContext: Context = {}\n\n const context = fn[0].reduce((ctx: Context, arg) => {\n Object.keys(getAllBindingTargetNames(arg)).forEach((name) => {\n ctx[name] = { value: null }\n })\n return ctx\n }, {})\n const undefinedSymbols = getUndefinedSymbols(fn[1], contextStack.new(context), builtin, evaluateNode)\n undefinedSymbols.forEach((name) => {\n const value = contextStack.getValue(name)\n if (isAny(value)) {\n functionContext[name] = { value }\n }\n })\n\n const evaluatedFunction: EvaluatedFunction = [\n fn[0],\n fn[1],\n functionContext,\n ]\n\n return evaluatedFunction\n}\n\nfunction getFunctionUnresolvedSymbols(\n fn: Function,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n functionNameContext?: Context,\n): UndefinedSymbols {\n const result = new Set<string>()\n\n const contextStackWithFunctionName = functionNameContext ? contextStack.create(functionNameContext) : contextStack\n const newContext: Context = {}\n\n fn[0].forEach((arg) => {\n Object.assign(newContext, getAllBindingTargetNames(arg))\n\n walkDefaults(arg, (defaultNode) => {\n addToSet(result, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n })\n\n const newContextStack = contextStackWithFunctionName.create(newContext)\n const overloadResult = getUndefinedSymbols(fn[1], newContextStack, builtin, evaluateNode)\n addToSet(result, overloadResult)\n return result\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type IfNode = SpecialExpressionNode<[typeof specialExpressionTypes['if'], [Node, Node, Node?]]>\n\nexport const ifSpecialExpression: BuiltinSpecialExpression<Any, IfNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type UnlessNode = SpecialExpressionNode<[typeof specialExpressionTypes['unless'], [Node, Node, Node?]]>\n\nexport const unlessSpecialExpression: BuiltinSpecialExpression<Any, UnlessNode> = {\n paramCount: { min: 2, max: 3 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [conditionNode, trueNode, falseNode] = node[1][1]\n if (!evaluateNode(conditionNode, contextStack)) {\n return evaluateNode(trueNode, contextStack)\n }\n else if (falseNode) {\n return evaluateNode(falseNode, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { BindingNode, SpecialExpressionNode } from '../../parser/types'\nimport { addToSet } from '../../utils'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames, walkDefaults } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LetNode = SpecialExpressionNode<[typeof specialExpressionTypes['let'], BindingNode]>\n\nexport const letSpecialExpression: BuiltinSpecialExpression<Any, LetNode> = {\n paramCount: 0,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingValue = evaluateNode(value, contextStack)\n const values = evalueateBindingNodeValues(target, bindingValue, Node => evaluateNode(Node, contextStack))\n contextStack.addValues(values, target[2])\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNode = node[1][1]\n const target = bindingNode[1][0]\n const value = bindingNode[1][1]\n const bindingResult = getUndefinedSymbols([value], contextStack, builtin, evaluateNode)\n walkDefaults(target, (defaultNode) => {\n addToSet(bindingResult, getUndefinedSymbols([defaultNode], contextStack, builtin, evaluateNode))\n })\n contextStack.addValues(getAllBindingTargetNames(target), target[2])\n return bindingResult\n },\n}\n","import { LitsError, RecurSignal } from '../../errors'\nimport type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport { joinSets } from '../../utils'\nimport { valueToString } from '../../utils/debug/debugTools'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopNode = SpecialExpressionNode<[typeof specialExpressionTypes['loop'], BindingNode[], Node[]]> // bindings, body\n\nexport const loopSpecialExpression: BuiltinSpecialExpression<Any, LoopNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const bindingNodes = node[1][1]\n const bindingContext: Context = bindingNodes.reduce((result: Context, bindingNode) => {\n const val = evaluateNode(bindingNode[1][1], contextStack.create(result))\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n result[name] = { value }\n })\n return result\n }, {})\n const newContextStack = contextStack.create(bindingContext)\n\n const body = node[1][2]\n for (;;) {\n let result: Any = null\n try {\n for (const form of body) {\n result = evaluateNode(form, newContextStack)\n }\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n const params = error.params\n if (params.length !== bindingNodes.length) {\n throw new LitsError(\n `recur expected ${bindingNodes.length} parameters, got ${valueToString(params.length)}`,\n node[2],\n )\n }\n bindingNodes.forEach((bindingNode, index) => {\n const valueRecord = evalueateBindingNodeValues(bindingNode[1][0], asAny(params[index]), Node => evaluateNode(Node, contextStack))\n for (const [name, value] of Object.entries(valueRecord)) {\n bindingContext[name]!.value = value\n }\n })\n continue\n }\n throw error\n }\n return result\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const bindingNodes = node[1][1]\n\n const newContext = bindingNodes\n .reduce((context: Context, bindingNode) => {\n const names = getAllBindingTargetNames(bindingNode[1][0])\n\n Object.keys(names).forEach((name) => {\n context[name] = { value: true }\n })\n return context\n }, {})\n\n const bindingValueNodes = bindingNodes.map(bindingNode => bindingNode[1][1])\n const bindingsResult = getUndefinedSymbols(bindingValueNodes, contextStack, builtin, evaluateNode)\n const paramsResult = getUndefinedSymbols(node[1][2], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(bindingsResult, paramsResult)\n },\n}\n","import type { GetUndefinedSymbols, UndefinedSymbols } from '../../getUndefinedSymbols'\nimport type { ContextStack } from '../../evaluator/ContextStack'\nimport type { Context, EvaluateNode } from '../../evaluator/interface'\nimport type { Any, Arr } from '../../interface'\nimport type { BindingNode, Node, SpecialExpressionNode } from '../../parser/types'\nimport { asNonUndefined } from '../../typeGuards'\nimport { asAny, asColl, isSeq } from '../../typeGuards/lits'\nimport type { Builtin, BuiltinSpecialExpression } from '../interface'\nimport { evalueateBindingNodeValues, getAllBindingTargetNames } from '../bindingNode'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type LoopBindingNode = [BindingNode, BindingNode[], Node?, Node?] // Binding, Let-Bindings, When, While\n\nexport type ForNode = SpecialExpressionNode<[typeof specialExpressionTypes['for'], LoopBindingNode[], Node[]]> // LoopBindings, body\nexport type DoSeqNode = SpecialExpressionNode<[typeof specialExpressionTypes['doseq'], LoopBindingNode[], Node[]]> // LoopBindings, body\n\ntype LoopNode = ForNode | DoSeqNode\n\nfunction addToContext(\n bindings: BindingNode[],\n context: Context,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n for (const bindingNode of bindings) {\n const [target, bindingValue] = bindingNode[1]\n const val = evaluateNode(bindingValue, contextStack)\n const valueRecord = evalueateBindingNodeValues(target, val, Node => evaluateNode(Node, contextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n }\n}\n\nfunction evaluateLoop(\n returnResult: boolean,\n loopNode: LoopNode,\n contextStack: ContextStack,\n evaluateNode: EvaluateNode,\n) {\n const sourceCodeInfo = loopNode[2]\n const [, loopBindings, body] = loopNode[1]\n\n const result: Arr = []\n\n const bindingIndices = loopBindings.map(() => 0)\n let abort = false\n while (!abort) {\n const context: Context = {}\n const newContextStack = contextStack.create(context)\n let skip = false\n bindingsLoop: for (let bindingIndex = 0; bindingIndex < loopBindings.length; bindingIndex += 1) {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindings[bindingIndex]!\n const [targetNode, valueNode] = bindingNode[1]\n const coll = asColl(evaluateNode(valueNode, newContextStack), sourceCodeInfo)\n const seq = isSeq(coll) ? coll : Object.entries(coll)\n if (seq.length === 0) {\n skip = true\n abort = true\n break\n }\n const index = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo)\n if (index >= seq.length) {\n skip = true\n if (bindingIndex === 0) {\n abort = true\n break\n }\n bindingIndices[bindingIndex] = 0\n bindingIndices[bindingIndex - 1] = asNonUndefined(bindingIndices[bindingIndex - 1], sourceCodeInfo) + 1\n break\n }\n\n const val = asAny(seq[index], sourceCodeInfo)\n const valueRecord = evalueateBindingNodeValues(targetNode, val, Node => evaluateNode(Node, newContextStack))\n Object.entries(valueRecord).forEach(([name, value]) => {\n context[name] = { value }\n })\n if (letBindings) {\n addToContext(\n letBindings,\n context,\n newContextStack,\n evaluateNode,\n )\n }\n if (whenNode && !evaluateNode(whenNode, newContextStack)) {\n bindingIndices[bindingIndex] = asNonUndefined(bindingIndices[bindingIndex], sourceCodeInfo) + 1\n skip = true\n break bindingsLoop\n }\n if (whileNode && !evaluateNode(whileNode, newContextStack)) {\n bindingIndices[bindingIndex] = Number.POSITIVE_INFINITY\n skip = true\n break bindingsLoop\n }\n }\n if (!skip) {\n let value: Any = null\n for (const form of body) {\n value = evaluateNode(form, newContextStack)\n }\n if (returnResult)\n result.push(value)\n\n if (bindingIndices.length > 0)\n bindingIndices[bindingIndices.length - 1]! += 1\n }\n }\n\n return returnResult ? result : null\n}\n\nfunction analyze(\n loopNode: LoopNode,\n contextStack: ContextStack,\n getUndefinedSymbols: GetUndefinedSymbols,\n builtin: Builtin,\n evaluateNode: EvaluateNode,\n): UndefinedSymbols {\n const result = new Set<string>()\n const newContext: Context = {}\n const [, loopBindings, body] = loopNode[1]\n loopBindings.forEach((loopBindingNode) => {\n const [bindingNode, letBindings, whenNode, whileNode] = loopBindingNode\n const [target, value] = bindingNode[1]\n getUndefinedSymbols([value], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(target))\n if (letBindings) {\n letBindings.forEach((letBindingNode) => {\n const [letTarget, letValue] = letBindingNode[1]\n\n getUndefinedSymbols([letValue], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n Object.assign(newContext, getAllBindingTargetNames(letTarget))\n })\n }\n if (whenNode) {\n getUndefinedSymbols([whenNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n if (whileNode) {\n getUndefinedSymbols([whileNode], contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n }\n })\n getUndefinedSymbols(body, contextStack.create(newContext), builtin, evaluateNode).forEach(symbol =>\n result.add(symbol),\n )\n return result\n}\n\nexport const forSpecialExpression: BuiltinSpecialExpression<Any, ForNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => evaluateLoop(true, node, contextStack, helpers.evaluateNode),\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n\nexport const doseqSpecialExpression: BuiltinSpecialExpression<null, DoSeqNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, helpers) => {\n evaluateLoop(false, node, contextStack, helpers.evaluateNode)\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => analyze(node, contextStack, getUndefinedSymbols, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type OrNode = SpecialExpressionNode<[typeof specialExpressionTypes['||'], Node[]]>\n\nexport const orSpecialExpression: BuiltinSpecialExpression<Any, OrNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = false\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = false\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (value)\n break\n }\n return value\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUserDefinedSymbolNode } from '../../typeGuards/astNode'\nimport { asAny, assertAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type QqNode = SpecialExpressionNode<[typeof specialExpressionTypes['??'], [Node, Node | undefined]]>\n\nexport const qqSpecialExpression: BuiltinSpecialExpression<Any, QqNode> = {\n paramCount: { min: 1, max: 2 },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [firstNode, secondNode] = node[1][1]\n\n if (isUserDefinedSymbolNode(firstNode) && contextStack.lookUp(firstNode) === null) {\n return secondNode ? evaluateNode(secondNode, contextStack) : null\n }\n assertAny(firstNode, node[2])\n const firstResult = evaluateNode(firstNode, contextStack)\n return firstResult ?? (secondNode ? evaluateNode(secondNode, contextStack) : null)\n },\n\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const firstParam = asAny(params[0], sourceCodeInfo)\n const secondParam = params[1] !== undefined ? asAny(params[1], sourceCodeInfo) : null\n return firstParam ?? secondParam\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].filter(n => !!n), contextStack, builtin, evaluateNode),\n}\n","import { RecurSignal } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type RecurNode = SpecialExpressionNode<[typeof specialExpressionTypes['recur'], Node[]]>\n\nexport const recurSpecialExpression: BuiltinSpecialExpression<null, RecurNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n const evaluatedParams = params.map(paramNode => evaluateNode(paramNode, contextStack))\n throw new RecurSignal(evaluatedParams)\n },\n evaluateAsNormalExpression: (params) => {\n throw new RecurSignal(params)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) =>\n getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { UserDefinedError } from '../../errors'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ThrowNode = SpecialExpressionNode<[typeof specialExpressionTypes['throw'], Node]>\n\nexport const throwSpecialExpression: BuiltinSpecialExpression<null, ThrowNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const message = asString(evaluateNode(node[1][1], contextStack), node[2], {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, node[2])\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const message = asString(params[0], sourceCodeInfo, {\n nonEmpty: true,\n })\n throw new UserDefinedError(message, undefined)\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1]], contextStack, builtin, evaluateNode),\n}\n","import type { Context } from '../../evaluator/interface'\nimport type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode, SymbolNode } from '../../parser/types'\nimport { joinSets } from '../../utils'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type TryNode = SpecialExpressionNode<[typeof specialExpressionTypes['try'], Node, SymbolNode | undefined, Node]>\n\nexport const trySpecialExpression: BuiltinSpecialExpression<Any, TryNode> = {\n paramCount: 1,\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n try {\n return evaluateNode(tryExpression, contextStack)\n }\n catch (error) {\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: error as Any },\n }\n : {}\n return evaluateNode(catchExpression, contextStack.create(newContext))\n }\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => {\n const [, tryExpression, errorSymbol, catchExpression] = node[1]\n const tryResult = getUndefinedSymbols([tryExpression], contextStack, builtin, evaluateNode)\n const newContext: Context = errorSymbol\n ? {\n [errorSymbol[1]]: { value: true },\n }\n : {}\n const catchResult = getUndefinedSymbols([catchExpression], contextStack.create(newContext), builtin, evaluateNode)\n return joinSets(tryResult, catchResult)\n },\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Arr } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ArrayNode = SpecialExpressionNode<[typeof specialExpressionTypes['array'], Node[]]>\n\nexport const arraySpecialExpression: BuiltinSpecialExpression<Any, ArrayNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Arr = []\n\n for (const param of node[1][1]) {\n if (isSpreadNode(param)) {\n const spreadValue = evaluateNode(param[1], contextStack)\n if (!Array.isArray(spreadValue)) {\n throw new LitsError('Spread value is not an array', param[2])\n }\n result.push(...spreadValue)\n }\n else {\n result.push(evaluateNode(param, contextStack))\n }\n }\n\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Arr = []\n\n for (const param of params) {\n result.push(asAny(param, sourceCodeInfo))\n }\n\n return result\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import { LitsError } from '../../errors'\nimport type { Any, Obj } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { isUnknownRecord } from '../../typeGuards'\nimport { isSpreadNode } from '../../typeGuards/astNode'\nimport { assertString } from '../../typeGuards/string'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type ObjectNode = SpecialExpressionNode<[typeof specialExpressionTypes['object'], Node[]]>\n\nexport const objectSpecialExpression: BuiltinSpecialExpression<Any, ObjectNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n const result: Obj = {}\n\n const params = node[1][1]\n for (let i = 0; i < params.length; i += 2) {\n const keyNode = params[i]!\n if (isSpreadNode(keyNode)) {\n const spreadObject = evaluateNode(keyNode[1], contextStack)\n if (!isUnknownRecord(spreadObject)) {\n throw new LitsError('Spread value is not an object', keyNode[2])\n }\n Object.assign(result, spreadObject)\n i -= 1\n }\n else {\n const key = evaluateNode(keyNode, contextStack)\n const value = evaluateNode(params[i + 1]!, contextStack)\n assertString(key, keyNode[2])\n result[key] = value\n }\n }\n return result\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n const result: Obj = {}\n\n for (let i = 0; i < params.length; i += 2) {\n const key = params[i]\n const value = params[i + 1]\n assertString(key, sourceCodeInfo)\n result[key] = value ?? null\n }\n\n return result\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Builtin } from './interface'\nimport { allNormalExpressions, normalExpressions } from './normalExpressions'\nimport { andSpecialExpression } from './specialExpressions/and'\nimport { condSpecialExpression } from './specialExpressions/cond'\nimport { switchSpecialExpression } from './specialExpressions/switch'\nimport { definedSpecialExpression } from './specialExpressions/defined'\nimport { defSpecialExpression } from './specialExpressions/def'\nimport { doSpecialExpression } from './specialExpressions/do'\nimport { defnSpecialExpression, fnSpecialExpression, functionSpecialExpression } from './specialExpressions/functions'\nimport { ifSpecialExpression } from './specialExpressions/if'\nimport { unlessSpecialExpression } from './specialExpressions/unless'\nimport { letSpecialExpression } from './specialExpressions/let'\nimport { loopSpecialExpression } from './specialExpressions/loop'\nimport { doseqSpecialExpression, forSpecialExpression } from './specialExpressions/loops'\nimport { orSpecialExpression } from './specialExpressions/or'\nimport { qqSpecialExpression } from './specialExpressions/qq'\nimport { recurSpecialExpression } from './specialExpressions/recur'\nimport { throwSpecialExpression } from './specialExpressions/throw'\nimport { trySpecialExpression } from './specialExpressions/try'\nimport { arraySpecialExpression } from './specialExpressions/array'\nimport { objectSpecialExpression } from './specialExpressions/object'\nimport { specialExpressionTypes } from './specialExpressionTypes'\n\nexport const specialExpressions = [\n qqSpecialExpression,\n andSpecialExpression,\n orSpecialExpression,\n arraySpecialExpression,\n condSpecialExpression,\n defSpecialExpression,\n definedSpecialExpression,\n defnSpecialExpression,\n doSpecialExpression,\n doseqSpecialExpression,\n fnSpecialExpression,\n forSpecialExpression,\n functionSpecialExpression,\n ifSpecialExpression,\n letSpecialExpression,\n loopSpecialExpression,\n objectSpecialExpression,\n recurSpecialExpression,\n switchSpecialExpression,\n throwSpecialExpression,\n trySpecialExpression,\n unlessSpecialExpression,\n] as const\n\nexport type SpecialExpressions = typeof specialExpressions\nexport type SpecialExpression = SpecialExpressions[number]\nexport type SpecialExpressionName = keyof typeof specialExpressionTypes\nexport type CommonSpecialExpressionType = [\n | typeof specialExpressionTypes['??']\n | typeof specialExpressionTypes['&&']\n | typeof specialExpressionTypes['cond']\n | typeof specialExpressionTypes['switch']\n | typeof specialExpressionTypes['defined?']\n | typeof specialExpressionTypes['do']\n | typeof specialExpressionTypes['if']\n | typeof specialExpressionTypes['unless']\n | typeof specialExpressionTypes['||']\n | typeof specialExpressionTypes['throw']\n | typeof specialExpressionTypes['array']\n | typeof specialExpressionTypes['object'],\n]\n\nexport type SpecialExpressionType = typeof specialExpressionTypes[SpecialExpressionName]\n\nexport const builtin: Builtin = {\n normalExpressions,\n specialExpressions,\n allNormalExpressions,\n}\n\nexport const normalExpressionKeys = Object.keys(normalExpressions)\nexport const specialExpressionKeys = Object.keys(specialExpressionTypes)\nexport const specialExpressionNameSet = new Set(specialExpressionKeys)\n","import { specialExpressions } from '../builtin'\nimport { evalueateBindingNodeValues } from '../builtin/bindingNode'\nimport { allNormalExpressions } from '../builtin/normalExpressions'\nimport { LitsError, RecurSignal } from '../errors'\nimport type { Any, Arr } from '../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EvaluatedFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n LitsFunctionType,\n NativeJsFunction,\n NormalBuiltinFunction,\n PartialFunction,\n SomePredFunction,\n SpecialBuiltinFunction,\n UserDefinedFunction,\n} from '../parser/types'\nimport { bindingTargetTypes } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined, isUnknownRecord } from '../typeGuards'\nimport { asAny } from '../typeGuards/lits'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport type { Context, EvaluateNode, ExecuteFunction } from './interface'\n\ntype FunctionExecutors = Record<LitsFunctionType, (\n fn: any,\n params: Arr,\n sourceCodeInfo: SourceCodeInfo | undefined,\n contextStack: ContextStack,\n helpers: { evaluateNode: EvaluateNode, executeFunction: ExecuteFunction },\n) => Any>\n\nfunction checkParams(\n evaluatedFunction: EvaluatedFunction,\n nbrOfParams: number,\n sourceCodeInfo?: SourceCodeInfo,\n) {\n const hasRest = evaluatedFunction[0].some(arg => arg[0] === bindingTargetTypes.rest)\n const minArity = evaluatedFunction[0].filter(arg => arg[0] !== bindingTargetTypes.rest && arg[1][1] === undefined).length\n const maxArity = hasRest ? Number.MAX_SAFE_INTEGER : evaluatedFunction[0].length\n if (nbrOfParams < minArity || nbrOfParams > maxArity) {\n throw new LitsError(`Unexpected number of arguments, got ${valueToString(nbrOfParams)}.`, sourceCodeInfo)\n }\n}\n\nexport const functionExecutors: FunctionExecutors = {\n NativeJsFunction: (fn: NativeJsFunction, params, sourceCodeInfo) => {\n try {\n // eslint-disable-next-line ts/no-unsafe-assignment\n const clonedParams = JSON.parse(JSON.stringify(params))\n // eslint-disable-next-line ts/no-unsafe-argument\n return toAny(fn.nativeFn.fn(...clonedParams))\n }\n catch (error) {\n const message\n = typeof error === 'string'\n ? error\n : isUnknownRecord(error) && typeof error.message === 'string'\n ? error.message\n : '<no message>'\n throw new LitsError(`Native function throwed: \"${message}\"`, sourceCodeInfo)\n }\n },\n UserDefined: (fn: UserDefinedFunction, params, sourceCodeInfo, contextStack, { evaluateNode }) => {\n for (;;) {\n checkParams(fn.evaluatedfunction, params.length, sourceCodeInfo)\n const evaluatedFunction = fn.evaluatedfunction\n const args = evaluatedFunction[0]\n const nbrOfNonRestArgs: number = args.filter(arg => arg[0] !== bindingTargetTypes.rest).length\n\n const newContextStack = contextStack.create(fn.evaluatedfunction[2])\n const newContext: Context = {}\n\n const rest: Arr = []\n for (let i = 0; i < params.length; i += 1) {\n if (i < nbrOfNonRestArgs) {\n const param = toAny(params[i])\n const valueRecord = evalueateBindingNodeValues(args[i]!, param, Node =>\n evaluateNode(Node, newContextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n else {\n rest.push(toAny(params[i]))\n }\n }\n\n for (let i = params.length; i < nbrOfNonRestArgs; i++) {\n const arg = args[i]!\n const defaultValue = evaluateNode(arg[1][1]!, contextStack.create(newContext))\n const valueRecord = evalueateBindingNodeValues(arg, defaultValue, Node =>\n evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n const restArgument = args.find(arg => arg[0] === bindingTargetTypes.rest)\n if (restArgument !== undefined) {\n const valueRecord = evalueateBindingNodeValues(restArgument, rest, Node => evaluateNode(Node, contextStack.create(newContext)))\n Object.entries(valueRecord).forEach(([key, value]) => {\n newContext[key] = { value }\n })\n }\n\n try {\n let result: Any = null\n const newContextStack2 = newContextStack.create(newContext)\n for (const node of evaluatedFunction[1]) {\n result = evaluateNode(node, newContextStack2)\n }\n\n return result\n }\n catch (error) {\n if (error instanceof RecurSignal) {\n params = error.params\n continue\n }\n throw error\n }\n }\n },\n Partial: (fn: PartialFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return executeFunction(fn.function, [...fn.params, ...params], contextStack, sourceCodeInfo)\n },\n Comp: (fn: CompFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const { params: f } = fn\n if (f.length === 0) {\n if (params.length !== 1)\n throw new LitsError(`(comp) expects one argument, got ${valueToString(params.length)}.`, sourceCodeInfo)\n\n return asAny(params[0], sourceCodeInfo)\n }\n return asAny(\n f.reduceRight((result: Arr, fun) => {\n return [executeFunction(toAny(fun), result, contextStack, sourceCodeInfo)]\n }, params)[0],\n sourceCodeInfo,\n )\n },\n Constantly: (fn: ConstantlyFunction) => {\n return fn.value\n },\n Juxt: (fn: JuxtFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return fn.params.map(fun => executeFunction(toAny(fun), params, contextStack, sourceCodeInfo))\n },\n Complement: (fn: ComplementFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n return !executeFunction(fn.function, params, contextStack, sourceCodeInfo)\n },\n EveryPred: (fn: EveryPredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (!result)\n return false\n }\n }\n return true\n },\n SomePred: (fn: SomePredFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n for (const f of fn.params) {\n for (const param of params) {\n const result = executeFunction(toAny(f), [param], contextStack, sourceCodeInfo)\n if (result)\n return true\n }\n }\n return false\n },\n Fnull: (fn: FNullFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fnulledParams = params.map((param, index) => (param === null ? toAny(fn.params[index]) : param))\n return executeFunction(toAny(fn.function), fnulledParams, contextStack, sourceCodeInfo)\n },\n Builtin: (fn: NormalBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const normalExpression = asNonUndefined(allNormalExpressions[fn.normalBuitinSymbolType], sourceCodeInfo)\n return normalExpression.evaluate(params, sourceCodeInfo, contextStack, { executeFunction })\n },\n SpecialBuiltin: (fn: SpecialBuiltinFunction, params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const specialExpression = asNonUndefined(specialExpressions[fn.specialBuiltinSymbolType], sourceCodeInfo)\n if (specialExpression.evaluateAsNormalExpression) {\n return specialExpression.evaluateAsNormalExpression(params, sourceCodeInfo, contextStack, { executeFunction })\n }\n else {\n throw new LitsError(`Special builtin function ${fn.specialBuiltinSymbolType} is not supported as normal expression.`, sourceCodeInfo)\n }\n },\n}\n","import type { SpecialExpression } from '../builtin'\nimport { builtin } from '../builtin'\nimport { NodeTypes, getNodeTypeName } from '../constants/constants'\nimport { LitsError, NotAFunctionError, UndefinedSymbolError } from '../errors'\nimport { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport type { Any, Arr, Obj } from '../interface'\nimport type {\n Ast,\n Node,\n NormalExpressionNode,\n NumberNode,\n ReservedSymbolNode,\n SpecialExpressionNode,\n StringNode,\n SymbolNode,\n} from '../parser/types'\nimport { reservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isNormalExpressionNodeWithName, isSpreadNode } from '../typeGuards/astNode'\nimport { asAny, assertSeq, isObj } from '../typeGuards/lits'\nimport { isLitsFunction } from '../typeGuards/litsFunction'\nimport { assertNumber, isNumber } from '../typeGuards/number'\nimport { assertString } from '../typeGuards/string'\nimport { toAny } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\nimport type { ContextStack } from './ContextStack'\nimport { functionExecutors } from './functionExecutors'\n\nexport function evaluate(ast: Ast, contextStack: ContextStack): Any {\n let result: Any = null\n\n for (const node of ast.body) {\n result = evaluateNode(node, contextStack)\n }\n\n return result\n}\n\nexport function evaluateNode(node: Node, contextStack: ContextStack): Any {\n switch (node[0]) {\n case NodeTypes.Number:\n return evaluateNumber(node as NumberNode)\n case NodeTypes.String:\n return evaluateString(node as StringNode)\n case NodeTypes.NormalBuiltinSymbol:\n case NodeTypes.SpecialBuiltinSymbol:\n case NodeTypes.UserDefinedSymbol:\n return contextStack.evaluateSymbol(node as SymbolNode)\n case NodeTypes.ReservedSymbol:\n return evaluateReservedSymbol(node as ReservedSymbolNode)\n case NodeTypes.NormalExpression:\n return evaluateNormalExpression(node as NormalExpressionNode, contextStack)\n case NodeTypes.SpecialExpression:\n return evaluateSpecialExpression(node as SpecialExpressionNode, contextStack)\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`${getNodeTypeName(node[0])}-node cannot be evaluated`, node[2])\n }\n}\n\nfunction evaluateNumber(node: NumberNode): number {\n return node[1]\n}\n\nfunction evaluateString(node: StringNode): string {\n return node[1]\n}\n\nfunction evaluateReservedSymbol(node: ReservedSymbolNode): Any {\n const reservedName = node[1]\n const value = reservedSymbolRecord[reservedName]\n return asNonUndefined(value, node[2])\n}\n\nfunction evaluateNormalExpression(node: NormalExpressionNode, contextStack: ContextStack): Any {\n const sourceCodeInfo = node[2]\n const paramNodes: Node[] = node[1][1]\n const params: Arr = []\n paramNodes.forEach((paramNode) => {\n if (isSpreadNode(paramNode)) {\n const spreadValue = evaluateNode(paramNode[1], contextStack)\n if (Array.isArray(spreadValue)) {\n params.push(...spreadValue)\n }\n else {\n throw new LitsError(`Spread operator requires an array, got ${valueToString(paramNode)}`, paramNode[2])\n }\n }\n else {\n params.push(evaluateNode(paramNode, contextStack))\n }\n })\n if (isNormalExpressionNodeWithName(node)) {\n const nameSymbol = node[1][0]\n\n if (isNormalBuiltinSymbolNode(nameSymbol)) {\n const type = nameSymbol[1]\n const normalExpression = builtin.allNormalExpressions[type]!\n return normalExpression.evaluate(params, node[2], contextStack, { executeFunction })\n }\n else {\n const fn = contextStack.getValue(nameSymbol[1])\n if (fn !== undefined) {\n return executeFunction(asAny(fn), params, contextStack, sourceCodeInfo)\n }\n throw new UndefinedSymbolError(nameSymbol[1], node[2])\n }\n }\n else {\n const fnNode: Node = node[1][0]\n const fn = evaluateNode(fnNode, contextStack)\n return executeFunction(fn, params, contextStack, sourceCodeInfo)\n }\n}\n\nfunction executeFunction(fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo): Any {\n if (isLitsFunction(fn))\n return functionExecutors[fn.functionType](fn, params, sourceCodeInfo, contextStack, { evaluateNode, executeFunction })\n\n if (Array.isArray(fn))\n return evaluateArrayAsFunction(fn, params, sourceCodeInfo)\n\n if (isObj(fn))\n return evalueateObjectAsFunction(fn, params, sourceCodeInfo)\n\n if (typeof fn === 'string')\n return evaluateStringAsFunction(fn, params, sourceCodeInfo)\n\n if (isNumber(fn))\n return evaluateNumberAsFunction(fn, params, sourceCodeInfo)\n\n throw new NotAFunctionError(fn, sourceCodeInfo)\n}\n\nfunction evaluateSpecialExpression(node: SpecialExpressionNode, contextStack: ContextStack): Any {\n const specialExpressionType = node[1][0]\n const specialExpression: SpecialExpression = asNonUndefined(builtin.specialExpressions[specialExpressionType], node[2])\n const castedEvaluate = specialExpression.evaluate as Function\n\n return castedEvaluate(node, contextStack, { evaluateNode, builtin, getUndefinedSymbols }) as Any\n}\n\nfunction evalueateObjectAsFunction(fn: Obj, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Object as function requires one string parameter.', sourceCodeInfo)\n\n const key = params[0]\n assertString(key, sourceCodeInfo)\n return toAny(fn[key])\n}\n\nfunction evaluateArrayAsFunction(fn: Arr, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('Array as function requires one non negative integer parameter.', sourceCodeInfo)\n\n const index = params[0]\n assertNumber(index, sourceCodeInfo, { integer: true, nonNegative: true })\n return toAny(fn[index])\n}\n\nfunction evaluateStringAsFunction(fn: string, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n if (params.length !== 1)\n throw new LitsError('String as function requires one Obj parameter.', sourceCodeInfo)\n\n const param = toAny(params[0])\n if (isObj(param))\n return toAny((param)[fn])\n\n if (isNumber(param, { integer: true }))\n return toAny(fn[param])\n\n throw new LitsError(\n `string as function expects Obj or integer parameter, got ${valueToString(param)}`,\n sourceCodeInfo,\n )\n}\n\nfunction evaluateNumberAsFunction(fn: number, params: Arr, sourceCodeInfo?: SourceCodeInfo): Any {\n assertNumber(fn, sourceCodeInfo, { integer: true })\n if (params.length !== 1)\n throw new LitsError('Number as function requires one Arr parameter.', sourceCodeInfo)\n\n const param = params[0]\n assertSeq(param, sourceCodeInfo)\n return toAny(param[fn])\n}\n","import type { Any, Arr } from '../interface'\nimport type { Node } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { isUnknownRecord } from '../typeGuards'\nimport type { ContextStack } from './ContextStack'\n\nexport interface ContextEntry { value: Any }\nexport type Context = Record<string, ContextEntry>\n\nexport type EvaluateNode = (node: Node, contextStack: ContextStack) => Any\nexport type ExecuteFunction = (fn: Any, params: Arr, contextStack: ContextStack, sourceCodeInfo?: SourceCodeInfo) => Any\n\nexport type LookUpResult = ContextEntry | null\n\nexport function isContextEntry(value: unknown): value is ContextEntry {\n return isUnknownRecord(value) && value.value !== undefined\n}\n","import { normalExpressionKeys, specialExpressionKeys } from '../builtin'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { LitsError, UndefinedSymbolError } from '../errors'\nimport type { Any } from '../interface'\nimport type { ContextParams, LazyValue } from '../Lits/Lits'\nimport type { NativeJsFunction, NormalBuiltinFunction, SymbolNode, UserDefinedSymbolNode } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asNonUndefined } from '../typeGuards'\nimport { isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode } from '../typeGuards/astNode'\nimport { toAny } from '../utils'\nimport { FUNCTION_SYMBOL } from '../utils/symbols'\nimport type { Context, LookUpResult } from './interface'\nimport { isContextEntry } from './interface'\n\nexport type ContextStack = ContextStackImpl\n\nexport class ContextStackImpl {\n private contexts: Context[]\n public globalContext: Context\n private values?: Record<string, unknown>\n private lazyValues?: Record<string, LazyValue>\n private nativeJsFunctions?: Record<string, NativeJsFunction>\n constructor({\n contexts,\n values: hostValues,\n lazyValues: lazyHostValues,\n nativeJsFunctions,\n }: {\n contexts: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n nativeJsFunctions?: Record<string, NativeJsFunction>\n }) {\n this.globalContext = asNonUndefined(contexts[0])\n this.contexts = contexts\n this.values = hostValues\n this.lazyValues = lazyHostValues\n this.nativeJsFunctions = nativeJsFunctions\n }\n\n public create(context: Context): ContextStack {\n const globalContext = this.globalContext\n const contextStack = new ContextStackImpl({\n contexts: [context, ...this.contexts],\n values: this.values,\n lazyValues: this.lazyValues,\n nativeJsFunctions: this.nativeJsFunctions,\n })\n contextStack.globalContext = globalContext\n return contextStack\n }\n\n public new(context: Context): ContextStack {\n const contexts = [{}, context]\n\n return new ContextStackImpl({ contexts })\n }\n\n public exportValues(values: Record<string, Any>, sourceCodeInfo: SourceCodeInfo | undefined) {\n for (const [name, value] of Object.entries(values)) {\n if (this.globalContext[name]) {\n throw new LitsError(`Cannot redefine exported value \"${name}\"`, sourceCodeInfo)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow special expression \"${name}\"`, sourceCodeInfo)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow builtin function \"${name}\"`, sourceCodeInfo)\n }\n this.globalContext[name] = { value }\n }\n this.addValues(values, sourceCodeInfo)\n }\n\n public addValues(values: Record<string, Any>, sourceCodeInfo: SourceCodeInfo | undefined) {\n const currentContext = this.contexts[0]!\n for (const [name, value] of Object.entries(values)) {\n if (currentContext[name]) {\n throw new LitsError(`Cannot redefine value \"${name}\"`, sourceCodeInfo)\n }\n if (specialExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow special expression \"${name}\"`, sourceCodeInfo)\n }\n if (normalExpressionKeys.includes(name)) {\n throw new LitsError(`Cannot shadow builtin function \"${name}\"`, sourceCodeInfo)\n }\n currentContext[name] = { value: toAny(value) }\n }\n }\n\n public getValue(name: string): unknown {\n for (const context of this.contexts) {\n const contextEntry = context[name]\n if (contextEntry)\n return contextEntry.value\n }\n const lazyHostValue = this.lazyValues?.[name]\n if (lazyHostValue)\n return lazyHostValue.read()\n\n const nativeJsFunction = this.nativeJsFunctions?.[name]\n if (nativeJsFunction)\n return nativeJsFunction\n\n return this.values?.[name]\n }\n\n public lookUp(node: UserDefinedSymbolNode): LookUpResult {\n const value = node[1]\n // const sourceCodeInfo = node[2]\n\n for (const context of this.contexts) {\n const contextEntry = context[value]\n if (contextEntry)\n return contextEntry\n }\n const lazyHostValue = this.lazyValues?.[value]\n if (lazyHostValue !== undefined) {\n return {\n value: toAny(lazyHostValue.read()),\n }\n }\n const hostValue = this.values?.[value]\n if (hostValue !== undefined) {\n return {\n value: toAny(hostValue),\n }\n }\n\n const nativeJsFunction = this.nativeJsFunctions?.[value]\n if (nativeJsFunction) {\n return {\n value: nativeJsFunction,\n }\n }\n\n return null\n }\n\n public evaluateSymbol(node: SymbolNode): Any {\n if (isSpecialBuiltinSymbolNode(node)) {\n const functionType = node[1]\n switch (functionType) {\n case specialExpressionTypes['&&']:\n case specialExpressionTypes['||']:\n case specialExpressionTypes.array:\n case specialExpressionTypes.object:\n case specialExpressionTypes['defined?']:\n case specialExpressionTypes.recur:\n case specialExpressionTypes.throw:\n case specialExpressionTypes['??']:\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'SpecialBuiltin',\n specialBuiltinSymbolType: functionType,\n sourceCodeInfo: node[2],\n }\n default:\n throw new LitsError(`Unknown special builtin symbol type: ${functionType}`, node[2])\n }\n }\n if (isNormalBuiltinSymbolNode(node)) {\n const type = node[1]\n return {\n [FUNCTION_SYMBOL]: true,\n functionType: 'Builtin',\n normalBuitinSymbolType: type,\n sourceCodeInfo: node[2],\n } satisfies NormalBuiltinFunction\n }\n const lookUpResult = this.lookUp(node)\n\n if (isContextEntry(lookUpResult))\n return lookUpResult.value\n\n throw new UndefinedSymbolError(node[1], node[2])\n }\n}\n\nexport function createContextStack(params: ContextParams = {}): ContextStack {\n const globalContext = params.globalContext ?? {}\n // Contexts are checked from left to right\n const contexts = params.contexts ? [globalContext, ...params.contexts] : [globalContext]\n const contextStack = new ContextStackImpl({\n contexts,\n values: params.values,\n lazyValues: params.lazyValues,\n nativeJsFunctions:\n params.jsFunctions\n && Object.entries(params.jsFunctions).reduce((acc: Record<string, NativeJsFunction>, [name, jsFunction]) => {\n if (specialExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow special expression \"${name}\", ignoring.`)\n return acc\n }\n if (normalExpressionKeys.includes(name)) {\n console.warn(`Cannot shadow builtin function \"${name}\", ignoring.`)\n return acc\n }\n acc[name] = {\n functionType: 'NativeJsFunction',\n nativeFn: jsFunction,\n name,\n [FUNCTION_SYMBOL]: true,\n }\n return acc\n }, {}),\n })\n return contextStack.create({})\n}\n","import { LitsError } from '../errors'\n\nconst binaryOperators = [\n '**', // exponentiation\n\n '*', // multiplication\n '/', // division\n '%', // remainder\n\n '+', // addition\n '-', // subtraction\n\n '<<', // left shift\n '>>', // signed right shift\n '>>>', // unsigned right shift\n\n '++', // string concatenation\n\n '<', // less than\n '<=', // less than or equal\n '≤', // less than or equal\n '>', // greater than\n '>=', // greater than or equal\n '≥', // greater than or equal\n\n '=', // equal\n '!=', // not equal\n '≠', // not equal\n\n '&', // bitwise AND\n '^', // bitwise XOR\n '|', // bitwise OR\n\n '&&', // logical AND\n '||', // logical OR\n '??', // nullish coalescing\n] as const\n\nconst otherOperators = [\n '->', // lambda\n '...', // rest\n '.', // property accessor\n ',', // item separator\n ':=', // property assignment\n ';', // statement terminator\n] as const\n\nconst symbolicOperators = [\n ...binaryOperators,\n ...otherOperators,\n] as const\n\nconst nonFunctionOperators = [\n '??',\n '&&',\n '||',\n 'comment',\n 'cond',\n 'def',\n 'defined?',\n // 'defn',\n 'do',\n 'doseq',\n // 'fn',\n 'if',\n 'let',\n 'loop',\n 'recur',\n 'throw',\n 'try',\n 'unless',\n 'while',\n]\n\nconst nonFunctionOperatorSet = new Set(nonFunctionOperators)\nexport function isFunctionOperator(operator: string): boolean {\n return !nonFunctionOperatorSet.has(operator)\n}\n\nexport type SymbolicBinaryOperator = typeof binaryOperators[number]\nexport type SymbolicOperator = typeof symbolicOperators[number]\n\nconst binaryOperatorSet = new Set(binaryOperators)\nexport function isBinaryOperator(operator: string): operator is SymbolicBinaryOperator {\n return binaryOperatorSet.has(operator as SymbolicBinaryOperator)\n}\nexport function assertBinaryOperator(operator: string): asserts operator is SymbolicBinaryOperator {\n if (!isBinaryOperator(operator)) {\n throw new LitsError(`Expected symbolic binary operator, got ${operator}`, undefined)\n }\n}\nexport function asBinaryOperator(operator: string): SymbolicBinaryOperator {\n assertBinaryOperator(operator)\n return operator\n}\n\nconst symbolicOperatorSet = new Set(symbolicOperators)\nexport function isSymbolicOperator(operator: string): operator is SymbolicOperator {\n return symbolicOperatorSet.has(operator as SymbolicOperator)\n}\nexport function assertSymbolicOperator(operator: string): asserts operator is SymbolicOperator {\n if (!isSymbolicOperator(operator)) {\n throw new LitsError(`Expected symbolic operator, got ${operator}`, undefined)\n }\n}\nexport function asSymbolicOperator(operator: string): SymbolicOperator {\n assertSymbolicOperator(operator)\n return operator\n}\n","import { LitsError } from '../errors'\nimport { isSymbolicOperator } from './operators'\nimport type { BasePrefixedNumberToken, LBraceToken, LBracketToken, LParenToken, MultiLineCommentToken, NumberToken, OperatorToken, RBraceToken, RBracketToken, RParenToken, RegexpShorthandToken, ReservedSymbolToken, SingleLineCommentToken, StringToken, SymbolToken, Token, TokenDescriptor, WhitespaceToken } from './token'\nimport type { ReservedSymbol, ValidReservedSymbol } from './reservedNames'\nimport { reservedSymbolRecord } from './reservedNames'\n\nexport type Tokenizer<T extends Token> = (input: string, position: number) => TokenDescriptor<T>\n\nconst illegalSymbolCharacters = [\n '(',\n ')',\n '[',\n ']',\n '{',\n '}',\n '\\'',\n '\"',\n '`',\n ',',\n '.',\n ';',\n ' ',\n '\\n',\n '\\r',\n '\\t',\n]\nconst illegalFirstSymbolCharacters = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n ...illegalSymbolCharacters,\n]\nconst illegalSymbolCharacterSet = new Set(illegalSymbolCharacters)\nconst illegalFirstSymbolCharacterSet = new Set(illegalFirstSymbolCharacters)\n\nconst whitespaceRegExp = /\\s/\n\nexport const NO_MATCH: TokenDescriptor<never> = [0]\n\nconst tokenizeLParen: Tokenizer<LParenToken> = (input, position) =>\n tokenizeToken('LParen', '(', input, position)\nconst tokenizeRParen: Tokenizer<RParenToken> = (input, position) =>\n tokenizeToken('RParen', ')', input, position)\nconst tokenizeLBracket: Tokenizer<LBracketToken> = (input, position) =>\n tokenizeToken('LBracket', '[', input, position)\nconst tokenizeRBracket: Tokenizer<RBracketToken> = (input, position) =>\n tokenizeToken('RBracket', ']', input, position)\nconst tokenizeLBrace: Tokenizer<LBraceToken> = (input, position) =>\n tokenizeToken('LBrace', '{', input, position)\nconst tokenizeRBrace: Tokenizer<RBraceToken> = (input, position) =>\n tokenizeToken('RBrace', '}', input, position)\n\nconst tokenizeString: Tokenizer<StringToken> = (input, position) => {\n if (input[position] !== '\"')\n return NO_MATCH\n\n let value = '\"'\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\"' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\"' // closing quote\n return [length + 1, ['String', value]]\n}\n\nconst tokenizeRegexpShorthand: Tokenizer<RegexpShorthandToken> = (input, position) => {\n if (input[position] !== '#')\n return NO_MATCH\n\n const [stringLength, token] = tokenizeString(input, position + 1)\n if (!token)\n return NO_MATCH\n\n position += stringLength + 1\n let length = stringLength + 1\n\n let options = ''\n while (input[position] === 'g' || input[position] === 'i') {\n if (options.includes(input[position]!)) {\n throw new LitsError(`Duplicated regexp option \"${input[position]}\" at position ${position}.`, undefined)\n }\n options += input[position]!\n length += 1\n position += 1\n }\n\n return [length, ['RegexpShorthand', `#${token[1]}${options}`]]\n}\n\nfunction tokenizeToken<T extends Token>(\n type: T[0],\n value: string,\n input: string,\n position: number,\n): TokenDescriptor<T> {\n if (value === input.slice(position, position + value.length))\n return [value.length, [type, value] as T]\n else\n return NO_MATCH\n}\n\nexport const tokenizeWhitespace: Tokenizer<WhitespaceToken> = (input, position) => {\n let char = input[position]\n if (!char || !whitespaceRegExp.test(char)) {\n return NO_MATCH\n }\n let value = char\n position += 1\n char = input[position]\n while (char && whitespaceRegExp.test(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [value.length, ['Whitespace', value]]\n}\n\nconst decimalNumberRegExp = /\\d/\nconst octalNumberRegExp = /[0-7]/\nconst hexNumberRegExp = /[0-9a-f]/i\nconst binaryNumberRegExp = /[01]/\nconst postNumberRegExp = /[\\s)\\]}(,;]/\n\nexport const tokenizeNumber: Tokenizer<NumberToken> = (input, position) => {\n let i: number\n const negate = input[position] === '-'\n const plusPrefix = input[position] === '+'\n const start = negate || plusPrefix ? position + 1 : position\n let hasDecimalPoint = false\n let hasExponent = false\n for (i = start; i < input.length; i += 1) {\n const char = input[i] as string\n\n if (char === '_') {\n if (!decimalNumberRegExp.test(input[i - 1]!) || !decimalNumberRegExp.test(input[i + 1]!)) {\n return NO_MATCH\n }\n }\n\n else if (char === '.') {\n if (i === start || hasDecimalPoint || hasExponent) {\n return NO_MATCH\n }\n hasDecimalPoint = true\n }\n\n else if (char === 'e' || char === 'E') {\n if (i === start || hasExponent) {\n return NO_MATCH\n }\n\n if (input[i - 1] === '.' || input[i - 1] === '+' || input[i - 1] === '-') {\n return NO_MATCH\n }\n\n if (input[i + 1] === '+' || input[i + 1] === '-') {\n i += 1\n }\n\n hasExponent = true\n }\n\n else if (!decimalNumberRegExp.test(char)) {\n break\n }\n }\n\n if ((negate || plusPrefix) && i === start) {\n return NO_MATCH\n }\n\n const length = i - position\n if (length === 0) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['Number', input.substring(position, i)]]\n}\n\nexport const tokenizeBasePrefixedNumber: Tokenizer<BasePrefixedNumberToken> = (input, position) => {\n if (input[position] !== '0') {\n return NO_MATCH\n }\n\n const baseChar = input[position + 1]\n\n const type = baseChar === 'b' || baseChar === 'B'\n ? 'binary'\n : baseChar === 'o' || baseChar === 'O'\n ? 'octal'\n : baseChar === 'x' || baseChar === 'X'\n ? 'hex'\n : null\n\n if (type === null) {\n return NO_MATCH\n }\n\n let i: number\n for (i = position + 2; i < input.length; i += 1) {\n const char = input[i] as string\n if (type === 'binary' && !binaryNumberRegExp.test(char)) {\n break\n }\n if (type === 'octal' && !octalNumberRegExp.test(char)) {\n break\n }\n if (type === 'hex' && !hexNumberRegExp.test(char)) {\n break\n }\n }\n\n const length = i - position\n if (length <= 2) {\n return NO_MATCH\n }\n\n const nextChar = input[i]\n if (nextChar && !postNumberRegExp.test(nextChar)) {\n return NO_MATCH\n }\n\n return [length, ['BasePrefixedNumber', input.substring(position, i)]]\n}\n\nexport const tokenizeSymbol: Tokenizer<SymbolToken> = (input, position) => {\n let value = input[position]!\n\n if (value === '\\'') {\n let length = 1\n let char = input[position + length]\n let escaping = false\n while (char !== '\\'' || escaping) {\n if (char === undefined)\n throw new LitsError(`Unclosed string at position ${position}.`, undefined)\n\n length += 1\n if (escaping) {\n escaping = false\n value += char\n }\n else {\n if (char === '\\\\') {\n escaping = true\n }\n value += char\n }\n char = input[position + length]\n }\n value += '\\'' // closing quote\n return [length + 1, ['Symbol', value]]\n }\n\n if (!illegalFirstSymbolCharacterSet.has(value)) {\n const initialPosition = position\n position += 1\n let char = input[position]\n\n while (char && !illegalSymbolCharacterSet.has(char)) {\n value += char\n position += 1\n char = input[position]\n }\n return [position - initialPosition, ['Symbol', value]]\n }\n\n return NO_MATCH\n}\n\nexport const tokenizeReservedSymbolToken: Tokenizer<ReservedSymbolToken> = (input, position) => {\n const symbolMeta = tokenizeSymbol(input, position)\n if (symbolMeta[0] === 0 || !symbolMeta[1]) {\n return NO_MATCH\n }\n let symbolName = symbolMeta[1][1]\n symbolName = symbolName.startsWith('\\'') ? symbolName.slice(1, symbolName.length - 1) : symbolName\n\n const info = reservedSymbolRecord[symbolName as ReservedSymbol]\n if (info === undefined) {\n return NO_MATCH\n }\n return [symbolMeta[0], ['ReservedSymbol', symbolName as ValidReservedSymbol]]\n}\n\nexport const tokenizeOperator: Tokenizer<OperatorToken> = (input, position) => {\n const threeChars = input.slice(position, position + 3)\n if (position + 2 < input.length && isSymbolicOperator(threeChars)) {\n return [3, ['Operator', threeChars]]\n }\n\n const twoChars = input.slice(position, position + 2)\n if (position + 1 < input.length && isSymbolicOperator(twoChars)) {\n return [2, ['Operator', twoChars]]\n }\n\n const oneChar = input[position] ?? ''\n if (isSymbolicOperator(oneChar)) {\n return [1, ['Operator', oneChar]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeMultiLineComment: Tokenizer<MultiLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '*') {\n let length = 2\n let value = '/*'\n while ((input[position + length] !== '*' || input[position + length + 1] !== '/') && position + length + 1 < input.length) {\n value += input[position + length]\n length += 1\n }\n if (position + length + 1 >= input.length) {\n throw new LitsError('Comment not closed', undefined)\n }\n value += '*/'\n length += 2\n\n return [length, ['MultiLineComment', value]]\n }\n return NO_MATCH\n}\n\nexport const tokenizeSingleLineComment: Tokenizer<SingleLineCommentToken> = (input, position) => {\n if (input[position] === '/' && input[position + 1] === '/') {\n let length = 2\n let value = '//'\n while (input[position + length] !== '\\n' && position + length < input.length) {\n value += input[position + length]\n length += 1\n }\n\n return [length, ['SingleLineComment', value]]\n }\n return NO_MATCH\n}\n\n// All tokenizers, order matters!\nexport const tokenizers = [\n tokenizeWhitespace,\n tokenizeMultiLineComment,\n tokenizeSingleLineComment,\n tokenizeReservedSymbolToken,\n tokenizeLParen,\n tokenizeRParen,\n tokenizeLBracket,\n tokenizeRBracket,\n tokenizeLBrace,\n tokenizeRBrace,\n tokenizeString,\n tokenizeRegexpShorthand,\n tokenizeBasePrefixedNumber,\n tokenizeNumber,\n tokenizeOperator,\n tokenizeSymbol,\n] as const satisfies Tokenizer<Token>[]\n","import { LitsError } from '../errors'\nimport type { FilePathParams } from '../Lits/Lits'\nimport { tokenizers } from './tokenizers'\nimport type { SourceCodeInfo, Token, TokenDescriptor } from './token'\n\nexport interface TokenStream {\n tokens: Token[]\n hasDebugData: boolean\n filePath?: string\n}\n\nexport function tokenize(input: string, debug: boolean, filePath: FilePathParams['filePath']): TokenStream {\n let position = 0\n const tokenStream: TokenStream = {\n tokens: [],\n filePath,\n hasDebugData: debug,\n }\n\n while (position < input.length) {\n const tokenDescriptor = getCurrentToken(input, position)\n\n const sourceCodeInfo: SourceCodeInfo | undefined = debug\n ? createSourceCodeInfo(input, position, filePath)\n : undefined\n\n if (!tokenDescriptor) {\n throw new LitsError(`Unrecognized character '${input[position]}'.`, sourceCodeInfo)\n }\n\n const [count, token] = tokenDescriptor\n\n position += count\n if (token) {\n if (sourceCodeInfo) {\n token[2] = sourceCodeInfo\n }\n\n tokenStream.tokens.push(token)\n }\n }\n\n return tokenStream\n}\n\nfunction getSourceCodeLine(input: string, lineNbr: number): string {\n return input.split(/\\r\\n|\\r|\\n/)[lineNbr] as string\n}\n\nfunction createSourceCodeInfo(input: string, position: number, filePath?: string): SourceCodeInfo {\n const lines = input.substring(0, position + 1).split(/\\r\\n|\\r|\\n/)\n const lastLine = lines[lines.length - 1] as string\n\n const code = getSourceCodeLine(input, lines.length - 1)\n const line = lines.length\n const column = lastLine.length\n return {\n code,\n position: {\n line,\n column,\n },\n filePath,\n }\n}\n\nfunction getCurrentToken(input: string, position: number): TokenDescriptor<Token> | null {\n const initialPosition = position\n\n for (const tokenizer of tokenizers) {\n const [nbrOfCharacters, token] = tokenizer(input, position)\n position += nbrOfCharacters\n if (nbrOfCharacters === 0) {\n continue\n }\n\n return [position - initialPosition, token]\n }\n return null\n}\n","import { LitsError } from '../errors'\nimport type { ValidReservedSymbol } from './reservedNames'\nimport { type SymbolicBinaryOperator, type SymbolicOperator, isBinaryOperator } from './operators'\n\nexport const tokenTypes = [\n 'LBrace',\n 'LBracket',\n 'RBrace',\n 'RBracket',\n 'LParen',\n 'RParen',\n 'BasePrefixedNumber',\n 'MultiLineComment',\n 'Number',\n 'Operator',\n 'RegexpShorthand',\n 'ReservedSymbol',\n 'SingleLineComment',\n 'String',\n 'Symbol',\n 'Whitespace',\n] as const\n\nexport type TokenType = typeof tokenTypes[number]\n\nconst modifierNames = ['&rest', '&let', '&when', '&while'] as const\nexport type ModifierName = typeof modifierNames[number]\n\ntype GenericToken<T extends TokenType, V extends string = string> = [T, V] | [T, V, SourceCodeInfo]\n\nexport type LBraceToken = GenericToken<'LBrace', '{'>\nexport type LBracketToken = GenericToken<'LBracket', '['>\nexport type LParenToken = GenericToken<'LParen', '('>\nexport type RBraceToken = GenericToken<'RBrace', '}'>\nexport type RBracketToken = GenericToken<'RBracket', ']'>\nexport type RParenToken = GenericToken<'RParen', ')'>\n\nexport type BasePrefixedNumberToken = GenericToken<'BasePrefixedNumber'>\nexport type MultiLineCommentToken = GenericToken<'MultiLineComment'>\nexport type NumberToken = GenericToken<'Number'>\nexport type OperatorToken<T extends SymbolicOperator = SymbolicOperator> = GenericToken<'Operator', T>\nexport type RegexpShorthandToken = GenericToken<'RegexpShorthand'>\nexport type ReservedSymbolToken<T extends ValidReservedSymbol = ValidReservedSymbol> = GenericToken<'ReservedSymbol', T>\nexport type SingleLineCommentToken = GenericToken<'SingleLineComment'>\nexport type StringToken = GenericToken<'String'>\nexport type SymbolToken<T extends string = string> = GenericToken<'Symbol', T>\nexport type WhitespaceToken = GenericToken<'Whitespace'>\n\nexport type Token =\n | LBraceToken\n | LBracketToken\n | LParenToken\n | RBraceToken\n | RBracketToken\n | RParenToken\n | BasePrefixedNumberToken\n | MultiLineCommentToken\n | NumberToken\n | OperatorToken\n | RegexpShorthandToken\n | ReservedSymbolToken\n | SingleLineCommentToken\n | StringToken\n | SymbolToken\n | WhitespaceToken\n\nexport type TokenDescriptor<T extends Token> = [length: number, token?: T]\n\nexport interface SourceCodeInfo {\n position: {\n line: number\n column: number\n }\n code: string\n filePath?: string\n}\n\nexport function isSymbolToken<T extends string>(token: Token, symbolName?: T): token is SymbolToken<T> {\n if (token?.[0] !== 'Symbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\n\nexport function assertSymbolToken<T extends string>(token: Token, symbolName?: T): asserts token is SymbolToken<T> {\n if (!isSymbolToken(token, symbolName)) {\n throwUnexpectedToken('Symbol', undefined, token)\n }\n}\nexport function asSymbolToken<T extends string>(token: Token, symbolName?: T): SymbolToken<T> {\n assertSymbolToken(token, symbolName)\n return token\n}\n\nexport function isReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): token is ReservedSymbolToken<T> {\n if (token?.[0] !== 'ReservedSymbol') {\n return false\n }\n if (symbolName && token[1] !== symbolName) {\n return false\n }\n return true\n}\nexport function assertReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): asserts token is ReservedSymbolToken<T> {\n if (!isReservedSymbolToken(token, symbolName)) {\n throwUnexpectedToken('ReservedSymbol', symbolName, token)\n }\n}\nexport function asReservedSymbolToken<T extends ValidReservedSymbol>(token: Token, symbolName?: T): ReservedSymbolToken<T> {\n assertReservedSymbolToken(token, symbolName)\n return token\n}\n\nexport function isSingleLineCommentToken(token: Token): token is SingleLineCommentToken {\n return token?.[0] === 'SingleLineComment'\n}\nexport function assertSingleLineCommentToken(token: Token): asserts token is SingleLineCommentToken {\n if (!isSingleLineCommentToken(token)) {\n throwUnexpectedToken('SingleLineComment', undefined, token)\n }\n}\nexport function asSingleLineCommentToken(token: Token): SingleLineCommentToken {\n assertSingleLineCommentToken(token)\n return token\n}\n\nexport function isMultiLineCommentToken(token: Token): token is MultiLineCommentToken {\n return token?.[0] === 'MultiLineComment'\n}\nexport function assertMultiLineCommentToken(token: Token): asserts token is MultiLineCommentToken {\n if (!isMultiLineCommentToken(token)) {\n throwUnexpectedToken('MultiLineComment', undefined, token)\n }\n}\nexport function asMultiLineCommentToken(token: Token): MultiLineCommentToken {\n assertMultiLineCommentToken(token)\n return token\n}\n\nexport function isOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): token is OperatorToken<T> {\n if (token?.[0] !== 'Operator') {\n return false\n }\n if (operatorName && token[1] !== operatorName) {\n return false\n }\n return true\n}\nexport function assertOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): asserts token is OperatorToken<T> {\n if (!isOperatorToken(token, operatorName)) {\n if (operatorName) {\n throw new LitsError(`Unexpected token: ${token}, expected operator ${operatorName}`, token[2])\n }\n throwUnexpectedToken('Operator', operatorName, token)\n }\n}\nexport function asOperatorToken<T extends SymbolicOperator>(token: Token, operatorName?: T): OperatorToken<T> {\n assertOperatorToken(token, operatorName)\n return token\n}\n\nexport function isWhitespaceToken(token: Token): token is WhitespaceToken {\n return token?.[0] === 'Whitespace'\n}\nexport function assertWhitespaceToken(token: Token): asserts token is WhitespaceToken {\n if (!isWhitespaceToken(token)) {\n throwUnexpectedToken('Whitespace', undefined, token)\n }\n}\nexport function asWhitespaceToken(token: Token): WhitespaceToken {\n assertWhitespaceToken(token)\n return token\n}\n\nexport function isNumberToken(token: Token): token is NumberToken {\n return token?.[0] === 'Number'\n}\nexport function assertNumberToken(token: Token): asserts token is NumberToken {\n if (!isNumberToken(token)) {\n throwUnexpectedToken('Number', undefined, token)\n }\n}\nexport function asNumberToken(token: Token): NumberToken {\n assertNumberToken(token)\n return token\n}\n\nexport function isBasePrefixedNumberToken(token: Token): token is BasePrefixedNumberToken {\n return token?.[0] === 'BasePrefixedNumber'\n}\nexport function assertBasePrefixedNumberToken(token: Token): asserts token is BasePrefixedNumberToken {\n if (!isBasePrefixedNumberToken(token)) {\n throwUnexpectedToken('BasePrefixedNumber', undefined, token)\n }\n}\nexport function asBasePrefixedNumberToken(token: Token): BasePrefixedNumberToken {\n assertBasePrefixedNumberToken(token)\n return token\n}\n\nexport function isLParenToken(token: Token): token is LParenToken {\n return token?.[0] === 'LParen'\n}\nexport function assertLParenToken(token: Token): asserts token is LParenToken {\n if (!isLParenToken(token)) {\n throwUnexpectedToken('LParen', undefined, token)\n }\n}\nexport function asLParenToken(token: Token): LParenToken {\n assertLParenToken(token)\n return token\n}\n\nexport function isRParenToken(token: Token): token is RParenToken {\n return token?.[0] === 'RParen'\n}\nexport function assertRParenToken(token: Token): asserts token is RParenToken {\n if (!isRParenToken(token)) {\n throwUnexpectedToken('RParen', undefined, token)\n }\n}\nexport function asRParenToken(token: Token): RParenToken {\n assertRParenToken(token)\n return token\n}\n\nexport function isLBracketToken(token: Token): token is LBracketToken {\n return token?.[0] === 'LBracket'\n}\nexport function assertLBracketToken(token: Token): asserts token is LBracketToken {\n if (!isLBracketToken(token)) {\n throwUnexpectedToken('LBracket', undefined, token)\n }\n}\nexport function asLBracketToken(token: Token): LBracketToken {\n assertLBracketToken(token)\n return token\n}\n\nexport function isRBracketToken(token: Token): token is RBracketToken {\n return token?.[0] === 'RBracket'\n}\nexport function assertRBracketToken(token: Token): asserts token is RBracketToken {\n if (!isRBracketToken(token)) {\n throwUnexpectedToken('RBracket', undefined, token)\n }\n}\nexport function asRBracketToken(token: Token): RBracketToken {\n assertRBracketToken(token)\n return token\n}\n\nexport function isLBraceToken(token: Token): token is LBraceToken {\n return token?.[0] === 'LBrace'\n}\nexport function assertLBraceToken(token: Token): asserts token is LBraceToken {\n if (!isLBraceToken(token)) {\n throwUnexpectedToken('LBrace', undefined, token)\n }\n}\nexport function asLBraceToken(token: Token): LBraceToken {\n assertLBraceToken(token)\n return token\n}\n\nexport function isRBraceToken(token: Token): token is RBraceToken {\n return token?.[0] === 'RBrace'\n}\nexport function assertRBraceToken(token: Token): asserts token is RBraceToken {\n if (!isRBraceToken(token)) {\n throwUnexpectedToken('RBrace', undefined, token)\n }\n}\nexport function asRBraceToken(token: Token): RBraceToken {\n assertRBraceToken(token)\n return token\n}\n\nexport function isStringToken(token: Token): token is StringToken {\n return token?.[0] === 'String'\n}\nexport function assertStringToken(token: Token): asserts token is StringToken {\n if (!isStringToken(token)) {\n throwUnexpectedToken('String', undefined, token)\n }\n}\nexport function asStringToken(token: Token): StringToken {\n assertStringToken(token)\n return token\n}\n\nexport function isRegexpShorthandToken(token: Token): token is RegexpShorthandToken {\n return token?.[0] === 'RegexpShorthand'\n}\nexport function assertRegexpShorthandToken(token: Token): asserts token is RegexpShorthandToken {\n if (!isRegexpShorthandToken(token)) {\n throwUnexpectedToken('RegexpShorthand', undefined, token)\n }\n}\nexport function asRegexpShorthandToken(token: Token): RegexpShorthandToken {\n assertRegexpShorthandToken(token)\n return token\n}\n\nexport function isA_BinaryOperatorToken(token: Token): token is OperatorToken<SymbolicBinaryOperator> {\n return token?.[0] === 'Operator' && isBinaryOperator(token[1])\n}\nexport function assertA_BinaryOperatorToken(token: Token): asserts token is OperatorToken<SymbolicBinaryOperator> {\n if (!isA_BinaryOperatorToken(token)) {\n throwUnexpectedToken('Operator', undefined, token)\n }\n}\nexport function asA_BinaryOperatorToken(token: Token): OperatorToken<SymbolicBinaryOperator> {\n assertA_BinaryOperatorToken(token)\n return token\n}\n\nfunction throwUnexpectedToken(expected: TokenType, expectedValue: string | undefined, actual: Token): never {\n const actualOutput = `${actual[0]} '${actual[1]}'`\n throw new LitsError(`Unexpected token: ${actualOutput}, expected ${expected}${expectedValue ? ` '${expectedValue}'` : ''}`, actual[2])\n}\n","import type { TokenStream } from './tokenize'\nimport { isMultiLineCommentToken, isSingleLineCommentToken, isWhitespaceToken } from './token'\n\nexport function minifyTokenStream(tokenStream: TokenStream, { removeWhiteSpace }: { removeWhiteSpace: boolean }): TokenStream {\n const tokens = tokenStream.tokens\n .filter((token) => {\n if (isSingleLineCommentToken(token)\n || isMultiLineCommentToken(token)\n || (removeWhiteSpace && isWhitespaceToken(token))) {\n return false\n }\n return true\n })\n\n return { ...tokenStream, tokens }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\nimport { isSymbolToken } from '../tokenizer/token'\n\nexport function transformSymbolTokens(tokenStram: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return {\n ...tokenStram,\n tokens: tokenStram.tokens.map(token => isSymbolToken(token)\n ? [token[0], transformer(token[1])]\n : token),\n }\n}\n","import type { TokenStream } from '../tokenizer/tokenize'\n\nexport function untokenize(tokenStream: TokenStream): string {\n return tokenStream.tokens.reduce((acc: string, token) => {\n return `${acc}${token[1]}`\n }, '')\n}\n","import type { NormalExpressionName } from '../../reference/api'\nimport type { SpecialExpressionName, SpecialExpressionType } from '../builtin'\nimport { getAllBindingTargetNames } from '../builtin/bindingNode'\nimport { allNormalExpressions, normalExpressionTypes } from '../builtin/normalExpressions'\nimport type { AndNode } from '../builtin/specialExpressions/and'\nimport type { ArrayNode } from '../builtin/specialExpressions/array'\nimport type { CondNode } from '../builtin/specialExpressions/cond'\nimport type { DefinedNode } from '../builtin/specialExpressions/defined'\nimport type { DefNode } from '../builtin/specialExpressions/def'\nimport type { DoNode } from '../builtin/specialExpressions/do'\nimport type { DefnNode, FnNode, FunctionNode } from '../builtin/specialExpressions/functions'\nimport type { IfNode } from '../builtin/specialExpressions/if'\nimport type { LetNode } from '../builtin/specialExpressions/let'\nimport type { LoopNode } from '../builtin/specialExpressions/loop'\nimport type { DoSeqNode, ForNode, LoopBindingNode } from '../builtin/specialExpressions/loops'\nimport type { ObjectNode } from '../builtin/specialExpressions/object'\nimport type { OrNode } from '../builtin/specialExpressions/or'\nimport type { QqNode } from '../builtin/specialExpressions/qq'\nimport type { RecurNode } from '../builtin/specialExpressions/recur'\nimport type { SwitchNode } from '../builtin/specialExpressions/switch'\nimport type { ThrowNode } from '../builtin/specialExpressions/throw'\nimport type { TryNode } from '../builtin/specialExpressions/try'\nimport type { UnlessNode } from '../builtin/specialExpressions/unless'\nimport { specialExpressionTypes } from '../builtin/specialExpressionTypes'\nimport { NodeTypes } from '../constants/constants'\nimport { LitsError } from '../errors'\nimport { type SymbolicBinaryOperator, isBinaryOperator, isFunctionOperator } from '../tokenizer/operators'\nimport { isNumberReservedSymbol, numberReservedSymbolRecord } from '../tokenizer/reservedNames'\nimport type { OperatorToken, ReservedSymbolToken, SourceCodeInfo, SymbolToken, Token, TokenType } from '../tokenizer/token'\nimport {\n asLBraceToken,\n asLBracketToken,\n asReservedSymbolToken,\n asSymbolToken,\n assertLParenToken,\n assertOperatorToken,\n assertRBraceToken,\n assertRBracketToken,\n assertRParenToken,\n assertReservedSymbolToken,\n assertSymbolToken,\n isA_BinaryOperatorToken,\n isLBraceToken,\n isLBracketToken,\n isLParenToken,\n isOperatorToken,\n isRBraceToken,\n isRBracketToken,\n isRParenToken,\n isReservedSymbolToken,\n isStringToken,\n isSymbolToken,\n} from '../tokenizer/token'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { assertNumberOfParams } from '../typeGuards'\nimport { asUserDefinedSymbolNode, isNormalBuiltinSymbolNode, isSpecialBuiltinSymbolNode, isUserDefinedSymbolNode } from '../typeGuards/astNode'\nimport { type BindingNode, type BindingTarget, type Node, type NormalBuiltinSymbolNode, type NormalExpressionNodeExpression, type NormalExpressionNodeWithName, type NumberNode, type ParseState, type ReservedSymbolNode, type SpecialBuiltinSymbolNode, type StringNode, type SymbolNode, type UserDefinedSymbolNode, bindingTargetTypes } from './types'\n\nconst exponentiationPrecedence = 10\nconst binaryFunctionalOperatorPrecedence = 1\nconst placeholderRegexp = /^\\$([1-9]\\d?)?$/\n\nfunction withSourceCodeInfo<T extends Node | BindingTarget>(node: T, sourceCodeInfo: SourceCodeInfo | undefined): T {\n if (sourceCodeInfo) {\n node[2] = sourceCodeInfo\n }\n return node\n}\n\nfunction getPrecedence(operatorSign: SymbolicBinaryOperator, sourceCodeInfo: SourceCodeInfo | undefined): number {\n switch (operatorSign) {\n case '**': // exponentiation\n return exponentiationPrecedence\n\n case '*': // multiplication\n case '/': // division\n case '%': // remainder\n return 9\n\n case '+': // addition\n case '-': // subtraction\n return 8\n\n case '<<': // left shift\n case '>>': // signed right shift\n case '>>>': // unsigned right shift\n return 7\n\n case '++': // string concatenation\n return 6\n\n case '<': // less than\n case '<=': // less than or equal\n case '≤': // less than or equal\n case '>': // greater than\n case '>=': // greater than or equal\n case '≥': // greater than or equal\n return 5\n\n case '=': // equal\n case '!=': // not equal\n case '≠': // not equal\n return 4\n\n case '&': // bitwise AND\n case '^': // bitwise XOR\n case '|': // bitwise OR\n return 3\n\n case '&&': // logical AND\n case '||': // logical OR\n case '??': // nullish coalescing\n return 2\n\n // leave room for binaryFunctionalOperatorPrecedence = 1\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unknown binary operator: ${operatorSign satisfies never}`, sourceCodeInfo)\n }\n}\n\nfunction createNamedNormalExpressionNode(symbolNode: NormalBuiltinSymbolNode | UserDefinedSymbolNode, params: Node[], sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeWithName {\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([NodeTypes.NormalExpression, [symbolNode, params]], sourceCodeInfo)\n\n if (isNormalBuiltinSymbolNode(symbolNode)) {\n assertNumberOfParams(allNormalExpressions[symbolNode[1]]!.paramCount, node)\n }\n\n return node\n}\n\nfunction createAccessorNode(left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): NormalExpressionNodeExpression {\n // Unnamed normal expression\n return withSourceCodeInfo([NodeTypes.NormalExpression, [left, [right]]], sourceCodeInfo)\n}\n\nfunction fromBinaryOperatorToNode(operator: OperatorToken, symbolNode: SymbolNode, left: Node, right: Node, sourceCodeInfo: SourceCodeInfo | undefined): Node {\n const operatorName = operator[1]\n\n switch (operatorName) {\n case '**': // exponentiation\n case '*':\n case '/':\n case '%':\n case '+':\n case '-':\n case '<<':\n case '>>':\n case '>>>':\n case '++':\n case '<':\n case '<=':\n case '≤':\n case '>':\n case '>=':\n case '≥':\n case '=':\n case '!=':\n case '≠':\n case '&':\n case '^':\n case '|':\n return createNamedNormalExpressionNode(symbolNode as NormalBuiltinSymbolNode, [left, right], sourceCodeInfo)\n case '&&':\n case '||':\n case '??':\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes[operatorName], [left, right]]] as AndNode, sourceCodeInfo)\n /* v8 ignore next 10 */\n case '.':\n case ';':\n case ':=':\n case ',':\n case '->':\n case '...':\n throw new LitsError(`Unknown binary operator: ${operatorName}`, sourceCodeInfo)\n\n default:\n throw new LitsError(`Unknown binary operator: ${operatorName satisfies never}`, sourceCodeInfo)\n }\n}\n\nexport class Parser {\n constructor(\n private readonly tokenStream: TokenStream,\n private parseState: ParseState,\n ) {}\n\n private peek(): Token {\n return this.tokenStream.tokens[this.parseState.position]!\n }\n\n private peekAhead(count: number): Token {\n return this.tokenStream.tokens[this.parseState.position + count]!\n }\n\n private advance(): void {\n this.parseState.position += 1\n }\n\n public parse(): Node[] {\n const nodes: Node[] = []\n while (!this.isAtEnd()) {\n nodes.push(this.parseExpression(0, true))\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else {\n if (!this.isAtEnd()) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n }\n return nodes\n }\n\n private parseExpression(precedence = 0, moduleScope = false): Node {\n const firstToken = this.peek()\n\n let left: Node\n\n if (isSymbolToken(firstToken)) {\n switch (firstToken[1]) {\n case 'let':\n return this.parseLet(firstToken)\n case 'if':\n case 'unless':\n left = this.parseIfOrUnless(firstToken)\n break\n case 'cond':\n left = this.parseCond(firstToken)\n break\n case 'switch':\n left = this.parseSwitch(firstToken)\n break\n case 'for':\n case 'doseq':\n left = this.parseForOrDoseq(firstToken)\n break\n case 'do':\n left = this.parseDo(firstToken)\n break\n case 'loop':\n left = this.parseLoop(firstToken)\n break\n case 'try':\n left = this.parseTry(firstToken)\n break\n }\n }\n else if (isReservedSymbolToken(firstToken, 'function')) {\n return this.parseFunction(firstToken)\n }\n else if (isReservedSymbolToken(firstToken, 'export')) {\n if (!moduleScope) {\n throw new LitsError('export is only allowed in module scope', firstToken[2])\n }\n return this.parseExport(firstToken)\n }\n\n left ||= this.parseOperand()\n let operator = this.peek()\n\n while (!this.isAtExpressionEnd()) {\n if (isA_BinaryOperatorToken(operator)) {\n const name = operator[1]\n const newPrecedece = getPrecedence(name, operator[2])\n if (\n newPrecedece <= precedence\n // ** (exponentiation) is right associative\n && !(newPrecedece === exponentiationPrecedence && precedence === exponentiationPrecedence)) {\n break\n }\n const symbol: SymbolNode = specialExpressionTypes[name as SpecialExpressionName]\n ? withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[name as SpecialExpressionName]], operator[2])\n : withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[name]!], operator[2])\n this.advance()\n const right = this.parseExpression(newPrecedece)\n left = fromBinaryOperatorToNode(operator, symbol, left, right, operator[2])\n }\n else if (isSymbolToken(operator)) {\n if (!isFunctionOperator(operator[1])) {\n break\n }\n const newPrecedece = binaryFunctionalOperatorPrecedence\n if (newPrecedece <= precedence) {\n break\n }\n const operatorSymbol = this.parseSymbol()\n const right = this.parseExpression(newPrecedece)\n if (isSpecialBuiltinSymbolNode(operatorSymbol)) {\n throw new LitsError('Special expressions are not allowed in binary functional operators', operatorSymbol[2])\n }\n left = createNamedNormalExpressionNode(operatorSymbol, [left, right], operator[2])\n }\n else {\n break\n }\n\n operator = this.peek()\n }\n\n return left\n }\n\n private parseOperand(): Node {\n let operand = this.parseOperandPart()\n let token = this.peek()\n while (isOperatorToken(token, '.') || isLBracketToken(token) || isLParenToken(token)) {\n if (token[1] === '.') {\n this.advance()\n const symbolToken = this.peek()\n if (!isSymbolToken(symbolToken)) {\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, symbolToken[1]], symbolToken[2])\n operand = createAccessorNode(operand, stringNode, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLBracketToken(token)) {\n this.advance()\n const expression = this.parseExpression()\n if (!isRBracketToken(this.peek())) {\n throw new LitsError('Expected closing bracket', this.peek()[2])\n }\n operand = createAccessorNode(operand, expression, token[2])\n this.advance()\n token = this.peek()\n }\n else if (isLParenToken(token)) {\n operand = this.parseFunctionCall(operand)\n token = this.peek()\n }\n }\n return operand\n }\n\n private parseOperandPart(): Node {\n const token = this.peek()\n\n // Parentheses\n if (isLParenToken(token)) {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n this.advance()\n const expression = this.parseExpression()\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n return expression\n }\n\n else if (isOperatorToken(token)) {\n const operatorName = token[1]\n if (isBinaryOperator(operatorName)) {\n this.advance()\n if (specialExpressionTypes[operatorName as SpecialExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[operatorName as SpecialExpressionName]], token[2]) satisfies SpecialBuiltinSymbolNode\n }\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[operatorName as NormalExpressionName] as number], token[2]) satisfies NormalBuiltinSymbolNode\n }\n\n if (operatorName === '->') {\n return this.parseShorthandLamdaFunction()\n }\n else {\n throw new LitsError(`Illegal operator: ${operatorName}`, token[2])\n }\n }\n\n // Object litteral, e.g. {a=1, b=2}\n if (isLBraceToken(token)) {\n return this.parseObject()\n }\n\n // Array litteral, e.g. [1, 2]\n if (isLBracketToken(token)) {\n return this.parseArray()\n }\n\n const tokenType = token[0] as Exclude<\n TokenType,\n | 'Operator' // Handled above\n | 'LParen' // Handled above\n | 'LBrace' // Handled above\n | 'LBracket' // Handled above\n\n | 'RParen' // Illegal token\n | 'RBrace' // Illegal token\n | 'RBracket' // Illegal token\n\n | 'MultiLineComment' // Should have been removed\n | 'SingleLineComment' // Should have been removed\n | 'Whitespace' // Should have been removed\n >\n switch (tokenType) {\n case 'Number':\n case 'BasePrefixedNumber':\n return this.parseNumber()\n case 'String':\n return this.parseString()\n case 'Symbol': {\n const positionBefore = this.parseState.position\n const lamdaFunction = this.parseLambdaFunction()\n if (lamdaFunction) {\n return lamdaFunction\n }\n this.parseState.position = positionBefore\n return this.parseSymbol()\n }\n case 'ReservedSymbol':\n return this.parseReservedSymbol()\n case 'RegexpShorthand':\n return this.parseRegexpShorthand()\n\n default:\n throw new LitsError(`Unknown token type: ${tokenType}`, token[2])\n }\n }\n\n private parseObject(): ObjectNode {\n const firstToken = asLBraceToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBraceToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n const token = this.peek()\n if (isStringToken(token)) {\n const stringNode = this.parseString()\n params.push(withSourceCodeInfo([NodeTypes.String, stringNode[1]], token[2]))\n }\n else if (isSymbolToken(token)) {\n const value = token[1].startsWith('\\'')\n ? this.stringFromQuotedSymbol(token[1])\n : token[1]\n params.push(withSourceCodeInfo([NodeTypes.String, value], token[2]))\n this.advance()\n }\n else {\n throw new LitsError('Expected key to be a symbol or a string', this.peek()[2])\n }\n\n assertOperatorToken(this.peek(), ':=')\n this.advance()\n\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBraceToken(nextToken)) {\n throw new LitsError('Expected comma or closing brace', this.peek()[2])\n }\n\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBraceToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.object, params]], firstToken[2])\n }\n\n private parseArray(): ArrayNode {\n const firstToken = asLBracketToken(this.peek())\n this.advance()\n const params: Node[] = []\n while (!this.isAtEnd() && !isRBracketToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRBracketToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n\n assertRBracketToken(this.peek())\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.array, params]], firstToken[2])\n }\n\n private parseFunctionCall(symbol: Node): Node {\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek())) {\n if (isOperatorToken(this.peek(), '...')) {\n this.advance()\n params.push(withSourceCodeInfo([NodeTypes.Spread, this.parseExpression()], this.peek()[2]))\n }\n else {\n params.push(this.parseExpression())\n }\n const nextToken = this.peek()\n if (!isOperatorToken(nextToken, ',') && !isRParenToken(nextToken)) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(nextToken, ',')) {\n this.advance()\n }\n }\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n this.advance()\n\n if (isSpecialBuiltinSymbolNode(symbol)) { // Named function\n const specialExpressionType = symbol[1]\n const type = specialExpressionType as Exclude<\n SpecialExpressionType,\n | typeof specialExpressionTypes.for\n | typeof specialExpressionTypes.if\n | typeof specialExpressionTypes.unless\n | typeof specialExpressionTypes.cond\n | typeof specialExpressionTypes.switch\n | typeof specialExpressionTypes.let\n | typeof specialExpressionTypes.do\n | typeof specialExpressionTypes.loop\n | typeof specialExpressionTypes.try\n | typeof specialExpressionTypes.doseq\n | typeof specialExpressionTypes.function\n >\n switch (type) {\n case specialExpressionTypes['||']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies OrNode\n case specialExpressionTypes['&&']:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies AndNode\n case specialExpressionTypes.recur:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies RecurNode\n case specialExpressionTypes.array:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ArrayNode\n case specialExpressionTypes.object:\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, params]], symbol[2]) satisfies ObjectNode\n case specialExpressionTypes['??']: {\n if (params.length === 1) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, undefined]]], symbol[2]) satisfies QqNode\n }\n if (params.length === 2) {\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, [params[0]!, params[1]!]]], symbol[2]) satisfies QqNode\n }\n throw new LitsError('Expected exactly two parameters', symbol[2])\n }\n case specialExpressionTypes['defined?']: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param as SymbolNode]], symbol[2]) satisfies DefinedNode\n }\n case specialExpressionTypes.throw: {\n if (params.length !== 1) {\n throw new LitsError('Expected exactly one parameter', symbol[2])\n }\n const [param] = params\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [type, param!]], symbol[2]) satisfies ThrowNode\n }\n case specialExpressionTypes['0_fn']:\n case specialExpressionTypes['0_def']:\n case specialExpressionTypes['0_defn']:\n throw new LitsError(`${type} is not allowed`, symbol[2])\n /* v8 ignore next 2 */\n default:\n throw new LitsError(`Unknown special expression: ${type satisfies never}`, symbol[2])\n }\n }\n else if (isNormalBuiltinSymbolNode(symbol) || isNormalBuiltinSymbolNode(symbol)) {\n return createNamedNormalExpressionNode(symbol, params, symbol[2])\n }\n\n else {\n return withSourceCodeInfo([NodeTypes.NormalExpression, [symbol, params]], symbol[2]) satisfies NormalExpressionNodeExpression\n }\n }\n\n parseLambdaFunction(): FnNode | null {\n const firstToken = this.peek()\n\n if (isLParenToken(firstToken)\n && isSymbolToken(this.peekAhead(1))\n && isOperatorToken(this.peekAhead(2), '->')) {\n return null\n }\n\n try {\n const functionArguments = this.parseFunctionArguments()\n\n if (!isOperatorToken(this.peek(), '->')) {\n return null\n }\n this.advance()\n\n const body = this.parseExpression()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [body],\n ]]], firstToken[2]) satisfies FnNode\n }\n catch {\n return null\n }\n }\n\n parseFunctionArguments(): BindingTarget[] {\n const firstToken = this.peek()\n if (isSymbolToken(firstToken)) {\n return [withSourceCodeInfo([bindingTargetTypes.symbol, [this.parseSymbol(), undefined]], firstToken[2])]\n }\n\n assertLParenToken(firstToken)\n this.advance()\n\n let rest = false\n let defaults = false\n const functionArguments: BindingTarget[] = []\n while (!this.isAtEnd() && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n if (rest) {\n throw new LitsError('Rest argument must be last', this.peek()[2])\n }\n const bindingTarget = this.parseBindingTarget()\n if (bindingTarget[1][1] !== undefined) {\n defaults = true\n }\n if (bindingTarget[0] === bindingTargetTypes.rest) {\n rest = true\n }\n if (defaults && !bindingTarget[1][1]) {\n throw new LitsError('Default arguments must be last', this.peek()[2])\n }\n functionArguments.push(bindingTarget)\n\n if (!isOperatorToken(this.peek(), ',') && !isRParenToken(this.peek()) && !isSymbolToken(this.peek(), 'let')) {\n throw new LitsError('Expected comma or closing parenthesis', this.peek()[2])\n }\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n }\n\n if (!isRParenToken(this.peek())) {\n throw new LitsError('Expected closing parenthesis', this.peek()[2])\n }\n\n this.advance()\n\n return functionArguments\n }\n\n private parseShorthandLamdaFunction(): FnNode {\n const firstToken = this.peek()\n this.advance()\n const startPos = this.parseState.position\n const exprNode = this.parseExpression()\n const endPos = this.parseState.position - 1\n\n let arity = 0\n let dollar1: 'NOT_SET' | 'WITH_1' | 'NAKED' = 'NOT_SET' // referring to argument bindings. $ = NAKED, $1, $2, $3, etc = WITH_1\n for (let pos = startPos; pos <= endPos; pos += 1) {\n const token = this.tokenStream.tokens[pos]!\n if (isSymbolToken(token)) {\n const match = placeholderRegexp.exec(token[1])\n if (match) {\n const number = match[1] ?? '1'\n if (number === '1') {\n const mixedPercent1 = (!match[1] && dollar1 === 'WITH_1') || (match[1] && dollar1 === 'NAKED')\n if (mixedPercent1)\n throw new LitsError('Please make up your mind, either use $ or $1', firstToken[2])\n\n dollar1 = match[1] ? 'WITH_1' : 'NAKED'\n }\n\n arity = Math.max(arity, Number(number))\n if (arity > 20)\n throw new LitsError('Can\\'t specify more than 20 arguments', firstToken[2])\n }\n }\n }\n\n const functionArguments: BindingTarget[] = []\n\n for (let i = 1; i <= arity; i += 1) {\n if (i === 1 && dollar1 === 'NAKED') {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, '$'], undefined]], firstToken[2]))\n }\n else {\n functionArguments.push(withSourceCodeInfo([bindingTargetTypes.symbol, [[NodeTypes.UserDefinedSymbol, `$${i}`], undefined]], firstToken[2]))\n }\n }\n\n const node: FnNode = withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_fn'], [\n functionArguments,\n [exprNode],\n ]]], firstToken[2])\n\n return node\n }\n\n private parseOptionalDefaulValue(): Node | undefined {\n if (isOperatorToken(this.peek(), ':=')) {\n this.advance()\n return this.parseExpression()\n }\n return undefined\n }\n\n private parseBindingTarget({ requireDefaultValue, noRest }: { requireDefaultValue?: true, noRest?: true } = {}): BindingTarget {\n const firstToken = this.peek()\n\n // Symbol\n if (isSymbolToken(firstToken)) {\n const symbol = this.parseSymbol()\n if (!isUserDefinedSymbolNode(symbol)) {\n throw new LitsError('Expected user defined symbol', firstToken[2])\n }\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.symbol, [symbol, defaultValue]], firstToken[2])\n }\n\n // Rest\n if (isOperatorToken(firstToken, '...')) {\n if (noRest) {\n throw new LitsError('Rest element not allowed', firstToken[2])\n }\n this.advance()\n const symbol = asUserDefinedSymbolNode(this.parseSymbol())\n if (isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n return withSourceCodeInfo([bindingTargetTypes.rest, [symbol[1], undefined]], firstToken[2])\n }\n\n // Array\n if (isLBracketToken(firstToken)) {\n this.advance()\n const elements: (BindingTarget | null)[] = []\n let token = this.peek()\n let rest = false\n while (!isRBracketToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, ',')) {\n elements.push(null)\n this.advance()\n token = this.peek()\n continue\n }\n\n const target = this.parseBindingTarget()\n\n if (target[0] === bindingTargetTypes.rest) {\n rest = true\n }\n\n elements.push(target)\n token = this.peek()\n\n if (!isRBracketToken(token)) {\n assertOperatorToken(token, ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', this.peek()[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.array, [elements, defaultValue]], firstToken[2])\n }\n\n // Object\n if (isLBraceToken(firstToken)) {\n this.advance()\n const elements: Record<string, BindingTarget> = {}\n let token = this.peek()\n let rest = false\n while (!isRBraceToken(token)) {\n if (rest) {\n throw new LitsError('Rest argument must be last', token[2])\n }\n if (isOperatorToken(token, '...')) {\n rest = true\n this.advance()\n }\n const key = asUserDefinedSymbolNode(this.parseSymbol())\n token = this.peek()\n if (isReservedSymbolToken(token, 'as')) {\n if (rest) {\n throw new LitsError('Rest argument can not have alias', token[2])\n }\n this.advance()\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n if (elements[name[1]]) {\n throw new LitsError(`Duplicate binding name: ${name}`, token[2])\n }\n elements[key[1]] = withSourceCodeInfo([bindingTargetTypes.symbol, [name, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n else if (isRBraceToken(token) || isOperatorToken(token, ',') || isOperatorToken(token, ':=')) {\n if (elements[key[1]]) {\n throw new LitsError(`Duplicate binding name: ${key}`, token[2])\n }\n if (rest && isOperatorToken(this.peek(), ':=')) {\n throw new LitsError('Rest argument can not have default value', this.peek()[2])\n }\n\n elements[key[1]] = rest\n ? withSourceCodeInfo([bindingTargetTypes.rest, [key[1], this.parseOptionalDefaulValue()]], firstToken[2])\n : withSourceCodeInfo([bindingTargetTypes.symbol, [key, this.parseOptionalDefaulValue()]], firstToken[2])\n }\n\n else if (isLBraceToken(token) || isLBracketToken(token)) {\n elements[key[1]] = this.parseBindingTarget()\n }\n\n if (!isRBraceToken(this.peek())) {\n assertOperatorToken(this.peek(), ',')\n this.advance()\n }\n token = this.peek()\n }\n this.advance()\n token = this.peek()\n const defaultValue = this.parseOptionalDefaulValue()\n if (requireDefaultValue && !defaultValue) {\n throw new LitsError('Expected assignment', token[2])\n }\n\n return withSourceCodeInfo([bindingTargetTypes.object, [elements, defaultValue]], firstToken[2])\n }\n\n throw new LitsError('Expected symbol', this.peek()[2])\n }\n\n private parseLet(token: SymbolToken, optionalSemicolon = false): LetNode {\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n\n const value = target[1][1]!\n target[1][1] = undefined\n\n if (!optionalSemicolon) {\n assertOperatorToken(this.peek(), ';')\n }\n\n const bindingTarget: BindingNode = withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2])\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.let, bindingTarget]], token[2]) satisfies LetNode\n }\n\n private parseDo(token: SymbolToken): DoNode {\n this.advance()\n const expressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n }\n\n private parseLoop(firstToken: SymbolToken): LoopNode {\n this.advance()\n\n const bindingNodes: BindingNode[] = []\n let token = this.peek()\n while (!this.isAtEnd() && !isSymbolToken(token, 'do')) {\n assertSymbolToken(token, 'let')\n this.advance()\n\n const target = this.parseBindingTarget({ requireDefaultValue: true, noRest: true })\n const value = target[1][1]!\n target[1][1] = undefined\n\n bindingNodes.push(withSourceCodeInfo([NodeTypes.Binding, [target, value]], token[2]) satisfies BindingNode)\n\n if (isOperatorToken(this.peek(), ',')) {\n this.advance()\n }\n token = this.peek()\n }\n if (bindingNodes.length === 0) {\n throw new LitsError('Expected binding', this.peek()[2])\n }\n\n assertSymbolToken(token, 'do')\n this.advance()\n\n const params: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n params.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.loop, bindingNodes, params]], firstToken[2]) satisfies LoopNode\n }\n\n private parseTry(token: SymbolToken): TryNode {\n this.advance()\n const tryExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'catch')) {\n tryExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'catch')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const tryExpression = tryExpressions.length === 1\n ? tryExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, tryExpressions]], token[2]) satisfies DoNode\n\n assertReservedSymbolToken(this.peek(), 'catch')\n this.advance()\n\n let errorSymbol: SymbolNode | undefined\n if (isLParenToken(this.peek())) {\n this.advance()\n errorSymbol = this.parseSymbol()\n assertRParenToken(this.peek())\n this.advance()\n }\n\n const catchExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n catchExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const catchExpression = catchExpressions.length === 1\n ? catchExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, catchExpressions]], token[2]) satisfies DoNode\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.try, tryExpression, errorSymbol, catchExpression]], token[2]) satisfies TryNode\n }\n\n private parseForOrDoseq(firstToken: SymbolToken): ForNode | DoSeqNode {\n const isDoseq = firstToken[1] === 'doseq'\n this.advance()\n\n const forLoopBindings: LoopBindingNode[] = []\n\n while (!this.isAtEnd() && !isSymbolToken(this.peek(), 'do')) {\n const loopBinding = this.parseForLoopBinding()\n const existingBoundNames = forLoopBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[0][1][0])))\n const newBoundNames = getAllBindingTargetNames(loopBinding[0][1][0])\n if (Object.keys(newBoundNames).some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', loopBinding[0][2])\n }\n forLoopBindings.push(loopBinding)\n }\n\n assertSymbolToken(this.peek(), 'do')\n this.advance()\n\n const expressions: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return isDoseq\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.doseq, forLoopBindings, expressions]], firstToken[2]) satisfies DoSeqNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.for, forLoopBindings, expressions]], firstToken[2]) satisfies ForNode\n }\n\n private parseForLoopBinding(): LoopBindingNode {\n assertReservedSymbolToken(this.peek(), 'each')\n\n this.advance()\n\n const bindingNode = this.parseBinding()\n\n const modifiers: Array<'&let' | '&when' | '&while'> = []\n let token = this.peek()\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'let')\n && !isReservedSymbolToken(token, 'when')\n && !isReservedSymbolToken(token, 'while')\n && !isSymbolToken(token, 'do')\n && !isReservedSymbolToken(token, 'each')\n ) {\n throw new LitsError('Expected symbol each, do, let, when or while', token[2])\n }\n\n const letBindings: BindingNode[] = []\n if (token[1] === 'let') {\n modifiers.push('&let')\n while (isSymbolToken(token, 'let')) {\n const letNode = this.parseLet(token, true)\n const existingBoundNames = letBindings.flatMap(b => Object.keys(getAllBindingTargetNames(b[1][0])))\n const newBoundNames = Object.keys(getAllBindingTargetNames(letNode[1][1][1][0]))\n if (newBoundNames.some(n => existingBoundNames.includes(n))) {\n throw new LitsError('Duplicate binding', letNode[1][1][2])\n }\n\n letBindings.push(letNode[1][1])\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do, each or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n }\n\n let whenNode: Node | undefined\n let whileNode: Node | undefined\n while (\n isReservedSymbolToken(token, 'when')\n || isReservedSymbolToken(token, 'while')\n ) {\n this.advance()\n\n if (token[1] === 'when') {\n if (modifiers.includes('&when')) {\n throw new LitsError('Multiple when modifiers in for loop', token[2])\n }\n modifiers.push('&when')\n whenNode = this.parseExpression()\n }\n else {\n if (modifiers.includes('&while')) {\n throw new LitsError('Multiple while modifiers in for loop', token[2])\n }\n modifiers.push('&while')\n whileNode = this.parseExpression()\n }\n token = this.peek()\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each') && !isOperatorToken(token, ',')) {\n throw new LitsError('Expected do or comma', token[2])\n }\n if (isOperatorToken(token, ',')) {\n this.advance()\n }\n token = this.peek()\n }\n\n if (!isSymbolToken(token, 'do') && !isReservedSymbolToken(this.peek(), 'each')) {\n throw new LitsError('Expected do or each', token[2])\n }\n\n return [bindingNode, letBindings, whenNode, whileNode] satisfies LoopBindingNode\n }\n\n private parseBinding(): BindingNode {\n const firstToken = asSymbolToken(this.peek())\n const name = asUserDefinedSymbolNode(this.parseSymbol())\n\n assertReservedSymbolToken(this.peek(), 'in')\n this.advance()\n\n const value = this.parseExpression()\n\n const node: BindingNode = withSourceCodeInfo(\n [\n NodeTypes.Binding,\n [\n withSourceCodeInfo([bindingTargetTypes.symbol, [name, undefined]], firstToken[2]),\n value,\n ],\n ],\n firstToken[2],\n )\n return node\n }\n\n parseIfOrUnless(token: SymbolToken): IfNode | UnlessNode {\n const isUnless = token[1] === 'unless'\n this.advance()\n const condition = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const thenExpressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'else')\n && !isReservedSymbolToken(this.peek(), 'end')\n ) {\n thenExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'else') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = thenExpressions.length === 1\n ? thenExpressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, thenExpressions]], token[2]) satisfies DoNode\n\n let elseExpression: Node | undefined\n if (isReservedSymbolToken(this.peek(), 'else')) {\n this.advance()\n const elseExpressions: Node[] = []\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n elseExpressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n elseExpression = elseExpressions.length === 1\n ? elseExpressions[0]\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, elseExpressions]], token[2]) satisfies DoNode\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n const params = [condition, thenExpression]\n if (elseExpression) {\n params.push(elseExpression)\n }\n\n return isUnless\n ? withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.unless, [condition, thenExpression, elseExpression]]], token[2]) satisfies UnlessNode\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.if, [condition, thenExpression, elseExpression]]], token[2]) satisfies IfNode\n }\n\n parseCond(token: SymbolToken): CondNode {\n this.advance()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.cond, params]], token[2]) satisfies CondNode\n }\n\n parseSwitch(token: SymbolToken): SwitchNode {\n this.advance()\n const valueExpression = this.parseExpression()\n const params: [Node, Node][] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n assertReservedSymbolToken(this.peek(), 'case')\n this.advance()\n const caseExpression = this.parseExpression()\n assertReservedSymbolToken(this.peek(), 'then')\n this.advance()\n const expressions: Node[] = []\n while (\n !this.isAtEnd()\n && !isReservedSymbolToken(this.peek(), 'case')\n && !isReservedSymbolToken(this.peek(), 'end')) {\n expressions.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'case') && !isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n\n const thenExpression = expressions.length === 1\n ? expressions[0]!\n : withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.do, expressions]], token[2]) satisfies DoNode\n\n params.push([caseExpression, thenExpression])\n if (isReservedSymbolToken(this.peek(), 'end')) {\n break\n }\n assertReservedSymbolToken(this.peek(), 'case')\n }\n\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.switch, valueExpression, params]], token[2]) satisfies SwitchNode\n }\n\n parseFunction(token: ReservedSymbolToken<'function'>): FunctionNode {\n this.advance()\n const symbol = this.parseSymbol()\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n assertOperatorToken(this.peek(), ';')\n\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes.function, symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies FunctionNode\n }\n\n private isAtEnd(): boolean {\n return this.parseState.position >= this.tokenStream.tokens.length\n }\n\n private isAtExpressionEnd(): boolean {\n if (this.isAtEnd()) {\n return true\n }\n const token = this.peek()\n if (isOperatorToken(token)) {\n return [';', ',', ':='].includes(token[1])\n }\n if (isReservedSymbolToken(token)) {\n return ['else', 'when', 'while', 'then', 'end', 'case', 'catch'].includes(token[1])\n }\n return false\n }\n\n private parseExport(token: ReservedSymbolToken<'export'>): DefNode | DefnNode {\n this.advance()\n if (isSymbolToken(this.peek(), 'let')) {\n const letNode = this.parseLet(asSymbolToken(this.peek()))\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_def'], letNode[1][1]]], token[2]) satisfies DefNode\n }\n else if (isReservedSymbolToken(this.peek(), 'function')) {\n this.advance()\n const symbol = this.parseSymbol()\n\n const functionArguments = this.parseFunctionArguments()\n\n const body: Node[] = []\n\n while (!this.isAtEnd() && !isReservedSymbolToken(this.peek(), 'end')) {\n body.push(this.parseExpression())\n if (isOperatorToken(this.peek(), ';')) {\n this.advance()\n }\n else if (!isReservedSymbolToken(this.peek(), 'end')) {\n throw new LitsError('Expected ;', this.peek()[2])\n }\n }\n assertReservedSymbolToken(this.peek(), 'end')\n this.advance()\n return withSourceCodeInfo([NodeTypes.SpecialExpression, [specialExpressionTypes['0_defn'], symbol, [\n functionArguments,\n body,\n ]]], token[2]) satisfies DefnNode\n }\n else {\n throw new LitsError('Expected let or function', this.peek()[2])\n }\n }\n\n private stringToSymbolNode(value: string, sourceCodeInfo: SourceCodeInfo | undefined): SymbolNode {\n if (specialExpressionTypes[value as SpecialExpressionName] !== undefined && value !== 'fn' && value !== 'def' && value !== 'defn') {\n return withSourceCodeInfo([NodeTypes.SpecialBuiltinSymbol, specialExpressionTypes[value as SpecialExpressionName]], sourceCodeInfo) satisfies SymbolNode\n }\n if (normalExpressionTypes[value as NormalExpressionName] !== undefined) {\n return withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes[value as NormalExpressionName] as number], sourceCodeInfo) satisfies SymbolNode\n }\n return withSourceCodeInfo([NodeTypes.UserDefinedSymbol, value], sourceCodeInfo) satisfies SymbolNode\n }\n\n stringFromQuotedSymbol(value: string): string {\n return value.substring(1, value.length - 1)\n .replace(\n /(\\\\{2})|(\\\\')|\\\\(.)/g,\n (\n _,\n backslash: string,\n singleQuote: string,\n normalChar: string,\n ) => {\n if (backslash) {\n return '\\\\'\n }\n if (singleQuote) {\n return '\\''\n }\n return `\\\\${normalChar}`\n },\n )\n }\n\n private parseSymbol(): SymbolNode | NormalBuiltinSymbolNode | SpecialBuiltinSymbolNode {\n const token = this.peek()\n this.advance()\n if (!isSymbolToken(token)) {\n throw new LitsError(`Expected symbol token, got ${token[0]}`, token[2])\n }\n if (token[1][0] === '\\'') {\n return this.stringToSymbolNode(this.stringFromQuotedSymbol(token[1]), token[2])\n }\n else {\n return this.stringToSymbolNode(token[1], token[2])\n }\n }\n\n private parseReservedSymbol(): ReservedSymbolNode | NumberNode {\n const token = asReservedSymbolToken(this.peek())\n this.advance()\n\n const symbol = token[1]\n if (isNumberReservedSymbol(symbol)) {\n return withSourceCodeInfo([NodeTypes.Number, numberReservedSymbolRecord[symbol]], token[2]) satisfies NumberNode\n }\n return withSourceCodeInfo([NodeTypes.ReservedSymbol, token[1]], token[2]) satisfies ReservedSymbolNode\n }\n\n private parseNumber(): NumberNode {\n const token = this.peek()\n this.advance()\n\n const value = token[1]\n const negative = value[0] === '-'\n const numberString = (negative ? value.substring(1) : value).replace(/_/g, '')\n return withSourceCodeInfo([NodeTypes.Number, negative ? -Number(numberString) : Number(numberString)], token[2]) satisfies NumberNode\n }\n\n private parseString(): StringNode {\n const token = this.peek()\n this.advance()\n const value = token[1].substring(1, token[1].length - 1)\n .replace(\n /(\\\\{2})|(\\\\\")|(\\\\n)|(\\\\t)|(\\\\r)|(\\\\b)|(\\\\f)|\\\\(.)/g,\n (\n _,\n backslash: string,\n doubleQuote: string,\n newline: string,\n tab: string,\n carriageReturn: string,\n backspace: string,\n formFeed: string,\n normalChar: string,\n ) => {\n // If it's a double escape (\\\\x), return \\x\n if (backslash) {\n return '\\\\'\n }\n // If it's a special character (\\n, \\t, \\r, \\b, \\f), return the special character\n else if (newline) {\n return '\\n'\n }\n else if (tab) {\n return '\\t'\n }\n else if (carriageReturn) {\n return '\\r'\n }\n else if (backspace) {\n return '\\b'\n }\n else if (formFeed) {\n return '\\f'\n }\n else if (doubleQuote) {\n return '\"'\n }\n return normalChar\n },\n )\n\n return withSourceCodeInfo([NodeTypes.String, value], token[2]) satisfies StringNode\n }\n\n private parseRegexpShorthand(): NormalExpressionNodeWithName {\n const token = this.peek()\n this.advance()\n\n const endStringPosition = token[1].lastIndexOf('\"')\n const regexpString = token[1].substring(2, endStringPosition)\n const optionsString = token[1].substring(endStringPosition + 1)\n const stringNode: StringNode = withSourceCodeInfo([NodeTypes.String, regexpString], token[2]) satisfies StringNode\n\n const optionsNode: StringNode = withSourceCodeInfo([NodeTypes.String, optionsString], token[2]) satisfies StringNode\n\n const node: NormalExpressionNodeWithName = withSourceCodeInfo([\n NodeTypes.NormalExpression,\n [\n withSourceCodeInfo([NodeTypes.NormalBuiltinSymbol, normalExpressionTypes.regexp as number], token[2]),\n [stringNode, optionsNode],\n ],\n ], token[2])\n\n return node\n }\n}\n","import type { Ast } from '../parser/types'\nimport { toNonNegativeInteger } from '../utils'\nimport { valueToString } from '../utils/debug/debugTools'\n\ninterface CacheEntry {\n key: string\n value: Ast\n nextEntry: CacheEntry | undefined\n}\n\nexport class Cache {\n private cache: Record<string, CacheEntry> = {}\n private firstEntry: CacheEntry | undefined = undefined\n private lastEntry: CacheEntry | undefined = undefined\n private _size = 0\n private maxSize: number | null\n constructor(maxSize: number | null) {\n this.maxSize = maxSize === null ? null : toNonNegativeInteger(maxSize)\n if (typeof this.maxSize === 'number' && this.maxSize < 1)\n throw new Error(`1 is the minimum maxSize, got ${valueToString(maxSize)}`)\n }\n\n public getContent(): Record<string, Ast> {\n return Object.entries(this.cache).reduce((result: Record<string, Ast>, [key, entry]) => {\n result[key] = entry.value\n return result\n }, {})\n }\n\n public get size(): number {\n return this._size\n }\n\n public get(key: string): Ast | undefined {\n return this.cache[key]?.value\n }\n\n public clear(): void {\n this.cache = {}\n this.firstEntry = undefined\n this.lastEntry = undefined\n this._size = 0\n }\n\n public has(key: string): boolean {\n return !!this.cache[key]\n }\n\n public set(key: string, value: Ast): void {\n if (this.has(key))\n throw new Error(`AstCache - key already present: ${key}`)\n\n const newEntry: CacheEntry = { value, nextEntry: undefined, key }\n\n this.cache[key] = newEntry\n this._size += 1\n\n if (this.lastEntry)\n this.lastEntry.nextEntry = newEntry\n\n this.lastEntry = newEntry\n\n if (!this.firstEntry)\n this.firstEntry = this.lastEntry\n\n while (this.maxSize !== null && this.size > this.maxSize)\n this.dropFirstEntry()\n }\n\n private dropFirstEntry(): void {\n const firstEntry = this.firstEntry as CacheEntry\n delete this.cache[firstEntry.key]\n this._size -= 1\n this.firstEntry = firstEntry.nextEntry\n }\n}\n","import { getUndefinedSymbols } from '../getUndefinedSymbols'\nimport { evaluate, evaluateNode } from '../evaluator'\nimport { createContextStack } from '../evaluator/ContextStack'\nimport type { Context } from '../evaluator/interface'\nimport type { Any, Obj } from '../interface'\nimport type { Ast, LitsFunction, ParseState } from '../parser/types'\nimport { tokenize } from '../tokenizer/tokenize'\nimport type { TokenStream } from '../tokenizer/tokenize'\nimport { minifyTokenStream } from '../tokenizer/minifyTokenStream'\nimport { transformSymbolTokens } from '../transformer'\nimport { untokenize } from '../untokenizer'\nimport { builtin } from '../builtin'\nimport { Parser } from '../parser/Parser'\nimport { Cache } from './Cache'\n\nexport interface LitsRuntimeInfo {\n astCache: Cache | null\n astCacheSize: number | null\n debug: boolean\n}\n\nexport interface LazyValue {\n read: () => unknown\n [key: string]: unknown\n}\n\nexport interface JsFunction {\n fn: (...args: any[]) => unknown\n}\n\nexport interface ContextParams {\n globalContext?: Context\n contexts?: Context[]\n values?: Record<string, unknown>\n lazyValues?: Record<string, LazyValue>\n jsFunctions?: Record<string, JsFunction>\n}\n\nexport interface MinifyParams {\n minify?: boolean\n}\n\nexport interface FilePathParams {\n filePath?: string\n}\n\ninterface LitsConfig {\n initialCache?: Record<string, Ast>\n astCacheSize?: number | null\n debug?: boolean\n}\n\nexport class Lits {\n private astCache: Cache | null\n private astCacheSize: number | null\n private debug: boolean\n\n constructor(config: LitsConfig = {}) {\n this.debug = config.debug ?? false\n this.astCacheSize = config.astCacheSize ?? null\n if (this.astCacheSize) {\n this.astCache = new Cache(this.astCacheSize)\n const initialCache = config.initialCache ?? {}\n for (const cacheEntry of Object.keys(initialCache))\n this.astCache.set(cacheEntry, initialCache[cacheEntry] as Ast)\n }\n else {\n this.astCache = null\n }\n }\n\n public getRuntimeInfo(): LitsRuntimeInfo {\n return {\n astCacheSize: this.astCacheSize,\n astCache: this.astCache,\n debug: this.debug,\n }\n }\n\n public run(program: string, params: ContextParams & FilePathParams = {}): unknown {\n const ast = this.generateAst(program, params)\n return this.evaluate(ast, params)\n }\n\n public context(programOrAst: string | Ast, params: ContextParams & FilePathParams = {}): Context {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n evaluate(ast, contextStack)\n return contextStack.globalContext\n }\n\n public getUndefinedSymbols(programOrAst: string | Ast, params: ContextParams = {}): Set<string> {\n const ast = typeof programOrAst === 'string' ? this.generateAst(programOrAst, params) : programOrAst\n const contextStack = createContextStack(params)\n return getUndefinedSymbols(ast, contextStack, builtin, evaluateNode)\n }\n\n public tokenize(program: string, tokenizeParams: FilePathParams & MinifyParams = {}): TokenStream {\n const tokenStream = tokenize(program, this.debug, tokenizeParams.filePath)\n return tokenizeParams.minify ? minifyTokenStream(tokenStream, { removeWhiteSpace: false }) : tokenStream\n }\n\n public parse(tokenStream: TokenStream): Ast {\n tokenStream = minifyTokenStream(tokenStream, { removeWhiteSpace: true })\n const ast: Ast = {\n body: [],\n hasDebugData: tokenStream.hasDebugData,\n }\n\n const parseState: ParseState = {\n position: 0,\n }\n\n ast.body = new Parser(tokenStream, parseState).parse()\n\n return ast\n }\n\n public evaluate(ast: Ast, params: ContextParams): Any {\n const contextStack = createContextStack(params)\n return evaluate(ast, contextStack)\n }\n\n public transformSymbols(tokenStream: TokenStream, transformer: (symbol: string) => string): TokenStream {\n return transformSymbolTokens(tokenStream, transformer)\n }\n\n public untokenize(tokenStream: TokenStream): string {\n return untokenize(tokenStream)\n }\n\n public apply(fn: LitsFunction, fnParams: unknown[], params: ContextParams = {}): Any {\n const fnName = 'FN_2eb7b316_471c_5bfa_90cb_d3dfd9164a59'\n const program = this.generateApplyFunctionCall(fnName, fnParams)\n\n const ast = this.generateAst(program, params)\n\n const hostValues: Obj = fnParams.reduce(\n (result: Obj, param, index) => {\n result[`${fnName}_${index}`] = param\n return result\n },\n { [fnName]: fn },\n )\n\n params.values = { ...params.values, ...hostValues }\n\n return this.evaluate(ast, params)\n }\n\n private generateApplyFunctionCall(fnName: string, fnParams: unknown[]) {\n const paramsString: string = fnParams\n .map((_, index) => {\n return `${fnName}_${index}`\n })\n .join(', ')\n return `${fnName}(${paramsString})`\n }\n\n private generateAst(program: string, params: ContextParams & FilePathParams): Ast {\n if (this.astCache) {\n const cachedAst = this.astCache.get(program)\n if (cachedAst)\n return cachedAst\n }\n const tokenStream = this.tokenize(program, {\n filePath: params.filePath,\n })\n const ast: Ast = this.parse(tokenStream)\n this.astCache?.set(program, ast)\n return ast\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\nimport { LitsError } from '../errors'\nimport type { Context } from '../evaluator/interface'\nimport { Lits } from '../Lits/Lits'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getCodeMarker } from '../utils/debug/getCodeMarker'\n\ninterface TestChunk {\n name: string\n program: string\n directive: 'SKIP' | null\n}\n\nexport interface RunTestParams {\n testPath: string\n testNamePattern?: RegExp\n}\n\nexport interface TestResult {\n /**\n * Test report\n * http://testanything.org/\n */\n tap: string\n success: boolean\n}\n\nexport function runTest({ testPath: filePath, testNamePattern }: RunTestParams): TestResult {\n const includedFilePaths = getIncludedFilePaths(filePath)\n const testResult: TestResult = {\n tap: 'TAP version 13\\n',\n success: true,\n }\n try {\n const testChunks = getTestChunks(filePath)\n testResult.tap += `1..${testChunks.length}\\n`\n testChunks.forEach((testChunkProgram, index) => {\n const testNumber = index + 1\n if (testNamePattern && !testNamePattern.test(testChunkProgram.name)) {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip - Not matching testNamePattern ${testNamePattern}\\n`\n }\n else if (testChunkProgram.directive === 'SKIP') {\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name} # skip\\n`\n }\n else {\n try {\n const lits = new Lits({ debug: true })\n const contexts = getContexts(includedFilePaths, lits)\n lits.run(testChunkProgram.program, {\n contexts,\n filePath,\n })\n testResult.tap += `ok ${testNumber} ${testChunkProgram.name}\\n`\n }\n catch (error) {\n testResult.success = false\n testResult.tap += `not ok ${testNumber} ${testChunkProgram.name}${getErrorYaml(error)}`\n }\n }\n })\n }\n catch (error: unknown) {\n testResult.tap += `Bail out! ${getErrorMessage(error)}\\n`\n testResult.success = false\n }\n return testResult\n}\n\nfunction readLitsFile(litsPath: string): string {\n if (!litsPath.endsWith('.lits'))\n throw new Error(`Expected .lits file, got ${litsPath}`)\n\n return fs.readFileSync(litsPath, { encoding: 'utf-8' })\n}\n\nfunction getContexts(includedFilePaths: string[], lits: Lits): Context[] {\n return includedFilePaths.reduce((acc: Context[], filePath) => {\n const fileContent = readLitsFile(filePath)\n acc.push(lits.context(fileContent, { filePath, contexts: acc }))\n return acc\n }, [])\n}\n\nfunction getIncludedFilePaths(absoluteFilePath: string): string[] {\n const result: string[] = []\n getIncludesRecursively(absoluteFilePath, result)\n return result.reduce((acc: string[], entry: string) => {\n if (!acc.includes(entry))\n acc.push(entry)\n\n return acc\n }, [])\n\n function getIncludesRecursively(filePath: string, includedFilePaths: string[]): void {\n const includeFilePaths = readIncludeDirectives(filePath)\n includeFilePaths.forEach((includeFilePath) => {\n getIncludesRecursively(includeFilePath, includedFilePaths)\n includedFilePaths.push(includeFilePath)\n })\n }\n}\n\nfunction readIncludeDirectives(filePath: string): string[] {\n const fileContent = readLitsFile(filePath)\n const dirname = path.dirname(filePath)\n let okToInclude = true\n return fileContent.split('\\n').reduce((acc: string[], line) => {\n const includeMatch = line.match(/^\\s*\\/{2}\\s*@include\\s*(\\S+)\\s*$/)\n if (includeMatch) {\n if (!okToInclude)\n throw new Error(`@include must be in the beginning of file: ${filePath}:${line + 1}`)\n\n const relativeFilePath = includeMatch[1] as string\n acc.push(path.resolve(dirname, relativeFilePath))\n }\n if (!line.match(/^\\s*\\/.*$/))\n okToInclude = false\n\n return acc\n }, [])\n}\n\n// Splitting test file based on @test annotations\nfunction getTestChunks(testPath: string): TestChunk[] {\n const testProgram = readLitsFile(testPath)\n let currentTest: TestChunk | undefined\n let setupCode = ''\n return testProgram.split('\\n').reduce((result: TestChunk[], line, index) => {\n const currentLineNbr = index + 1\n // eslint-disable-next-line regexp/no-super-linear-backtracking\n const testNameAnnotationMatch = line.match(/^\\s*\\/{2}\\s*@(?:(skip)-)?test\\s*(.*)$/)\n if (testNameAnnotationMatch) {\n const directive = (testNameAnnotationMatch[1] ?? '').toUpperCase()\n const testName = testNameAnnotationMatch[2]\n if (!testName)\n throw new Error(`Missing test name on line ${currentLineNbr}`)\n\n if (result.find(chunk => chunk.name === testName))\n throw new Error(`Duplicate test name ${testName}`)\n\n currentTest = {\n directive: (directive || null) as TestChunk['directive'],\n name: testName,\n // Adding new-lines to make lits debug information report correct rows\n program:\n setupCode + [...Array(currentLineNbr + 2 - setupCode.split('\\n').length).keys()].map(() => '').join('\\n'),\n }\n result.push(currentTest)\n return result\n }\n if (!currentTest)\n setupCode += `${line}\\n`\n else\n currentTest.program += `${line}\\n`\n\n return result\n }, [])\n}\n\nexport function getErrorYaml(error: unknown): string {\n const message = getErrorMessage(error)\n /* v8 ignore next 7 */\n if (!isAbstractLitsError(error)) {\n return `\n ---\n message: ${JSON.stringify(message)}\n ...\n`\n }\n\n const sourceCodeInfo = error.sourceCodeInfo\n /* v8 ignore next 8 */\n if (!sourceCodeInfo || typeof sourceCodeInfo === 'string') {\n return `\n ---\n message: ${JSON.stringify(message)}\n error: ${JSON.stringify(error.name)}\n ...\n`\n }\n\n const formattedMessage = message.includes('\\n')\n ? `|\\n ${message.split(/\\r?\\n/).join('\\n ')}`\n : JSON.stringify(message)\n return `\n ---\n error: ${JSON.stringify(error.name)}\n message: ${formattedMessage}\n location: ${JSON.stringify(getLocation(sourceCodeInfo))}\n code:\n - \"${sourceCodeInfo.code}\"\n - \"${getCodeMarker(sourceCodeInfo)}\"\n ...\n`\n}\n\nfunction getLocation(sourceCodeInfo: SourceCodeInfo): string {\n const terms: string[] = []\n if (sourceCodeInfo.filePath)\n terms.push(sourceCodeInfo.filePath)\n\n if (sourceCodeInfo.position) {\n terms.push(`${sourceCodeInfo.position.line}`)\n terms.push(`${sourceCodeInfo.position.column}`)\n }\n\n return terms.join(':')\n}\n\nfunction getErrorMessage(error: unknown): string {\n if (!isAbstractLitsError(error)) {\n // error should always be an Error (other cases is just for kicks)\n /* v8 ignore next 1 */\n return typeof error === 'string' ? error : error instanceof Error ? error.message : 'Unknown error'\n }\n return error.shortMessage\n}\n\nfunction isAbstractLitsError(error: unknown): error is LitsError {\n return error instanceof LitsError\n}\n"],"names":["isLitsFunction","evalueateBindingTargetValues"],"mappings":"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","x_google_ignoreList":[0]}
|