solve-engine 1.0.0-beta.3 → 1.0.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Lexer-y8uY6n6t.d.cts → Lexer-Cfm79Dak.d.cts} +1 -1
- package/dist/{Lexer-Dkt7KGaU.d.ts → Lexer-W9MBOP0V.d.ts} +1 -1
- package/dist/{PackageRegistry-wUQyVEyw.d.ts → PackageRegistry-CjDt-Jy_.d.ts} +4 -4
- package/dist/{PackageRegistry-CblRmrHc.d.cts → PackageRegistry-pHtKythi.d.cts} +4 -4
- package/dist/{Parselet-C974vhZG.d.cts → Parselet-Cu0bLSis.d.cts} +1 -1
- package/dist/{Parselet-CsmtM3It.d.ts → Parselet-DEdF9I7n.d.ts} +1 -1
- package/dist/{Token-DnU2hwFY.d.cts → Token-BzG5G4ja.d.cts} +30 -0
- package/dist/{Token-DnU2hwFY.d.ts → Token-BzG5G4ja.d.ts} +30 -0
- package/dist/{TokenNormalizer-CqBCrYkR.d.cts → TokenNormalizer-DGVa24Q-.d.cts} +1 -1
- package/dist/{TokenNormalizer-B8zmhO5X.d.ts → TokenNormalizer-t_GotBxr.d.ts} +1 -1
- package/dist/{chunk-AF5AE52C.js → chunk-2CS6OMZK.js} +7 -6
- package/dist/chunk-2CS6OMZK.js.map +1 -0
- package/dist/{chunk-XJCMXB2E.cjs → chunk-2MV4HBKC.cjs} +187 -61
- package/dist/chunk-2MV4HBKC.cjs.map +1 -0
- package/dist/{chunk-WQTTOGXC.cjs → chunk-4AVD7NZW.cjs} +4 -4
- package/dist/{chunk-WQTTOGXC.cjs.map → chunk-4AVD7NZW.cjs.map} +1 -1
- package/dist/{chunk-HTXVVJRA.cjs → chunk-4CVLFLOB.cjs} +112 -2
- package/dist/chunk-4CVLFLOB.cjs.map +1 -0
- package/dist/{chunk-ZS6CRJZP.js → chunk-6GCKCWLB.js} +9 -3
- package/dist/chunk-6GCKCWLB.js.map +1 -0
- package/dist/{chunk-PG2K5BL6.cjs → chunk-73GSBGUU.cjs} +53 -53
- package/dist/{chunk-PG2K5BL6.cjs.map → chunk-73GSBGUU.cjs.map} +1 -1
- package/dist/{chunk-CGIDYRAX.cjs → chunk-AHCLWAM5.cjs} +18 -10
- package/dist/chunk-AHCLWAM5.cjs.map +1 -0
- package/dist/{chunk-KVILKGMS.js → chunk-AJA6LUI7.js} +36 -2
- package/dist/chunk-AJA6LUI7.js.map +1 -0
- package/dist/{chunk-F7G7ZFIZ.cjs → chunk-AZUA3F4I.cjs} +3 -3
- package/dist/{chunk-F7G7ZFIZ.cjs.map → chunk-AZUA3F4I.cjs.map} +1 -1
- package/dist/{chunk-QWY3VEZN.js → chunk-BAMZT3GL.js} +65 -12
- package/dist/chunk-BAMZT3GL.js.map +1 -0
- package/dist/{chunk-J73SJHR3.cjs → chunk-BXKJLM5R.cjs} +569 -344
- package/dist/chunk-BXKJLM5R.cjs.map +1 -0
- package/dist/{chunk-EHAHVROS.cjs → chunk-CLVQBF5C.cjs} +5 -5
- package/dist/{chunk-EHAHVROS.cjs.map → chunk-CLVQBF5C.cjs.map} +1 -1
- package/dist/{chunk-BOAVE4FC.cjs → chunk-CSG5XVNJ.cjs} +1491 -218
- package/dist/chunk-CSG5XVNJ.cjs.map +1 -0
- package/dist/{chunk-34RRD7PC.js → chunk-CYFK5SY2.js} +111 -3
- package/dist/chunk-CYFK5SY2.js.map +1 -0
- package/dist/{chunk-626UW5RU.js → chunk-GPPLSM2Z.js} +61 -2
- package/dist/chunk-GPPLSM2Z.js.map +1 -0
- package/dist/{chunk-OWXIOHQB.js → chunk-GVWHCL2N.js} +1417 -144
- package/dist/chunk-GVWHCL2N.js.map +1 -0
- package/dist/{chunk-2R7SVDDB.cjs → chunk-M4F66R4O.cjs} +72 -72
- package/dist/{chunk-2R7SVDDB.cjs.map → chunk-M4F66R4O.cjs.map} +1 -1
- package/dist/{chunk-LIPPNDBE.js → chunk-M5E34VG5.js} +3 -3
- package/dist/{chunk-LIPPNDBE.js.map → chunk-M5E34VG5.js.map} +1 -1
- package/dist/{chunk-53B6KDDJ.cjs → chunk-MBNQVDVC.cjs} +38 -3
- package/dist/{chunk-53B6KDDJ.cjs.map → chunk-MBNQVDVC.cjs.map} +1 -1
- package/dist/{chunk-2A3VOGVG.js → chunk-MEOHSQEH.js} +6 -5
- package/dist/chunk-MEOHSQEH.js.map +1 -0
- package/dist/{chunk-ZH2PCJ4V.cjs → chunk-MTX2KVU7.cjs} +71 -70
- package/dist/chunk-MTX2KVU7.cjs.map +1 -0
- package/dist/{chunk-4QADQTWS.js → chunk-MVBEL57Q.js} +242 -17
- package/dist/chunk-MVBEL57Q.js.map +1 -0
- package/dist/{chunk-QNJ4ACRT.cjs → chunk-NJTXJ5AG.cjs} +37 -15
- package/dist/chunk-NJTXJ5AG.cjs.map +1 -0
- package/dist/{chunk-EEJSQEHC.cjs → chunk-NZFKROS7.cjs} +26 -20
- package/dist/chunk-NZFKROS7.cjs.map +1 -0
- package/dist/{chunk-OJ6LW7VQ.js → chunk-OFXOTECC.js} +13 -5
- package/dist/chunk-OFXOTECC.js.map +1 -0
- package/dist/{chunk-3YNVWKR2.cjs → chunk-OUHT5Z36.cjs} +28 -5
- package/dist/chunk-OUHT5Z36.cjs.map +1 -0
- package/dist/{chunk-4MG4XKO2.js → chunk-PCPX42KL.js} +38 -3
- package/dist/{chunk-4MG4XKO2.js.map → chunk-PCPX42KL.js.map} +1 -1
- package/dist/{chunk-6NTVRDQV.cjs → chunk-QDMPOAI7.cjs} +126 -73
- package/dist/chunk-QDMPOAI7.cjs.map +1 -0
- package/dist/{chunk-FI4WDYSL.cjs → chunk-R24DI24X.cjs} +61 -2
- package/dist/chunk-R24DI24X.cjs.map +1 -0
- package/dist/{chunk-VM5ZKDLH.js → chunk-SFQWJMKT.js} +5 -5
- package/dist/{chunk-VM5ZKDLH.js.map → chunk-SFQWJMKT.js.map} +1 -1
- package/dist/{chunk-6BKTCEUP.cjs → chunk-TY3TLZAW.cjs} +36 -2
- package/dist/chunk-TY3TLZAW.cjs.map +1 -0
- package/dist/{chunk-23MFG6GG.js → chunk-TZLCIJWP.js} +12 -12
- package/dist/{chunk-23MFG6GG.js.map → chunk-TZLCIJWP.js.map} +1 -1
- package/dist/{chunk-DM3LMRBC.js → chunk-UKPGSAZW.js} +187 -61
- package/dist/chunk-UKPGSAZW.js.map +1 -0
- package/dist/{chunk-KFRBAXKW.js → chunk-VZH3NOLP.js} +3 -3
- package/dist/{chunk-KFRBAXKW.js.map → chunk-VZH3NOLP.js.map} +1 -1
- package/dist/{chunk-NH2O2AUR.js → chunk-WC5FFSHB.js} +26 -4
- package/dist/chunk-WC5FFSHB.js.map +1 -0
- package/dist/{chunk-7J2Q77OH.cjs → chunk-WWOLFXTX.cjs} +11 -10
- package/dist/chunk-WWOLFXTX.cjs.map +1 -0
- package/dist/{chunk-GOLDJNMZ.js → chunk-XBTEO4OB.js} +28 -5
- package/dist/chunk-XBTEO4OB.js.map +1 -0
- package/dist/{chunk-EPOXXJBK.js → chunk-YU2CUNFO.js} +3 -3
- package/dist/{chunk-EPOXXJBK.js.map → chunk-YU2CUNFO.js.map} +1 -1
- package/dist/constants.cjs +4 -4
- package/dist/constants.js +1 -1
- package/dist/engine.cjs +29 -30
- package/dist/engine.d.cts +6 -6
- package/dist/engine.d.ts +6 -6
- package/dist/engine.js +19 -20
- package/dist/format.cjs +7 -8
- package/dist/format.cjs.map +1 -1
- package/dist/format.js +2 -3
- package/dist/format.js.map +1 -1
- package/dist/index.cjs +28 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +20 -21
- package/dist/index.js.map +1 -1
- package/dist/language.cjs +12 -12
- package/dist/language.d.cts +6 -6
- package/dist/language.d.ts +6 -6
- package/dist/language.js +5 -5
- package/dist/lexer.cjs +19 -19
- package/dist/lexer.d.cts +3 -3
- package/dist/lexer.d.ts +3 -3
- package/dist/lexer.js +7 -7
- package/dist/normalizer.cjs +12 -12
- package/dist/normalizer.d.cts +3 -3
- package/dist/normalizer.d.ts +3 -3
- package/dist/normalizer.js +6 -6
- package/dist/packages.cjs +36 -37
- package/dist/packages.d.cts +5 -5
- package/dist/packages.d.ts +5 -5
- package/dist/packages.js +13 -14
- package/dist/parser.cjs +12 -12
- package/dist/parser.d.cts +3 -2
- package/dist/parser.d.ts +3 -2
- package/dist/parser.js +4 -4
- package/dist/resolvers.d.cts +1 -1
- package/dist/resolvers.d.ts +1 -1
- package/dist/uom.cjs +14 -14
- package/dist/uom.d.cts +12 -4
- package/dist/uom.d.ts +12 -4
- package/dist/uom.js +4 -4
- package/dist/vm.cjs +17 -17
- package/dist/vm.js +6 -6
- package/package.json +1 -1
- package/dist/chunk-2A3VOGVG.js.map +0 -1
- package/dist/chunk-34RRD7PC.js.map +0 -1
- package/dist/chunk-3YNVWKR2.cjs.map +0 -1
- package/dist/chunk-4QADQTWS.js.map +0 -1
- package/dist/chunk-626UW5RU.js.map +0 -1
- package/dist/chunk-6BKTCEUP.cjs.map +0 -1
- package/dist/chunk-6NTVRDQV.cjs.map +0 -1
- package/dist/chunk-7J2Q77OH.cjs.map +0 -1
- package/dist/chunk-AF5AE52C.js.map +0 -1
- package/dist/chunk-BOAVE4FC.cjs.map +0 -1
- package/dist/chunk-CGIDYRAX.cjs.map +0 -1
- package/dist/chunk-DM3LMRBC.js.map +0 -1
- package/dist/chunk-EEJSQEHC.cjs.map +0 -1
- package/dist/chunk-FI4WDYSL.cjs.map +0 -1
- package/dist/chunk-GOLDJNMZ.js.map +0 -1
- package/dist/chunk-HTXVVJRA.cjs.map +0 -1
- package/dist/chunk-J73SJHR3.cjs.map +0 -1
- package/dist/chunk-KVILKGMS.js.map +0 -1
- package/dist/chunk-NH2O2AUR.js.map +0 -1
- package/dist/chunk-OJ6LW7VQ.js.map +0 -1
- package/dist/chunk-OT6OJY7C.cjs +0 -114
- package/dist/chunk-OT6OJY7C.cjs.map +0 -1
- package/dist/chunk-OWXIOHQB.js.map +0 -1
- package/dist/chunk-QNJ4ACRT.cjs.map +0 -1
- package/dist/chunk-QWY3VEZN.js.map +0 -1
- package/dist/chunk-RFYD5TJE.js +0 -111
- package/dist/chunk-RFYD5TJE.js.map +0 -1
- package/dist/chunk-XJCMXB2E.cjs.map +0 -1
- package/dist/chunk-ZH2PCJ4V.cjs.map +0 -1
- package/dist/chunk-ZS6CRJZP.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/parser/BytecodeBuilder.ts","../src/parser/BindingPower.ts"],"names":[],"mappings":"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","file":"chunk-6GCKCWLB.js","sourcesContent":["import { OpCode } from \"@solve-js/parser/OpCode\";\nimport { ErrorFactory } from \"@solve-js/errors/UnifiedErrorFramework\";\n\n/**\n * `BytecodeProgram.opcodes` is a `Uint8Array`, every operand written into\n * it (including constant-pool indices from {@link BytecodeBuilder.emitNumber}/\n * {@link BytecodeBuilder.emitString}) is truncated to a single byte on\n * `build()`. Exceeding this silently wraps the index (e.g. entry 300 reads\n * back as entry 44), producing a wrong result with no error. See\n * {@link BytecodeBuilder.emitNumber} for the guard that turns this into a\n * thrown error instead.\n */\nconst MAX_CONSTANT_POOL_INDEX = 255;\n\n/**\n * Compiled bytecode program produced by {@link BytecodeBuilder}.\n * Ready for consumption by {@link executeBytecode} without further processing.\n */\nexport interface BytecodeProgram {\n\topcodes: Uint8Array;\n\tnumbers: Float64Array;\n\tstrings: string[];\n\tconstants?: Map<number, number>;\n\t/**\n\t * Whether the program contains any async opcodes (CALL_PLUGIN, etc.).\n\t * Set during compilation by the BytecodeBuilder. Allows the engine\n\t * to skip the O(n) resolver preflight check in O(1) for purely\n\t * synchronous expressions like `2 + 2`.\n\t */\n\thasAsync: boolean;\n\t/**\n\t * User-defined-function bodies compiled alongside this program (one\n\t * entry per `name(params) = body` definition on this line). See\n\t * {@link BytecodeBuilder.emitUserFunctionBody}. `OpCode.DEFINE_USER_FUNCTION`'s\n\t * operand is an index into this array, resolved at VM-execution time\n\t * (not parse time) so a diagnostic/lookahead parse that never actually\n\t * executes the definition line has no side effect on `vm.userFunctions`.\n\t */\n\tuserFunctionBodies?: UserFunctionDef[];\n\t/**\n\t * Anonymous function bodies compiled alongside this program, one entry\n\t * per `map`/`reduce` inline transform expression (e.g. the `10*x` in\n\t * `map(10*x, [0,1,500])`). See {@link BytecodeBuilder.emitAnonymousBody}.\n\t * Deliberately a SEPARATE side-table from `userFunctionBodies`, not\n\t * routed through `vm.userFunctions` at all: an inline body has no name\n\t * and must never leak into the persistent name-keyed registry the way\n\t * a real `f(x) = ...` definition does.\n\t */\n\tanonymousBodies?: AnonymousBodyDef[];\n}\n\n/**\n * An anonymous transform body for `map`/`reduce`'s inline-expression form\n * (e.g. `10*x` in `map(10*x, [0,1,500])`, or `acc+x` in `reduce(acc+x,\n * [1,2,3])`). Structurally identical to {@link UserFunctionDef} minus the\n * `name`. See `OpCode.MAP_INVOKE`/`REDUCE_INVOKE` and\n * `vm/VM.ts`'s handlers, which build a call frame from `params`/`args`\n * exactly like `CALL_USER_FUNCTION` does, just without ever registering\n * the body in `vm.userFunctions`.\n */\nexport interface AnonymousBodyDef {\n\tparams: string[];\n\tprogram: BytecodeProgram;\n}\n\n/**\n * A user-defined, parameterized, reusable function's compiled form\n * (`f(x) = 2*x + 1`). See `OpCode.DEFINE_USER_FUNCTION`/`CALL_USER_FUNCTION`\n * and `vm/VM.ts`'s `VM.defineUserFunction`/`getUserFunction`.\n *\n * `program` is the body compiled to its OWN independent `BytecodeProgram`,\n * not a fragment of the definition line's own bytecode. Parameter names\n * inside the body compile to ORDINARY `LOAD_VAR <name>` opcodes, no\n * parse-time rewriting, because parameter resolution happens dynamically\n * at the VM level: `CALL_USER_FUNCTION` pushes a name-keyed call frame\n * (`Map<string, Value>`) before re-executing `program`, and `VM.getVar()`\n * checks the innermost call frame before falling back to the flat\n * document-variable store. This is why a `UNIT`-collision parameter name\n * (e.g. `h` in `area(w, h) = w * h`, which lexes as the \"hour\" unit) needs\n * no special handling anywhere, it's just another `LOAD_VAR \"h\"`, resolved\n * the same way as any other name.\n */\nexport interface UserFunctionDef {\n\tname: string;\n\tparams: string[];\n\tprogram: BytecodeProgram;\n}\n\n/**\n * Direct-to-bytecode compiler for the Pratt parser.\n *\n * Accumulates opcodes, numeric constants, and string references during parsing,\n * then produces a {@link BytecodeProgram} for VM execution. Supports:\n * - Standard build via {@link build}\n * - Zero-copy build into pre-allocated buffers via {@link buildInto}\n * - In-place reset for reuse without reallocation\n */\nexport class BytecodeBuilder {\n\tprivate opcodes: number[] = [];\n\tprivate numbers: number[] = [];\n\tprivate strings: string[] = [];\n\tprivate stringIndex = new Map<string, number>();\n\tprivate _hasAsync = false;\n\tprivate userFunctionBodies: UserFunctionDef[] = [];\n\tprivate anonymousBodies: AnonymousBodyDef[] = [];\n\n\t/** Emit an {@link OpCode} instruction. */\n\temitOpcode(op: OpCode): void {\n\t\tthis.opcodes.push(op);\n\t\tif (op === OpCode.CALL_PLUGIN) {\n\t\t\tthis._hasAsync = true;\n\t\t}\n\t}\n\n\t/**\n\t * Emit a numeric literal: appends `n` to the program's constant pool and\n\t * writes its index into the opcode stream (read back by the VM as e.g.\n\t * `PUSH_NUMBER <idx>`).\n\t *\n\t * Numeric constants are NOT deduplicated (unlike {@link emitString})\n\t * every call appends a new entry, so an expression with more than\n\t * {@link MAX_CONSTANT_POOL_INDEX}+1 distinct numeric-literal occurrences\n\t * throws rather than silently wrapping the index (see\n\t * `MAX_CONSTANT_POOL_INDEX`'s doc for what that would otherwise do).\n\t *\n\t * @throws If the constant pool would exceed 256 entries.\n\t */\n\temitNumber(n: number): void {\n\t\tconst idx = this.numbers.length;\n\t\tif (idx > MAX_CONSTANT_POOL_INDEX) {\n\t\t\tthrow ErrorFactory.parsing(\n\t\t\t\t\"TOO_MANY_NUMERIC_CONSTANTS\",\n\t\t\t\t`Expression has more than ${MAX_CONSTANT_POOL_INDEX + 1} numeric literals, exceeding the bytecode constant pool's limit.`,\n\t\t\t\t{ limit: MAX_CONSTANT_POOL_INDEX + 1 }\n\t\t\t);\n\t\t}\n\t\tthis.numbers.push(n);\n\t\tthis.opcodes.push(idx);\n\t}\n\n\t/**\n\t * Emit a string literal: interns `s` into the program's string pool\n\t * (deduplicated via `stringIndex`) and writes its index into the opcode\n\t * stream. Subject to the same constant-pool bound as {@link emitNumber},\n\t * but since strings ARE deduplicated, only distinct string values count\n\t * against the limit.\n\t *\n\t * @throws If the string pool would exceed 256 distinct entries.\n\t */\n\temitString(s: string): void {\n\t\tlet idx = this.stringIndex.get(s);\n\t\tif (idx === undefined) {\n\t\t\tidx = this.strings.length;\n\t\t\tif (idx > MAX_CONSTANT_POOL_INDEX) {\n\t\t\t\tthrow ErrorFactory.parsing(\n\t\t\t\t\t\"TOO_MANY_STRING_CONSTANTS\",\n\t\t\t\t\t`Expression has more than ${MAX_CONSTANT_POOL_INDEX + 1} distinct string literals, exceeding the bytecode constant pool's limit.`,\n\t\t\t\t\t{ limit: MAX_CONSTANT_POOL_INDEX + 1 }\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.strings.push(s);\n\t\t\tthis.stringIndex.set(s, idx);\n\t\t}\n\t\tthis.opcodes.push(idx);\n\t}\n\n\t/**\n\t * Emit a raw numeric operand (0-255) following an opcode, e.g. a\n\t * plugin-function index for `CALL_PLUGIN`, or an argument count. Unlike\n\t * {@link emitOpcode}, this does not go through the `OpCode` enum, so\n\t * package authors use this (not an unsafe cast to `OpCode`) to push\n\t * operands their own opcode handler expects to read positionally.\n\t */\n\temitIndex(idx: number): void {\n\t\tthis.opcodes.push(idx);\n\t}\n\n\t/** Emit a raw byte (0-255), used for fixed small operands like argument counts. */\n\temitByte(b: number): void {\n\t\tthis.opcodes.push(b);\n\t}\n\n\t/** Number of opcodes/operands emitted so far, used to compute jump targets before {@link patchJump}. */\n\tget currentLength(): number {\n\t\treturn this.opcodes.length;\n\t}\n\n\t/**\n\t * Register a compiled user-defined-function body, returning its index\n\t * into this program's `userFunctionBodies` side-table, the caller emits\n\t * that index as `DEFINE_USER_FUNCTION`'s operand via {@link emitIndex}.\n\t * Subject to the same {@link MAX_CONSTANT_POOL_INDEX} bound as\n\t * {@link emitNumber}/{@link emitString} (the index itself is a single\n\t * opcode-stream byte), in practice a single line defines at most a\n\t * handful of functions, so this limit is never realistically reached.\n\t *\n\t * @throws If more than 256 function bodies are registered on one program.\n\t */\n\temitUserFunctionBody(name: string, params: string[], program: BytecodeProgram): number {\n\t\tconst idx = this.userFunctionBodies.length;\n\t\tif (idx > MAX_CONSTANT_POOL_INDEX) {\n\t\t\tthrow ErrorFactory.parsing(\n\t\t\t\t\"TOO_MANY_FUNCTION_DEFINITIONS\",\n\t\t\t\t`More than ${MAX_CONSTANT_POOL_INDEX + 1} function definitions on one line, exceeding the bytecode constant pool's limit.`,\n\t\t\t\t{ limit: MAX_CONSTANT_POOL_INDEX + 1 }\n\t\t\t);\n\t\t}\n\t\tthis.userFunctionBodies.push({ name, params, program });\n\t\treturn idx;\n\t}\n\n\t/**\n\t * Register a compiled `map`/`reduce` anonymous transform body, returning\n\t * its index into this program's `anonymousBodies` side-table, the\n\t * caller emits that index as `MAP_INVOKE`/`REDUCE_INVOKE`'s operand via\n\t * {@link emitIndex}. Same {@link MAX_CONSTANT_POOL_INDEX} bound as\n\t * {@link emitUserFunctionBody}.\n\t *\n\t * @throws If more than 256 anonymous bodies are registered on one program.\n\t */\n\temitAnonymousBody(params: string[], program: BytecodeProgram): number {\n\t\tconst idx = this.anonymousBodies.length;\n\t\tif (idx > MAX_CONSTANT_POOL_INDEX) {\n\t\t\tthrow ErrorFactory.parsing(\n\t\t\t\t\"TOO_MANY_ANONYMOUS_BODIES\",\n\t\t\t\t`More than ${MAX_CONSTANT_POOL_INDEX + 1} map/reduce transform expressions on one line, exceeding the bytecode constant pool's limit.`,\n\t\t\t\t{ limit: MAX_CONSTANT_POOL_INDEX + 1 }\n\t\t\t);\n\t\t}\n\t\tthis.anonymousBodies.push({ params, program });\n\t\treturn idx;\n\t}\n\n\t/** Overwrite a previously-emitted placeholder operand at `position` with the real jump `target`, once known. */\n\tpatchJump(position: number, target: number): void {\n\t\tthis.opcodes[position] = target;\n\t}\n\n\t/**\n\t * Build the accumulated opcodes/numbers/strings into a BytecodeProgram.\n\t * Creates new TypedArrays, the builder can be reused after this call.\n\t */\n\tbuild(): BytecodeProgram {\n\t\treturn {\n\t\t\topcodes: new Uint8Array(this.opcodes),\n\t\t\tnumbers: new Float64Array(this.numbers),\n\t\t\t// Defensive copy: .length = 0 in reset() would clear a shared reference.\n\t\t\t// Strings are rare (only UoM/datetime parselets emit them), so the copy\n\t\t\t// cost is negligible.\n\t\t\tstrings: [...this.strings],\n\t\t\tconstants: new Map(),\n\t\t\thasAsync: this._hasAsync,\n\t\t\tuserFunctionBodies: this.userFunctionBodies.length > 0 ? [...this.userFunctionBodies] : undefined,\n\t\t\tanonymousBodies: this.anonymousBodies.length > 0 ? [...this.anonymousBodies] : undefined,\n\t\t};\n\t}\n\n\t/**\n\t * Build directly into a pre-allocated buffer for zero-copy VM consumption.\n\t *\n\t * When `buf` is provided and large enough, writes into it and returns\n\t * subarray **views** (not copies), the returned TypedArrays share the\n\t * buffer's underlying ArrayBuffer. The caller MUST NOT mutate the buffer\n\t * until the returned BytecodeProgram is no longer needed.\n\t *\n\t * If the caller intends to cache the result, they must copy the TypedArrays\n\t * (e.g. `new Uint8Array(program.opcodes)`) before reusing the buffer pool.\n\t *\n\t * When `buf` is omitted or too small, allocates fresh TypedArrays.\n\t */\n\tbuildInto(buf?: { opcodes: Uint8Array; numbers: Float64Array }): BytecodeProgram {\n\t\tconst opLen = this.opcodes.length;\n\t\tconst numLen = this.numbers.length;\n\n\t\tconst reuseOpcodes = buf && buf.opcodes.length >= opLen;\n\t\tconst reuseNumbers = buf && buf.numbers.length >= numLen;\n\n\t\t// Subarray views that share the buffer's ArrayBuffer (zero-copy)\n\t\tconst opcodes = reuseOpcodes\n\t\t\t? new Uint8Array(buf!.opcodes.buffer, buf!.opcodes.byteOffset, opLen)\n\t\t\t: new Uint8Array(opLen);\n\t\tconst numbers = reuseNumbers\n\t\t\t? new Float64Array(buf!.numbers.buffer, buf!.numbers.byteOffset, numLen)\n\t\t\t: new Float64Array(numLen);\n\n\t\t// Write data into the views\n\t\tfor (let i = 0; i < opLen; i++) opcodes[i] = this.opcodes[i];\n\t\tfor (let i = 0; i < numLen; i++) numbers[i] = this.numbers[i];\n\n\t\treturn {\n\t\t\topcodes,\n\t\t\tnumbers,\n\t\t\tstrings: [...this.strings],\n\t\t\tconstants: new Map(),\n\t\t\thasAsync: this._hasAsync,\n\t\t\tuserFunctionBodies: this.userFunctionBodies.length > 0 ? [...this.userFunctionBodies] : undefined,\n\t\t\tanonymousBodies: this.anonymousBodies.length > 0 ? [...this.anonymousBodies] : undefined,\n\t\t};\n\t}\n\n\treset(): void {\n\t\t// Retain backing stores with .length = 0 to avoid reallocation on growth.\n\t\t// = [] discards the ArrayBuffer, forcing V8 to reallocate on every push()\n\t\t// threshold (4→8→16→32...). For a 50-opcode expression, that's 3-4 copies.\n\t\tthis.opcodes.length = 0;\n\t\tthis.numbers.length = 0;\n\t\tthis.strings.length = 0;\n\t\tthis.stringIndex.clear();\n\t\tthis._hasAsync = false;\n\t\tthis.userFunctionBodies.length = 0;\n\t\tthis.anonymousBodies.length = 0;\n\t}\n}\n","/**\n * Named precedence levels for the Pratt parser, from loosest (`Lowest`) to\n * tightest (`Call`) binding. A custom infix parselet compares its own\n * binding power against the current expression's to decide whether to\n * consume the next operator (higher power binds tighter, e.g. `*` over `+`).\n *\n * Package authors reference these when registering an infix parselet via\n * `IPackageRegistry.registerInfixParselet`. See the built-in packages for\n * examples of picking an appropriate level (e.g. arithmetic `+`/`-` use\n * `Sum`, `*`/`/` use `Product`).\n */\nexport const BindingPower = {\n Lowest: 0,\n Assignment: 10,\n LogicalOr: 12, // `or`, `||` — loosest of the boolean-logic operators\n LogicalAnd: 14, // `&&` — binds tighter than `or` (\"a or b and c\" = \"a or (b and c)\")\n Conditional: 20, // comparisons (`==`, `<`, `>=`, ...) — tighter than and/or, looser than arithmetic\n // The word \"and\" as addition (`AND_CONJ`). One step looser than `Sum` on\n // purpose: a phrase parselet collecting a list (\"average of X, Y and Z\")\n // parses each argument at this level, which stops at \"and\" while still\n // letting a genuine \"+\" inside an argument bind. Level 28 rather than 29 to\n // leave room, and below Sum rather than above so \"1 and 2 * 3\" stays 7.\n Conjunction: 28,\n Sum: 30,\n BitwiseXor: 35,\n Product: 40,\n Exponent: 50,\n Prefix: 60,\n Postfix: 70,\n Call: 80,\n} as const;\n\n/**\n * Set the binding power of a named operator.\n *\n * Binding power is what decides precedence in the Pratt parser: a higher number\n * binds tighter, so `*` outranks `+`. Changing one changes how every existing\n * expression using that operator parses, which is why packages should allocate\n * a new name rather than adjust a built-in.\n *\n * @param name - Operator name.\n * @param power - Higher binds tighter.\n */\nexport function setBindingPower(name: string, power: number): void {\n (BindingPower as Record<string, number>)[name] = power;\n}\n\n/**\n * Read the binding power of a named operator.\n *\n * @param name - Operator name.\n * @returns Its binding power, or 0 when the name is unknown, which makes an\n * unregistered operator terminate an expression rather than swallow the rest\n * of it.\n */\nexport function getBindingPower(name: string): number {\n return (BindingPower as Record<string, number>)[name] ?? 0;\n}\n\n// ── Built-in Infix Operator Binding Power Table ──────────────────────────────\n// Pre-computed Uint8Array lookup indexed by token typeId.\n// value > 0 → built-in infix operator with that binding power\n// value = 0 → not a built-in infix, fall through to Tier 2 parselet registry\n//\n// Built at module load via buildBindingPowerTable(). The table is sparse\n// most entries are 0 since only ~15 of 80+ token types are infix operators.\n//\n// Performance: Uint8Array[typeId] is a single typed array load, no Map.get()\n// no string hashing, no property chain. V8 eliminates bounds checks when typeId\n// is known to be within array length.\n\nimport { TokenTypes } from \"@solve-js/lexer/Token\";\nimport { tokenTypeId } from \"@solve-js/lexer/Token\";\n\n/**\n * Mapping of token type names → binding powers for built-in infix operators.\n * Only operators listed here get the Tier 1 fast path in PrecedenceParser.\n * All other infix tokens use the Tier 2 parselet registry fallback.\n */\nconst BUILTIN_INFIX_BP: Record<string, number> = {\n // Arithmetic (infix, left-associative)\n [TokenTypes.PLUS]: BindingPower.Sum,\n [TokenTypes.MINUS]: BindingPower.Sum,\n [TokenTypes.STAR]: BindingPower.Product,\n [TokenTypes.SLASH]: BindingPower.Product,\n [TokenTypes.MOD]: BindingPower.Product,\n\n // Arithmetic (infix, RIGHT-associative, PrecedenceParser handles this specially)\n [TokenTypes.CARET]: BindingPower.Exponent,\n\n // Bitwise (infix, left-associative)\n [TokenTypes.LSHIFT]: BindingPower.BitwiseXor,\n [TokenTypes.RSHIFT]: BindingPower.BitwiseXor,\n [TokenTypes.BIT_AND]: BindingPower.BitwiseXor,\n [TokenTypes.BIT_OR]: BindingPower.BitwiseXor,\n [TokenTypes.BIT_XOR]: BindingPower.BitwiseXor,\n\n // Postfix (no right operand, PrecedenceParser handles this specially)\n [TokenTypes.PERCENT]: BindingPower.Postfix,\n\n // Percentage keyword (infix, left-associative: \"50% of 200\" → MUL)\n [TokenTypes.OF]: BindingPower.Product,\n};\n\n// Note: These token types are intentionally NOT in the BP_TABLE, they stay in\n// the Tier 2 parselet registry because they require complex handling:\n// IN, TO → UoM conversion parselets (peek at target unit token, complex logic)\n// DOT → Property access (chained OBJ_GET, needs left-token tracking)\n// EQUALS → Assignment (VariableParselet handles :var = expr pattern)\n// EQUALITY, NEQ, GTE, LTE → Comparison ops (need dedicated VM opcodes, task 2.15a)\n// COMMA → Argument separator (function calls, array/object literals)\n\n/** Cached BP_TABLE, built once at module load, immutable thereafter. */\nlet _bpTable: Uint8Array | null = null;\n\n/**\n * Build the Uint8Array binding power table indexed by token typeId.\n * Idempotent, returns cached table on subsequent calls.\n *\n * Must be called after all token types are registered (via registerAllTokenTypes())\n * and after plugin providers have registered their token types.\n */\nexport function buildBindingPowerTable(): Uint8Array {\n if (_bpTable) return _bpTable;\n\n // Size to the largest registered typeId + 1\n let maxId = 0;\n for (const name of Object.keys(BUILTIN_INFIX_BP)) {\n const id = tokenTypeId(name);\n if (id > maxId) maxId = id;\n }\n // Also scan all TokenTypes to ensure table covers all registered IDs\n for (const name of Object.values(TokenTypes)) {\n const id = tokenTypeId(name);\n if (id > maxId) maxId = id;\n }\n\n const table = new Uint8Array(maxId + 1);\n for (const [name, bp] of Object.entries(BUILTIN_INFIX_BP)) {\n const id = tokenTypeId(name);\n table[id] = bp;\n }\n\n _bpTable = table;\n return table;\n}\n\n/**\n * Invalidate the cached BP table, call when plugins register new token types\n * that should participate in the built-in fast path.\n */\nexport function invalidateBindingPowerTable(): void {\n _bpTable = null;\n}\n"]}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkMTX2KVU7_cjs = require('./chunk-MTX2KVU7.cjs');
|
|
4
4
|
var chunkX6K3HUOY_cjs = require('./chunk-X6K3HUOY.cjs');
|
|
5
5
|
var chunk5X2PTP6F_cjs = require('./chunk-5X2PTP6F.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkQDMPOAI7_cjs = require('./chunk-QDMPOAI7.cjs');
|
|
7
7
|
var chunk47LRVGOT_cjs = require('./chunk-47LRVGOT.cjs');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
8
|
+
var chunkCSG5XVNJ_cjs = require('./chunk-CSG5XVNJ.cjs');
|
|
9
|
+
var chunkNZFKROS7_cjs = require('./chunk-NZFKROS7.cjs');
|
|
10
|
+
var chunkAHCLWAM5_cjs = require('./chunk-AHCLWAM5.cjs');
|
|
11
11
|
var chunkZ2XP767T_cjs = require('./chunk-Z2XP767T.cjs');
|
|
12
|
-
var
|
|
13
|
-
var
|
|
12
|
+
var chunkBXKJLM5R_cjs = require('./chunk-BXKJLM5R.cjs');
|
|
13
|
+
var chunk4CVLFLOB_cjs = require('./chunk-4CVLFLOB.cjs');
|
|
14
14
|
var chunkOC6LTXYS_cjs = require('./chunk-OC6LTXYS.cjs');
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
15
|
+
var chunkAZUA3F4I_cjs = require('./chunk-AZUA3F4I.cjs');
|
|
16
|
+
var chunkWWOLFXTX_cjs = require('./chunk-WWOLFXTX.cjs');
|
|
17
|
+
var chunkTY3TLZAW_cjs = require('./chunk-TY3TLZAW.cjs');
|
|
18
18
|
var chunkM4N5GA5Z_cjs = require('./chunk-M4N5GA5Z.cjs');
|
|
19
19
|
var chunkB7LXJ6LC_cjs = require('./chunk-B7LXJ6LC.cjs');
|
|
20
20
|
|
|
@@ -2203,7 +2203,7 @@ function checkPackageCompatibility(candidate, existing) {
|
|
|
2203
2203
|
|
|
2204
2204
|
// src/api/EngineVersionCompatibility.ts
|
|
2205
2205
|
var import_semver = chunkB7LXJ6LC_cjs.__toESM(require_semver2(), 1);
|
|
2206
|
-
function checkEngineVersionCompatibility(pkg, engineVersion =
|
|
2206
|
+
function checkEngineVersionCompatibility(pkg, engineVersion = chunkAZUA3F4I_cjs.ENGINE_VERSION) {
|
|
2207
2207
|
if (!pkg.engineVersion) return { compatible: true };
|
|
2208
2208
|
if ((0, import_semver.validRange)(pkg.engineVersion) === null) {
|
|
2209
2209
|
return { compatible: false, reason: "invalid-range", declaredRange: pkg.engineVersion, engineVersion };
|
|
@@ -2214,7 +2214,7 @@ function checkEngineVersionCompatibility(pkg, engineVersion = chunkF7G7ZFIZ_cjs.
|
|
|
2214
2214
|
}
|
|
2215
2215
|
return { compatible: true };
|
|
2216
2216
|
}
|
|
2217
|
-
function assertEngineVersionCompatible(pkg, engineVersion =
|
|
2217
|
+
function assertEngineVersionCompatible(pkg, engineVersion = chunkAZUA3F4I_cjs.ENGINE_VERSION) {
|
|
2218
2218
|
const result = checkEngineVersionCompatibility(pkg, engineVersion);
|
|
2219
2219
|
if (result.compatible) return;
|
|
2220
2220
|
if (result.reason === "invalid-range") {
|
|
@@ -2251,7 +2251,7 @@ function getCompileEngine() {
|
|
|
2251
2251
|
var executeVm = null;
|
|
2252
2252
|
function getExecuteVm() {
|
|
2253
2253
|
if (!executeVm) {
|
|
2254
|
-
executeVm =
|
|
2254
|
+
executeVm = chunkQDMPOAI7_cjs.createVM(chunkBXKJLM5R_cjs.sharedOpRegistry, 200, 5e4);
|
|
2255
2255
|
}
|
|
2256
2256
|
return executeVm;
|
|
2257
2257
|
}
|
|
@@ -2323,7 +2323,7 @@ function executeOne(item) {
|
|
|
2323
2323
|
const numbers = new Float64Array(item.numbersBuffer, 0, item.numbersLength);
|
|
2324
2324
|
const bytecode = { opcodes, numbers, strings: item.strings };
|
|
2325
2325
|
try {
|
|
2326
|
-
const result =
|
|
2326
|
+
const result = chunkQDMPOAI7_cjs.executeBytecode(bytecode, vmm);
|
|
2327
2327
|
if (result.type === "pending") {
|
|
2328
2328
|
return {
|
|
2329
2329
|
lineNumber: item.lineNumber,
|
|
@@ -2987,7 +2987,7 @@ var _AsyncResolutionBatcher = class _AsyncResolutionBatcher {
|
|
|
2987
2987
|
if (!entry || entry.bytecode.opcodes.length === 0) continue;
|
|
2988
2988
|
const stackBefore = this.vm.getStack().length;
|
|
2989
2989
|
try {
|
|
2990
|
-
const result =
|
|
2990
|
+
const result = chunkQDMPOAI7_cjs.executeBytecode(entry.bytecode, this.vm);
|
|
2991
2991
|
while (this.vm.getStack().length > stackBefore) {
|
|
2992
2992
|
this.vm.pop();
|
|
2993
2993
|
}
|
|
@@ -3293,7 +3293,7 @@ function extractReadsAndWrites(tokens) {
|
|
|
3293
3293
|
const t = tokens[i];
|
|
3294
3294
|
if (t.type === "GLOBAL") {
|
|
3295
3295
|
if (i + 2 < tokens.length && tokens[i + 1].type === "COLON" && isVarName(tokens[i + 2])) {
|
|
3296
|
-
const key =
|
|
3296
|
+
const key = chunkBXKJLM5R_cjs.globalDagKey(tokens[i + 2].value);
|
|
3297
3297
|
reads.push(key);
|
|
3298
3298
|
if (i + 3 < tokens.length && tokens[i + 3].type === "EQUALS") {
|
|
3299
3299
|
writes.push(key);
|
|
@@ -3332,11 +3332,11 @@ function extractReadsAndWrites(tokens) {
|
|
|
3332
3332
|
return { reads, writes };
|
|
3333
3333
|
}
|
|
3334
3334
|
function isEmptyLine(lineText) {
|
|
3335
|
-
const classification =
|
|
3335
|
+
const classification = chunkWWOLFXTX_cjs.sharedLexer.classifyLine(lineText);
|
|
3336
3336
|
return classification.skip;
|
|
3337
3337
|
}
|
|
3338
3338
|
function findInlineSolvesInLine(lineText, lineNumber) {
|
|
3339
|
-
const spans =
|
|
3339
|
+
const spans = chunkWWOLFXTX_cjs.sharedLexer.findInlineSolves(lineText);
|
|
3340
3340
|
return spans.map((s) => ({
|
|
3341
3341
|
start: s.start,
|
|
3342
3342
|
end: s.end,
|
|
@@ -3352,9 +3352,9 @@ var ExpressionEngine = class {
|
|
|
3352
3352
|
//#region Constructor
|
|
3353
3353
|
constructor(localeCode = "en", diagnosticMode = false, config, diagnosticPipeline, packages) {
|
|
3354
3354
|
//#region Private Properties
|
|
3355
|
-
this.dag = new
|
|
3355
|
+
this.dag = new chunkQDMPOAI7_cjs.DependencyGraph();
|
|
3356
3356
|
this.lineCache = new LineCache();
|
|
3357
|
-
this.scopeManager = new
|
|
3357
|
+
this.scopeManager = new chunkQDMPOAI7_cjs.ScopeManager();
|
|
3358
3358
|
/** Registry of async resolvers from registered packages. */
|
|
3359
3359
|
this.resolverRegistry = new chunkX6K3HUOY_cjs.ResolverRegistry();
|
|
3360
3360
|
/**
|
|
@@ -3410,20 +3410,20 @@ var ExpressionEngine = class {
|
|
|
3410
3410
|
this.bytecodeCache = /* @__PURE__ */ new Map();
|
|
3411
3411
|
// Pre-allocated BytecodeBuilder pool
|
|
3412
3412
|
this.builderPool = [
|
|
3413
|
-
new
|
|
3414
|
-
new
|
|
3415
|
-
new
|
|
3416
|
-
new
|
|
3413
|
+
new chunkNZFKROS7_cjs.BytecodeBuilder(),
|
|
3414
|
+
new chunkNZFKROS7_cjs.BytecodeBuilder(),
|
|
3415
|
+
new chunkNZFKROS7_cjs.BytecodeBuilder(),
|
|
3416
|
+
new chunkNZFKROS7_cjs.BytecodeBuilder()
|
|
3417
3417
|
];
|
|
3418
3418
|
// Index into the builder pool, incremented modulo pool size.
|
|
3419
3419
|
this.builderPoolIndex = 0;
|
|
3420
3420
|
// Most recent pipeline telemetry, populated when AllocationTracker.isEnabled().
|
|
3421
3421
|
this.lastTelemetry = null;
|
|
3422
3422
|
this.localeCode = localeCode;
|
|
3423
|
-
this.config =
|
|
3424
|
-
this.lexer = new
|
|
3425
|
-
this.registry = new
|
|
3426
|
-
this.context =
|
|
3423
|
+
this.config = chunkAZUA3F4I_cjs.mergeEngineConfig(chunkAZUA3F4I_cjs.DEFAULT_CONFIG, config ?? {});
|
|
3424
|
+
this.lexer = new chunkWWOLFXTX_cjs.Lexer(localeCode, chunkWWOLFXTX_cjs.buildTokenLookup(localeCode));
|
|
3425
|
+
this.registry = new chunkMTX2KVU7_cjs.ParseletRegistry();
|
|
3426
|
+
this.context = chunkBXKJLM5R_cjs.createEngineContext();
|
|
3427
3427
|
if (diagnosticPipeline) {
|
|
3428
3428
|
this.diagnosticPipeline = diagnosticPipeline;
|
|
3429
3429
|
} else if (diagnosticMode) {
|
|
@@ -3433,15 +3433,15 @@ var ExpressionEngine = class {
|
|
|
3433
3433
|
} else {
|
|
3434
3434
|
this.diagnosticPipeline = new chunk47LRVGOT_cjs.DiagnosticPipeline();
|
|
3435
3435
|
}
|
|
3436
|
-
this.normalizer = new
|
|
3437
|
-
for (const [phrase, tokenType] of Object.entries(
|
|
3436
|
+
this.normalizer = new chunkAHCLWAM5_cjs.TokenNormalizer();
|
|
3437
|
+
for (const [phrase, tokenType] of Object.entries(chunkAHCLWAM5_cjs.BUILTIN_PHRASES)) {
|
|
3438
3438
|
this.normalizer.addPhrase(phrase, tokenType);
|
|
3439
3439
|
}
|
|
3440
|
-
this.normalizer.register(
|
|
3440
|
+
this.normalizer.register(chunkAHCLWAM5_cjs.implicitMultiplyRule(
|
|
3441
3441
|
50,
|
|
3442
3442
|
(word) => this.normalizer.canStartPhrase(word)
|
|
3443
3443
|
));
|
|
3444
|
-
const pkgList = packages ??
|
|
3444
|
+
const pkgList = packages ?? chunkCSG5XVNJ_cjs.BUILTIN_PACKAGES;
|
|
3445
3445
|
for (const pkg of pkgList) {
|
|
3446
3446
|
try {
|
|
3447
3447
|
this.registerPackage(pkg);
|
|
@@ -3452,8 +3452,8 @@ var ExpressionEngine = class {
|
|
|
3452
3452
|
);
|
|
3453
3453
|
}
|
|
3454
3454
|
}
|
|
3455
|
-
this.parser = new
|
|
3456
|
-
this.vm =
|
|
3455
|
+
this.parser = new chunkMTX2KVU7_cjs.PrecedenceParser(this.registry, this.config.validation.maxNestingDepth, localeCode);
|
|
3456
|
+
this.vm = chunkQDMPOAI7_cjs.createVM(
|
|
3457
3457
|
this.context.opRegistry,
|
|
3458
3458
|
this.config.vm.maxStackDepth,
|
|
3459
3459
|
this.config.vm.maxInstructions,
|
|
@@ -3624,7 +3624,7 @@ var ExpressionEngine = class {
|
|
|
3624
3624
|
}
|
|
3625
3625
|
if (pkg.tokenCategories) {
|
|
3626
3626
|
for (const [tokenType, category] of Object.entries(pkg.tokenCategories)) {
|
|
3627
|
-
|
|
3627
|
+
chunkTY3TLZAW_cjs.registerTokenCategory(tokenType, category);
|
|
3628
3628
|
contribution.tokenCategories.push(tokenType);
|
|
3629
3629
|
}
|
|
3630
3630
|
}
|
|
@@ -3633,7 +3633,7 @@ var ExpressionEngine = class {
|
|
|
3633
3633
|
}
|
|
3634
3634
|
if (pkg.asConverters) {
|
|
3635
3635
|
for (const [name, handler] of Object.entries(pkg.asConverters)) {
|
|
3636
|
-
|
|
3636
|
+
chunkBXKJLM5R_cjs.registerAsConverter(name, handler);
|
|
3637
3637
|
contribution.asConverterNames.push(name);
|
|
3638
3638
|
}
|
|
3639
3639
|
}
|
|
@@ -3677,13 +3677,13 @@ var ExpressionEngine = class {
|
|
|
3677
3677
|
this.resolverRegistry.unregister(namespace);
|
|
3678
3678
|
}
|
|
3679
3679
|
for (const tokenType of contribution.tokenCategories) {
|
|
3680
|
-
|
|
3680
|
+
chunkTY3TLZAW_cjs.unregisterTokenCategory(tokenType);
|
|
3681
3681
|
}
|
|
3682
3682
|
if (contribution.lexerVocabulary) {
|
|
3683
3683
|
this.lexer.unregisterVocabulary(contribution.lexerVocabulary);
|
|
3684
3684
|
}
|
|
3685
3685
|
for (const name of contribution.asConverterNames) {
|
|
3686
|
-
|
|
3686
|
+
chunkBXKJLM5R_cjs.unregisterAsConverter(name);
|
|
3687
3687
|
}
|
|
3688
3688
|
this.packageCompletionItems.delete(packageName);
|
|
3689
3689
|
this.packageContributions.delete(packageName);
|
|
@@ -3755,7 +3755,7 @@ var ExpressionEngine = class {
|
|
|
3755
3755
|
controller.abort();
|
|
3756
3756
|
};
|
|
3757
3757
|
chunkZ2XP767T_cjs.setActiveQueryClient(this.queryClient);
|
|
3758
|
-
const result =
|
|
3758
|
+
const result = chunkQDMPOAI7_cjs.executeBytecode(program, this.vm, tracePipeline, traceExpression, this.makeLineContext(lineNumber));
|
|
3759
3759
|
while (this.vm.getStack().length > stackBefore) {
|
|
3760
3760
|
this.vm.pop();
|
|
3761
3761
|
}
|
|
@@ -3806,7 +3806,7 @@ var ExpressionEngine = class {
|
|
|
3806
3806
|
controller.abort();
|
|
3807
3807
|
};
|
|
3808
3808
|
chunkZ2XP767T_cjs.setActiveQueryClient(this.queryClient);
|
|
3809
|
-
const result =
|
|
3809
|
+
const result = chunkQDMPOAI7_cjs.executeBytecode(program, this.vm, void 0, void 0, this.makeLineContext(lineNumber));
|
|
3810
3810
|
while (this.vm.getStack().length > stackBefore) {
|
|
3811
3811
|
this.vm.pop();
|
|
3812
3812
|
}
|
|
@@ -4048,7 +4048,7 @@ var ExpressionEngine = class {
|
|
|
4048
4048
|
* (this grammar is rare, a per-call allocation here is a non-issue).
|
|
4049
4049
|
*/
|
|
4050
4050
|
compileAdHoc(tokens) {
|
|
4051
|
-
const builder = new
|
|
4051
|
+
const builder = new chunkNZFKROS7_cjs.BytecodeBuilder();
|
|
4052
4052
|
this.parseExpression(builder, tokens);
|
|
4053
4053
|
return builder.build();
|
|
4054
4054
|
}
|
|
@@ -4063,7 +4063,7 @@ var ExpressionEngine = class {
|
|
|
4063
4063
|
* names, which ordinary evaluation deliberately never allows.
|
|
4064
4064
|
*/
|
|
4065
4065
|
executeSymbolicTolerant(program) {
|
|
4066
|
-
const result =
|
|
4066
|
+
const result = chunkQDMPOAI7_cjs.executeBytecode(program, this.vm, void 0, void 0, void 0, true);
|
|
4067
4067
|
if (result.type === "error") throw result.error;
|
|
4068
4068
|
if (result.type === "pending") {
|
|
4069
4069
|
throw chunkM4N5GA5Z_cjs.ErrorFactory.execution(
|
|
@@ -4140,11 +4140,11 @@ var ExpressionEngine = class {
|
|
|
4140
4140
|
}
|
|
4141
4141
|
let combined = factorValues[0].value;
|
|
4142
4142
|
for (let i = 1; i < factorValues.length; i++) {
|
|
4143
|
-
const product =
|
|
4143
|
+
const product = chunk4CVLFLOB_cjs.matrixMultiply(combined, factorValues[i].value);
|
|
4144
4144
|
if (product.type === 13 /* Error */) return product;
|
|
4145
4145
|
combined = product.value;
|
|
4146
4146
|
}
|
|
4147
|
-
const inv =
|
|
4147
|
+
const inv = chunk4CVLFLOB_cjs.inverse(combined);
|
|
4148
4148
|
if (inv.type === 13 /* Error */) return inv;
|
|
4149
4149
|
const rhsValue = this.executeSymbolicTolerant(equation.rhsProgram);
|
|
4150
4150
|
if (rhsValue.type !== 7 /* Matrix */) {
|
|
@@ -4153,7 +4153,7 @@ var ExpressionEngine = class {
|
|
|
4153
4153
|
`Cannot solve for "${equation.variable}": the right-hand side must be a Matrix.`
|
|
4154
4154
|
);
|
|
4155
4155
|
}
|
|
4156
|
-
return
|
|
4156
|
+
return chunk4CVLFLOB_cjs.matrixMultiply(inv.value, rhsValue.value);
|
|
4157
4157
|
}
|
|
4158
4158
|
/**
|
|
4159
4159
|
* Detects and handles this session's two new symbolic-algebra grammar
|
|
@@ -4209,7 +4209,7 @@ var ExpressionEngine = class {
|
|
|
4209
4209
|
}
|
|
4210
4210
|
return this.simplifySymbolically(beforeTokens);
|
|
4211
4211
|
}
|
|
4212
|
-
if (
|
|
4212
|
+
if (chunkCSG5XVNJ_cjs.containsSymbolicCall(normalizedTokens)) {
|
|
4213
4213
|
return this.simplifySymbolically(normalizedTokens);
|
|
4214
4214
|
}
|
|
4215
4215
|
if (normalizedTokens[0].type === "COLON" || normalizedTokens[0].type === "GLOBAL") return null;
|
|
@@ -4310,7 +4310,7 @@ var ExpressionEngine = class {
|
|
|
4310
4310
|
solveScalarEquation(equation) {
|
|
4311
4311
|
const lhs = this.executeSymbolicTolerant(equation.lhsProgram);
|
|
4312
4312
|
const rhs = this.executeSymbolicTolerant(equation.rhsProgram);
|
|
4313
|
-
return
|
|
4313
|
+
return chunkBXKJLM5R_cjs.solveEquationValues(lhs, rhs, equation.variable);
|
|
4314
4314
|
}
|
|
4315
4315
|
//#endregion
|
|
4316
4316
|
/**
|
|
@@ -6692,7 +6692,7 @@ var PageManager = class _PageManager {
|
|
|
6692
6692
|
});
|
|
6693
6693
|
}
|
|
6694
6694
|
} else {
|
|
6695
|
-
const inlineSpans =
|
|
6695
|
+
const inlineSpans = chunkWWOLFXTX_cjs.sharedLexer.findInlineSolves(state.text);
|
|
6696
6696
|
if (inlineSpans.length > 0) {
|
|
6697
6697
|
for (const span of inlineSpans) {
|
|
6698
6698
|
if (!span.expression.trim()) continue;
|
|
@@ -6798,8 +6798,8 @@ var ThreeTierEvaluator = class {
|
|
|
6798
6798
|
this.checkpointer = checkpointer ?? null;
|
|
6799
6799
|
this.pageManager = new PageManager();
|
|
6800
6800
|
this.engine.setDocumentModel(this.doc);
|
|
6801
|
-
this.globalUnsubscribe =
|
|
6802
|
-
for (const lineNumber of this.dag.getAffectedLines(
|
|
6801
|
+
this.globalUnsubscribe = chunkBXKJLM5R_cjs.sharedGlobalVariableStore.subscribe((name) => {
|
|
6802
|
+
for (const lineNumber of this.dag.getAffectedLines(chunkBXKJLM5R_cjs.globalDagKey(name))) {
|
|
6803
6803
|
this.doc.markDirtyByLineNumber(lineNumber);
|
|
6804
6804
|
}
|
|
6805
6805
|
});
|
|
@@ -7458,7 +7458,7 @@ var ThreeTierEvaluator = class {
|
|
|
7458
7458
|
}
|
|
7459
7459
|
const trimmed = state.text.trim();
|
|
7460
7460
|
if (trimmed.length === 0) return { expressions: [], inlineSolveCount: 0 };
|
|
7461
|
-
const inlineSpans =
|
|
7461
|
+
const inlineSpans = chunkWWOLFXTX_cjs.sharedLexer.findInlineSolves(state.text);
|
|
7462
7462
|
if (inlineSpans.length > 0) {
|
|
7463
7463
|
return {
|
|
7464
7464
|
expressions: inlineSpans.map((s) => s.expression),
|
|
@@ -7482,5 +7482,5 @@ exports.checkPackageCompatibility = checkPackageCompatibility;
|
|
|
7482
7482
|
exports.extractReadsAndWrites = extractReadsAndWrites;
|
|
7483
7483
|
exports.findInlineSolvesInLine = findInlineSolvesInLine;
|
|
7484
7484
|
exports.isEmptyLine = isEmptyLine;
|
|
7485
|
-
//# sourceMappingURL=chunk-
|
|
7486
|
-
//# sourceMappingURL=chunk-
|
|
7485
|
+
//# sourceMappingURL=chunk-73GSBGUU.cjs.map
|
|
7486
|
+
//# sourceMappingURL=chunk-73GSBGUU.cjs.map
|