@mojir/lits 2.1.2 → 2.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"lits.iife.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":"lits.iife.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 { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asNumber, assertNumber } from '../../../typeGuards/number'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { collHasKey, compare, deepEqual, toAny, toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const sequenceNormalExpression: BuiltinNormalExpressions = {\n 'nth': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, i] = params\n const defaultValue = toAny(params[2])\n\n assertNumber(i, sourceCodeInfo, { integer: true })\n\n if (seq === null)\n return defaultValue\n\n assertSeq(seq, sourceCodeInfo)\n return i >= 0 && i < seq.length ? toAny(seq[i]) : defaultValue\n },\n paramCount: { min: 2, max: 3 },\n },\n 'filter': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n if (Array.isArray(seq))\n return seq.filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return seq\n .split('')\n .filter(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'first': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[0])\n },\n paramCount: 1,\n },\n 'last': {\n evaluate: ([array], sourceCodeInfo): Any => {\n if (array === null)\n return null\n\n assertSeq(array, sourceCodeInfo)\n return toAny(array[array.length - 1])\n },\n paramCount: 1,\n },\n 'map': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }) => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n return seq.map(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n }\n else {\n return seq\n .split('')\n .map((elem) => {\n const newVal = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo, { char: true })\n return newVal\n })\n .join('')\n }\n },\n paramCount: 2,\n },\n 'pop': {\n evaluate: ([seq], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n return seq.substring(0, seq.length - 1)\n }\n\n return seq.slice(0, seq.length - 1)\n },\n paramCount: 1,\n },\n 'position': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): number | null => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n const index = seq.split('').findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.indexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'last-index-of': {\n evaluate: ([seq, value], sourceCodeInfo): number | null => {\n assertAny(value, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(value, sourceCodeInfo)\n const index = seq.lastIndexOf(value)\n return index !== -1 ? index : null\n }\n else {\n const index = seq.findLastIndex(item => deepEqual(asAny(item, sourceCodeInfo), value), sourceCodeInfo)\n return index !== -1 ? index : null\n }\n },\n paramCount: 2,\n },\n 'push': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [seq, ...values].join('')\n }\n else {\n return [...seq, ...values]\n }\n },\n paramCount: { min: 2 },\n },\n 'reductions': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any[] => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return [executeFunction(fn, [], contextStack, sourceCodeInfo)]\n else if (seq.length === 1)\n return [toAny(seq[0])]\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n const resultArray: Any[] = [asAny(chars[0], sourceCodeInfo)]\n chars.slice(1).reduce(\n (result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n },\n asAny(chars[0], sourceCodeInfo),\n )\n return resultArray\n }\n else {\n const resultArray: Any[] = [toAny(seq[0])]\n seq.slice(1).reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, toAny(seq[0]))\n return resultArray\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n else {\n if (seq.length === 0)\n return [val]\n\n const resultArray: Any[] = [val]\n seq.reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n resultArray.push(newVal)\n return newVal\n }, val)\n return resultArray\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(1).reduce(\n (result: Any, elem) => {\n const val = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return val\n },\n asAny(chars[0], sourceCodeInfo),\n )\n }\n else {\n return seq.slice(1).reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, toAny(seq[0]))\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(val, sourceCodeInfo)\n if (seq.length === 0)\n return val\n\n return seq.split('').reduce((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduce((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'reduce-right': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const [seq, fn] = params\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (params.length === 2) {\n if (seq.length === 0)\n return executeFunction(fn, [], contextStack, sourceCodeInfo)\n else if (seq.length === 1)\n return toAny(seq[0])\n\n if (typeof seq === 'string') {\n const chars = seq.split('')\n return chars.slice(0, chars.length - 1).reduceRight(\n (result, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n assertString(newVal, sourceCodeInfo)\n return newVal\n },\n chars[chars.length - 1] as string,\n )\n }\n else {\n return seq.slice(0, seq.length - 1).reduceRight(\n (result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n },\n asAny(seq[seq.length - 1], sourceCodeInfo),\n )\n }\n }\n else {\n const val = params[2]\n assertAny(val, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n if (seq.length === 0)\n return val\n\n return seq.split('').reduceRight((result: Any, elem) => {\n const newVal = executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n return newVal\n }, val)\n }\n else {\n if (seq.length === 0)\n return val\n\n return seq.reduceRight((result: Any, elem) => {\n return executeFunction(fn, [result, elem], contextStack, sourceCodeInfo)\n }, val)\n }\n }\n },\n paramCount: { min: 2, max: 3 },\n },\n 'rest': {\n evaluate: ([seq], sourceCodeInfo): Arr | string => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return []\n\n return seq.slice(1)\n }\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'next': {\n evaluate: ([seq], sourceCodeInfo): Arr | string | null => {\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq)) {\n if (seq.length <= 1)\n return null\n\n return seq.slice(1)\n }\n if (seq.length <= 1)\n return null\n\n return seq.substring(1)\n },\n paramCount: 1,\n },\n 'reverse': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n if (Array.isArray(seq))\n return [...seq].reverse()\n\n return seq.split('').reverse().join('')\n },\n paramCount: 1,\n },\n 'second': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n return toAny(seq[1])\n },\n paramCount: 1,\n },\n 'shift': {\n evaluate: ([seq], sourceCodeInfo): Any => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string')\n return seq.substring(1)\n\n const copy = [...seq]\n copy.shift()\n return copy\n },\n paramCount: 1,\n },\n 'slice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, from, to] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(from, sourceCodeInfo, { integer: true })\n\n if (params.length === 2)\n return seq.slice(from)\n\n assertNumber(to, sourceCodeInfo, { integer: true })\n return seq.slice(from, to)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'splice': {\n evaluate: (params, sourceCodeInfo): Any => {\n const [seq, start, deleteCount, ...rest] = params\n assertSeq(seq, sourceCodeInfo)\n assertNumber(start, sourceCodeInfo, { integer: true })\n assertNumber(deleteCount, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const from = start < 0 ? seq.length + start : start\n\n if (Array.isArray(seq)) {\n return [...seq.slice(0, from), ...rest, ...seq.slice(from + deleteCount)]\n }\n\n rest.forEach(elem => assertString(elem, sourceCodeInfo))\n return `${seq.substring(0, from)}${rest.join('')}${seq.substring(from + deleteCount)}`\n },\n paramCount: { min: 3 },\n },\n 'some': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(fn, sourceCodeInfo)\n if (seq === null)\n return null\n\n assertSeq(seq, sourceCodeInfo)\n\n if (seq.length === 0)\n return null\n\n if (typeof seq === 'string')\n return seq.split('').find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)) ?? null\n\n return toAny(seq.find(elem => executeFunction(fn, [elem], contextStack, sourceCodeInfo)))\n },\n paramCount: 2,\n },\n 'sort': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq] = params\n const defaultComparer = params.length === 1\n const comparer = defaultComparer ? null : params[1]\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => compare(a, b, sourceCodeInfo))\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n })\n }\n else {\n result.sort((a, b) => {\n assertLitsFunction(comparer, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [a, b], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 1, max: 2 },\n },\n 'sort-by': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n const [seq, keyfn] = params\n const defaultComparer = params.length === 2\n\n assertSeq(seq, sourceCodeInfo)\n assertAny(keyfn, sourceCodeInfo)\n const comparer = defaultComparer ? null : params[2]\n\n if (typeof seq === 'string') {\n const result = seq.split('')\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result.join('')\n }\n\n const result = [...seq]\n if (defaultComparer) {\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n assertStringOrNumber(aKey, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n assertStringOrNumber(bKey, sourceCodeInfo)\n return compare(aKey, bKey, sourceCodeInfo)\n })\n }\n else {\n assertLitsFunction(comparer, sourceCodeInfo)\n result.sort((a, b) => {\n const aKey = executeFunction(keyfn, [a], contextStack, sourceCodeInfo)\n const bKey = executeFunction(keyfn, [b], contextStack, sourceCodeInfo)\n const compareValue = executeFunction(comparer, [aKey, bKey], contextStack, sourceCodeInfo)\n assertNumber(compareValue, sourceCodeInfo, { finite: true })\n return compareValue\n })\n }\n return result\n },\n paramCount: { min: 2, max: 3 },\n },\n 'take': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n return input.slice(0, num)\n },\n paramCount: 2,\n },\n 'take-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n const from = array.length - num\n return array.slice(from)\n },\n paramCount: 2,\n },\n 'take-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n const result: Arr = []\n for (const item of seq) {\n if (executeFunction(fn, [item], contextStack, sourceCodeInfo))\n result.push(item)\n else\n break\n }\n return typeof seq === 'string' ? result.join('') : result\n },\n paramCount: 2,\n },\n 'drop': {\n evaluate: ([input, n], sourceCodeInfo): Seq => {\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n assertSeq(input, sourceCodeInfo)\n return input.slice(num)\n },\n paramCount: 2,\n },\n 'drop-last': {\n evaluate: ([array, n], sourceCodeInfo): Seq => {\n assertSeq(array, sourceCodeInfo)\n assertNumber(n, sourceCodeInfo)\n const num = Math.max(Math.ceil(n), 0)\n\n const from = array.length - num\n return array.slice(0, from)\n },\n paramCount: 2,\n },\n 'drop-while': {\n evaluate: ([seq, fn]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertSeq(seq, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n if (Array.isArray(seq)) {\n const from = seq.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return seq.slice(from)\n }\n const charArray = seq.split('')\n const from = charArray.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n return charArray.slice(from).join('')\n },\n paramCount: 2,\n },\n 'unshift': {\n evaluate: ([seq, ...values], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertCharArray(values, sourceCodeInfo)\n return [...values, seq].join('')\n }\n const copy = [...seq]\n copy.unshift(...values)\n return copy\n },\n paramCount: { min: 2 },\n },\n 'distinct': {\n evaluate: ([input], sourceCodeInfo): Seq => {\n assertSeq(input, sourceCodeInfo)\n\n if (Array.isArray(input)) {\n const result: Any[] = []\n for (const item of input) {\n assertAny(item, sourceCodeInfo)\n if (!result.some(existingItem => deepEqual(existingItem, item, sourceCodeInfo))) {\n result.push(item)\n }\n }\n return result\n }\n\n return Array.from(new Set(input.split(''))).join('')\n },\n paramCount: 1,\n },\n 'remove': {\n evaluate: ([input, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(input, sourceCodeInfo)\n if (Array.isArray(input))\n return input.filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n\n return input\n .split('')\n .filter(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n .join('')\n },\n paramCount: 2,\n },\n 'remove-at': {\n evaluate: ([input, index], sourceCodeInfo): Seq => {\n assertNumber(index, sourceCodeInfo, { integer: true })\n assertSeq(input, sourceCodeInfo)\n\n const at = index < 0 ? input.length + index : index\n if (at < 0 || at >= input.length)\n return input\n\n if (Array.isArray(input)) {\n return input.filter((_, i) => i !== at)\n }\n return `${input.substring(0, at)}${input.substring(at + 1)}`\n },\n paramCount: 2,\n },\n 'split-at': {\n evaluate: ([seq, pos], sourceCodeInfo): Seq => {\n assertNumber(pos, sourceCodeInfo, { integer: true })\n assertSeq(seq, sourceCodeInfo)\n\n const at = pos < 0 ? seq.length + pos : pos\n return [seq.slice(0, at), seq.slice(at)]\n },\n paramCount: 2,\n },\n\n 'split-with': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const seqIsArray = Array.isArray(seq)\n const arr = seqIsArray ? seq : seq.split('')\n const index = arr.findIndex(elem => !executeFunction(fn, [elem], contextStack, sourceCodeInfo))\n if (index === -1)\n return [seq, seqIsArray ? [] : '']\n\n return [seq.slice(0, index), seq.slice(index)]\n },\n paramCount: 2,\n },\n\n 'frequencies': {\n evaluate: ([seq], sourceCodeInfo): Obj => {\n assertSeq(seq, sourceCodeInfo)\n\n const arr = typeof seq === 'string' ? seq.split('') : seq\n\n return arr.reduce((result: Obj, val) => {\n assertString(val, sourceCodeInfo)\n if (collHasKey(result, val))\n result[val] = (result[val] as number) + 1\n else\n result[val] = 1\n\n return result\n }, {})\n },\n paramCount: 1,\n },\n\n 'group-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Obj => {\n assertAny(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const arr = Array.isArray(seq) ? seq : seq.split('')\n\n return arr.reduce((result: Obj, val) => {\n const key = executeFunction(fn, [val], contextStack, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (!collHasKey(result, key))\n result[key] = []\n\n ;(result[key] as Arr).push(val)\n return result\n }, {})\n },\n paramCount: 2,\n },\n\n 'partition': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length >= 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n const pad = params.length === 4\n ? params[3] === null ? [] : asArray(params[3], sourceCodeInfo)\n : undefined\n\n return partition(n, step, seq, pad, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 4 },\n },\n\n 'partition-all': {\n evaluate: (params, sourceCodeInfo): Seq => {\n const seq = asSeq(params[0], sourceCodeInfo)\n const n = toNonNegativeInteger(asNumber(params[1], sourceCodeInfo))\n const step = params.length === 3 ? toNonNegativeInteger(asNumber(params[2], sourceCodeInfo)) : n\n\n return partition(n, step, seq, [], sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'partition-by': {\n evaluate: ([seq, fn], sourceCodeInfo, contextStack, { executeFunction }): Seq => {\n assertLitsFunction(fn, sourceCodeInfo)\n assertSeq(seq, sourceCodeInfo)\n const isStringSeq = typeof seq === 'string'\n let oldValue: unknown\n\n const result = (isStringSeq ? seq.split('') : seq).reduce((acc: Arr, elem) => {\n const value = executeFunction(fn, [elem], contextStack, sourceCodeInfo)\n if (value !== oldValue) {\n acc.push([])\n oldValue = value\n }\n ;(acc[acc.length - 1] as Arr).push(elem)\n return acc\n }, [])\n\n return isStringSeq ? result.map(elem => (elem as Arr).join('')) : result\n },\n paramCount: 2,\n },\n 'ends-with?': {\n evaluate: ([str, search], sourceCodeInfo): boolean => {\n assertSeq(str, sourceCodeInfo)\n\n if (typeof str === 'string') {\n assertString(search, sourceCodeInfo)\n return str.endsWith(search)\n }\n\n return deepEqual(asAny(str.at(-1), sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'starts-with?': {\n evaluate: ([seq, search], sourceCodeInfo): boolean => {\n assertSeq(seq, sourceCodeInfo)\n\n if (typeof seq === 'string') {\n assertString(search, sourceCodeInfo)\n return seq.startsWith(search)\n }\n\n return deepEqual(asAny(seq[0], sourceCodeInfo), asAny(search, sourceCodeInfo), sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'interleave': {\n evaluate: ([...seqs], sourceCodeInfo): Seq => {\n const isStringSeq = typeof seqs[0] === 'string'\n\n const seqsArr = isStringSeq\n ? seqs.map((seq) => {\n assertString(seq, sourceCodeInfo)\n return seq.split('')\n })\n : seqs.map((seq) => {\n assertArray(seq, sourceCodeInfo)\n return seq\n })\n\n const maxLength = Math.min(...seqsArr.map(seq => seq.length))\n const result: Arr = []\n for (let i = 0; i < maxLength; i += 1) {\n for (const seq of seqsArr) {\n if (i < seq.length)\n result.push(seq[i])\n }\n }\n return isStringSeq ? result.join('') : result\n },\n paramCount: { min: 1 },\n },\n 'interpose': {\n evaluate: ([seq, separator], sourceCodeInfo): Seq => {\n assertSeq(seq, sourceCodeInfo)\n if (typeof seq === 'string') {\n assertString(separator, sourceCodeInfo)\n return seq.split('').join(separator)\n }\n\n if (seq.length === 0)\n return []\n\n const result: Arr = []\n for (let i = 0; i < seq.length - 1; i += 1) {\n result.push(seq[i], separator)\n }\n result.push(seq[seq.length - 1])\n return result\n },\n paramCount: 2,\n },\n\n}\n\nfunction partition(n: number, step: number, seq: Seq, pad: Arr | undefined, sourceCodeInfo?: SourceCodeInfo) {\n assertNumber(step, sourceCodeInfo, { positive: true })\n const isStringSeq = typeof seq === 'string'\n\n const result: Arr[] = []\n let start = 0\n outer: while (start < seq.length) {\n const innerArr: Arr = []\n for (let i = start; i < start + n; i += 1) {\n if (i >= seq.length) {\n const padIndex = i - seq.length\n if (!pad) {\n start += step\n continue outer\n }\n if (padIndex >= pad.length)\n break\n\n innerArr.push(pad[padIndex])\n }\n else {\n innerArr.push(seq[i])\n }\n }\n result.push(innerArr)\n start += step\n }\n return isStringSeq ? result.map(x => x.join('')) : result\n}\n","import { assertNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const mathNormalExpression: BuiltinNormalExpressions = {\n 'inc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first + 1\n },\n paramCount: 1,\n },\n\n 'dec': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return first - 1\n },\n paramCount: 1,\n },\n\n '+': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result + param\n }, 0)\n },\n paramCount: {},\n },\n\n '*': {\n evaluate: (params, sourceCodeInfo): number => {\n return params.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result * param\n }, 1)\n },\n paramCount: {},\n },\n\n '/': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 1\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0) {\n assertNumber(first, sourceCodeInfo)\n return 1 / first\n }\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result / param\n }, first)\n },\n paramCount: {},\n },\n\n '-': {\n evaluate: (params, sourceCodeInfo): number => {\n if (params.length === 0)\n return 0\n\n const [first, ...rest] = params\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return -first\n\n return rest.reduce((result: number, param) => {\n assertNumber(param, sourceCodeInfo)\n return result - param\n }, first)\n },\n paramCount: {},\n },\n\n 'quot': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return quotient\n },\n paramCount: 2,\n },\n\n 'mod': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.floor(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n },\n\n '%': {\n evaluate: ([dividend, divisor], sourceCodeInfo): number => {\n assertNumber(dividend, sourceCodeInfo)\n assertNumber(divisor, sourceCodeInfo)\n const quotient = Math.trunc(dividend / divisor)\n return dividend - divisor * quotient\n },\n paramCount: 2,\n aliases: ['rem'],\n },\n\n '√': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.sqrt(first)\n },\n paramCount: 1,\n aliases: ['sqrt'],\n },\n\n '∛': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.cbrt(first)\n },\n paramCount: 1,\n aliases: ['cbrt'],\n },\n\n '**': {\n evaluate: ([first, second], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n assertNumber(second, sourceCodeInfo)\n return first ** second\n },\n paramCount: 2,\n },\n\n 'round': {\n evaluate: (params, sourceCodeInfo): number => {\n const [value, decimals] = params\n assertNumber(value, sourceCodeInfo)\n if (params.length === 1 || decimals === 0)\n return Math.round(value)\n\n assertNumber(decimals, sourceCodeInfo, { integer: true, nonNegative: true })\n const factor = 10 ** decimals\n return Math.round(value * factor) / factor\n },\n paramCount: { min: 1, max: 2 },\n },\n\n 'trunc': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.trunc(first)\n },\n paramCount: 1,\n },\n\n 'floor': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.floor(first)\n },\n paramCount: 1,\n },\n\n 'ceil': {\n evaluate: ([first], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n return Math.ceil(first)\n },\n paramCount: 1,\n },\n\n 'min': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.min(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'max': {\n evaluate: ([first, ...rest], sourceCodeInfo): number => {\n assertNumber(first, sourceCodeInfo)\n if (rest.length === 0)\n return first\n\n return rest.reduce((min: number, value) => {\n assertNumber(value, sourceCodeInfo)\n return Math.max(min, value)\n }, first)\n },\n paramCount: { min: 1 },\n },\n\n 'abs': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.abs(value)\n },\n paramCount: 1,\n },\n\n 'sign': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sign(value)\n },\n paramCount: 1,\n },\n\n 'log': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log(value)\n },\n paramCount: 1,\n },\n\n 'log2': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log2(value)\n },\n paramCount: 1,\n },\n\n 'log10': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.log10(value)\n },\n paramCount: 1,\n },\n\n 'sin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sin(value)\n },\n paramCount: 1,\n },\n\n 'asin': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asin(value)\n },\n paramCount: 1,\n },\n\n 'sinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.sinh(value)\n },\n paramCount: 1,\n },\n\n 'asinh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.asinh(value)\n },\n paramCount: 1,\n },\n\n 'cos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cos(value)\n },\n paramCount: 1,\n },\n\n 'acos': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acos(value)\n },\n paramCount: 1,\n },\n\n 'cosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.cosh(value)\n },\n paramCount: 1,\n },\n\n 'acosh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.acosh(value)\n },\n paramCount: 1,\n },\n\n 'tan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tan(value)\n },\n paramCount: 1,\n },\n\n 'atan': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atan(value)\n },\n paramCount: 1,\n },\n\n 'tanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.tanh(value)\n },\n paramCount: 1,\n },\n\n 'atanh': {\n evaluate: ([value], sourceCodeInfo): number => {\n assertNumber(value, sourceCodeInfo)\n return Math.atanh(value)\n },\n paramCount: 1,\n },\n}\n","import type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { asAny, assertAny } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\n\nfunction isEqual([first, ...rest]: unknown[], sourceCodeInfo: SourceCodeInfo | undefined) {\n const firstAny = asAny(first, sourceCodeInfo)\n for (const param of rest) {\n if (!deepEqual(firstAny, asAny(param, sourceCodeInfo), sourceCodeInfo))\n return false\n }\n return true\n}\n\nfunction isIdentical([first, ...rest]: unknown[]) {\n for (const param of rest) {\n if (param !== first)\n return false\n }\n\n return true\n}\n\nexport const miscNormalExpression: BuiltinNormalExpressions = {\n '=': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n },\n '≠': {\n evaluate: (params, sourceCodeInfo): boolean => {\n return !isEqual(params, sourceCodeInfo)\n },\n paramCount: { min: 1 },\n aliases: ['!='],\n },\n 'identical?': {\n evaluate: (params): boolean => {\n return isIdentical(params)\n },\n paramCount: { min: 1 },\n },\n '>': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) <= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n\n '<': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) >= 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n },\n '≥': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) < 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['>='],\n },\n '≤': {\n evaluate: ([first, ...rest], sourceCodeInfo): boolean => {\n let currentValue = asStringOrNumber(first)\n for (const param of rest) {\n if (compare(currentValue, asStringOrNumber(param), sourceCodeInfo) > 0)\n return false\n\n currentValue = asStringOrNumber(param)\n }\n return true\n },\n paramCount: { min: 1 },\n aliases: ['<='],\n },\n '!': {\n evaluate: ([first]): boolean => !first,\n paramCount: 1,\n },\n 'epoch->iso-date': {\n evaluate: ([ms], sourceCodeInfo): string => {\n assertNumber(ms, sourceCodeInfo)\n return new Date(ms).toISOString()\n },\n paramCount: 1,\n },\n 'iso-date->epoch': {\n evaluate: ([dateTime], sourceCodeInfo): number => {\n assertString(dateTime, sourceCodeInfo)\n const ms = new Date(dateTime).valueOf()\n assertNumber(ms, sourceCodeInfo, { finite: true })\n return ms\n },\n paramCount: 1,\n },\n 'write!': {\n evaluate: (params, sourceCodeInfo): Any => {\n // eslint-disable-next-line no-console\n console.log(...params)\n\n if (params.length > 0)\n return asAny(params[params.length - 1], sourceCodeInfo)\n\n return null\n },\n paramCount: {},\n },\n 'boolean': {\n evaluate: ([value]): boolean => {\n return !!value\n },\n paramCount: 1,\n },\n 'compare': {\n evaluate: ([a, b], sourceCodeInfo): number => {\n assertStringOrNumber(a, sourceCodeInfo)\n assertStringOrNumber(b, sourceCodeInfo)\n return compare(a, b, sourceCodeInfo)\n },\n paramCount: 2,\n },\n 'json-parse': {\n evaluate: ([first], sourceCodeInfo): Any => {\n assertString(first, sourceCodeInfo)\n // eslint-disable-next-line ts/no-unsafe-return\n return JSON.parse(first)\n },\n paramCount: 1,\n },\n 'json-stringify': {\n evaluate: ([first, second], sourceCodeInfo): string => {\n assertAny(first, sourceCodeInfo)\n if (second === undefined)\n return JSON.stringify(first)\n\n assertNumber(second, sourceCodeInfo)\n return JSON.stringify(first, null, second)\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { LitsError } from '../../../errors'\nimport { AssertionError } from '../../../errors'\nimport type { Any } from '../../../interface'\nimport { compare, deepEqual } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { asAny } from '../../../typeGuards/lits'\n\nexport const assertNormalExpression: BuiltinNormalExpressions = {\n 'assert': {\n evaluate: (params, sourceCodeInfo): Any => {\n const value = params[0]\n const message = params.length === 2 ? params[1] : `${value}`\n assertString(message, sourceCodeInfo)\n if (!value)\n throw new AssertionError(message, sourceCodeInfo)\n\n return asAny(value, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first, null, 2)} to deep equal ${JSON.stringify(second, null, 2)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert!=': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (deepEqual(asAny(first, sourceCodeInfo), asAny(second, sourceCodeInfo), sourceCodeInfo)) {\n throw new AssertionError(\n `Expected ${JSON.stringify(first)} not to deep equal ${JSON.stringify(second)}.${message}`,\n sourceCodeInfo,\n )\n }\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) <= 0)\n throw new AssertionError(`Expected ${first} to be grater than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-gte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) < 0)\n throw new AssertionError(`Expected ${first} to be grater than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lt': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) >= 0)\n throw new AssertionError(`Expected ${first} to be less than ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-lte': {\n evaluate: ([first, second, message], sourceCodeInfo): null => {\n assertStringOrNumber(first, sourceCodeInfo)\n assertStringOrNumber(second, sourceCodeInfo)\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (compare(first, second, sourceCodeInfo) > 0)\n throw new AssertionError(`Expected ${first} to be less than or equal to ${second}.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-true': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== true)\n throw new AssertionError(`Expected ${first} to be true.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-false': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== false)\n throw new AssertionError(`Expected ${first} to be false.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-truthy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (!first)\n throw new AssertionError(`Expected ${first} to be truthy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-falsy': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first)\n throw new AssertionError(`Expected ${first} to be falsy.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-null': {\n evaluate: ([first, message], sourceCodeInfo): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n if (first !== null)\n throw new AssertionError(`Expected ${first} to be null.${message}`, sourceCodeInfo)\n\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n return null\n }\n throw new AssertionError(`Expected function to throw.${message}`, sourceCodeInfo)\n },\n paramCount: { min: 1, max: 2 },\n },\n 'assert-throws-error': {\n evaluate: ([func, throwMessage, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertString(throwMessage, sourceCodeInfo)\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch (error) {\n const errorMessage = (error as LitsError).shortMessage\n if (errorMessage !== throwMessage) {\n throw new AssertionError(\n `Expected function to throw \"${throwMessage}\", but thrown \"${errorMessage}\".${message}`,\n sourceCodeInfo,\n )\n }\n return null\n }\n throw new AssertionError(`Expected function to throw \"${throwMessage}\".${message}`, sourceCodeInfo)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'assert-not-throws': {\n evaluate: ([func, message], sourceCodeInfo, contextStack, { executeFunction }): null => {\n if (message !== undefined) {\n assertString(message, sourceCodeInfo)\n }\n message ??= ''\n assertLitsFunction(func, sourceCodeInfo)\n try {\n executeFunction(func, [], contextStack, sourceCodeInfo)\n }\n catch {\n throw new AssertionError(`Expected function not to throw.${message}`, sourceCodeInfo)\n }\n return null\n },\n paramCount: { min: 1, max: 2 },\n },\n}\n","import type { Any, Arr, Obj } from '../../../interface'\nimport { assertArray, assertStringArray } from '../../../typeGuards/array'\nimport { assertObj } from '../../../typeGuards/lits'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { asString, assertString } from '../../../typeGuards/string'\nimport { collHasKey, toAny } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const objectNormalExpression: BuiltinNormalExpressions = {\n 'keys': {\n evaluate: ([obj], sourceCodeInfo): string[] => {\n assertObj(obj, sourceCodeInfo)\n return Object.keys(obj)\n },\n paramCount: 1,\n },\n\n 'vals': {\n evaluate: ([obj], sourceCodeInfo): Arr => {\n assertObj(obj, sourceCodeInfo)\n return Object.values(obj)\n },\n paramCount: 1,\n },\n\n 'entries': {\n evaluate: ([obj], sourceCodeInfo): Array<[string, unknown]> => {\n assertObj(obj, sourceCodeInfo)\n return Object.entries(obj)\n },\n paramCount: 1,\n },\n\n 'find': {\n evaluate: ([obj, key], sourceCodeInfo): [string, unknown] | null => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n if (collHasKey(obj, key))\n return [key, obj[key]]\n\n return null\n },\n paramCount: 2,\n },\n\n 'dissoc': {\n evaluate: ([obj, key], sourceCodeInfo): Any => {\n assertObj(obj, sourceCodeInfo)\n assertString(key, sourceCodeInfo)\n const newObj = { ...obj }\n delete newObj[key]\n return newObj\n },\n paramCount: 2,\n },\n\n 'merge': {\n evaluate: (params, sourceCodeInfo): Any => {\n if (params.length === 0)\n return null\n\n const [first, ...rest] = params\n assertObj(first, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n return { ...result, ...obj }\n },\n { ...first },\n )\n },\n paramCount: { min: 0 },\n },\n\n 'merge-with': {\n evaluate: (params: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n const first = params[0]\n const fn = params.at(-1)\n const rest = params.slice(1, -1)\n\n assertObj(first, sourceCodeInfo)\n assertLitsFunction(fn, sourceCodeInfo)\n\n return rest.reduce(\n (result: Obj, obj) => {\n assertObj(obj, sourceCodeInfo)\n Object.entries(obj).forEach((entry) => {\n const key = asString(entry[0], sourceCodeInfo)\n const val = toAny(entry[1])\n if (collHasKey(result, key))\n result[key] = executeFunction(fn, [result[key], val], contextStack, sourceCodeInfo)\n else\n result[key] = val\n })\n return result\n },\n { ...first },\n )\n },\n paramCount: { min: 2 },\n },\n\n 'zipmap': {\n evaluate: ([keys, values], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertArray(values, sourceCodeInfo)\n\n const length = Math.min(keys.length, values.length)\n\n const result: Obj = {}\n\n for (let i = 0; i < length; i += 1) {\n const key = asString(keys[i], sourceCodeInfo)\n result[key] = toAny(values[i])\n }\n return result\n },\n paramCount: 2,\n },\n\n 'select-keys': {\n evaluate: ([obj, keys], sourceCodeInfo): Any => {\n assertStringArray(keys, sourceCodeInfo)\n assertObj(obj, sourceCodeInfo)\n\n return keys.reduce((result: Obj, key) => {\n if (collHasKey(obj, key))\n result[key] = toAny(obj[key])\n\n return result\n }, {})\n },\n paramCount: 2,\n },\n}\n","import { isLitsFunction } from '../../../typeGuards/litsFunction'\nimport { assertColl, isColl, isObj, isRegularExpression, isSeq } from '../../../typeGuards/lits'\nimport { assertNumber, isNumber } from '../../../typeGuards/number'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const predicatesNormalExpression: BuiltinNormalExpressions = {\n 'function?': {\n evaluate: ([first]): boolean => isLitsFunction(first),\n paramCount: 1,\n },\n\n 'string?': {\n evaluate: ([first]): boolean => typeof first === 'string',\n paramCount: 1,\n },\n\n 'number?': {\n evaluate: ([first]): boolean => typeof first === 'number',\n paramCount: 1,\n },\n\n 'integer?': {\n evaluate: ([first]): boolean => typeof first === 'number' && isNumber(first, { integer: true }),\n paramCount: 1,\n },\n\n 'boolean?': {\n evaluate: ([first]): boolean => typeof first === 'boolean',\n paramCount: 1,\n },\n\n 'null?': {\n evaluate: ([first]): boolean => first === null || first === undefined,\n paramCount: 1,\n },\n\n 'zero?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first === 0\n },\n paramCount: 1,\n },\n\n 'pos?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first > 0\n },\n paramCount: 1,\n },\n\n 'neg?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first < 0\n },\n paramCount: 1,\n },\n\n 'even?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return first % 2 === 0\n },\n paramCount: 1,\n },\n\n 'odd?': {\n evaluate: ([first], sourceCodeInfo): boolean => {\n assertNumber(first, sourceCodeInfo, { finite: true })\n return isNumber(first, { integer: true }) && first % 2 !== 0\n },\n paramCount: 1,\n },\n\n 'array?': {\n evaluate: ([first]): boolean => {\n return Array.isArray(first)\n },\n paramCount: 1,\n },\n\n 'coll?': {\n evaluate: ([first]): boolean => {\n return isColl(first)\n },\n paramCount: 1,\n },\n\n 'seq?': {\n evaluate: ([first]): boolean => {\n return isSeq(first)\n },\n paramCount: 1,\n },\n\n 'object?': {\n evaluate: ([first]): boolean => isObj(first),\n paramCount: 1,\n },\n\n 'regexp?': {\n evaluate: ([value]): boolean => isRegularExpression(value),\n paramCount: 1,\n },\n\n 'finite?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isFinite(value)\n },\n paramCount: 1,\n },\n\n 'nan?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return Number.isNaN(value)\n },\n paramCount: 1,\n },\n\n 'positive-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.POSITIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'negative-infinity?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n assertNumber(value, sourceCodeInfo)\n return value === Number.NEGATIVE_INFINITY\n },\n paramCount: 1,\n },\n\n 'true?': {\n evaluate: ([value]): boolean => {\n return value === true\n },\n paramCount: 1,\n },\n\n 'false?': {\n evaluate: ([value]): boolean => {\n return value === false\n },\n paramCount: 1,\n },\n\n 'empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return true\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length === 0\n\n if (Array.isArray(coll))\n return coll.length === 0\n\n return Object.keys(coll).length === 0\n },\n paramCount: 1,\n },\n 'not-empty?': {\n evaluate: ([coll], sourceCodeInfo): boolean => {\n if (coll === null)\n return false\n\n assertColl(coll, sourceCodeInfo)\n if (typeof coll === 'string')\n return coll.length > 0\n\n if (Array.isArray(coll))\n return coll.length > 0\n\n return Object.keys(coll).length > 0\n },\n paramCount: 1,\n },\n}\n","import type { RegularExpression } from '../../../parser/types'\nimport { assertRegularExpression, assertStringOrRegularExpression, isRegularExpression } from '../../../typeGuards/lits'\nimport { assertString, isString } from '../../../typeGuards/string'\nimport { REGEXP_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nexport const regexpNormalExpression: BuiltinNormalExpressions = {\n 'regexp': {\n evaluate: ([sourceArg, flagsArg], sourceCodeInfo): RegularExpression => {\n assertString(sourceArg, sourceCodeInfo)\n const source = sourceArg || '(?:)'\n const flags = typeof flagsArg === 'string' ? flagsArg : ''\n // eslint-disable-next-line no-new\n new RegExp(source, flags) // Throws if invalid regexp\n return {\n [REGEXP_SYMBOL]: true,\n sourceCodeInfo,\n s: source,\n f: flags,\n }\n },\n paramCount: { min: 1, max: 2 },\n },\n 'match': {\n evaluate: ([text, regexp], sourceCodeInfo): string[] | null => {\n assertRegularExpression(regexp, sourceCodeInfo)\n if (!isString(text))\n return null\n\n const regExp = new RegExp(regexp.s, regexp.f)\n\n const match = regExp.exec(text)\n if (match)\n return [...match]\n\n return null\n },\n paramCount: 2,\n },\n 'replace': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f}`) : regexp\n return str.replace(matcher, value)\n },\n paramCount: 3,\n },\n 'replace-all': {\n evaluate: ([str, regexp, value], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(regexp, sourceCodeInfo)\n assertString(value, sourceCodeInfo)\n const matcher = isRegularExpression(regexp) ? new RegExp(regexp.s, `${regexp.f.includes('g') ? regexp.f : `${regexp.f}g`}`) : regexp\n\n return str.replaceAll(matcher, value)\n },\n paramCount: 3,\n },\n}\n","import { LitsError } from '../../../errors'\nimport type { Arr } from '../../../interface'\nimport type { SourceCodeInfo } from '../../../tokenizer/token'\nimport { asNonUndefined } from '../../../typeGuards'\nimport { assertArray } from '../../../typeGuards/array'\nimport { assertStringOrRegularExpression, isObj } from '../../../typeGuards/lits'\nimport { assertNumber } from '../../../typeGuards/number'\nimport { asStringOrNumber, assertString, assertStringOrNumber } from '../../../typeGuards/string'\nimport { toNonNegativeInteger } from '../../../utils'\nimport type { BuiltinNormalExpressions } from '../../interface'\n\nconst blankRegexp = /^\\s*$/\nexport const stringNormalExpression: BuiltinNormalExpressions = {\n 'string-repeat': {\n evaluate: ([str, count], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n\n return str.repeat(count)\n },\n paramCount: 2,\n },\n\n 'str': {\n evaluate: (params: Arr) => {\n return params.reduce((result: string, param) => {\n const paramStr\n = param === undefined || param === null\n ? ''\n : isObj(param)\n ? JSON.stringify(param)\n : Array.isArray(param)\n ? JSON.stringify(param)\n : `${param}`\n return result + paramStr\n }, '')\n },\n paramCount: {},\n },\n\n 'number': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo)\n const number = Number(str)\n if (Number.isNaN(number))\n throw new LitsError(`Could not convert '${str}' to a number.`, sourceCodeInfo)\n\n return number\n },\n paramCount: 1,\n },\n\n 'from-char-code': {\n evaluate: ([num], sourceCodeInfo): string => {\n assertNumber(num, sourceCodeInfo, { finite: true })\n const int = toNonNegativeInteger(num)\n try {\n return String.fromCodePoint(int)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'to-char-code': {\n evaluate: ([str], sourceCodeInfo): number => {\n assertString(str, sourceCodeInfo, { nonEmpty: true })\n return asNonUndefined(str.codePointAt(0), sourceCodeInfo)\n },\n paramCount: 1,\n },\n\n 'lower-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toLowerCase()\n },\n paramCount: 1,\n },\n\n 'upper-case': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.toUpperCase()\n },\n paramCount: 1,\n },\n\n 'trim': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.trim()\n },\n paramCount: 1,\n },\n\n 'trim-left': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/^\\s+/, '')\n },\n paramCount: 1,\n },\n\n 'trim-right': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.replace(/\\s+$/, '')\n },\n paramCount: 1,\n },\n\n 'join': {\n evaluate: ([stringList, delimiter], sourceCodeInfo): string => {\n assertArray(stringList, sourceCodeInfo)\n stringList.forEach(str => assertStringOrNumber(str, sourceCodeInfo))\n assertString(delimiter, sourceCodeInfo)\n return stringList.join(delimiter)\n },\n paramCount: 2,\n },\n\n 'split': {\n evaluate: ([str, stringOrRegExpValue, limit], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n assertStringOrRegularExpression(stringOrRegExpValue, sourceCodeInfo)\n if (limit !== undefined)\n assertNumber(limit, sourceCodeInfo, { integer: true, nonNegative: true })\n\n const delimiter\n = typeof stringOrRegExpValue === 'string'\n ? stringOrRegExpValue\n : new RegExp(stringOrRegExpValue.s, stringOrRegExpValue.f)\n return str.split(delimiter, limit)\n },\n paramCount: { min: 2, max: 3 },\n },\n 'split-lines': {\n evaluate: ([str], sourceCodeInfo): string[] => {\n assertString(str, sourceCodeInfo)\n return str.split((/\\r\\n|\\n|\\r/)).filter(line => line !== '')\n },\n paramCount: 1,\n },\n\n 'pad-left': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padStart(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'pad-right': {\n evaluate: ([str, length, padString], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n assertNumber(length, sourceCodeInfo, { integer: true })\n\n if (padString !== undefined)\n assertString(padString, sourceCodeInfo)\n\n return str.padEnd(length, padString)\n },\n paramCount: { min: 2, max: 3 },\n },\n\n 'template': {\n evaluate: ([templateString, ...placeholders], sourceCodeInfo): string => {\n assertString(templateString, sourceCodeInfo)\n assertArray(placeholders, sourceCodeInfo)\n const templateStrings = templateString.split('||||')\n if (templateStrings.length <= 1) {\n return applyPlaceholders(templateStrings[0] as string, placeholders, sourceCodeInfo)\n }\n else {\n // Pluralisation\n const count = placeholders[0]\n assertNumber(count, sourceCodeInfo, { integer: true, nonNegative: true })\n const stringPlaceholders = [`${count}`, ...placeholders.slice(1)] as string[]\n if (templateStrings.length === 2) {\n // Exactly two valiants.\n // First variant (singular) for count = 1, Second variant (plural) for count = 0 or count > 1\n\n const placehoder = templateStrings[count === 1 ? 0 : 1] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n else {\n // More than two variant:\n // Use count as index\n // If count >= number of variants, use last variant\n\n const placehoder = templateStrings[Math.min(count, templateStrings.length - 1)] as string\n return applyPlaceholders(placehoder, stringPlaceholders, sourceCodeInfo)\n }\n }\n },\n paramCount: { min: 1, max: 10 },\n },\n\n 'encode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return btoa(\n encodeURIComponent(value).replace(/%([0-9A-F]{2})/g, (_match, p1) => {\n // eslint-disable-next-line ts/no-unsafe-argument\n return String.fromCharCode(Number.parseInt(p1, 16))\n }),\n )\n },\n paramCount: 1,\n },\n\n 'decode-base64': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(\n Array.prototype.map\n .call(atob(value), (c) => {\n // eslint-disable-next-line ts/no-unsafe-call, ts/no-unsafe-member-access\n return `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`\n })\n .join(''),\n )\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n\n 'encode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n return encodeURIComponent(value)\n },\n paramCount: 1,\n },\n\n 'decode-uri-component': {\n evaluate: ([value], sourceCodeInfo): string => {\n assertString(value, sourceCodeInfo)\n try {\n return decodeURIComponent(value)\n }\n catch (error) {\n throw new LitsError(error as Error, sourceCodeInfo)\n }\n },\n paramCount: 1,\n },\n 'blank?': {\n evaluate: ([value], sourceCodeInfo): boolean => {\n if (value === null) {\n return true\n }\n assertString(value, sourceCodeInfo)\n return blankRegexp.test(value)\n },\n paramCount: 1,\n },\n 'capitalize': {\n evaluate: ([str], sourceCodeInfo): string => {\n assertString(str, sourceCodeInfo)\n return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase()\n },\n paramCount: 1,\n },\n}\n\nconst doubleDollarRegexp = /\\$\\$/g\nfunction applyPlaceholders(templateString: string, placeholders: unknown[], sourceCodeInfo?: SourceCodeInfo): string {\n for (let i = 0; i < 9; i += 1) {\n // Matches $1, $2, ..., $9\n // Does not match $$1\n // But does match $$$1, (since the two first '$' will later be raplaced with a single '$'\n const re = new RegExp(`(\\\\$\\\\$|[^$]|^)\\\\$${i + 1}`, 'g')\n if (re.test(templateString)) {\n const placeHolder = asStringOrNumber(placeholders[i], sourceCodeInfo)\n templateString = templateString.replace(re, `$1${placeHolder}`)\n }\n }\n templateString = templateString.replace(doubleDollarRegexp, '$')\n return templateString\n}\n","import type { Any, Arr } from '../../../interface'\nimport type {\n CompFunction,\n ComplementFunction,\n ConstantlyFunction,\n EveryPredFunction,\n FNullFunction,\n JuxtFunction,\n PartialFunction,\n SomePredFunction,\n} from '../../../parser/types'\nimport { toAny } from '../../../utils'\nimport { assertLitsFunction } from '../../../typeGuards/litsFunction'\nimport { FUNCTION_SYMBOL } from '../../../utils/symbols'\nimport type { BuiltinNormalExpressions } from '../../interface'\nimport { assertArray } from '../../../typeGuards/array'\n\nexport const functionalNormalExpression: BuiltinNormalExpressions = {\n 'apply': {\n evaluate: ([func, ...params]: Arr, sourceCodeInfo, contextStack, { executeFunction }): Any => {\n assertLitsFunction(func, sourceCodeInfo)\n const paramsLength = params.length\n const last = params[paramsLength - 1]\n assertArray(last, sourceCodeInfo)\n const applyArray = [...params.slice(0, -1), ...last]\n return executeFunction(func, applyArray, contextStack, sourceCodeInfo)\n },\n paramCount: { min: 2 },\n },\n\n 'identity': {\n evaluate: ([value]): Any => {\n return toAny(value)\n },\n paramCount: 1,\n },\n\n 'partial': {\n evaluate: ([fn, ...params], sourceCodeInfo): PartialFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Partial',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'comp': {\n evaluate: (params, sourceCodeInfo): CompFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Comp',\n params,\n }\n },\n paramCount: {},\n },\n\n 'constantly': {\n evaluate: ([value], sourceCodeInfo): ConstantlyFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Constantly',\n value: toAny(value),\n }\n },\n paramCount: 1,\n },\n\n 'juxt': {\n evaluate: (params, sourceCodeInfo): JuxtFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Juxt',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'complement': {\n evaluate: ([fn], sourceCodeInfo): ComplementFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Complement',\n function: toAny(fn),\n }\n },\n paramCount: 1,\n },\n\n 'every-pred': {\n evaluate: (params, sourceCodeInfo): EveryPredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'EveryPred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'some-pred': {\n evaluate: (params, sourceCodeInfo): SomePredFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'SomePred',\n params,\n }\n },\n paramCount: { min: 1 },\n },\n\n 'fnull': {\n evaluate: ([fn, ...params], sourceCodeInfo): FNullFunction => {\n return {\n [FUNCTION_SYMBOL]: true,\n sourceCodeInfo,\n functionType: 'Fnull',\n function: toAny(fn),\n params,\n }\n },\n paramCount: { min: 2 },\n },\n}\n","import type { BuiltinNormalExpression, BuiltinNormalExpressions } from '../interface'\nimport type { Any } from '../../interface'\nimport { bitwiseNormalExpression } from './categories/bitwise'\nimport { collectionNormalExpression } from './categories/collection'\nimport { arrayNormalExpression } from './categories/array'\nimport { sequenceNormalExpression } from './categories/sequence'\nimport { mathNormalExpression } from './categories/math'\nimport { miscNormalExpression } from './categories/misc'\nimport { assertNormalExpression } from './categories/assert'\nimport { objectNormalExpression } from './categories/object'\nimport { predicatesNormalExpression } from './categories/predicates'\nimport { regexpNormalExpression } from './categories/regexp'\nimport { stringNormalExpression } from './categories/string'\nimport { functionalNormalExpression } from './categories/functional'\n\nconst expressions: BuiltinNormalExpressions = {\n ...bitwiseNormalExpression,\n ...collectionNormalExpression,\n ...arrayNormalExpression,\n ...sequenceNormalExpression,\n ...mathNormalExpression,\n ...miscNormalExpression,\n ...assertNormalExpression,\n ...objectNormalExpression,\n ...predicatesNormalExpression,\n ...regexpNormalExpression,\n ...stringNormalExpression,\n ...functionalNormalExpression,\n}\n\nconst aliases: BuiltinNormalExpressions = {}\n\nObject.values(expressions).forEach((normalExpression) => {\n normalExpression.aliases?.forEach((alias) => {\n aliases[alias] = normalExpression\n })\n})\n\nexport const normalExpressions: BuiltinNormalExpressions = {\n ...expressions,\n ...aliases,\n}\n\nexport const normalExpressionTypes: Record<string, number> = {}\nexport const allNormalExpressions: BuiltinNormalExpression<Any>[] = []\n\nObject.entries(normalExpressions).forEach(([key, value], index) => {\n normalExpressionTypes[key] = index\n allNormalExpressions.push(value)\n})\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport { asAny } from '../../typeGuards/lits'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type AndNode = SpecialExpressionNode<[typeof specialExpressionTypes['&&'], Node[]]>\n\nexport const andSpecialExpression: BuiltinSpecialExpression<Any, AndNode> = {\n paramCount: {},\n evaluate: (node, contextStack, { evaluateNode }) => {\n let value: Any = true\n\n for (const param of node[1][1]) {\n value = evaluateNode(param, contextStack)\n if (!value)\n break\n }\n\n return value\n },\n evaluateAsNormalExpression: (params, sourceCodeInfo) => {\n let value: Any = true\n for (const param of params) {\n value = asAny(param, sourceCodeInfo)\n if (!value)\n break\n }\n return value\n },\n\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1], contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type CondNode = SpecialExpressionNode<[typeof specialExpressionTypes['cond'], [Node, Node][]]>\n\nexport const condSpecialExpression: BuiltinSpecialExpression<Any, CondNode> = {\n paramCount: { even: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const params = node[1][1]\n for (const [test, form] of params) {\n const value = evaluateNode(test, contextStack)\n if (!value)\n continue\n\n return evaluateNode(form, contextStack)\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols(node[1][1].flat(), contextStack, builtin, evaluateNode),\n}\n","import type { Any } from '../../interface'\nimport type { Node, SpecialExpressionNode } from '../../parser/types'\nimport type { BuiltinSpecialExpression } from '../interface'\nimport type { specialExpressionTypes } from '../specialExpressionTypes'\n\nexport type SwitchNode = SpecialExpressionNode<[typeof specialExpressionTypes['switch'], Node, [Node, Node][]]>\n\nexport const switchSpecialExpression: BuiltinSpecialExpression<Any, SwitchNode> = {\n paramCount: { odd: true },\n evaluate: (node, contextStack, { evaluateNode }) => {\n const [, switchValueNode, cases] = node[1]\n const switchValue = evaluateNode(switchValueNode, contextStack)\n for (const [test, form] of cases) {\n const value = evaluateNode(test, contextStack)\n if (value === switchValue) {\n return evaluateNode(form, contextStack)\n }\n }\n return null\n },\n getUndefinedSymbols: (node, contextStack, { getUndefinedSymbols, builtin, evaluateNode }) => getUndefinedSymbols([node[1][1], ...node[1][2].flat()], contextStack, builtin, evaluateNode),\n}\n","import { 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 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","evalueateBindingTargetValues"],"mappings":"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","x_google_ignoreList":[0]}