@mojir/lits 2.1.2 → 2.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.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/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/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/typeGuards/astNode.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/specialExpressionTypes.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/getUndefinedSymbols/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","../reference/api.ts","../reference/categories/array.ts","../reference/categories/assert.ts","../reference/categories/bitwise.ts","../reference/categories/collection.ts","../reference/categories/functional.ts","../reference/categories/math.ts","../reference/categories/misc.ts","../reference/categories/object.ts","../reference/categories/predicate.ts","../reference/categories/regularExpression.ts","../reference/categories/sequence.ts","../reference/categories/specialExpressions.ts","../reference/categories/string.ts","../reference/datatype.ts","../reference/shorthand.ts","../reference/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 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 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 { 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 { 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 { 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 { 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","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","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 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 { 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 type { Argument } from '.'\n\nexport const api = {\n collection: [\n 'count',\n 'get',\n 'get-in',\n 'contains?',\n 'assoc',\n 'assoc-in',\n '++',\n 'not-empty',\n 'every?',\n 'not-every?',\n 'any?',\n 'not-any?',\n 'update',\n 'update-in',\n ] as const,\n array: [\n 'range',\n 'repeat',\n 'flatten',\n 'mapcat',\n ] as const,\n sequence: [\n 'nth',\n 'push',\n 'pop',\n 'unshift',\n 'shift',\n 'slice',\n 'splice',\n 'reductions',\n 'reduce',\n 'reduce-right',\n 'map',\n 'filter',\n 'position',\n 'index-of',\n 'last-index-of',\n 'some',\n 'reverse',\n 'first',\n 'second',\n 'last',\n 'rest',\n 'next',\n 'take',\n 'take-last',\n 'take-while',\n 'drop',\n 'drop-last',\n 'drop-while',\n 'sort',\n 'sort-by',\n 'distinct',\n 'remove',\n 'remove-at',\n 'split-at',\n 'split-with',\n 'frequencies',\n 'group-by',\n 'partition',\n 'partition-all',\n 'partition-by',\n 'starts-with?',\n 'ends-with?',\n 'interleave',\n 'interpose',\n ] as const,\n math: [\n '+',\n '-',\n '*',\n '/',\n 'mod',\n '%',\n 'quot',\n 'inc',\n 'dec',\n '√',\n '∛',\n '**',\n 'round',\n 'trunc',\n 'floor',\n 'ceil',\n 'min',\n 'max',\n 'abs',\n 'sign',\n 'log',\n 'log2',\n 'log10',\n 'sin',\n 'cos',\n 'tan',\n 'asin',\n 'acos',\n 'atan',\n 'sinh',\n 'cosh',\n 'tanh',\n 'asinh',\n 'acosh',\n 'atanh',\n ] as const,\n functional: [\n 'apply',\n 'identity',\n 'partial',\n 'comp',\n 'constantly',\n 'juxt',\n 'complement',\n 'every-pred',\n 'some-pred',\n 'fnull',\n ] as const,\n misc: [\n '≠',\n '=',\n '<',\n '>',\n '≤',\n '≥',\n '!',\n 'write!',\n 'iso-date->epoch',\n 'epoch->iso-date',\n 'boolean',\n 'compare',\n 'identical?',\n 'json-parse',\n 'json-stringify',\n ] as const,\n object: [\n 'dissoc',\n 'keys',\n 'vals',\n 'entries',\n 'find',\n 'merge',\n 'merge-with',\n 'zipmap',\n 'select-keys',\n ] as const,\n predicate: [\n 'boolean?',\n 'null?',\n 'number?',\n 'string?',\n 'function?',\n 'integer?',\n 'array?',\n 'object?',\n 'coll?',\n 'seq?',\n 'regexp?',\n 'zero?',\n 'pos?',\n 'neg?',\n 'even?',\n 'odd?',\n 'finite?',\n 'nan?',\n 'negative-infinity?',\n 'positive-infinity?',\n 'false?',\n 'true?',\n 'empty?',\n 'not-empty?',\n ] as const,\n regularExpression: [\n 'regexp',\n 'match',\n 'replace',\n 'replace-all',\n ] as const,\n string: [\n 'string-repeat',\n 'str',\n 'number',\n 'lower-case',\n 'upper-case',\n 'trim',\n 'trim-left',\n 'trim-right',\n 'pad-left',\n 'pad-right',\n 'split',\n 'split-lines',\n 'template',\n 'to-char-code',\n 'from-char-code',\n 'encode-base64',\n 'decode-base64',\n 'encode-uri-component',\n 'decode-uri-component',\n 'join',\n 'capitalize',\n 'blank?',\n ] as const,\n bitwise: [\n '<<',\n '>>',\n '>>>',\n '~',\n '&',\n 'bit-and-not',\n '|',\n '^',\n 'bit-flip',\n 'bit-clear',\n 'bit-set',\n 'bit-test',\n ] as const,\n // TODO, remove some, add some. E.g. type guards, assert-number, assert-string, etc.\n assert: [\n 'assert',\n 'assert=',\n 'assert!=',\n 'assert-gt',\n 'assert-lt',\n 'assert-gte',\n 'assert-lte',\n 'assert-true',\n 'assert-false',\n 'assert-truthy',\n 'assert-falsy',\n 'assert-null',\n 'assert-throws',\n 'assert-throws-error',\n 'assert-not-throws',\n ] as const,\n shorthand: [\n '-short-regexp',\n '-short-fn',\n ] as const satisfies `-short-${string}`[],\n datatype: [\n '-type-number',\n '-type-string',\n '-type-object',\n '-type-array',\n '-type-boolean',\n '-type-function',\n '-type-integer',\n '-type-any',\n '-type-null',\n '-type-collection',\n '-type-sequence',\n '-type-regexp',\n '-type-never',\n ] as const satisfies `-type-${string}`[],\n} as const\n\nexport type CollectionApiName = typeof api.collection[number]\nexport type ArrayApiName = typeof api.array[number]\nexport type SequenceApiName = typeof api.sequence[number]\nexport type MathApiName = typeof api.math[number]\nexport type FunctionalApiName = typeof api.functional[number]\nexport type MiscApiName = typeof api.misc[number]\nexport type ObjectApiName = typeof api.object[number]\nexport type PredicateApiName = typeof api.predicate[number]\nexport type RegularExpressionApiName = typeof api.regularExpression[number]\nexport type SpecialExpressionsApiName = string\nexport type StringApiName = typeof api.string[number]\nexport type BitwiseApiName = typeof api.bitwise[number]\nexport type AssertApiName = typeof api.assert[number]\n\nexport type NormalExpressionName =\n | CollectionApiName\n | ArrayApiName\n | SequenceApiName\n | MathApiName\n | FunctionalApiName\n | MiscApiName\n | ObjectApiName\n | PredicateApiName\n | RegularExpressionApiName\n | StringApiName\n | BitwiseApiName\n | AssertApiName\n\nexport type FunctionName =\n | NormalExpressionName\n | SpecialExpressionsApiName\n\nexport type ShorthandName = typeof api.shorthand[number]\n\nexport type DatatypeName = typeof api.datatype[number]\n\nconst apiFunctionNames = [\n ...api.collection,\n ...api.array,\n ...api.sequence,\n ...api.math,\n ...api.functional,\n ...api.misc,\n ...api.object,\n ...api.predicate,\n ...api.regularExpression,\n ...api.string,\n ...api.bitwise,\n ...api.assert,\n] as const\n\nconst apiNames = [\n ...apiFunctionNames,\n ...api.shorthand,\n ...api.datatype,\n] as const\n\nexport type ApiName = typeof apiNames[number]\n\nexport function isApiName(arg: string): arg is ApiName {\n return apiNames.includes(arg as ApiName)\n}\n\nexport const categoryRecord = {\n 'Special expression': true,\n 'Predicate': true,\n 'Sequence': true,\n 'Collection': true,\n 'Array': true,\n 'Object': true,\n 'String': true,\n 'Math': true,\n 'Functional': true,\n 'Regular expression': true,\n 'Bitwise': true,\n 'Misc': true,\n 'Assert': true,\n 'Shorthand': true,\n 'Datatype': true,\n} as const\n\nexport type Category = keyof typeof categoryRecord\n\nexport const categories = Object.keys(categoryRecord) as Category[]\n\nconst dataTypes = [\n 'number',\n 'string',\n 'object',\n 'array',\n 'boolean',\n 'function',\n 'integer',\n 'any',\n 'null',\n 'collection',\n 'sequence',\n 'regexp',\n 'never',\n] as const\nexport type DataType = typeof dataTypes[number]\n\nexport function isDataType(arg: string): arg is DataType {\n return dataTypes.includes(arg as DataType)\n}\n\nexport function getOperatorArgs(a: DataType | DataType[], b: DataType | DataType[]): Record<string, Argument> {\n return { a: { type: a }, b: { type: b } }\n}\n","import { type ArrayApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const arrayReference: Record<ArrayApiName, FunctionReference<'Array'>> = {\n range: {\n title: 'range',\n category: 'Array',\n linkName: 'range',\n returns: {\n type: 'number',\n array: true,\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n step: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['b'] },\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'step'] },\n ],\n description: `$range creates an array with a range of numbers from $a to $b (exclusive), by $step.\n\n$a defaults to 0. \n$step defaults to 1.`,\n examples: [\n 'range(4)',\n 'range(1, 4)',\n '1 range 10',\n 'range(0.4, 4.9)',\n `\nrange(\n 0.25, // start value\n 1, // end value (exclusive)\n 0.25, // step value\n)`,\n ],\n },\n repeat: {\n title: 'repeat',\n category: 'Array',\n linkName: 'repeat',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('any', 'integer'),\n },\n variants: [{\n argumentNames: ['a', 'b'],\n }],\n description: 'Returns an array with $a repeated $b times.',\n examples: [\n 'repeat(10, 3)',\n 'repeat(10, 0)',\n '\"Albert\" repeat 5',\n ],\n },\n flatten: {\n title: 'flatten',\n category: 'Array',\n linkName: 'flatten',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n x: {\n type: ['array', 'any'],\n description: 'If $x is not an array, `[ ]` is returned.',\n },\n },\n variants: [{\n argumentNames: ['x'],\n }],\n description: 'Takes a nested array $x and flattens it.',\n examples: [\n 'flatten([1, 2, [3, 4], 5])',\n `\nlet foo := \"bar\";\nflatten([\n 1,\n \" 2 A \",\n [foo, [4, [\"ABC\"]]],\n 6,\n])`,\n\n 'flatten(12)',\n ],\n noOperatorDocumentation: true,\n },\n mapcat: {\n title: 'mapcat',\n category: 'Array',\n linkName: 'mapcat',\n returns: {\n type: 'collection',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n colls: {\n type: 'collection',\n array: true,\n },\n fun: {\n type: 'function',\n },\n },\n variants: [{\n argumentNames: ['colls', 'fun'],\n }],\n description: 'Returns the result of applying concat to the result of applying map to $fun and $colls.',\n examples: [\n '[[3, 2, 1, 0], [6, 5, 4], [9, 8, 7]] mapcat reverse',\n 'mapcat([[3, 2, 1, 0], [6, 5, 4], [9, 8, 7]], reverse)',\n '[[3, 2, 1, 0,], [6, 5, 4,], [9, 8, 7]] mapcat reverse',\n `\nfunction foo(n)\n [n - 1, n, n + 1]\nend;\n[1, 2, 3] mapcat foo`,\n `\nmapcat(\n [[1, 2], [2, 2], [2, 3]],\n -> $ remove even?\n)`,\n ],\n },\n}\n","import { type AssertApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const assertReference: Record<AssertApiName, FunctionReference<'Assert'>> = {\n 'assert': {\n title: 'assert',\n category: 'Assert',\n linkName: 'assert',\n returns: {\n type: 'any',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is falsy it throws `AssertionError` with $message. If no $message is provided, message is set to $value.',\n examples: ['try assert(0, \"Expected a positive value\") catch (e) e.message end'],\n noOperatorDocumentation: true,\n },\n 'assert!=': {\n title: 'assert!=',\n category: 'Assert',\n linkName: 'assert-exclamation-equal',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is the same as $b it throws `AssertionError`.',\n examples: [\n 'try assert!=(0, 0, \"Expected different values\") catch (e) e.message end',\n 'try assert!=(0, 0) catch (e) e.message end',\n 'try 0 assert!= 0 catch (e) e.message end',\n 'try assert!=(0, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert=': {\n title: 'assert=',\n category: 'Assert',\n linkName: 'assert-equal',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not structural equal to $b it throws `AssertionError`.',\n examples: [\n 'try assert=({ \"a\" := 1 }, { \"a\" := 2 }, \"Expected equal values\") catch (e) e.message end',\n 'try assert=({ \"a\" := 1 }, { \"a\" := 2 }) catch (e) e.message end',\n 'try assert=({ \"a\" := 1 }, { \"a\" := 1 }) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-gt': {\n title: 'assert-gt',\n category: 'Assert',\n linkName: 'assert-gt',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not greater than $b it throws `AssertionError`.',\n examples: [\n 'try assert-gt(0, 1, \"Expected greater value\") catch (e) e.message end',\n 'try assert-gt(0, 0) catch (e) e.message end',\n 'try assert-gt(1, 0) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-lt': {\n title: 'assert-lt',\n category: 'Assert',\n linkName: 'assert-lt',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not less than $b it throws `AssertionError`.',\n examples: [\n 'try assert-lte(1, 0, \"Expected smaller value value\") catch (e) e.message end',\n 'try assert-lte(1, 1) catch (e) e.message end',\n 'try assert-lte(0, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-gte': {\n title: 'assert-gte',\n category: 'Assert',\n linkName: 'assert-gte',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is less than $b it throws `AssertionError`.',\n examples: [\n 'try assert-gte(0, 1, \"Expected greater value\") catch (e) e.message end',\n 'try assert-gte(0, 1) catch (e) e.message end',\n 'try assert-gte(1, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-lte': {\n title: 'assert-lte',\n category: 'Assert',\n linkName: 'assert-lte',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is grater than $b it throws `AssertionError`.',\n examples: [\n 'try assert-lte(1, 0, \"Expected smaller value value\") catch (e) e.message end',\n 'try assert-lte(1, 0) catch (e) e.message end',\n 'try assert-lte(1, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-true': {\n title: 'assert-true',\n category: 'Assert',\n linkName: 'assert-true',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `true` it throws `AssertionError`.',\n examples: [\n 'try assert-true(false, \"Expected true\") catch (e) e.message end',\n 'try assert-true(false) catch (e) e.message end',\n 'try assert-true(true) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-false': {\n title: 'assert-false',\n category: 'Assert',\n linkName: 'assert-false',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `false` it throws `AssertionError`.',\n examples: [\n 'try assert-false(true, \"Expected false\") catch (e) e.message end',\n 'try assert-false(true) catch (e) e.message end',\n 'try assert-false(false) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-truthy': {\n title: 'assert-truthy',\n category: 'Assert',\n linkName: 'assert-truthy',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `truthy` it throws `AssertionError`.',\n examples: [\n 'try assert-truthy(false, \"Expected truthy\") catch (e) e.message end',\n 'try assert-truthy(false) catch (e) e.message end',\n 'try assert-truthy(0) catch (e) e.message end',\n 'try assert-truthy(null) catch (e) e.message end',\n 'try assert-truthy(\"\") catch (e) e.message end',\n 'try assert-truthy(true) catch (e) e.message end',\n 'try assert-truthy(1) catch (e) e.message end',\n 'try assert-truthy(\"x\") catch (e) e.message end',\n 'try assert-truthy([]) catch (e) e.message end',\n 'try assert-truthy({}) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-falsy': {\n title: 'assert-falsy',\n category: 'Assert',\n linkName: 'assert-falsy',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `falsy` it throws `AssertionError`.',\n examples: [\n 'try assert-falsy(true, \"Expected falsy\") catch (e) e.message end',\n 'try assert-falsy(\"x\") catch (e) e.message end',\n 'try assert-falsy([]) catch (e) e.message end',\n 'try assert-falsy({}) catch (e) e.message end',\n 'try assert-falsy(1) catch (e) e.message end',\n 'try assert-falsy(false) catch (e) e.message end',\n 'try assert-falsy(0) catch (e) e.message end',\n 'try assert-falsy(null) catch (e) e.message end',\n 'try assert-falsy(\"\") catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-null': {\n title: 'assert-null',\n category: 'Assert',\n linkName: 'assert-null',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `null` it throws `AssertionError`.',\n examples: [\n 'try assert-null(null) catch (e) e.message end',\n 'try assert-null(true, \"Expected null\") catch (e) e.message end',\n 'try assert-null(\"x\") catch (e) e.message end',\n 'try assert-null([]) catch (e) e.message end',\n 'try assert-null({}) catch (e) e.message end',\n 'try assert-null(1) catch (e) e.message end',\n 'try assert-null(false) catch (e) e.message end',\n 'try assert-null(0) catch (e) e.message end',\n 'try assert-null(\"\") catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-throws': {\n title: 'assert-throws',\n category: 'Assert',\n linkName: 'assert-throws',\n returns: {\n type: 'null',\n },\n args: {\n fun: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'message'] },\n ],\n description: 'If $fun does not throw, it throws `AssertionError`.',\n examples: [\n 'assert-throws(-> throw(\"Error\"))',\n 'try assert-throws(-> identity(\"Error\")) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-throws-error': {\n title: 'assert-throws-error',\n category: 'Assert',\n linkName: 'assert-throws-error',\n returns: {\n type: 'null',\n },\n args: {\n 'fun': {\n type: 'function',\n },\n 'error-message': {\n type: 'string',\n },\n 'message': {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value', 'error-message'] },\n { argumentNames: ['value', 'error-message', 'message'] },\n ],\n description: 'If $fun does not throw $error-message, it throws `AssertionError`.',\n examples: [\n 'try assert-throws-error(-> throw(\"Error\"), \"Error\") catch (e) e.message end',\n 'try assert-throws-error(-> identity(\"Error\"), \"Error\") catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-not-throws': {\n title: 'assert-not-throws',\n category: 'Assert',\n linkName: 'assert-not-throws',\n returns: {\n type: 'null',\n },\n args: {\n fun: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'message'] },\n ],\n description: 'If $fun throws, it throws `AssertionError`.',\n examples: [\n 'try assert-not-throws(-> identity(\"Error\")) catch (e) e.message end',\n 'try assert-not-throws(-> throw(\"Error\")) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n}\n","import { type BitwiseApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const bitwiseReference: Record<BitwiseApiName, FunctionReference<'Bitwise'>> = {\n '<<': {\n title: '<<',\n category: 'Bitwise',\n linkName: '-lt-lt',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Shifts $a arithmetically left by $b bit positions.',\n examples: [\n '1 << 10',\n '<<(1, 10)',\n '<<(-4, 2)',\n ],\n },\n '>>': {\n title: '>>',\n category: 'Bitwise',\n linkName: '-gt-gt',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Shifts $a arithmetically right by $b bit positions.',\n examples: [\n '2048 >> 10',\n '>>(2048, 10)',\n '>>>(-16, 2)',\n '>>(4, 10)',\n ],\n },\n '>>>': {\n title: '>>>',\n category: 'Bitwise',\n linkName: '-gt-gt-gt',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Shifts $a arithmetically right by $b bit positions without sign extension.',\n examples: [\n '-16 >>> 2',\n '>>>(2048, 10)',\n '>>>(-16, 2)',\n '>>>(4, 10)',\n '>>>(-1, 10)',\n ],\n },\n '~': {\n title: '~',\n category: 'Bitwise',\n linkName: '-tilde',\n returns: {\n type: 'integer',\n },\n args: {\n a: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['a'] },\n ],\n description: 'Returns bitwise `not` of $a.',\n examples: [\n '~(0)',\n '~(255)',\n ],\n },\n '&': {\n title: '&',\n category: 'Bitwise',\n linkName: '-and',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `and` of all arguments.',\n examples: [\n '0b0011 & 0b0110',\n '&(0b0011, 0b0110)',\n '&(0b0011, 0b0110, 0b1001)',\n ],\n },\n 'bit-and-not': {\n title: 'bit-and-not',\n category: 'Bitwise',\n linkName: 'bit-and-not',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `and` with complement.',\n examples: [\n '0b0011 bit-and-not 0b0110',\n 'bit-and-not(0b0011, 0b0110)',\n 'bit-and-not(0b0011, 0b0110, 0b1001)',\n ],\n },\n '|': {\n title: '|',\n category: 'Bitwise',\n linkName: '-or',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `or` of all arguments.',\n examples: [\n '0b0011 | 0b0110',\n '|(0b0011, 0b0110)',\n '|(0b1000, 0b0100, 0b0010)',\n ],\n },\n '^': {\n title: '^',\n category: 'Bitwise',\n linkName: '-caret',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `xor` of all arguments.',\n examples: [\n '0b0011 ^ 0b0110',\n '^(0b0011, 0b0110)',\n '^(0b11110000, 0b00111100, 0b10101010)',\n ],\n },\n 'bit-flip': {\n title: 'bit-flip',\n category: 'Bitwise',\n linkName: 'bit-flip',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Flips bit number $b.',\n examples: [\n '0b0011 bit-flip 1',\n 'bit-flip(0b0011, 1)',\n 'bit-flip(0b1100, 1)',\n ],\n },\n 'bit-clear': {\n title: 'bit-clear',\n category: 'Bitwise',\n linkName: 'bit-clear',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Clears bit number $b.',\n examples: [\n '0b0011 bit-clear 1',\n 'bit-clear(0b0011, 1)',\n 'bit-clear(0b1100, 1)',\n ],\n },\n 'bit-set': {\n title: 'bit-set',\n category: 'Bitwise',\n linkName: 'bit-set',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Sets bit number $b.',\n examples: [\n '0b0010 bit-set 1',\n 'bit-set(0b0011, 1)',\n 'bit-set(0b1100, 1)',\n ],\n },\n 'bit-test': {\n title: 'bit-test',\n category: 'Bitwise',\n linkName: 'bit-test',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Checks if bit number $b is set.',\n examples: [\n '0b0011 bit-test 1',\n 'bit-test(0b0011, 1)',\n 'bit-test(0b1100, 1)',\n ],\n },\n}\n","import { type CollectionApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const collectionReference: Record<CollectionApiName, FunctionReference<'Collection'>> = {\n 'count': {\n title: 'count',\n category: 'Collection',\n linkName: 'count',\n returns: {\n type: 'number',\n },\n args: {\n coll: {\n type: ['collection', 'null'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns number of elements in $coll.',\n examples: [\n 'count([1, 2, 3])',\n 'count([])',\n 'count({ a := 1 })',\n 'count(\"\")',\n 'count(\"Albert\")',\n 'count(null)',\n ],\n },\n 'get': {\n title: 'get',\n category: 'Collection',\n linkName: 'get',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('collection', ['string', 'integer']),\n 'not-found': {\n type: 'any',\n description: 'Default value to return if $b is not found.',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'not-found'] },\n ],\n description: 'Returns value in $a mapped at $b.',\n examples: [\n '[1, 2, 3] get 1',\n '{ a := 1 } get \"a\"',\n '\"Albert\" get \"3\"',\n `\nget(\n [1, 2, 3],\n 1, // Optional comma after last argument\n)`,\n `\nget(\n [],\n 1\n)`,\n `\nget(\n [],\n 1,\n \"default\"\n)`,\n `\nget(\n { a := 1 },\n \"a\"\n)`,\n `\nget(\n { a := 1 },\n \"b\"\n)`,\n `\nget(\n { a := 1 },\n \"b\",\n \"default\"\n)`,\n `\nget(\n null,\n \"a\"\n)`,\n `\nget(\n null,\n \"b\",\n \"default\"\n)`,\n ],\n },\n 'get-in': {\n title: 'get-in',\n category: 'Collection',\n linkName: 'get-in',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('collection', 'array'),\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'not-found'] },\n ],\n description: 'Returns the value in a nested collection, where $b is an array of keys. Returns $not-found if the key is not present. If $not-found is not set, `null` is returned.',\n examples: [\n `\nget-in(\n [[1, 2, 3], [4, { a := \"Kalle\" }, 6]],\n [1, 1, \"a\", 0]\n)`,\n `\nget-in(\n [[1, 2, 3], [4, { a := \"Kalle\" }, 6]],\n [1, 1, \"b\", 0]\n)`,\n `\nget-in(\n [[1, 2, 3], [4, { a := \"Kalle\" }, 6]],\n [1, 1, \"b\", 0],\n \"Lisa\"\n)`,\n ],\n },\n 'contains?': {\n title: 'contains?',\n category: 'Collection',\n linkName: 'contains-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['collection', 'null'], ['string', 'integer']),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if $a contains $b, otherwise returns `false`. For strings, it checks if substring is included.',\n examples: [\n '[1, 2, 3] contains? 1',\n 'null contains? 1',\n '{ a := 1, b := 2 } contains? \"a\"',\n `\ncontains?(\n [],\n 1\n)`,\n `\ncontains?(\n [1],\n 1\n)`,\n `\ncontains?(\n [1, 2, 3],\n 1\n)`,\n `\ncontains?(\n {},\n \"a\"\n)`,\n `\ncontains?(\n { a := 1, b := 2 },\n \"a\"\n)`,\n ],\n },\n 'assoc': {\n title: 'assoc',\n category: 'Collection',\n linkName: 'assoc',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n key: {\n type: ['string', 'number'],\n },\n value: {\n type: 'any',\n },\n kvs: {\n type: 'any',\n description: 'Key-value pairs to associate.',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'key', 'value'] },\n { argumentNames: ['coll', 'key', 'value', 'kvs'] },\n ],\n description: `\nAdd or replace the value of element $key to $value in $coll. Repeated for all key-value pairs in $kvs. \nIf $coll is an \\'array\\', $key must be \\`number\\` satisfying \\`0 <=\\` $key \\`<= length\\`.`,\n examples: [\n `\nassoc(\n [1, 2, 3],\n 1,\n \"Two\"\n)`,\n `\nassoc(\n [1, 2, 3],\n 3,\n \"Four\"\n)`,\n `\nassoc(\n { a := 1, b := 2 },\n \"a\",\n \"One\")`,\n `\nassoc(\n { a := 1, b := 2 },\n \"c\",\n \"Three\")`,\n `\nassoc(\n \"Albert\",\n 6,\n \"a\")`,\n ],\n },\n 'assoc-in': {\n title: 'assoc-in',\n category: 'Collection',\n linkName: 'assoc-in',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n ks: {\n type: ['number', 'string'],\n array: true,\n },\n value: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['coll', 'ks', 'value'] },\n ],\n description: `\nAssociates a value in the nested collection $coll, where $ks is an array of keys and $value is the new value.\n\nIf any levels do not exist, objects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\nassoc-in(\n {},\n [\"a\", \"b\", \"c\"],\n \"Albert\"\n)`,\n `\nassoc-in(\n [1, 2, [1, 2, 3]],\n [2, 1],\n \"Albert\"\n)`,\n `\nassoc-in(\n [1, 2, { name := \"albert\" }],\n [2, \"name\", 0],\n \"A\"\n)`,\n ],\n },\n '++': {\n title: '++',\n category: 'Collection',\n linkName: '-plus-plus',\n returns: {\n type: 'collection',\n },\n args: {\n ...getOperatorArgs('collection', 'collection'),\n colls: {\n type: 'collection',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a'] },\n { argumentNames: ['a', 'colls'] },\n ],\n description: 'Concatenates collections into one collection.',\n examples: [\n '\"Albert\" ++ \" \" ++ \"Mojir\"',\n '\"Albert\" ++ \"Mojir\"',\n\n '\"Hi \" concat \"Albert\"',\n '[1, 2] concat [3, 4]',\n\n '++(\"Albert\", \"-\", \"Mojir\")',\n '++(\"Albert\")',\n\n 'concat(\"A\", \"l\", \"b\", \"e\", \"r\", \"t\")',\n 'concat([1, 2], [3, 4])',\n 'concat([], [3, 4])',\n 'concat([1, 2], [])',\n 'concat([1, 2], [3, 4], [5, 6])',\n 'concat([])',\n 'concat({ a := 1, b := 2 }, { b := 1, c := 2 })',\n 'concat({}, { a := 1 })',\n ],\n aliases: ['concat'],\n },\n 'not-empty': {\n title: 'not-empty',\n category: 'Collection',\n linkName: 'not-empty',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'null'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns `null` if $coll is empty or `null`, otherwise $coll.',\n examples: [\n 'not-empty([])',\n 'not-empty([1, 2, 3])',\n 'not-empty({})',\n 'not-empty({ a := 2 })',\n 'not-empty(\"\")',\n 'not-empty(\"Albert\")',\n 'not-empty(null)',\n ],\n },\n 'every?': {\n title: 'every?',\n category: 'Collection',\n linkName: 'every-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if all entries in $a pass the test implemented by $b, otherwise returns `false`.',\n examples: [\n '[1, 2, 3] every? number?',\n '[1, 2, 3] every? even?',\n `\nevery?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?,\n)`,\n `\nevery?(\n [50, 100, 150, 200],\n -> $ > 10,\n)`,\n `\nevery?(\n [],\n number?\n)`,\n `\nevery?(\n \"\",\n number?\n)`,\n `\nevery?(\n {},\n number?\n)`,\n `\nevery?(\n { a := 2, b := 4},\n -> even?(second($))\n)`,\n `\nevery?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'not-every?': {\n title: 'not-every?',\n category: 'Collection',\n linkName: 'not-every-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if at least one element in $a does not pass the test implemented by $b, otherwise returns `false`.',\n examples: [\n `\nnot-every?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nnot-every?(\n [50, 100, 150, 200],\n x -> x > 10\n)`,\n `\nnot-every?(\n [],\n number?\n)`,\n `\nnot-every?(\n \"\",\n number?\n)`,\n `\nnot-every?(\n {},\n number?\n)`,\n `\nnot-every?(\n { a := 2, b := 4 },\n -> even?(second($))\n)`,\n `\nnot-every?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'any?': {\n title: 'any?',\n category: 'Collection',\n linkName: 'any-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if any element in $a pass the test implemented by $b, otherwise returns `false`.',\n examples: [\n `\nany?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nany?(\n [50, 100, 150, 200],\n x -> x > 10\n)`,\n `\nany?(\n [],\n number?\n)`,\n `\nany?(\n \"\",\n number?\n)`,\n `\nany?(\n {},\n number?\n)`,\n `\nany?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n `\nany?(\n { a := 1, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'not-any?': {\n title: 'not-any?',\n category: 'Collection',\n linkName: 'not-any-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `false` if any element in $a pass the test implemented by $b, otherwise returns `true`.',\n examples: [\n `\nnot-any?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nnot-any?(\n [50, 100, 150, 200],\n x -> x > 10\n)`,\n `\nnot-any?(\n [],\n number?\n)`,\n `\nnot-any?(\n \"\",\n number?\n)`,\n `\nnot-any?(\n {},\n number?\n)`,\n `\nnot-any?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n `\nnot-any?(\n { a := 1, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'update': {\n title: 'update',\n category: 'Collection',\n linkName: 'update',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'key': {\n type: ['string', 'number'],\n },\n 'fun': {\n type: 'function',\n },\n 'fun-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'value', 'fun'] },\n { argumentNames: ['coll', 'value', 'fun', 'fun-args'] },\n ],\n description: `\nUpdates a value in the $coll collection, where $key is a key. $fun is a function\nthat will take the old value and any supplied $fun-args and\nreturn the new value.\nIf the key does not exist, \\`null\\` is passed as the old value.`,\n examples: [\n `\nlet x := { a := 1, b := 2 };\nupdate(x, \"a\", inc)`,\n `\nlet x := { a := 1, b := 2 };\nupdate(\n x,\n \"c\",\n val -> if null?(val) then 0 else inc(val) end\n)`,\n ],\n },\n 'update-in': {\n title: 'update-in',\n category: 'Collection',\n linkName: 'update-in',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'ks': {\n type: 'array',\n },\n 'fun': {\n type: 'function',\n },\n 'fun-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'ks', 'fun'] },\n { argumentNames: ['coll', 'ks', 'fun', 'fun-args'] },\n ],\n description: `Updates a value in the $coll collection, where $ks is an array of\nkeys and $fun is a function that will take the old value and\nany supplied $fun-args and return the new value. If any levels do not exist,\nobjects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\nupdate-in(\n { a := [1, 2, 3] },\n [\"a\", 1],\n -> if null?($) then 0 end\n)`,\n `\nupdate-in(\n { a := { foo := \"bar\"} },\n [\"a\", \"foo\"],\n -> if null?($) then \"?\" else \"!\" end\n)`,\n `\nupdate-in(\n { a := { foo := \"bar\"} },\n [\"a\", \"baz\"],\n -> if null?($) then \"?\" else \"!\" end\n)`,\n `\nupdate-in(\n { a := [1, 2, 3] },\n [\"a\", 1],\n *,\n 10,\n 10,\n 10,\n)`,\n ],\n },\n}\n","import { type FunctionalApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const functionalReference: Record<FunctionalApiName, FunctionReference<'Functional'>> = {\n 'apply': {\n title: 'apply',\n category: 'Functional',\n linkName: 'apply',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('function', 'array'),\n fun: {\n type: 'function',\n },\n args: {\n type: 'array',\n },\n },\n variants: [\n { argumentNames: ['fun', 'args'] },\n ],\n description: 'Call supplied function $fun with specified arguments $args.',\n examples: [\n `\napply(+, [1, 2, 3])`,\n `\napply(\n (x, y) -> sqrt(x ** 2 + y ** 2),\n [3, 4]\n)`,\n `\n(x, y) -> sqrt(x ** 2 + y ** 2) apply [3, 4]`,\n ],\n },\n 'identity': {\n title: 'identity',\n category: 'Functional',\n linkName: 'identity',\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns $x.',\n examples: ['identity(1)', 'identity(\"Albert\")', 'identity({ a := 1 })', 'identity(null)'],\n },\n 'partial': {\n title: 'partial',\n category: 'Functional',\n linkName: 'partial',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun', 'args'] },\n ],\n description: `Takes a function $fun and a optional number arguments $args to $fun.\nIt returns a function that takes the additional additional arguments.\nWhen called, the returned function calls \\`(\\`$fun \\`...\\`$args\\` ...additional_arguments)\\`.`,\n examples: [\n 'partial(+, 100)',\n `\nlet plusMany := partial(+, 100, 1000);\nplusMany(1, 10)`,\n `\nlet addHundred := partial(+, 100);\naddHundred(10)`,\n ],\n noOperatorDocumentation: true,\n },\n 'comp': {\n title: 'comp',\n category: 'Functional',\n linkName: 'comp',\n returns: {\n type: 'function',\n },\n args: {\n ...getOperatorArgs('function', 'function'),\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fns'] },\n ],\n description: `Takes a variable number of functions and returns a function that is the composition of those.\n\n The returned function takes a variable number of arguments,\n applies the rightmost function to the args,\n the next function (right-to-left) to the result, etc.`,\n examples: [\n `\nlet negative-quotient := comp(-, /);\nnegative-quotient(9, 3)`,\n `\nlet x := { bar := { foo := 42 } };\ncomp(\"foo\", \"bar\")(x)`,\n ],\n },\n 'constantly': {\n title: 'constantly',\n category: 'Functional',\n linkName: 'constantly',\n returns: {\n type: 'function',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns a function that takes any number of arguments and always returns $x.',\n examples: [\n `\nlet always-true := constantly(true);\nalways-true(9, 3)`,\n ],\n },\n\n 'juxt': {\n title: 'juxt',\n category: 'Functional',\n linkName: 'juxt',\n returns: {\n type: 'function',\n },\n args: {\n ...getOperatorArgs('function', 'function'),\n fun: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'fns'] },\n ],\n description: `Takes one or many function and returns a function that is the juxtaposition of those functions. \nThe returned function takes a variable number of args,\nand returns a vector containing the result of applying each function to the args (left-to-right).`,\n examples: [\n `\njuxt(+, *, min, max)(\n 3,\n 4,\n 6,\n)`,\n `\njuxt(\"a\", \"b\")(\n {\n a := 1,\n b := 2,\n c := 3,\n d := 4\n }\n)`,\n `\njuxt(+, *, min, max) apply range(1, 11)`,\n ],\n },\n 'complement': {\n title: 'complement',\n category: 'Functional',\n linkName: 'complement',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n ],\n description: 'Takes a function $fun and returns a new function that takes the same arguments as f, has the same effects, if any, and returns the opposite truth value.',\n examples: [\n 'complement(>)(1, 3)',\n 'complement(<)(1, 3)',\n 'complement(+)(1, 3)',\n 'complement(+)(0, 0)',\n ],\n },\n 'every-pred': {\n title: 'every-pred',\n category: 'Functional',\n linkName: 'every-pred',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'fns'] },\n ],\n description: `\nTakes a number of predicates and returns a function that returns \\`true\\` if all predicates\nreturn a truthy value against all of its arguments, else it returns \\`false\\`.`,\n examples: [\n `\nevery-pred(string?, -> count($) > 3)(\n \"Albert\",\n \"Mojir\"\n)`,\n `\n(string? every-pred -> count($) > 3)(\n \"Albert\",\n \"M\"\n)`,\n ],\n noOperatorDocumentation: true,\n },\n 'some-pred': {\n title: 'some-pred',\n category: 'Functional',\n linkName: 'some-pred',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'fns'] },\n ],\n description: 'Takes a number of `predicates` and returns a function that returns \\`true\\` if at least one of the `predicates` return a truthy \\`true\\` value against at least one of its arguments, else it returns `false`.',\n examples: [\n 'some-pred(string?, -> count($) > 3)(\"Albert\", \"Mojir\")',\n 'some-pred(string?, -> count($) > 3)(\"a\", \"M\")',\n 'some-pred(string?, -> count($) > 3)(\"a\", [1, 2, 3])',\n 'some-pred(string?, -> count($) > 3)([1, 2, 3], [2])',\n ],\n noOperatorDocumentation: true,\n },\n 'fnull': {\n title: 'fnull',\n category: 'Functional',\n linkName: 'fnull',\n returns: {\n type: 'function',\n },\n args: {\n ...getOperatorArgs('function', 'any'),\n fun: {\n type: 'function',\n },\n arg: {\n type: 'any',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun', 'arg'] },\n { argumentNames: ['fun', 'arg', 'args'] },\n ],\n description: 'Takes a function $fun, and returns a function that calls $fun, replacing a null argument to the corresponding argument.',\n examples: [\n 'fnull(inc, 0)(1)',\n 'fnull(inc, 0)(null)',\n '(inc fnull 0)(null)',\n 'fnull(+, 1, 2)(null, 0)',\n 'fnull(+, 1, 2)(0, null)',\n 'fnull(+, 1, 2)(null, null)',\n 'fnull(+, 1, 2)(null, null, 3, 4)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type MathApiName, getOperatorArgs } from '../api'\n\nexport const mathReference: Record<MathApiName, FunctionReference<'Math'>> = {\n '+': {\n title: '+',\n category: 'Math',\n linkName: '-plus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes sum of $xs.',\n examples: ['1 + 2', '1 + 20 + 30', '+(1, 2, 3, 4)', '+()', '+(1)'],\n },\n '-': {\n title: '-',\n category: 'Math',\n linkName: '-minus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes difference between first value and sum of the rest. When called with only one argument, it does negation.',\n examples: ['50 - 8', '1 - 1 - 1', '-()', '-(4, 2)', '-(4, 3, 2, 1,)'],\n },\n '*': {\n title: '*',\n category: 'Math',\n linkName: '-star',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes product of $xs.',\n examples: ['6 * 7', '-1 * 4', '*(4, 7)', '*(1, 2, 3, 4, 5)', '*()', '*(8)'],\n },\n '/': {\n title: '/',\n category: 'Math',\n linkName: '-slash',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes division or reciprocal. When called with one argument it computes reciprocal. When called with two or more arguments it does compute division of the first by the all remaining $xs.',\n examples: ['12 / 100', '-1 / 4', '/(7, 4)', '/(1, 2, 4, 8)', '/()', '/(8)'],\n },\n 'mod': {\n title: 'mod',\n category: 'Math',\n linkName: 'mod',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Modulus of `dividend` and `divisor`. Truncates toward negative infinity.',\n examples: ['mod(5, 3)', 'mod(5.2, 3.1)', 'mod(-5, 3)', '5 mod -3', '-5 mod -3'],\n },\n '%': {\n title: '%',\n category: 'Math',\n linkName: '-percent',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Remainder of dividing `dividend` and `divisor`.',\n examples: ['5 % 3', '5.2 % 3.1', '-5 % 3', '%(5, -3)', '%(-5, -3)'],\n aliases: ['rem'],\n },\n 'quot': {\n title: 'quot',\n category: 'Math',\n linkName: 'quot',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Quotient of dividing `dividend` and `divisor`.',\n examples: ['quot(5, 3)', 'quot(5.2, 3.1)', 'quot(-5, 3)', '5 quot -3', '-5 quot -3'],\n },\n 'inc': {\n title: 'inc',\n category: 'Math',\n linkName: 'inc',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Adds one to $x.',\n examples: ['inc(0)', 'inc(1)', 'inc(100.1)'],\n },\n 'dec': {\n title: 'dec',\n category: 'Math',\n linkName: 'dec',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Subtracts one from $x.',\n examples: ['dec(0)', 'dec(1)', 'dec(100.1)'],\n },\n '√': {\n title: '√',\n category: 'Math',\n linkName: 'sqrt',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes square root of $x.',\n examples: ['√(0)', '√(9)', '√(2)', 'sqrt(0)', 'sqrt(9)', 'sqrt(2)'],\n aliases: ['sqrt'],\n },\n '∛': {\n title: '∛',\n category: 'Math',\n linkName: 'cbrt',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes cube root of $x.',\n examples: ['∛(0)', '∛(27)', '∛(2)', '∛(1)', 'cbrt(0)', 'cbrt(27)', 'cbrt(2)', 'cbrt(1)'],\n aliases: ['cbrt'],\n },\n '**': {\n title: '**',\n category: 'Math',\n linkName: '-star-star',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Computes returns $a raised to the power of $b.',\n examples: ['2 ** 3', '2 ** 0', '2 ** -3', '**(-2, 3)', '**(-2, -3)'],\n },\n 'round': {\n title: 'round',\n category: 'Math',\n linkName: 'round',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n decimals: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'decimals'] },\n ],\n description: 'Returns rounded $x. If $decimals is provided it return a number with that many decimals.',\n examples: [\n 'round(2)',\n 'round(2.49)',\n 'round(2.5)',\n 'round(-2.49)',\n 'round(-2.5)',\n 'round(-2.501)',\n 'round(1.23456789, 4)',\n '1.123456789 round 2',\n ],\n noOperatorDocumentation: true,\n },\n 'trunc': {\n title: 'trunc',\n category: 'Math',\n linkName: 'trunc',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the integer part of $x by removing any fractional digits.',\n examples: ['trunc(2)', 'trunc(2.49)', 'trunc(2.5)', 'trunc(-2.49)', 'trunc(-2.5)', 'trunc(-2.501)'],\n },\n 'floor': {\n title: 'floor',\n category: 'Math',\n linkName: 'floor',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the largest `integer` less than or equal to $x.',\n examples: ['floor(2)', 'floor(2.49)', 'floor(2.5)', 'floor(-2.49)', 'floor(-2.5)', 'floor(-2.501)'],\n },\n 'ceil': {\n title: 'ceil',\n category: 'Math',\n linkName: 'ceil',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the smallest `integer` larger than or equal to $x.',\n examples: ['ceil(2)', 'ceil(2.49)', 'ceil(2.5)', 'ceil(-2.49)', 'ceil(-2.5)', 'ceil(-2.501)'],\n },\n 'min': {\n title: 'min',\n category: 'Math',\n linkName: 'min',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the smallest number of the arguments.',\n examples: [\n '2 min 3',\n 'min(2, 0, 1)',\n 'min(2, -1, 1)',\n 'min(2.5)',\n '12 min 14',\n ],\n },\n 'max': {\n title: 'max',\n category: 'Math',\n linkName: 'max',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the largest number of the arguments.',\n examples: [\n ' 2 max 3',\n 'max(2, 0, 1)',\n 'max(2, -1, 1)',\n 'max(2, 0.5)',\n '4 max 2',\n ],\n },\n 'abs': {\n title: 'abs',\n category: 'Math',\n linkName: 'abs',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the absolute value of $x.',\n examples: ['abs(-2.3)', 'abs(0)', 'abs(2.5)'],\n },\n 'sign': {\n title: 'sign',\n category: 'Math',\n linkName: 'sign',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `1` if $x `> 0`, `-1` if $x `< 0`, `0` if $x `= 0` or `-0` if $x `= -0`.',\n examples: ['sign(-2.3)', 'sign(-0)', 'sign(0)', 'sign(12312)'],\n },\n 'log': {\n title: 'log',\n category: 'Math',\n linkName: 'log',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the natural logarithm (base e) of $x.',\n examples: ['log(0.01)', 'log(2.5)'],\n },\n 'log2': {\n title: 'log2',\n category: 'Math',\n linkName: 'log2',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the base `2` logarithm of a number.',\n examples: ['log2(0.01)', 'log2(2 ** 12)', 'log2(2.5)'],\n },\n 'log10': {\n title: 'log10',\n category: 'Math',\n linkName: 'log10',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the `10` logarithm of a number.',\n examples: ['log10(0.01)', 'log10(10 ** 12)', 'log10(2.5)'],\n },\n 'sin': {\n title: 'sin',\n category: 'Math',\n linkName: 'sin',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the sine of $x. $x must be specified in radians.',\n examples: ['sin(0)', 'sin(1)', 'sin(PI)', 'sin(-0.5)'],\n },\n 'cos': {\n title: 'cos',\n category: 'Math',\n linkName: 'cos',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the cosine of $x. $x must be specified in radians.',\n examples: ['cos(0)', 'cos(1)', 'cos(PI)', 'cos(-0.5)'],\n },\n 'tan': {\n title: 'tan',\n category: 'Math',\n linkName: 'tan',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the tangent of $x. $x must be specified in radians.',\n examples: ['tan(0)', 'tan(1)', 'tan(PI)', 'tan(-0.5)'],\n },\n 'asin': {\n title: 'asin',\n category: 'Math',\n linkName: 'asin',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arcsine (in radians) of $x.',\n examples: ['asin(0)', 'asin(1)', 'asin(-0.5)'],\n },\n 'acos': {\n title: 'acos',\n category: 'Math',\n linkName: 'acos',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arccosine (in radians) of $x.',\n examples: ['acos(0)', 'acos(1)', 'acos(-0.5)'],\n },\n 'atan': {\n title: 'atan',\n category: 'Math',\n linkName: 'atan',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arctangent (in radians) of $x.',\n examples: ['atan(0)', 'atan(1)', 'atan(-0.5)'],\n },\n 'sinh': {\n title: 'sinh',\n category: 'Math',\n linkName: 'sinh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic sine of $x.',\n examples: ['sinh(0)', 'sinh(1)', 'sinh(-0.5)'],\n },\n 'cosh': {\n title: 'cosh',\n category: 'Math',\n linkName: 'cosh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic cosine of $x.',\n examples: ['cosh(0)', 'cosh(1)', 'cosh(-0.5)'],\n },\n 'tanh': {\n title: 'tanh',\n category: 'Math',\n linkName: 'tanh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic tangent of $x.',\n examples: ['tanh(0)', 'tanh(1)', 'tanh(-0.5)', 'tanh(50)'],\n },\n 'asinh': {\n title: 'asinh',\n category: 'Math',\n linkName: 'asinh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arcsine of $x.',\n examples: ['asinh(0)', 'asinh(0.9)', 'asinh (0.5)'],\n },\n 'acosh': {\n title: 'acosh',\n category: 'Math',\n linkName: 'acosh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arccosine of $x.',\n examples: ['acosh(1)', 'acosh(2)', 'acosh(100)'],\n },\n 'atanh': {\n title: 'atanh',\n category: 'Math',\n linkName: 'atanh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arctangent of $x.',\n examples: ['atanh(0)', 'atanh(0.9)', 'atanh(-0.5)'],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type MiscApiName, getOperatorArgs } from '../api'\n\nexport const miscReference: Record<MiscApiName, FunctionReference<'Misc'>> = {\n '≠': {\n title: '≠',\n category: 'Misc',\n linkName: '-ne',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if all `values` are not equal to each other, otherwise result is `false`. `(!= a b c)` is same as `(! (== a b c))`.',\n examples: [\n '1 ≠ 2',\n '3 != 3',\n '≠(3)',\n '!=(3, 3, 2)',\n '≠(\"3\", \"2\", \"1\", \"0\",)',\n '!=(0, -0)',\n ],\n aliases: ['!='],\n },\n '=': {\n title: '=',\n category: 'Misc',\n linkName: '-equal',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if all `values` are structaul equal to each other, otherwise result is `false`.',\n examples: [\n '1 = 1',\n '[1, 2] = [1, 2]',\n `\n{\n a := 1,\n b := 2,\n} = {\n b := 2,\n a := 1,\n}`,\n '=(1, 1)',\n '=(1.01, 1)',\n '=(\"1\", 1)',\n '=(\"2\", \"2\", \"2\", \"2\")',\n '=(2, 2, 1, 2)',\n '=([1, 2], [1, 2])',\n '=({ a := 1, b := 2 }, { b := 2, a := 1 })',\n ],\n },\n '<': {\n title: '<',\n category: 'Misc',\n linkName: '-lt',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in increasing order, `false` otherwise.',\n examples: [\n '<(0, 1)',\n '<(1, 1.01)',\n '<(1, 1)',\n '<(1, 2, 2, 3)',\n '<(\"a\", \"b\")',\n ],\n },\n '>': {\n title: '>',\n category: 'Misc',\n linkName: '-gt',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in decreasing order, `false` otherwise.',\n examples: [\n '>(1, 0)',\n '>(1.01, 1)',\n '>(1, 1)',\n '>(4, 3, 2, 1)',\n '>(3, 2, 2, 1)',\n ],\n },\n '≤': {\n title: '≤',\n category: 'Misc',\n linkName: '-lte',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in non decreasing order, `false` otherwise.',\n examples: [\n '1 ≤ 1',\n '<=(0, 1)',\n '≤(1, 1.01)',\n '<=(1, 1)',\n '≤(1, 2, 3, 4)',\n '<=(1, 2, 2, 3)',\n ],\n aliases: ['<='],\n },\n '≥': {\n title: '≥',\n category: 'Misc',\n linkName: '-gte',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in non increasing order, `false` otherwise.',\n examples: [\n '1 ≥ 1',\n '0 ≥ 1',\n '>=(1, 0)',\n '≥(1.01, 1)',\n '>=(1, 1)',\n '≥(4, 3, 2, 1)',\n '>=(3, 2, 2, 1)',\n ],\n aliases: ['>='],\n },\n '!': {\n title: '!',\n category: 'Misc',\n linkName: '-exclamation',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes logical negation. Note that any other $x than `false`, `0`, `null` and `\\'\\'` is truthy.',\n examples: [\n '!(3)',\n '!(true)',\n '!(\"A string\")',\n '!(0)',\n '!(false)',\n '!(null)',\n '!(\"\")',\n ],\n },\n 'write!': {\n title: 'write!',\n category: 'Misc',\n linkName: 'write-exclamation',\n returns: {\n type: 'any',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'It logs the $values and then returns the last argument. If called with no arguments `null` is returned.',\n examples: [\n 'write!(\"A string\")',\n 'write!(100, \"items\")',\n 'write!(object(\"a\", 10))',\n 'write!([\"a\", \"b\", \"c\"])',\n 'write!(#\"^start\")',\n 'write!(null, true, false)',\n ],\n noOperatorDocumentation: true,\n },\n 'iso-date->epoch': {\n title: 'iso-date->epoch',\n category: 'Misc',\n linkName: 'iso-date--gtepoch',\n returns: {\n type: 'number',\n },\n args: {\n iso: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['iso'] },\n ],\n description: 'Returns milliseconds elapsed since the UNIX epoch to `iso`.',\n examples: [\n 'iso-date->epoch(\"2022-04-12T09:37:10.899Z\")',\n 'iso-date->epoch(\"1980-01-01\")',\n ],\n },\n 'epoch->iso-date': {\n title: 'epoch->iso-date',\n category: 'Misc',\n linkName: 'epoch--gtiso-date',\n returns: {\n type: 'string',\n },\n args: {\n ms: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['ms'] },\n ],\n description: 'Returns IOS date time string from `ms` (milliseconds elapsed since the UNIX epoch).',\n examples: [\n 'epoch->iso-date(1649756230899)',\n 'epoch->iso-date(0)',\n ],\n },\n 'boolean': {\n title: 'boolean',\n category: 'Misc',\n linkName: 'boolean',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Coerces $x to boolean.',\n examples: [\n 'boolean(0)',\n 'boolean(1)',\n 'boolean(null)',\n 'boolean(\"Albert\")',\n ],\n },\n 'compare': {\n title: 'compare',\n category: 'Misc',\n linkName: 'compare',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Compares two values. Returns `-1` if $a < $b, `1` if $a > $b and `0` if $a and $b have the same sort order.',\n examples: [\n 'compare(0, 1)',\n 'compare(0, 0)',\n 'compare(1, 0)',\n 'compare(\"Albert\", \"Mojir\")',\n ],\n },\n 'identical?': {\n title: 'identical?',\n category: 'Misc',\n linkName: 'identical-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns true if $a and $b are referential equal.',\n examples: [\n 'identical?({ a := 10, b := 20 }, { b := 20, a := 10 })',\n 'identical?([1, true, null], [1, true, null])',\n 'identical?(0.3, 0.1 + 0.2)',\n ],\n },\n 'json-parse': {\n title: 'json-parse',\n category: 'Misc',\n linkName: 'json-parse',\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `JSON.parse(`$x`)`.',\n examples: [\n 'json-parse(\"[1, 2, 3]\")',\n ],\n },\n 'json-stringify': {\n title: 'json-stringify',\n category: 'Misc',\n linkName: 'json-stringify',\n returns: {\n type: 'string',\n },\n args: {\n x: {\n type: 'any',\n },\n indent: {\n type: 'integer',\n description: 'Number of spaces to use for indentation.',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'indent'] },\n ],\n description: 'Returns `JSON.stringify(`$x`)`. If second argument is provided, returns `JSON.stringify(`$x`, null, `$indent`)`.',\n examples: [\n 'json-stringify([1, 2, 3])',\n 'json-stringify({ a := { b := 10 }}, 2)',\n ],\n noOperatorDocumentation: true,\n },\n}\n","import type { FunctionReference } from '..'\nimport { type ObjectApiName, getOperatorArgs } from '../api'\n\nexport const objectReference: Record<ObjectApiName, FunctionReference<'Object'>> = {\n 'dissoc': {\n title: 'dissoc',\n category: 'Object',\n linkName: 'dissoc',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('object', 'string'),\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Return shallow copy of $obj with $key deleted.',\n examples: [\n '{ x := 10, y := 20 } dissoc \"y\"',\n 'dissoc({ x := 10, y := 20 }, \"x\")',\n 'dissoc({ x := 10 }, \"y\")',\n `\nlet o := { a := 5 };\ndissoc(o, \"a\");\no`,\n ],\n },\n 'keys': {\n title: 'keys',\n category: 'Object',\n linkName: 'keys',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all keys in $obj.',\n examples: [\n 'keys({})',\n 'keys({ x := 10, y := true, z := \"A string\" })',\n 'keys(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n 'vals': {\n title: 'vals',\n category: 'Object',\n linkName: 'vals',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all values in $obj.',\n examples: [\n 'vals({})',\n 'vals({ x := 10, y := true, z := \"A string\" })',\n 'vals(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n 'entries': {\n title: 'entries',\n category: 'Object',\n linkName: 'entries',\n returns: {\n type: 'array',\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns nested array of all key - value pairs in $obj.',\n examples: [\n 'entries({})',\n 'entries({ x := 10, y := true, z := \"A string\" })',\n 'entries(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n 'find': {\n title: 'find',\n category: 'Object',\n linkName: 'find',\n returns: {\n type: ['array', 'null'],\n },\n args: {\n ...getOperatorArgs('object', 'string'),\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Returns entry (key-value pair) for $key, or `null` if $key not present in $obj.',\n examples: [\n '{ a := 1, \"b\" := 2 } find \"a\"',\n 'find(object(\"a\", 1, \"b\", 2), \"b\")',\n 'find(object(\"a\", 1, \"b\", 2), \"c\")',\n ],\n },\n 'merge': {\n title: 'merge',\n category: 'Object',\n linkName: 'merge',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('object', 'object'),\n objs: {\n type: 'object',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['objs'] },\n ],\n description: `Returns a new object created by merging together all arguments.\n\nIf two keys appears in more than one object the value from the last object is used. \nIf no arguments are provided \\`null\\` is returned.`,\n examples: [\n '{ x := 10 } merge { y := 20 }',\n 'merge(object(\"x\", 10), object(\"y\", 20))',\n 'merge(object(\"x\", 10), object(\"x\", 15, \"y\", 20))',\n ],\n },\n 'merge-with': {\n title: 'merge-with',\n category: 'Object',\n linkName: 'merge-with',\n returns: {\n type: 'object',\n },\n args: {\n objs: {\n type: 'object',\n rest: true,\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['objs', 'fun'] },\n ],\n description: `\nReturns a new object created by merging together all arguments.\nIf two keys appears in more than one object $fun is used to calculate the new value.\n\nIf no arguments are provided \\`null\\` is returned.`,\n examples: [\n 'merge-with(object(\"x\", 10), object(\"y\", 20), +)',\n 'merge-with(object(\"x\", 10), object(\"x\", 15, \"y\", 20), +)',\n 'merge-with({ x := 10 }, { x := 20 }, { x := 30 }, { x := 40 }, -)',\n ],\n noOperatorDocumentation: true,\n },\n 'zipmap': {\n title: 'zipmap',\n category: 'Object',\n linkName: 'zipmap',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('array', 'array'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns a new object created by mapping $a to $b.',\n examples: [\n '[\"a\", \"b\", \"c\"] zipmap [1, 2, 3]',\n 'zipmap([\"a\", \"b\", \"c\"], [10, null, [1, 2, 3]])',\n 'zipmap([\"a\", \"b\", \"c\"], [1])',\n 'zipmap([], [10, null, [1, 2, 3]])',\n ],\n },\n 'select-keys': {\n title: 'select-keys',\n category: 'Object',\n linkName: 'select-keys',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('object', 'array'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns an object containing only those entries in $a whose key is in $b.',\n examples: [\n '{ a := 1, b := 2, c := 3 } select-keys [\"a\", \"b\"]',\n 'select-keys({ a := 1, b := 2, c := 3 }, [\"a\", \"b\"])',\n 'select-keys({ a := 1 }, [\"a\", \"b\"])',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { PredicateApiName } from '../api'\n\nexport const predicateReference: Record<PredicateApiName, FunctionReference<'Predicate'>> = {\n 'boolean?': {\n title: 'boolean?',\n category: 'Predicate',\n linkName: 'boolean-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a `boolean`, otherwise `false`.',\n examples: [\n 'boolean?(true)',\n 'boolean?(false)',\n 'boolean?([1, 2, 3])',\n 'boolean?(0)',\n 'boolean?(\"A string\")',\n ],\n },\n 'null?': {\n title: 'null?',\n category: 'Predicate',\n linkName: 'null-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `null`, otherwise `false`.',\n examples: [\n 'null?(null)',\n 'null?(false)',\n 'null?([1, 2, 3])',\n 'null?(0)',\n 'null?(\"A string\")',\n ],\n },\n 'number?': {\n title: 'number?',\n category: 'Predicate',\n linkName: 'number-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a number, otherwise `false`.',\n examples: [\n 'number?(0)',\n 'number?(2)',\n 'number?(-0.12)',\n 'number?(false)',\n 'number?([1, 2, 3])',\n 'number?(\"A string\")',\n ],\n },\n 'string?': {\n title: 'string?',\n category: 'Predicate',\n linkName: 'string-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a string, otherwise `false`.',\n examples: [\n 'string?(\"\")',\n 'string?(\"A string\")',\n 'string?(if true then \"A string\" else false end)',\n 'string?(false)',\n 'string?([1, 2, 3])',\n 'string?(100)',\n ],\n },\n 'function?': {\n title: 'function?',\n category: 'Predicate',\n linkName: 'function-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a function, otherwise `false`.',\n examples: [\n 'function?(+)',\n 'function?(/)',\n 'function?((x, y) -> x + y)',\n 'function?(false)',\n 'function?(\"false\")',\n 'function?([1, 2, 3])',\n ],\n },\n 'integer?': {\n title: 'integer?',\n category: 'Predicate',\n linkName: 'integer-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an integer, otherwise `false`.',\n examples: [\n 'integer?(0)',\n 'integer?(-12)',\n 'integer?(42)',\n 'integer?(10.1)',\n 'integer?((x, y) -> x + y)',\n 'integer?(false)',\n 'integer?(\"false\")',\n 'integer?([1, 2, 3])',\n ],\n },\n 'array?': {\n title: 'array?',\n category: 'Predicate',\n linkName: 'array-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an array, otherwise `false`.',\n examples: [\n 'array?([])',\n 'array?([1, 2, 3])',\n 'array?(object(\"a\", 10))',\n 'array?(42)',\n 'array?(10.1)',\n 'array?((x, y) -> x + y)',\n ],\n },\n 'object?': {\n title: 'object?',\n category: 'Predicate',\n linkName: 'object-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an object, otherwise `false`.',\n examples: [\n 'object?(object(\"a\", 10))',\n 'object?(42)',\n 'object?(10.1)',\n 'object?((x, y) -> x + y)',\n 'object?(#\"^start\")',\n 'object?(\"false\")',\n 'object?([1, 2, 3])',\n ],\n },\n 'coll?': {\n title: 'coll?',\n category: 'Predicate',\n linkName: 'coll-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Coll i.e. an array, an object or a string, otherwise `false`.',\n examples: [\n 'coll?([])',\n 'coll?([1, 2, 3])',\n 'coll?(object(\"a\", 10))',\n 'coll?(\"Albert\")',\n 'coll?(42)',\n 'coll?(10.1)',\n 'coll?((x, y) -> x + y)',\n ],\n },\n 'seq?': {\n title: 'seq?',\n category: 'Predicate',\n linkName: 'seq-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Seq i.e. an array or a string, otherwise `false`.',\n examples: [\n 'seq?([])',\n 'seq?([1, 2, 3])',\n 'seq?(object(\"a\", 10))',\n 'seq?(\"Albert\")',\n 'seq?(42)',\n 'seq?(10.1)',\n 'seq?((x, y) -> x + y)',\n ],\n },\n 'regexp?': {\n title: 'regexp?',\n category: 'Predicate',\n linkName: 'regexp-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a regexp, otherwise `false`.',\n examples: [\n 'regexp?(regexp(\"^start\"))',\n 'regexp?(#\"^start\")',\n 'regexp?(-12)',\n 'regexp?({})',\n 'regexp?(10.1)',\n 'regexp?((x, y) -> x + y)',\n 'regexp?(false)',\n 'regexp?(\"false\")',\n 'regexp?([1, 2, 3])',\n ],\n },\n 'zero?': {\n title: 'zero?',\n category: 'Predicate',\n linkName: 'zero-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `0`, otherwise `false`.',\n examples: [\n 'zero?(0)',\n 'zero?(-0.0)',\n 'zero?(1)',\n 'zero?(0.1)',\n ],\n },\n 'pos?': {\n title: 'pos?',\n category: 'Predicate',\n linkName: 'pos-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is greater than `0`, otherwise `false`.',\n examples: [\n 'pos?(0)',\n 'pos?(-0.0)',\n 'pos?(1)',\n 'pos?(-0.1)',\n ],\n },\n 'neg?': {\n title: 'neg?',\n category: 'Predicate',\n linkName: 'neg-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is less than `0`, otherwise `false`.',\n examples: [\n 'neg?(0)',\n 'neg?(-0.0)',\n 'neg?(1)',\n 'neg?(-0.1)',\n ],\n },\n 'even?': {\n title: 'even?',\n category: 'Predicate',\n linkName: 'even-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is even, otherwise `false`.',\n examples: [\n 'even?(0)',\n 'even?(-0.0)',\n 'even?(-1)',\n 'even?(2.1)',\n ],\n },\n 'odd?': {\n title: 'odd?',\n category: 'Predicate',\n linkName: 'odd-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is odd, otherwise `false`.',\n examples: [\n 'odd?(1.0)',\n 'odd?(1.001)',\n 'odd?(-1)',\n 'odd?(2.1)',\n ],\n },\n 'finite?': {\n title: 'finite?',\n category: 'Predicate',\n linkName: 'finite-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is finite, otherwise `false`.',\n examples: [\n 'finite?(1.0)',\n 'finite?(1 / 0)',\n 'finite?(-1 / 0)',\n 'finite?(sqrt(-1))',\n ],\n },\n 'nan?': {\n title: 'nan?',\n category: 'Predicate',\n linkName: 'nan-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is NaN (! a number), otherwise `false`.',\n examples: [\n 'nan?(1.0)',\n 'nan?(1 / 0)',\n 'nan?(-1 / 0)',\n 'nan?(sqrt(-1))',\n ],\n },\n 'negative-infinity?': {\n title: 'negative-infinity?',\n category: 'Predicate',\n linkName: 'negative-infinity-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals negative infinity, otherwise `false`.',\n examples: [\n 'negative-infinity?(1.0)',\n 'negative-infinity?(1 / 0)',\n 'negative-infinity?(-1 / 0)',\n 'negative-infinity?(sqrt(-1))',\n ],\n },\n 'positive-infinity?': {\n title: 'positive-infinity?',\n category: 'Predicate',\n linkName: 'positive-infinity-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals positive infinity, otherwise `false`.',\n examples: [\n 'positive-infinity?(1.0)',\n 'positive-infinity?(1 / 0)',\n 'positive-infinity?(-1 / 0)',\n 'positive-infinity?(sqrt(-1))',\n ],\n },\n 'false?': {\n title: 'false?',\n category: 'Predicate',\n linkName: 'false-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n 'false?(false)',\n 'false?(true)',\n 'false?(1)',\n 'false?(0)',\n ],\n },\n 'true?': {\n title: 'true?',\n category: 'Predicate',\n linkName: 'true-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n 'true?(false)',\n 'true?(true)',\n 'true?(1)',\n 'true?(0)',\n ],\n },\n 'empty?': {\n title: 'empty?',\n category: 'Predicate',\n linkName: 'empty-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'null'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is empty or `null`, otherwise `false`.',\n examples: [\n 'empty?([])',\n 'empty?([1, 2, 3])',\n 'empty?({})',\n 'empty?({ a := 2 })',\n 'empty?(\"\")',\n 'empty?(\"Albert\")',\n 'empty?(null)',\n ],\n },\n 'not-empty?': {\n title: 'not-empty?',\n category: 'Predicate',\n linkName: 'not-empty-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'null'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `false` if $x is empty or `null`, otherwise `true`.',\n examples: [\n 'not-empty?([])',\n 'not-empty?([1, 2, 3])',\n 'not-empty?({})',\n 'not-empty?({ a := 2 })',\n 'not-empty?(\"\")',\n 'not-empty?(\"Albert\")',\n 'not-empty?(null)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type RegularExpressionApiName, getOperatorArgs } from '../api'\n\nexport const regularExpressionReference: Record<RegularExpressionApiName, FunctionReference<'Regular expression'>> = {\n 'regexp': {\n title: 'regexp',\n category: 'Regular expression',\n linkName: 'regexp',\n returns: {\n type: 'regexp',\n },\n args: {\n pattern: {\n type: 'string',\n },\n flags: {\n type: 'string',\n description: 'Optional flags for the regular expression. Possible values are the same as Javascript RegExp takes.',\n },\n },\n variants: [\n { argumentNames: ['pattern'] },\n { argumentNames: ['pattern', 'flags'] },\n ],\n description: 'Creates a RegExp from $pattern and $flags.',\n examples: [\n 'regexp(\"^\\\\s*(.*)$\")',\n '#\"^\\\\s*(.*)$\"',\n 'regexp(\"albert\", \"ig\")',\n '#\"albert\"ig',\n ],\n noOperatorDocumentation: true,\n },\n 'match': {\n title: 'match',\n category: 'Regular expression',\n linkName: 'match',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('regexp', 'string'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: `Matches $b against regular expression $a.\nIf $b is a string and matches the regular expression, a \\`match\\`-array is returned, otherwise \\`null\\` is returned.`,\n examples: [\n 'match(\" A string\", regexp(\"^\\\\\\\\s*(.*)$\"))',\n 'match(\" A string\", #\"^\\\\s*(.*)$\")',\n 'match(\"My name is Albert\", #\"albert\"i)',\n 'match(\"My name is Ben\", #\"albert\"i)',\n 'match(null, #\"albert\"i)',\n 'match(1, #\"albert\"i)',\n 'match({}, #\"albert\"i)',\n ],\n },\n 'replace': {\n title: 'replace',\n category: 'Regular expression',\n linkName: 'replace',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('string', ['regexp', 'string']),\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b', 'x'] },\n ],\n description: 'Returns a new string with first match of regular expression $b replaced by $x.',\n examples: [\n 'replace(\"Duck duck\", \"u\", \"i\")',\n 'replace(\"Duck duck\", #\"u\", \"i\")',\n 'replace(\"abcABC\", regexp(\"a\", \"i\"), \"-\")',\n 'replace(\"abcABC\", regexp(\"a\", \"gi\"), \"-\")',\n 'replace(\"abcABC\", #\"a\"i, \"-\")',\n 'replace(\"abcABC\", #\"a\"gi, \"-\")',\n ],\n },\n 'replace-all': {\n title: 'replace-all',\n category: 'Regular expression',\n linkName: 'replace-all',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('string', ['regexp', 'string']),\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b', 'x'] },\n ],\n description: 'Returns a new string with all matches of regular expression $b replaced by $x.',\n examples: [\n 'replace-all(\"Duck duck\", \"u\", \"i\")',\n 'replace-all(\"Duck duck\", regexp(\"u\"), \"i\")',\n 'replace-all(\"abcABC\", regexp(\"a\", \"i\"), \"-\")',\n 'replace-all(\"abcABC\", regexp(\"a\", \"gi\"), \"-\")',\n 'replace-all(\"abcABC\", #\"a\"i, \"-\")',\n 'replace-all(\"abcABC\", #\"a\"gi, \"-\")',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type SequenceApiName, getOperatorArgs } from '../api'\n\nexport const sequenceReference: Record<SequenceApiName, FunctionReference<'Sequence'>> = {\n 'nth': {\n title: 'nth',\n category: 'Sequence',\n linkName: 'nth',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n 'seq': {\n type: ['sequence', 'null'],\n },\n 'n': {\n type: 'integer',\n },\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'not-found'] },\n ],\n description: 'Accesses element $n of $seq. Accessing out-of-bounds indices returns $not-found, if present, else `null`.',\n examples: [\n '[1, 2, 3] nth 1',\n '\"A string\" nth 3',\n 'nth([1, 2, 3], 1)',\n 'nth([1, 2, 3], 3)',\n 'nth([1, 2, 3], -1)',\n 'nth([1, 2, 3], 3, 99)',\n 'nth(\"A string\", 1)',\n 'nth(\"A string\", 3)',\n 'nth(\"A string\", -3)',\n 'nth(\"A string\", 30, \"X\")',\n 'nth(null, 1)',\n 'nth(null, 1, \"Default value\")',\n ],\n },\n 'push': {\n title: 'push',\n category: 'Sequence',\n linkName: 'push',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: 'sequence',\n },\n values: {\n type: 'any',\n rest: true,\n description: 'At least one.',\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the end of it.',\n examples: [\n '[1, 2, 3] push 4',\n '\"Albert\" push \"!\"',\n 'push([1, 2, 3], 4)',\n 'push([1, 2, 3], 4, 5, 6)',\n `\nlet l := [1, 2, 3];\npush(l, 4);\nl`,\n ],\n },\n 'pop': {\n title: 'pop',\n category: 'Sequence',\n linkName: 'pop',\n returns: {\n type: ['sequence', 'null'],\n rest: true,\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with last element removed. If $seq is empty `null` is returned.',\n examples: [\n 'pop([1, 2, 3])',\n 'pop([])',\n ],\n },\n 'unshift': {\n title: 'unshift',\n category: 'Sequence',\n linkName: 'unshift',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: 'sequence',\n },\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the beginning.',\n examples: [\n '[1, 2, 3] unshift 4',\n 'unshift([1, 2, 3], 4)',\n 'unshift([1, 2, 3], 4, 5, 6)',\n `\nlet l := [1, 2, 3];\nunshift(l, 4);\nl`,\n ],\n },\n 'shift': {\n title: 'shift',\n category: 'Sequence',\n linkName: 'shift',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with first element removed. If $seq is empty `null` is returned.',\n examples: [\n 'shift([1, 2, 3])',\n 'shift([])',\n ],\n },\n 'slice': {\n title: 'slice',\n category: 'Sequence',\n linkName: 'slice',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n rest: true,\n },\n start: {\n type: 'integer',\n description: 'Defaults to `0`.',\n },\n stop: {\n type: 'integer',\n description: 'Defaults lenght of sequence + 1.',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'start'] },\n { argumentNames: ['seq', 'start', 'stop'] },\n ],\n description: 'Returns a copy of a portion of $seq from index $start (inclusive) to $stop (exclusive).',\n examples: [\n '[1, 2, 3, 4, 5] slice 2',\n 'slice([1, 2, 3, 4, 5], 2, 4)',\n 'slice([1, 2, 3, 4, 5], 2)',\n ],\n },\n 'splice': {\n title: 'splice',\n category: 'Sequence',\n linkName: 'splice',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n rest: true,\n },\n start: {\n type: 'integer',\n },\n deleteCount: {\n type: 'integer',\n },\n items: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['seq', 'start', 'deleteCount'] },\n { argumentNames: ['seq', 'start', 'deleteCount', 'items'] },\n ],\n description: 'Returns a a spliced array. Removes $deleteCount elements from $seq starting at $start and replaces them with $items. If $start is negative, it is counting from the end of the array.',\n examples: [\n 'splice([1, 2, 3, 4, 5], 2, 2, \"x\")',\n 'splice([1, 2, 3, 4, 5], -2, 1, \"x\")',\n 'splice(\"Albert\", 2, 2, \"fo\")',\n ],\n },\n 'reductions': {\n title: 'reductions',\n category: 'Sequence',\n linkName: 'reductions',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n fun: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n rest: true,\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n { argumentNames: ['seq', 'fun', 'start'] },\n ],\n description: 'Returns an array of the intermediate values of the reduction (see `reduce`) of $seq by $fun.',\n examples: [\n '[1, 2, 3] reductions +',\n 'reductions([1, 2, 3], +)',\n 'reductions([1, 2, 3], +, 10)',\n 'reductions([], +, 0)',\n `\nreductions(\n [1, 2, 3, 4, 5, 6, 7, 8, 9],\n (result, value) -> result + if even?(value) then value else 0 end,\n 0\n)`,\n ],\n },\n 'reduce': {\n title: 'reduce',\n category: 'Sequence',\n linkName: 'reduce',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n fun: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n { argumentNames: ['seq', 'fun', 'start'] },\n ],\n description: 'Runs $fun function on each element of the $seq, passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n '[1, 2, 3] reduce +',\n 'reduce([1, 2, 3], +)',\n 'reduce([1, 2, 3], +, 0)',\n 'reduce([], +, 0)',\n `\nreduce(\n [1, 2, 3, 4, 5, 6, 7, 8, 9],\n (result, value) -> result + if even?(value) then value else 0 end,\n 0)`,\n ],\n },\n 'reduce-right': {\n title: 'reduce-right',\n category: 'Sequence',\n linkName: 'reduce-right',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n fun: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n { argumentNames: ['seq', 'fun', 'start'] },\n ],\n description: 'Runs $fun function on each element of the $seq (starting from the last item), passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n 'range(1, 10) reduce-right *',\n 'reduce-right([\"A\", \"B\", \"C\"], str, \"\")',\n ],\n },\n 'map': {\n title: 'map',\n category: 'Sequence',\n linkName: 'map',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Creates a new array populated with the results of calling $fun on every elements in $seq.',\n examples: [\n '[1, 2, 3] map -> -($)',\n 'map([\"Albert\", \"Mojir\", 42], str)',\n 'map([1, 2, 3], inc)',\n ],\n },\n 'filter': {\n title: 'filter',\n category: 'Sequence',\n linkName: 'filter',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Creates a new array with all elements that pass the test implemented by $fun.',\n examples: [\n `\nfilter(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nfilter(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n ],\n },\n 'position': {\n title: 'position',\n category: 'Sequence',\n linkName: 'position',\n returns: {\n type: ['number', 'null'],\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: ['sequence', 'null'],\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the index of the first elements that passes the test implemented by $fun. If no element was found, `null` is returned.',\n examples: [\n `\nposition(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nposition(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n `\nposition(\n [5, 10, 15, 20],\n -> $ > 100\n)`,\n `\nposition(\n null,\n -> $ > 100\n)`,\n ],\n },\n 'index-of': {\n title: 'index-of',\n category: 'Sequence',\n linkName: 'index-of',\n returns: {\n type: ['number', 'null'],\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: ['sequence', 'null'],\n },\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'x'] },\n ],\n description: 'Returns the index of $x in $seq. If element is not present in $seq `null` is returned.',\n examples: [\n '[[1], [2], [1], [2]] index-of [1]',\n 'index-of([\"Albert\", \"Mojir\", 160, [1, 2]], \"Mojir\")',\n 'index-of([5, 10, 15, 20], 15)',\n 'index-of([5, 10, 15, 20], 1)',\n 'index-of(null, 1)',\n ],\n },\n 'last-index-of': {\n title: 'last-index-of',\n category: 'Sequence',\n linkName: 'last-index-of',\n returns: {\n type: ['number', 'null'],\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: ['sequence', 'null'],\n },\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'x'] },\n ],\n description: 'Returns the last index of $x in $seq. If element is not present in $seq `null` is returned.',\n examples: [\n '[[1], [2], [1], [2]] last-index-of [1]',\n 'last-index-of([\"Albert\", \"Mojir\", 160, [1, 2]], \"Mojir\")',\n 'last-index-of([5, 10, 15, 20, 15], 15)',\n 'last-index-of([5, 10, 15, 20], 1)',\n 'last-index-of(null, 1)',\n ],\n },\n 'some': {\n title: 'some',\n category: 'Sequence',\n linkName: 'some',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: ['sequence', 'null'],\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the first element that passes the test implemented by $fun. I no element was found, `null` is returned.',\n examples: [\n `\nsome(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nsome(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n `\nsome(\n [1, 2, 3, 4],\n -> $ > 10\n)`,\n `\nsome(\n [],\n -> $ > 10\n)`,\n `\nsome(\n null,\n -> $ > 10\n)`,\n ],\n },\n 'reverse': {\n title: 'reverse',\n category: 'Sequence',\n linkName: 'reverse',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, creates a new array with the elements from $seq in reversed order. If $seq is a string, returns new reversed string.',\n examples: [\n 'reverse([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'reverse([])',\n 'reverse(\"Albert\")',\n 'reverse(null)',\n ],\n },\n 'first': {\n title: 'first',\n category: 'Sequence',\n linkName: 'first',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the first element of $seq. If $seq is empty or `null`, `null` is returned.',\n examples: [\n 'first([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'first([])',\n 'first(null)',\n ],\n },\n 'second': {\n title: 'second',\n category: 'Sequence',\n linkName: 'second',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the second element of $seq. If $seq has less than two elements or is `null`, `null` is returned.',\n examples: [\n 'second([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'second([1])',\n 'second([])',\n 'second(null)',\n ],\n },\n 'last': {\n title: 'last',\n category: 'Sequence',\n linkName: 'last',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the last element of $seq. If $seq is empty, `null` is returned.',\n examples: [\n 'last([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'last([1, 2])',\n 'last([1])',\n 'last([])',\n 'last(null)',\n ],\n },\n 'rest': {\n title: 'rest',\n category: 'Sequence',\n linkName: 'rest',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: `If $seq is an array, returns a new array with all but the first element from $seq.\nIf $seq has less than two elements, an empty array is returned.\nFor string $seq returns all but the first characters in $seq.`,\n examples: [\n 'rest([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'rest([\"Albert\"])',\n 'rest([])',\n 'rest(\"Albert\")',\n 'rest(\"A\",)',\n 'rest(\"\")',\n ],\n },\n 'next': {\n title: 'next',\n category: 'Sequence',\n linkName: 'next',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first element from $seq. If $seq has less than two elements, `null` is returned. For string $seq returns all but the first characters in $seq. If length of string $seq is less than two, `null` is returned.',\n examples: [\n 'next([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'next([\"Albert\"])',\n 'next([])',\n 'next(\"Albert\")',\n 'next(\"A\",)',\n 'next(\"\")',\n ],\n },\n 'take': {\n title: 'take',\n category: 'Sequence',\n linkName: 'take',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Constructs a new array/string with the $n first elements from $seq.',\n examples: [\n '[1, 2, 3, 4, 5] take 3',\n 'take([1, 2, 3, 4, 5], 3)',\n 'take([1, 2, 3, 4, 5], 0)',\n 'take(\"Albert\", 2)',\n 'take(\"Albert\", 50)',\n ],\n },\n 'take-last': {\n title: 'take-last',\n category: 'Sequence',\n linkName: 'take-last',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array with the $n last elements from $seq.',\n examples: [\n '[1, 2, 3, 4, 5] take-last 3',\n 'take-last([1, 2, 3, 4, 5], 3)',\n 'take-last([1, 2, 3, 4, 5], 0)',\n ],\n },\n 'take-while': {\n title: 'take-while',\n category: 'Sequence',\n linkName: 'take-while',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the members of $seq in order, stopping before the first one for which `predicate` returns a falsy value.',\n examples: [\n `\ntake-while(\n [1, 2, 3, 2, 1],\n -> $ < 3\n)`,\n `\ntake-while(\n [1, 2, 3, 2, 1],\n -> $ > 3\n)`,\n ],\n },\n 'drop': {\n title: 'drop',\n category: 'Sequence',\n linkName: 'drop',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Constructs a new array/string with the $n first elements dropped from $seq.',\n examples: [\n 'drop([1, 2, 3, 4, 5], 3)',\n 'drop([1, 2, 3, 4, 5], 0)',\n 'drop(\"Albert\", 2)',\n 'drop(\"Albert\", 50)',\n ],\n },\n 'drop-last': {\n title: 'drop-last',\n category: 'Sequence',\n linkName: 'drop-last',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Constructs a new array with the $n last elements dropped from $seq.',\n examples: [\n '[1, 2, 3, 4, 5] drop-last 3',\n 'drop-last([1, 2, 3, 4, 5], 3)',\n 'drop-last([1, 2, 3, 4, 5], 0)',\n ],\n },\n 'drop-while': {\n title: 'drop-while',\n category: 'Sequence',\n linkName: 'drop-while',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the members of $seq in order, skipping the fist elements for witch the `predicate` returns a truethy value.',\n examples: [\n `\ndrop-while(\n [1, 2, 3, 2, 1],\n -> $ < 3\n)`,\n `\ndrop-while(\n [1, 2, 3, 2, 1],\n -> $ > 3\n)`,\n ],\n },\n 'sort': {\n title: 'sort',\n category: 'Sequence',\n linkName: 'sort',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a new sequence with the elements from $seq sorted according to $fun. If no $fun is supplied, builtin `compare` will be used.',\n examples: [\n '[3, 1, 2] sort (a, b) -> b - a',\n 'sort([3, 1, 2])',\n `\nsort(\n [3, 1, 2],\n (a, b) -> cond case a < b then -1 case a > b then 1 case true then -1 end\n)`,\n `\nsort(\n [3, 1, 2],\n (a, b) -> cond case a > b then -1 case a < b then 1 case true then -1 end\n)`,\n ],\n },\n 'sort-by': {\n title: 'sort-by',\n category: 'Sequence',\n linkName: 'sort-by',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n keyfn: {\n type: 'function',\n },\n comparer: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'keyfn'] },\n { argumentNames: ['seq', 'keyfn', 'comparer'] },\n ],\n description: 'Returns a sorted sequence of the items in $seq, where the sort order is determined by comparing `(keyfn item)`. If no $comparer is supplied, uses builtin `compare`.',\n examples: [\n '[\"Albert\", \"Mojir\", \"Nina\"] sort-by count',\n 'sort-by([\"Albert\", \"Mojir\", \"Nina\"], count)',\n 'sort-by(\"Albert\", lower-case, -> $2 compare $1)',\n ],\n },\n 'distinct': {\n title: 'distinct',\n category: 'Sequence',\n linkName: 'distinct',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with no duplicates.',\n examples: [\n 'distinct([[1], [2], [3], [1], [3], [5]])',\n 'distinct([1, 2, 3, 1, 3, 5])',\n 'distinct(\"Albert Mojir\")',\n 'distinct([])',\n 'distinct(\"\")',\n ],\n },\n 'remove': {\n title: 'remove',\n category: 'Sequence',\n linkName: 'remove',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a new sequence of items in $seq for witch `pred(item)` returns a falsy value.',\n examples: [\n '[1, 2, 3, 1, 3, 5] remove odd?',\n 'remove([1, 2, 3, 1, 3, 5], even?)',\n 'remove(\"Albert Mojir\", -> \"aoueiyAOUEIY\" contains? $)',\n ],\n },\n 'remove-at': {\n title: 'remove-at',\n category: 'Sequence',\n linkName: 'remove-at',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Returns a new sequence of all items in $seq except item at position $n. If $n is negative, it is counting from the end of the sequence.',\n examples: [\n '[1, 2, 3, 1, 3, 5] remove-at 2',\n '\"Albert\" remove-at -2',\n 'remove-at([1, 2, 3, 1, 3, 5], 0)',\n 'remove-at([1, 2, 3, 1, 3, 5], -1)',\n 'remove-at(\"Albert Mojir\", 6)',\n ],\n },\n 'split-at': {\n title: 'split-at',\n category: 'Sequence',\n linkName: 'split-at',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Returns a pair of sequence `[take(pos input), drop(pos input)]`.',\n examples: [\n '[1, 2, 3, 4, 5] split-at 2',\n '\"Albert\" split-at -2',\n 'split-at([1, 2, 3, 4, 5], -2)',\n 'split-at(\"Albert\", 2)',\n ],\n },\n 'split-with': {\n title: 'split-with',\n category: 'Sequence',\n linkName: 'split-with',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a pair of sequences `[take-while(input, fun), drop-while(input, fun)]`.',\n examples: [\n '[1, 2, 3, 4, 5] split-with odd?',\n 'split-with([1, 2, 3, 4, 5], -> $ > 3)',\n 'split-with(\"Albert\", -> $ <= \"o\")',\n ],\n },\n 'frequencies': {\n title: 'frequencies',\n category: 'Sequence',\n linkName: 'frequencies',\n returns: {\n type: 'object',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns an object from distinct items in $seq to the number of times they appear. Note that all items in $seq must be valid object keys i.e. strings.',\n examples: [\n 'frequencies([\"Albert\", \"Mojir\", \"Nina\", \"Mojir\"])',\n 'frequencies(\"Pneumonoultramicroscopicsilicovolcanoconiosis\")',\n ],\n },\n 'group-by': {\n title: 'group-by',\n category: 'Sequence',\n linkName: 'group-by',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns an object of the elements of $seq keyed by the result of $fun on each element. The value at each key will be an array of the corresponding elements.',\n examples: [\n '[{ name := \"Albert\" }, { name := \"Albert\" }, { name := \"Mojir\" }] group-by \"name\"',\n 'group-by([{name := \"Albert\"}, {name := \"Albert\"}, {name := \"Mojir\"}], \"name\")',\n 'group-by(\"Albert Mojir\", -> if \"aoueiAOUEI\" contains? $ then \"vowel\" else \"other\" end)',\n ],\n },\n 'partition': {\n title: 'partition',\n category: 'Sequence',\n linkName: 'partition',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'number'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n pad: {\n type: 'array',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'step'] },\n { argumentNames: ['seq', 'n', 'step', 'pad'] },\n ],\n description: 'Returns an array of sequences of $n items each, at offsets $step apart. If $step is not supplied, defaults to $n. If a $pad array is supplied, use its elements as necessary to complete last partition upto $n items. In case there are not enough padding elements, return a partition with less than $n items.',\n examples: [\n 'range(20) partition 4',\n 'partition(range(20), 4)',\n 'partition(range(22), 4)',\n 'partition(range(20), 4, 6)',\n 'partition(range(20), 4, 3)',\n 'partition(range(20), 3, 6, [\"a\"])',\n 'partition(range(20), 4, 6, [\"a\"])',\n 'partition(range(20), 4, 6, [\"a\", \"b\", \"c\", \"d\"])',\n 'partition([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"], 3, 1)',\n 'partition([1, 2, 3, 4], 10)',\n 'partition([1, 2, 3, 4], 10, 10)',\n 'partition([1, 2, 3, 4], 10, 10, [])',\n 'partition([1, 2, 3, 4], 10, 10, null)',\n 'partition(\"superfragilistic\", 5)',\n 'partition(\"superfragilistic\", 5, 5, null)',\n 'let foo := [5, 6, 7, 8]; partition(foo, 2, 1, foo)',\n ],\n },\n 'partition-all': {\n title: 'partition-all',\n category: 'Sequence',\n linkName: 'partition-all',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'number'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'step'] },\n ],\n description: 'Returns an array of sequences like partition, but may include partitions with fewer than n items at the end.',\n examples: [\n '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] partition-all 4',\n 'partition-all([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 4)',\n 'partition([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 4)',\n 'partition-all([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4)',\n ],\n },\n 'partition-by': {\n title: 'partition-by',\n category: 'Sequence',\n linkName: 'partition-by',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Applies $fun to each value in $seq, splitting it each time $fun returns a new value. Returns an array of sequences.',\n examples: [\n '[1, 2, 3, 4, 5] partition-by odd?',\n 'partition-by([1, 2, 3, 4, 5], -> $ = 3)',\n 'partition-by([1, 1, 1, 2, 2, 3, 3], odd?)',\n 'partition-by(\"Leeeeeerrroyyy\", identity)',\n ],\n },\n 'starts-with?': {\n title: 'starts-with?',\n category: 'Sequence',\n linkName: 'starts-with-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('sequence', 'sequence'),\n seq: {\n type: 'sequence',\n },\n prefix: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'prefix'] },\n ],\n description: 'Returns `true` if $seq starts with $prefix, otherwise `false`.',\n examples: [\n '[[1], [2], [3], [4], [5]] starts-with? [1]',\n 'starts-with?([1, 2, 3, 4, 5], 1)',\n 'starts-with?([1, 2, 3, 4, 5], [1])',\n 'starts-with?(\"Albert\", \"Al\")',\n 'starts-with?(\"Albert\", \"al\")',\n ],\n },\n 'ends-with?': {\n title: 'ends-with?',\n category: 'Sequence',\n linkName: 'ends-with-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('sequence', 'sequence'),\n seq: {\n type: 'sequence',\n },\n suffix: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'suffix'] },\n ],\n description: 'Returns `true` if $seq ends with $suffix, otherwise `false`.',\n examples: [\n '[[1], [2], [3], [4], [5]] starts-with? [5]',\n '[[1], [2], [3], [4], [5]] starts-with? 5',\n 'ends-with?([1, 2, 3, 4, 5], 5)',\n 'ends-with?([1, 2, 3, 4, 5], [5])',\n 'ends-with?(\"Albert\", \"rt\")',\n 'ends-with?(\"Albert\", \"RT\")',\n ],\n },\n 'interleave': {\n title: 'interleave',\n category: 'Sequence',\n linkName: 'interleave',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'sequence'),\n seqs: {\n type: 'sequence',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['seqs'] },\n ],\n description: 'Returns a sequence of the first item from each of the $seqs, then the second item from each of the $seqs, until all items from the shortest seq are exhausted.',\n examples: [\n '[1, 2, 3] interleave [4, 5, 6]',\n '\"Albert\" interleave \".,.,.,\"',\n 'interleave([1, 2, 3], [4, 5, 6])',\n 'interleave([1, 2, 3], [4, 5, 6], [7, 8, 9])',\n 'interleave([1, 2, 3], [4, 5, 6], [7, 8])',\n 'interleave([1, 2, 3], [4, 5, 6], [7])',\n 'interleave([1, 2, 3], [4, 5, 6], [])',\n 'interleave([1, 2, 3], [])',\n 'interleave([])',\n ],\n },\n 'interpose': {\n title: 'interpose',\n category: 'Sequence',\n linkName: 'interpose',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: 'sequence',\n },\n separator: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'separator'] },\n ],\n description: 'Returns a sequence of the elements of $seq separated by $separator. If $seq is a string, the separator must be a string.',\n examples: [\n '\"Albert\" interpose \"-\"',\n 'interpose([1, 2, 3, 4, 5], \"a\")',\n 'interpose([\"Albert\", \"Mojir\", \"Nina\"], \", \")',\n 'interpose(\"Albert\", \".\")',\n ],\n },\n}\n","import { type SpecialExpressionsApiName, getOperatorArgs } from '../api'\nimport type { CustomReference, FunctionReference } from '..'\n\nexport const specialExpressionsReference: Record<SpecialExpressionsApiName, FunctionReference<'Special expression'> | CustomReference<'Special expression'>> = {\n 'array': {\n title: 'array',\n category: 'Special expression',\n linkName: 'array',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Makes new array from $values.',\n examples: [\n 'array(1, 2, 3)',\n 'array(array(null, false, true))',\n '[]',\n '[1, 2, 3]',\n '[1, 2, ...[3, 4, 5], 6]',\n '[[null, false, true]]',\n '[1, 2, 3][1]',\n ],\n noOperatorDocumentation: true,\n },\n 'object': {\n title: 'object',\n category: 'Special expression',\n linkName: 'object',\n returns: {\n type: 'object',\n },\n args: {\n kvps: {\n type: 'any',\n rest: true,\n description: 'key - value pairs, where key is a string',\n },\n },\n variants: [\n { argumentNames: ['kvps'] },\n ],\n description: 'Constructs a new object. Object members are created from the $kvps key-value pairs. Requires an even number of arguments.',\n examples: [\n 'object()',\n `\nlet default := {\n type := \"Person\",\n name := \"John Doe\",\n age := 42\n};\n\n{\n ...default,\n name := \"Lisa\"\n}`,\n 'object(\"x\", 10, \"y\", true, \"z\", \"A string\")',\n '{}',\n '{ a := 1, b := 2 }',\n ],\n noOperatorDocumentation: true,\n },\n '&&': {\n title: '&&',\n category: 'Special expression',\n linkName: '-and-and',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `\nComputes logical \\`and\\`. Evaluation of expressions starts from left.\nAs soon as an \\`expression\\` evaluates to a falsy value, the result is returned.\n\nIf all expressions evaluate to truthy values, the value of the last expression is returned.`,\n examples: [\n 'true && 1',\n '&&(1, 1)',\n '&&(3 > 2, \"string\")',\n '&&(3 < 2, \"string\")',\n '&&(true, true, true, true)',\n '&&(true, true, 0, true)',\n ],\n },\n\n '||': {\n title: '||',\n category: 'Special expression',\n linkName: '-or-or',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `\n Computes logical \\`or\\`. Evaluation of expressions evaluation starts from left.\n As soon as a \\`expression\\` evaluates to a truthy value, the result is returned.\n\n If all expressions evaluate to falsy values, the value of the last expression is returned.`,\n examples: [\n 'false || 1',\n '||(1, 1)',\n '||(3 > 2, \"string\")',\n '||(3 < 2, \"string\")',\n '||(false, false, false, true)',\n '||(1, 2, 3, 4)',\n ],\n },\n 'let': {\n title: 'let',\n category: 'Special expression',\n linkName: 'let',\n customVariants: ['let s := value;'],\n details: [\n ['s', 'symbol', 'The name of the variable to bind.'],\n ['value', 'any', 'The value to bind to the variable.'],\n ],\n description: `\n Binds local variables s to \\`value\\`. \\`value\\` can be any expression. The scope of the variables is the body of the let expression.`,\n examples: [`\nlet a := 1 + 2 + 3 + 4;\nlet b := -> $ * ( $ + 1 );\nwrite!(\"a\", a, \"b\", b)`],\n },\n 'function': {\n title: 'function',\n category: 'Special expression',\n linkName: 'function',\n customVariants: ['function name(...arg, ...let-binding) body end;'],\n details: [\n ['name', 'symbol', 'The name of the function.'],\n ['arg', '[...]arg-name [:= value]', 'Arguments of the function.'],\n ['...', 'rest-symbol', 'Optional. The rest argument of the function.'],\n ['arg-name', 'symbol', 'The name of the argument.'],\n ['value', 'any', 'Optional. The default value of the argument.'],\n ['let-binding', 'symbol', 'Optional. The let bindings of the function.'],\n ['body', 'one or more expressions', 'The body of the function.'],\n ],\n description: 'Creates a named function. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\nfunction hyp (a, b)\n sqrt(a * a + b * b)\nend;\n\nhyp(3, 4)`,\n `\nfunction sumOfSquares(...s)\n apply(\n +,\n map(s, -> $ ** 2)\n )\nend;\n\nsumOfSquares(1, 2, 3, 4, 5)`,\n `\nfunction withOptional(a, b := 42)\n a + b\nend;\n\nwrite!(withOptional(1), withOptional(1, 2))`,\n ],\n },\n 'try': {\n title: 'try',\n category: 'Special expression',\n linkName: 'try',\n customVariants: ['try try-body catch catch-body end', 'try try-body catch(error) catch-body end'],\n details: [\n ['try-body', 'expressions', 'The expressions to try.'],\n ['error', 'symbol', 'The error variable to bind.'],\n ['catch-body', 'expression', 'The expressions to evaluate if the try-body throws an error.'],\n ],\n description: 'Executes `try-body`. If that throws, the `catch-body` gets executed. See examples for details.',\n examples: [\n `\ntry\n 2 / 4\ncatch\n \"Oops!\"\nend`,\n `\ntry\n foo()\ncatch(error)\n \"Error: \" ++ error.message\nend`,\n `\ntry\n foo()\ncatch\n 42\nend`,\n ],\n },\n 'throw': {\n title: 'throw',\n category: 'Special expression',\n linkName: 'throw',\n returns: {\n type: 'never',\n },\n args: {\n expr: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['expr'] },\n ],\n description: 'Throws `UserDefinedError` with message set to $expr evaluated. $expr must evaluate to a string.',\n examples: [\n 'try throw(\"You shall not pass!\") catch(error) \"Error: \" ++ error.message end',\n 'try throw(slice(\"You shall not pass!\", 0, 3)) catch(error) \"Error: \" ++ error.message end',\n ],\n },\n 'if': {\n title: 'if',\n category: 'Special expression',\n linkName: 'if',\n customVariants: ['if test then-body else else-body end', 'if test then-body end'],\n details: [\n ['test', 'expression', 'The condition to test.'],\n ['then-body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ['else-body', 'expressions', 'The expressions to evaluate if the test is falsy.'],\n ],\n description: 'Either `then-expr` or `else-expr` branch is taken. `then-expr` is selected when $test is truthy. If $test is falsy `else-expr` is executed, if no `else-expr` exists, `null` is returned.',\n examples: [\n `\nif true then\n write!(\"TRUE\")\nelse\n write!(\"FALSE\")\nend`,\n 'if false then write!(\"TRUE\") else write!(\"FALSE\") end',\n 'if true then write!(\"TRUE\") end',\n 'if false then write!(\"TRUE\") end',\n ],\n },\n 'unless': {\n title: 'unless',\n category: 'Special expression',\n linkName: 'unless',\n customVariants: ['unless test then-body else else-body end', 'unless test then-body end'],\n details: [\n ['test', 'expression', 'The condition to test.'],\n ['then-body', 'expressions', 'The expressions to evaluate if the test is falsy.'],\n ['else-body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Either `then-expr` or `else-expr` branch is taken. `then-expr` is selected when $test is falsy. If $test is truthy `else-expr` is executed, if no `else-expr` exists, `null` is returned.',\n examples: [\n `\nunless true then\n write!(\"TRUE\")\nelse\n write!(\"FALSE\")\nend`,\n 'unless false then write!(\"TRUE\") else write!(\"FALSE\") end',\n 'unless true then write!(\"TRUE\") end',\n 'unless false then write!(\"TRUE\") end',\n ],\n },\n 'cond': {\n title: 'cond',\n category: 'Special expression',\n linkName: 'cond',\n customVariants: ['cond cond-branch cond-branch ... end'],\n details: [\n ['cond-branch', 'case test then body', 'A branch of the cond expression.'],\n ['test', 'expression', 'The condition to test.'],\n ['body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Used for branching. `cond-branches` are tested sequentially from the top. If no branch is tested truthy, `null` is returned.',\n examples: [\n `\ncond\n case false then write!(\"FALSE\")\n case true then write!(\"TRUE\")\nend\n `,\n `\ncond\n case false then write!(\"FALSE\")\n case null then write!(\"null\")\n end ?? write!(\"TRUE\")`,\n `\ncond\n case false then write!(\"FALSE\")\n case null then write!(\"null\")\nend`,\n ],\n },\n 'switch': {\n title: 'switch',\n category: 'Special expression',\n linkName: 'switch',\n customVariants: ['switch value switch-branch switch-branch ... end'],\n details: [\n ['value', 'any', 'The value to test.'],\n ['switch-branch', 'case test then body', 'A branch of the switch expression.'],\n ['test', 'expression', 'The condition to test.'],\n ['body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Used for branching. `switch-branches` are tested sequentially from the top against `value`. If no branch is tested truthy, `null` is returned.',\n examples: [\n `\nswitch 1\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n `\nswitch 2\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n `\nswitch 3\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n ],\n },\n 'do': {\n title: 'do',\n category: 'Special expression',\n linkName: 'do',\n customVariants: ['do body end'],\n details: [\n ['body', 'expressions', 'The expressions to evaluate.'],\n ],\n description: 'Evaluates `body`. Resulting value is the value of the last expression.',\n examples: [\n `\ndo\n let a := 1 + 2 + 3 + 4;\n let b := -> $ * ( $ + 1 );\n b(a)\nend`,\n ],\n },\n 'recur': {\n title: 'recur',\n category: 'Special expression',\n linkName: 'recur',\n customVariants: ['recur(...recur-args)'],\n description: 'Recursevly calls enclosing function or loop with its evaluated `recur-args`.',\n examples: [\n `\nfunction foo(n)\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend;\nfoo(3)`,\n `\n(n -> do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend)(3)`,\n `\nloop let n := 3 do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend`,\n ],\n },\n // 'loop': {\n // title: 'loop',\n // category: 'Special expression',\n // linkName: 'loop',\n // returns: {\n // type: 'any',\n // },\n // args: {\n // bindings: {\n // type: '*binding',\n // rest: true,\n // },\n // expressions: {\n // type: '*expression',\n // rest: true,\n // },\n // },\n // variants: [\n // { argumentNames: ['bindings', 'expressions'] },\n // ],\n // description: 'Executes $expressions with initial $bindings. The $bindings will be replaced with the recur parameters for subsequent recursions.',\n // examples: [\n // `\n // (loop [n 3]\n // write!(n)\n // (if\n // (! (zero? n))\n // (recur (dec n))))`,\n // `\n // (loop [n 3]\n // write!(n)\n // (if\n // (! (zero? n))\n // (recur (dec n))\n // n))`,\n // ],\n // },\n\n // 'doseq': {\n // title: 'doseq',\n // category: 'Special expression',\n // linkName: 'doseq',\n // returns: {\n // type: 'null',\n // },\n // args: {\n // bindings: {\n // type: '*for-binding',\n // rest: true,\n // },\n // expr: {\n // type: '*expression',\n // },\n // },\n // variants: [\n // { argumentNames: ['vars', 'expr'] },\n // ],\n // description: 'Same syntax as `for`, but returns `null`. Use for side effects. Consumes less memory than `for`.',\n // examples: ['(doseq [x [1 2 4]] write!(x))'],\n // },\n // 'for': {\n // title: 'for',\n // category: 'Special expression',\n // linkName: 'for',\n // returns: {\n // type: 'any',\n // array: true,\n // },\n // args: {\n // bindings: {\n // type: '*for-binding',\n // rest: true,\n // },\n // expr: {\n // type: '*expression',\n // },\n // },\n // variants: [\n // { argumentNames: ['vars', 'expr'] },\n // ],\n // description: `List comprehension. Takes one or more $bindings, each followed by zero or more modifiers, and returns an array of evaluations of $expr.\n\n // Collections are iterated in a nested fashion, rightmost fastest. Supported modifiers are: &let &while and &when.`,\n // examples: [\n // `\n // (for [x \"Al\" y [1 2]]\n // (repeat y x))`,\n // `\n // (for [x {:a 10 :b 20} y [1 2]]\n // (repeat y x))`,\n // `\n // (for [x [1 2] y [1 10]]\n // (* x y))`,\n // `\n // (for\n // [x [1 2]\n // &let [z (* x x x)]]\n\n // z)`,\n // `\n // (for\n // [x [0 1 2 3 4 5]\n // &let [y (* x 3)]\n // &when (even? y)]\n\n // y)`,\n // `\n // (for\n // [x [0 1 2 3 4 5]\n // &let [y (* x 3)]\n // &while (even? y)]\n\n // y)`,\n // `\n // (for\n // [x [0 1 2 3 4 5]\n // &let [y (* x 3)]\n // &while (odd? y)]\n\n // y)`,\n // `\n // (for\n // [x [1 2 3] y [1 2 3]\n // &while (<= x y)\n // z [1 2 3]]\n\n // [x y z])`,\n // `\n // (for\n // [x [1 2 3] y [1 2 3] z [1 2 3]\n // &while (<= x y)]\n\n// [x y z])`,\n// ],\n// },\n// 'defined?': {\n// title: 'defined?',\n// category: 'Special expression',\n// linkName: 'defined-question',\n// returns: {\n// type: 'boolean',\n// },\n// args: {\n// n: {\n// type: '*name',\n// },\n// },\n// variants: [\n// { argumentNames: ['n'] },\n// ],\n// description: 'Returns `true` if $n is a declared variable or a builtin function, otherwise `false`.',\n// examples: [\n// '(defined? foo)',\n// `\n// (def foo :foo)\n// (defined? foo)`,\n// '(defined? +)',\n// `\n// (def foo null)\n// (defined? foo)`,\n// '(defined? if)',\n// ],\n// },\n// '??': {\n// title: '??',\n// category: 'Special expression',\n// linkName: '-question-question',\n// returns: {\n// type: 'any',\n// },\n// args: {\n// test: {\n// type: '*expression',\n// },\n// default: {\n// type: '*expression',\n// },\n// },\n// variants: [\n// { argumentNames: ['test'] },\n// { argumentNames: ['test', 'default'] },\n// ],\n// description: 'If $test is declared and evaluated to non `null` value $test is result, else $default is returned. If $default is not provided, `null` is returned.',\n// examples: [\n// '(?? foo)',\n// `\n// (def foo :foo)\n// (?? foo)`,\n// '(?? +)',\n// `\n// (def foo null)\n// (?? foo)`,\n// `\n// (def foo null)\n// (?? foo :bar)`,\n// '(?? foo 1)',\n// '(?? \"\")',\n// '(?? 0)',\n// '(?? 0 1)',\n// '(?? 2 1)',\n// ],\n// },\n}\n","import type { FunctionReference } from '..'\nimport { type StringApiName, getOperatorArgs } from '../api'\n\nexport const stringReference: Record<StringApiName, FunctionReference<'String'>> = {\n 'string-repeat': {\n title: 'string-repeat',\n category: 'String',\n linkName: 'string-repeat',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('string', 'integer'),\n s: {\n type: 'string',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'n'] },\n ],\n description: 'Repeates $s $n times.',\n examples: [\n '\"*\" string-repeat 10',\n 'string-repeat(\"*\", 10)',\n 'string-repeat(\"***\", 0)',\n ],\n },\n 'str': {\n title: 'str',\n category: 'String',\n linkName: 'str',\n returns: {\n type: 'string',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Concatenats $values into one string. If `value` equals `null` empty string is returned.',\n examples: [\n 'str(\"A string\", \", and another string\", \" ...and more\")',\n 'str(\"Just one string\")',\n 'str()',\n 'str(0, false, true, null, #\"^kalle\", [1, 2, 3], {a := \"a\"})',\n ],\n noOperatorDocumentation: true,\n },\n 'number': {\n title: 'number',\n category: 'String',\n linkName: 'number',\n returns: {\n type: 'number',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Parses $s to a number.',\n examples: [\n 'number(\"10\")',\n 'number(\"010\")',\n 'number(\"-1.01\")',\n ],\n },\n 'lower-case': {\n title: 'lower-case',\n category: 'String',\n linkName: 'lower-case',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to lower case.',\n examples: [\n 'lower-case(\"Albert\")',\n 'lower-case(\"\")',\n ],\n },\n 'upper-case': {\n title: 'upper-case',\n category: 'String',\n linkName: 'upper-case',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to upper case.',\n examples: [\n 'upper-case(\"Albert\")',\n 'upper-case(\"\")',\n ],\n },\n 'trim': {\n title: 'trim',\n category: 'String',\n linkName: 'trim',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading and trailing whitespaces removed.',\n examples: [\n 'trim(\" Albert \")',\n 'trim(\" \")',\n 'trim(\"\")',\n ],\n },\n 'trim-left': {\n title: 'trim-left',\n category: 'String',\n linkName: 'trim-left',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading whitespaces removed.',\n examples: [\n 'trim-left(\" Albert \")',\n 'trim-left(\" \")',\n 'trim-left(\"\")',\n ],\n },\n 'trim-right': {\n title: 'trim-right',\n category: 'String',\n linkName: 'trim-right',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with trailing whitespaces removed.',\n examples: [\n 'trim-right(\" Albert \")',\n 'trim-right(\" \")',\n 'trim-right(\"\")',\n ],\n },\n 'pad-left': {\n title: 'pad-left',\n category: 'String',\n linkName: 'pad-left',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('string', 'integer'),\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given $length.',\n examples: [\n '\"Albert\" pad-left 20',\n 'pad-left(\"Albert\", 20)',\n 'pad-left(\"Albert\", 20, \"-*-\")',\n 'pad-left(\"Albert\", 5)',\n 'pad-left(\"Albert\", -1)',\n ],\n },\n 'pad-right': {\n title: 'pad-right',\n category: 'String',\n linkName: 'pad-right',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('string', 'integer'),\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given `length`.',\n examples: [\n '\"Albert\" pad-right 20',\n 'pad-right(\"Albert\", 20)',\n 'pad-right(\"Albert\", 20, \"-*-\")',\n 'pad-right(\"Albert\", 5)',\n 'pad-right(\"Albert\", -1)',\n ],\n },\n 'split': {\n title: 'split',\n category: 'String',\n linkName: 'split',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('string', 'string'),\n s: {\n type: 'string',\n },\n delimiter: {\n type: 'string',\n },\n limit: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'delimiter'] },\n { argumentNames: ['s', 'delimiter', 'limit'] },\n ],\n description: 'Divides $s into an array of substrings. The division is done by searching for `delimiter`. If `limit` as provided, at most `limit` number of substrings are returned.',\n examples: [\n '\"Albert Mojir\" split \" \"',\n 'split(\"Albert Mojir\", \" \")',\n 'split(\"abcdefghijklmnopqrstuvw\", #\"[aoueiy]\")',\n 'split(\"0123456789\", \"\")',\n 'split(\"0123456789\", \"\", 5) map number',\n ],\n },\n 'split-lines': {\n title: 'split-lines',\n category: 'String',\n linkName: 'split-lines',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Divides $s into an array of substrings, each representing a line.',\n examples: [\n 'split-lines(\"Albert\\nMojir\\n\")',\n 'split-lines(\"Albert\\n\\nMojir\")',\n 'split-lines(\"Albert\\nMojir\\n\\n\")',\n 'split-lines(\"\")',\n ],\n },\n 'template': {\n title: 'template',\n category: 'String',\n linkName: 'template',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n params: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['s', 'params'] },\n ],\n description: 'Applies placeholders to a string. Support for basic pluralization - see examples. If pluralization is used, first placeholder must be a number.',\n examples: [\n 'template(\"Hi, $1 and $2\", \"Carl\", \"Larry\")',\n 'template(\"Hi $1, $2, $3, $4, $5, $6, $7, $8 and $9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\")',\n 'template(\"$1 book||||$1 books\", 0)',\n 'template(\"$1 book||||$1 books\", 1)',\n 'template(\"$1 book||||$1 books\", 2)',\n 'template(\"No book||||$1 book||||$1 books\", 0)',\n 'template(\"No book||||$1 book||||$1 books\", 1)',\n 'template(\"No book||||$1 book||||$1 books\", 10)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 0)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 1)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 2)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 3)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 4)',\n ],\n noOperatorDocumentation: true,\n },\n 'to-char-code': {\n title: 'to-char-code',\n category: 'String',\n linkName: 'to-char-code',\n returns: {\n type: 'number',\n },\n args: {\n c: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['c'] },\n ],\n description: 'Return code point for first character in $c.',\n examples: [\n 'to-char-code(\"A\")',\n 'to-char-code(\"Albert\")',\n ],\n },\n 'from-char-code': {\n title: 'from-char-code',\n category: 'String',\n linkName: 'from-char-code',\n returns: {\n type: 'string',\n },\n args: {\n code: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['code'] },\n ],\n description: 'Return character for code point $code.',\n examples: [\n 'from-char-code(65)',\n 'from-char-code(0)',\n ],\n },\n 'encode-base64': {\n title: 'encode-base64',\n category: 'String',\n linkName: 'encode-base64',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a Base64 encoded string from $s.',\n examples: [\n 'encode-base64(\"Albert\")',\n ],\n },\n 'decode-base64': {\n title: 'decode-base64',\n category: 'String',\n linkName: 'decode-base64',\n returns: {\n type: 'string',\n },\n args: {\n base64string: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['base64string'] },\n ],\n description: 'Returns a Base64 decoded string from $base64string.',\n examples: [\n 'decode-base64(\"QWxiZXJ0IPCfkLs=\")',\n ],\n },\n 'encode-uri-component': {\n title: 'encode-uri-component',\n category: 'String',\n linkName: 'encode-uri-component',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an escaped `URI` string.',\n examples: [\n 'encode-uri-component(\"Hi everyone!?\")',\n ],\n },\n 'decode-uri-component': {\n title: 'decode-uri-component',\n category: 'String',\n linkName: 'decode-uri-component',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an un-escaped `URI` string.',\n examples: [\n 'decode-uri-component(\"Hi%20everyone!%3F%20%F0%9F%91%8D\")',\n ],\n },\n\n 'join': {\n title: 'join',\n category: 'String',\n linkName: 'join',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('array', 'string'),\n arr: {\n type: 'array',\n },\n delimiter: {\n type: 'string',\n },\n },\n variants: [{\n argumentNames: ['arr', 'delimiter'],\n }],\n description: 'Returns a new string by concatenating all of the elements in $arr, separated by $delimiter.',\n examples: [\n 'map([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], str) join \", \"',\n '([0, 1, 2, 3, 4, 5, 6, 7, 8, 9] map str) join \", \"',\n 'join([\"Albert\", 10], \", \")',\n 'join([\"Albert\", \"Mojir\"], \" \")',\n 'join(map([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], str), \", \")',\n ],\n },\n 'capitalize': {\n title: 'capitalize',\n category: 'String',\n linkName: 'capitalize',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s with the first character converted to uppercase and the rest to lowercase.',\n examples: [\n 'capitalize(\"albert\")',\n 'capitalize(\"ALBERT\")',\n 'capitalize(\"aLBERT\")',\n 'capitalize(\"\")',\n ],\n },\n 'blank?': {\n title: 'blank?',\n category: 'String',\n linkName: 'blank-question',\n returns: {\n type: 'boolean',\n },\n args: {\n s: {\n type: ['string', 'null'],\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns true if $s is null or only contains whitespace characters.',\n examples: [\n 'blank?(\"\")',\n 'blank?(null)',\n 'blank?(\"\\n\")',\n 'blank?(\" \")',\n 'blank?(\".\")',\n ],\n },\n}\n","import type { DatatypeName } from './api'\nimport type { DatatypeReference } from '.'\n\nexport const datatype: Record<DatatypeName, DatatypeReference> = {\n '-type-number': {\n datatype: true,\n title: 'number',\n category: 'Datatype',\n linkName: '-type-number',\n description: 'A number',\n examples: [\n '42',\n '3.14',\n ],\n },\n '-type-string': {\n datatype: true,\n title: 'string',\n category: 'Datatype',\n linkName: '-type-string',\n description: 'A string',\n examples: [\n '\"hello\"',\n '\"\"',\n ],\n },\n '-type-object': {\n datatype: true,\n title: 'object',\n category: 'Datatype',\n linkName: '-type-object',\n description: 'An object, a collection of key-value pairs where keys are strings',\n examples: [\n '{}',\n '{ a := 1, b := 2}',\n ],\n },\n '-type-array': {\n datatype: true,\n title: 'array',\n category: 'Datatype',\n linkName: '-type-array',\n description: 'An array, a collection of values',\n examples: [\n '[]',\n '[1, 2, 3]',\n '[\"a\", null, true]',\n ],\n },\n '-type-boolean': {\n datatype: true,\n title: 'boolean',\n category: 'Datatype',\n linkName: '-type-boolean',\n description: 'A boolean',\n examples: [\n 'true',\n 'false',\n ],\n },\n '-type-function': {\n datatype: true,\n title: 'function',\n category: 'Datatype',\n linkName: '-type-function',\n description: 'A function',\n examples: [\n 'x -> x + 1',\n '(a, b, c) -> (a + b) * c',\n '() -> 42',\n '-> $1 + $2',\n ],\n },\n '-type-integer': {\n datatype: true,\n title: 'integer',\n category: 'Datatype',\n linkName: '-type-integer',\n description: 'An integer',\n examples: [\n '42',\n '-42',\n ],\n },\n '-type-any': {\n datatype: true,\n title: 'any',\n category: 'Datatype',\n linkName: '-type-any',\n description: 'Any value',\n examples: [\n '42',\n '\"hello\"',\n 'true',\n 'null',\n ],\n },\n '-type-null': {\n datatype: true,\n title: 'null',\n category: 'Datatype',\n linkName: '-type-null',\n description: 'The value null',\n examples: [\n 'null',\n ],\n },\n '-type-collection': {\n datatype: true,\n title: 'collection',\n category: 'Datatype',\n linkName: '-type-collection',\n description: 'A collection, an object, an array or a string',\n examples: [\n '{ foo := 42 }',\n '[1, 2, 3]',\n '\"hello\"',\n ],\n },\n '-type-sequence': {\n datatype: true,\n title: 'sequence',\n category: 'Datatype',\n linkName: '-type-sequence',\n description: 'A sequence, an array or a string',\n examples: [\n '[1, 2, 3]',\n '\"hello\"',\n ],\n },\n '-type-regexp': {\n datatype: true,\n title: 'regexp',\n category: 'Datatype',\n linkName: '-type-regexp',\n description: 'A regular expression',\n examples: [\n 'regexp(\"^\\\\\\\\s*(.*)$\")',\n '#\"albert\"ig',\n ],\n },\n '-type-never': {\n datatype: true,\n title: 'never',\n category: 'Datatype',\n linkName: '-type-never',\n description: 'A value that can never be created',\n examples: [`\n// throw(\"error\") will never return a value\ntry throw(\"error\") catch \"never\" end`,\n ],\n },\n}\n","import type { ShorthandName } from './api'\nimport type { ShorthandReference } from '.'\n\nexport const shorthand: Record<ShorthandName, ShorthandReference> = {\n '-short-regexp': {\n shorthand: true,\n title: '#\"pattern\"',\n category: 'Shorthand',\n linkName: '-short-regexp',\n description: 'Shorthand for `regexp(pattern)`. Only difference is that escaping is not needed.',\n examples: [\n '#\"^\\\\s*(.*)$\"',\n '#\"albert\"ig',\n ],\n seeAlso: ['regexp'],\n },\n '-short-fn': {\n shorthand: true,\n title: '=> expression',\n category: 'Shorthand',\n linkName: '-short-fn',\n description: `\nShorthand for \\`(args, ...) => expression\\`.\n\\`$1, $2, $3, ...\\` are shorthand for the first, second, third, ... argument.\n\nYou can reference the first argument using either \\`$1\\` or \\`$\\`.\nHowever, please note that \\`$1\\` and \\`$\\` are mutually exclusive and cannot be used simultaneously.\nE.g. \\`#(* $ $1)\\` is not valid.`,\n examples: [\n '-> $1 + $2',\n '(-> $ * $)(9)',\n ],\n },\n}\n","import type { SpecialExpressionName } from '../src/builtin'\nimport { specialExpressions } from '../src/builtin'\nimport { normalExpressions } from '../src/builtin/normalExpressions'\nimport { specialExpressionTypes } from '../src/builtin/specialExpressionTypes'\nimport { isSymbolicOperator } from '../src/tokenizer/operators'\nimport { canBeOperator } from '../src/typeGuards'\nimport type { ApiName, Category, DataType, NormalExpressionName } from './api'\nimport { arrayReference } from './categories/array'\nimport { assertReference } from './categories/assert'\nimport { bitwiseReference } from './categories/bitwise'\nimport { collectionReference } from './categories/collection'\nimport { functionalReference } from './categories/functional'\nimport { mathReference } from './categories/math'\nimport { miscReference } from './categories/misc'\nimport { objectReference } from './categories/object'\nimport { predicateReference } from './categories/predicate'\nimport { regularExpressionReference } from './categories/regularExpression'\nimport { sequenceReference } from './categories/sequence'\nimport { specialExpressionsReference } from './categories/specialExpressions'\nimport { stringReference } from './categories/string'\nimport { datatype } from './datatype'\nimport { shorthand } from './shorthand'\n\nexport interface TypedValue {\n type: DataType[] | DataType\n rest?: true\n array?: true\n}\n\ntype NormalExpressionArgument = TypedValue & {\n description?: string\n}\n\nexport type Argument = NormalExpressionArgument\n\ninterface Variant {\n argumentNames: string[]\n}\n\nexport interface CommonReference<T extends Category> {\n title: string\n category: T\n linkName: string\n examples: string[]\n description: string\n seeAlso?: ApiName[]\n}\nexport type FunctionReference<T extends Category = Category> = CommonReference<T> & {\n returns: TypedValue\n args: Record<string, Argument>\n variants: Variant[]\n aliases?: string[]\n noOperatorDocumentation?: true\n _isOperator?: boolean\n _prefereOperator?: boolean\n}\n\nexport type CustomReference<T extends Category = Category> = CommonReference<T> & {\n customVariants: string[]\n details?: [string, string, string | undefined][]\n}\n\nexport interface ShorthandReference extends CommonReference<'Shorthand'> {\n shorthand: true\n linkName: `-short-${string}`\n}\n\nexport interface DatatypeReference extends CommonReference<'Datatype'> {\n datatype: true\n linkName: `-type-${string}`\n}\n\nexport type Reference<T extends Category = Category> = FunctionReference<T> | CustomReference<T> | ShorthandReference | DatatypeReference\n\nexport function isFunctionReference<T extends Category>(ref: Reference<T>): ref is FunctionReference<T> {\n return 'returns' in ref && 'args' in ref && 'variants' in ref\n}\n\nexport function isCustomReference<T extends Category>(ref: Reference<T>): ref is CustomReference<T> {\n return 'customVariants' in ref\n}\n\nexport function isShorthandReference<T extends Category>(ref: Reference<T>): ref is ShorthandReference {\n return 'shorthand' in ref\n}\n\nexport function isDatatypeReference<T extends Category>(ref: Reference<T>): ref is DatatypeReference {\n return 'datatype' in ref\n}\n\nexport const normalExpressionReference: Record<NormalExpressionName, FunctionReference> = {\n ...collectionReference,\n ...arrayReference,\n ...sequenceReference,\n ...mathReference,\n ...functionalReference,\n ...miscReference,\n ...objectReference,\n ...predicateReference,\n ...regularExpressionReference,\n ...stringReference,\n ...bitwiseReference,\n ...assertReference,\n}\n\nObject.entries(normalExpressionReference).forEach(([key, obj]) => {\n const paramCount = normalExpressions[key]!.paramCount\n if (!obj.noOperatorDocumentation && canBeOperator(paramCount)) {\n obj._isOperator = true\n if (isSymbolicOperator(key)) {\n obj._prefereOperator = true\n }\n }\n})\n\nObject.entries(specialExpressionsReference).forEach(([key, obj]) => {\n if (isFunctionReference(obj)) {\n const paramCount = specialExpressions[specialExpressionTypes[key as SpecialExpressionName]]?.paramCount\n if (paramCount && canBeOperator(paramCount)) {\n obj._isOperator = true\n }\n }\n})\n\nexport const functionReference = {\n ...normalExpressionReference,\n ...specialExpressionsReference,\n}\n\nexport const apiReference: Record<ApiName, Reference> = { ...functionReference, ...shorthand, ...datatype }\n\nObject.values(apiReference).forEach((ref) => {\n ref.title = ref.title.replace(/\"/g, '&quot;')\n})\n"],"names":["isLitsFunction"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.esm.js","sources":["../node_modules/tslib/tslib.es6.js","../src/utils/debug/getCodeMarker.ts","../src/errors.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/index.ts","../src/typeGuards/litsFunction.ts","../src/typeGuards/number.ts","../src/builtin/normalExpressions/categories/bitwise.ts","../src/typeGuards/lits.ts","../src/typeGuards/string.ts","../src/utils/index.ts","../src/typeGuards/array.ts","../src/builtin/normalExpressions/categories/collection.ts","../src/builtin/normalExpressions/categories/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/typeGuards/astNode.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/specialExpressionTypes.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/getUndefinedSymbols/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","../reference/api.ts","../reference/categories/array.ts","../reference/categories/assert.ts","../reference/categories/bitwise.ts","../reference/categories/collection.ts","../reference/categories/functional.ts","../reference/categories/math.ts","../reference/categories/misc.ts","../reference/categories/object.ts","../reference/categories/predicate.ts","../reference/categories/regularExpression.ts","../reference/categories/sequence.ts","../reference/categories/specialExpressions.ts","../reference/categories/string.ts","../reference/datatype.ts","../reference/shorthand.ts","../reference/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 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 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 { 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 { Any, Coll, Obj, Seq } from '../interface'\nimport type { RegularExpression } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\nimport { REGEXP_SYMBOL } from '../utils/symbols'\nimport { isLitsFunction } from './litsFunction'\n\nexport function isAny(value: unknown): value is Any {\n // TODO weak test\n return value !== undefined\n}\nexport function asAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): Any {\n assertAny(value, sourceCodeInfo)\n return value\n}\nexport function assertAny(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Any {\n if (!isAny(value))\n throw getAssertionError('not undefined', value, sourceCodeInfo)\n}\n\nexport function isSeq(value: unknown): value is Seq {\n return Array.isArray(value) || typeof value === 'string'\n}\nexport function asSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): Seq {\n assertSeq(value, sourceCodeInfo)\n return value\n}\nexport function assertSeq(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Seq {\n if (!isSeq(value))\n throw getAssertionError('string or array', value, sourceCodeInfo)\n}\n\nexport function isObj(value: unknown): value is Obj {\n return !(\n value === null\n || typeof value !== 'object'\n || Array.isArray(value)\n || value instanceof RegExp\n || isLitsFunction(value)\n || isRegularExpression(value)\n )\n}\nexport function asObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): Obj {\n assertObj(value, sourceCodeInfo)\n return value\n}\nexport function assertObj(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Obj {\n if (!isObj(value))\n throw getAssertionError('object', value, sourceCodeInfo)\n}\n\nexport function isColl(value: unknown): value is Coll {\n return isSeq(value) || isObj(value)\n}\nexport function asColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): Coll {\n assertColl(value, sourceCodeInfo)\n return value\n}\nexport function assertColl(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is Coll {\n if (!isColl(value))\n throw getAssertionError('string, array or object', value, sourceCodeInfo)\n}\n\nexport function isRegularExpression(regexp: unknown): regexp is RegularExpression {\n if (regexp === null || typeof regexp !== 'object')\n return false\n\n return !!(regexp as RegularExpression)[REGEXP_SYMBOL]\n}\nexport function asRegularExpression(value: unknown, sourceCodeInfo?: SourceCodeInfo): RegularExpression {\n assertRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is RegularExpression {\n if (!isRegularExpression(value))\n throw getAssertionError('RegularExpression', value, sourceCodeInfo)\n}\n\nexport function isStringOrRegularExpression(value: unknown): value is string | RegularExpression {\n return isRegularExpression(value) || typeof value === 'string'\n}\nexport function asStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): string | RegularExpression {\n assertStringOrRegularExpression(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrRegularExpression(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | RegularExpression {\n if (!isStringOrRegularExpression(value))\n throw getAssertionError('string or RegularExpression', value, sourceCodeInfo)\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\ntype StringAssertionOptions =\n | {\n nonEmpty?: true\n char?: never\n }\n | {\n nonEmpty?: never\n char?: true\n }\n\nexport function isString(value: unknown, options: StringAssertionOptions = {}): value is string {\n if (typeof value !== 'string')\n return false\n\n if (options.nonEmpty && value.length === 0)\n return false\n\n if (options.char && value.length !== 1)\n return false\n\n return true\n}\n\nexport function assertString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): asserts value is string {\n if (!isString(value, options)) {\n throw getAssertionError(\n `${options.nonEmpty ? 'non empty string' : options.char ? 'character' : 'string'}`,\n value,\n sourceCodeInfo,\n )\n }\n}\n\nexport function asString(\n value: unknown,\n sourceCodeInfo: SourceCodeInfo | undefined,\n options: StringAssertionOptions = {},\n): string {\n assertString(value, sourceCodeInfo, options)\n return value\n}\n\nexport function isStringOrNumber(value: unknown): value is string | number {\n return typeof value === 'string' || typeof value === 'number'\n}\nexport function asStringOrNumber(value: unknown, sourceCodeInfo?: SourceCodeInfo): string | number {\n assertStringOrNumber(value, sourceCodeInfo)\n return value\n}\nexport function assertStringOrNumber(\n value: unknown,\n sourceCodeInfo?: SourceCodeInfo,\n): asserts value is string | number {\n if (!isStringOrNumber(value))\n throw getAssertionError('string or number', value, sourceCodeInfo)\n}\n","import type { Any, Coll, Obj } from '../interface'\nimport type { NativeJsFunction } from '../parser/types'\nimport type { SourceCodeInfo } from '../tokenizer/token'\nimport { asAny, isColl, isObj, isRegularExpression } from '../typeGuards/lits'\nimport { isNumber } from '../typeGuards/number'\nimport { asString, assertStringOrNumber } from '../typeGuards/string'\nimport { isUnknownRecord } from '../typeGuards'\nimport { LitsError } from '../errors'\nimport { FUNCTION_SYMBOL } from './symbols'\n\nexport function collHasKey(coll: unknown, key: string | number): boolean {\n if (!isColl(coll))\n return false\n\n if (typeof coll === 'string' || Array.isArray(coll)) {\n if (!isNumber(key, { integer: true }))\n return false\n\n return key >= 0 && key < coll.length\n }\n return !!Object.getOwnPropertyDescriptor(coll, key)\n}\n\nexport function compare<T extends string | number>(a: T, b: T, sourceCodeInfo: SourceCodeInfo | undefined): number {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n\n if (typeof a === 'string' && typeof b === 'string') {\n return a < b ? -1 : a > b ? 1 : 0\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.sign((a) - (b))\n }\n throw new LitsError(`Cannot compare values of different types: ${typeof a} and ${typeof b}`, sourceCodeInfo)\n}\n\nexport function deepEqual(a: Any, b: Any, sourceCodeInfo?: SourceCodeInfo): boolean {\n if (a === b)\n return true\n\n if (typeof a === 'number' && typeof b === 'number')\n return Math.abs(a - b) < Number.EPSILON\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length)\n return false\n\n for (let i = 0; i < a.length; i += 1) {\n if (!deepEqual(asAny(a[i], sourceCodeInfo), asAny(b[i], sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n }\n if (isRegularExpression(a) && isRegularExpression(b))\n return a.s === b.s && a.f === b.f\n\n if (isUnknownRecord(a) && isUnknownRecord(b)) {\n const aKeys = Object.keys(a)\n const bKeys = Object.keys(b)\n if (aKeys.length !== bKeys.length)\n return false\n\n for (let i = 0; i < aKeys.length; i += 1) {\n const key = asString(aKeys[i], sourceCodeInfo)\n if (!deepEqual(toAny(a[key]), toAny(b[key]), sourceCodeInfo))\n return false\n }\n return true\n }\n return false\n}\n\nexport function toNonNegativeInteger(num: number): number {\n return Math.max(0, Math.ceil(num))\n}\n\nexport function toAny(value: unknown): Any {\n return (value ?? null) as Any\n}\n\nfunction clone<T>(value: T): T {\n if (isObj(value)) {\n return Object.entries(value).reduce((result: Obj, entry) => {\n const [key, val] = entry\n result[key] = clone(val)\n return result\n }, {}) as T\n }\n if (Array.isArray(value))\n // eslint-disable-next-line ts/no-unsafe-return\n return value.map(item => clone(item)) as unknown as T\n\n return value\n}\n\nexport function cloneColl<T extends Coll>(value: T): T {\n return clone(value)\n}\n\nexport function createNativeJsFunction(fn: (...args: any[]) => unknown, name?: string): NativeJsFunction {\n return {\n [FUNCTION_SYMBOL]: true,\n nativeFn: {\n fn,\n },\n name,\n functionType: 'NativeJsFunction',\n }\n}\n\nexport function joinSets<T>(...results: Set<T>[]): Set<T> {\n const result = new Set<T>()\n for (const symbols of results)\n symbols.forEach(symbol => result.add(symbol))\n\n return result\n}\n\nexport function addToSet<T>(target: Set<T>, source: Set<T>): void {\n source.forEach(symbol => target.add(symbol))\n}\n","import type { SourceCodeInfo } from '../tokenizer/token'\nimport { getAssertionError } from '../utils/getAssertionError'\n\n// isArray not needed, use Array.isArary\nexport function asArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): unknown[] {\n assertArray(value, sourceCodeInfo)\n return value\n}\nexport function assertArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is unknown[] {\n if (!Array.isArray(value))\n throw getAssertionError('array', value, sourceCodeInfo)\n}\n\nexport function isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string')\n}\nexport function asStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertStringArray(value, sourceCodeInfo)\n return value\n}\nexport function assertStringArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isStringArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n\nexport function isCharArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every(v => typeof v === 'string' && v.length === 1)\n}\nexport function asCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): string[] {\n assertCharArray(value, sourceCodeInfo)\n return value\n}\nexport function assertCharArray(value: unknown, sourceCodeInfo?: SourceCodeInfo): asserts value is string[] {\n if (!isCharArray(value))\n throw getAssertionError('array of strings', value, sourceCodeInfo)\n}\n","import type { ContextStack } from '../../../evaluator/ContextStack'\nimport type { ExecuteFunction } from '../../../evaluator/interface'\nimport type { Any, Arr, Coll, Obj } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { cloneColl, collHasKey, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\n\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { asAny, asColl, assertAny, assertColl, assertObj, isColl, isObj, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport { asString, asStringOrNumber, assertString, assertStringOrNumber, isString, isStringOrNumber } from '../../../typeGuards/string'\nimport type { LitsFunction } from '../../../parser/types'\n\ninterface CollMeta {\n coll: Coll\n parent: Obj | Arr\n}\n\nfunction cloneAndGetMeta(\n originalColl: Coll,\n keys: Arr,\n sourceCodeInfo?: SourceCodeInfo,\n): { coll: Coll, innerCollMeta: CollMeta } {\n const coll = cloneColl(originalColl)\n\n const butLastKeys = keys.slice(0, keys.length - 1)\n\n const innerCollMeta = butLastKeys.reduce(\n (result: CollMeta, key) => {\n const resultColl = result.coll\n\n let newResultColl: Coll\n if (Array.isArray(resultColl)) {\n assertNumber(key, sourceCodeInfo)\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n else {\n assertObj(resultColl, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result.coll, key))\n resultColl[key] = {}\n\n newResultColl = asColl(resultColl[key], sourceCodeInfo)\n }\n\n return { coll: newResultColl, parent: resultColl }\n },\n { coll, parent: {} },\n )\n return { coll, innerCollMeta }\n}\n\nfunction get(coll: Coll, key: string | number): Any | undefined {\n if (isObj(coll)) {\n if (typeof key === 'string' && collHasKey(coll, key))\n return toAny(coll[key])\n }\n else {\n if (isNumber(key, { nonNegative: true, integer: true }) && key >= 0 && key < coll.length)\n return toAny(coll[key])\n }\n return undefined\n}\n\nfunction update(\n coll: Coll,\n key: string | number,\n fn: LitsFunction,\n params: Arr,\n contextStack: ContextStack,\n executeFunction: ExecuteFunction,\n sourceCodeInfo?: SourceCodeInfo,\n): Coll {\n if (isObj(coll)) {\n assertString(key, sourceCodeInfo)\n const result = { ...coll }\n result[key] = executeFunction(fn, [result[key], ...params], contextStack, sourceCodeInfo)\n return result\n }\n else {\n assertNumber(key, sourceCodeInfo)\n const intKey = toNonNegativeInteger(key)\n assertNumber(intKey, sourceCodeInfo, { lte: coll.length })\n if (Array.isArray(coll)) {\n const result = coll.map((elem, index) => {\n if (intKey === index)\n return executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo)\n\n return elem\n })\n if (intKey === coll.length)\n result[intKey] = executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo)\n\n return result\n }\n else {\n const result = coll.split('').map((elem, index) => {\n if (intKey === index) {\n return asString(executeFunction(fn, [elem, ...params], contextStack, sourceCodeInfo), sourceCodeInfo, {\n char: true,\n })\n }\n return elem\n })\n if (intKey === coll.length) {\n result[intKey] = asString(\n executeFunction(fn, [undefined, ...params], contextStack, sourceCodeInfo),\n sourceCodeInfo,\n {\n char: true,\n },\n )\n }\n return result.join('')\n }\n }\n}\n\nfunction assoc(coll: Coll, key: string | number, value: Any, sourceCodeInfo?: SourceCodeInfo) {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n if (Array.isArray(coll) || typeof coll === 'string') {\n assertNumber(key, sourceCodeInfo, { integer: true })\n assertNumber(key, sourceCodeInfo, { gte: 0 })\n assertNumber(key, sourceCodeInfo, { lte: coll.length })\n if (typeof coll === 'string') {\n assertString(value, sourceCodeInfo, { char: true })\n return `${coll.slice(0, key)}${value}${coll.slice(key + 1)}`\n }\n const copy = [...coll]\n copy[key] = value\n return copy\n }\n assertString(key, sourceCodeInfo)\n const copy = { ...coll }\n copy[key] = value\n return copy\n}\n\nexport const collectionNormalExpression: BuiltinNormalExpressions = {\n 'get': {\n evaluate: (params, sourceCodeInfo) => {\n const [coll, key] = params\n const defaultValue = toAny(params[2])\n assertStringOrNumber(key, sourceCodeInfo)\n if (coll === null)\n return defaultValue\n\n assertColl(coll, sourceCodeInfo)\n const result = get(coll, key)\n return result === undefined ? defaultValue : result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'get-in': {\n evaluate: (params, sourceCodeInfo): Any => {\n let coll = toAny(params[0])\n const keys = params[1] ?? [] // null behaves as empty array\n const defaultValue = toAny(params[2])\n assertArray(keys, sourceCodeInfo)\n for (const key of keys) {\n assertStringOrNumber(key, sourceCodeInfo)\n if (isColl(coll)) {\n const nextValue = get(coll, key)\n if (nextValue !== undefined)\n coll = nextValue\n else\n return defaultValue\n }\n else {\n return defaultValue\n }\n }\n return coll\n },\n paramCount: { min: 2, max: 3 },\n },\n 'count': {\n evaluate: ([coll], sourceCodeInfo): number => {\n if (coll === null)\n return 0\n\n if (typeof coll === 'string')\n return coll.length\n\n assertColl(coll, sourceCodeInfo)\n if (Array.isArray(coll))\n return coll.length\n\n return Object.keys(coll).length\n },\n paramCount: 1,\n },\n 'contains?': {\n evaluate: ([coll, key], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (isString(coll)) {\n assertString(key, sourceCodeInfo)\n return coll.includes(key)\n }\n if (isSeq(coll)) {\n assertAny(key, sourceCodeInfo)\n return !!coll.find(elem => deepEqual(asAny(elem), key, sourceCodeInfo))\n }\n assertString(key, sourceCodeInfo)\n return key in coll\n },\n paramCount: 2,\n },\n 'assoc': {\n evaluate: ([coll, key, value], sourceCodeInfo): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n return assoc(coll, key, value, sourceCodeInfo)\n },\n paramCount: 3,\n },\n 'assoc-in': {\n evaluate: ([originalColl, keys, value], sourceCodeInfo): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertAny(value, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return assoc(originalColl, keys[0], value, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = assoc(innerCollMeta.coll, lastKey, value, sourceCodeInfo)\n }\n\n return coll\n },\n paramCount: 3,\n },\n 'update': {\n evaluate: ([coll, key, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(coll, sourceCodeInfo)\n assertStringOrNumber(key, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return update(coll, key, fn, params, contextStack, executeFunction, sourceCodeInfo)\n },\n paramCount: { min: 3 },\n },\n 'update-in': {\n evaluate: ([originalColl, keys, fn, ...params], sourceCodeInfo, contextStack, { executeFunction }): Coll => {\n assertColl(originalColl, sourceCodeInfo)\n assertArray(keys, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (keys.length === 1) {\n assertStringOrNumber(keys[0], sourceCodeInfo)\n return update(originalColl, keys[0], fn, params, contextStack, executeFunction, sourceCodeInfo)\n }\n\n const { coll, innerCollMeta } = cloneAndGetMeta(originalColl, keys, sourceCodeInfo)\n\n const lastKey = asStringOrNumber(keys[keys.length - 1], sourceCodeInfo)\n const parentKey = asStringOrNumber(keys[keys.length - 2], sourceCodeInfo)\n\n if (Array.isArray(innerCollMeta.parent)) {\n assertNumber(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n else {\n assertString(parentKey, sourceCodeInfo)\n innerCollMeta.parent[parentKey] = update(\n innerCollMeta.coll,\n lastKey,\n fn,\n params,\n contextStack,\n executeFunction,\n sourceCodeInfo,\n )\n }\n\n return coll\n },\n paramCount: { min: 3 },\n },\n '++': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (!isNumber(params[0])) {\n assertColl(params[0], sourceCodeInfo)\n }\n if (Array.isArray(params[0])) {\n return params.reduce((result: Arr, arr) => {\n assertArray(arr, sourceCodeInfo)\n return result.concat(arr)\n }, [])\n }\n else if (isStringOrNumber(params[0])) {\n return params.reduce((result: string, s) => {\n assertStringOrNumber(s, sourceCodeInfo)\n return `${result}${s}`\n }, '')\n }\n else {\n return params.reduce((result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return Object.assign(result, obj)\n }, {})\n }\n },\n paramCount: { min: 1 },\n aliases: ['concat'],\n },\n 'not-empty': {\n evaluate: ([coll], sourceCodeInfo): Coll | null => {\n if (coll === null)\n return null\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0 ? coll : null\n\n if (Array.isArray(coll))\n return coll.length > 0 ? coll : null\n\n return Object.keys(coll).length > 0 ? coll : null\n },\n paramCount: 1,\n },\n 'every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertColl(coll, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-any?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).some(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n 'not-every?': {\n evaluate: ([coll, fn], sourceCodeInfo, contextStack, { executeFunction }): boolean => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertColl(coll, sourceCodeInfo)\n\n if (Array.isArray(coll))\n return !coll.every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n if (typeof coll === 'string')\n return !coll.split('').every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return !Object.entries(coll).every(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n },\n paramCount: 2,\n },\n}\n","import type { Arr } from '../../../interface'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\n\nexport const arrayNormalExpression: BuiltinNormalExpressions = {\n range: {\n evaluate: (params, sourceCodeInfo): Arr => {\n const [first, second, third] = params\n let from: number\n let to: number\n let step: number\n assertNumber(first, sourceCodeInfo, { finite: true })\n\n if (params.length === 1) {\n from = 0\n to = first\n step = to >= 0 ? 1 : -1\n }\n else if (params.length === 2) {\n assertNumber(second, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = to >= from ? 1 : -1\n }\n else {\n assertNumber(second, sourceCodeInfo, { finite: true })\n assertNumber(third, sourceCodeInfo, { finite: true })\n from = first\n to = second\n step = third\n if (to > from)\n assertNumber(step, sourceCodeInfo, { positive: true })\n else if (to < from)\n assertNumber(step, sourceCodeInfo, { negative: true })\n else\n assertNumber(step, sourceCodeInfo, { nonZero: true })\n }\n\n const result: number[] = []\n\n for (let i = from; step < 0 ? i > to : i < to; i += step)\n result.push(i)\n\n return result\n },\n paramCount: { min: 1, max: 3 },\n },\n\n repeat: {\n evaluate: ([value, count], sourceCodeInfo): Arr => {\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const result: Arr = []\n for (let i = 0; i < count; i += 1)\n result.push(value)\n\n return result\n },\n paramCount: 2,\n },\n\n flatten: {\n evaluate: ([seq]): Arr => {\n if (!Array.isArray(seq))\n return []\n\n return seq.flat(Number.POSITIVE_INFINITY)\n },\n paramCount: 1,\n },\n mapcat: {\n evaluate: ([arr, fn], sourceCodeInfo, contextStack, { executeFunction }): Arr | string => {\n assertArray(arr, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n return arr.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)).flat(1)\n },\n paramCount: 2,\n },\n}\n","import type { Any, Arr, Obj, Seq } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asArray, assertArray, assertCharArray } from '../../../typeGuards/array'\nimport { asAny, asSeq, assertAny, assertSeq } from '../../../typeGuards/lits'\nimport { asLitsFunction, assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { collHasKey, compare, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: (params, sourceCodeInfo, contextStack, { executeFunction }) => {\n const fn = asLitsFunction(params.at(-1))\n const seqs = params.slice(0, -1) as Seq[]\n assertSeq(seqs[0], sourceCodeInfo)\n const isString = typeof seqs[0] === 'string'\n let len = seqs[0].length\n seqs.slice(1).forEach((seq) => {\n if (isString) {\n assertString(seq, sourceCodeInfo)\n }\n else {\n assertArray(seq, sourceCodeInfo)\n }\n len = Math.min(len, seq.length)\n })\n\n const paramArray: unknown[][] = []\n for (let i = 0; i < len; i++) {\n paramArray.push(seqs.map(seq => seq[i]))\n }\n\n const mapped = paramArray.map(p => executeFunction(fn, p, contextStack, sourceCodeInfo))\n\n if (!isString) {\n return mapped\n }\n mapped.forEach(char => assertString(char, sourceCodeInfo))\n return mapped.join('')\n },\n paramCount: { min: 2 },\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last-index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findLastIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'splice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, start, deleteCount, ...rest] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { integer: true })\n assertNumber(deleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const from = start < 0 ? seq.length + start : start\n\n if (Array.isArray(seq)) {\n return [...seq.slice(0, from), ...rest, ...seq.slice(from + deleteCount)]\n }\n\n rest.forEach(elem => assertString(elem, sourceCodeInfo))\n return `${seq.substring(0, from)}${rest.join('')}${seq.substring(from + deleteCount)}`\n },\n paramCount: { min: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n\n if (Array.isArray(input)) {\n const result: Any[] = []\n for (const item of input) {\n assertAny(item, sourceCodeInfo)\n if (!result.some(existingItem => deepEqual(existingItem, item, sourceCodeInfo))) {\n result.push(item)\n }\n }\n return result\n }\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove-at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo, { integer: true })\n assertSeq(input, sourceCodeInfo)\n\n const at = index < 0 ? input.length + index : index\n if (at < 0 || at >= input.length)\n return input\n\n if (Array.isArray(input)) {\n return input.filter((_, i) => i !== at)\n }\n return `${input.substring(0, at)}${input.substring(at + 1)}`\n },\n paramCount: 2,\n },\n 'split-at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { integer: true })\n assertSeq(seq, sourceCodeInfo)\n\n const at = pos < 0 ? seq.length + pos : pos\n return [seq.slice(0, at), seq.slice(at)]\n },\n paramCount: 2,\n },\n\n 'split-with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends-with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return deepEqual(asAny(str.at(-1), sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'starts-with?': {\n evaluate: ([seq, search], sourceCodeInfo): boolean => {\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n assertString(search, sourceCodeInfo)\n return seq.startsWith(search)\n }\n\n return deepEqual(asAny(seq[0], sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n return seq.split('')\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n aliases: ['rem'],\n },\n\n '√': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n aliases: ['sqrt'],\n },\n\n '∛': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n aliases: ['cbrt'],\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '=': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n aliases: ['!='],\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '≥': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['>='],\n },\n '≤': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['<='],\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first, null, 2)} to deep equal ${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be null.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split-lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/types'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Partial',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n }\n },\n paramCount: {},\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n 'juxt': {\n evaluate: (params, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Juxt',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Complement',\n function: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n 'every-pred': {\n evaluate: (params, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'EveryPred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'some-pred': {\n evaluate: (params, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'SomePred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'fnull': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNullFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Fnull',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nconst expressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n\nconst aliases: BuiltinNormalExpressions = {}\n\nObject.values(expressions).forEach((normalExpression) => {\n normalExpression.aliases?.forEach((alias) => {\n aliases[alias] = normalExpression\n })\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n ...aliases,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = true\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (!value)\n break\n }\n return value\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import { 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 { 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","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","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 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 { 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 type { Argument } from '.'\n\nexport const api = {\n collection: [\n 'count',\n 'get',\n 'get-in',\n 'contains?',\n 'assoc',\n 'assoc-in',\n '++',\n 'not-empty',\n 'every?',\n 'not-every?',\n 'any?',\n 'not-any?',\n 'update',\n 'update-in',\n ] as const,\n array: [\n 'range',\n 'repeat',\n 'flatten',\n 'mapcat',\n ] as const,\n sequence: [\n 'nth',\n 'push',\n 'pop',\n 'unshift',\n 'shift',\n 'slice',\n 'splice',\n 'reductions',\n 'reduce',\n 'reduce-right',\n 'map',\n 'filter',\n 'position',\n 'index-of',\n 'last-index-of',\n 'some',\n 'reverse',\n 'first',\n 'second',\n 'last',\n 'rest',\n 'next',\n 'take',\n 'take-last',\n 'take-while',\n 'drop',\n 'drop-last',\n 'drop-while',\n 'sort',\n 'sort-by',\n 'distinct',\n 'remove',\n 'remove-at',\n 'split-at',\n 'split-with',\n 'frequencies',\n 'group-by',\n 'partition',\n 'partition-all',\n 'partition-by',\n 'starts-with?',\n 'ends-with?',\n 'interleave',\n 'interpose',\n ] as const,\n math: [\n '+',\n '-',\n '*',\n '/',\n 'mod',\n '%',\n 'quot',\n 'inc',\n 'dec',\n '√',\n '∛',\n '**',\n 'round',\n 'trunc',\n 'floor',\n 'ceil',\n 'min',\n 'max',\n 'abs',\n 'sign',\n 'log',\n 'log2',\n 'log10',\n 'sin',\n 'cos',\n 'tan',\n 'asin',\n 'acos',\n 'atan',\n 'sinh',\n 'cosh',\n 'tanh',\n 'asinh',\n 'acosh',\n 'atanh',\n ] as const,\n functional: [\n 'apply',\n 'identity',\n 'partial',\n 'comp',\n 'constantly',\n 'juxt',\n 'complement',\n 'every-pred',\n 'some-pred',\n 'fnull',\n ] as const,\n misc: [\n '≠',\n '=',\n '<',\n '>',\n '≤',\n '≥',\n '!',\n 'write!',\n 'iso-date->epoch',\n 'epoch->iso-date',\n 'boolean',\n 'compare',\n 'identical?',\n 'json-parse',\n 'json-stringify',\n ] as const,\n object: [\n 'dissoc',\n 'keys',\n 'vals',\n 'entries',\n 'find',\n 'merge',\n 'merge-with',\n 'zipmap',\n 'select-keys',\n ] as const,\n predicate: [\n 'boolean?',\n 'null?',\n 'number?',\n 'string?',\n 'function?',\n 'integer?',\n 'array?',\n 'object?',\n 'coll?',\n 'seq?',\n 'regexp?',\n 'zero?',\n 'pos?',\n 'neg?',\n 'even?',\n 'odd?',\n 'finite?',\n 'nan?',\n 'negative-infinity?',\n 'positive-infinity?',\n 'false?',\n 'true?',\n 'empty?',\n 'not-empty?',\n ] as const,\n regularExpression: [\n 'regexp',\n 'match',\n 'replace',\n 'replace-all',\n ] as const,\n string: [\n 'string-repeat',\n 'str',\n 'number',\n 'lower-case',\n 'upper-case',\n 'trim',\n 'trim-left',\n 'trim-right',\n 'pad-left',\n 'pad-right',\n 'split',\n 'split-lines',\n 'template',\n 'to-char-code',\n 'from-char-code',\n 'encode-base64',\n 'decode-base64',\n 'encode-uri-component',\n 'decode-uri-component',\n 'join',\n 'capitalize',\n 'blank?',\n ] as const,\n bitwise: [\n '<<',\n '>>',\n '>>>',\n '~',\n '&',\n 'bit-and-not',\n '|',\n '^',\n 'bit-flip',\n 'bit-clear',\n 'bit-set',\n 'bit-test',\n ] as const,\n // TODO, remove some, add some. E.g. type guards, assert-number, assert-string, etc.\n assert: [\n 'assert',\n 'assert=',\n 'assert!=',\n 'assert-gt',\n 'assert-lt',\n 'assert-gte',\n 'assert-lte',\n 'assert-true',\n 'assert-false',\n 'assert-truthy',\n 'assert-falsy',\n 'assert-null',\n 'assert-throws',\n 'assert-throws-error',\n 'assert-not-throws',\n ] as const,\n shorthand: [\n '-short-regexp',\n '-short-fn',\n ] as const satisfies `-short-${string}`[],\n datatype: [\n '-type-number',\n '-type-string',\n '-type-object',\n '-type-array',\n '-type-boolean',\n '-type-function',\n '-type-integer',\n '-type-any',\n '-type-null',\n '-type-collection',\n '-type-sequence',\n '-type-regexp',\n '-type-never',\n ] as const satisfies `-type-${string}`[],\n} as const\n\nexport type CollectionApiName = typeof api.collection[number]\nexport type ArrayApiName = typeof api.array[number]\nexport type SequenceApiName = typeof api.sequence[number]\nexport type MathApiName = typeof api.math[number]\nexport type FunctionalApiName = typeof api.functional[number]\nexport type MiscApiName = typeof api.misc[number]\nexport type ObjectApiName = typeof api.object[number]\nexport type PredicateApiName = typeof api.predicate[number]\nexport type RegularExpressionApiName = typeof api.regularExpression[number]\nexport type SpecialExpressionsApiName = string\nexport type StringApiName = typeof api.string[number]\nexport type BitwiseApiName = typeof api.bitwise[number]\nexport type AssertApiName = typeof api.assert[number]\n\nexport type NormalExpressionName =\n | CollectionApiName\n | ArrayApiName\n | SequenceApiName\n | MathApiName\n | FunctionalApiName\n | MiscApiName\n | ObjectApiName\n | PredicateApiName\n | RegularExpressionApiName\n | StringApiName\n | BitwiseApiName\n | AssertApiName\n\nexport type FunctionName =\n | NormalExpressionName\n | SpecialExpressionsApiName\n\nexport type ShorthandName = typeof api.shorthand[number]\n\nexport type DatatypeName = typeof api.datatype[number]\n\nconst apiFunctionNames = [\n ...api.collection,\n ...api.array,\n ...api.sequence,\n ...api.math,\n ...api.functional,\n ...api.misc,\n ...api.object,\n ...api.predicate,\n ...api.regularExpression,\n ...api.string,\n ...api.bitwise,\n ...api.assert,\n] as const\n\nconst apiNames = [\n ...apiFunctionNames,\n ...api.shorthand,\n ...api.datatype,\n] as const\n\nexport type ApiName = typeof apiNames[number]\n\nexport function isApiName(arg: string): arg is ApiName {\n return apiNames.includes(arg as ApiName)\n}\n\nexport const categoryRecord = {\n 'Special expression': true,\n 'Predicate': true,\n 'Sequence': true,\n 'Collection': true,\n 'Array': true,\n 'Object': true,\n 'String': true,\n 'Math': true,\n 'Functional': true,\n 'Regular expression': true,\n 'Bitwise': true,\n 'Misc': true,\n 'Assert': true,\n 'Shorthand': true,\n 'Datatype': true,\n} as const\n\nexport type Category = keyof typeof categoryRecord\n\nexport const categories = Object.keys(categoryRecord) as Category[]\n\nconst dataTypes = [\n 'number',\n 'string',\n 'object',\n 'array',\n 'boolean',\n 'function',\n 'integer',\n 'any',\n 'null',\n 'collection',\n 'sequence',\n 'regexp',\n 'never',\n] as const\nexport type DataType = typeof dataTypes[number]\n\nexport function isDataType(arg: string): arg is DataType {\n return dataTypes.includes(arg as DataType)\n}\n\nexport function getOperatorArgs(a: DataType | DataType[], b: DataType | DataType[]): Record<string, Argument> {\n return { a: { type: a }, b: { type: b } }\n}\n","import { type ArrayApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const arrayReference: Record<ArrayApiName, FunctionReference<'Array'>> = {\n range: {\n title: 'range',\n category: 'Array',\n linkName: 'range',\n returns: {\n type: 'number',\n array: true,\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n step: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['b'] },\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'step'] },\n ],\n description: `$range creates an array with a range of numbers from $a to $b (exclusive), by $step.\n\n$a defaults to 0. \n$step defaults to 1.`,\n examples: [\n 'range(4)',\n 'range(1, 4)',\n '1 range 10',\n 'range(0.4, 4.9)',\n `\nrange(\n 0.25, // start value\n 1, // end value (exclusive)\n 0.25, // step value\n)`,\n ],\n },\n repeat: {\n title: 'repeat',\n category: 'Array',\n linkName: 'repeat',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('any', 'integer'),\n },\n variants: [{\n argumentNames: ['a', 'b'],\n }],\n description: 'Returns an array with $a repeated $b times.',\n examples: [\n 'repeat(10, 3)',\n 'repeat(10, 0)',\n '\"Albert\" repeat 5',\n ],\n },\n flatten: {\n title: 'flatten',\n category: 'Array',\n linkName: 'flatten',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n x: {\n type: ['array', 'any'],\n description: 'If $x is not an array, `[ ]` is returned.',\n },\n },\n variants: [{\n argumentNames: ['x'],\n }],\n description: 'Takes a nested array $x and flattens it.',\n examples: [\n 'flatten([1, 2, [3, 4], 5])',\n `\nlet foo := \"bar\";\nflatten([\n 1,\n \" 2 A \",\n [foo, [4, [\"ABC\"]]],\n 6,\n])`,\n\n 'flatten(12)',\n ],\n noOperatorDocumentation: true,\n },\n mapcat: {\n title: 'mapcat',\n category: 'Array',\n linkName: 'mapcat',\n returns: {\n type: 'collection',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n colls: {\n type: 'collection',\n array: true,\n },\n fun: {\n type: 'function',\n },\n },\n variants: [{\n argumentNames: ['colls', 'fun'],\n }],\n description: 'Returns the result of applying concat to the result of applying map to $fun and $colls.',\n examples: [\n '[[3, 2, 1, 0], [6, 5, 4], [9, 8, 7]] mapcat reverse',\n 'mapcat([[3, 2, 1, 0], [6, 5, 4], [9, 8, 7]], reverse)',\n '[[3, 2, 1, 0,], [6, 5, 4,], [9, 8, 7]] mapcat reverse',\n `\nfunction foo(n)\n [n - 1, n, n + 1]\nend;\n[1, 2, 3] mapcat foo`,\n `\nmapcat(\n [[1, 2], [2, 2], [2, 3]],\n -> $ remove even?\n)`,\n ],\n },\n}\n","import { type AssertApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const assertReference: Record<AssertApiName, FunctionReference<'Assert'>> = {\n 'assert': {\n title: 'assert',\n category: 'Assert',\n linkName: 'assert',\n returns: {\n type: 'any',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is falsy it throws `AssertionError` with $message. If no $message is provided, message is set to $value.',\n examples: ['try assert(0, \"Expected a positive value\") catch (e) e.message end'],\n noOperatorDocumentation: true,\n },\n 'assert!=': {\n title: 'assert!=',\n category: 'Assert',\n linkName: 'assert-exclamation-equal',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is the same as $b it throws `AssertionError`.',\n examples: [\n 'try assert!=(0, 0, \"Expected different values\") catch (e) e.message end',\n 'try assert!=(0, 0) catch (e) e.message end',\n 'try 0 assert!= 0 catch (e) e.message end',\n 'try assert!=(0, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert=': {\n title: 'assert=',\n category: 'Assert',\n linkName: 'assert-equal',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not structural equal to $b it throws `AssertionError`.',\n examples: [\n 'try assert=({ \"a\" := 1 }, { \"a\" := 2 }, \"Expected equal values\") catch (e) e.message end',\n 'try assert=({ \"a\" := 1 }, { \"a\" := 2 }) catch (e) e.message end',\n 'try assert=({ \"a\" := 1 }, { \"a\" := 1 }) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-gt': {\n title: 'assert-gt',\n category: 'Assert',\n linkName: 'assert-gt',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not greater than $b it throws `AssertionError`.',\n examples: [\n 'try assert-gt(0, 1, \"Expected greater value\") catch (e) e.message end',\n 'try assert-gt(0, 0) catch (e) e.message end',\n 'try assert-gt(1, 0) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-lt': {\n title: 'assert-lt',\n category: 'Assert',\n linkName: 'assert-lt',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is not less than $b it throws `AssertionError`.',\n examples: [\n 'try assert-lte(1, 0, \"Expected smaller value value\") catch (e) e.message end',\n 'try assert-lte(1, 1) catch (e) e.message end',\n 'try assert-lte(0, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-gte': {\n title: 'assert-gte',\n category: 'Assert',\n linkName: 'assert-gte',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is less than $b it throws `AssertionError`.',\n examples: [\n 'try assert-gte(0, 1, \"Expected greater value\") catch (e) e.message end',\n 'try assert-gte(0, 1) catch (e) e.message end',\n 'try assert-gte(1, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-lte': {\n title: 'assert-lte',\n category: 'Assert',\n linkName: 'assert-lte',\n returns: {\n type: 'null',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'message'] },\n ],\n description: 'If $a is grater than $b it throws `AssertionError`.',\n examples: [\n 'try assert-lte(1, 0, \"Expected smaller value value\") catch (e) e.message end',\n 'try assert-lte(1, 0) catch (e) e.message end',\n 'try assert-lte(1, 1) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-true': {\n title: 'assert-true',\n category: 'Assert',\n linkName: 'assert-true',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `true` it throws `AssertionError`.',\n examples: [\n 'try assert-true(false, \"Expected true\") catch (e) e.message end',\n 'try assert-true(false) catch (e) e.message end',\n 'try assert-true(true) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-false': {\n title: 'assert-false',\n category: 'Assert',\n linkName: 'assert-false',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `false` it throws `AssertionError`.',\n examples: [\n 'try assert-false(true, \"Expected false\") catch (e) e.message end',\n 'try assert-false(true) catch (e) e.message end',\n 'try assert-false(false) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-truthy': {\n title: 'assert-truthy',\n category: 'Assert',\n linkName: 'assert-truthy',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `truthy` it throws `AssertionError`.',\n examples: [\n 'try assert-truthy(false, \"Expected truthy\") catch (e) e.message end',\n 'try assert-truthy(false) catch (e) e.message end',\n 'try assert-truthy(0) catch (e) e.message end',\n 'try assert-truthy(null) catch (e) e.message end',\n 'try assert-truthy(\"\") catch (e) e.message end',\n 'try assert-truthy(true) catch (e) e.message end',\n 'try assert-truthy(1) catch (e) e.message end',\n 'try assert-truthy(\"x\") catch (e) e.message end',\n 'try assert-truthy([]) catch (e) e.message end',\n 'try assert-truthy({}) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-falsy': {\n title: 'assert-falsy',\n category: 'Assert',\n linkName: 'assert-falsy',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `falsy` it throws `AssertionError`.',\n examples: [\n 'try assert-falsy(true, \"Expected falsy\") catch (e) e.message end',\n 'try assert-falsy(\"x\") catch (e) e.message end',\n 'try assert-falsy([]) catch (e) e.message end',\n 'try assert-falsy({}) catch (e) e.message end',\n 'try assert-falsy(1) catch (e) e.message end',\n 'try assert-falsy(false) catch (e) e.message end',\n 'try assert-falsy(0) catch (e) e.message end',\n 'try assert-falsy(null) catch (e) e.message end',\n 'try assert-falsy(\"\") catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-null': {\n title: 'assert-null',\n category: 'Assert',\n linkName: 'assert-null',\n returns: {\n type: 'null',\n },\n args: {\n value: {\n type: 'any',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value'] },\n { argumentNames: ['value', 'message'] },\n ],\n description: 'If $value is not `null` it throws `AssertionError`.',\n examples: [\n 'try assert-null(null) catch (e) e.message end',\n 'try assert-null(true, \"Expected null\") catch (e) e.message end',\n 'try assert-null(\"x\") catch (e) e.message end',\n 'try assert-null([]) catch (e) e.message end',\n 'try assert-null({}) catch (e) e.message end',\n 'try assert-null(1) catch (e) e.message end',\n 'try assert-null(false) catch (e) e.message end',\n 'try assert-null(0) catch (e) e.message end',\n 'try assert-null(\"\") catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-throws': {\n title: 'assert-throws',\n category: 'Assert',\n linkName: 'assert-throws',\n returns: {\n type: 'null',\n },\n args: {\n fun: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'message'] },\n ],\n description: 'If $fun does not throw, it throws `AssertionError`.',\n examples: [\n 'assert-throws(-> throw(\"Error\"))',\n 'try assert-throws(-> identity(\"Error\")) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-throws-error': {\n title: 'assert-throws-error',\n category: 'Assert',\n linkName: 'assert-throws-error',\n returns: {\n type: 'null',\n },\n args: {\n 'fun': {\n type: 'function',\n },\n 'error-message': {\n type: 'string',\n },\n 'message': {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['value', 'error-message'] },\n { argumentNames: ['value', 'error-message', 'message'] },\n ],\n description: 'If $fun does not throw $error-message, it throws `AssertionError`.',\n examples: [\n 'try assert-throws-error(-> throw(\"Error\"), \"Error\") catch (e) e.message end',\n 'try assert-throws-error(-> identity(\"Error\"), \"Error\") catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n 'assert-not-throws': {\n title: 'assert-not-throws',\n category: 'Assert',\n linkName: 'assert-not-throws',\n returns: {\n type: 'null',\n },\n args: {\n fun: {\n type: 'function',\n },\n message: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'message'] },\n ],\n description: 'If $fun throws, it throws `AssertionError`.',\n examples: [\n 'try assert-not-throws(-> identity(\"Error\")) catch (e) e.message end',\n 'try assert-not-throws(-> throw(\"Error\")) catch (e) e.message end',\n ],\n noOperatorDocumentation: true,\n },\n}\n","import { type BitwiseApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const bitwiseReference: Record<BitwiseApiName, FunctionReference<'Bitwise'>> = {\n '<<': {\n title: '<<',\n category: 'Bitwise',\n linkName: '-lt-lt',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Shifts $a arithmetically left by $b bit positions.',\n examples: [\n '1 << 10',\n '<<(1, 10)',\n '<<(-4, 2)',\n ],\n },\n '>>': {\n title: '>>',\n category: 'Bitwise',\n linkName: '-gt-gt',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Shifts $a arithmetically right by $b bit positions.',\n examples: [\n '2048 >> 10',\n '>>(2048, 10)',\n '>>>(-16, 2)',\n '>>(4, 10)',\n ],\n },\n '>>>': {\n title: '>>>',\n category: 'Bitwise',\n linkName: '-gt-gt-gt',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Shifts $a arithmetically right by $b bit positions without sign extension.',\n examples: [\n '-16 >>> 2',\n '>>>(2048, 10)',\n '>>>(-16, 2)',\n '>>>(4, 10)',\n '>>>(-1, 10)',\n ],\n },\n '~': {\n title: '~',\n category: 'Bitwise',\n linkName: '-tilde',\n returns: {\n type: 'integer',\n },\n args: {\n a: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['a'] },\n ],\n description: 'Returns bitwise `not` of $a.',\n examples: [\n '~(0)',\n '~(255)',\n ],\n },\n '&': {\n title: '&',\n category: 'Bitwise',\n linkName: '-and',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `and` of all arguments.',\n examples: [\n '0b0011 & 0b0110',\n '&(0b0011, 0b0110)',\n '&(0b0011, 0b0110, 0b1001)',\n ],\n },\n 'bit-and-not': {\n title: 'bit-and-not',\n category: 'Bitwise',\n linkName: 'bit-and-not',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `and` with complement.',\n examples: [\n '0b0011 bit-and-not 0b0110',\n 'bit-and-not(0b0011, 0b0110)',\n 'bit-and-not(0b0011, 0b0110, 0b1001)',\n ],\n },\n '|': {\n title: '|',\n category: 'Bitwise',\n linkName: '-or',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `or` of all arguments.',\n examples: [\n '0b0011 | 0b0110',\n '|(0b0011, 0b0110)',\n '|(0b1000, 0b0100, 0b0010)',\n ],\n },\n '^': {\n title: '^',\n category: 'Bitwise',\n linkName: '-caret',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n c: {\n type: 'integer',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: 'Returns bitwise `xor` of all arguments.',\n examples: [\n '0b0011 ^ 0b0110',\n '^(0b0011, 0b0110)',\n '^(0b11110000, 0b00111100, 0b10101010)',\n ],\n },\n 'bit-flip': {\n title: 'bit-flip',\n category: 'Bitwise',\n linkName: 'bit-flip',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Flips bit number $b.',\n examples: [\n '0b0011 bit-flip 1',\n 'bit-flip(0b0011, 1)',\n 'bit-flip(0b1100, 1)',\n ],\n },\n 'bit-clear': {\n title: 'bit-clear',\n category: 'Bitwise',\n linkName: 'bit-clear',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Clears bit number $b.',\n examples: [\n '0b0011 bit-clear 1',\n 'bit-clear(0b0011, 1)',\n 'bit-clear(0b1100, 1)',\n ],\n },\n 'bit-set': {\n title: 'bit-set',\n category: 'Bitwise',\n linkName: 'bit-set',\n returns: {\n type: 'integer',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Sets bit number $b.',\n examples: [\n '0b0010 bit-set 1',\n 'bit-set(0b0011, 1)',\n 'bit-set(0b1100, 1)',\n ],\n },\n 'bit-test': {\n title: 'bit-test',\n category: 'Bitwise',\n linkName: 'bit-test',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('integer', 'integer'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Checks if bit number $b is set.',\n examples: [\n '0b0011 bit-test 1',\n 'bit-test(0b0011, 1)',\n 'bit-test(0b1100, 1)',\n ],\n },\n}\n","import { type CollectionApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const collectionReference: Record<CollectionApiName, FunctionReference<'Collection'>> = {\n 'count': {\n title: 'count',\n category: 'Collection',\n linkName: 'count',\n returns: {\n type: 'number',\n },\n args: {\n coll: {\n type: ['collection', 'null'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns number of elements in $coll.',\n examples: [\n 'count([1, 2, 3])',\n 'count([])',\n 'count({ a := 1 })',\n 'count(\"\")',\n 'count(\"Albert\")',\n 'count(null)',\n ],\n },\n 'get': {\n title: 'get',\n category: 'Collection',\n linkName: 'get',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('collection', ['string', 'integer']),\n 'not-found': {\n type: 'any',\n description: 'Default value to return if $b is not found.',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'not-found'] },\n ],\n description: 'Returns value in $a mapped at $b.',\n examples: [\n '[1, 2, 3] get 1',\n '{ a := 1 } get \"a\"',\n '\"Albert\" get \"3\"',\n `\nget(\n [1, 2, 3],\n 1, // Optional comma after last argument\n)`,\n `\nget(\n [],\n 1\n)`,\n `\nget(\n [],\n 1,\n \"default\"\n)`,\n `\nget(\n { a := 1 },\n \"a\"\n)`,\n `\nget(\n { a := 1 },\n \"b\"\n)`,\n `\nget(\n { a := 1 },\n \"b\",\n \"default\"\n)`,\n `\nget(\n null,\n \"a\"\n)`,\n `\nget(\n null,\n \"b\",\n \"default\"\n)`,\n ],\n },\n 'get-in': {\n title: 'get-in',\n category: 'Collection',\n linkName: 'get-in',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('collection', 'array'),\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'not-found'] },\n ],\n description: 'Returns the value in a nested collection, where $b is an array of keys. Returns $not-found if the key is not present. If $not-found is not set, `null` is returned.',\n examples: [\n `\nget-in(\n [[1, 2, 3], [4, { a := \"Kalle\" }, 6]],\n [1, 1, \"a\", 0]\n)`,\n `\nget-in(\n [[1, 2, 3], [4, { a := \"Kalle\" }, 6]],\n [1, 1, \"b\", 0]\n)`,\n `\nget-in(\n [[1, 2, 3], [4, { a := \"Kalle\" }, 6]],\n [1, 1, \"b\", 0],\n \"Lisa\"\n)`,\n ],\n },\n 'contains?': {\n title: 'contains?',\n category: 'Collection',\n linkName: 'contains-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['collection', 'null'], ['string', 'integer']),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if $a contains $b, otherwise returns `false`. For strings, it checks if substring is included.',\n examples: [\n '[1, 2, 3] contains? 1',\n 'null contains? 1',\n '{ a := 1, b := 2 } contains? \"a\"',\n `\ncontains?(\n [],\n 1\n)`,\n `\ncontains?(\n [1],\n 1\n)`,\n `\ncontains?(\n [1, 2, 3],\n 1\n)`,\n `\ncontains?(\n {},\n \"a\"\n)`,\n `\ncontains?(\n { a := 1, b := 2 },\n \"a\"\n)`,\n ],\n },\n 'assoc': {\n title: 'assoc',\n category: 'Collection',\n linkName: 'assoc',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n key: {\n type: ['string', 'number'],\n },\n value: {\n type: 'any',\n },\n kvs: {\n type: 'any',\n description: 'Key-value pairs to associate.',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'key', 'value'] },\n { argumentNames: ['coll', 'key', 'value', 'kvs'] },\n ],\n description: `\nAdd or replace the value of element $key to $value in $coll. Repeated for all key-value pairs in $kvs. \nIf $coll is an \\'array\\', $key must be \\`number\\` satisfying \\`0 <=\\` $key \\`<= length\\`.`,\n examples: [\n `\nassoc(\n [1, 2, 3],\n 1,\n \"Two\"\n)`,\n `\nassoc(\n [1, 2, 3],\n 3,\n \"Four\"\n)`,\n `\nassoc(\n { a := 1, b := 2 },\n \"a\",\n \"One\")`,\n `\nassoc(\n { a := 1, b := 2 },\n \"c\",\n \"Three\")`,\n `\nassoc(\n \"Albert\",\n 6,\n \"a\")`,\n ],\n },\n 'assoc-in': {\n title: 'assoc-in',\n category: 'Collection',\n linkName: 'assoc-in',\n returns: {\n type: 'collection',\n },\n args: {\n coll: {\n type: 'collection',\n },\n ks: {\n type: ['number', 'string'],\n array: true,\n },\n value: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['coll', 'ks', 'value'] },\n ],\n description: `\nAssociates a value in the nested collection $coll, where $ks is an array of keys and $value is the new value.\n\nIf any levels do not exist, objects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\nassoc-in(\n {},\n [\"a\", \"b\", \"c\"],\n \"Albert\"\n)`,\n `\nassoc-in(\n [1, 2, [1, 2, 3]],\n [2, 1],\n \"Albert\"\n)`,\n `\nassoc-in(\n [1, 2, { name := \"albert\" }],\n [2, \"name\", 0],\n \"A\"\n)`,\n ],\n },\n '++': {\n title: '++',\n category: 'Collection',\n linkName: '-plus-plus',\n returns: {\n type: 'collection',\n },\n args: {\n ...getOperatorArgs('collection', 'collection'),\n colls: {\n type: 'collection',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a'] },\n { argumentNames: ['a', 'colls'] },\n ],\n description: 'Concatenates collections into one collection.',\n examples: [\n '\"Albert\" ++ \" \" ++ \"Mojir\"',\n '\"Albert\" ++ \"Mojir\"',\n\n '\"Hi \" concat \"Albert\"',\n '[1, 2] concat [3, 4]',\n\n '++(\"Albert\", \"-\", \"Mojir\")',\n '++(\"Albert\")',\n\n 'concat(\"A\", \"l\", \"b\", \"e\", \"r\", \"t\")',\n 'concat([1, 2], [3, 4])',\n 'concat([], [3, 4])',\n 'concat([1, 2], [])',\n 'concat([1, 2], [3, 4], [5, 6])',\n 'concat([])',\n 'concat({ a := 1, b := 2 }, { b := 1, c := 2 })',\n 'concat({}, { a := 1 })',\n ],\n aliases: ['concat'],\n },\n 'not-empty': {\n title: 'not-empty',\n category: 'Collection',\n linkName: 'not-empty',\n returns: {\n type: 'boolean',\n },\n args: {\n coll: {\n type: ['collection', 'null'],\n },\n },\n variants: [\n { argumentNames: ['coll'] },\n ],\n description: 'Returns `null` if $coll is empty or `null`, otherwise $coll.',\n examples: [\n 'not-empty([])',\n 'not-empty([1, 2, 3])',\n 'not-empty({})',\n 'not-empty({ a := 2 })',\n 'not-empty(\"\")',\n 'not-empty(\"Albert\")',\n 'not-empty(null)',\n ],\n },\n 'every?': {\n title: 'every?',\n category: 'Collection',\n linkName: 'every-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if all entries in $a pass the test implemented by $b, otherwise returns `false`.',\n examples: [\n '[1, 2, 3] every? number?',\n '[1, 2, 3] every? even?',\n `\nevery?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?,\n)`,\n `\nevery?(\n [50, 100, 150, 200],\n -> $ > 10,\n)`,\n `\nevery?(\n [],\n number?\n)`,\n `\nevery?(\n \"\",\n number?\n)`,\n `\nevery?(\n {},\n number?\n)`,\n `\nevery?(\n { a := 2, b := 4},\n -> even?(second($))\n)`,\n `\nevery?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'not-every?': {\n title: 'not-every?',\n category: 'Collection',\n linkName: 'not-every-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if at least one element in $a does not pass the test implemented by $b, otherwise returns `false`.',\n examples: [\n `\nnot-every?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nnot-every?(\n [50, 100, 150, 200],\n x -> x > 10\n)`,\n `\nnot-every?(\n [],\n number?\n)`,\n `\nnot-every?(\n \"\",\n number?\n)`,\n `\nnot-every?(\n {},\n number?\n)`,\n `\nnot-every?(\n { a := 2, b := 4 },\n -> even?(second($))\n)`,\n `\nnot-every?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'any?': {\n title: 'any?',\n category: 'Collection',\n linkName: 'any-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `true` if any element in $a pass the test implemented by $b, otherwise returns `false`.',\n examples: [\n `\nany?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nany?(\n [50, 100, 150, 200],\n x -> x > 10\n)`,\n `\nany?(\n [],\n number?\n)`,\n `\nany?(\n \"\",\n number?\n)`,\n `\nany?(\n {},\n number?\n)`,\n `\nany?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n `\nany?(\n { a := 1, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'not-any?': {\n title: 'not-any?',\n category: 'Collection',\n linkName: 'not-any-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('collection', 'function'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns `false` if any element in $a pass the test implemented by $b, otherwise returns `true`.',\n examples: [\n `\nnot-any?(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nnot-any?(\n [50, 100, 150, 200],\n x -> x > 10\n)`,\n `\nnot-any?(\n [],\n number?\n)`,\n `\nnot-any?(\n \"\",\n number?\n)`,\n `\nnot-any?(\n {},\n number?\n)`,\n `\nnot-any?(\n { a := 2, b := 3 },\n -> even?(second($))\n)`,\n `\nnot-any?(\n { a := 1, b := 3 },\n -> even?(second($))\n)`,\n ],\n },\n 'update': {\n title: 'update',\n category: 'Collection',\n linkName: 'update',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'key': {\n type: ['string', 'number'],\n },\n 'fun': {\n type: 'function',\n },\n 'fun-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'value', 'fun'] },\n { argumentNames: ['coll', 'value', 'fun', 'fun-args'] },\n ],\n description: `\nUpdates a value in the $coll collection, where $key is a key. $fun is a function\nthat will take the old value and any supplied $fun-args and\nreturn the new value.\nIf the key does not exist, \\`null\\` is passed as the old value.`,\n examples: [\n `\nlet x := { a := 1, b := 2 };\nupdate(x, \"a\", inc)`,\n `\nlet x := { a := 1, b := 2 };\nupdate(\n x,\n \"c\",\n val -> if null?(val) then 0 else inc(val) end\n)`,\n ],\n },\n 'update-in': {\n title: 'update-in',\n category: 'Collection',\n linkName: 'update-in',\n returns: {\n type: 'collection',\n },\n args: {\n 'coll': {\n type: 'collection',\n },\n 'ks': {\n type: 'array',\n },\n 'fun': {\n type: 'function',\n },\n 'fun-args': {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['coll', 'ks', 'fun'] },\n { argumentNames: ['coll', 'ks', 'fun', 'fun-args'] },\n ],\n description: `Updates a value in the $coll collection, where $ks is an array of\nkeys and $fun is a function that will take the old value and\nany supplied $fun-args and return the new value. If any levels do not exist,\nobjects will be created - and the corresponding keys must be of type string.`,\n examples: [\n `\nupdate-in(\n { a := [1, 2, 3] },\n [\"a\", 1],\n -> if null?($) then 0 end\n)`,\n `\nupdate-in(\n { a := { foo := \"bar\"} },\n [\"a\", \"foo\"],\n -> if null?($) then \"?\" else \"!\" end\n)`,\n `\nupdate-in(\n { a := { foo := \"bar\"} },\n [\"a\", \"baz\"],\n -> if null?($) then \"?\" else \"!\" end\n)`,\n `\nupdate-in(\n { a := [1, 2, 3] },\n [\"a\", 1],\n *,\n 10,\n 10,\n 10,\n)`,\n ],\n },\n}\n","import { type FunctionalApiName, getOperatorArgs } from '../api'\nimport type { FunctionReference } from '..'\n\nexport const functionalReference: Record<FunctionalApiName, FunctionReference<'Functional'>> = {\n 'apply': {\n title: 'apply',\n category: 'Functional',\n linkName: 'apply',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('function', 'array'),\n fun: {\n type: 'function',\n },\n args: {\n type: 'array',\n },\n },\n variants: [\n { argumentNames: ['fun', 'args'] },\n ],\n description: 'Call supplied function $fun with specified arguments $args.',\n examples: [\n `\napply(+, [1, 2, 3])`,\n `\napply(\n (x, y) -> sqrt(x ** 2 + y ** 2),\n [3, 4]\n)`,\n `\n(x, y) -> sqrt(x ** 2 + y ** 2) apply [3, 4]`,\n ],\n },\n 'identity': {\n title: 'identity',\n category: 'Functional',\n linkName: 'identity',\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns $x.',\n examples: ['identity(1)', 'identity(\"Albert\")', 'identity({ a := 1 })', 'identity(null)'],\n },\n 'partial': {\n title: 'partial',\n category: 'Functional',\n linkName: 'partial',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun', 'args'] },\n ],\n description: `Takes a function $fun and a optional number arguments $args to $fun.\nIt returns a function that takes the additional additional arguments.\nWhen called, the returned function calls \\`(\\`$fun \\`...\\`$args\\` ...additional_arguments)\\`.`,\n examples: [\n 'partial(+, 100)',\n `\nlet plusMany := partial(+, 100, 1000);\nplusMany(1, 10)`,\n `\nlet addHundred := partial(+, 100);\naddHundred(10)`,\n ],\n noOperatorDocumentation: true,\n },\n 'comp': {\n title: 'comp',\n category: 'Functional',\n linkName: 'comp',\n returns: {\n type: 'function',\n },\n args: {\n ...getOperatorArgs('function', 'function'),\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fns'] },\n ],\n description: `Takes a variable number of functions and returns a function that is the composition of those.\n\n The returned function takes a variable number of arguments,\n applies the rightmost function to the args,\n the next function (right-to-left) to the result, etc.`,\n examples: [\n `\nlet negative-quotient := comp(-, /);\nnegative-quotient(9, 3)`,\n `\nlet x := { bar := { foo := 42 } };\ncomp(\"foo\", \"bar\")(x)`,\n ],\n },\n 'constantly': {\n title: 'constantly',\n category: 'Functional',\n linkName: 'constantly',\n returns: {\n type: 'function',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns a function that takes any number of arguments and always returns $x.',\n examples: [\n `\nlet always-true := constantly(true);\nalways-true(9, 3)`,\n ],\n },\n\n 'juxt': {\n title: 'juxt',\n category: 'Functional',\n linkName: 'juxt',\n returns: {\n type: 'function',\n },\n args: {\n ...getOperatorArgs('function', 'function'),\n fun: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'fns'] },\n ],\n description: `Takes one or many function and returns a function that is the juxtaposition of those functions. \nThe returned function takes a variable number of args,\nand returns a vector containing the result of applying each function to the args (left-to-right).`,\n examples: [\n `\njuxt(+, *, min, max)(\n 3,\n 4,\n 6,\n)`,\n `\njuxt(\"a\", \"b\")(\n {\n a := 1,\n b := 2,\n c := 3,\n d := 4\n }\n)`,\n `\njuxt(+, *, min, max) apply range(1, 11)`,\n ],\n },\n 'complement': {\n title: 'complement',\n category: 'Functional',\n linkName: 'complement',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n ],\n description: 'Takes a function $fun and returns a new function that takes the same arguments as f, has the same effects, if any, and returns the opposite truth value.',\n examples: [\n 'complement(>)(1, 3)',\n 'complement(<)(1, 3)',\n 'complement(+)(1, 3)',\n 'complement(+)(0, 0)',\n ],\n },\n 'every-pred': {\n title: 'every-pred',\n category: 'Functional',\n linkName: 'every-pred',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'fns'] },\n ],\n description: `\nTakes a number of predicates and returns a function that returns \\`true\\` if all predicates\nreturn a truthy value against all of its arguments, else it returns \\`false\\`.`,\n examples: [\n `\nevery-pred(string?, -> count($) > 3)(\n \"Albert\",\n \"Mojir\"\n)`,\n `\n(string? every-pred -> count($) > 3)(\n \"Albert\",\n \"M\"\n)`,\n ],\n noOperatorDocumentation: true,\n },\n 'some-pred': {\n title: 'some-pred',\n category: 'Functional',\n linkName: 'some-pred',\n returns: {\n type: 'function',\n },\n args: {\n fun: {\n type: 'function',\n },\n fns: {\n type: 'function',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun'] },\n { argumentNames: ['fun', 'fns'] },\n ],\n description: 'Takes a number of `predicates` and returns a function that returns \\`true\\` if at least one of the `predicates` return a truthy \\`true\\` value against at least one of its arguments, else it returns `false`.',\n examples: [\n 'some-pred(string?, -> count($) > 3)(\"Albert\", \"Mojir\")',\n 'some-pred(string?, -> count($) > 3)(\"a\", \"M\")',\n 'some-pred(string?, -> count($) > 3)(\"a\", [1, 2, 3])',\n 'some-pred(string?, -> count($) > 3)([1, 2, 3], [2])',\n ],\n noOperatorDocumentation: true,\n },\n 'fnull': {\n title: 'fnull',\n category: 'Functional',\n linkName: 'fnull',\n returns: {\n type: 'function',\n },\n args: {\n ...getOperatorArgs('function', 'any'),\n fun: {\n type: 'function',\n },\n arg: {\n type: 'any',\n },\n args: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['fun', 'arg'] },\n { argumentNames: ['fun', 'arg', 'args'] },\n ],\n description: 'Takes a function $fun, and returns a function that calls $fun, replacing a null argument to the corresponding argument.',\n examples: [\n 'fnull(inc, 0)(1)',\n 'fnull(inc, 0)(null)',\n '(inc fnull 0)(null)',\n 'fnull(+, 1, 2)(null, 0)',\n 'fnull(+, 1, 2)(0, null)',\n 'fnull(+, 1, 2)(null, null)',\n 'fnull(+, 1, 2)(null, null, 3, 4)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type MathApiName, getOperatorArgs } from '../api'\n\nexport const mathReference: Record<MathApiName, FunctionReference<'Math'>> = {\n '+': {\n title: '+',\n category: 'Math',\n linkName: '-plus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes sum of $xs.',\n examples: ['1 + 2', '1 + 20 + 30', '+(1, 2, 3, 4)', '+()', '+(1)'],\n },\n '-': {\n title: '-',\n category: 'Math',\n linkName: '-minus',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes difference between first value and sum of the rest. When called with only one argument, it does negation.',\n examples: ['50 - 8', '1 - 1 - 1', '-()', '-(4, 2)', '-(4, 3, 2, 1,)'],\n },\n '*': {\n title: '*',\n category: 'Math',\n linkName: '-star',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes product of $xs.',\n examples: ['6 * 7', '-1 * 4', '*(4, 7)', '*(1, 2, 3, 4, 5)', '*()', '*(8)'],\n },\n '/': {\n title: '/',\n category: 'Math',\n linkName: '-slash',\n returns: {\n type: 'number',\n },\n args: {\n xs: {\n type: 'number',\n rest: true,\n },\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Computes division or reciprocal. When called with one argument it computes reciprocal. When called with two or more arguments it does compute division of the first by the all remaining $xs.',\n examples: ['12 / 100', '-1 / 4', '/(7, 4)', '/(1, 2, 4, 8)', '/()', '/(8)'],\n },\n 'mod': {\n title: 'mod',\n category: 'Math',\n linkName: 'mod',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Modulus of `dividend` and `divisor`. Truncates toward negative infinity.',\n examples: ['mod(5, 3)', 'mod(5.2, 3.1)', 'mod(-5, 3)', '5 mod -3', '-5 mod -3'],\n },\n '%': {\n title: '%',\n category: 'Math',\n linkName: '-percent',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Remainder of dividing `dividend` and `divisor`.',\n examples: ['5 % 3', '5.2 % 3.1', '-5 % 3', '%(5, -3)', '%(-5, -3)'],\n aliases: ['rem'],\n },\n 'quot': {\n title: 'quot',\n category: 'Math',\n linkName: 'quot',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Quotient of dividing `dividend` and `divisor`.',\n examples: ['quot(5, 3)', 'quot(5.2, 3.1)', 'quot(-5, 3)', '5 quot -3', '-5 quot -3'],\n },\n 'inc': {\n title: 'inc',\n category: 'Math',\n linkName: 'inc',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Adds one to $x.',\n examples: ['inc(0)', 'inc(1)', 'inc(100.1)'],\n },\n 'dec': {\n title: 'dec',\n category: 'Math',\n linkName: 'dec',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Subtracts one from $x.',\n examples: ['dec(0)', 'dec(1)', 'dec(100.1)'],\n },\n '√': {\n title: '√',\n category: 'Math',\n linkName: 'sqrt',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes square root of $x.',\n examples: ['√(0)', '√(9)', '√(2)', 'sqrt(0)', 'sqrt(9)', 'sqrt(2)'],\n aliases: ['sqrt'],\n },\n '∛': {\n title: '∛',\n category: 'Math',\n linkName: 'cbrt',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes cube root of $x.',\n examples: ['∛(0)', '∛(27)', '∛(2)', '∛(1)', 'cbrt(0)', 'cbrt(27)', 'cbrt(2)', 'cbrt(1)'],\n aliases: ['cbrt'],\n },\n '**': {\n title: '**',\n category: 'Math',\n linkName: '-star-star',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Computes returns $a raised to the power of $b.',\n examples: ['2 ** 3', '2 ** 0', '2 ** -3', '**(-2, 3)', '**(-2, -3)'],\n },\n 'round': {\n title: 'round',\n category: 'Math',\n linkName: 'round',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n decimals: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'decimals'] },\n ],\n description: 'Returns rounded $x. If $decimals is provided it return a number with that many decimals.',\n examples: [\n 'round(2)',\n 'round(2.49)',\n 'round(2.5)',\n 'round(-2.49)',\n 'round(-2.5)',\n 'round(-2.501)',\n 'round(1.23456789, 4)',\n '1.123456789 round 2',\n ],\n noOperatorDocumentation: true,\n },\n 'trunc': {\n title: 'trunc',\n category: 'Math',\n linkName: 'trunc',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the integer part of $x by removing any fractional digits.',\n examples: ['trunc(2)', 'trunc(2.49)', 'trunc(2.5)', 'trunc(-2.49)', 'trunc(-2.5)', 'trunc(-2.501)'],\n },\n 'floor': {\n title: 'floor',\n category: 'Math',\n linkName: 'floor',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the largest `integer` less than or equal to $x.',\n examples: ['floor(2)', 'floor(2.49)', 'floor(2.5)', 'floor(-2.49)', 'floor(-2.5)', 'floor(-2.501)'],\n },\n 'ceil': {\n title: 'ceil',\n category: 'Math',\n linkName: 'ceil',\n returns: {\n type: 'integer',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the smallest `integer` larger than or equal to $x.',\n examples: ['ceil(2)', 'ceil(2.49)', 'ceil(2.5)', 'ceil(-2.49)', 'ceil(-2.5)', 'ceil(-2.501)'],\n },\n 'min': {\n title: 'min',\n category: 'Math',\n linkName: 'min',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the smallest number of the arguments.',\n examples: [\n '2 min 3',\n 'min(2, 0, 1)',\n 'min(2, -1, 1)',\n 'min(2.5)',\n '12 min 14',\n ],\n },\n 'max': {\n title: 'max',\n category: 'Math',\n linkName: 'max',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('number', 'number'),\n xs: {\n type: 'number',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['xs'] },\n ],\n description: 'Returns the largest number of the arguments.',\n examples: [\n ' 2 max 3',\n 'max(2, 0, 1)',\n 'max(2, -1, 1)',\n 'max(2, 0.5)',\n '4 max 2',\n ],\n },\n 'abs': {\n title: 'abs',\n category: 'Math',\n linkName: 'abs',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the absolute value of $x.',\n examples: ['abs(-2.3)', 'abs(0)', 'abs(2.5)'],\n },\n 'sign': {\n title: 'sign',\n category: 'Math',\n linkName: 'sign',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `1` if $x `> 0`, `-1` if $x `< 0`, `0` if $x `= 0` or `-0` if $x `= -0`.',\n examples: ['sign(-2.3)', 'sign(-0)', 'sign(0)', 'sign(12312)'],\n },\n 'log': {\n title: 'log',\n category: 'Math',\n linkName: 'log',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the natural logarithm (base e) of $x.',\n examples: ['log(0.01)', 'log(2.5)'],\n },\n 'log2': {\n title: 'log2',\n category: 'Math',\n linkName: 'log2',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the base `2` logarithm of a number.',\n examples: ['log2(0.01)', 'log2(2 ** 12)', 'log2(2.5)'],\n },\n 'log10': {\n title: 'log10',\n category: 'Math',\n linkName: 'log10',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the `10` logarithm of a number.',\n examples: ['log10(0.01)', 'log10(10 ** 12)', 'log10(2.5)'],\n },\n 'sin': {\n title: 'sin',\n category: 'Math',\n linkName: 'sin',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the sine of $x. $x must be specified in radians.',\n examples: ['sin(0)', 'sin(1)', 'sin(PI)', 'sin(-0.5)'],\n },\n 'cos': {\n title: 'cos',\n category: 'Math',\n linkName: 'cos',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the cosine of $x. $x must be specified in radians.',\n examples: ['cos(0)', 'cos(1)', 'cos(PI)', 'cos(-0.5)'],\n },\n 'tan': {\n title: 'tan',\n category: 'Math',\n linkName: 'tan',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the tangent of $x. $x must be specified in radians.',\n examples: ['tan(0)', 'tan(1)', 'tan(PI)', 'tan(-0.5)'],\n },\n 'asin': {\n title: 'asin',\n category: 'Math',\n linkName: 'asin',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arcsine (in radians) of $x.',\n examples: ['asin(0)', 'asin(1)', 'asin(-0.5)'],\n },\n 'acos': {\n title: 'acos',\n category: 'Math',\n linkName: 'acos',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arccosine (in radians) of $x.',\n examples: ['acos(0)', 'acos(1)', 'acos(-0.5)'],\n },\n 'atan': {\n title: 'atan',\n category: 'Math',\n linkName: 'atan',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the arctangent (in radians) of $x.',\n examples: ['atan(0)', 'atan(1)', 'atan(-0.5)'],\n },\n 'sinh': {\n title: 'sinh',\n category: 'Math',\n linkName: 'sinh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic sine of $x.',\n examples: ['sinh(0)', 'sinh(1)', 'sinh(-0.5)'],\n },\n 'cosh': {\n title: 'cosh',\n category: 'Math',\n linkName: 'cosh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic cosine of $x.',\n examples: ['cosh(0)', 'cosh(1)', 'cosh(-0.5)'],\n },\n 'tanh': {\n title: 'tanh',\n category: 'Math',\n linkName: 'tanh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic tangent of $x.',\n examples: ['tanh(0)', 'tanh(1)', 'tanh(-0.5)', 'tanh(50)'],\n },\n 'asinh': {\n title: 'asinh',\n category: 'Math',\n linkName: 'asinh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arcsine of $x.',\n examples: ['asinh(0)', 'asinh(0.9)', 'asinh (0.5)'],\n },\n 'acosh': {\n title: 'acosh',\n category: 'Math',\n linkName: 'acosh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arccosine of $x.',\n examples: ['acosh(1)', 'acosh(2)', 'acosh(100)'],\n },\n 'atanh': {\n title: 'atanh',\n category: 'Math',\n linkName: 'atanh',\n returns: {\n type: 'number',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns the hyperbolic arctangent of $x.',\n examples: ['atanh(0)', 'atanh(0.9)', 'atanh(-0.5)'],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type MiscApiName, getOperatorArgs } from '../api'\n\nexport const miscReference: Record<MiscApiName, FunctionReference<'Misc'>> = {\n '≠': {\n title: '≠',\n category: 'Misc',\n linkName: '-ne',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if all `values` are not equal to each other, otherwise result is `false`. `(!= a b c)` is same as `(! (== a b c))`.',\n examples: [\n '1 ≠ 2',\n '3 != 3',\n '≠(3)',\n '!=(3, 3, 2)',\n '≠(\"3\", \"2\", \"1\", \"0\",)',\n '!=(0, -0)',\n ],\n aliases: ['!='],\n },\n '=': {\n title: '=',\n category: 'Misc',\n linkName: '-equal',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n x: {\n type: 'any',\n },\n ys: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if all `values` are structaul equal to each other, otherwise result is `false`.',\n examples: [\n '1 = 1',\n '[1, 2] = [1, 2]',\n `\n{\n a := 1,\n b := 2,\n} = {\n b := 2,\n a := 1,\n}`,\n '=(1, 1)',\n '=(1.01, 1)',\n '=(\"1\", 1)',\n '=(\"2\", \"2\", \"2\", \"2\")',\n '=(2, 2, 1, 2)',\n '=([1, 2], [1, 2])',\n '=({ a := 1, b := 2 }, { b := 2, a := 1 })',\n ],\n },\n '<': {\n title: '<',\n category: 'Misc',\n linkName: '-lt',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in increasing order, `false` otherwise.',\n examples: [\n '<(0, 1)',\n '<(1, 1.01)',\n '<(1, 1)',\n '<(1, 2, 2, 3)',\n '<(\"a\", \"b\")',\n ],\n },\n '>': {\n title: '>',\n category: 'Misc',\n linkName: '-gt',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in decreasing order, `false` otherwise.',\n examples: [\n '>(1, 0)',\n '>(1.01, 1)',\n '>(1, 1)',\n '>(4, 3, 2, 1)',\n '>(3, 2, 2, 1)',\n ],\n },\n '≤': {\n title: '≤',\n category: 'Misc',\n linkName: '-lte',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in non decreasing order, `false` otherwise.',\n examples: [\n '1 ≤ 1',\n '<=(0, 1)',\n '≤(1, 1.01)',\n '<=(1, 1)',\n '≤(1, 2, 3, 4)',\n '<=(1, 2, 2, 3)',\n ],\n aliases: ['<='],\n },\n '≥': {\n title: '≥',\n category: 'Misc',\n linkName: '-gte',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n x: {\n type: ['number', 'string'],\n },\n ys: {\n type: ['number', 'string'],\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'ys'] },\n ],\n description: 'Returns `true` if $x and $ys are in non increasing order, `false` otherwise.',\n examples: [\n '1 ≥ 1',\n '0 ≥ 1',\n '>=(1, 0)',\n '≥(1.01, 1)',\n '>=(1, 1)',\n '≥(4, 3, 2, 1)',\n '>=(3, 2, 2, 1)',\n ],\n aliases: ['>='],\n },\n '!': {\n title: '!',\n category: 'Misc',\n linkName: '-exclamation',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Computes logical negation. Note that any other $x than `false`, `0`, `null` and `\\'\\'` is truthy.',\n examples: [\n '!(3)',\n '!(true)',\n '!(\"A string\")',\n '!(0)',\n '!(false)',\n '!(null)',\n '!(\"\")',\n ],\n },\n 'write!': {\n title: 'write!',\n category: 'Misc',\n linkName: 'write-exclamation',\n returns: {\n type: 'any',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'It logs the $values and then returns the last argument. If called with no arguments `null` is returned.',\n examples: [\n 'write!(\"A string\")',\n 'write!(100, \"items\")',\n 'write!(object(\"a\", 10))',\n 'write!([\"a\", \"b\", \"c\"])',\n 'write!(#\"^start\")',\n 'write!(null, true, false)',\n ],\n noOperatorDocumentation: true,\n },\n 'iso-date->epoch': {\n title: 'iso-date->epoch',\n category: 'Misc',\n linkName: 'iso-date--gtepoch',\n returns: {\n type: 'number',\n },\n args: {\n iso: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['iso'] },\n ],\n description: 'Returns milliseconds elapsed since the UNIX epoch to `iso`.',\n examples: [\n 'iso-date->epoch(\"2022-04-12T09:37:10.899Z\")',\n 'iso-date->epoch(\"1980-01-01\")',\n ],\n },\n 'epoch->iso-date': {\n title: 'epoch->iso-date',\n category: 'Misc',\n linkName: 'epoch--gtiso-date',\n returns: {\n type: 'string',\n },\n args: {\n ms: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['ms'] },\n ],\n description: 'Returns IOS date time string from `ms` (milliseconds elapsed since the UNIX epoch).',\n examples: [\n 'epoch->iso-date(1649756230899)',\n 'epoch->iso-date(0)',\n ],\n },\n 'boolean': {\n title: 'boolean',\n category: 'Misc',\n linkName: 'boolean',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Coerces $x to boolean.',\n examples: [\n 'boolean(0)',\n 'boolean(1)',\n 'boolean(null)',\n 'boolean(\"Albert\")',\n ],\n },\n 'compare': {\n title: 'compare',\n category: 'Misc',\n linkName: 'compare',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs(['number', 'string'], ['number', 'string']),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Compares two values. Returns `-1` if $a < $b, `1` if $a > $b and `0` if $a and $b have the same sort order.',\n examples: [\n 'compare(0, 1)',\n 'compare(0, 0)',\n 'compare(1, 0)',\n 'compare(\"Albert\", \"Mojir\")',\n ],\n },\n 'identical?': {\n title: 'identical?',\n category: 'Misc',\n linkName: 'identical-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns true if $a and $b are referential equal.',\n examples: [\n 'identical?({ a := 10, b := 20 }, { b := 20, a := 10 })',\n 'identical?([1, true, null], [1, true, null])',\n 'identical?(0.3, 0.1 + 0.2)',\n ],\n },\n 'json-parse': {\n title: 'json-parse',\n category: 'Misc',\n linkName: 'json-parse',\n returns: {\n type: 'any',\n },\n args: {\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `JSON.parse(`$x`)`.',\n examples: [\n 'json-parse(\"[1, 2, 3]\")',\n ],\n },\n 'json-stringify': {\n title: 'json-stringify',\n category: 'Misc',\n linkName: 'json-stringify',\n returns: {\n type: 'string',\n },\n args: {\n x: {\n type: 'any',\n },\n indent: {\n type: 'integer',\n description: 'Number of spaces to use for indentation.',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n { argumentNames: ['x', 'indent'] },\n ],\n description: 'Returns `JSON.stringify(`$x`)`. If second argument is provided, returns `JSON.stringify(`$x`, null, `$indent`)`.',\n examples: [\n 'json-stringify([1, 2, 3])',\n 'json-stringify({ a := { b := 10 }}, 2)',\n ],\n noOperatorDocumentation: true,\n },\n}\n","import type { FunctionReference } from '..'\nimport { type ObjectApiName, getOperatorArgs } from '../api'\n\nexport const objectReference: Record<ObjectApiName, FunctionReference<'Object'>> = {\n 'dissoc': {\n title: 'dissoc',\n category: 'Object',\n linkName: 'dissoc',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('object', 'string'),\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Return shallow copy of $obj with $key deleted.',\n examples: [\n '{ x := 10, y := 20 } dissoc \"y\"',\n 'dissoc({ x := 10, y := 20 }, \"x\")',\n 'dissoc({ x := 10 }, \"y\")',\n `\nlet o := { a := 5 };\ndissoc(o, \"a\");\no`,\n ],\n },\n 'keys': {\n title: 'keys',\n category: 'Object',\n linkName: 'keys',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all keys in $obj.',\n examples: [\n 'keys({})',\n 'keys({ x := 10, y := true, z := \"A string\" })',\n 'keys(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n 'vals': {\n title: 'vals',\n category: 'Object',\n linkName: 'vals',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns array of all values in $obj.',\n examples: [\n 'vals({})',\n 'vals({ x := 10, y := true, z := \"A string\" })',\n 'vals(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n 'entries': {\n title: 'entries',\n category: 'Object',\n linkName: 'entries',\n returns: {\n type: 'array',\n },\n args: {\n obj: {\n type: 'object',\n },\n },\n variants: [\n { argumentNames: ['obj'] },\n ],\n description: 'Returns nested array of all key - value pairs in $obj.',\n examples: [\n 'entries({})',\n 'entries({ x := 10, y := true, z := \"A string\" })',\n 'entries(object(\"x\", 10, \"y\", true, \"z\", \"A string\"))',\n ],\n },\n 'find': {\n title: 'find',\n category: 'Object',\n linkName: 'find',\n returns: {\n type: ['array', 'null'],\n },\n args: {\n ...getOperatorArgs('object', 'string'),\n obj: {\n type: 'object',\n },\n key: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['obj', 'key'] },\n ],\n description: 'Returns entry (key-value pair) for $key, or `null` if $key not present in $obj.',\n examples: [\n '{ a := 1, \"b\" := 2 } find \"a\"',\n 'find(object(\"a\", 1, \"b\", 2), \"b\")',\n 'find(object(\"a\", 1, \"b\", 2), \"c\")',\n ],\n },\n 'merge': {\n title: 'merge',\n category: 'Object',\n linkName: 'merge',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('object', 'object'),\n objs: {\n type: 'object',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['objs'] },\n ],\n description: `Returns a new object created by merging together all arguments.\n\nIf two keys appears in more than one object the value from the last object is used. \nIf no arguments are provided \\`null\\` is returned.`,\n examples: [\n '{ x := 10 } merge { y := 20 }',\n 'merge(object(\"x\", 10), object(\"y\", 20))',\n 'merge(object(\"x\", 10), object(\"x\", 15, \"y\", 20))',\n ],\n },\n 'merge-with': {\n title: 'merge-with',\n category: 'Object',\n linkName: 'merge-with',\n returns: {\n type: 'object',\n },\n args: {\n objs: {\n type: 'object',\n rest: true,\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['objs', 'fun'] },\n ],\n description: `\nReturns a new object created by merging together all arguments.\nIf two keys appears in more than one object $fun is used to calculate the new value.\n\nIf no arguments are provided \\`null\\` is returned.`,\n examples: [\n 'merge-with(object(\"x\", 10), object(\"y\", 20), +)',\n 'merge-with(object(\"x\", 10), object(\"x\", 15, \"y\", 20), +)',\n 'merge-with({ x := 10 }, { x := 20 }, { x := 30 }, { x := 40 }, -)',\n ],\n noOperatorDocumentation: true,\n },\n 'zipmap': {\n title: 'zipmap',\n category: 'Object',\n linkName: 'zipmap',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('array', 'array'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns a new object created by mapping $a to $b.',\n examples: [\n '[\"a\", \"b\", \"c\"] zipmap [1, 2, 3]',\n 'zipmap([\"a\", \"b\", \"c\"], [10, null, [1, 2, 3]])',\n 'zipmap([\"a\", \"b\", \"c\"], [1])',\n 'zipmap([], [10, null, [1, 2, 3]])',\n ],\n },\n 'select-keys': {\n title: 'select-keys',\n category: 'Object',\n linkName: 'select-keys',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('object', 'array'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: 'Returns an object containing only those entries in $a whose key is in $b.',\n examples: [\n '{ a := 1, b := 2, c := 3 } select-keys [\"a\", \"b\"]',\n 'select-keys({ a := 1, b := 2, c := 3 }, [\"a\", \"b\"])',\n 'select-keys({ a := 1 }, [\"a\", \"b\"])',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport type { PredicateApiName } from '../api'\n\nexport const predicateReference: Record<PredicateApiName, FunctionReference<'Predicate'>> = {\n 'boolean?': {\n title: 'boolean?',\n category: 'Predicate',\n linkName: 'boolean-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a `boolean`, otherwise `false`.',\n examples: [\n 'boolean?(true)',\n 'boolean?(false)',\n 'boolean?([1, 2, 3])',\n 'boolean?(0)',\n 'boolean?(\"A string\")',\n ],\n },\n 'null?': {\n title: 'null?',\n category: 'Predicate',\n linkName: 'null-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `null`, otherwise `false`.',\n examples: [\n 'null?(null)',\n 'null?(false)',\n 'null?([1, 2, 3])',\n 'null?(0)',\n 'null?(\"A string\")',\n ],\n },\n 'number?': {\n title: 'number?',\n category: 'Predicate',\n linkName: 'number-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a number, otherwise `false`.',\n examples: [\n 'number?(0)',\n 'number?(2)',\n 'number?(-0.12)',\n 'number?(false)',\n 'number?([1, 2, 3])',\n 'number?(\"A string\")',\n ],\n },\n 'string?': {\n title: 'string?',\n category: 'Predicate',\n linkName: 'string-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a string, otherwise `false`.',\n examples: [\n 'string?(\"\")',\n 'string?(\"A string\")',\n 'string?(if true then \"A string\" else false end)',\n 'string?(false)',\n 'string?([1, 2, 3])',\n 'string?(100)',\n ],\n },\n 'function?': {\n title: 'function?',\n category: 'Predicate',\n linkName: 'function-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a function, otherwise `false`.',\n examples: [\n 'function?(+)',\n 'function?(/)',\n 'function?((x, y) -> x + y)',\n 'function?(false)',\n 'function?(\"false\")',\n 'function?([1, 2, 3])',\n ],\n },\n 'integer?': {\n title: 'integer?',\n category: 'Predicate',\n linkName: 'integer-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an integer, otherwise `false`.',\n examples: [\n 'integer?(0)',\n 'integer?(-12)',\n 'integer?(42)',\n 'integer?(10.1)',\n 'integer?((x, y) -> x + y)',\n 'integer?(false)',\n 'integer?(\"false\")',\n 'integer?([1, 2, 3])',\n ],\n },\n 'array?': {\n title: 'array?',\n category: 'Predicate',\n linkName: 'array-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an array, otherwise `false`.',\n examples: [\n 'array?([])',\n 'array?([1, 2, 3])',\n 'array?(object(\"a\", 10))',\n 'array?(42)',\n 'array?(10.1)',\n 'array?((x, y) -> x + y)',\n ],\n },\n 'object?': {\n title: 'object?',\n category: 'Predicate',\n linkName: 'object-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is an object, otherwise `false`.',\n examples: [\n 'object?(object(\"a\", 10))',\n 'object?(42)',\n 'object?(10.1)',\n 'object?((x, y) -> x + y)',\n 'object?(#\"^start\")',\n 'object?(\"false\")',\n 'object?([1, 2, 3])',\n ],\n },\n 'coll?': {\n title: 'coll?',\n category: 'Predicate',\n linkName: 'coll-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Coll i.e. an array, an object or a string, otherwise `false`.',\n examples: [\n 'coll?([])',\n 'coll?([1, 2, 3])',\n 'coll?(object(\"a\", 10))',\n 'coll?(\"Albert\")',\n 'coll?(42)',\n 'coll?(10.1)',\n 'coll?((x, y) -> x + y)',\n ],\n },\n 'seq?': {\n title: 'seq?',\n category: 'Predicate',\n linkName: 'seq-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a Seq i.e. an array or a string, otherwise `false`.',\n examples: [\n 'seq?([])',\n 'seq?([1, 2, 3])',\n 'seq?(object(\"a\", 10))',\n 'seq?(\"Albert\")',\n 'seq?(42)',\n 'seq?(10.1)',\n 'seq?((x, y) -> x + y)',\n ],\n },\n 'regexp?': {\n title: 'regexp?',\n category: 'Predicate',\n linkName: 'regexp-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is a regexp, otherwise `false`.',\n examples: [\n 'regexp?(regexp(\"^start\"))',\n 'regexp?(#\"^start\")',\n 'regexp?(-12)',\n 'regexp?({})',\n 'regexp?(10.1)',\n 'regexp?((x, y) -> x + y)',\n 'regexp?(false)',\n 'regexp?(\"false\")',\n 'regexp?([1, 2, 3])',\n ],\n },\n 'zero?': {\n title: 'zero?',\n category: 'Predicate',\n linkName: 'zero-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `0`, otherwise `false`.',\n examples: [\n 'zero?(0)',\n 'zero?(-0.0)',\n 'zero?(1)',\n 'zero?(0.1)',\n ],\n },\n 'pos?': {\n title: 'pos?',\n category: 'Predicate',\n linkName: 'pos-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is greater than `0`, otherwise `false`.',\n examples: [\n 'pos?(0)',\n 'pos?(-0.0)',\n 'pos?(1)',\n 'pos?(-0.1)',\n ],\n },\n 'neg?': {\n title: 'neg?',\n category: 'Predicate',\n linkName: 'neg-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is less than `0`, otherwise `false`.',\n examples: [\n 'neg?(0)',\n 'neg?(-0.0)',\n 'neg?(1)',\n 'neg?(-0.1)',\n ],\n },\n 'even?': {\n title: 'even?',\n category: 'Predicate',\n linkName: 'even-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is even, otherwise `false`.',\n examples: [\n 'even?(0)',\n 'even?(-0.0)',\n 'even?(-1)',\n 'even?(2.1)',\n ],\n },\n 'odd?': {\n title: 'odd?',\n category: 'Predicate',\n linkName: 'odd-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is odd, otherwise `false`.',\n examples: [\n 'odd?(1.0)',\n 'odd?(1.001)',\n 'odd?(-1)',\n 'odd?(2.1)',\n ],\n },\n 'finite?': {\n title: 'finite?',\n category: 'Predicate',\n linkName: 'finite-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is finite, otherwise `false`.',\n examples: [\n 'finite?(1.0)',\n 'finite?(1 / 0)',\n 'finite?(-1 / 0)',\n 'finite?(sqrt(-1))',\n ],\n },\n 'nan?': {\n title: 'nan?',\n category: 'Predicate',\n linkName: 'nan-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is NaN (! a number), otherwise `false`.',\n examples: [\n 'nan?(1.0)',\n 'nan?(1 / 0)',\n 'nan?(-1 / 0)',\n 'nan?(sqrt(-1))',\n ],\n },\n 'negative-infinity?': {\n title: 'negative-infinity?',\n category: 'Predicate',\n linkName: 'negative-infinity-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals negative infinity, otherwise `false`.',\n examples: [\n 'negative-infinity?(1.0)',\n 'negative-infinity?(1 / 0)',\n 'negative-infinity?(-1 / 0)',\n 'negative-infinity?(sqrt(-1))',\n ],\n },\n 'positive-infinity?': {\n title: 'positive-infinity?',\n category: 'Predicate',\n linkName: 'positive-infinity-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x equals positive infinity, otherwise `false`.',\n examples: [\n 'positive-infinity?(1.0)',\n 'positive-infinity?(1 / 0)',\n 'positive-infinity?(-1 / 0)',\n 'positive-infinity?(sqrt(-1))',\n ],\n },\n 'false?': {\n title: 'false?',\n category: 'Predicate',\n linkName: 'false-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n 'false?(false)',\n 'false?(true)',\n 'false?(1)',\n 'false?(0)',\n ],\n },\n 'true?': {\n title: 'true?',\n category: 'Predicate',\n linkName: 'true-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is `true`, otherwise `false`.',\n examples: [\n 'true?(false)',\n 'true?(true)',\n 'true?(1)',\n 'true?(0)',\n ],\n },\n 'empty?': {\n title: 'empty?',\n category: 'Predicate',\n linkName: 'empty-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'null'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `true` if $x is empty or `null`, otherwise `false`.',\n examples: [\n 'empty?([])',\n 'empty?([1, 2, 3])',\n 'empty?({})',\n 'empty?({ a := 2 })',\n 'empty?(\"\")',\n 'empty?(\"Albert\")',\n 'empty?(null)',\n ],\n },\n 'not-empty?': {\n title: 'not-empty?',\n category: 'Predicate',\n linkName: 'not-empty-question',\n returns: {\n type: 'boolean',\n },\n args: {\n x: {\n type: ['collection', 'string', 'null'],\n },\n },\n variants: [\n { argumentNames: ['x'] },\n ],\n description: 'Returns `false` if $x is empty or `null`, otherwise `true`.',\n examples: [\n 'not-empty?([])',\n 'not-empty?([1, 2, 3])',\n 'not-empty?({})',\n 'not-empty?({ a := 2 })',\n 'not-empty?(\"\")',\n 'not-empty?(\"Albert\")',\n 'not-empty?(null)',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type RegularExpressionApiName, getOperatorArgs } from '../api'\n\nexport const regularExpressionReference: Record<RegularExpressionApiName, FunctionReference<'Regular expression'>> = {\n 'regexp': {\n title: 'regexp',\n category: 'Regular expression',\n linkName: 'regexp',\n returns: {\n type: 'regexp',\n },\n args: {\n pattern: {\n type: 'string',\n },\n flags: {\n type: 'string',\n description: 'Optional flags for the regular expression. Possible values are the same as Javascript RegExp takes.',\n },\n },\n variants: [\n { argumentNames: ['pattern'] },\n { argumentNames: ['pattern', 'flags'] },\n ],\n description: 'Creates a RegExp from $pattern and $flags.',\n examples: [\n 'regexp(\"^\\\\s*(.*)$\")',\n '#\"^\\\\s*(.*)$\"',\n 'regexp(\"albert\", \"ig\")',\n '#\"albert\"ig',\n ],\n noOperatorDocumentation: true,\n },\n 'match': {\n title: 'match',\n category: 'Regular expression',\n linkName: 'match',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('regexp', 'string'),\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n ],\n description: `Matches $b against regular expression $a.\nIf $b is a string and matches the regular expression, a \\`match\\`-array is returned, otherwise \\`null\\` is returned.`,\n examples: [\n 'match(\" A string\", regexp(\"^\\\\\\\\s*(.*)$\"))',\n 'match(\" A string\", #\"^\\\\s*(.*)$\")',\n 'match(\"My name is Albert\", #\"albert\"i)',\n 'match(\"My name is Ben\", #\"albert\"i)',\n 'match(null, #\"albert\"i)',\n 'match(1, #\"albert\"i)',\n 'match({}, #\"albert\"i)',\n ],\n },\n 'replace': {\n title: 'replace',\n category: 'Regular expression',\n linkName: 'replace',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('string', ['regexp', 'string']),\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b', 'x'] },\n ],\n description: 'Returns a new string with first match of regular expression $b replaced by $x.',\n examples: [\n 'replace(\"Duck duck\", \"u\", \"i\")',\n 'replace(\"Duck duck\", #\"u\", \"i\")',\n 'replace(\"abcABC\", regexp(\"a\", \"i\"), \"-\")',\n 'replace(\"abcABC\", regexp(\"a\", \"gi\"), \"-\")',\n 'replace(\"abcABC\", #\"a\"i, \"-\")',\n 'replace(\"abcABC\", #\"a\"gi, \"-\")',\n ],\n },\n 'replace-all': {\n title: 'replace-all',\n category: 'Regular expression',\n linkName: 'replace-all',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n ...getOperatorArgs('string', ['regexp', 'string']),\n x: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['a', 'b', 'x'] },\n ],\n description: 'Returns a new string with all matches of regular expression $b replaced by $x.',\n examples: [\n 'replace-all(\"Duck duck\", \"u\", \"i\")',\n 'replace-all(\"Duck duck\", regexp(\"u\"), \"i\")',\n 'replace-all(\"abcABC\", regexp(\"a\", \"i\"), \"-\")',\n 'replace-all(\"abcABC\", regexp(\"a\", \"gi\"), \"-\")',\n 'replace-all(\"abcABC\", #\"a\"i, \"-\")',\n 'replace-all(\"abcABC\", #\"a\"gi, \"-\")',\n ],\n },\n}\n","import type { FunctionReference } from '..'\nimport { type SequenceApiName, getOperatorArgs } from '../api'\n\nexport const sequenceReference: Record<SequenceApiName, FunctionReference<'Sequence'>> = {\n 'nth': {\n title: 'nth',\n category: 'Sequence',\n linkName: 'nth',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n 'seq': {\n type: ['sequence', 'null'],\n },\n 'n': {\n type: 'integer',\n },\n 'not-found': {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'not-found'] },\n ],\n description: 'Accesses element $n of $seq. Accessing out-of-bounds indices returns $not-found, if present, else `null`.',\n examples: [\n '[1, 2, 3] nth 1',\n '\"A string\" nth 3',\n 'nth([1, 2, 3], 1)',\n 'nth([1, 2, 3], 3)',\n 'nth([1, 2, 3], -1)',\n 'nth([1, 2, 3], 3, 99)',\n 'nth(\"A string\", 1)',\n 'nth(\"A string\", 3)',\n 'nth(\"A string\", -3)',\n 'nth(\"A string\", 30, \"X\")',\n 'nth(null, 1)',\n 'nth(null, 1, \"Default value\")',\n ],\n },\n 'push': {\n title: 'push',\n category: 'Sequence',\n linkName: 'push',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: 'sequence',\n },\n values: {\n type: 'any',\n rest: true,\n description: 'At least one.',\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the end of it.',\n examples: [\n '[1, 2, 3] push 4',\n '\"Albert\" push \"!\"',\n 'push([1, 2, 3], 4)',\n 'push([1, 2, 3], 4, 5, 6)',\n `\nlet l := [1, 2, 3];\npush(l, 4);\nl`,\n ],\n },\n 'pop': {\n title: 'pop',\n category: 'Sequence',\n linkName: 'pop',\n returns: {\n type: ['sequence', 'null'],\n rest: true,\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with last element removed. If $seq is empty `null` is returned.',\n examples: [\n 'pop([1, 2, 3])',\n 'pop([])',\n ],\n },\n 'unshift': {\n title: 'unshift',\n category: 'Sequence',\n linkName: 'unshift',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: 'sequence',\n },\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['seq', 'values'] },\n ],\n description: 'Returns copy of $seq with $values added to the beginning.',\n examples: [\n '[1, 2, 3] unshift 4',\n 'unshift([1, 2, 3], 4)',\n 'unshift([1, 2, 3], 4, 5, 6)',\n `\nlet l := [1, 2, 3];\nunshift(l, 4);\nl`,\n ],\n },\n 'shift': {\n title: 'shift',\n category: 'Sequence',\n linkName: 'shift',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with first element removed. If $seq is empty `null` is returned.',\n examples: [\n 'shift([1, 2, 3])',\n 'shift([])',\n ],\n },\n 'slice': {\n title: 'slice',\n category: 'Sequence',\n linkName: 'slice',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n rest: true,\n },\n start: {\n type: 'integer',\n description: 'Defaults to `0`.',\n },\n stop: {\n type: 'integer',\n description: 'Defaults lenght of sequence + 1.',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'start'] },\n { argumentNames: ['seq', 'start', 'stop'] },\n ],\n description: 'Returns a copy of a portion of $seq from index $start (inclusive) to $stop (exclusive).',\n examples: [\n '[1, 2, 3, 4, 5] slice 2',\n 'slice([1, 2, 3, 4, 5], 2, 4)',\n 'slice([1, 2, 3, 4, 5], 2)',\n ],\n },\n 'splice': {\n title: 'splice',\n category: 'Sequence',\n linkName: 'splice',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n rest: true,\n },\n start: {\n type: 'integer',\n },\n deleteCount: {\n type: 'integer',\n },\n items: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['seq', 'start', 'deleteCount'] },\n { argumentNames: ['seq', 'start', 'deleteCount', 'items'] },\n ],\n description: 'Returns a a spliced array. Removes $deleteCount elements from $seq starting at $start and replaces them with $items. If $start is negative, it is counting from the end of the array.',\n examples: [\n 'splice([1, 2, 3, 4, 5], 2, 2, \"x\")',\n 'splice([1, 2, 3, 4, 5], -2, 1, \"x\")',\n 'splice(\"Albert\", 2, 2, \"fo\")',\n ],\n },\n 'reductions': {\n title: 'reductions',\n category: 'Sequence',\n linkName: 'reductions',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n fun: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n rest: true,\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n { argumentNames: ['seq', 'fun', 'start'] },\n ],\n description: 'Returns an array of the intermediate values of the reduction (see `reduce`) of $seq by $fun.',\n examples: [\n '[1, 2, 3] reductions +',\n 'reductions([1, 2, 3], +)',\n 'reductions([1, 2, 3], +, 10)',\n 'reductions([], +, 0)',\n `\nreductions(\n [1, 2, 3, 4, 5, 6, 7, 8, 9],\n (result, value) -> result + if even?(value) then value else 0 end,\n 0\n)`,\n ],\n },\n 'reduce': {\n title: 'reduce',\n category: 'Sequence',\n linkName: 'reduce',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n fun: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n { argumentNames: ['seq', 'fun', 'start'] },\n ],\n description: 'Runs $fun function on each element of the $seq, passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n '[1, 2, 3] reduce +',\n 'reduce([1, 2, 3], +)',\n 'reduce([1, 2, 3], +, 0)',\n 'reduce([], +, 0)',\n `\nreduce(\n [1, 2, 3, 4, 5, 6, 7, 8, 9],\n (result, value) -> result + if even?(value) then value else 0 end,\n 0)`,\n ],\n },\n 'reduce-right': {\n title: 'reduce-right',\n category: 'Sequence',\n linkName: 'reduce-right',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n fun: {\n type: 'function',\n },\n seq: {\n type: 'sequence',\n },\n start: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n { argumentNames: ['seq', 'fun', 'start'] },\n ],\n description: 'Runs $fun function on each element of the $seq (starting from the last item), passing in the return value from the calculation on the preceding element. The final result of running the reducer across all elements of the $seq is a single value.',\n examples: [\n 'range(1, 10) reduce-right *',\n 'reduce-right([\"A\", \"B\", \"C\"], str, \"\")',\n ],\n },\n 'map': {\n title: 'map',\n category: 'Sequence',\n linkName: 'map',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seqs: {\n type: 'sequence',\n rest: true,\n description: 'At least one.',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seqs', 'fun'] },\n ],\n description: 'Creates a new array populated with the results of calling $fun on every element in $seqs.',\n examples: [\n '[1, 2, 3] map -',\n '[1, 2, 3] map -> -($)',\n 'map([\"Albert\", \"Mojir\", 42], str)',\n 'map([1, 2, 3], inc)',\n 'map([1, 2, 3], [1, 10, 100], *)',\n ],\n },\n 'filter': {\n title: 'filter',\n category: 'Sequence',\n linkName: 'filter',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Creates a new array with all elements that pass the test implemented by $fun.',\n examples: [\n `\nfilter(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nfilter(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n ],\n },\n 'position': {\n title: 'position',\n category: 'Sequence',\n linkName: 'position',\n returns: {\n type: ['number', 'null'],\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: ['sequence', 'null'],\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the index of the first elements that passes the test implemented by $fun. If no element was found, `null` is returned.',\n examples: [\n `\nposition(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nposition(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n `\nposition(\n [5, 10, 15, 20],\n -> $ > 100\n)`,\n `\nposition(\n null,\n -> $ > 100\n)`,\n ],\n },\n 'index-of': {\n title: 'index-of',\n category: 'Sequence',\n linkName: 'index-of',\n returns: {\n type: ['number', 'null'],\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: ['sequence', 'null'],\n },\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'x'] },\n ],\n description: 'Returns the index of $x in $seq. If element is not present in $seq `null` is returned.',\n examples: [\n '[[1], [2], [1], [2]] index-of [1]',\n 'index-of([\"Albert\", \"Mojir\", 160, [1, 2]], \"Mojir\")',\n 'index-of([5, 10, 15, 20], 15)',\n 'index-of([5, 10, 15, 20], 1)',\n 'index-of(null, 1)',\n ],\n },\n 'last-index-of': {\n title: 'last-index-of',\n category: 'Sequence',\n linkName: 'last-index-of',\n returns: {\n type: ['number', 'null'],\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: ['sequence', 'null'],\n },\n x: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'x'] },\n ],\n description: 'Returns the last index of $x in $seq. If element is not present in $seq `null` is returned.',\n examples: [\n '[[1], [2], [1], [2]] last-index-of [1]',\n 'last-index-of([\"Albert\", \"Mojir\", 160, [1, 2]], \"Mojir\")',\n 'last-index-of([5, 10, 15, 20, 15], 15)',\n 'last-index-of([5, 10, 15, 20], 1)',\n 'last-index-of(null, 1)',\n ],\n },\n 'some': {\n title: 'some',\n category: 'Sequence',\n linkName: 'some',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: ['sequence', 'null'],\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the first element that passes the test implemented by $fun. I no element was found, `null` is returned.',\n examples: [\n `\nsome(\n [\"Albert\", \"Mojir\", 160, [1, 2]],\n string?\n)`,\n `\nsome(\n [5, 10, 15, 20],\n -> $ > 10\n)`,\n `\nsome(\n [1, 2, 3, 4],\n -> $ > 10\n)`,\n `\nsome(\n [],\n -> $ > 10\n)`,\n `\nsome(\n null,\n -> $ > 10\n)`,\n ],\n },\n 'reverse': {\n title: 'reverse',\n category: 'Sequence',\n linkName: 'reverse',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, creates a new array with the elements from $seq in reversed order. If $seq is a string, returns new reversed string.',\n examples: [\n 'reverse([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'reverse([])',\n 'reverse(\"Albert\")',\n 'reverse(null)',\n ],\n },\n 'first': {\n title: 'first',\n category: 'Sequence',\n linkName: 'first',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the first element of $seq. If $seq is empty or `null`, `null` is returned.',\n examples: [\n 'first([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'first([])',\n 'first(null)',\n ],\n },\n 'second': {\n title: 'second',\n category: 'Sequence',\n linkName: 'second',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the second element of $seq. If $seq has less than two elements or is `null`, `null` is returned.',\n examples: [\n 'second([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'second([1])',\n 'second([])',\n 'second(null)',\n ],\n },\n 'last': {\n title: 'last',\n category: 'Sequence',\n linkName: 'last',\n returns: {\n type: 'any',\n },\n args: {\n seq: {\n type: ['sequence', 'null'],\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns the last element of $seq. If $seq is empty, `null` is returned.',\n examples: [\n 'last([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'last([1, 2])',\n 'last([1])',\n 'last([])',\n 'last(null)',\n ],\n },\n 'rest': {\n title: 'rest',\n category: 'Sequence',\n linkName: 'rest',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: `If $seq is an array, returns a new array with all but the first element from $seq.\nIf $seq has less than two elements, an empty array is returned.\nFor string $seq returns all but the first characters in $seq.`,\n examples: [\n 'rest([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'rest([\"Albert\"])',\n 'rest([])',\n 'rest(\"Albert\")',\n 'rest(\"A\",)',\n 'rest(\"\")',\n ],\n },\n 'next': {\n title: 'next',\n category: 'Sequence',\n linkName: 'next',\n returns: {\n type: ['sequence', 'null'],\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'If $seq is an array, returns a new array with all but the first element from $seq. If $seq has less than two elements, `null` is returned. For string $seq returns all but the first characters in $seq. If length of string $seq is less than two, `null` is returned.',\n examples: [\n 'next([\"Albert\", \"Mojir\", 160, [1, 2]])',\n 'next([\"Albert\"])',\n 'next([])',\n 'next(\"Albert\")',\n 'next(\"A\",)',\n 'next(\"\")',\n ],\n },\n 'take': {\n title: 'take',\n category: 'Sequence',\n linkName: 'take',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Constructs a new array/string with the $n first elements from $seq.',\n examples: [\n '[1, 2, 3, 4, 5] take 3',\n 'take([1, 2, 3, 4, 5], 3)',\n 'take([1, 2, 3, 4, 5], 0)',\n 'take(\"Albert\", 2)',\n 'take(\"Albert\", 50)',\n ],\n },\n 'take-last': {\n title: 'take-last',\n category: 'Sequence',\n linkName: 'take-last',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n n: {\n type: 'integer',\n },\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['n', 'seq'] },\n ],\n description: 'Constructs a new array with the $n last elements from $seq.',\n examples: [\n '[1, 2, 3, 4, 5] take-last 3',\n 'take-last([1, 2, 3, 4, 5], 3)',\n 'take-last([1, 2, 3, 4, 5], 0)',\n ],\n },\n 'take-while': {\n title: 'take-while',\n category: 'Sequence',\n linkName: 'take-while',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the members of $seq in order, stopping before the first one for which `predicate` returns a falsy value.',\n examples: [\n `\ntake-while(\n [1, 2, 3, 2, 1],\n -> $ < 3\n)`,\n `\ntake-while(\n [1, 2, 3, 2, 1],\n -> $ > 3\n)`,\n ],\n },\n 'drop': {\n title: 'drop',\n category: 'Sequence',\n linkName: 'drop',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Constructs a new array/string with the $n first elements dropped from $seq.',\n examples: [\n 'drop([1, 2, 3, 4, 5], 3)',\n 'drop([1, 2, 3, 4, 5], 0)',\n 'drop(\"Albert\", 2)',\n 'drop(\"Albert\", 50)',\n ],\n },\n 'drop-last': {\n title: 'drop-last',\n category: 'Sequence',\n linkName: 'drop-last',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Constructs a new array with the $n last elements dropped from $seq.',\n examples: [\n '[1, 2, 3, 4, 5] drop-last 3',\n 'drop-last([1, 2, 3, 4, 5], 3)',\n 'drop-last([1, 2, 3, 4, 5], 0)',\n ],\n },\n 'drop-while': {\n title: 'drop-while',\n category: 'Sequence',\n linkName: 'drop-while',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns the members of $seq in order, skipping the fist elements for witch the `predicate` returns a truethy value.',\n examples: [\n `\ndrop-while(\n [1, 2, 3, 2, 1],\n -> $ < 3\n)`,\n `\ndrop-while(\n [1, 2, 3, 2, 1],\n -> $ > 3\n)`,\n ],\n },\n 'sort': {\n title: 'sort',\n category: 'Sequence',\n linkName: 'sort',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a new sequence with the elements from $seq sorted according to $fun. If no $fun is supplied, builtin `compare` will be used.',\n examples: [\n '[3, 1, 2] sort (a, b) -> b - a',\n 'sort([3, 1, 2])',\n `\nsort(\n [3, 1, 2],\n (a, b) -> cond case a < b then -1 case a > b then 1 case true then -1 end\n)`,\n `\nsort(\n [3, 1, 2],\n (a, b) -> cond case a > b then -1 case a < b then 1 case true then -1 end\n)`,\n ],\n },\n 'sort-by': {\n title: 'sort-by',\n category: 'Sequence',\n linkName: 'sort-by',\n returns: {\n type: 'any',\n rest: true,\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n keyfn: {\n type: 'function',\n },\n comparer: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'keyfn'] },\n { argumentNames: ['seq', 'keyfn', 'comparer'] },\n ],\n description: 'Returns a sorted sequence of the items in $seq, where the sort order is determined by comparing `(keyfn item)`. If no $comparer is supplied, uses builtin `compare`.',\n examples: [\n '[\"Albert\", \"Mojir\", \"Nina\"] sort-by count',\n 'sort-by([\"Albert\", \"Mojir\", \"Nina\"], count)',\n 'sort-by(\"Albert\", lower-case, -> $2 compare $1)',\n ],\n },\n 'distinct': {\n title: 'distinct',\n category: 'Sequence',\n linkName: 'distinct',\n returns: {\n type: 'sequence',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns a copy of $seq with no duplicates.',\n examples: [\n 'distinct([[1], [2], [3], [1], [3], [5]])',\n 'distinct([1, 2, 3, 1, 3, 5])',\n 'distinct(\"Albert Mojir\")',\n 'distinct([])',\n 'distinct(\"\")',\n ],\n },\n 'remove': {\n title: 'remove',\n category: 'Sequence',\n linkName: 'remove',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a new sequence of items in $seq for witch `pred(item)` returns a falsy value.',\n examples: [\n '[1, 2, 3, 1, 3, 5] remove odd?',\n 'remove([1, 2, 3, 1, 3, 5], even?)',\n 'remove(\"Albert Mojir\", -> \"aoueiyAOUEIY\" contains? $)',\n ],\n },\n 'remove-at': {\n title: 'remove-at',\n category: 'Sequence',\n linkName: 'remove-at',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Returns a new sequence of all items in $seq except item at position $n. If $n is negative, it is counting from the end of the sequence.',\n examples: [\n '[1, 2, 3, 1, 3, 5] remove-at 2',\n '\"Albert\" remove-at -2',\n 'remove-at([1, 2, 3, 1, 3, 5], 0)',\n 'remove-at([1, 2, 3, 1, 3, 5], -1)',\n 'remove-at(\"Albert Mojir\", 6)',\n ],\n },\n 'split-at': {\n title: 'split-at',\n category: 'Sequence',\n linkName: 'split-at',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'integer'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n ],\n description: 'Returns a pair of sequence `[take(pos input), drop(pos input)]`.',\n examples: [\n '[1, 2, 3, 4, 5] split-at 2',\n '\"Albert\" split-at -2',\n 'split-at([1, 2, 3, 4, 5], -2)',\n 'split-at(\"Albert\", 2)',\n ],\n },\n 'split-with': {\n title: 'split-with',\n category: 'Sequence',\n linkName: 'split-with',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns a pair of sequences `[take-while(input, fun), drop-while(input, fun)]`.',\n examples: [\n '[1, 2, 3, 4, 5] split-with odd?',\n 'split-with([1, 2, 3, 4, 5], -> $ > 3)',\n 'split-with(\"Albert\", -> $ <= \"o\")',\n ],\n },\n 'frequencies': {\n title: 'frequencies',\n category: 'Sequence',\n linkName: 'frequencies',\n returns: {\n type: 'object',\n },\n args: {\n seq: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq'] },\n ],\n description: 'Returns an object from distinct items in $seq to the number of times they appear. Note that all items in $seq must be valid object keys i.e. strings.',\n examples: [\n 'frequencies([\"Albert\", \"Mojir\", \"Nina\", \"Mojir\"])',\n 'frequencies(\"Pneumonoultramicroscopicsilicovolcanoconiosis\")',\n ],\n },\n 'group-by': {\n title: 'group-by',\n category: 'Sequence',\n linkName: 'group-by',\n returns: {\n type: 'object',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Returns an object of the elements of $seq keyed by the result of $fun on each element. The value at each key will be an array of the corresponding elements.',\n examples: [\n '[{ name := \"Albert\" }, { name := \"Albert\" }, { name := \"Mojir\" }] group-by \"name\"',\n 'group-by([{name := \"Albert\"}, {name := \"Albert\"}, {name := \"Mojir\"}], \"name\")',\n 'group-by(\"Albert Mojir\", -> if \"aoueiAOUEI\" contains? $ then \"vowel\" else \"other\" end)',\n ],\n },\n 'partition': {\n title: 'partition',\n category: 'Sequence',\n linkName: 'partition',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'number'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n pad: {\n type: 'array',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'step'] },\n { argumentNames: ['seq', 'n', 'step', 'pad'] },\n ],\n description: 'Returns an array of sequences of $n items each, at offsets $step apart. If $step is not supplied, defaults to $n. If a $pad array is supplied, use its elements as necessary to complete last partition upto $n items. In case there are not enough padding elements, return a partition with less than $n items.',\n examples: [\n 'range(20) partition 4',\n 'partition(range(20), 4)',\n 'partition(range(22), 4)',\n 'partition(range(20), 4, 6)',\n 'partition(range(20), 4, 3)',\n 'partition(range(20), 3, 6, [\"a\"])',\n 'partition(range(20), 4, 6, [\"a\"])',\n 'partition(range(20), 4, 6, [\"a\", \"b\", \"c\", \"d\"])',\n 'partition([\"a\", \"b\", \"c\", \"d\", \"e\", \"f\"], 3, 1)',\n 'partition([1, 2, 3, 4], 10)',\n 'partition([1, 2, 3, 4], 10, 10)',\n 'partition([1, 2, 3, 4], 10, 10, [])',\n 'partition([1, 2, 3, 4], 10, 10, null)',\n 'partition(\"superfragilistic\", 5)',\n 'partition(\"superfragilistic\", 5, 5, null)',\n 'let foo := [5, 6, 7, 8]; partition(foo, 2, 1, foo)',\n ],\n },\n 'partition-all': {\n title: 'partition-all',\n category: 'Sequence',\n linkName: 'partition-all',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'number'),\n seq: {\n type: 'sequence',\n },\n n: {\n type: 'number',\n },\n step: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['seq', 'n'] },\n { argumentNames: ['seq', 'n', 'step'] },\n ],\n description: 'Returns an array of sequences like partition, but may include partitions with fewer than n items at the end.',\n examples: [\n '[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] partition-all 4',\n 'partition-all([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 4)',\n 'partition([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 4)',\n 'partition-all([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 2, 4)',\n ],\n },\n 'partition-by': {\n title: 'partition-by',\n category: 'Sequence',\n linkName: 'partition-by',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'function'),\n seq: {\n type: 'sequence',\n },\n fun: {\n type: 'function',\n },\n },\n variants: [\n { argumentNames: ['seq', 'fun'] },\n ],\n description: 'Applies $fun to each value in $seq, splitting it each time $fun returns a new value. Returns an array of sequences.',\n examples: [\n '[1, 2, 3, 4, 5] partition-by odd?',\n 'partition-by([1, 2, 3, 4, 5], -> $ = 3)',\n 'partition-by([1, 1, 1, 2, 2, 3, 3], odd?)',\n 'partition-by(\"Leeeeeerrroyyy\", identity)',\n ],\n },\n 'starts-with?': {\n title: 'starts-with?',\n category: 'Sequence',\n linkName: 'starts-with-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('sequence', 'sequence'),\n seq: {\n type: 'sequence',\n },\n prefix: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'prefix'] },\n ],\n description: 'Returns `true` if $seq starts with $prefix, otherwise `false`.',\n examples: [\n '[[1], [2], [3], [4], [5]] starts-with? [1]',\n 'starts-with?([1, 2, 3, 4, 5], 1)',\n 'starts-with?([1, 2, 3, 4, 5], [1])',\n 'starts-with?(\"Albert\", \"Al\")',\n 'starts-with?(\"Albert\", \"al\")',\n ],\n },\n 'ends-with?': {\n title: 'ends-with?',\n category: 'Sequence',\n linkName: 'ends-with-question',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('sequence', 'sequence'),\n seq: {\n type: 'sequence',\n },\n suffix: {\n type: 'sequence',\n },\n },\n variants: [\n { argumentNames: ['seq', 'suffix'] },\n ],\n description: 'Returns `true` if $seq ends with $suffix, otherwise `false`.',\n examples: [\n '[[1], [2], [3], [4], [5]] starts-with? [5]',\n '[[1], [2], [3], [4], [5]] starts-with? 5',\n 'ends-with?([1, 2, 3, 4, 5], 5)',\n 'ends-with?([1, 2, 3, 4, 5], [5])',\n 'ends-with?(\"Albert\", \"rt\")',\n 'ends-with?(\"Albert\", \"RT\")',\n ],\n },\n 'interleave': {\n title: 'interleave',\n category: 'Sequence',\n linkName: 'interleave',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'sequence'),\n seqs: {\n type: 'sequence',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['seqs'] },\n ],\n description: 'Returns a sequence of the first item from each of the $seqs, then the second item from each of the $seqs, until all items from the shortest seq are exhausted.',\n examples: [\n '[1, 2, 3] interleave [4, 5, 6]',\n '\"Albert\" interleave \".,.,.,\"',\n 'interleave([1, 2, 3], [4, 5, 6])',\n 'interleave([1, 2, 3], [4, 5, 6], [7, 8, 9])',\n 'interleave([1, 2, 3], [4, 5, 6], [7, 8])',\n 'interleave([1, 2, 3], [4, 5, 6], [7])',\n 'interleave([1, 2, 3], [4, 5, 6], [])',\n 'interleave([1, 2, 3], [])',\n 'interleave([])',\n ],\n },\n 'interpose': {\n title: 'interpose',\n category: 'Sequence',\n linkName: 'interpose',\n returns: {\n type: 'sequence',\n },\n args: {\n ...getOperatorArgs('sequence', 'any'),\n seq: {\n type: 'sequence',\n },\n separator: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['seq', 'separator'] },\n ],\n description: 'Returns a sequence of the elements of $seq separated by $separator. If $seq is a string, the separator must be a string.',\n examples: [\n '\"Albert\" interpose \"-\"',\n 'interpose([1, 2, 3, 4, 5], \"a\")',\n 'interpose([\"Albert\", \"Mojir\", \"Nina\"], \", \")',\n 'interpose(\"Albert\", \".\")',\n ],\n },\n}\n","import { type SpecialExpressionsApiName, getOperatorArgs } from '../api'\nimport type { CustomReference, FunctionReference } from '..'\n\nexport const specialExpressionsReference: Record<SpecialExpressionsApiName, FunctionReference<'Special expression'> | CustomReference<'Special expression'>> = {\n 'array': {\n title: 'array',\n category: 'Special expression',\n linkName: 'array',\n returns: {\n type: 'any',\n array: true,\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Makes new array from $values.',\n examples: [\n 'array(1, 2, 3)',\n 'array(array(null, false, true))',\n '[]',\n '[1, 2, 3]',\n '[1, 2, ...[3, 4, 5], 6]',\n '[[null, false, true]]',\n '[1, 2, 3][1]',\n ],\n noOperatorDocumentation: true,\n },\n 'object': {\n title: 'object',\n category: 'Special expression',\n linkName: 'object',\n returns: {\n type: 'object',\n },\n args: {\n kvps: {\n type: 'any',\n rest: true,\n description: 'key - value pairs, where key is a string',\n },\n },\n variants: [\n { argumentNames: ['kvps'] },\n ],\n description: 'Constructs a new object. Object members are created from the $kvps key-value pairs. Requires an even number of arguments.',\n examples: [\n 'object()',\n `\nlet default := {\n type := \"Person\",\n name := \"John Doe\",\n age := 42\n};\n\n{\n ...default,\n name := \"Lisa\"\n}`,\n 'object(\"x\", 10, \"y\", true, \"z\", \"A string\")',\n '{}',\n '{ a := 1, b := 2 }',\n ],\n noOperatorDocumentation: true,\n },\n '&&': {\n title: '&&',\n category: 'Special expression',\n linkName: '-and-and',\n returns: {\n type: 'any',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `\nComputes logical \\`and\\`. Evaluation of expressions starts from left.\nAs soon as an \\`expression\\` evaluates to a falsy value, the result is returned.\n\nIf all expressions evaluate to truthy values, the value of the last expression is returned.`,\n examples: [\n 'true && 1',\n '&&(1, 1)',\n '&&(3 > 2, \"string\")',\n '&&(3 < 2, \"string\")',\n '&&(true, true, true, true)',\n '&&(true, true, 0, true)',\n ],\n },\n\n '||': {\n title: '||',\n category: 'Special expression',\n linkName: '-or-or',\n returns: {\n type: 'boolean',\n },\n args: {\n ...getOperatorArgs('any', 'any'),\n c: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['a', 'b'] },\n { argumentNames: ['a', 'b', 'c'] },\n ],\n description: `\n Computes logical \\`or\\`. Evaluation of expressions evaluation starts from left.\n As soon as a \\`expression\\` evaluates to a truthy value, the result is returned.\n\n If all expressions evaluate to falsy values, the value of the last expression is returned.`,\n examples: [\n 'false || 1',\n '||(1, 1)',\n '||(3 > 2, \"string\")',\n '||(3 < 2, \"string\")',\n '||(false, false, false, true)',\n '||(1, 2, 3, 4)',\n ],\n },\n 'let': {\n title: 'let',\n category: 'Special expression',\n linkName: 'let',\n customVariants: ['let s := value;'],\n details: [\n ['s', 'symbol', 'The name of the variable to bind.'],\n ['value', 'any', 'The value to bind to the variable.'],\n ],\n description: `\n Binds local variables s to \\`value\\`. \\`value\\` can be any expression. The scope of the variables is the body of the let expression.`,\n examples: [`\nlet a := 1 + 2 + 3 + 4;\nlet b := -> $ * ( $ + 1 );\nwrite!(\"a\", a, \"b\", b)`],\n },\n 'function': {\n title: 'function',\n category: 'Special expression',\n linkName: 'function',\n customVariants: ['function name(...arg, ...let-binding) body end;'],\n details: [\n ['name', 'symbol', 'The name of the function.'],\n ['arg', '[...]arg-name [:= value]', 'Arguments of the function.'],\n ['...', 'rest-symbol', 'Optional. The rest argument of the function.'],\n ['arg-name', 'symbol', 'The name of the argument.'],\n ['value', 'any', 'Optional. The default value of the argument.'],\n ['let-binding', 'symbol', 'Optional. The let bindings of the function.'],\n ['body', 'one or more expressions', 'The body of the function.'],\n ],\n description: 'Creates a named function. When called, evaluation of the last expression in the body is returned.',\n examples: [\n `\nfunction hyp (a, b)\n sqrt(a * a + b * b)\nend;\n\nhyp(3, 4)`,\n `\nfunction sumOfSquares(...s)\n apply(\n +,\n map(s, -> $ ** 2)\n )\nend;\n\nsumOfSquares(1, 2, 3, 4, 5)`,\n `\nfunction withOptional(a, b := 42)\n a + b\nend;\n\nwrite!(withOptional(1), withOptional(1, 2))`,\n ],\n },\n 'try': {\n title: 'try',\n category: 'Special expression',\n linkName: 'try',\n customVariants: ['try try-body catch catch-body end', 'try try-body catch(error) catch-body end'],\n details: [\n ['try-body', 'expressions', 'The expressions to try.'],\n ['error', 'symbol', 'The error variable to bind.'],\n ['catch-body', 'expression', 'The expressions to evaluate if the try-body throws an error.'],\n ],\n description: 'Executes `try-body`. If that throws, the `catch-body` gets executed. See examples for details.',\n examples: [\n `\ntry\n 2 / 4\ncatch\n \"Oops!\"\nend`,\n `\ntry\n foo()\ncatch(error)\n \"Error: \" ++ error.message\nend`,\n `\ntry\n foo()\ncatch\n 42\nend`,\n ],\n },\n 'throw': {\n title: 'throw',\n category: 'Special expression',\n linkName: 'throw',\n returns: {\n type: 'never',\n },\n args: {\n expr: {\n type: 'any',\n },\n },\n variants: [\n { argumentNames: ['expr'] },\n ],\n description: 'Throws `UserDefinedError` with message set to $expr evaluated. $expr must evaluate to a string.',\n examples: [\n 'try throw(\"You shall not pass!\") catch(error) \"Error: \" ++ error.message end',\n 'try throw(slice(\"You shall not pass!\", 0, 3)) catch(error) \"Error: \" ++ error.message end',\n ],\n },\n 'if': {\n title: 'if',\n category: 'Special expression',\n linkName: 'if',\n customVariants: ['if test then-body else else-body end', 'if test then-body end'],\n details: [\n ['test', 'expression', 'The condition to test.'],\n ['then-body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ['else-body', 'expressions', 'The expressions to evaluate if the test is falsy.'],\n ],\n description: 'Either `then-expr` or `else-expr` branch is taken. `then-expr` is selected when $test is truthy. If $test is falsy `else-expr` is executed, if no `else-expr` exists, `null` is returned.',\n examples: [\n `\nif true then\n write!(\"TRUE\")\nelse\n write!(\"FALSE\")\nend`,\n 'if false then write!(\"TRUE\") else write!(\"FALSE\") end',\n 'if true then write!(\"TRUE\") end',\n 'if false then write!(\"TRUE\") end',\n ],\n },\n 'unless': {\n title: 'unless',\n category: 'Special expression',\n linkName: 'unless',\n customVariants: ['unless test then-body else else-body end', 'unless test then-body end'],\n details: [\n ['test', 'expression', 'The condition to test.'],\n ['then-body', 'expressions', 'The expressions to evaluate if the test is falsy.'],\n ['else-body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Either `then-expr` or `else-expr` branch is taken. `then-expr` is selected when $test is falsy. If $test is truthy `else-expr` is executed, if no `else-expr` exists, `null` is returned.',\n examples: [\n `\nunless true then\n write!(\"TRUE\")\nelse\n write!(\"FALSE\")\nend`,\n 'unless false then write!(\"TRUE\") else write!(\"FALSE\") end',\n 'unless true then write!(\"TRUE\") end',\n 'unless false then write!(\"TRUE\") end',\n ],\n },\n 'cond': {\n title: 'cond',\n category: 'Special expression',\n linkName: 'cond',\n customVariants: ['cond cond-branch cond-branch ... end'],\n details: [\n ['cond-branch', 'case test then body', 'A branch of the cond expression.'],\n ['test', 'expression', 'The condition to test.'],\n ['body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Used for branching. `cond-branches` are tested sequentially from the top. If no branch is tested truthy, `null` is returned.',\n examples: [\n `\ncond\n case false then write!(\"FALSE\")\n case true then write!(\"TRUE\")\nend\n `,\n `\ncond\n case false then write!(\"FALSE\")\n case null then write!(\"null\")\n end ?? write!(\"TRUE\")`,\n `\ncond\n case false then write!(\"FALSE\")\n case null then write!(\"null\")\nend`,\n ],\n },\n 'switch': {\n title: 'switch',\n category: 'Special expression',\n linkName: 'switch',\n customVariants: ['switch value switch-branch switch-branch ... end'],\n details: [\n ['value', 'any', 'The value to test.'],\n ['switch-branch', 'case test then body', 'A branch of the switch expression.'],\n ['test', 'expression', 'The condition to test.'],\n ['body', 'expressions', 'The expressions to evaluate if the test is truthy.'],\n ],\n description: 'Used for branching. `switch-branches` are tested sequentially from the top against `value`. If no branch is tested truthy, `null` is returned.',\n examples: [\n `\nswitch 1\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n `\nswitch 2\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n `\nswitch 3\n case 1 then write!(\"One\")\n case 2 then write!(\"Two\")\nend`,\n ],\n },\n 'do': {\n title: 'do',\n category: 'Special expression',\n linkName: 'do',\n customVariants: ['do body end'],\n details: [\n ['body', 'expressions', 'The expressions to evaluate.'],\n ],\n description: 'Evaluates `body`. Resulting value is the value of the last expression.',\n examples: [\n `\ndo\n let a := 1 + 2 + 3 + 4;\n let b := -> $ * ( $ + 1 );\n b(a)\nend`,\n ],\n },\n 'recur': {\n title: 'recur',\n category: 'Special expression',\n linkName: 'recur',\n customVariants: ['recur(...recur-args)'],\n description: 'Recursevly calls enclosing function or loop with its evaluated `recur-args`.',\n examples: [\n `\nfunction foo(n)\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend;\nfoo(3)`,\n `\n(n -> do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend)(3)`,\n `\nloop let n := 3 do\n write!(n);\n if !(zero?(n)) then\n recur(n - 1)\n end\nend`,\n ],\n },\n // 'loop': {\n // title: 'loop',\n // category: 'Special expression',\n // linkName: 'loop',\n // returns: {\n // type: 'any',\n // },\n // args: {\n // bindings: {\n // type: '*binding',\n // rest: true,\n // },\n // expressions: {\n // type: '*expression',\n // rest: true,\n // },\n // },\n // variants: [\n // { argumentNames: ['bindings', 'expressions'] },\n // ],\n // description: 'Executes $expressions with initial $bindings. The $bindings will be replaced with the recur parameters for subsequent recursions.',\n // examples: [\n // `\n // (loop [n 3]\n // write!(n)\n // (if\n // (! (zero? n))\n // (recur (dec n))))`,\n // `\n // (loop [n 3]\n // write!(n)\n // (if\n // (! (zero? n))\n // (recur (dec n))\n // n))`,\n // ],\n // },\n\n // 'doseq': {\n // title: 'doseq',\n // category: 'Special expression',\n // linkName: 'doseq',\n // returns: {\n // type: 'null',\n // },\n // args: {\n // bindings: {\n // type: '*for-binding',\n // rest: true,\n // },\n // expr: {\n // type: '*expression',\n // },\n // },\n // variants: [\n // { argumentNames: ['vars', 'expr'] },\n // ],\n // description: 'Same syntax as `for`, but returns `null`. Use for side effects. Consumes less memory than `for`.',\n // examples: ['(doseq [x [1 2 4]] write!(x))'],\n // },\n // 'for': {\n // title: 'for',\n // category: 'Special expression',\n // linkName: 'for',\n // returns: {\n // type: 'any',\n // array: true,\n // },\n // args: {\n // bindings: {\n // type: '*for-binding',\n // rest: true,\n // },\n // expr: {\n // type: '*expression',\n // },\n // },\n // variants: [\n // { argumentNames: ['vars', 'expr'] },\n // ],\n // description: `List comprehension. Takes one or more $bindings, each followed by zero or more modifiers, and returns an array of evaluations of $expr.\n\n // Collections are iterated in a nested fashion, rightmost fastest. Supported modifiers are: &let &while and &when.`,\n // examples: [\n // `\n // (for [x \"Al\" y [1 2]]\n // (repeat y x))`,\n // `\n // (for [x {:a 10 :b 20} y [1 2]]\n // (repeat y x))`,\n // `\n // (for [x [1 2] y [1 10]]\n // (* x y))`,\n // `\n // (for\n // [x [1 2]\n // &let [z (* x x x)]]\n\n // z)`,\n // `\n // (for\n // [x [0 1 2 3 4 5]\n // &let [y (* x 3)]\n // &when (even? y)]\n\n // y)`,\n // `\n // (for\n // [x [0 1 2 3 4 5]\n // &let [y (* x 3)]\n // &while (even? y)]\n\n // y)`,\n // `\n // (for\n // [x [0 1 2 3 4 5]\n // &let [y (* x 3)]\n // &while (odd? y)]\n\n // y)`,\n // `\n // (for\n // [x [1 2 3] y [1 2 3]\n // &while (<= x y)\n // z [1 2 3]]\n\n // [x y z])`,\n // `\n // (for\n // [x [1 2 3] y [1 2 3] z [1 2 3]\n // &while (<= x y)]\n\n// [x y z])`,\n// ],\n// },\n// 'defined?': {\n// title: 'defined?',\n// category: 'Special expression',\n// linkName: 'defined-question',\n// returns: {\n// type: 'boolean',\n// },\n// args: {\n// n: {\n// type: '*name',\n// },\n// },\n// variants: [\n// { argumentNames: ['n'] },\n// ],\n// description: 'Returns `true` if $n is a declared variable or a builtin function, otherwise `false`.',\n// examples: [\n// '(defined? foo)',\n// `\n// (def foo :foo)\n// (defined? foo)`,\n// '(defined? +)',\n// `\n// (def foo null)\n// (defined? foo)`,\n// '(defined? if)',\n// ],\n// },\n// '??': {\n// title: '??',\n// category: 'Special expression',\n// linkName: '-question-question',\n// returns: {\n// type: 'any',\n// },\n// args: {\n// test: {\n// type: '*expression',\n// },\n// default: {\n// type: '*expression',\n// },\n// },\n// variants: [\n// { argumentNames: ['test'] },\n// { argumentNames: ['test', 'default'] },\n// ],\n// description: 'If $test is declared and evaluated to non `null` value $test is result, else $default is returned. If $default is not provided, `null` is returned.',\n// examples: [\n// '(?? foo)',\n// `\n// (def foo :foo)\n// (?? foo)`,\n// '(?? +)',\n// `\n// (def foo null)\n// (?? foo)`,\n// `\n// (def foo null)\n// (?? foo :bar)`,\n// '(?? foo 1)',\n// '(?? \"\")',\n// '(?? 0)',\n// '(?? 0 1)',\n// '(?? 2 1)',\n// ],\n// },\n}\n","import type { FunctionReference } from '..'\nimport { type StringApiName, getOperatorArgs } from '../api'\n\nexport const stringReference: Record<StringApiName, FunctionReference<'String'>> = {\n 'string-repeat': {\n title: 'string-repeat',\n category: 'String',\n linkName: 'string-repeat',\n returns: {\n type: 'number',\n },\n args: {\n ...getOperatorArgs('string', 'integer'),\n s: {\n type: 'string',\n },\n n: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'n'] },\n ],\n description: 'Repeates $s $n times.',\n examples: [\n '\"*\" string-repeat 10',\n 'string-repeat(\"*\", 10)',\n 'string-repeat(\"***\", 0)',\n ],\n },\n 'str': {\n title: 'str',\n category: 'String',\n linkName: 'str',\n returns: {\n type: 'string',\n },\n args: {\n values: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['values'] },\n ],\n description: 'Concatenats $values into one string. If `value` equals `null` empty string is returned.',\n examples: [\n 'str(\"A string\", \", and another string\", \" ...and more\")',\n 'str(\"Just one string\")',\n 'str()',\n 'str(0, false, true, null, #\"^kalle\", [1, 2, 3], {a := \"a\"})',\n ],\n noOperatorDocumentation: true,\n },\n 'number': {\n title: 'number',\n category: 'String',\n linkName: 'number',\n returns: {\n type: 'number',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Parses $s to a number.',\n examples: [\n 'number(\"10\")',\n 'number(\"010\")',\n 'number(\"-1.01\")',\n ],\n },\n 'lower-case': {\n title: 'lower-case',\n category: 'String',\n linkName: 'lower-case',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to lower case.',\n examples: [\n 'lower-case(\"Albert\")',\n 'lower-case(\"\")',\n ],\n },\n 'upper-case': {\n title: 'upper-case',\n category: 'String',\n linkName: 'upper-case',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s converted to upper case.',\n examples: [\n 'upper-case(\"Albert\")',\n 'upper-case(\"\")',\n ],\n },\n 'trim': {\n title: 'trim',\n category: 'String',\n linkName: 'trim',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading and trailing whitespaces removed.',\n examples: [\n 'trim(\" Albert \")',\n 'trim(\" \")',\n 'trim(\"\")',\n ],\n },\n 'trim-left': {\n title: 'trim-left',\n category: 'String',\n linkName: 'trim-left',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with leading whitespaces removed.',\n examples: [\n 'trim-left(\" Albert \")',\n 'trim-left(\" \")',\n 'trim-left(\"\")',\n ],\n },\n 'trim-right': {\n title: 'trim-right',\n category: 'String',\n linkName: 'trim-right',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a new string with trailing whitespaces removed.',\n examples: [\n 'trim-right(\" Albert \")',\n 'trim-right(\" \")',\n 'trim-right(\"\")',\n ],\n },\n 'pad-left': {\n title: 'pad-left',\n category: 'String',\n linkName: 'pad-left',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('string', 'integer'),\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given $length.',\n examples: [\n '\"Albert\" pad-left 20',\n 'pad-left(\"Albert\", 20)',\n 'pad-left(\"Albert\", 20, \"-*-\")',\n 'pad-left(\"Albert\", 5)',\n 'pad-left(\"Albert\", -1)',\n ],\n },\n 'pad-right': {\n title: 'pad-right',\n category: 'String',\n linkName: 'pad-right',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('string', 'integer'),\n s: {\n type: 'string',\n },\n length: {\n type: 'integer',\n },\n padString: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s', 'length'] },\n { argumentNames: ['s', 'length', 'padString'] },\n ],\n description: 'Pads from the start of $s with `padString` (multiple times, if needed) until the resulting string reaches the given `length`.',\n examples: [\n '\"Albert\" pad-right 20',\n 'pad-right(\"Albert\", 20)',\n 'pad-right(\"Albert\", 20, \"-*-\")',\n 'pad-right(\"Albert\", 5)',\n 'pad-right(\"Albert\", -1)',\n ],\n },\n 'split': {\n title: 'split',\n category: 'String',\n linkName: 'split',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('string', 'string'),\n s: {\n type: 'string',\n },\n delimiter: {\n type: 'string',\n },\n limit: {\n type: 'integer',\n },\n },\n variants: [\n { argumentNames: ['s', 'delimiter'] },\n { argumentNames: ['s', 'delimiter', 'limit'] },\n ],\n description: 'Divides $s into an array of substrings. The division is done by searching for `delimiter`. If `limit` as provided, at most `limit` number of substrings are returned.',\n examples: [\n '\"Albert Mojir\" split \" \"',\n 'split(\"Albert Mojir\", \" \")',\n 'split(\"abcdefghijklmnopqrstuvw\", #\"[aoueiy]\")',\n 'split(\"0123456789\", \"\")',\n 'split(\"0123456789\", \"\", 5) map number',\n ],\n },\n 'split-lines': {\n title: 'split-lines',\n category: 'String',\n linkName: 'split-lines',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Divides $s into an array of substrings, each representing a line.',\n examples: [\n 'split-lines(\"Albert\\nMojir\\n\")',\n 'split-lines(\"Albert\\n\\nMojir\")',\n 'split-lines(\"Albert\\nMojir\\n\\n\")',\n 'split-lines(\"\")',\n ],\n },\n 'template': {\n title: 'template',\n category: 'String',\n linkName: 'template',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n params: {\n type: 'any',\n rest: true,\n },\n },\n variants: [\n { argumentNames: ['s', 'params'] },\n ],\n description: 'Applies placeholders to a string. Support for basic pluralization - see examples. If pluralization is used, first placeholder must be a number.',\n examples: [\n 'template(\"Hi, $1 and $2\", \"Carl\", \"Larry\")',\n 'template(\"Hi $1, $2, $3, $4, $5, $6, $7, $8 and $9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\")',\n 'template(\"$1 book||||$1 books\", 0)',\n 'template(\"$1 book||||$1 books\", 1)',\n 'template(\"$1 book||||$1 books\", 2)',\n 'template(\"No book||||$1 book||||$1 books\", 0)',\n 'template(\"No book||||$1 book||||$1 books\", 1)',\n 'template(\"No book||||$1 book||||$1 books\", 10)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 0)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 1)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 2)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 3)',\n 'template(\"No book||||One book||||Two books||||Three books||||$1 books\", 4)',\n ],\n noOperatorDocumentation: true,\n },\n 'to-char-code': {\n title: 'to-char-code',\n category: 'String',\n linkName: 'to-char-code',\n returns: {\n type: 'number',\n },\n args: {\n c: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['c'] },\n ],\n description: 'Return code point for first character in $c.',\n examples: [\n 'to-char-code(\"A\")',\n 'to-char-code(\"Albert\")',\n ],\n },\n 'from-char-code': {\n title: 'from-char-code',\n category: 'String',\n linkName: 'from-char-code',\n returns: {\n type: 'string',\n },\n args: {\n code: {\n type: 'number',\n },\n },\n variants: [\n { argumentNames: ['code'] },\n ],\n description: 'Return character for code point $code.',\n examples: [\n 'from-char-code(65)',\n 'from-char-code(0)',\n ],\n },\n 'encode-base64': {\n title: 'encode-base64',\n category: 'String',\n linkName: 'encode-base64',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns a Base64 encoded string from $s.',\n examples: [\n 'encode-base64(\"Albert\")',\n ],\n },\n 'decode-base64': {\n title: 'decode-base64',\n category: 'String',\n linkName: 'decode-base64',\n returns: {\n type: 'string',\n },\n args: {\n base64string: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['base64string'] },\n ],\n description: 'Returns a Base64 decoded string from $base64string.',\n examples: [\n 'decode-base64(\"QWxiZXJ0IPCfkLs=\")',\n ],\n },\n 'encode-uri-component': {\n title: 'encode-uri-component',\n category: 'String',\n linkName: 'encode-uri-component',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an escaped `URI` string.',\n examples: [\n 'encode-uri-component(\"Hi everyone!?\")',\n ],\n },\n 'decode-uri-component': {\n title: 'decode-uri-component',\n category: 'String',\n linkName: 'decode-uri-component',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns an un-escaped `URI` string.',\n examples: [\n 'decode-uri-component(\"Hi%20everyone!%3F%20%F0%9F%91%8D\")',\n ],\n },\n\n 'join': {\n title: 'join',\n category: 'String',\n linkName: 'join',\n returns: {\n type: 'string',\n },\n args: {\n ...getOperatorArgs('array', 'string'),\n arr: {\n type: 'array',\n },\n delimiter: {\n type: 'string',\n },\n },\n variants: [{\n argumentNames: ['arr', 'delimiter'],\n }],\n description: 'Returns a new string by concatenating all of the elements in $arr, separated by $delimiter.',\n examples: [\n 'map([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], str) join \", \"',\n '([0, 1, 2, 3, 4, 5, 6, 7, 8, 9] map str) join \", \"',\n 'join([\"Albert\", 10], \", \")',\n 'join([\"Albert\", \"Mojir\"], \" \")',\n 'join(map([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], str), \", \")',\n ],\n },\n 'capitalize': {\n title: 'capitalize',\n category: 'String',\n linkName: 'capitalize',\n returns: {\n type: 'string',\n },\n args: {\n s: {\n type: 'string',\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns $s with the first character converted to uppercase and the rest to lowercase.',\n examples: [\n 'capitalize(\"albert\")',\n 'capitalize(\"ALBERT\")',\n 'capitalize(\"aLBERT\")',\n 'capitalize(\"\")',\n ],\n },\n 'blank?': {\n title: 'blank?',\n category: 'String',\n linkName: 'blank-question',\n returns: {\n type: 'boolean',\n },\n args: {\n s: {\n type: ['string', 'null'],\n },\n },\n variants: [\n { argumentNames: ['s'] },\n ],\n description: 'Returns true if $s is null or only contains whitespace characters.',\n examples: [\n 'blank?(\"\")',\n 'blank?(null)',\n 'blank?(\"\\n\")',\n 'blank?(\" \")',\n 'blank?(\".\")',\n ],\n },\n}\n","import type { DatatypeName } from './api'\nimport type { DatatypeReference } from '.'\n\nexport const datatype: Record<DatatypeName, DatatypeReference> = {\n '-type-number': {\n datatype: true,\n title: 'number',\n category: 'Datatype',\n linkName: '-type-number',\n description: 'A number',\n examples: [\n '42',\n '3.14',\n ],\n },\n '-type-string': {\n datatype: true,\n title: 'string',\n category: 'Datatype',\n linkName: '-type-string',\n description: 'A string',\n examples: [\n '\"hello\"',\n '\"\"',\n ],\n },\n '-type-object': {\n datatype: true,\n title: 'object',\n category: 'Datatype',\n linkName: '-type-object',\n description: 'An object, a collection of key-value pairs where keys are strings',\n examples: [\n '{}',\n '{ a := 1, b := 2}',\n ],\n },\n '-type-array': {\n datatype: true,\n title: 'array',\n category: 'Datatype',\n linkName: '-type-array',\n description: 'An array, a collection of values',\n examples: [\n '[]',\n '[1, 2, 3]',\n '[\"a\", null, true]',\n ],\n },\n '-type-boolean': {\n datatype: true,\n title: 'boolean',\n category: 'Datatype',\n linkName: '-type-boolean',\n description: 'A boolean',\n examples: [\n 'true',\n 'false',\n ],\n },\n '-type-function': {\n datatype: true,\n title: 'function',\n category: 'Datatype',\n linkName: '-type-function',\n description: 'A function',\n examples: [\n 'x -> x + 1',\n '(a, b, c) -> (a + b) * c',\n '() -> 42',\n '-> $1 + $2',\n ],\n },\n '-type-integer': {\n datatype: true,\n title: 'integer',\n category: 'Datatype',\n linkName: '-type-integer',\n description: 'An integer',\n examples: [\n '42',\n '-42',\n ],\n },\n '-type-any': {\n datatype: true,\n title: 'any',\n category: 'Datatype',\n linkName: '-type-any',\n description: 'Any value',\n examples: [\n '42',\n '\"hello\"',\n 'true',\n 'null',\n ],\n },\n '-type-null': {\n datatype: true,\n title: 'null',\n category: 'Datatype',\n linkName: '-type-null',\n description: 'The value null',\n examples: [\n 'null',\n ],\n },\n '-type-collection': {\n datatype: true,\n title: 'collection',\n category: 'Datatype',\n linkName: '-type-collection',\n description: 'A collection, an object, an array or a string',\n examples: [\n '{ foo := 42 }',\n '[1, 2, 3]',\n '\"hello\"',\n ],\n },\n '-type-sequence': {\n datatype: true,\n title: 'sequence',\n category: 'Datatype',\n linkName: '-type-sequence',\n description: 'A sequence, an array or a string',\n examples: [\n '[1, 2, 3]',\n '\"hello\"',\n ],\n },\n '-type-regexp': {\n datatype: true,\n title: 'regexp',\n category: 'Datatype',\n linkName: '-type-regexp',\n description: 'A regular expression',\n examples: [\n 'regexp(\"^\\\\\\\\s*(.*)$\")',\n '#\"albert\"ig',\n ],\n },\n '-type-never': {\n datatype: true,\n title: 'never',\n category: 'Datatype',\n linkName: '-type-never',\n description: 'A value that can never be created',\n examples: [`\n// throw(\"error\") will never return a value\ntry throw(\"error\") catch \"never\" end`,\n ],\n },\n}\n","import type { ShorthandName } from './api'\nimport type { ShorthandReference } from '.'\n\nexport const shorthand: Record<ShorthandName, ShorthandReference> = {\n '-short-regexp': {\n shorthand: true,\n title: '#\"pattern\"',\n category: 'Shorthand',\n linkName: '-short-regexp',\n description: 'Shorthand for `regexp(pattern)`. Only difference is that escaping is not needed.',\n examples: [\n '#\"^\\\\s*(.*)$\"',\n '#\"albert\"ig',\n ],\n seeAlso: ['regexp'],\n },\n '-short-fn': {\n shorthand: true,\n title: '=> expression',\n category: 'Shorthand',\n linkName: '-short-fn',\n description: `\nShorthand for \\`(args, ...) => expression\\`.\n\\`$1, $2, $3, ...\\` are shorthand for the first, second, third, ... argument.\n\nYou can reference the first argument using either \\`$1\\` or \\`$\\`.\nHowever, please note that \\`$1\\` and \\`$\\` are mutually exclusive and cannot be used simultaneously.\nE.g. \\`#(* $ $1)\\` is not valid.`,\n examples: [\n '-> $1 + $2',\n '(-> $ * $)(9)',\n ],\n },\n}\n","import type { SpecialExpressionName } from '../src/builtin'\nimport { specialExpressions } from '../src/builtin'\nimport { normalExpressions } from '../src/builtin/normalExpressions'\nimport { specialExpressionTypes } from '../src/builtin/specialExpressionTypes'\nimport { isSymbolicOperator } from '../src/tokenizer/operators'\nimport { canBeOperator } from '../src/typeGuards'\nimport type { ApiName, Category, DataType, NormalExpressionName } from './api'\nimport { arrayReference } from './categories/array'\nimport { assertReference } from './categories/assert'\nimport { bitwiseReference } from './categories/bitwise'\nimport { collectionReference } from './categories/collection'\nimport { functionalReference } from './categories/functional'\nimport { mathReference } from './categories/math'\nimport { miscReference } from './categories/misc'\nimport { objectReference } from './categories/object'\nimport { predicateReference } from './categories/predicate'\nimport { regularExpressionReference } from './categories/regularExpression'\nimport { sequenceReference } from './categories/sequence'\nimport { specialExpressionsReference } from './categories/specialExpressions'\nimport { stringReference } from './categories/string'\nimport { datatype } from './datatype'\nimport { shorthand } from './shorthand'\n\nexport interface TypedValue {\n type: DataType[] | DataType\n rest?: true\n array?: true\n}\n\ntype NormalExpressionArgument = TypedValue & {\n description?: string\n}\n\nexport type Argument = NormalExpressionArgument\n\ninterface Variant {\n argumentNames: string[]\n}\n\nexport interface CommonReference<T extends Category> {\n title: string\n category: T\n linkName: string\n examples: string[]\n description: string\n seeAlso?: ApiName[]\n}\nexport type FunctionReference<T extends Category = Category> = CommonReference<T> & {\n returns: TypedValue\n args: Record<string, Argument>\n variants: Variant[]\n aliases?: string[]\n noOperatorDocumentation?: true\n _isOperator?: boolean\n _prefereOperator?: boolean\n}\n\nexport type CustomReference<T extends Category = Category> = CommonReference<T> & {\n customVariants: string[]\n details?: [string, string, string | undefined][]\n}\n\nexport interface ShorthandReference extends CommonReference<'Shorthand'> {\n shorthand: true\n linkName: `-short-${string}`\n}\n\nexport interface DatatypeReference extends CommonReference<'Datatype'> {\n datatype: true\n linkName: `-type-${string}`\n}\n\nexport type Reference<T extends Category = Category> = FunctionReference<T> | CustomReference<T> | ShorthandReference | DatatypeReference\n\nexport function isFunctionReference<T extends Category>(ref: Reference<T>): ref is FunctionReference<T> {\n return 'returns' in ref && 'args' in ref && 'variants' in ref\n}\n\nexport function isCustomReference<T extends Category>(ref: Reference<T>): ref is CustomReference<T> {\n return 'customVariants' in ref\n}\n\nexport function isShorthandReference<T extends Category>(ref: Reference<T>): ref is ShorthandReference {\n return 'shorthand' in ref\n}\n\nexport function isDatatypeReference<T extends Category>(ref: Reference<T>): ref is DatatypeReference {\n return 'datatype' in ref\n}\n\nexport const normalExpressionReference: Record<NormalExpressionName, FunctionReference> = {\n ...collectionReference,\n ...arrayReference,\n ...sequenceReference,\n ...mathReference,\n ...functionalReference,\n ...miscReference,\n ...objectReference,\n ...predicateReference,\n ...regularExpressionReference,\n ...stringReference,\n ...bitwiseReference,\n ...assertReference,\n}\n\nObject.entries(normalExpressionReference).forEach(([key, obj]) => {\n const paramCount = normalExpressions[key]!.paramCount\n if (!obj.noOperatorDocumentation && canBeOperator(paramCount)) {\n obj._isOperator = true\n if (isSymbolicOperator(key)) {\n obj._prefereOperator = true\n }\n }\n})\n\nObject.entries(specialExpressionsReference).forEach(([key, obj]) => {\n if (isFunctionReference(obj)) {\n const paramCount = specialExpressions[specialExpressionTypes[key as SpecialExpressionName]]?.paramCount\n if (paramCount && canBeOperator(paramCount)) {\n obj._isOperator = true\n }\n }\n})\n\nexport const functionReference = {\n ...normalExpressionReference,\n ...specialExpressionsReference,\n}\n\nexport const apiReference: Record<ApiName, Reference> = { ...functionReference, ...shorthand, ...datatype }\n\nObject.values(apiReference).forEach((ref) => {\n ref.title = ref.title.replace(/\"/g, '&quot;')\n})\n"],"names":["isLitsFunction","evalueateBindingTargetValues"],"mappings":"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","x_google_ignoreList":[0]}