solve-engine 2.29.0 → 2.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-QOEO7CKE.js → chunk-CIC2YO2M.js} +2 -2
- package/dist/{chunk-QOEO7CKE.js.map → chunk-CIC2YO2M.js.map} +1 -1
- package/dist/{chunk-TBAUKHEC.js → chunk-FNSQ6O4Y.js} +3 -3
- package/dist/{chunk-TBAUKHEC.js.map → chunk-FNSQ6O4Y.js.map} +1 -1
- package/dist/{chunk-4PILWX4F.cjs → chunk-NNRTDLGC.cjs} +3 -3
- package/dist/{chunk-4PILWX4F.cjs.map → chunk-NNRTDLGC.cjs.map} +1 -1
- package/dist/{chunk-6K6ZW4B6.js → chunk-NOZKHMML.js} +3 -3
- package/dist/{chunk-6K6ZW4B6.js.map → chunk-NOZKHMML.js.map} +1 -1
- package/dist/{chunk-IY3GI2AM.cjs → chunk-PNHTC3FM.cjs} +4 -4
- package/dist/{chunk-IY3GI2AM.cjs.map → chunk-PNHTC3FM.cjs.map} +1 -1
- package/dist/{chunk-ZBMWLTE6.cjs → chunk-RHRAONDK.cjs} +2 -2
- package/dist/{chunk-ZBMWLTE6.cjs.map → chunk-RHRAONDK.cjs.map} +1 -1
- package/dist/chunk-V7LXOTCU.js +3 -0
- package/dist/chunk-V7LXOTCU.js.map +1 -0
- package/dist/chunk-W7NN77PH.cjs +3 -0
- package/dist/chunk-W7NN77PH.cjs.map +1 -0
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/engine.cjs +1 -1
- package/dist/engine.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/packages.cjs +1 -1
- package/dist/packages.js +1 -1
- package/dist/testing.cjs +2 -2
- package/dist/testing.js +1 -1
- package/dist/worker.cjs +2 -2
- package/dist/worker.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-CT3PD7L3.cjs +0 -3
- package/dist/chunk-CT3PD7L3.cjs.map +0 -1
- package/dist/chunk-SYJAH6CD.js +0 -3
- package/dist/chunk-SYJAH6CD.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
'use strict';var chunkQ7TBBV62_cjs=require('./chunk-Q7TBBV62.cjs'),chunkZVPZQ66D_cjs=require('./chunk-ZVPZQ66D.cjs'),chunkTTFO4YDP_cjs=require('./chunk-TTFO4YDP.cjs'),chunkGWV273KZ_cjs=require('./chunk-GWV273KZ.cjs'),chunkHG4NPDN5_cjs=require('./chunk-HG4NPDN5.cjs'),chunkP43SV4NJ_cjs=require('./chunk-P43SV4NJ.cjs'),chunkWQGHJAW2_cjs=require('./chunk-WQGHJAW2.cjs'),chunk5AKT36UK_cjs=require('./chunk-5AKT36UK.cjs'),chunk4DR5RBHQ_cjs=require('./chunk-4DR5RBHQ.cjs'),chunkUURM7P3P_cjs=require('./chunk-UURM7P3P.cjs'),chunkZLRJ7TDP_cjs=require('./chunk-ZLRJ7TDP.cjs'),chunkRAFOQ4T5_cjs=require('./chunk-RAFOQ4T5.cjs'),chunkYWF6C2IO_cjs=require('./chunk-YWF6C2IO.cjs'),chunkA764BY7L_cjs=require('./chunk-A764BY7L.cjs'),chunkOM7NOHJF_cjs=require('./chunk-OM7NOHJF.cjs'),chunkZBMWLTE6_cjs=require('./chunk-ZBMWLTE6.cjs'),chunkAGCNMEP2_cjs=require('./chunk-AGCNMEP2.cjs'),chunkY7O4D3BJ_cjs=require('./chunk-Y7O4D3BJ.cjs'),chunkWU7SBKVU_cjs=require('./chunk-WU7SBKVU.cjs'),chunkYBQOQTVL_cjs=require('./chunk-YBQOQTVL.cjs'),chunkS3DFU33X_cjs=require('./chunk-S3DFU33X.cjs'),chunkSUAGBRQ7_cjs=require('./chunk-SUAGBRQ7.cjs');function Gt(r,e,t,n,i){let s=t[e],o=n[e];if(!s||!o)return;let c=new Set(Object.keys(s));for(let l of Object.keys(o))c.has(l)&&i.push({kind:r,severity:"warning",detail:`Both "${t.name}" and "${n.name}" register a ${e==="prefixParselets"?"prefix":"infix"} parselet for token type "${l}" \u2014 the later-registered one silently wins.`,packages:[t.name,n.name]});}function qt(r,e){let t=[];if(Gt("prefixParseletTokenType","prefixParselets",r,e,t),Gt("infixParseletTokenType","infixParselets",r,e,t),r.phrases&&e.phrases)for(let[s,o]of Object.entries(e.phrases)){let c=r.phrases[s];c!==void 0&&c!==o&&t.push({kind:"phrase",severity:"warning",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") fuse the phrase "${s}" to DIFFERENT token types \u2014 PhraseTrie has no collision detection of its own, so the later-registered mapping silently wins with no other signal.`,packages:[r.name,e.name]});}if(r.asConverters&&e.asConverters)for(let s of Object.keys(e.asConverters)){let o=s.toLowerCase();Object.keys(r.asConverters).some(c=>c.toLowerCase()===o)&&t.push({kind:"converterName",severity:"warning",detail:`Both "${r.name}" and "${e.name}" register an "as ${s}" converter \u2014 the later-registered handler silently wins.`,packages:[r.name,e.name]});}if(r.pluginFunctions&&e.pluginFunctions){let s=new Set(Object.keys(r.pluginFunctions));for(let o of Object.keys(e.pluginFunctions))s.has(o)&&t.push({kind:"pluginFunctionName",severity:"warning",detail:`Both "${r.name}" and "${e.name}" register a plugin function named "${o}" \u2014 the later registration wins in the engine's name-to-index map. Give each package's functions package-unique names.`,packages:[r.name,e.name]});}if(r.normalizerRules&&e.normalizerRules){let s=new Set(r.normalizerRules.map(o=>o.name));for(let o of e.normalizerRules)s.has(o.name)&&t.push({kind:"normalizerRuleName",severity:"warning",detail:`Both "${r.name}" and "${e.name}" register a normalizer rule named "${o.name}" \u2014 the normalizer unregisters rules by name, so removing either package would drop both rules. Give each package's rules a package-unique name.`,packages:[r.name,e.name]});}let n=r.lexerVocabulary,i=e.lexerVocabulary;if(n?.keywords&&i?.keywords)for(let[s,o]of Object.entries(i.keywords)){let c=n.keywords[s];c!==void 0&&c!==o&&t.push({kind:"lexerKeyword",severity:"error",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") register the lexer keyword "${s}" for DIFFERENT token types \u2014 whichever package registers second wins, and the loser's grammar becomes silently unreachable for that word.`,packages:[r.name,e.name]});}if(n?.operators&&i?.operators)for(let[s,o]of Object.entries(i.operators)){let c=n.operators[s];c!==void 0&&c!==o&&t.push({kind:"lexerOperator",severity:"error",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") register the lexer operator "${s}" for DIFFERENT token types.`,packages:[r.name,e.name]});}if(r.asyncResolvers&&e.asyncResolvers){let s=new Set(r.asyncResolvers.map(o=>o.namespace));for(let o of e.asyncResolvers)s.has(o.namespace)&&t.push({kind:"asyncResolverNamespace",severity:"error",detail:`Both "${r.name}" and "${e.name}" register an async resolver under the namespace "${o.namespace}" \u2014 ResolverRegistry is keyed by namespace, so one resolver's cache/preflight state will silently clobber the other's.`,packages:[r.name,e.name]});}if(r.tokenCategories&&e.tokenCategories)for(let[s,o]of Object.entries(e.tokenCategories)){let c=r.tokenCategories[s];c!==void 0&&c!==o&&t.push({kind:"tokenCategory",severity:"info",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") declare a highlight category for token type "${s}" \u2014 cosmetic only, but the later registration wins.`,packages:[r.name,e.name]});}return t}function cn(r,e){let t=[];for(let n of e)n===r||n.name===r.name||t.push(...qt(n,r));return {compatible:!t.some(n=>n.severity==="error"),conflicts:t}}var xe=class{constructor(){this.prefixOwners=new Map;this.infixOwners=new Map;this.phraseOwners=new Map;this.converterOwners=new Map;this.pluginFnOwners=new Map;this.ruleOwners=new Map;this.keywordOwners=new Map;this.operatorOwners=new Map;this.resolverOwners=new Map;this.categoryOwners=new Map;}check(e){let t=new Set,n=(s,o)=>{let c=s.get(o);c&&c!==e&&c.name!==e.name&&t.add(c);};if(e.prefixParselets)for(let s of Object.keys(e.prefixParselets))n(this.prefixOwners,s);if(e.infixParselets)for(let s of Object.keys(e.infixParselets))n(this.infixOwners,s);if(e.phrases)for(let s of Object.keys(e.phrases))n(this.phraseOwners,s);if(e.asConverters)for(let s of Object.keys(e.asConverters))n(this.converterOwners,s.toLowerCase());if(e.pluginFunctions)for(let s of Object.keys(e.pluginFunctions))n(this.pluginFnOwners,s);if(e.normalizerRules)for(let s of e.normalizerRules)n(this.ruleOwners,s.name);if(e.lexerVocabulary?.keywords)for(let s of Object.keys(e.lexerVocabulary.keywords))n(this.keywordOwners,s);if(e.lexerVocabulary?.operators)for(let s of Object.keys(e.lexerVocabulary.operators))n(this.operatorOwners,s);if(e.asyncResolvers)for(let s of e.asyncResolvers)n(this.resolverOwners,s.namespace);if(e.tokenCategories)for(let s of Object.keys(e.tokenCategories))n(this.categoryOwners,s);let i=[];for(let s of t)i.push(...qt(s,e));return i}add(e){let t=(n,i)=>{n.has(i)||n.set(i,e);};if(e.prefixParselets)for(let n of Object.keys(e.prefixParselets))t(this.prefixOwners,n);if(e.infixParselets)for(let n of Object.keys(e.infixParselets))t(this.infixOwners,n);if(e.phrases)for(let n of Object.keys(e.phrases))t(this.phraseOwners,n);if(e.asConverters)for(let n of Object.keys(e.asConverters))t(this.converterOwners,n.toLowerCase());if(e.pluginFunctions)for(let n of Object.keys(e.pluginFunctions))t(this.pluginFnOwners,n);if(e.normalizerRules)for(let n of e.normalizerRules)t(this.ruleOwners,n.name);if(e.lexerVocabulary?.keywords)for(let n of Object.keys(e.lexerVocabulary.keywords))t(this.keywordOwners,n);if(e.lexerVocabulary?.operators)for(let n of Object.keys(e.lexerVocabulary.operators))t(this.operatorOwners,n);if(e.asyncResolvers)for(let n of e.asyncResolvers)t(this.resolverOwners,n.namespace);if(e.tokenCategories)for(let n of Object.keys(e.tokenCategories))t(this.categoryOwners,n);}rebuild(e){for(let t of [this.prefixOwners,this.infixOwners,this.phraseOwners,this.converterOwners,this.pluginFnOwners,this.ruleOwners,this.keywordOwners,this.operatorOwners,this.resolverOwners,this.categoryOwners])t.clear();for(let t of e)this.add(t);}};var wr=/(\d+)\.(\d+)\.(\d+)/,Nr=/^\d+$/;function Qt(r){let e=wr.exec(r.trim());return e?[Number(e[1]),Number(e[2]),Number(e[3])]:null}function Rr(r,e){return r[0]-e[0]||r[1]-e[1]||r[2]-e[2]}function Ue(r){let e=r.split(".");if(e.length===0||e.length>3)return null;let t=[0,0,0];for(let n=0;n<e.length;n++){if(!Nr.test(e[n]))return null;t[n]=Number(e[n]);}return [t[0],t[1],t[2]]}function Ar([r,e,t]){let n=r>0?[r+1,0,0]:e>0?[0,e+1,0]:[0,0,t+1];return [{op:">=",v:[r,e,t]},{op:"<",v:n}]}function Pr([r,e,t]){return [{op:">=",v:[r,e,t]},{op:"<",v:[r,e+1,0]}]}function Lr(r){if(r===""||r==="*"||r==="x"||r==="X")return [];if(r[0]==="^"){let i=Ue(r.slice(1));return i&&Ar(i)}if(r[0]==="~"){let i=Ue(r.slice(1));return i&&Pr(i)}let e=/^(>=|<=|>|<|=)/.exec(r),t=e?e[1]:"=",n=Ue(e?r.slice(e[1].length):r);return n&&[{op:t,v:n}]}function Xt(r){let e=[];for(let t of r.split("||")){let n=t.trim().split(/\s+/).filter(s=>s!==""),i=[];for(let s of n){let o=Lr(s);if(o===null)return null;i.push(...o);}e.push(i);}return e}function Yt(r){return Xt(r.trim())!==null}function Or(r,e){let t=Rr(r,e.v);switch(e.op){case "<":return t<0;case "<=":return t<=0;case ">":return t>0;case ">=":return t>=0;case "=":return t===0}}function Jt(r,e){let t=Xt(e.trim());return t===null?false:t.some(n=>n.every(i=>Or(r,i)))}function Ir(r,e=chunkZBMWLTE6_cjs.a){if(!r.engineVersion)return {compatible:true};if(!Yt(r.engineVersion))return {compatible:false,reason:"invalid-range",declaredRange:r.engineVersion,engineVersion:e};let t=Qt(e);return t===null||!Jt(t,r.engineVersion)?{compatible:false,reason:"range-not-satisfied",declaredRange:r.engineVersion,engineVersion:e}:{compatible:true}}function Zt(r,e=chunkZBMWLTE6_cjs.a){let t=Ir(r,e);if(!t.compatible)throw t.reason==="invalid-range"?chunkSUAGBRQ7_cjs.c.config({code:"PACKAGE_ENGINE_VERSION_INVALID_RANGE",message:`Package "${r.name}" declares an invalid engineVersion range: "${t.declaredRange}" is not a valid semver range.`,expected:'a valid semver range string (e.g. "^0.1.0", ">=0.2.0 <1.0.0")',found:`"${t.declaredRange}"`,suggestion:`This is a range-syntax typo in "${r.name}"'s own descriptor, not a version mismatch with the running engine \u2014 check for a stray character.`,context:{packageName:r.name,declaredRange:t.declaredRange}}):chunkSUAGBRQ7_cjs.c.config({code:"PACKAGE_ENGINE_VERSION_MISMATCH",message:`Package "${r.name}" declares engineVersion "${t.declaredRange}", which is not satisfied by the running engine version "${t.engineVersion}".`,expected:`an engine version satisfying "${t.declaredRange}"`,found:`engine version "${t.engineVersion}"`,suggestion:`Update "${r.name}" to a version built against solve-engine ${t.engineVersion}, or pin solve-engine to a version satisfying "${t.declaredRange}".`,context:{packageName:r.name,declaredRange:t.declaredRange,engineVersion:t.engineVersion}})}var ee="solve-engine/snapshot",Q=1;function $(r){return Number.isFinite(r)?r:Number.isNaN(r)?"NaN":r>0?"Infinity":"-Infinity"}function z(r){if(typeof r=="number")return r;if(r==="NaN")return NaN;if(r==="Infinity")return 1/0;if(r==="-Infinity")return -1/0;throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_MALFORMED,message:`Snapshot holds an unrecognised number sentinel: ${JSON.stringify(r)}`,expected:'a JSON number, or one of "NaN", "Infinity", "-Infinity"',found:JSON.stringify(r)})}var V={SNAPSHOT_VERSION_MISMATCH:"SNAPSHOT_VERSION_MISMATCH",SNAPSHOT_MALFORMED:"SNAPSHOT_MALFORMED",SNAPSHOT_UNSUPPORTED_VALUE:"SNAPSHOT_UNSUPPORTED_VALUE"};function er(r){return {coef:r.coef.toString(),scale:r.scale}}function tr(r){return {coef:BigInt(r.coef),scale:r.scale}}function Br(r){return {n:r.n.toString(),d:r.d.toString()}}function Mr(r){return {n:BigInt(r.n),d:BigInt(r.d)}}function rr(r){return chunkOM7NOHJF_cjs.g[r]??String(r)}function _e(r,e){throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_UNSUPPORTED_VALUE,message:`A ${rr(r)} value (${e}) cannot be included in a snapshot yet.`,expected:"a concrete number, string, boolean, unit, range, matrix, bigint, or money value",found:`${rr(r)} value`,suggestion:"Symbolic (algebra) values are deferred to a follow-up. Evaluate the document without the symbolic line, or re-derive it after restoring.",context:{valueType:r,location:e}})}function ze(r,e){switch(r.type){case 0:{let t={t:0,v:$(r.value)};return r.exact!==void 0&&(t.exact=er(r.exact)),r.rational!==void 0&&(t.rational=Br(r.rational)),t}case 1:{let t=r.value;return typeof t=="bigint"?{t:1,v:t.toString(),big:true,base:r.unit}:{t:1,v:$(t),base:r.unit}}case 2:return {t:2,v:r.value.toString()};case 3:return {t:3,v:r.value};case 4:{let t={t:4,v:$(r.value)};return r.grain!==void 0&&(t.g=r.grain),r.zone!==void 0&&(t.z=r.zone),t}case 5:return {t:5,v:$(r.value)};case 6:{let t={t:6,v:$(r.value),unit:r.unit??""};return r.exact!==void 0&&(t.exact=er(r.exact)),t}case 7:{let t=r.value;t.hasSymbolic&&_e(9,`${e} (symbolic matrix cell)`);let n=t.data.map(i=>Vr(i,e));return {t:7,rows:t.rows,cols:t.cols,data:n}}case 8:{let t=r.value;return {t:8,min:$(t.min),max:$(t.max)}}case 10:return {t:10,v:r.value};case 13:return {t:13,code:r.value,message:r.unit??""};default:return _e(r.type,e)}}function Vr(r,e){return typeof r=="boolean"?r:typeof r=="number"?$(r):_e(9,`${e} (symbolic matrix cell)`)}function Fe(r){switch(r.t){case 0:{let e=new chunkOM7NOHJF_cjs.m(0,z(r.v));return r.exact!==void 0&&(e.exact=tr(r.exact)),r.rational!==void 0&&(e.rational=Mr(r.rational)),e}case 1:{let e=r.big?BigInt(r.v):z(r.v);return new chunkOM7NOHJF_cjs.m(1,e,r.base)}case 2:return new chunkOM7NOHJF_cjs.m(2,BigInt(r.v));case 3:return new chunkOM7NOHJF_cjs.m(3,r.v);case 4:{let e=new chunkOM7NOHJF_cjs.m(4,z(r.v));return r.g!==void 0&&(e.grain=r.g),r.z!==void 0&&(e.zone=r.z),e}case 5:return new chunkOM7NOHJF_cjs.m(5,z(r.v));case 6:{let e=new chunkOM7NOHJF_cjs.m(6,z(r.v),r.unit);return r.exact!==void 0&&(e.exact=tr(r.exact)),e}case 7:{let e=r.data.map(n=>typeof n=="boolean"?n:z(n)),t={rows:r.rows,cols:r.cols,data:e,hasSymbolic:false};return new chunkOM7NOHJF_cjs.m(7,t)}case 8:return new chunkOM7NOHJF_cjs.m(8,{min:z(r.min),max:z(r.max)});case 10:return new chunkOM7NOHJF_cjs.m(10,r.v);case 13:return new chunkOM7NOHJF_cjs.m(13,r.code,r.message);default:throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_MALFORMED,message:`Snapshot holds a value with an unknown type tag: ${JSON.stringify(r.t)}`,expected:"a known SerializedValue type tag",found:JSON.stringify(r.t)})}}function fe(r){let e={opcodes:Array.from(r.opcodes),numbers:Array.from(r.numbers,$),strings:r.strings.slice(),hasAsync:r.hasAsync};return r.constants&&(e.constants=Array.from(r.constants.entries())),r.userFunctionBodies&&(e.userFunctionBodies=r.userFunctionBodies.map($e)),r.anonymousBodies&&(e.anonymousBodies=r.anonymousBodies.map(t=>({params:t.params.slice(),program:fe(t.program)}))),e}function de(r){let e={opcodes:Uint8Array.from(r.opcodes),numbers:Float64Array.from(r.numbers,z),strings:r.strings.slice(),hasAsync:r.hasAsync};return r.constants&&(e.constants=new Map(r.constants)),r.userFunctionBodies&&(e.userFunctionBodies=r.userFunctionBodies.map(je)),r.anonymousBodies&&(e.anonymousBodies=r.anonymousBodies.map(t=>({params:t.params.slice(),program:de(t.program)}))),e}function $e(r){return {name:r.name,params:r.params.slice(),program:fe(r.program)}}function je(r){return {name:r.name,params:r.params.slice(),program:de(r.program)}}function or(r){if(typeof r!="object"||r===null)throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_VERSION_MISMATCH,message:"fromJSON was given something that is not a snapshot object.",expected:`an object produced by ExpressionEngine.toJSON() with format "${ee}"`,found:r===null?"null":typeof r});let e=r;if(e.format!==ee)throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_VERSION_MISMATCH,message:`This object is not a solve-engine snapshot (its "format" is ${JSON.stringify(e.format)}).`,expected:`format "${ee}"`,found:JSON.stringify(e.format)});if(e.version!==Q)throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_VERSION_MISMATCH,message:`This snapshot was written for format version ${e.version}, but this engine restores version ${Q}.`,expected:`snapshot version ${Q}`,found:`version ${e.version}`,suggestion:"Regenerate the snapshot with a matching engine version, or re-evaluate the document from source.",context:{snapshotVersion:e.version,readerVersion:Q,engineVersion:e.engineVersion}});_r(r);}var nr=32;function Dr(r){return r===null?"null":Array.isArray(r)?`an array of ${r.length}`:typeof r=="object"?"an object":`${typeof r} ${JSON.stringify(r)}`.slice(0,80)}function h(r,e,t){throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_MALFORMED,message:`Snapshot is malformed at ${r}: expected ${e}.`,expected:e,found:Dr(t),suggestion:"Regenerate the snapshot with ExpressionEngine.toJSON(), or re-evaluate the document from source.",context:{location:r}})}function j(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function F(r){return typeof r=="number"||r==="NaN"||r==="Infinity"||r==="-Infinity"}function pe(r){return typeof r=="string"&&/^-?\d+$/.test(r)}function ke(r,e){(!Array.isArray(r)||!r.every(t=>typeof t=="string"))&&h(e,"an array of strings",r);}function ir(r,e){(!j(r)||!pe(r.coef)||typeof r.scale!="number")&&h(e,"a decimal as { coef: digits, scale: number }",r);}function Ur(r,e){(!j(r)||!pe(r.n)||!pe(r.d))&&h(e,"a rational as { n: digits, d: digits }",r);}function sr(r,e){switch(j(r)||h(e,"a serialised value object",r),r.t){case 0:F(r.v)||h(`${e}.v`,"a number",r.v),r.exact!==void 0&&ir(r.exact,`${e}.exact`),r.rational!==void 0&&Ur(r.rational,`${e}.rational`);return;case 1:(r.big?!pe(r.v):!F(r.v))&&h(`${e}.v`,r.big?"an integer string":"a number",r.v),r.base!==void 0&&typeof r.base!="string"&&h(`${e}.base`,"a base name",r.base);return;case 2:pe(r.v)||h(`${e}.v`,"an integer string",r.v);return;case 3:typeof r.v!="string"&&h(`${e}.v`,"a string",r.v);return;case 4:F(r.v)||h(`${e}.v`,"a number",r.v),r.g!==void 0&&r.g!=="date"&&r.g!=="datetime"&&r.g!=="instant"&&h(`${e}.g`,'one of "date", "datetime" or "instant"',r.g),r.z!==void 0&&typeof r.z!="string"&&h(`${e}.z`,"a zone reference",r.z);return;case 5:F(r.v)||h(`${e}.v`,"a number",r.v);return;case 6:F(r.v)||h(`${e}.v`,"a number",r.v),typeof r.unit!="string"&&h(`${e}.unit`,"a unit name",r.unit),r.exact!==void 0&&ir(r.exact,`${e}.exact`);return;case 7:{let{rows:t,cols:n,data:i}=r;(!Number.isInteger(t)||t<0)&&h(`${e}.rows`,"a non-negative integer",t),(!Number.isInteger(n)||n<0)&&h(`${e}.cols`,"a non-negative integer",n),(!Array.isArray(i)||i.length!==t*n)&&h(`${e}.data`,`an array of ${t} \xD7 ${n} cells`,i),i.every(s=>typeof s=="boolean"||F(s))||h(`${e}.data`,"numeric or boolean cells",i);return}case 8:(!F(r.min)||!F(r.max))&&h(e,"a range with numeric min and max",r);return;case 10:typeof r.v!="boolean"&&h(`${e}.v`,"a boolean",r.v);return;case 13:(typeof r.code!="string"||typeof r.message!="string")&&h(e,"an error with a string code and message",r);return;default:return}}function Se(r,e,t){if(t>nr&&h(e,`function bodies nested at most ${nr} deep`,"deeper nesting"),j(r)||h(e,"a serialised program object",r),(!Array.isArray(r.opcodes)||!r.opcodes.every(n=>Number.isInteger(n)&&n>=0&&n<=255))&&h(`${e}.opcodes`,"an array of bytes (integers 0 to 255)",r.opcodes),(!Array.isArray(r.numbers)||!r.numbers.every(F))&&h(`${e}.numbers`,"an array of numbers",r.numbers),ke(r.strings,`${e}.strings`),typeof r.hasAsync!="boolean"&&h(`${e}.hasAsync`,"a boolean",r.hasAsync),r.constants!==void 0){let n=i=>Array.isArray(i)&&i.length===2&&typeof i[0]=="number"&&typeof i[1]=="number";(!Array.isArray(r.constants)||!r.constants.every(n))&&h(`${e}.constants`,"an array of [number, number] pairs",r.constants);}r.userFunctionBodies!==void 0&&(Array.isArray(r.userFunctionBodies)||h(`${e}.userFunctionBodies`,"an array of functions",r.userFunctionBodies),r.userFunctionBodies.forEach((n,i)=>ar(n,`${e}.userFunctionBodies[${i}]`,t+1))),r.anonymousBodies!==void 0&&(Array.isArray(r.anonymousBodies)||h(`${e}.anonymousBodies`,"an array of bodies",r.anonymousBodies),r.anonymousBodies.forEach((n,i)=>{let s=`${e}.anonymousBodies[${i}]`;j(n)||h(s,"a body object",n),ke(n.params,`${s}.params`),Se(n.program,`${s}.program`,t+1);}));}function ar(r,e,t){j(r)||h(e,"a function object",r),typeof r.name!="string"&&h(`${e}.name`,"a function name",r.name),ke(r.params,`${e}.params`),Se(r.program,`${e}.program`,t);}function _r(r){r.locale!==void 0&&typeof r.locale!="string"&&h("locale","a locale code",r.locale),j(r.variables)||h("variables","an object of values by name",r.variables);for(let[e,t]of Object.entries(r.variables))sr(t,`variables.${e}`);Array.isArray(r.userFunctions)||h("userFunctions","an array of functions",r.userFunctions),r.userFunctions.forEach((e,t)=>ar(e,`userFunctions[${t}]`,1)),Array.isArray(r.lineCache)||h("lineCache","an array of cached lines",r.lineCache),r.lineCache.forEach((e,t)=>{let n=`lineCache[${t}]`;j(e)||h(n,"a cached line",e),Number.isInteger(e.line)||h(`${n}.line`,"a line number",e.line),typeof e.expression!="string"&&h(`${n}.expression`,"the line's expression text",e.expression),sr(e.result,`${n}.result`),Se(e.bytecode,`${n}.bytecode`,1),ke(e.reads,`${n}.reads`),e.writeVar!==null&&typeof e.writeVar!="string"&&h(`${n}.writeVar`,"a variable name or null",e.writeVar);}),Array.isArray(r.bytecodeCache)||h("bytecodeCache","an array of compiled expressions",r.bytecodeCache),r.bytecodeCache.forEach((e,t)=>{let n=`bytecodeCache[${t}]`;(!j(e)||typeof e.expression!="string")&&h(n,"an { expression, program } pair",e),Se(e.program,`${n}.program`,1);});}var K=class{constructor(e,t,n,i){this.result=e;this.bytecode=t;this.readVariables=n;this.writeVariable=i;}},Ce=class r{constructor(){this.byLine=new Map;this.count=0;}static exprKey(e){return e??""}static displayKey(e,t){return t===""?`${e}`:`${e}:${t}`}get(e,t){return this.byLine.get(e)?.get(r.exprKey(t))}getEntryForLine(e){let t=this.byLine.get(e);if(t)for(let n of t.values())return n}set(e,t,n){let i=this.byLine.get(e);i||(i=new Map,this.byLine.set(e,i));let s=r.exprKey(n);i.size>0&&!i.has(s)&&(this.count-=i.size,i.clear()),i.has(s)||this.count++,i.set(s,t);}has(e,t){return this.byLine.get(e)?.has(r.exprKey(t))??false}remove(e,t){let n=this.byLine.get(e);n&&n.delete(r.exprKey(t))&&(this.count--,n.size===0&&this.byLine.delete(e));}removeAllForLine(e){let t=this.byLine.get(e);t&&(this.count-=t.size,this.byLine.delete(e));}clearLine(e){this.removeAllForLine(e);}get size(){return this.count}clear(){this.byLine.clear(),this.count=0;}forEach(e){for(let[t,n]of this.byLine)for(let[i,s]of n)e(r.displayKey(t,i),s);}snapshotEntries(){let e=[];for(let[t,n]of this.byLine)for(let[i,s]of n)e.push({line:t,expression:i,entry:s});return e}keys(){let e=[];for(let[t,n]of this.byLine)for(let i of n.keys())e.push(r.displayKey(t,i));return e}};function He(r,e){let t=e.fields(r),n=String(t.month0+1).padStart(2,"0"),i=String(t.day).padStart(2,"0");return `${t.year}-${n}-${i}`}function zr(r,e){if(r instanceof Date)return He(r.getTime(),e);if(typeof r=="number")return Number.isFinite(r)?He(r,e):null;let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(r.trim());return t?`${t[1]}-${t[2]}-${t[3]}`:null}function lr(r,e){if(r===void 0)return;if(typeof r=="function")return n=>r(new Date(n));let t=new Set;for(let n of r){let i=zr(n,e);i!==null&&t.add(i);}return n=>t.has(He(n,e))}function Fr(r,e){if(!r||r.type!==e.type||r.value!==e.value)return true;let t=r.unit,n=e.unit;return t!==n}var Te=class r{constructor(e,t){this.dag=e;this.enqueue=t;this.entries=new Map;}get size(){return this.entries.size}static idOf(e,t){return JSON.stringify([e,t])}register(e){if(!(e.intervalMs>0))return;let t=r.idOf(e.packageId,e.queryKey);if(this.entries.has(t))return;let n=setInterval(()=>{this.tick(t);},e.intervalMs);n.unref?.(),this.entries.set(t,{...e,timer:n,lastValue:null,inFlight:false});}async tick(e){let t=this.entries.get(e);if(t&&!t.inFlight){if(this.isDead(t)){this.stop(e);return}t.inFlight=true;try{let n=await t.refetch(),i=this.entries.get(e);if(!i)return;n&&Fr(i.lastValue,n)&&(i.lastValue=n,this.enqueue(i.packageId,i.queryKey));}catch{}finally{let n=this.entries.get(e);n&&(n.inFlight=false);}}}isDead(e){return this.dag.getAffectedLinesByDataSource(e.packageId,[e.queryKey]).size===0}reconcile(){for(let[e,t]of this.entries)this.isDead(t)&&this.stop(e);}stop(e){let t=this.entries.get(e);t&&(clearInterval(t.timer),this.entries.delete(e));}clearAll(){for(let e of this.entries.values())clearInterval(e.timer);this.entries.clear();}};var _=class{static enable(){this.enabled=true;}static disable(){this.enabled=false;}static isEnabled(){return this.enabled}static track(e,t,n){if(!this.enabled)return {result:t(),alloc:null};let i=typeof process<"u"&&process.memoryUsage?process.memoryUsage():null,s=typeof process<"u"&&process.hrtime?process.hrtime():performance.now(),o=t(),c=typeof process<"u"&&process.hrtime?process.hrtime(s):void 0,l=typeof process<"u"&&process.memoryUsage?process.memoryUsage():null,a=c?c[0]*1e9+c[1]:(performance.now()-s)*1e6,u=i&&l?l.heapUsed-i.heapUsed:0,p={stage:e,allocCount:0,allocBytes:u,objectCounts:{},wallTimeNs:a,...n};return {result:o,alloc:p}}static generateReport(e,t){let n=[];n.push(t?`## ${t}`:"## Pipeline Allocation Report"),n.push(""),n.push(`**Runs:** ${e.length} | **Generated:** ${new Date().toISOString()}`),n.push("");let i=this.aggregate(e);if(i.length===0)return n.push("_No telemetry data._"),n.join(`
|
|
1
|
+
'use strict';var chunkQ7TBBV62_cjs=require('./chunk-Q7TBBV62.cjs'),chunkZVPZQ66D_cjs=require('./chunk-ZVPZQ66D.cjs'),chunkTTFO4YDP_cjs=require('./chunk-TTFO4YDP.cjs'),chunkGWV273KZ_cjs=require('./chunk-GWV273KZ.cjs'),chunkHG4NPDN5_cjs=require('./chunk-HG4NPDN5.cjs'),chunkP43SV4NJ_cjs=require('./chunk-P43SV4NJ.cjs'),chunkWQGHJAW2_cjs=require('./chunk-WQGHJAW2.cjs'),chunk5AKT36UK_cjs=require('./chunk-5AKT36UK.cjs'),chunk4DR5RBHQ_cjs=require('./chunk-4DR5RBHQ.cjs'),chunkUURM7P3P_cjs=require('./chunk-UURM7P3P.cjs'),chunkZLRJ7TDP_cjs=require('./chunk-ZLRJ7TDP.cjs'),chunkRAFOQ4T5_cjs=require('./chunk-RAFOQ4T5.cjs'),chunkYWF6C2IO_cjs=require('./chunk-YWF6C2IO.cjs'),chunkA764BY7L_cjs=require('./chunk-A764BY7L.cjs'),chunkOM7NOHJF_cjs=require('./chunk-OM7NOHJF.cjs'),chunkRHRAONDK_cjs=require('./chunk-RHRAONDK.cjs'),chunkAGCNMEP2_cjs=require('./chunk-AGCNMEP2.cjs'),chunkY7O4D3BJ_cjs=require('./chunk-Y7O4D3BJ.cjs'),chunkWU7SBKVU_cjs=require('./chunk-WU7SBKVU.cjs'),chunkYBQOQTVL_cjs=require('./chunk-YBQOQTVL.cjs'),chunkS3DFU33X_cjs=require('./chunk-S3DFU33X.cjs'),chunkSUAGBRQ7_cjs=require('./chunk-SUAGBRQ7.cjs');function Gt(r,e,t,n,i){let s=t[e],o=n[e];if(!s||!o)return;let c=new Set(Object.keys(s));for(let l of Object.keys(o))c.has(l)&&i.push({kind:r,severity:"warning",detail:`Both "${t.name}" and "${n.name}" register a ${e==="prefixParselets"?"prefix":"infix"} parselet for token type "${l}" \u2014 the later-registered one silently wins.`,packages:[t.name,n.name]});}function qt(r,e){let t=[];if(Gt("prefixParseletTokenType","prefixParselets",r,e,t),Gt("infixParseletTokenType","infixParselets",r,e,t),r.phrases&&e.phrases)for(let[s,o]of Object.entries(e.phrases)){let c=r.phrases[s];c!==void 0&&c!==o&&t.push({kind:"phrase",severity:"warning",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") fuse the phrase "${s}" to DIFFERENT token types \u2014 PhraseTrie has no collision detection of its own, so the later-registered mapping silently wins with no other signal.`,packages:[r.name,e.name]});}if(r.asConverters&&e.asConverters)for(let s of Object.keys(e.asConverters)){let o=s.toLowerCase();Object.keys(r.asConverters).some(c=>c.toLowerCase()===o)&&t.push({kind:"converterName",severity:"warning",detail:`Both "${r.name}" and "${e.name}" register an "as ${s}" converter \u2014 the later-registered handler silently wins.`,packages:[r.name,e.name]});}if(r.pluginFunctions&&e.pluginFunctions){let s=new Set(Object.keys(r.pluginFunctions));for(let o of Object.keys(e.pluginFunctions))s.has(o)&&t.push({kind:"pluginFunctionName",severity:"warning",detail:`Both "${r.name}" and "${e.name}" register a plugin function named "${o}" \u2014 the later registration wins in the engine's name-to-index map. Give each package's functions package-unique names.`,packages:[r.name,e.name]});}if(r.normalizerRules&&e.normalizerRules){let s=new Set(r.normalizerRules.map(o=>o.name));for(let o of e.normalizerRules)s.has(o.name)&&t.push({kind:"normalizerRuleName",severity:"warning",detail:`Both "${r.name}" and "${e.name}" register a normalizer rule named "${o.name}" \u2014 the normalizer unregisters rules by name, so removing either package would drop both rules. Give each package's rules a package-unique name.`,packages:[r.name,e.name]});}let n=r.lexerVocabulary,i=e.lexerVocabulary;if(n?.keywords&&i?.keywords)for(let[s,o]of Object.entries(i.keywords)){let c=n.keywords[s];c!==void 0&&c!==o&&t.push({kind:"lexerKeyword",severity:"error",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") register the lexer keyword "${s}" for DIFFERENT token types \u2014 whichever package registers second wins, and the loser's grammar becomes silently unreachable for that word.`,packages:[r.name,e.name]});}if(n?.operators&&i?.operators)for(let[s,o]of Object.entries(i.operators)){let c=n.operators[s];c!==void 0&&c!==o&&t.push({kind:"lexerOperator",severity:"error",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") register the lexer operator "${s}" for DIFFERENT token types.`,packages:[r.name,e.name]});}if(r.asyncResolvers&&e.asyncResolvers){let s=new Set(r.asyncResolvers.map(o=>o.namespace));for(let o of e.asyncResolvers)s.has(o.namespace)&&t.push({kind:"asyncResolverNamespace",severity:"error",detail:`Both "${r.name}" and "${e.name}" register an async resolver under the namespace "${o.namespace}" \u2014 ResolverRegistry is keyed by namespace, so one resolver's cache/preflight state will silently clobber the other's.`,packages:[r.name,e.name]});}if(r.tokenCategories&&e.tokenCategories)for(let[s,o]of Object.entries(e.tokenCategories)){let c=r.tokenCategories[s];c!==void 0&&c!==o&&t.push({kind:"tokenCategory",severity:"info",detail:`Both "${r.name}" (-> "${c}") and "${e.name}" (-> "${o}") declare a highlight category for token type "${s}" \u2014 cosmetic only, but the later registration wins.`,packages:[r.name,e.name]});}return t}function cn(r,e){let t=[];for(let n of e)n===r||n.name===r.name||t.push(...qt(n,r));return {compatible:!t.some(n=>n.severity==="error"),conflicts:t}}var xe=class{constructor(){this.prefixOwners=new Map;this.infixOwners=new Map;this.phraseOwners=new Map;this.converterOwners=new Map;this.pluginFnOwners=new Map;this.ruleOwners=new Map;this.keywordOwners=new Map;this.operatorOwners=new Map;this.resolverOwners=new Map;this.categoryOwners=new Map;}check(e){let t=new Set,n=(s,o)=>{let c=s.get(o);c&&c!==e&&c.name!==e.name&&t.add(c);};if(e.prefixParselets)for(let s of Object.keys(e.prefixParselets))n(this.prefixOwners,s);if(e.infixParselets)for(let s of Object.keys(e.infixParselets))n(this.infixOwners,s);if(e.phrases)for(let s of Object.keys(e.phrases))n(this.phraseOwners,s);if(e.asConverters)for(let s of Object.keys(e.asConverters))n(this.converterOwners,s.toLowerCase());if(e.pluginFunctions)for(let s of Object.keys(e.pluginFunctions))n(this.pluginFnOwners,s);if(e.normalizerRules)for(let s of e.normalizerRules)n(this.ruleOwners,s.name);if(e.lexerVocabulary?.keywords)for(let s of Object.keys(e.lexerVocabulary.keywords))n(this.keywordOwners,s);if(e.lexerVocabulary?.operators)for(let s of Object.keys(e.lexerVocabulary.operators))n(this.operatorOwners,s);if(e.asyncResolvers)for(let s of e.asyncResolvers)n(this.resolverOwners,s.namespace);if(e.tokenCategories)for(let s of Object.keys(e.tokenCategories))n(this.categoryOwners,s);let i=[];for(let s of t)i.push(...qt(s,e));return i}add(e){let t=(n,i)=>{n.has(i)||n.set(i,e);};if(e.prefixParselets)for(let n of Object.keys(e.prefixParselets))t(this.prefixOwners,n);if(e.infixParselets)for(let n of Object.keys(e.infixParselets))t(this.infixOwners,n);if(e.phrases)for(let n of Object.keys(e.phrases))t(this.phraseOwners,n);if(e.asConverters)for(let n of Object.keys(e.asConverters))t(this.converterOwners,n.toLowerCase());if(e.pluginFunctions)for(let n of Object.keys(e.pluginFunctions))t(this.pluginFnOwners,n);if(e.normalizerRules)for(let n of e.normalizerRules)t(this.ruleOwners,n.name);if(e.lexerVocabulary?.keywords)for(let n of Object.keys(e.lexerVocabulary.keywords))t(this.keywordOwners,n);if(e.lexerVocabulary?.operators)for(let n of Object.keys(e.lexerVocabulary.operators))t(this.operatorOwners,n);if(e.asyncResolvers)for(let n of e.asyncResolvers)t(this.resolverOwners,n.namespace);if(e.tokenCategories)for(let n of Object.keys(e.tokenCategories))t(this.categoryOwners,n);}rebuild(e){for(let t of [this.prefixOwners,this.infixOwners,this.phraseOwners,this.converterOwners,this.pluginFnOwners,this.ruleOwners,this.keywordOwners,this.operatorOwners,this.resolverOwners,this.categoryOwners])t.clear();for(let t of e)this.add(t);}};var wr=/(\d+)\.(\d+)\.(\d+)/,Nr=/^\d+$/;function Qt(r){let e=wr.exec(r.trim());return e?[Number(e[1]),Number(e[2]),Number(e[3])]:null}function Rr(r,e){return r[0]-e[0]||r[1]-e[1]||r[2]-e[2]}function Ue(r){let e=r.split(".");if(e.length===0||e.length>3)return null;let t=[0,0,0];for(let n=0;n<e.length;n++){if(!Nr.test(e[n]))return null;t[n]=Number(e[n]);}return [t[0],t[1],t[2]]}function Ar([r,e,t]){let n=r>0?[r+1,0,0]:e>0?[0,e+1,0]:[0,0,t+1];return [{op:">=",v:[r,e,t]},{op:"<",v:n}]}function Pr([r,e,t]){return [{op:">=",v:[r,e,t]},{op:"<",v:[r,e+1,0]}]}function Lr(r){if(r===""||r==="*"||r==="x"||r==="X")return [];if(r[0]==="^"){let i=Ue(r.slice(1));return i&&Ar(i)}if(r[0]==="~"){let i=Ue(r.slice(1));return i&&Pr(i)}let e=/^(>=|<=|>|<|=)/.exec(r),t=e?e[1]:"=",n=Ue(e?r.slice(e[1].length):r);return n&&[{op:t,v:n}]}function Xt(r){let e=[];for(let t of r.split("||")){let n=t.trim().split(/\s+/).filter(s=>s!==""),i=[];for(let s of n){let o=Lr(s);if(o===null)return null;i.push(...o);}e.push(i);}return e}function Yt(r){return Xt(r.trim())!==null}function Or(r,e){let t=Rr(r,e.v);switch(e.op){case "<":return t<0;case "<=":return t<=0;case ">":return t>0;case ">=":return t>=0;case "=":return t===0}}function Jt(r,e){let t=Xt(e.trim());return t===null?false:t.some(n=>n.every(i=>Or(r,i)))}function Ir(r,e=chunkRHRAONDK_cjs.a){if(!r.engineVersion)return {compatible:true};if(!Yt(r.engineVersion))return {compatible:false,reason:"invalid-range",declaredRange:r.engineVersion,engineVersion:e};let t=Qt(e);return t===null||!Jt(t,r.engineVersion)?{compatible:false,reason:"range-not-satisfied",declaredRange:r.engineVersion,engineVersion:e}:{compatible:true}}function Zt(r,e=chunkRHRAONDK_cjs.a){let t=Ir(r,e);if(!t.compatible)throw t.reason==="invalid-range"?chunkSUAGBRQ7_cjs.c.config({code:"PACKAGE_ENGINE_VERSION_INVALID_RANGE",message:`Package "${r.name}" declares an invalid engineVersion range: "${t.declaredRange}" is not a valid semver range.`,expected:'a valid semver range string (e.g. "^0.1.0", ">=0.2.0 <1.0.0")',found:`"${t.declaredRange}"`,suggestion:`This is a range-syntax typo in "${r.name}"'s own descriptor, not a version mismatch with the running engine \u2014 check for a stray character.`,context:{packageName:r.name,declaredRange:t.declaredRange}}):chunkSUAGBRQ7_cjs.c.config({code:"PACKAGE_ENGINE_VERSION_MISMATCH",message:`Package "${r.name}" declares engineVersion "${t.declaredRange}", which is not satisfied by the running engine version "${t.engineVersion}".`,expected:`an engine version satisfying "${t.declaredRange}"`,found:`engine version "${t.engineVersion}"`,suggestion:`Update "${r.name}" to a version built against solve-engine ${t.engineVersion}, or pin solve-engine to a version satisfying "${t.declaredRange}".`,context:{packageName:r.name,declaredRange:t.declaredRange,engineVersion:t.engineVersion}})}var ee="solve-engine/snapshot",Q=1;function $(r){return Number.isFinite(r)?r:Number.isNaN(r)?"NaN":r>0?"Infinity":"-Infinity"}function z(r){if(typeof r=="number")return r;if(r==="NaN")return NaN;if(r==="Infinity")return 1/0;if(r==="-Infinity")return -1/0;throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_MALFORMED,message:`Snapshot holds an unrecognised number sentinel: ${JSON.stringify(r)}`,expected:'a JSON number, or one of "NaN", "Infinity", "-Infinity"',found:JSON.stringify(r)})}var V={SNAPSHOT_VERSION_MISMATCH:"SNAPSHOT_VERSION_MISMATCH",SNAPSHOT_MALFORMED:"SNAPSHOT_MALFORMED",SNAPSHOT_UNSUPPORTED_VALUE:"SNAPSHOT_UNSUPPORTED_VALUE"};function er(r){return {coef:r.coef.toString(),scale:r.scale}}function tr(r){return {coef:BigInt(r.coef),scale:r.scale}}function Br(r){return {n:r.n.toString(),d:r.d.toString()}}function Mr(r){return {n:BigInt(r.n),d:BigInt(r.d)}}function rr(r){return chunkOM7NOHJF_cjs.g[r]??String(r)}function _e(r,e){throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_UNSUPPORTED_VALUE,message:`A ${rr(r)} value (${e}) cannot be included in a snapshot yet.`,expected:"a concrete number, string, boolean, unit, range, matrix, bigint, or money value",found:`${rr(r)} value`,suggestion:"Symbolic (algebra) values are deferred to a follow-up. Evaluate the document without the symbolic line, or re-derive it after restoring.",context:{valueType:r,location:e}})}function ze(r,e){switch(r.type){case 0:{let t={t:0,v:$(r.value)};return r.exact!==void 0&&(t.exact=er(r.exact)),r.rational!==void 0&&(t.rational=Br(r.rational)),t}case 1:{let t=r.value;return typeof t=="bigint"?{t:1,v:t.toString(),big:true,base:r.unit}:{t:1,v:$(t),base:r.unit}}case 2:return {t:2,v:r.value.toString()};case 3:return {t:3,v:r.value};case 4:{let t={t:4,v:$(r.value)};return r.grain!==void 0&&(t.g=r.grain),r.zone!==void 0&&(t.z=r.zone),t}case 5:return {t:5,v:$(r.value)};case 6:{let t={t:6,v:$(r.value),unit:r.unit??""};return r.exact!==void 0&&(t.exact=er(r.exact)),t}case 7:{let t=r.value;t.hasSymbolic&&_e(9,`${e} (symbolic matrix cell)`);let n=t.data.map(i=>Vr(i,e));return {t:7,rows:t.rows,cols:t.cols,data:n}}case 8:{let t=r.value;return {t:8,min:$(t.min),max:$(t.max)}}case 10:return {t:10,v:r.value};case 13:return {t:13,code:r.value,message:r.unit??""};default:return _e(r.type,e)}}function Vr(r,e){return typeof r=="boolean"?r:typeof r=="number"?$(r):_e(9,`${e} (symbolic matrix cell)`)}function Fe(r){switch(r.t){case 0:{let e=new chunkOM7NOHJF_cjs.m(0,z(r.v));return r.exact!==void 0&&(e.exact=tr(r.exact)),r.rational!==void 0&&(e.rational=Mr(r.rational)),e}case 1:{let e=r.big?BigInt(r.v):z(r.v);return new chunkOM7NOHJF_cjs.m(1,e,r.base)}case 2:return new chunkOM7NOHJF_cjs.m(2,BigInt(r.v));case 3:return new chunkOM7NOHJF_cjs.m(3,r.v);case 4:{let e=new chunkOM7NOHJF_cjs.m(4,z(r.v));return r.g!==void 0&&(e.grain=r.g),r.z!==void 0&&(e.zone=r.z),e}case 5:return new chunkOM7NOHJF_cjs.m(5,z(r.v));case 6:{let e=new chunkOM7NOHJF_cjs.m(6,z(r.v),r.unit);return r.exact!==void 0&&(e.exact=tr(r.exact)),e}case 7:{let e=r.data.map(n=>typeof n=="boolean"?n:z(n)),t={rows:r.rows,cols:r.cols,data:e,hasSymbolic:false};return new chunkOM7NOHJF_cjs.m(7,t)}case 8:return new chunkOM7NOHJF_cjs.m(8,{min:z(r.min),max:z(r.max)});case 10:return new chunkOM7NOHJF_cjs.m(10,r.v);case 13:return new chunkOM7NOHJF_cjs.m(13,r.code,r.message);default:throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_MALFORMED,message:`Snapshot holds a value with an unknown type tag: ${JSON.stringify(r.t)}`,expected:"a known SerializedValue type tag",found:JSON.stringify(r.t)})}}function fe(r){let e={opcodes:Array.from(r.opcodes),numbers:Array.from(r.numbers,$),strings:r.strings.slice(),hasAsync:r.hasAsync};return r.constants&&(e.constants=Array.from(r.constants.entries())),r.userFunctionBodies&&(e.userFunctionBodies=r.userFunctionBodies.map($e)),r.anonymousBodies&&(e.anonymousBodies=r.anonymousBodies.map(t=>({params:t.params.slice(),program:fe(t.program)}))),e}function de(r){let e={opcodes:Uint8Array.from(r.opcodes),numbers:Float64Array.from(r.numbers,z),strings:r.strings.slice(),hasAsync:r.hasAsync};return r.constants&&(e.constants=new Map(r.constants)),r.userFunctionBodies&&(e.userFunctionBodies=r.userFunctionBodies.map(je)),r.anonymousBodies&&(e.anonymousBodies=r.anonymousBodies.map(t=>({params:t.params.slice(),program:de(t.program)}))),e}function $e(r){return {name:r.name,params:r.params.slice(),program:fe(r.program)}}function je(r){return {name:r.name,params:r.params.slice(),program:de(r.program)}}function or(r){if(typeof r!="object"||r===null)throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_VERSION_MISMATCH,message:"fromJSON was given something that is not a snapshot object.",expected:`an object produced by ExpressionEngine.toJSON() with format "${ee}"`,found:r===null?"null":typeof r});let e=r;if(e.format!==ee)throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_VERSION_MISMATCH,message:`This object is not a solve-engine snapshot (its "format" is ${JSON.stringify(e.format)}).`,expected:`format "${ee}"`,found:JSON.stringify(e.format)});if(e.version!==Q)throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_VERSION_MISMATCH,message:`This snapshot was written for format version ${e.version}, but this engine restores version ${Q}.`,expected:`snapshot version ${Q}`,found:`version ${e.version}`,suggestion:"Regenerate the snapshot with a matching engine version, or re-evaluate the document from source.",context:{snapshotVersion:e.version,readerVersion:Q,engineVersion:e.engineVersion}});_r(r);}var nr=32;function Dr(r){return r===null?"null":Array.isArray(r)?`an array of ${r.length}`:typeof r=="object"?"an object":`${typeof r} ${JSON.stringify(r)}`.slice(0,80)}function h(r,e,t){throw chunkSUAGBRQ7_cjs.c.validation({code:V.SNAPSHOT_MALFORMED,message:`Snapshot is malformed at ${r}: expected ${e}.`,expected:e,found:Dr(t),suggestion:"Regenerate the snapshot with ExpressionEngine.toJSON(), or re-evaluate the document from source.",context:{location:r}})}function j(r){return typeof r=="object"&&r!==null&&!Array.isArray(r)}function F(r){return typeof r=="number"||r==="NaN"||r==="Infinity"||r==="-Infinity"}function pe(r){return typeof r=="string"&&/^-?\d+$/.test(r)}function ke(r,e){(!Array.isArray(r)||!r.every(t=>typeof t=="string"))&&h(e,"an array of strings",r);}function ir(r,e){(!j(r)||!pe(r.coef)||typeof r.scale!="number")&&h(e,"a decimal as { coef: digits, scale: number }",r);}function Ur(r,e){(!j(r)||!pe(r.n)||!pe(r.d))&&h(e,"a rational as { n: digits, d: digits }",r);}function sr(r,e){switch(j(r)||h(e,"a serialised value object",r),r.t){case 0:F(r.v)||h(`${e}.v`,"a number",r.v),r.exact!==void 0&&ir(r.exact,`${e}.exact`),r.rational!==void 0&&Ur(r.rational,`${e}.rational`);return;case 1:(r.big?!pe(r.v):!F(r.v))&&h(`${e}.v`,r.big?"an integer string":"a number",r.v),r.base!==void 0&&typeof r.base!="string"&&h(`${e}.base`,"a base name",r.base);return;case 2:pe(r.v)||h(`${e}.v`,"an integer string",r.v);return;case 3:typeof r.v!="string"&&h(`${e}.v`,"a string",r.v);return;case 4:F(r.v)||h(`${e}.v`,"a number",r.v),r.g!==void 0&&r.g!=="date"&&r.g!=="datetime"&&r.g!=="instant"&&h(`${e}.g`,'one of "date", "datetime" or "instant"',r.g),r.z!==void 0&&typeof r.z!="string"&&h(`${e}.z`,"a zone reference",r.z);return;case 5:F(r.v)||h(`${e}.v`,"a number",r.v);return;case 6:F(r.v)||h(`${e}.v`,"a number",r.v),typeof r.unit!="string"&&h(`${e}.unit`,"a unit name",r.unit),r.exact!==void 0&&ir(r.exact,`${e}.exact`);return;case 7:{let{rows:t,cols:n,data:i}=r;(!Number.isInteger(t)||t<0)&&h(`${e}.rows`,"a non-negative integer",t),(!Number.isInteger(n)||n<0)&&h(`${e}.cols`,"a non-negative integer",n),(!Array.isArray(i)||i.length!==t*n)&&h(`${e}.data`,`an array of ${t} \xD7 ${n} cells`,i),i.every(s=>typeof s=="boolean"||F(s))||h(`${e}.data`,"numeric or boolean cells",i);return}case 8:(!F(r.min)||!F(r.max))&&h(e,"a range with numeric min and max",r);return;case 10:typeof r.v!="boolean"&&h(`${e}.v`,"a boolean",r.v);return;case 13:(typeof r.code!="string"||typeof r.message!="string")&&h(e,"an error with a string code and message",r);return;default:return}}function Se(r,e,t){if(t>nr&&h(e,`function bodies nested at most ${nr} deep`,"deeper nesting"),j(r)||h(e,"a serialised program object",r),(!Array.isArray(r.opcodes)||!r.opcodes.every(n=>Number.isInteger(n)&&n>=0&&n<=255))&&h(`${e}.opcodes`,"an array of bytes (integers 0 to 255)",r.opcodes),(!Array.isArray(r.numbers)||!r.numbers.every(F))&&h(`${e}.numbers`,"an array of numbers",r.numbers),ke(r.strings,`${e}.strings`),typeof r.hasAsync!="boolean"&&h(`${e}.hasAsync`,"a boolean",r.hasAsync),r.constants!==void 0){let n=i=>Array.isArray(i)&&i.length===2&&typeof i[0]=="number"&&typeof i[1]=="number";(!Array.isArray(r.constants)||!r.constants.every(n))&&h(`${e}.constants`,"an array of [number, number] pairs",r.constants);}r.userFunctionBodies!==void 0&&(Array.isArray(r.userFunctionBodies)||h(`${e}.userFunctionBodies`,"an array of functions",r.userFunctionBodies),r.userFunctionBodies.forEach((n,i)=>ar(n,`${e}.userFunctionBodies[${i}]`,t+1))),r.anonymousBodies!==void 0&&(Array.isArray(r.anonymousBodies)||h(`${e}.anonymousBodies`,"an array of bodies",r.anonymousBodies),r.anonymousBodies.forEach((n,i)=>{let s=`${e}.anonymousBodies[${i}]`;j(n)||h(s,"a body object",n),ke(n.params,`${s}.params`),Se(n.program,`${s}.program`,t+1);}));}function ar(r,e,t){j(r)||h(e,"a function object",r),typeof r.name!="string"&&h(`${e}.name`,"a function name",r.name),ke(r.params,`${e}.params`),Se(r.program,`${e}.program`,t);}function _r(r){r.locale!==void 0&&typeof r.locale!="string"&&h("locale","a locale code",r.locale),j(r.variables)||h("variables","an object of values by name",r.variables);for(let[e,t]of Object.entries(r.variables))sr(t,`variables.${e}`);Array.isArray(r.userFunctions)||h("userFunctions","an array of functions",r.userFunctions),r.userFunctions.forEach((e,t)=>ar(e,`userFunctions[${t}]`,1)),Array.isArray(r.lineCache)||h("lineCache","an array of cached lines",r.lineCache),r.lineCache.forEach((e,t)=>{let n=`lineCache[${t}]`;j(e)||h(n,"a cached line",e),Number.isInteger(e.line)||h(`${n}.line`,"a line number",e.line),typeof e.expression!="string"&&h(`${n}.expression`,"the line's expression text",e.expression),sr(e.result,`${n}.result`),Se(e.bytecode,`${n}.bytecode`,1),ke(e.reads,`${n}.reads`),e.writeVar!==null&&typeof e.writeVar!="string"&&h(`${n}.writeVar`,"a variable name or null",e.writeVar);}),Array.isArray(r.bytecodeCache)||h("bytecodeCache","an array of compiled expressions",r.bytecodeCache),r.bytecodeCache.forEach((e,t)=>{let n=`bytecodeCache[${t}]`;(!j(e)||typeof e.expression!="string")&&h(n,"an { expression, program } pair",e),Se(e.program,`${n}.program`,1);});}var K=class{constructor(e,t,n,i){this.result=e;this.bytecode=t;this.readVariables=n;this.writeVariable=i;}},Ce=class r{constructor(){this.byLine=new Map;this.count=0;}static exprKey(e){return e??""}static displayKey(e,t){return t===""?`${e}`:`${e}:${t}`}get(e,t){return this.byLine.get(e)?.get(r.exprKey(t))}getEntryForLine(e){let t=this.byLine.get(e);if(t)for(let n of t.values())return n}set(e,t,n){let i=this.byLine.get(e);i||(i=new Map,this.byLine.set(e,i));let s=r.exprKey(n);i.size>0&&!i.has(s)&&(this.count-=i.size,i.clear()),i.has(s)||this.count++,i.set(s,t);}has(e,t){return this.byLine.get(e)?.has(r.exprKey(t))??false}remove(e,t){let n=this.byLine.get(e);n&&n.delete(r.exprKey(t))&&(this.count--,n.size===0&&this.byLine.delete(e));}removeAllForLine(e){let t=this.byLine.get(e);t&&(this.count-=t.size,this.byLine.delete(e));}clearLine(e){this.removeAllForLine(e);}get size(){return this.count}clear(){this.byLine.clear(),this.count=0;}forEach(e){for(let[t,n]of this.byLine)for(let[i,s]of n)e(r.displayKey(t,i),s);}snapshotEntries(){let e=[];for(let[t,n]of this.byLine)for(let[i,s]of n)e.push({line:t,expression:i,entry:s});return e}keys(){let e=[];for(let[t,n]of this.byLine)for(let i of n.keys())e.push(r.displayKey(t,i));return e}};function He(r,e){let t=e.fields(r),n=String(t.month0+1).padStart(2,"0"),i=String(t.day).padStart(2,"0");return `${t.year}-${n}-${i}`}function zr(r,e){if(r instanceof Date)return He(r.getTime(),e);if(typeof r=="number")return Number.isFinite(r)?He(r,e):null;let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(r.trim());return t?`${t[1]}-${t[2]}-${t[3]}`:null}function lr(r,e){if(r===void 0)return;if(typeof r=="function")return n=>r(new Date(n));let t=new Set;for(let n of r){let i=zr(n,e);i!==null&&t.add(i);}return n=>t.has(He(n,e))}function Fr(r,e){if(!r||r.type!==e.type||r.value!==e.value)return true;let t=r.unit,n=e.unit;return t!==n}var Te=class r{constructor(e,t){this.dag=e;this.enqueue=t;this.entries=new Map;}get size(){return this.entries.size}static idOf(e,t){return JSON.stringify([e,t])}register(e){if(!(e.intervalMs>0))return;let t=r.idOf(e.packageId,e.queryKey);if(this.entries.has(t))return;let n=setInterval(()=>{this.tick(t);},e.intervalMs);n.unref?.(),this.entries.set(t,{...e,timer:n,lastValue:null,inFlight:false});}async tick(e){let t=this.entries.get(e);if(t&&!t.inFlight){if(this.isDead(t)){this.stop(e);return}t.inFlight=true;try{let n=await t.refetch(),i=this.entries.get(e);if(!i)return;n&&Fr(i.lastValue,n)&&(i.lastValue=n,this.enqueue(i.packageId,i.queryKey));}catch{}finally{let n=this.entries.get(e);n&&(n.inFlight=false);}}}isDead(e){return this.dag.getAffectedLinesByDataSource(e.packageId,[e.queryKey]).size===0}reconcile(){for(let[e,t]of this.entries)this.isDead(t)&&this.stop(e);}stop(e){let t=this.entries.get(e);t&&(clearInterval(t.timer),this.entries.delete(e));}clearAll(){for(let e of this.entries.values())clearInterval(e.timer);this.entries.clear();}};var _=class{static enable(){this.enabled=true;}static disable(){this.enabled=false;}static isEnabled(){return this.enabled}static track(e,t,n){if(!this.enabled)return {result:t(),alloc:null};let i=typeof process<"u"&&process.memoryUsage?process.memoryUsage():null,s=typeof process<"u"&&process.hrtime?process.hrtime():performance.now(),o=t(),c=typeof process<"u"&&process.hrtime?process.hrtime(s):void 0,l=typeof process<"u"&&process.memoryUsage?process.memoryUsage():null,a=c?c[0]*1e9+c[1]:(performance.now()-s)*1e6,u=i&&l?l.heapUsed-i.heapUsed:0,p={stage:e,allocCount:0,allocBytes:u,objectCounts:{},wallTimeNs:a,...n};return {result:o,alloc:p}}static generateReport(e,t){let n=[];n.push(t?`## ${t}`:"## Pipeline Allocation Report"),n.push(""),n.push(`**Runs:** ${e.length} | **Generated:** ${new Date().toISOString()}`),n.push("");let i=this.aggregate(e);if(i.length===0)return n.push("_No telemetry data._"),n.join(`
|
|
2
2
|
`);n.push("### Per-Stage Breakdown"),n.push(""),n.push("| Stage | Count | Mean Wall (\xB5s) | Mean Alloc (bytes) | Min (\xB5s) | Max (\xB5s) | p50 (\xB5s) | p95 (\xB5s) | p99 (\xB5s) |"),n.push("|-------|:-----:|:--------------:|:------------------:|:--------:|:--------:|:--------:|:--------:|:--------:|");for(let l of i)n.push(`| ${l.stage} | ${l.count} | ${(l.meanWallTimeNs/1e3).toFixed(2)} | ${l.meanAllocBytes.toFixed(0)} | ${(l.minWallTimeNs/1e3).toFixed(2)} | ${(l.maxWallTimeNs/1e3).toFixed(2)} | ${(l.p50WallTimeNs/1e3).toFixed(2)} | ${(l.p95WallTimeNs/1e3).toFixed(2)} | ${(l.p99WallTimeNs/1e3).toFixed(2)} |`);let s=e.reduce((l,a)=>l+a.totalAllocBytes,0),o=e.reduce((l,a)=>l+a.totalWallTimeNs,0),c=e.filter(l=>l.fastPath).length;return n.push(""),n.push("### Totals"),n.push(""),n.push(`- **Total wall time:** ${(o/1e6).toFixed(2)} ms (${e.length} runs)`),n.push(`- **Total heap allocated:** ${s.toLocaleString()} bytes`),n.push(`- **Fast-path runs:** ${c}/${e.length} (${(c/e.length*100).toFixed(0)}%)`),n.push(`- **Mean per-run:** ${(o/e.length/1e3).toFixed(2)} \xB5s, ${(s/e.length).toFixed(0)} bytes`),n.join(`
|
|
3
|
-
`)}static aggregate(e){let t=new Map;for(let i of e)for(let s of i.stages)t.has(s.stage)||t.set(s.stage,[]),t.get(s.stage).push(s);let n=[];for(let[i,s]of t){let o=s.map(a=>a.wallTimeNs).sort((a,u)=>a-u),c=s.map(a=>a.allocBytes),l=s.length;n.push({stage:i,count:l,meanAllocBytes:c.reduce((a,u)=>a+u,0)/l,meanWallTimeNs:o.reduce((a,u)=>a+u,0)/l,minWallTimeNs:o[0],maxWallTimeNs:o[o.length-1],p50WallTimeNs:We(o,50),p95WallTimeNs:We(o,95),p99WallTimeNs:We(o,99)});}return n.sort((i,s)=>i.stage.localeCompare(s.stage)),n}static createTelemetry(e,t,n=false){let i=t.reduce((o,c)=>o+c.allocBytes,0),s=t.reduce((o,c)=>o+c.wallTimeNs,0);return {expression:e,stages:t,totalAllocBytes:i,totalWallTimeNs:s,fastPath:n}}};_.enabled=false;function We(r,e){if(r.length===0)return 0;if(r.length===1)return r[0];let t=e/100*(r.length-1),n=Math.floor(t),i=Math.ceil(t);if(n===i)return r[n];let s=t-n;return r[n]*(1-s)+r[i]*s}function Ke(r,e){if(r.length>e.maxExpressionLength){let t=chunkSUAGBRQ7_cjs.c.validation("EXPRESSION_TOO_LONG",`Expression exceeds max length of ${e.maxExpressionLength} characters (got ${r.length})`,{expressionLength:r.length,maxLength:e.maxExpressionLength});return {passed:false,error:{value:chunkOM7NOHJF_cjs.n(0),tokens:[],program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:t.message,engineError:t}}}return {passed:true}}function Ge(r,e){let t=0,n=0,i=0;for(let o of r)o.type==="FUNC"&&t++,(o.value==="("||o.type==="LPAREN")&&(n++,i=Math.max(i,n)),(o.value===")"||o.type==="RPAREN")&&n--;let s=r.length+t*5+i*10;if(s>e.maxComplexity){let o=chunkSUAGBRQ7_cjs.c.validation("EXPRESSION_TOO_COMPLEX",`Expression complexity score ${s} exceeds maximum of ${e.maxComplexity}`,{complexity:s,maxComplexity:e.maxComplexity});return {passed:false,complexityScore:s,errorMessage:o.message,engineError:o}}return {passed:true,complexityScore:s}}function ge(r){return r.type==="IDENT"||r.type==="UNIT"}function $r(r){return r.type==="NUMBER"||r.type==="TO"||r.type==="IN"||r.type==="RPAREN"}function cr(r,e){let t=0;for(let n=e;n<r.length;n++)if(r[n].type==="LPAREN")t++;else if(r[n].type==="RPAREN"&&(t--,t===0))return n;return null}function jr(r){let e=new Set;for(let t=0;t<r.length;t++){if(!ge(r[t])||t>0&&r[t-1].type==="COLON"||r[t+1]?.type!=="LPAREN")continue;let n=cr(r,t+1);if(n!==null&&r[n+1]?.type==="EQUALS")for(let i=t+2;i<n;i++)ge(r[i])&&e.add(r[i].value);}return e}function we(r){let e=[],t=[],n=jr(r);for(let i=0;i<r.length;i++){let s=r[i];if(s.type==="GLOBAL"){if(i+2<r.length&&r[i+1].type==="COLON"&&ge(r[i+2])){let o=chunkRAFOQ4T5_cjs.K(r[i+2].value);e.push(o),i+3<r.length&&r[i+3].type==="EQUALS"&&t.push(o);}continue}if(s.type==="COLON"){if(i>0&&r[i-1].type==="GLOBAL")continue;if(i+1<r.length&&ge(r[i+1])){let o=r[i+1].value;e.push(o),i+2<r.length&&r[i+2].type==="EQUALS"&&t.push(o);}}if(ge(s)){if(i>0&&r[i-1].type==="COLON"||s.type==="UNIT"&&i>0&&$r(r[i-1])||n.has(s.value))continue;if(r[i+1]?.type==="LPAREN"){let c=cr(r,i+1);if(c!==null&&r[c+1]?.type==="EQUALS"){e.push(s.value),t.push(s.value);continue}}e.push(s.value);let o=r[i+1]?.type;(o==="EQUALS"||o==="PLUS_EQUALS"||o==="MINUS_EQUALS")&&t.push(s.value);}}return {reads:e,writes:t}}function Pn(r){return chunkAGCNMEP2_cjs.c.classifyLine(r).skip}function Ln(r,e){return chunkAGCNMEP2_cjs.c.findInlineSolves(r).map(n=>({start:n.start,end:n.end,expression:n.expression,lineNumber:e,columnNumber:n.columnNumber}))}function ur(r){let e=r[r.length-1],t=e.length>1&&e.endsWith("s")?e.slice(0,-1):e;return [...r.slice(0,-1),t].join(" ")}var Ne=class{constructor(){this.byKey=new Map;this.longestName=0;}get isEmpty(){return this.byKey.size===0}get maxWordCount(){return this.longestName}define(e,t,n){let i=ur(e);this.byKey.set(i,{displayName:e.join(" "),ratioText:t,baseUnit:n}),e.length>this.longestName&&(this.longestName=e.length);}match(e){let t=Math.min(e.length,this.longestName);for(let n=t;n>=1;n--){let i=this.byKey.get(ur(e.slice(0,n)));if(i!==void 0)return {definition:i,wordCount:n}}return null}clear(){this.byKey.clear(),this.longestName=0;}};function pr(r,e=82){return {name:"uom:user-unit",priority:e,shape:[{types:["NUMBER","RPAREN"]},{types:["IDENT"]}],match(t,n){if(r.isEmpty)return null;let i=t[n];if(i.type!=="NUMBER"&&i.type!=="RPAREN")return null;let s=[],o=r.maxWordCount;for(let f=n+1;f<t.length&&s.length<o&&t[f].type==="IDENT";f++)s.push(t[f].value);if(s.length===0)return null;let c=r.match(s);if(c===null||t[n+1+c.wordCount]?.type==="EQUALS")return null;let{ratioText:a,baseUnit:u}=c.definition,p=new chunkWU7SBKVU_cjs.a("STAR",chunkYBQOQTVL_cjs.c("STAR"),"*","*",i.offset,0,i.line,i.col),d=new chunkWU7SBKVU_cjs.a("NUMBER",chunkYBQOQTVL_cjs.c("NUMBER"),a,a,i.offset,0,i.line,i.col),m=new chunkWU7SBKVU_cjs.a("UNIT",chunkYBQOQTVL_cjs.c("UNIT"),u,u,i.offset,0,i.line,i.col);return {consumed:1+c.wordCount,replacement:[i,p,d,m],ruleName:"uom:user-unit"}}}}var fr="engine:call-fusion";function dr(r,e=80){return {name:fr,priority:e,shape:[{types:["IDENT"]},{types:["LPAREN"]}],match(t,n){let i=t[n];if(!i||i.type!=="IDENT"||t[n+1]?.type!=="LPAREN"||t[n-1]?.type==="COLON")return null;let s=(i.value??"").toLowerCase(),o=r.get(s);return o===void 0?null:{consumed:1,replacement:[new chunkWU7SBKVU_cjs.a(o,chunkYBQOQTVL_cjs.c(o),s,i.value,i.offset,0,i.line,i.col)],ruleName:fr}}}}var Hr={january:1,jan:1,february:2,feb:2,march:3,mar:3,april:4,apr:4,may:5,june:6,jun:6,july:7,jul:7,august:8,aug:8,september:9,sep:9,sept:9,october:10,oct:10,november:11,nov:11,december:12,dec:12};function gr(r){return r===void 0||r.type!=="IDENT"&&r.type!=="UNIT"?0:Hr[(r.text??r.value??"").toLowerCase()]??0}var he=/^\d+$/;function Re(r){return r.length===4}function te(r,e,t,n,i,s){let o="datetime:month-name-date",c=chunkWQGHJAW2_cjs.q(r,e,t,n,o,i);return c!==null?c:s==="arithmetic"||e<1||e>12||r<1||r>31?null:chunkWQGHJAW2_cjs.s(chunkWQGHJAW2_cjs.g.DATE_NOT_A_CALENDAR_DAY,`"${chunkWQGHJAW2_cjs.r(n)}" is not a real date: ${chunkWQGHJAW2_cjs.j(r,e,t)}.`,n,`${o}:unreadable`)}function hr(r){return r.fields(r.now()).year}function mr(r=64,e=()=>chunkA764BY7L_cjs.b,t=()=>"refuse"){return {name:"datetime:month-name-date",priority:r,startTokenTypes:["NUMBER","IDENT","UNIT"],match(n,i){let s=e(),o=t(),c=n[i];if(c?.type==="NUMBER"&&he.test(c.text??"")){let m=gr(n[i+1]);if(m===0)return null;let f=Number(c.text);if(f<1||f>31)return null;let T=n[i+2];return T?.type==="NUMBER"&&he.test(T.text??"")&&Re(T.text??"")?te(f,m,Number(T.text),n.slice(i,i+3),s,o):te(f,m,hr(s),n.slice(i,i+2),s,o)}let l=gr(c);if(l===0)return null;let a=n[i+1];if(a?.type!=="NUMBER"||!he.test(a.text??""))return null;if(Re(a.text??""))return te(1,l,Number(a.text),n.slice(i,i+2),s,o);let u=Number(a.text),p=n[i+2],d=n[i+3];return p?.type==="COMMA"&&d?.type==="NUMBER"&&he.test(d.text??"")&&Re(d.text??"")?te(u,l,Number(d.text),n.slice(i,i+4),s,o):p?.type==="NUMBER"&&he.test(p.text??"")&&Re(p.text??"")?te(u,l,Number(p.text),n.slice(i,i+3),s,o):te(u,l,hr(s),n.slice(i,i+2),s,o)}}}var Wr=30,Kr=40,Gr=50,qr=24;function Qr(r){switch(r){case chunkYBQOQTVL_cjs.a.PLUS:case chunkYBQOQTVL_cjs.a.MINUS:return Wr;case chunkYBQOQTVL_cjs.a.STAR:case chunkYBQOQTVL_cjs.a.SLASH:case chunkYBQOQTVL_cjs.a.MOD:case chunkYBQOQTVL_cjs.a.OF:return Kr;case chunkYBQOQTVL_cjs.a.CARET:return Gr;case chunkYBQOQTVL_cjs.a.PCT_ON:case chunkYBQOQTVL_cjs.a.PCT_OFF:return qr;default:return 0}}function Xr(r){switch(r){case chunkYBQOQTVL_cjs.a.PLUS:return "plus";case chunkYBQOQTVL_cjs.a.MINUS:return "minus";case chunkYBQOQTVL_cjs.a.STAR:return "times";case chunkYBQOQTVL_cjs.a.SLASH:return "divided by";case chunkYBQOQTVL_cjs.a.MOD:return "mod";case chunkYBQOQTVL_cjs.a.CARET:return "to the power of";case chunkYBQOQTVL_cjs.a.OF:return "of";case chunkYBQOQTVL_cjs.a.PCT_ON:return "plus";case chunkYBQOQTVL_cjs.a.PCT_OFF:return "less";default:return r.toLowerCase()}}function yr(r){return r.sourceEnd??r.offset+r.value.length}var Yr=new Set([chunkYBQOQTVL_cjs.a.NUMBER,chunkYBQOQTVL_cjs.a.BIGINT,chunkYBQOQTVL_cjs.a.IDENT,chunkYBQOQTVL_cjs.a.UNIT,chunkYBQOQTVL_cjs.a.PERCENT,chunkYBQOQTVL_cjs.a.PI,chunkYBQOQTVL_cjs.a.E,chunkYBQOQTVL_cjs.a.TRUE,chunkYBQOQTVL_cjs.a.FALSE,chunkYBQOQTVL_cjs.a.DOLLAR,chunkYBQOQTVL_cjs.a.POUND,chunkYBQOQTVL_cjs.a.EURO,chunkYBQOQTVL_cjs.a.YEN,chunkYBQOQTVL_cjs.a.RUBLE,chunkYBQOQTVL_cjs.a.WON,chunkYBQOQTVL_cjs.a.CURRENCY_SYMBOL]);function Jr(r){return !Yr.has(r)}var qe=class{constructor(e){this.tokens=e;this.pos=0;}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}parseAll(){let e=this.parseExpression(0);if(this.pos!==this.tokens.length)throw new Error("explain: unconsumed tokens");return e}parseExpression(e){let t=this.parseOperand();for(;;){let n=this.peek();if(!n)break;let i=Qr(n.type);if(i===0||i<=e)break;this.next();let s=n.type===chunkYBQOQTVL_cjs.a.CARET?i-1:i,o=this.parseExpression(s);t={kind:"binary",op:n.type,left:t,right:o,start:t.start,end:o.end};}return t}parseOperand(){let e=this.peek();if(!e)throw new Error("explain: expected an operand");if(e.type===chunkYBQOQTVL_cjs.a.LPAREN)return this.parseGroup();let t=e.offset,n=false;for(;this.peek()&&(this.peek().type===chunkYBQOQTVL_cjs.a.PLUS||this.peek().type===chunkYBQOQTVL_cjs.a.MINUS);)this.next(),n=true;if(n&&this.peek()&&this.peek().type===chunkYBQOQTVL_cjs.a.LPAREN){let s=this.parseGroup();return {kind:"wrap",child:s,start:t,end:s.end}}let i=-1;for(;this.peek()&&!Jr(this.peek().type);)i=yr(this.next());if(i===-1)throw new Error("explain: expected an operand");return {kind:"leaf",start:t,end:i}}parseGroup(){let e=this.next(),t=this.parseExpression(0),n=this.peek();if(!n||n.type!==chunkYBQOQTVL_cjs.a.RPAREN)throw new Error("explain: unbalanced parentheses");return this.next(),{kind:"wrap",child:t,start:e.offset,end:yr(n)}}},Qe=class{constructor(e,t,n){this.source=e;this.evaluate=t;this.steps=[];this.cache=new Map;this.resultPrefix=chunkS3DFU33X_cjs.a(n).display.resultPrefix;}build(e){return this.emit(e),{steps:this.steps,result:this.valueOf(e)}}emit(e){if(e.kind!=="leaf"){if(e.kind==="wrap"){this.emit(e.child);return}this.emit(e.left),this.emit(e.right),this.steps.push({description:this.describe(e),value:this.valueOf(e)});}}describe(e){let t=Xr(e.op);return e.op===chunkYBQOQTVL_cjs.a.PCT_ON||e.op===chunkYBQOQTVL_cjs.a.PCT_OFF?`${this.operand(e.right)} ${t} ${this.operand(e.left)}`:`${this.operand(e.left)} ${t} ${this.operand(e.right)}`}operand(e){return e.kind==="leaf"?this.source.slice(e.start,e.end).trim():this.render(this.valueOf(e))}valueOf(e){let t=this.cache.get(e);if(t)return t;let n=this.evaluate(this.source.slice(e.start,e.end));return this.cache.set(e,n),n}render(e){let t=chunkP43SV4NJ_cjs.c(e,chunkP43SV4NJ_cjs.a);return t.startsWith(this.resultPrefix)?t.slice(this.resultPrefix.length):t}};function Xe(r){let{expression:e,tokens:t,evaluate:n,locale:i,readings:s=[]}=r,o=a=>s.filter(u=>u.needsNote).map(u=>({description:u.note,value:a})),c=()=>{let a=n(e);return {expression:e,steps:o(a),result:a}},l;try{l=new qe(t).parseAll();}catch{return c()}try{let{steps:a,result:u}=new Qe(e,n,i).build(l);return {expression:e,steps:[...o(u),...a],result:u}}catch{return c()}}var X=class X{constructor(e={}){this.dag=new chunkGWV273KZ_cjs.a;this.lineCache=new Ce;this.accumulatorNames=new Set;this.scopeManager=new chunkGWV273KZ_cjs.b;this.resolverRegistry=new chunkZVPZQ66D_cjs.a;this.packageContributions=new Map;this.registeredPackages=new Map;this.callFusions=new Map;this.callFusionOwners=new Map;this.compatIndex=new xe;this.documentModel=null;this.goalSeekDepth=0;this.batchScanResults=null;this.batchParsedLines=null;this.packageCompletionItems=new Map;this.keystrokeSignal=null;this.backgroundRefreshSignal=new AbortController().signal;this.userUnits=new Ne;this.bytecodeCache=new Map;this.compiledFrontHalf=new Map;this.failedParses=new Map;this.pluginFunctionIndexByName=new Map;this.builderPool=[new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName),new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName),new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName),new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName)];this.builderPoolIndex=0;this.lastTelemetry=null;let{locale:t="en",diagnostics:n=false,config:i,packages:s,calendar:o}=e;this.localeCode=t,this.config=chunkZBMWLTE6_cjs.c(chunkZBMWLTE6_cjs.b,i??{}),this.dateReading=chunkWQGHJAW2_cjs.h(this.config.date),this.lexer=new chunkAGCNMEP2_cjs.b(t),this.registry=new chunkQ7TBBV62_cjs.b,this.context=chunkRAFOQ4T5_cjs.x({networkEnabled:this.config.network.enabled,calendar:o}),n?(this.diagnosticPipeline=new chunkHG4NPDN5_cjs.a,this.timelineCollector=new chunkHG4NPDN5_cjs.b,this.diagnosticPipeline.register(this.timelineCollector)):this.diagnosticPipeline=new chunkHG4NPDN5_cjs.a,this.normalizer=new chunk4DR5RBHQ_cjs.c;for(let[l,a]of Object.entries(chunkWU7SBKVU_cjs.c))this.normalizer.addPhrase(l,a);this.normalizer.register(chunk4DR5RBHQ_cjs.d(50,l=>this.normalizer.canStartPhrase(l))),this.normalizer.register(pr(this.userUnits)),this.normalizer.register(dr(this.callFusions));let c=s??[];for(let l of c)try{this.registerPackage(l);}catch(a){let u=chunkSUAGBRQ7_cjs.d(a);console.error(`[ExpressionEngine] Failed to register package "${l.name}" \u2014 skipping it and continuing construction with the remaining packages: ${u.format()}`);}if(this.registry.hasPrefix("DATETIME_LITERAL")&&this.registry.hasPrefix("DATETIME_LITERAL_UNREADABLE")){let l=()=>this.context.calendar;this.normalizer.register(chunkWQGHJAW2_cjs.t(()=>this.dateReading.order,l,()=>this.config.date.onAmbiguous)),this.normalizer.register(mr(void 0,l,()=>this.config.date.onAmbiguous));}this.parser=new chunkQ7TBBV62_cjs.a(this.registry,this.config.validation.maxNestingDepth,t,this.pluginFunctionIndexByName,this.context.calendar),this.vm=chunkGWV273KZ_cjs.c(this.context.opRegistry,this.config.vm.maxStackDepth,this.config.vm.maxInstructions,void 0,this.config.vm.maxCollectionSize,this.config.vm.maxAllocatedElements,this.config.vm.maxFunctionCalls,this.config.date.maxOffsetYears,this.config.date.minOffsetYears,this.context,lr(this.config.date.holidays,this.context.calendar)),this.queryClient=chunkZLRJ7TDP_cjs.c(),this.batcher=new Pe(this.dag,this.lineCache,this.vm),this.backgroundRefresh=this.config.backgroundRefresh.enabled?new Te(this.dag,(l,a)=>this.batcher.add({queryKey:a,packageId:l,signal:this.backgroundRefreshSignal,isError:false})):null,e.warmup===true&&this.warmUp();}setDocumentModel(e){this.documentModel=e;}getDocumentModel(){return this.documentModel}warmUp(){let e=new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName);for(let t of X.WARMUP_EXPRESSIONS)try{this.lexer.resetExpression(t);let n=[];for(let o of this.lexer)o.type!=="COMMENT"&&n.push(o);let i=this.normalizer.normalize(n);e.reset(),this.parser.load(i),this.parser.parseExpression(0,e);let s=e.build();this.vm.reset(),chunkGWV273KZ_cjs.d(s,this.vm);}catch{}this.vm.reset();}makeLineContext(e){let t=this.documentModel,n=t?null:this.batchScanResults,i=t?null:this.batchParsedLines;return {lineIndex:e,getLineResult:t?s=>t.getLineAt(s)?.result??void 0:i?s=>i[s-1]?.result??void 0:void 0,isLineBoundary:t?s=>{let o=t.getLineAt(s);return o?o.isEmpty||/^\s*#/.test(o.text):true}:n?s=>{let o=n[s-1];return o?o.classification.skip||/^\s*#/.test(o.text):true}:void 0,getLineReads:t?s=>{let o=t.getLineAt(s);if(!(!o||o.bytecodes.length===0))return o.reads}:void 0,evaluateLineWithBinding:t?(s,o,c,l)=>this.evaluateLineWithBinding(s,o,c,l):void 0,goalSeekMaxIterations:this.config.vm.maxGoalSeekIterations,networkEnabled:this.config.network.enabled,calendar:this.context.calendar,getLineText:t?s=>t.getLineAt(s)?.text:n?s=>n[s-1]?.text:void 0}}evaluateLineWithBinding(e,t,n,i){let s=this.documentModel;if(!s)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_NO_DOCUMENT","Goal seek needs a document to solve against, which the single-expression entry point does not have.");if(this.goalSeekDepth>=X.GOAL_SEEK_MAX_NESTING_DEPTH)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_NESTED","A goal-seek line cannot target another goal-seek line, since each already re-runs its target many times.");let o=s.getLineAt(e);if(!o||o.bytecodes.length===0)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_LINE_NOT_READY",`Line ${e} has no evaluated expression to solve (forward reference, out of range, or not an expression).`);if(o.isVariableDef)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_TARGET_IS_DEFINITION",`Line ${e} defines a variable, so re-running it would overwrite that variable. Target the line that uses ${t}, not the one that sets a value.`);let c=o.bytecodes[0];this.goalSeekDepth++;try{let l=new Map([[t,n]]),a=this.vm.getStack().length;this.vm.pushCallFrame(l);try{let u=chunkGWV273KZ_cjs.d(c,this.vm,void 0,void 0,this.makeLineContext(e),i);return u.type==="pending"?chunkOM7NOHJF_cjs.P("GOAL_SEEK_ASYNC_UNSUPPORTED",`Line ${e} depends on an async value (weather, stocks, currency, ...), which goal seek cannot re-run.`):u.type==="error"?chunkOM7NOHJF_cjs.P(u.error.code??"GOAL_SEEK_TARGET_ERROR",u.error.message):u.value}finally{for(this.vm.popCallFrame();this.vm.getStack().length>a;)this.vm.pop();}}catch(l){return chunkOM7NOHJF_cjs.P("GOAL_SEEK_TARGET_ERROR",chunkSUAGBRQ7_cjs.d(l).message)}finally{this.goalSeekDepth--;}}frontHalfCached(e){return this.compiledFrontHalf.has(e)&&this.bytecodeCache.has(e)||this.failedParses.has(e)}clearCompiledCache(){this.bytecodeCache.clear(),this.compiledFrontHalf.clear(),this.failedParses.clear();}cacheBytecode(e,t,n){let i=this.config.performance.defaultCacheSize;if(this.bytecodeCache.size>=i){let s=this.bytecodeCache.keys().next().value;s!==void 0&&(this.bytecodeCache.delete(s),this.compiledFrontHalf.delete(s));}this.bytecodeCache.set(e,t),this.compiledFrontHalf.set(e,n);}rememberFailedParse(e,t){if(this.failedParses.size>=this.config.performance.defaultCacheSize){let n=this.failedParses.keys().next().value;n!==void 0&&this.failedParses.delete(n);}this.failedParses.set(e,t);}getEventStream(){return this.batcher.getEventStream()}getBatcher(){return this.batcher}registerPackage(e){Zt(e),this.packageContributions.has(e.name)&&(console.warn(`[ExpressionEngine] Package "${e.name}" is already registered. Unregistering the previous registration before re-registering.`),this.unregisterPackage(e.name));let t=this.compatIndex.check(e);for(let i of t)(i.severity==="error"?console.error:console.warn)(`[ExpressionEngine] Package compatibility ${i.severity} (${i.kind}): ${i.detail}`);let n={pluginFunctionIndices:[],pluginFunctionNames:[],resolverNamespaces:[],tokenCategories:[],lexerVocabulary:e.lexerVocabulary,asConverterNames:[],normalizerRuleNames:[],callFusionNames:[]};if(e.lexerVocabulary&&this.lexer.registerVocabulary(e.lexerVocabulary),e.prefixParselets)for(let[i,s]of Object.entries(e.prefixParselets))this.registry.registerPrefix(i,s);if(e.infixParselets)for(let[i,s]of Object.entries(e.infixParselets))this.registry.registerInfix(i,s);if(e.pluginFunctions)for(let[i,s]of Object.entries(e.pluginFunctions)){let o=chunkRAFOQ4T5_cjs.F(`${e.name}:${i}`);this.context.pluginFunctions[o]=s,this.context.pluginFunctionOwners[o]=e.name,this.pluginFunctionIndexByName.set(i,o),n.pluginFunctionIndices.push(o),n.pluginFunctionNames.push(i);}if(e.asyncResolvers)for(let i of e.asyncResolvers)this.resolverRegistry.register(i),n.resolverNamespaces.push(i.namespace);if(e.phrases)for(let[i,s]of Object.entries(e.phrases))this.normalizer.addPhrase(i,s);if(e.normalizerRules)for(let i of e.normalizerRules)this.normalizer.register(i),n.normalizerRuleNames.push(i.name);if(e.callFusions)for(let[i,s]of Object.entries(e.callFusions)){let o=i.toLowerCase(),c=this.callFusionOwners.get(o);c?c.push({pkg:e.name,tokenType:s}):this.callFusionOwners.set(o,[{pkg:e.name,tokenType:s}]),this.callFusions.set(o,s),n.callFusionNames.push(o);}if(e.tokenCategories)for(let[i,s]of Object.entries(e.tokenCategories))chunkY7O4D3BJ_cjs.b(i,s),n.tokenCategories.push(i);if(e.completionItems&&this.packageCompletionItems.set(e.name,e.completionItems),e.asConverters)for(let[i,s]of Object.entries(e.asConverters))chunkRAFOQ4T5_cjs.H(i,s),n.asConverterNames.push(i);this.packageContributions.set(e.name,n),this.registeredPackages.set(e.name,e),this.compatIndex.add(e),this.clearCompiledCache();}unregisterPackage(e){let t=this.packageContributions.get(e);if(!t)return false;for(let n of t.pluginFunctionIndices)delete this.context.pluginFunctions[n],delete this.context.pluginFunctionOwners[n];for(let n of t.pluginFunctionNames)this.pluginFunctionIndexByName.delete(n);for(let n of t.resolverNamespaces)this.resolverRegistry.unregister(n);for(let n of t.tokenCategories)chunkY7O4D3BJ_cjs.c(n);t.lexerVocabulary&&this.lexer.unregisterVocabulary(t.lexerVocabulary);for(let n of t.asConverterNames)chunkRAFOQ4T5_cjs.I(n);for(let n of t.normalizerRuleNames)this.normalizer.unregister(n);for(let n of t.callFusionNames){let i=(this.callFusionOwners.get(n)??[]).filter(s=>s.pkg!==e);i.length===0?(this.callFusionOwners.delete(n),this.callFusions.delete(n)):(this.callFusionOwners.set(n,i),this.callFusions.set(n,i[i.length-1].tokenType));}return this.packageCompletionItems.delete(e),this.packageContributions.delete(e),this.registeredPackages.delete(e),this.compatIndex.rebuild(this.registeredPackages.values()),this.clearCompiledCache(),true}getConfig(){return {...this.config}}getDateReading(){return this.dateReading}readDates(e){let{tokens:t}=this.lexToTokens(e,void 0,false),n=this.normalizer.normalize(t.filter(s=>s.type!=="COMMENT")),i=[];for(let s of n){let o=s.type===chunkWQGHJAW2_cjs.p;if(!o&&s.type!==chunkWQGHJAW2_cjs.o)continue;let c=s.offset,l=s.sourceEnd??s.offset+s.text.length;i.push(this.describeDateLiteral(e.slice(c,l),c,l,s,o));}return i}describeDateLiteral(e,t,n,i,s){let o=chunkWQGHJAW2_cjs.n(e);if(o!==null){let a=chunkWQGHJAW2_cjs.l(o,this.dateReading.order,this.config.date.onAmbiguous,this.context.calendar),u=chunkWQGHJAW2_cjs.i(o.groups[0],o.groups[1],o.groups[2],o.separator)==="iso",p=this.dateReading.order==="auto"?o.separator==="hyphen"?"MDY":"DMY":this.dateReading.order,d=u?{order:"ISO",orderSource:"iso",locale:void 0}:{order:p,orderSource:this.dateReading.orderSource,locale:this.dateReading.locale};return a.kind==="date"?chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:chunkWQGHJAW2_cjs.k(a.day,a.month,a.year),...d,contested:a.alternative!==void 0,shortYear:a.shortYear,alternative:a.alternative},o.separator):chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:null,...d,contested:false,shortYear:false,problem:a.kind==="refuse"?a.code:void 0},o.separator,a.kind==="refuse"?a.message:void 0)}if(s){let a=i.fault??{code:"DATE_NOT_A_CALENDAR_DAY",message:`"${i.value}" is not a date this engine can read.`};return chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:null,order:null,orderSource:"spelled",contested:false,shortYear:false,problem:a.code},"slash",a.message)}let c=this.context.calendar.fields(Number(i.value)),l=/^\d{4}-/.test(e)?"iso":"spelled";return chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:chunkWQGHJAW2_cjs.k(c.day,c.month0+1,c.year),order:l==="iso"?"ISO":"spelled",orderSource:l,contested:false,shortYear:false},"slash")}getDiagnosticPipeline(){return this.diagnosticPipeline}storeLineResult(e,t,n,i,s,o){this.lineCache.set(e,new K(t,n,i,s.length>0?s[0]:null),o);}executeAndStore(e,t,n,i,s,o,c,l){let a=this.vm.getStack().length,u=new AbortController,p=()=>u.abort();this.keystrokeSignal?.addEventListener("abort",p,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("executeAndStore"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("executeAndStore"),this.vm.activeSignal=u.signal,this.vm.abortCurrent=()=>{chunkTTFO4YDP_cjs.a.signalUnlinked("executeAndStore"),this.keystrokeSignal?.removeEventListener("abort",p),u.abort();},chunkZLRJ7TDP_cjs.a(this.queryClient);let d=chunkGWV273KZ_cjs.d(e,this.vm,c,l,this.makeLineContext(t));for(;this.vm.getStack().length>a;)this.vm.pop();if(d.type==="pending"){this.resolveAsync(d),this.dag.registerLineDataSourceDependency(t,d.packageId||o,[d.queryKey]);let m=chunkOM7NOHJF_cjs.O(d.queryKey);return this.storeLineResult(t,m,e,i,s,n),m}if(d.type==="error")throw this.keystrokeSignal?.removeEventListener("abort",p),d.error;return this.keystrokeSignal?.removeEventListener("abort",p),this.dag.registerLine(t,i,s),this.storeLineResult(t,d.value,e,i,s,n),d.value}executeRaw(e,t=-1){let n=this.vm.getStack().length,i=new AbortController,s=()=>i.abort();this.keystrokeSignal?.addEventListener("abort",s,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("executeRaw"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("executeRaw"),this.vm.activeSignal=i.signal,this.vm.abortCurrent=()=>{chunkTTFO4YDP_cjs.a.signalUnlinked("executeRaw"),this.keystrokeSignal?.removeEventListener("abort",s),i.abort();},chunkZLRJ7TDP_cjs.a(this.queryClient);let o=chunkGWV273KZ_cjs.d(e,this.vm,void 0,void 0,this.makeLineContext(t));for(;this.vm.getStack().length>n;)this.vm.pop();return o.type!=="pending"&&this.keystrokeSignal?.removeEventListener("abort",s),o}async resolveAsync(e){let{queryKey:t,resolver:n,packageId:i,signal:s}=e,o=i||"_engine";try{if(await n,s.aborted){chunkTTFO4YDP_cjs.a.staleDataDiscarded(t,"signal aborted after resolve");return}this.batcher.add({queryKey:t,packageId:o,signal:s,isError:!1});}catch(c){if(s.aborted){chunkTTFO4YDP_cjs.a.staleDataDiscarded(t,"signal aborted after error");return}let l=c instanceof Error?c:new Error(String(c));this.batcher.add({queryKey:t,packageId:o,signal:s,isError:true,error:l});}}registerBackgroundRefresh(e){this.backgroundRefresh&&(e.refetchIntervalMs===void 0||!e.refetch||this.backgroundRefresh.register({packageId:e.packageId||"_engine",queryKey:e.queryKey,intervalMs:e.refetchIntervalMs,refetch:e.refetch}));}getBackgroundRefreshCount(){return this.backgroundRefresh?.size??0}parseDocument(e,t={inputType:"markdown"}){let n=this.config.performance.maxDocumentLines;if(chunkUURM7P3P_cjs.b(e,n)>n)throw chunkSUAGBRQ7_cjs.c.execution("DOCUMENT_TOO_LARGE",`This document has more than ${n.toLocaleString("en-US")} lines, which is the most the engine will process in one pass`,{maxLines:n});this.userUnits.isEmpty||this.clearCompiledCache(),this.userUnits.clear(),this.resetAccumulators();let i=this.lexer.scanDocument(e),s=this.processScanResults(i),o={lines:s,totalLines:s.length,errors:[]};for(let l of s){l.error&&o.errors.push(`Line ${l.lineNumber}: ${l.error}`);for(let a of l.inlineSolves)a.error&&o.errors.push(`Line ${l.lineNumber}: ${a.error}`);}if(t.includeDiagnostics??false){let l=this.diagnosticPipeline.collectReports();l.length>0&&(o.diagnostics=l[0].toJSON());}return o}evaluateLines(e){this.userUnits.isEmpty||this.clearCompiledCache(),this.userUnits.clear(),this.resetAccumulators();let t=e.join(`
|
|
4
|
-
`),n=this.lexer.scanDocument(t);return this.processScanResults(n)}processScanResults(e){let t=[],n=this.batchScanResults,i=this.batchParsedLines;this.batchScanResults=e,this.batchParsedLines=t;try{for(let s of e){let o=s.text,c=s.lineNumber,l=s.startOffset,a=s.endOffset,u=s.classification.skip,p=s.inlineSolves.map(f=>({start:f.start,end:f.end,expression:f.expression,lineNumber:c,columnNumber:f.columnNumber})),d=p.length>0,m={lineNumber:c,text:o,startPosition:l,endPosition:a,isEmpty:u,hasInlineSolves:d,inlineSolves:p,expression:null,result:null,error:null};if(s.error)m.error=s.error.message;else if(!u){let f=o.trim().startsWith(":");if(d&&!f)for(let T of p)try{T.result=this.evaluateLine(c,T.expression);}catch(v){let R=v instanceof Error?v.message:String(v);T.error=R;}else {let T=s.classification.contentOffset,R=(T===void 0?o:o.slice(T-l)).trim();if(R)try{let O=this.evaluateLineWithPreTokenized(c,R,s.tokens);m.expression=R,m.result=O[0];}catch(O){let G=O instanceof Error?O.message:String(O);m.error=G;}}}t.push(m);}}finally{this.batchScanResults=n,this.batchParsedLines=i;}return t}evaluateLineWithPreTokenized(e,t,n){let i=[],s=false;for(let o of n)(o.type==="LPAREN"||o.type==="RPAREN")&&(s=true),i.push(o);return [this.evaluateWithTokens(e,t,i,s)]}parseExpression(e,t,n,i=true){this.parser.setBuilder(e),this.parser.load(t,this.config.validation.autoBalanceParens?n:false),this.parser.parseExpression(0);let s=this.parser.peek();if(s){if(s.type==="EQUALS"&&!this.parser.peekAt(1))return;for(let o=i?t.length-1:0;o>=1;o--){if(t[o].type!=="COLON"||o+1>=t.length)continue;let c=true;for(let l=0;l<o;l++){let a=t[l].type;if(a!=="NUMBER"&&a!=="COLON"){c=false;break}}if(c){let l=t.slice(0,o+2).map(a=>a.value).join("");throw chunkSUAGBRQ7_cjs.c.parsing("INVALID_TIME_LITERAL",`"${l}" is not a valid time`,{tokenType:t[o].type,tokenValue:l})}e.reset();try{this.parseExpression(e,t.slice(o+1),n,!1);return}catch{}}throw chunkSUAGBRQ7_cjs.c.parsing({code:"UNEXPECTED_TRAILING_TOKEN",message:`Unexpected token after expression: "${s.value}"`,context:{tokenType:s.type,tokenValue:s.value},span:{start:s.offset,end:s.sourceEnd??s.offset+s.text.length,line:s.line,col:s.col}})}}compileAdHoc(e){let t=new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName);return this.parseExpression(t,e),t.build()}executeSymbolicTolerant(e,t=-1){let n=chunkGWV273KZ_cjs.d(e,this.vm,void 0,void 0,this.makeLineContext(t),true);if(n.type==="error")throw n.error;if(n.type==="pending")throw chunkSUAGBRQ7_cjs.c.execution("THEREFORE_ASYNC_UNSUPPORTED",`"=>" doesn't support expressions that call an async operation (weather/stocks/currency).`);return n.value}simplifySymbolically(e,t=-1){return this.executeSymbolicTolerant(this.compileAdHoc(e),t)}parseFactorChain(e){if(e.length===0||e.length%2===0)return null;let t=[];for(let n=0;n<e.length;n++)if(n%2===0){if(e[n].type!=="IDENT"&&e[n].type!=="UNIT")return null;t.push(e[n].value);}else if(e[n].type!=="STAR")return null;return t}solveEquation(e,t=-1){let n=[];for(let c of e.factorNames){let l=this.vm.getVar(c);if(l===void 0)return chunkOM7NOHJF_cjs.P("EQUATION_FACTOR_UNDEFINED",`Cannot solve for "${e.variable}": "${c}" is not yet defined.`);if(l.type!==7)return chunkOM7NOHJF_cjs.P("EQUATION_FACTOR_NOT_MATRIX",`Cannot solve for "${e.variable}": "${c}" must be a Matrix (got a different value type).`);n.push(l);}let i=n[0].value;for(let c=1;c<n.length;c++){let l=chunkYWF6C2IO_cjs._(i,n[c].value);if(l.type===13)return l;i=l.value;}let s=chunkYWF6C2IO_cjs.da(i);if(s.type===13)return s;let o=this.executeSymbolicTolerant(e.rhsProgram,t);return o.type!==7?chunkOM7NOHJF_cjs.P("EQUATION_RHS_NOT_MATRIX",`Cannot solve for "${e.variable}": the right-hand side must be a Matrix.`):chunkYWF6C2IO_cjs._(s.value,o.value)}tryDefineUserUnit(e){if(e.length<5||e[0].type!=="NUMBER"||Number(e[0].value)!==1)return null;let t=1;e[t].type==="STAR"&&t++;let n=[];for(;t<e.length&&e[t].type==="IDENT";)n.push(e[t].value),t++;if(n.length===0||e[t]?.type!=="EQUALS"||(t++,e[t]?.type!=="NUMBER"))return null;let i=e[t];if(t++,e[t]?.type!=="UNIT")return null;let s=e[t];return t++,t!==e.length?null:(this.userUnits.define(n,i.value,s.value),this.clearCompiledCache(),chunkOM7NOHJF_cjs.t(`${n.join(" ")} defined`))}tryCompoundAssignment(e,t=-1){if(e.length<2)return null;let n=e[0],i=e[1],s=n.type==="IDENT"||n.type==="UNIT",o=i.type==="PLUS_EQUALS"||i.type==="MINUS_EQUALS";if(!s||!o)return null;let c=e.slice(2);if(c.length===0)throw chunkSUAGBRQ7_cjs.c.parsing("COMPOUND_ASSIGN_REQUIRES_EXPRESSION",`"${n.value} ${i.value}" needs an expression on the right, e.g. "${n.value} ${i.value} 10".`);let l=n.value;this.accumulatorNames.add(l),this.vm.getVar(l)===void 0&&this.vm.setVar(l,chunkOM7NOHJF_cjs.n(0));let a=i.type==="PLUS_EQUALS"?{type:"PLUS",text:"+"}:{type:"MINUS",text:"-"},u=[chunk4DR5RBHQ_cjs.b("IDENT",l,[n]),chunk4DR5RBHQ_cjs.b(a.type,a.text,[i]),chunk4DR5RBHQ_cjs.b("LPAREN","(",[i]),...c,chunk4DR5RBHQ_cjs.b("RPAREN",")",[i])],p=chunkGWV273KZ_cjs.d(this.compileAdHoc(u),this.vm,void 0,void 0,this.makeLineContext(t),false);if(p.type==="error")throw p.error;if(p.type==="pending")throw chunkSUAGBRQ7_cjs.c.execution("COMPOUND_ASSIGN_ASYNC_UNSUPPORTED","A running total (+= / -=) cannot use an async operation (weather/stocks/currency) on its right-hand side.");return this.vm.setVar(l,p.value),p.value}resetAccumulators(){for(let e of this.accumulatorNames)this.vm.deleteVar(e);return this.accumulatorNames}trySymbolicGrammar(e,t=-1){if(e.length===0)return null;if(e[e.length-1].type==="THEREFORE"){let a=e.slice(0,-1);if(a.length===0)throw chunkSUAGBRQ7_cjs.c.parsing("THEREFORE_REQUIRES_EXPRESSION",'"=>" needs an expression or variable name before it.');if(a.length===1&&(a[0].type==="IDENT"||a[0].type==="UNIT")){let u=a[0].value,p=this.vm.getEquation(u),d=this.vm.getScalarEquation(u);if(p){let m=this.solveEquation(p,t);if(!(m.type===13&&m.value==="EQUATION_FACTOR_NOT_MATRIX")||!d)return m}if(d)return this.solveScalarEquation(d,t)}return this.simplifySymbolically(a,t)}if(chunkWQGHJAW2_cjs.b(e))return this.simplifySymbolically(e,t);if(e[0].type==="COLON"||e[0].type==="GLOBAL"||e[0].type==="GOAL_SEEK")return null;let i=e.findIndex(a=>a.type==="EQUALS");if(i===-1)return null;let s=this.parseFactorChain(e.slice(0,i));if(s===null)return this.tryStoreScalarEquation(e,i);let o=e.slice(i+1);if(s.length===1){let a=this.simplifySymbolically(o,t);return this.vm.setVar(s[0],a),a}let c=s[s.length-1],l=s.slice(0,-1);return this.vm.defineEquation(c,l,this.compileAdHoc(o)),this.vm.defineScalarEquation(c,this.compileAdHoc(e.slice(0,i)),this.compileAdHoc(o)),chunkOM7NOHJF_cjs.t(`${c} stored as an equation \u2014 solve with "${c} =>"`)}tryStoreScalarEquation(e,t){if(e[1]?.type==="LPAREN"||t===0||t===e.length-1)return null;let n=e.slice(0,t),i=e.slice(t+1);if(i.some(c=>c.type==="EQUALS"))return null;let s=this.equationUnknowns(n,i);if(s.length!==1)return null;let o=s[0];return this.vm.defineScalarEquation(o,this.compileAdHoc(n),this.compileAdHoc(i)),chunkOM7NOHJF_cjs.t(`${o} stored as an equation \u2014 solve with "${o} =>"`)}equationUnknowns(e,t){let n=[];for(let i of [...e,...t])i.type!=="IDENT"&&i.type!=="UNIT"||this.vm.getVar(i.value)===void 0&&(this.vm.hasUserFunction(i.value)||n.includes(i.value)||n.push(i.value));return n}solveScalarEquation(e,t=-1){let n=this.executeSymbolicTolerant(e.lhsProgram,t),i=this.executeSymbolicTolerant(e.rhsProgram,t);return chunkRAFOQ4T5_cjs.i(n,i,e.variable)}lexToTokens(e,t,n=true){let i=[],s=false;if(n&&!t&&this.frontHalfCached(e))return {tokens:i,hasParens:s,compiled:true};this.lexer.resetExpression(e);for(let o of this.lexer)o.type!=="COMMENT"&&((o.type==="LPAREN"||o.type==="RPAREN")&&(s=true),i.push(o),t?.(o));return {tokens:i,hasParens:s,compiled:false}}prepareExpression(e,t,n,i,s=-1){let o=this.bytecodeCache.get(e);if(o&&!i){let v=this.compiledFrontHalf.get(e);if(v)return {kind:"ready",normalizedTokens:v.normalizedTokens,reads:v.reads,writes:v.writes,program:o,cached:true}}let c=i?void 0:this.failedParses.get(e),l;if(c)l=c.normalizedTokens;else {let v=Ke(e,this.config.validation);if(!v.passed)return {kind:"error",stage:"length",error:v.error.engineError};let R=t.filter(G=>G.type!=="COMMENT");if(R.length===0)return {kind:"empty"};l=this.normalizer.normalize(R,i);let O=Ge(l,this.config.validation);if(!O.passed)return {kind:"error",stage:"complexity",error:O.engineError,normalizedTokens:l}}let a,u=null;try{if(a=this.tryDefineUserUnit(l),a===null){let v=this.tryCompoundAssignment(l,s);v!==null&&(a=v,u=we(l));}a===null&&(a=this.trySymbolicGrammar(l,s));}catch(v){let{reads:R,writes:O}=we(l);return {kind:"error",stage:"parse",error:chunkSUAGBRQ7_cjs.d(v),reads:R,writes:O,normalizedTokens:l}}if(a!==null)return {kind:"symbolic-solve",normalizedTokens:l,value:a,reads:u?.reads,writes:u?.writes};if(c)return {kind:"error",stage:"parse",error:c.error,reads:c.reads,writes:c.writes,normalizedTokens:l};let{reads:p,writes:d}=we(l);if(o)return this.compiledFrontHalf.set(e,{normalizedTokens:l,reads:p,writes:d}),{kind:"ready",normalizedTokens:l,reads:p,writes:d,program:o,cached:true};let m=this.builderPool[this.builderPoolIndex++%this.builderPool.length];m.reset();let f,T=null;try{let v=_.track("parser",()=>(this.parseExpression(m,l,n),m.build()));f=v.result,T=v.alloc;}catch(v){let R=chunkSUAGBRQ7_cjs.d(v);return this.rememberFailedParse(e,{error:R,normalizedTokens:l,reads:p,writes:d}),{kind:"error",stage:"parse",error:R,reads:p,writes:d,normalizedTokens:l}}return this.cacheBytecode(e,f,{normalizedTokens:l,reads:p,writes:d}),{kind:"ready",normalizedTokens:l,reads:p,writes:d,program:f,cached:false,parserAlloc:T}}preflightAsync(e,t,n,i,s,o){if(!(t.hasAsync||this.resolverRegistry.size>0))return {kind:"proceed"};let c=new AbortController,l=()=>c.abort();this.keystrokeSignal?.addEventListener("abort",l,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("preflightAsync"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("preflightAsync");let a=c.signal,u=this.resolverRegistry.preflightAll(e,t,"_engine",a,this.queryClient,this.config.network.enabled);if(u){this.resolveAsync({type:"pending",queryKey:u.queryKey,resolver:u.resolver,packageId:u.packageId||"_engine",signal:u.signal}),this.dag.registerLineDataSourceDependency(n,u.packageId||"_engine",[u.queryKey]),this.registerBackgroundRefresh(u);let p=chunkOM7NOHJF_cjs.O(u.queryKey);return this.storeLineResult(n,p,t,s,o,i),{kind:"pending",value:p}}return this.keystrokeSignal?.removeEventListener("abort",l),{kind:"proceed"}}evaluateWithTokens(e,t,n,i){let s=this.prepareExpression(t,n,i,void 0,e);if(s.kind==="empty"){let p=chunkOM7NOHJF_cjs.n(0);return this.lineCache.set(e,new K(p,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},[],null),t),p}if(s.kind==="error")throw s.error;if(s.kind==="symbolic-solve")return this.storeLineResult(e,s.value,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},s.reads??[],s.writes??[],t),s.value;let{normalizedTokens:o,reads:c,writes:l,program:a}=s,u=this.preflightAsync(o,a,e,t,c,l);return u.kind==="pending"?u.value:this.executeAndStore(a,e,t,c,l,"_engine")}evaluateLine(e,t){let n=this.evaluateLineWithDebug(e,t);if(n.error)throw n.engineError?n.engineError:chunkSUAGBRQ7_cjs.c.execution("EVALUATION_ERROR",n.error,{lineNumber:e});return chunkOM7NOHJF_cjs.l(n.value)}evaluateLineWithDebug(e,t,n="expression"){let i=t.match(/^s`([^`]*)`$/);if(i){let s=i[1];return {...this.evaluateExpressionWithDiagnostic(s,e,n),inlineSolve:{start:0,end:t.length,expression:s,lineNumber:e,columnNumber:1}}}return this.evaluateExpressionWithDiagnostic(t,e,n)}addDiagnosticStage(e,t,n,i,s,o,c,l,a){e.push({stage:t,label:n,icon:i,colorClass:s,stepNumber:o,elapsedNs:c,skipped:l,output:a});}evaluateExpressionWithDiagnostic(e,t,n="expression"){let i=this.diagnosticPipeline,s=i.hasCollectors,o=this.timelineCollector?.parseletMatchCount??0,c=_.isEnabled(),l=[],a=[],u=0,p=Ke(e,this.config.validation);if(!p.passed)return s&&this.addDiagnosticStage(a,"safety_length","Safety: Length","\u{1F6E1}\uFE0F","validate",2,u,false,{type:"safety_length",passed:false,expressionLength:e.length,maxLength:this.config.validation.maxExpressionLength,errorMessage:p.error.error}),{...p.error,debug:void 0,diagnostic:void 0};s&&(i.firePipelineStart({type:chunkHG4NPDN5_cjs.c.PipelineStart,elapsedNs:0,expression:e,inputType:n}),this.addDiagnosticStage(a,"pipeline_start","Pipeline Start","\u25B6","pipeline",1,u,false,{type:"pipeline_start",expression:e,inputType:n}),this.addDiagnosticStage(a,"safety_length","Safety: Length","\u{1F6E1}\uFE0F","validate",2,u,false,{type:"safety_length",passed:true,expressionLength:e.length,maxLength:this.config.validation.maxExpressionLength}));let d=s?y=>{i.fireTokenEmitted({type:chunkHG4NPDN5_cjs.c.TokenEmitted,elapsedNs:0,expression:e,token:{type:y.type,value:y.value,offset:y.offset||0,line:y.line||t,col:y.col||0}});}:void 0,m=_.track("lexer",()=>this.lexToTokens(e,d)),f=m.result.tokens,T=m.result.hasParens,v=m.result.compiled;if(c&&m.alloc&&l.push(m.alloc),s){let y={};for(let L of f)y[L.type]=(y[L.type]||0)+1;this.addDiagnosticStage(a,"lexer","Lexer","\u{1F524}","lexer",3,u,false,{type:"lexer",tokenCount:f.length,tokenTypes:y,hasParens:T,locale:this.localeCode,tokens:[...f]});let A=[];for(let L=0;L<f.length;L++){let ae=f[L];if(ae.type==="INLINE_SOLVE_START"){let D=-1;for(let H=L+1;H<f.length;H++)if(f[H].type==="BACKTICK_OPEN"){D=H;break}if(D>L){let Cr=f.slice(L+1,D).map(Tr=>Tr.value).join("");A.push({startTokenIndex:L,endTokenIndex:D,expression:Cr,columnNumber:ae.col||1}),L=D;}}}this.addDiagnosticStage(a,"line_classification","Line Classification","\u{1F4CB}","classify",3.5,u,false,{type:"line_classification",classification:"expression",skip:false,hasInlineSolve:A.length>0,inlineSolveSpans:A});}if(!v&&f.length===0){let y=chunkOM7NOHJF_cjs.n(0);return this.lineCache.set(t,new K(y,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},[],null),e),s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:0,totalOpcodes:0}),{value:y,tokens:f,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},debug:void 0,diagnostic:void 0}}let R=0,O=[],G=new Map,xr=s?y=>{R++,O.push(y),G.set(y.rule,(G.get(y.rule)||0)+1),i.fireTokenFused({type:chunkHG4NPDN5_cjs.c.TokenFused,elapsedNs:0,expression:e,ruleName:y.rule,sourceTokenCount:y.sourceTokens.length,fusedTokenType:y.fusedToken.type,fusedTokenValue:y.fusedToken.value});}:void 0;s&&this.normalizer.ruleCount>0&&i.fireNormalizerStart({type:chunkHG4NPDN5_cjs.c.NormalizerStart,elapsedNs:0,expression:e,inputTokenCount:f.length});let B=this.bytecodeCache.get(e);s&&!B&&this.parser.setDiagnosticPipeline(i,e);let b=this.prepareExpression(e,f,T,xr,t);v&&b.kind==="ready"&&(f=b.normalizedTokens),c&&b.kind==="ready"&&b.parserAlloc&&l.push(b.parserAlloc),s&&!B&&this.parser.setDiagnosticPipeline(void 0,"");let k=b.kind==="empty"?f:b.normalizedTokens??f;if(s&&(this.normalizer.ruleCount>0?(i.fireNormalizerEnd({type:chunkHG4NPDN5_cjs.c.NormalizerEnd,elapsedNs:0,expression:e,outputTokenCount:k.length,fusionsCount:R}),this.addDiagnosticStage(a,"normalizer","Normalizer","\u{1F504}","normalizer",4,u,false,{type:"normalizer",inputTokenCount:f.length,outputTokenCount:k.length,fusions:O,rulesApplied:[...G.entries()].map(([y,A])=>({rule:y,count:A})),tokens:[...k],phrases:this.normalizer.getPhrases(),ruleShapes:this.normalizer.getRuleShapes(),candidatesPerPosition:this.normalizer.getCandidateCounts(k)})):this.addDiagnosticStage(a,"normalizer","Normalizer","\u{1F504}","normalizer",4,u,true,{type:"normalizer",inputTokenCount:f.length,outputTokenCount:f.length,fusions:[],rulesApplied:[],tokens:[...f],phrases:this.normalizer.getPhrases(),ruleShapes:this.normalizer.getRuleShapes(),candidatesPerPosition:this.normalizer.getCandidateCounts(f)})),b.kind==="empty"||b.kind==="error"&&b.stage==="length"){if(s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:b.kind==="empty",totalTokens:f.length,totalOpcodes:0}),b.kind==="empty"){let y=chunkOM7NOHJF_cjs.n(0);return this.lineCache.set(t,new K(y,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},[],null),e),{value:y,tokens:f,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},debug:void 0,diagnostic:void 0}}return {value:chunkOM7NOHJF_cjs.n(0),tokens:[],program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:b.error.message,engineError:b.error,debug:void 0,diagnostic:void 0}}let ie=Ge(k,this.config.validation);if(b.kind==="error"&&b.stage==="complexity")return s&&(this.addDiagnosticStage(a,"safety_complexity","Safety: Complexity","\u{1F6E1}\uFE0F","validate",5,u,false,{type:"safety_complexity",passed:false,complexityScore:ie.complexityScore??0,maxComplexity:this.config.validation.maxComplexity,breakdown:{tokenCount:k.length,functionCalls:0,nestingDepth:0},errorMessage:ie.errorMessage}),i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:false,totalTokens:f.length,totalOpcodes:0})),{value:chunkOM7NOHJF_cjs.n(0),tokens:[],program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:ie.errorMessage,engineError:ie.engineError,debug:void 0,diagnostic:void 0};if(s&&this.addDiagnosticStage(a,"safety_complexity","Safety: Complexity","\u{1F6E1}\uFE0F","validate",5,u,false,{type:"safety_complexity",passed:true,complexityScore:ie.complexityScore??k.length,maxComplexity:this.config.validation.maxComplexity,breakdown:{tokenCount:k.length,functionCalls:0,nestingDepth:0}}),b.kind==="symbolic-solve"){s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:0});let y={opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false};return this.storeLineResult(t,b.value,y,b.reads??[],b.writes??[],e),{value:b.value,tokens:k,program:y,debug:void 0,diagnostic:void 0}}let me=b.reads??[],se=b.writes??[];if(s&&(this.addDiagnosticStage(a,"readwrite","Read/Write","\u{1F4CB}","readwrite",6,u,false,{type:"readwrite",reads:me,writes:se,isAssignment:se.length>0}),this.addDiagnosticStage(a,"cache_check","Cache Check","\u{1F4BE}","cache",7,u,false,{type:"cache_check",hit:!!B,cacheSize:this.bytecodeCache.size,cacheKey:e}),B?i.fireCacheHit({type:chunkHG4NPDN5_cjs.c.CacheHit,elapsedNs:0,expression:e,cache:"bytecode",key:e}):i.fireCacheMiss({type:chunkHG4NPDN5_cjs.c.CacheMiss,elapsedNs:0,expression:e,cache:"bytecode",key:e})),b.kind==="error"&&b.stage==="parse")return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:false,totalTokens:f.length,totalOpcodes:0}),{value:chunkOM7NOHJF_cjs.n(0),tokens:k,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:b.error.message,engineError:b.error,debug:void 0,diagnostic:void 0};if(b.kind!=="ready")throw chunkSUAGBRQ7_cjs.c.internal({code:"UNEXPECTED_ERROR",message:"Internal error: prepareExpression() returned an unexpected variant after all other cases were handled"});let x=b.program;s&&(this.addDiagnosticStage(a,"parser","Parser","\u{1F333}","parser",8,u,!!B,{type:"parser",parselets:[],uniqueParseletTypes:[],astDepth:0}),this.addDiagnosticStage(a,"compiler","Compiler","\u2699\uFE0F","compiler",9,u,!!B,{type:"compiler",opcodeCount:x.opcodes.length,numberConstants:x.numbers.length,stringConstants:x.strings.length,hasAsync:x.hasAsync,cached:!!B}),i.fireBytecodeBuilt({type:chunkHG4NPDN5_cjs.c.BytecodeBuilt,elapsedNs:0,expression:e,opcodesLength:x.opcodes.length,numbersLength:x.numbers.length,stringsLength:x.strings.length,isCached:!!B}));let kr=x.hasAsync||this.resolverRegistry.size>0,oe=this.preflightAsync(k,x,t,e,me,se);if(s&&(oe.kind==="pending"?this.addDiagnosticStage(a,"async_preflight","Async Preflight","\u{1F52E}","async",10,u,false,{type:"async_preflight",path:"pending",pendingQueryKey:oe.value.value,resolverCount:this.resolverRegistry.size,skippedGuard:true}):kr?this.addDiagnosticStage(a,"async_preflight","Async Preflight","\u{1F52E}","async",10,u,false,{type:"async_preflight",path:"sync",resolverCount:this.resolverRegistry.size,skippedGuard:false}):this.addDiagnosticStage(a,"async_preflight","Async Preflight","\u{1F52E}","async",10,u,true,{type:"async_preflight",path:"sync",resolverCount:0,skippedGuard:true})),oe.kind==="pending")return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length}),{value:oe.value,tokens:k,program:x,debug:void 0,diagnostic:s?this.buildDiagnosticResult(a,oe.value,k,x,null):void 0};let Sr=s&&this.config.diagnostic.vmTraceEnabled===true,w;try{let y=_.track("vm",()=>this.executeAndStore(x,t,e,me,se,"_engine",Sr?i:void 0,e),{cacheHit:!!B});w=y.result,c&&y.alloc&&l.push(y.alloc);}catch(y){let A=chunkSUAGBRQ7_cjs.d(y);return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:false,totalTokens:f.length,totalOpcodes:x.opcodes.length}),{value:chunkOM7NOHJF_cjs.n(0),tokens:k,program:x,error:A.message,engineError:A,debug:void 0,diagnostic:void 0}}let ye=w.type===12;if(s){let y=ye?"pending":String(w.value??""),A=ye?"Pending":w.unit?"Uom":"Number";this.addDiagnosticStage(a,"vm_execute","VM Execute","\u26A1","vm",11,u,false,{type:"vm_execute",totalInstructions:x.opcodes.length,stackDepth:this.vm.getStack().length,resultType:A,resultValue:y,isPending:ye});}if(ye)return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length}),{value:w,tokens:k,program:x,debug:void 0,diagnostic:s?this.buildDiagnosticResult(a,w,k,x,null):void 0};if(c&&l.length>0&&(this.lastTelemetry=_.createTelemetry(e,l,!!B)),s&&(this.addDiagnosticStage(a,"dag_registration","DAG Registration","\u{1F517}","dag",12,u,false,{type:"dag_registration",readsRegistered:me,writesRegistered:se,dataSourcesRegistered:[]}),this.addDiagnosticStage(a,"linecache","Line Cache","\u{1F4E6}","cache",13,u,false,{type:"linecache",lineNumber:t,expression:e,stored:true}),this.addDiagnosticStage(a,"result","Result","\u2713","result",14,u,false,{type:"result",rawValue:String(w.value),formattedValue:String(w.value),valueType:w.type===0?"Number":"Value",unit:w.unit}),i.fireVmHalt({type:chunkHG4NPDN5_cjs.c.VmHalt,elapsedNs:0,expression:e,result:w?{type:w.type,value:w.value,unit:w.unit}:void 0}),this.addDiagnosticStage(a,"pipeline_end","Pipeline End","\u23F9","pipeline",15,u,false,{type:"pipeline_end",success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length,cacheHit:!!B}),i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length})),s){let A=i.collectReports()[0]?.toJSON(),L=A;if(A){let ae=A.parselets.slice(o),D={};for(let H of ae)D[H.parseletCategory]=(D[H.parseletCategory]??0)+1;L={...A,parselets:ae,summary:{...A.summary,totalParselets:Object.keys(D).length,parseCategories:D}};}return {value:w,tokens:k,program:x,debug:L,diagnostic:this.buildDiagnosticResult(a,w,k,x,null)}}return {value:w,tokens:k,program:x}}buildDiagnosticResult(e,t,n,i,s){return {stages:e,value:t,tokens:n,program:i,error:s,dagSnapshot:this.dag.getSnapshot(),cacheSnapshot:this.getCacheSnapshot(),batcherMetrics:this.getBatcherMetrics(),checkpoints:this.getCheckpoints()}}reEvaluateLine(e,t){let n=this.lineCache.get(e,t);if(!n)return;let i=this.bytecodeCache.get(t);if(!i)return;if(n.bytecode.hasAsync||this.resolverRegistry.size>0){let c=new AbortController,l=()=>c.abort();this.keystrokeSignal?.addEventListener("abort",l,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("reEvaluateLine preflight"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("reEvaluateLine preflight");let a=c.signal,u=this.resolverRegistry.preflightAll([],n.bytecode,"_engine",a,this.queryClient,this.config.network.enabled);if(u)return this.resolveAsync({type:"pending",queryKey:u.queryKey,resolver:u.resolver,packageId:u.packageId||"_engine",signal:u.signal}),this.registerBackgroundRefresh(u),chunkOM7NOHJF_cjs.O(u.queryKey);this.keystrokeSignal?.removeEventListener("abort",l);}let s=this.executeRaw(i,e);if(s.type==="pending")return this.resolveAsync(s),chunkOM7NOHJF_cjs.O(s.queryKey);if(s.type==="error")throw s.error;let o=s.value;return n.result=o,o}getDag(){return this.dag}getLineCache(){return this.lineCache}getBytecodeCache(){return this.bytecodeCache}getVM(){return this.vm}getContext(){return this.context}getScopeManager(){return this.scopeManager}getLexer(){return this.lexer}getNormalizer(){return this.normalizer}getPackageCompletionItems(){let e=[];for(let t of this.packageCompletionItems.values())e.push(...t);return e}getParseletRegistry(){return {prefix:this.registry.getAllPrefix(),infix:this.registry.getAllInfix()}}tokenizeForClassification(e){this.lexer.resetExpression(e);let n=Array.from(this.lexer).filter(i=>i.type!=="COMMENT");return n.length===0?[]:this.normalizer.normalize(n)}getParser(){return this.parser}isDiagnosticMode(){return this.diagnosticPipeline.hasCollectors}setKeystrokeSignal(e){e?chunkTTFO4YDP_cjs.a.keystrokeSignalSet(e.aborted):chunkTTFO4YDP_cjs.a.keystrokeSignalCleared(),this.keystrokeSignal=e;}getCacheSnapshot(){let e=[];for(let[o,c]of this.bytecodeCache)e.push({expression:o,opcodesLength:c.opcodes.length,numbersLength:c.numbers.length,stringsLength:c.strings.length,hasAsync:c.hasAsync});let t=[];for(let o of this.lineCache.keys()){let c=o.indexOf(":"),l=c>0?parseInt(o.slice(0,c),10)||0:parseInt(o,10)||0,a=c>0?o.slice(c+1):void 0,u=a!==void 0?this.lineCache.get(l,a):this.lineCache.getEntryForLine(l);u&&t.push({key:o,lineNumber:l,resultType:String(u.result?.type??""),resultValue:String(u.result?.value??""),reads:u.readVariables??[],writeVar:u.writeVariable??null});}let s=this.queryClient.getQueryCache().getAll().map(o=>{let c=o.state.status==="success"?"resolved":o.state.status==="error"?"error":"in_flight";return {packageId:o.queryKey[0]??"unknown",resolvedCount:o.state.status==="success"?1:0,inFlightCount:o.state.status!=="success"&&o.state.status!=="error"?1:0,errorCount:o.state.status==="error"?1:0,entries:[{key:o.queryKey.join(":"),status:c}]}});return {bytecode:e,lineCache:t,asyncCache:s}}getBatcherMetrics(){return {pendingCount:this.batcher.pendingCount,dedupCount:this.batcher.dedupCount,workerOffloadCount:this.batcher.workerOffloadCount,listenerCount:this.batcher.listenerCount}}getCheckpoints(){let t=this.vm.checkpointer;return t?t.getAllCheckpoints().map(i=>({lineNumber:i.lineNumber,variables:Object.keys(i.variables),variableCount:Object.keys(i.variables).length})):[]}getLastTelemetry(){return this.lastTelemetry}evaluateExpression(e){return this.evaluateLine(-1,e)}explainLine(e){let{tokens:t}=this.lexToTokens(e,void 0,false),n=t.filter(s=>s.type!=="COMMENT"),i=this.normalizer.normalize(n);return Xe({expression:e,tokens:i,evaluate:s=>this.evaluateIsolated(s),locale:this.localeCode,readings:this.readDates(e)})}evaluateIsolated(e){let{tokens:t,hasParens:n}=this.lexToTokens(e),i=this.prepareExpression(e,t,n,void 0,-1);if(i.kind==="empty")return chunkOM7NOHJF_cjs.n(0);if(i.kind==="error")throw i.error;if(i.kind==="symbolic-solve")return i.value;let s=this.executeRaw(i.program,-1);if(s.type==="error")throw s.error;if(s.type==="pending")throw chunkSUAGBRQ7_cjs.c.execution("EXPLAIN_ASYNC_UNSUPPORTED",`A derivation cannot be built for a line that resolves data asynchronously: "${e}"`,{expression:e});return s.value}compileExpression(e){let t=this.lexToTokens(e),{hasParens:n}=t,i=this.prepareExpression(e,t.tokens,n),s=t.compiled&&i.kind==="ready"?i.normalizedTokens:t.tokens;if(i.kind==="empty")return {program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},tokens:[],reads:[],writes:[]};if(i.kind==="error")throw i.stage==="parse"&&(i.reads?.length||i.writes?.length)?new chunkSUAGBRQ7_cjs.b(i.error.category,{code:i.error.code,message:i.error.message,expected:i.error.expected,found:i.error.found,suggestion:i.error.suggestion,recoverable:i.error.recoverable,span:i.error.span,cause:i.error.cause,context:{...i.error.context,reads:i.reads??[],writes:i.writes??[]}}):i.error;return i.kind==="symbolic-solve"?{program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},tokens:i.normalizedTokens,reads:i.reads??[],writes:i.writes??[]}:{program:i.program,tokens:s,reads:i.reads,writes:i.writes}}tryCompileExpression(e){try{return this.tryCompileExpressionUnguarded(e)}catch{return false}}tryCompileExpressionUnguarded(e){let{tokens:t,hasParens:n}=this.lexToTokens(e);return this.prepareExpression(e,t,n).kind!=="error"}executeCached(e,t=-1){if(e.opcodes.length===0)return chunkOM7NOHJF_cjs.n(0);let n=this.executeRaw(e,t);if(n.type==="pending")return this.resolveAsync(n),chunkOM7NOHJF_cjs.O(n.queryKey);if(n.type==="error")throw n.error;return n.value}evaluateNumber(e){let t=e.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&this.vm.getVar(t)===void 0)return NaN;try{let n=this.evaluateLine(-1,e);return n.isFault()?NaN:n.toNumber()}catch{return NaN}}clear(){this.batcher.clearAll(),this.backgroundRefresh?.clearAll(),this.queryClient.clear(),chunkZLRJ7TDP_cjs.b()===this.queryClient&&chunkZLRJ7TDP_cjs.a(null),this.dag.clear(),this.lineCache.clear(),this.scopeManager.clear(),this.clearCompiledCache(),this.vm.reset(),this.userUnits.clear(),this.accumulatorNames.clear(),this.lastTelemetry=null;}toJSON(){let e=this.dag.getSnapshot(),t=new Set;for(let a of Object.keys(e.dataSourceDeps)){let u=Number(a);Number.isNaN(u)||t.add(u);}let n=this.lineCache.snapshotEntries(),i=new Map;for(let{line:a,entry:u}of n){let p=t.has(a)||u.bytecode.hasAsync;p&&t.add(a);let d=u.writeVariable;if(d){let m=i.get(d);(!m||a>=m.line)&&i.set(d,{line:a,async:p});}}let s={};for(let[a,u]of this.vm.getVariableEntries())if(u.type!==12&&!i.get(a)?.async)try{s[a]=ze(u,`variable "${a}"`);}catch(p){if(p instanceof chunkSUAGBRQ7_cjs.b&&p.code===V.SNAPSHOT_UNSUPPORTED_VALUE)continue;throw p}let o=this.vm.getUserFunctionDefs().map($e),c=[];for(let{line:a,expression:u,entry:p}of n){if(t.has(a)||p.result.type===12)continue;let d;try{d=ze(p.result,`line ${a}`);}catch(m){if(m instanceof chunkSUAGBRQ7_cjs.b&&m.code===V.SNAPSHOT_UNSUPPORTED_VALUE)continue;throw m}c.push({line:a,expression:u,result:d,bytecode:fe(p.bytecode),reads:p.readVariables.slice(),writeVar:p.writeVariable});}let l=Array.from(this.bytecodeCache.entries()).map(([a,u])=>({expression:a,program:fe(u)}));return {format:ee,version:Q,engineVersion:chunkZBMWLTE6_cjs.a,locale:this.localeCode,variables:s,userFunctions:o,lineCache:c,bytecodeCache:l}}static fromJSON(e,t={}){or(e);let n=t.locale??e.locale??"en",i=new X({locale:n,diagnostics:t.diagnostics??false,config:t.config,packages:t.packages,calendar:t.calendar});return i.restoreSnapshot(e),i}restoreSnapshot(e){for(let[t,n]of Object.entries(e.variables))this.vm.setVar(t,Fe(n));for(let t of e.userFunctions){let n=je(t);this.vm.defineUserFunction(n.name,n.params,n.program);}for(let t of e.lineCache){let n=new K(Fe(t.result),de(t.bytecode),t.reads.slice(),t.writeVar);this.lineCache.set(t.line,n,t.expression),this.dag.registerLine(t.line,t.reads,t.writeVar?[t.writeVar]:[]);}for(let{expression:t,program:n}of e.bytecodeCache)this.bytecodeCache.set(t,de(n));}evaluateIncremental(e,t){let n=this.dag.getAffectedLinesInOrder(e);this.vm.setVar(e,chunkOM7NOHJF_cjs.n(t));let i=new Map;for(let s of n){let o=this.lineCache.getEntryForLine(s);if(!o||o.bytecode.opcodes.length===0)continue;let c=this.executeRaw(o.bytecode,s);if(c.type==="pending"){this.resolveAsync(c);continue}if(c.type==="error"){let a=chunkOM7NOHJF_cjs.P(c.error.code,c.error.message);i.set(s,a),o.result=a;continue}let l=c.value;i.set(s,l),o.result=l;}return i}};X.GOAL_SEEK_MAX_NESTING_DEPTH=1,X.WARMUP_EXPRESSIONS=["1 + 2 * 3","10.5 / 2 - 0.25","50% of 200","3 kg + 400 g","sqrt(144) + max(1, 2)","1 < 2 && 3 >= 3","half of 250",'"text" + "joined"'];var Ae=X;var Ye=(()=>{throw new Error("engine.worker.ts was not processed by esbuild-plugin-inline-worker, so worker offload is unavailable")}),re=null;function Zr(){return re||(re=new Ae),re}var ne=null;function en(){return ne||(ne=chunkGWV273KZ_cjs.c(chunkRAFOQ4T5_cjs.w,200,5e4)),ne}function tn(r){let e={lineId:r.lineId,expression:r.expression,compiledAgainstHash:r.textHash,strings:[],reads:[],writes:[],isVariableDef:false,error:null};try{let t=Zr(),{program:n,reads:i,writes:s}=t.compileExpression(r.expression),o=s.length>0,c=n.opcodes,l=n.numbers,a=c.buffer.slice(c.byteOffset,c.byteOffset+c.byteLength),u=l.buffer.slice(l.byteOffset,l.byteOffset+l.byteLength);return {...e,opcodesBuffer:a,numbersBuffer:u,opcodesLength:c.length,numbersLength:l.length,strings:[...n.strings],reads:i,writes:s,isVariableDef:o}}catch(t){return {...e,opcodesBuffer:new ArrayBuffer(0),numbersBuffer:new ArrayBuffer(0),opcodesLength:0,numbersLength:0,error:t instanceof Error?t.message:String(t)}}}function rn(r){let e=[],t=[];for(let n of r.items){let i=tn(n);e.push(i),i.opcodesBuffer.byteLength>0&&t.push(i.opcodesBuffer),i.numbersBuffer.byteLength>0&&t.push(i.numbersBuffer);}self.postMessage({id:r.id,type:"COMPILE_RESULT",results:e},t);}function nn(r){let e=en();e.reset();let t=new Uint8Array(r.opcodesBuffer,0,r.opcodesLength),n=new Float64Array(r.numbersBuffer,0,r.numbersLength),i={opcodes:t,numbers:n,strings:r.strings};try{let s=chunkGWV273KZ_cjs.d(i,e);if(s.type==="pending")return {lineNumber:r.lineNumber,valueType:12,value:0,isPending:!0,queryKey:s.queryKey};if(s.type==="error")return {lineNumber:r.lineNumber,valueType:13,value:0,isPending:!1,unit:s.error.message};let o=s.value;return {lineNumber:r.lineNumber,valueType:o.type,value:typeof o.value=="number"?o.value:typeof o.value=="bigint"?Number(o.value):0,unit:o.unit,isPending:!1}}catch{return {lineNumber:r.lineNumber,valueType:13,value:0,isPending:false,unit:"Worker execution failed"}}}function sn(r){let e=[];for(let t of r.items)e.push(nn(t));self.postMessage({id:r.id,type:"EXECUTE_RESULT",results:e});}var on=typeof self<"u"&&typeof window>"u",an=r=>{if(r.origin&&self.location&&r.origin!==self.location.origin)return;let e=r.data;switch(e.type){case "COMPILE_BATCH":rn(e);break;case "EXECUTE_BATCH":sn(e);break;case "TERMINATE":{re&&(re.clear(),re=null),ne&&(ne.reset(),ne=null),self.postMessage({id:e.id,type:"COMPILE_RESULT",results:[]});break}default:self.postMessage({id:-1,type:"COMPILE_RESULT",results:[],error:`Unknown message type: ${e.type}`});}};on&&(self.onmessage=an);var br=3e4,vr=50,Le=class{constructor(e){this.workers=[];this.nextWorker=0;this.nextId=1;this.pendingBatches=new Map;this.terminated=false;this._available=null;this.poolSize=Math.min(e??this.defaultPoolSize(),4);}defaultPoolSize(){return typeof navigator<"u"&&navigator.hardwareConcurrency?Math.min(navigator.hardwareConcurrency,4):2}isAvailable(){if(this.terminated)return false;if(this._available!==null)return this._available;if(typeof Worker>"u")return this._available=false,false;try{return Ye().terminate(),this._available=!0,!0}catch{return this._available=false,false}}executeBatch(e,t){if(!this.isAvailable())return;if(e.length===0)return Promise.resolve([]);this.ensureWorkers();let n=[];for(let l of e){let a=t.get(l);if(!a||a.bytecode.opcodes.length===0)continue;let u=a.bytecode.opcodes,p=a.bytecode.numbers,d=u.buffer.slice(u.byteOffset,u.byteOffset+u.byteLength),m=p.buffer.slice(p.byteOffset,p.byteOffset+p.byteLength);n.push({lineNumber:l,opcodesBuffer:d,numbersBuffer:m,opcodesLength:u.length,numbersLength:p.length,strings:[...a.bytecode.strings]});}if(n.length===0)return Promise.resolve([]);let i=[];for(let l of n)l.opcodesBuffer.byteLength>0&&i.push(l.opcodesBuffer),l.numbersBuffer.byteLength>0&&i.push(l.numbersBuffer);let s=this.nextId++,o=this.nextWorkerIndex(),c=this.workers[o];return new Promise(l=>{let a=setTimeout(()=>{this.pendingBatches.has(s)&&this.failWorker(o,"WORKER_TIMEOUT",`Evaluation did not finish within ${br/1e3} seconds; the worker was replaced`);},br);this.pendingBatches.set(s,{id:s,lineNumbers:n.map(u=>u.lineNumber),workerIndex:o,resolve:u=>{clearTimeout(a),l(u);}}),c.postMessage({type:"EXECUTE_BATCH",id:s,items:n},i);})}clear(){for(let[,e]of this.pendingBatches)e.resolve([]);this.pendingBatches.clear();for(let e of this.workers)e.terminate();this.workers=[],this.nextWorker=0;}destroy(){this.terminated=true,this.clear();}ensureWorkers(){if(!(this.workers.length>0))for(let e=0;e<this.poolSize;e++)this.spawnWorker(e);}spawnWorker(e){let t=Ye();t.onmessage=n=>{this.handleWorkerMessage(n.data);},t.onerror=n=>{console.error(`[ExecutionPool] Worker ${e} error:`,n.message),this.failWorker(e,"WORKER_EXECUTION_ERROR",`Worker failed: ${n.message}`);},this.workers[e]=t;}failWorker(e,t,n){if(this.workers.length!==0){this.workers[e]?.terminate(),this.terminated||this.spawnWorker(e);for(let[i,s]of this.pendingBatches)s.workerIndex===e&&(this.pendingBatches.delete(i),s.resolve(ln(s.lineNumbers,t,n)));}}nextWorkerIndex(){let e=this.nextWorker;return this.nextWorker=(this.nextWorker+1)%this.workers.length,e}handleWorkerMessage(e){if(e.type!=="EXECUTE_RESULT")return;let t=this.pendingBatches.get(e.id);t&&(this.pendingBatches.delete(e.id),t.resolve(e.results));}};function ln(r,e,t){return r.map(n=>({lineNumber:n,valueType:13,value:0,unit:t,isPending:false,errorCode:e}))}function Er(r){switch(r.valueType){case 0:return chunkOM7NOHJF_cjs.n(r.value);case 1:return chunkOM7NOHJF_cjs.r(r.value);case 2:return chunkOM7NOHJF_cjs.s(BigInt(r.value));case 3:return chunkOM7NOHJF_cjs.t(String(r.value));case 4:return chunkOM7NOHJF_cjs.M(r.value);case 5:return chunkOM7NOHJF_cjs.N(r.value);case 6:return chunkOM7NOHJF_cjs.u(r.value,r.unit??"");case 7:return chunkOM7NOHJF_cjs.n(r.value);case 10:return chunkOM7NOHJF_cjs.L(r.value!==0);case 12:return chunkOM7NOHJF_cjs.O(r.queryKey??"");case 13:return chunkOM7NOHJF_cjs.P(r.errorCode??"WORKER_EXECUTION_ERROR",r.unit??"Unknown worker error");default:return chunkOM7NOHJF_cjs.n(r.value)}}var Oe=class Oe{constructor(e,t,n,i=Oe.DEFAULT_HIGH_WATER_MARK){this.pending=[];this.scheduled=false;this.cleared=false;this.executionPool=null;this.workerOffloadDispatchCount=0;this._streamController=null;this._testCaptures=null;this.onLineResult=null;this.warnedAboutMissingHook=false;this.dag=e,this.lineCache=t,this.vm=n,this.highWaterMark=i,this._eventStream=this.createEventStream();}warnIfUnwired(){this.onLineResult||this.listenerCount>0||this.warnedAboutMissingHook||(this.warnedAboutMissingHook=true,console.warn("[solve-engine] An async result resolved, but nothing is listening for it: no reader is attached to engine.getEventStream() and AsyncResolutionBatcher.onLineResult is not set. The value is in the cache; without one of those the line keeps showing as pending. Read the event stream and re-evaluate the lines it names (see the async guide), or set onLineResult to mirror resolved values into your own state. This warning appears once per batcher."));}createEventStream(){return new ReadableStream({start:e=>{this._streamController=e;},cancel:()=>{this._streamController=null;}},new CountQueuingStrategy({highWaterMark:this.highWaterMark}))}add(e){this.cleared=false;for(let t of this.pending)if(t.packageId===e.packageId&&t.queryKey===e.queryKey)return;this.pending.push(e),this.scheduled||(this.scheduled=true,queueMicrotask(()=>{try{this.flush();}catch(t){let n=chunkSUAGBRQ7_cjs.d(t);console.error(`[AsyncResolutionBatcher] flush() failed unexpectedly \u2014 this should never happen; please report: ${n.format()}`);}}));}getEventStream(){return this._eventStream}get pendingCount(){return this.pending.length}get dedupCount(){let e=new Set;for(let t of this.pending)e.add(`${t.packageId}:${t.queryKey}`);return Math.max(0,this.pending.length-e.size)}get listenerCount(){return this._eventStream.locked?1:0}get workerOffloadCount(){return this.workerOffloadDispatchCount}clearAll(){this.pending=[],this.scheduled=false,this.cleared=true,this._testCaptures=null,this.onLineResult=null;try{this._streamController?.close();}catch{}this._streamController=null,this._eventStream=this.createEventStream(),this.executionPool&&(this.executionPool.clear(),this.executionPool=null),this.workerOffloadDispatchCount=0;}flush(){if(this.scheduled=false,this.cleared||this.pending.length===0)return;let e=this.pending;this.pending=[];let t=new Map;for(let a of e){let u=`${a.packageId}:${a.queryKey}`;t.set(u,a);}let n=[],i=[];for(let a of t.values())a.isError?n.push(a):i.push(a);for(let a of n)a.signal.aborted||this.notifyListeners({type:"error",queryKey:a.queryKey,packageId:a.packageId,error:a.error??new Error("Unknown async resolution error")});let s=new Set,o=[],c=[...i,...n];for(let a of c){if(a.signal.aborted)continue;o.push(a.queryKey);let u=this.dag.getAffectedLinesByDataSource(a.packageId,[a.queryKey]);for(let p of u)s.add(p);}if(s.size===0){this.notifyListeners({type:"lines-updated",lineNumbers:[],affectedQueryKeys:o});return}let l=this.topologicalSort(Array.from(s));if(l.length>vr){let a=new Map;for(let u of l)a.set(u,this.lineCache.getEntryForLine(u));this.reExecuteViaWorkerPool(l,a,o).catch(u=>{let p=chunkSUAGBRQ7_cjs.d(u);console.error(`[AsyncResolutionBatcher] reExecuteViaWorkerPool() failed unexpectedly: ${p.format()}`);});return}this.reExecuteMainThread(l,o);}topologicalSort(e){if(e.length<=1)return e;let t=new Map,n=new Map,i=new Map;for(let c of e)t.set(c,0),n.set(c,[]);for(let c of e){let l=this.dag.getWrites(c);for(let a of l)i.set(a,c);}for(let c of e){let l=this.dag.getDependencies(c);for(let a of l){let u=i.get(a);u!==void 0&&u!==c&&(n.get(u).push(c),t.set(c,(t.get(c)??0)+1));}}let s=[];for(let[c,l]of t)l===0&&s.push(c);if(s.length===0&&e.length>0)return [...e].sort((c,l)=>c-l);let o=[];for(;s.length>0;){let c=s.shift();o.push(c);for(let l of n.get(c)??[]){let a=(t.get(l)??1)-1;t.set(l,a),a===0&&s.push(l);}}if(o.length<e.length){let c=e.filter(l=>!o.includes(l)).sort((l,a)=>l-a);o.push(...c);}return o}async reExecuteViaWorkerPool(e,t,n){this.executionPool||(this.executionPool=new Le);let i=this.executionPool.executeBatch(e,t);if(!i){this.reExecuteMainThread(e,n,t);return}this.workerOffloadDispatchCount++;let s=await i;if(this.cleared)return;let o=[];for(let c of s){let l=t.get(c.lineNumber);if(!l||c.isPending)continue;let a=Er(c);l.result=a,this.warnIfUnwired(),this.onLineResult?.(c.lineNumber,a),o.push(c.lineNumber);}this.cleared||(o.length>0||n.length>0)&&this.notifyListeners({type:"lines-updated",lineNumbers:o,affectedQueryKeys:n});}reExecuteMainThread(e,t,n){let i=[];for(let s of e){let o=n?n.get(s):this.lineCache.getEntryForLine(s);if(!o||o.bytecode.opcodes.length===0)continue;let c=this.vm.getStack().length;try{let l=chunkGWV273KZ_cjs.d(o.bytecode,this.vm,void 0,void 0,{lineIndex:s,networkEnabled:this.vm.context.networkEnabled,calendar:this.vm.context.calendar});for(;this.vm.getStack().length>c;)this.vm.pop();if(l.type==="value")o.result=l.value,this.warnIfUnwired(),this.onLineResult?.(s,l.value),i.push(s);else if(l.type==="error"){let a=chunkOM7NOHJF_cjs.P(l.error.code,l.error.message);o.result=a,this.warnIfUnwired(),this.warnIfUnwired(),this.onLineResult?.(s,a),i.push(s);}}catch(l){for(;this.vm.getStack().length>c;)this.vm.pop();let a=chunkSUAGBRQ7_cjs.d(l),u=chunkOM7NOHJF_cjs.P(a.code,a.message);o.result=u,this.warnIfUnwired(),this.onLineResult?.(s,u),i.push(s);}}return (i.length>0||t.length>0)&&this.notifyListeners({type:"lines-updated",lineNumbers:i,affectedQueryKeys:t}),i}notifyListeners(e){if(this._testCaptures&&this._testCaptures.push(e),this._streamController)try{this._streamController.enqueue(e);}catch{}}};Oe.DEFAULT_HIGH_WATER_MARK=64;var Pe=Oe;exports.a=cn;exports.b=Ir;exports.c=Zt;exports.d=ee;exports.e=Q;exports.f=V;exports.g=Ye;exports.h=Pe;exports.i=Ke;exports.j=Ge;exports.k=we;exports.l=Pn;exports.m=Ln;exports.n=Ae;//# sourceMappingURL=chunk-IY3GI2AM.cjs.map
|
|
5
|
-
//# sourceMappingURL=chunk-
|
|
3
|
+
`)}static aggregate(e){let t=new Map;for(let i of e)for(let s of i.stages)t.has(s.stage)||t.set(s.stage,[]),t.get(s.stage).push(s);let n=[];for(let[i,s]of t){let o=s.map(a=>a.wallTimeNs).sort((a,u)=>a-u),c=s.map(a=>a.allocBytes),l=s.length;n.push({stage:i,count:l,meanAllocBytes:c.reduce((a,u)=>a+u,0)/l,meanWallTimeNs:o.reduce((a,u)=>a+u,0)/l,minWallTimeNs:o[0],maxWallTimeNs:o[o.length-1],p50WallTimeNs:We(o,50),p95WallTimeNs:We(o,95),p99WallTimeNs:We(o,99)});}return n.sort((i,s)=>i.stage.localeCompare(s.stage)),n}static createTelemetry(e,t,n=false){let i=t.reduce((o,c)=>o+c.allocBytes,0),s=t.reduce((o,c)=>o+c.wallTimeNs,0);return {expression:e,stages:t,totalAllocBytes:i,totalWallTimeNs:s,fastPath:n}}};_.enabled=false;function We(r,e){if(r.length===0)return 0;if(r.length===1)return r[0];let t=e/100*(r.length-1),n=Math.floor(t),i=Math.ceil(t);if(n===i)return r[n];let s=t-n;return r[n]*(1-s)+r[i]*s}function Ke(r,e){if(r.length>e.maxExpressionLength){let t=chunkSUAGBRQ7_cjs.c.validation("EXPRESSION_TOO_LONG",`Expression exceeds max length of ${e.maxExpressionLength} characters (got ${r.length})`,{expressionLength:r.length,maxLength:e.maxExpressionLength});return {passed:false,error:{value:chunkOM7NOHJF_cjs.n(0),tokens:[],program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:t.message,engineError:t}}}return {passed:true}}function Ge(r,e){let t=0,n=0,i=0;for(let o of r)o.type==="FUNC"&&t++,(o.value==="("||o.type==="LPAREN")&&(n++,i=Math.max(i,n)),(o.value===")"||o.type==="RPAREN")&&n--;let s=r.length+t*5+i*10;if(s>e.maxComplexity){let o=chunkSUAGBRQ7_cjs.c.validation("EXPRESSION_TOO_COMPLEX",`Expression complexity score ${s} exceeds maximum of ${e.maxComplexity}`,{complexity:s,maxComplexity:e.maxComplexity});return {passed:false,complexityScore:s,errorMessage:o.message,engineError:o}}return {passed:true,complexityScore:s}}function ge(r){return r.type==="IDENT"||r.type==="UNIT"}function $r(r){return r.type==="NUMBER"||r.type==="TO"||r.type==="IN"||r.type==="RPAREN"}function cr(r,e){let t=0;for(let n=e;n<r.length;n++)if(r[n].type==="LPAREN")t++;else if(r[n].type==="RPAREN"&&(t--,t===0))return n;return null}function jr(r){let e=new Set;for(let t=0;t<r.length;t++){if(!ge(r[t])||t>0&&r[t-1].type==="COLON"||r[t+1]?.type!=="LPAREN")continue;let n=cr(r,t+1);if(n!==null&&r[n+1]?.type==="EQUALS")for(let i=t+2;i<n;i++)ge(r[i])&&e.add(r[i].value);}return e}function we(r){let e=[],t=[],n=jr(r);for(let i=0;i<r.length;i++){let s=r[i];if(s.type==="GLOBAL"){if(i+2<r.length&&r[i+1].type==="COLON"&&ge(r[i+2])){let o=chunkRAFOQ4T5_cjs.K(r[i+2].value);e.push(o),i+3<r.length&&r[i+3].type==="EQUALS"&&t.push(o);}continue}if(s.type==="COLON"){if(i>0&&r[i-1].type==="GLOBAL")continue;if(i+1<r.length&&ge(r[i+1])){let o=r[i+1].value;e.push(o),i+2<r.length&&r[i+2].type==="EQUALS"&&t.push(o);}}if(ge(s)){if(i>0&&r[i-1].type==="COLON"||s.type==="UNIT"&&i>0&&$r(r[i-1])||n.has(s.value))continue;if(r[i+1]?.type==="LPAREN"){let c=cr(r,i+1);if(c!==null&&r[c+1]?.type==="EQUALS"){e.push(s.value),t.push(s.value);continue}}e.push(s.value);let o=r[i+1]?.type;(o==="EQUALS"||o==="PLUS_EQUALS"||o==="MINUS_EQUALS")&&t.push(s.value);}}return {reads:e,writes:t}}function Pn(r){return chunkAGCNMEP2_cjs.c.classifyLine(r).skip}function Ln(r,e){return chunkAGCNMEP2_cjs.c.findInlineSolves(r).map(n=>({start:n.start,end:n.end,expression:n.expression,lineNumber:e,columnNumber:n.columnNumber}))}function ur(r){let e=r[r.length-1],t=e.length>1&&e.endsWith("s")?e.slice(0,-1):e;return [...r.slice(0,-1),t].join(" ")}var Ne=class{constructor(){this.byKey=new Map;this.longestName=0;}get isEmpty(){return this.byKey.size===0}get maxWordCount(){return this.longestName}define(e,t,n){let i=ur(e);this.byKey.set(i,{displayName:e.join(" "),ratioText:t,baseUnit:n}),e.length>this.longestName&&(this.longestName=e.length);}match(e){let t=Math.min(e.length,this.longestName);for(let n=t;n>=1;n--){let i=this.byKey.get(ur(e.slice(0,n)));if(i!==void 0)return {definition:i,wordCount:n}}return null}clear(){this.byKey.clear(),this.longestName=0;}};function pr(r,e=82){return {name:"uom:user-unit",priority:e,shape:[{types:["NUMBER","RPAREN"]},{types:["IDENT"]}],match(t,n){if(r.isEmpty)return null;let i=t[n];if(i.type!=="NUMBER"&&i.type!=="RPAREN")return null;let s=[],o=r.maxWordCount;for(let f=n+1;f<t.length&&s.length<o&&t[f].type==="IDENT";f++)s.push(t[f].value);if(s.length===0)return null;let c=r.match(s);if(c===null||t[n+1+c.wordCount]?.type==="EQUALS")return null;let{ratioText:a,baseUnit:u}=c.definition,p=new chunkWU7SBKVU_cjs.a("STAR",chunkYBQOQTVL_cjs.c("STAR"),"*","*",i.offset,0,i.line,i.col),d=new chunkWU7SBKVU_cjs.a("NUMBER",chunkYBQOQTVL_cjs.c("NUMBER"),a,a,i.offset,0,i.line,i.col),m=new chunkWU7SBKVU_cjs.a("UNIT",chunkYBQOQTVL_cjs.c("UNIT"),u,u,i.offset,0,i.line,i.col);return {consumed:1+c.wordCount,replacement:[i,p,d,m],ruleName:"uom:user-unit"}}}}var fr="engine:call-fusion";function dr(r,e=80){return {name:fr,priority:e,shape:[{types:["IDENT"]},{types:["LPAREN"]}],match(t,n){let i=t[n];if(!i||i.type!=="IDENT"||t[n+1]?.type!=="LPAREN"||t[n-1]?.type==="COLON")return null;let s=(i.value??"").toLowerCase(),o=r.get(s);return o===void 0?null:{consumed:1,replacement:[new chunkWU7SBKVU_cjs.a(o,chunkYBQOQTVL_cjs.c(o),s,i.value,i.offset,0,i.line,i.col)],ruleName:fr}}}}var Hr={january:1,jan:1,february:2,feb:2,march:3,mar:3,april:4,apr:4,may:5,june:6,jun:6,july:7,jul:7,august:8,aug:8,september:9,sep:9,sept:9,october:10,oct:10,november:11,nov:11,december:12,dec:12};function gr(r){return r===void 0||r.type!=="IDENT"&&r.type!=="UNIT"?0:Hr[(r.text??r.value??"").toLowerCase()]??0}var he=/^\d+$/;function Re(r){return r.length===4}function te(r,e,t,n,i,s){let o="datetime:month-name-date",c=chunkWQGHJAW2_cjs.q(r,e,t,n,o,i);return c!==null?c:s==="arithmetic"||e<1||e>12||r<1||r>31?null:chunkWQGHJAW2_cjs.s(chunkWQGHJAW2_cjs.g.DATE_NOT_A_CALENDAR_DAY,`"${chunkWQGHJAW2_cjs.r(n)}" is not a real date: ${chunkWQGHJAW2_cjs.j(r,e,t)}.`,n,`${o}:unreadable`)}function hr(r){return r.fields(r.now()).year}function mr(r=64,e=()=>chunkA764BY7L_cjs.b,t=()=>"refuse"){return {name:"datetime:month-name-date",priority:r,startTokenTypes:["NUMBER","IDENT","UNIT"],match(n,i){let s=e(),o=t(),c=n[i];if(c?.type==="NUMBER"&&he.test(c.text??"")){let m=gr(n[i+1]);if(m===0)return null;let f=Number(c.text);if(f<1||f>31)return null;let T=n[i+2];return T?.type==="NUMBER"&&he.test(T.text??"")&&Re(T.text??"")?te(f,m,Number(T.text),n.slice(i,i+3),s,o):te(f,m,hr(s),n.slice(i,i+2),s,o)}let l=gr(c);if(l===0)return null;let a=n[i+1];if(a?.type!=="NUMBER"||!he.test(a.text??""))return null;if(Re(a.text??""))return te(1,l,Number(a.text),n.slice(i,i+2),s,o);let u=Number(a.text),p=n[i+2],d=n[i+3];return p?.type==="COMMA"&&d?.type==="NUMBER"&&he.test(d.text??"")&&Re(d.text??"")?te(u,l,Number(d.text),n.slice(i,i+4),s,o):p?.type==="NUMBER"&&he.test(p.text??"")&&Re(p.text??"")?te(u,l,Number(p.text),n.slice(i,i+3),s,o):te(u,l,hr(s),n.slice(i,i+2),s,o)}}}var Wr=30,Kr=40,Gr=50,qr=24;function Qr(r){switch(r){case chunkYBQOQTVL_cjs.a.PLUS:case chunkYBQOQTVL_cjs.a.MINUS:return Wr;case chunkYBQOQTVL_cjs.a.STAR:case chunkYBQOQTVL_cjs.a.SLASH:case chunkYBQOQTVL_cjs.a.MOD:case chunkYBQOQTVL_cjs.a.OF:return Kr;case chunkYBQOQTVL_cjs.a.CARET:return Gr;case chunkYBQOQTVL_cjs.a.PCT_ON:case chunkYBQOQTVL_cjs.a.PCT_OFF:return qr;default:return 0}}function Xr(r){switch(r){case chunkYBQOQTVL_cjs.a.PLUS:return "plus";case chunkYBQOQTVL_cjs.a.MINUS:return "minus";case chunkYBQOQTVL_cjs.a.STAR:return "times";case chunkYBQOQTVL_cjs.a.SLASH:return "divided by";case chunkYBQOQTVL_cjs.a.MOD:return "mod";case chunkYBQOQTVL_cjs.a.CARET:return "to the power of";case chunkYBQOQTVL_cjs.a.OF:return "of";case chunkYBQOQTVL_cjs.a.PCT_ON:return "plus";case chunkYBQOQTVL_cjs.a.PCT_OFF:return "less";default:return r.toLowerCase()}}function yr(r){return r.sourceEnd??r.offset+r.value.length}var Yr=new Set([chunkYBQOQTVL_cjs.a.NUMBER,chunkYBQOQTVL_cjs.a.BIGINT,chunkYBQOQTVL_cjs.a.IDENT,chunkYBQOQTVL_cjs.a.UNIT,chunkYBQOQTVL_cjs.a.PERCENT,chunkYBQOQTVL_cjs.a.PI,chunkYBQOQTVL_cjs.a.E,chunkYBQOQTVL_cjs.a.TRUE,chunkYBQOQTVL_cjs.a.FALSE,chunkYBQOQTVL_cjs.a.DOLLAR,chunkYBQOQTVL_cjs.a.POUND,chunkYBQOQTVL_cjs.a.EURO,chunkYBQOQTVL_cjs.a.YEN,chunkYBQOQTVL_cjs.a.RUBLE,chunkYBQOQTVL_cjs.a.WON,chunkYBQOQTVL_cjs.a.CURRENCY_SYMBOL]);function Jr(r){return !Yr.has(r)}var qe=class{constructor(e){this.tokens=e;this.pos=0;}peek(){return this.tokens[this.pos]}next(){return this.tokens[this.pos++]}parseAll(){let e=this.parseExpression(0);if(this.pos!==this.tokens.length)throw new Error("explain: unconsumed tokens");return e}parseExpression(e){let t=this.parseOperand();for(;;){let n=this.peek();if(!n)break;let i=Qr(n.type);if(i===0||i<=e)break;this.next();let s=n.type===chunkYBQOQTVL_cjs.a.CARET?i-1:i,o=this.parseExpression(s);t={kind:"binary",op:n.type,left:t,right:o,start:t.start,end:o.end};}return t}parseOperand(){let e=this.peek();if(!e)throw new Error("explain: expected an operand");if(e.type===chunkYBQOQTVL_cjs.a.LPAREN)return this.parseGroup();let t=e.offset,n=false;for(;this.peek()&&(this.peek().type===chunkYBQOQTVL_cjs.a.PLUS||this.peek().type===chunkYBQOQTVL_cjs.a.MINUS);)this.next(),n=true;if(n&&this.peek()&&this.peek().type===chunkYBQOQTVL_cjs.a.LPAREN){let s=this.parseGroup();return {kind:"wrap",child:s,start:t,end:s.end}}let i=-1;for(;this.peek()&&!Jr(this.peek().type);)i=yr(this.next());if(i===-1)throw new Error("explain: expected an operand");return {kind:"leaf",start:t,end:i}}parseGroup(){let e=this.next(),t=this.parseExpression(0),n=this.peek();if(!n||n.type!==chunkYBQOQTVL_cjs.a.RPAREN)throw new Error("explain: unbalanced parentheses");return this.next(),{kind:"wrap",child:t,start:e.offset,end:yr(n)}}},Qe=class{constructor(e,t,n){this.source=e;this.evaluate=t;this.steps=[];this.cache=new Map;this.resultPrefix=chunkS3DFU33X_cjs.a(n).display.resultPrefix;}build(e){return this.emit(e),{steps:this.steps,result:this.valueOf(e)}}emit(e){if(e.kind!=="leaf"){if(e.kind==="wrap"){this.emit(e.child);return}this.emit(e.left),this.emit(e.right),this.steps.push({description:this.describe(e),value:this.valueOf(e)});}}describe(e){let t=Xr(e.op);return e.op===chunkYBQOQTVL_cjs.a.PCT_ON||e.op===chunkYBQOQTVL_cjs.a.PCT_OFF?`${this.operand(e.right)} ${t} ${this.operand(e.left)}`:`${this.operand(e.left)} ${t} ${this.operand(e.right)}`}operand(e){return e.kind==="leaf"?this.source.slice(e.start,e.end).trim():this.render(this.valueOf(e))}valueOf(e){let t=this.cache.get(e);if(t)return t;let n=this.evaluate(this.source.slice(e.start,e.end));return this.cache.set(e,n),n}render(e){let t=chunkP43SV4NJ_cjs.c(e,chunkP43SV4NJ_cjs.a);return t.startsWith(this.resultPrefix)?t.slice(this.resultPrefix.length):t}};function Xe(r){let{expression:e,tokens:t,evaluate:n,locale:i,readings:s=[]}=r,o=a=>s.filter(u=>u.needsNote).map(u=>({description:u.note,value:a})),c=()=>{let a=n(e);return {expression:e,steps:o(a),result:a}},l;try{l=new qe(t).parseAll();}catch{return c()}try{let{steps:a,result:u}=new Qe(e,n,i).build(l);return {expression:e,steps:[...o(u),...a],result:u}}catch{return c()}}var X=class X{constructor(e={}){this.dag=new chunkGWV273KZ_cjs.a;this.lineCache=new Ce;this.accumulatorNames=new Set;this.scopeManager=new chunkGWV273KZ_cjs.b;this.resolverRegistry=new chunkZVPZQ66D_cjs.a;this.packageContributions=new Map;this.registeredPackages=new Map;this.callFusions=new Map;this.callFusionOwners=new Map;this.compatIndex=new xe;this.documentModel=null;this.goalSeekDepth=0;this.batchScanResults=null;this.batchParsedLines=null;this.packageCompletionItems=new Map;this.keystrokeSignal=null;this.backgroundRefreshSignal=new AbortController().signal;this.userUnits=new Ne;this.bytecodeCache=new Map;this.compiledFrontHalf=new Map;this.failedParses=new Map;this.pluginFunctionIndexByName=new Map;this.builderPool=[new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName),new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName),new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName),new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName)];this.builderPoolIndex=0;this.lastTelemetry=null;let{locale:t="en",diagnostics:n=false,config:i,packages:s,calendar:o}=e;this.localeCode=t,this.config=chunkRHRAONDK_cjs.c(chunkRHRAONDK_cjs.b,i??{}),this.dateReading=chunkWQGHJAW2_cjs.h(this.config.date),this.lexer=new chunkAGCNMEP2_cjs.b(t),this.registry=new chunkQ7TBBV62_cjs.b,this.context=chunkRAFOQ4T5_cjs.x({networkEnabled:this.config.network.enabled,calendar:o}),n?(this.diagnosticPipeline=new chunkHG4NPDN5_cjs.a,this.timelineCollector=new chunkHG4NPDN5_cjs.b,this.diagnosticPipeline.register(this.timelineCollector)):this.diagnosticPipeline=new chunkHG4NPDN5_cjs.a,this.normalizer=new chunk4DR5RBHQ_cjs.c;for(let[l,a]of Object.entries(chunkWU7SBKVU_cjs.c))this.normalizer.addPhrase(l,a);this.normalizer.register(chunk4DR5RBHQ_cjs.d(50,l=>this.normalizer.canStartPhrase(l))),this.normalizer.register(pr(this.userUnits)),this.normalizer.register(dr(this.callFusions));let c=s??[];for(let l of c)try{this.registerPackage(l);}catch(a){let u=chunkSUAGBRQ7_cjs.d(a);console.error(`[ExpressionEngine] Failed to register package "${l.name}" \u2014 skipping it and continuing construction with the remaining packages: ${u.format()}`);}if(this.registry.hasPrefix("DATETIME_LITERAL")&&this.registry.hasPrefix("DATETIME_LITERAL_UNREADABLE")){let l=()=>this.context.calendar;this.normalizer.register(chunkWQGHJAW2_cjs.t(()=>this.dateReading.order,l,()=>this.config.date.onAmbiguous)),this.normalizer.register(mr(void 0,l,()=>this.config.date.onAmbiguous));}this.parser=new chunkQ7TBBV62_cjs.a(this.registry,this.config.validation.maxNestingDepth,t,this.pluginFunctionIndexByName,this.context.calendar),this.vm=chunkGWV273KZ_cjs.c(this.context.opRegistry,this.config.vm.maxStackDepth,this.config.vm.maxInstructions,void 0,this.config.vm.maxCollectionSize,this.config.vm.maxAllocatedElements,this.config.vm.maxFunctionCalls,this.config.date.maxOffsetYears,this.config.date.minOffsetYears,this.context,lr(this.config.date.holidays,this.context.calendar)),this.queryClient=chunkZLRJ7TDP_cjs.c(),this.batcher=new Pe(this.dag,this.lineCache,this.vm),this.backgroundRefresh=this.config.backgroundRefresh.enabled?new Te(this.dag,(l,a)=>this.batcher.add({queryKey:a,packageId:l,signal:this.backgroundRefreshSignal,isError:false})):null,e.warmup===true&&this.warmUp();}setDocumentModel(e){this.documentModel=e;}getDocumentModel(){return this.documentModel}warmUp(){let e=new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName);for(let t of X.WARMUP_EXPRESSIONS)try{this.lexer.resetExpression(t);let n=[];for(let o of this.lexer)o.type!=="COMMENT"&&n.push(o);let i=this.normalizer.normalize(n);e.reset(),this.parser.load(i),this.parser.parseExpression(0,e);let s=e.build();this.vm.reset(),chunkGWV273KZ_cjs.d(s,this.vm);}catch{}this.vm.reset();}makeLineContext(e){let t=this.documentModel,n=t?null:this.batchScanResults,i=t?null:this.batchParsedLines;return {lineIndex:e,getLineResult:t?s=>t.getLineAt(s)?.result??void 0:i?s=>i[s-1]?.result??void 0:void 0,isLineBoundary:t?s=>{let o=t.getLineAt(s);return o?o.isEmpty||/^\s*#/.test(o.text):true}:n?s=>{let o=n[s-1];return o?o.classification.skip||/^\s*#/.test(o.text):true}:void 0,getLineReads:t?s=>{let o=t.getLineAt(s);if(!(!o||o.bytecodes.length===0))return o.reads}:void 0,evaluateLineWithBinding:t?(s,o,c,l)=>this.evaluateLineWithBinding(s,o,c,l):void 0,goalSeekMaxIterations:this.config.vm.maxGoalSeekIterations,networkEnabled:this.config.network.enabled,calendar:this.context.calendar,getLineText:t?s=>t.getLineAt(s)?.text:n?s=>n[s-1]?.text:void 0}}evaluateLineWithBinding(e,t,n,i){let s=this.documentModel;if(!s)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_NO_DOCUMENT","Goal seek needs a document to solve against, which the single-expression entry point does not have.");if(this.goalSeekDepth>=X.GOAL_SEEK_MAX_NESTING_DEPTH)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_NESTED","A goal-seek line cannot target another goal-seek line, since each already re-runs its target many times.");let o=s.getLineAt(e);if(!o||o.bytecodes.length===0)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_LINE_NOT_READY",`Line ${e} has no evaluated expression to solve (forward reference, out of range, or not an expression).`);if(o.isVariableDef)return chunkOM7NOHJF_cjs.P("GOAL_SEEK_TARGET_IS_DEFINITION",`Line ${e} defines a variable, so re-running it would overwrite that variable. Target the line that uses ${t}, not the one that sets a value.`);let c=o.bytecodes[0];this.goalSeekDepth++;try{let l=new Map([[t,n]]),a=this.vm.getStack().length;this.vm.pushCallFrame(l);try{let u=chunkGWV273KZ_cjs.d(c,this.vm,void 0,void 0,this.makeLineContext(e),i);return u.type==="pending"?chunkOM7NOHJF_cjs.P("GOAL_SEEK_ASYNC_UNSUPPORTED",`Line ${e} depends on an async value (weather, stocks, currency, ...), which goal seek cannot re-run.`):u.type==="error"?chunkOM7NOHJF_cjs.P(u.error.code??"GOAL_SEEK_TARGET_ERROR",u.error.message):u.value}finally{for(this.vm.popCallFrame();this.vm.getStack().length>a;)this.vm.pop();}}catch(l){return chunkOM7NOHJF_cjs.P("GOAL_SEEK_TARGET_ERROR",chunkSUAGBRQ7_cjs.d(l).message)}finally{this.goalSeekDepth--;}}frontHalfCached(e){return this.compiledFrontHalf.has(e)&&this.bytecodeCache.has(e)||this.failedParses.has(e)}clearCompiledCache(){this.bytecodeCache.clear(),this.compiledFrontHalf.clear(),this.failedParses.clear();}cacheBytecode(e,t,n){let i=this.config.performance.defaultCacheSize;if(this.bytecodeCache.size>=i){let s=this.bytecodeCache.keys().next().value;s!==void 0&&(this.bytecodeCache.delete(s),this.compiledFrontHalf.delete(s));}this.bytecodeCache.set(e,t),this.compiledFrontHalf.set(e,n);}rememberFailedParse(e,t){if(this.failedParses.size>=this.config.performance.defaultCacheSize){let n=this.failedParses.keys().next().value;n!==void 0&&this.failedParses.delete(n);}this.failedParses.set(e,t);}getEventStream(){return this.batcher.getEventStream()}getBatcher(){return this.batcher}registerPackage(e){Zt(e),this.packageContributions.has(e.name)&&(console.warn(`[ExpressionEngine] Package "${e.name}" is already registered. Unregistering the previous registration before re-registering.`),this.unregisterPackage(e.name));let t=this.compatIndex.check(e);for(let i of t)(i.severity==="error"?console.error:console.warn)(`[ExpressionEngine] Package compatibility ${i.severity} (${i.kind}): ${i.detail}`);let n={pluginFunctionIndices:[],pluginFunctionNames:[],resolverNamespaces:[],tokenCategories:[],lexerVocabulary:e.lexerVocabulary,asConverterNames:[],normalizerRuleNames:[],callFusionNames:[]};if(e.lexerVocabulary&&this.lexer.registerVocabulary(e.lexerVocabulary),e.prefixParselets)for(let[i,s]of Object.entries(e.prefixParselets))this.registry.registerPrefix(i,s);if(e.infixParselets)for(let[i,s]of Object.entries(e.infixParselets))this.registry.registerInfix(i,s);if(e.pluginFunctions)for(let[i,s]of Object.entries(e.pluginFunctions)){let o=chunkRAFOQ4T5_cjs.F(`${e.name}:${i}`);this.context.pluginFunctions[o]=s,this.context.pluginFunctionOwners[o]=e.name,this.pluginFunctionIndexByName.set(i,o),n.pluginFunctionIndices.push(o),n.pluginFunctionNames.push(i);}if(e.asyncResolvers)for(let i of e.asyncResolvers)this.resolverRegistry.register(i),n.resolverNamespaces.push(i.namespace);if(e.phrases)for(let[i,s]of Object.entries(e.phrases))this.normalizer.addPhrase(i,s);if(e.normalizerRules)for(let i of e.normalizerRules)this.normalizer.register(i),n.normalizerRuleNames.push(i.name);if(e.callFusions)for(let[i,s]of Object.entries(e.callFusions)){let o=i.toLowerCase(),c=this.callFusionOwners.get(o);c?c.push({pkg:e.name,tokenType:s}):this.callFusionOwners.set(o,[{pkg:e.name,tokenType:s}]),this.callFusions.set(o,s),n.callFusionNames.push(o);}if(e.tokenCategories)for(let[i,s]of Object.entries(e.tokenCategories))chunkY7O4D3BJ_cjs.b(i,s),n.tokenCategories.push(i);if(e.completionItems&&this.packageCompletionItems.set(e.name,e.completionItems),e.asConverters)for(let[i,s]of Object.entries(e.asConverters))chunkRAFOQ4T5_cjs.H(i,s),n.asConverterNames.push(i);this.packageContributions.set(e.name,n),this.registeredPackages.set(e.name,e),this.compatIndex.add(e),this.clearCompiledCache();}unregisterPackage(e){let t=this.packageContributions.get(e);if(!t)return false;for(let n of t.pluginFunctionIndices)delete this.context.pluginFunctions[n],delete this.context.pluginFunctionOwners[n];for(let n of t.pluginFunctionNames)this.pluginFunctionIndexByName.delete(n);for(let n of t.resolverNamespaces)this.resolverRegistry.unregister(n);for(let n of t.tokenCategories)chunkY7O4D3BJ_cjs.c(n);t.lexerVocabulary&&this.lexer.unregisterVocabulary(t.lexerVocabulary);for(let n of t.asConverterNames)chunkRAFOQ4T5_cjs.I(n);for(let n of t.normalizerRuleNames)this.normalizer.unregister(n);for(let n of t.callFusionNames){let i=(this.callFusionOwners.get(n)??[]).filter(s=>s.pkg!==e);i.length===0?(this.callFusionOwners.delete(n),this.callFusions.delete(n)):(this.callFusionOwners.set(n,i),this.callFusions.set(n,i[i.length-1].tokenType));}return this.packageCompletionItems.delete(e),this.packageContributions.delete(e),this.registeredPackages.delete(e),this.compatIndex.rebuild(this.registeredPackages.values()),this.clearCompiledCache(),true}getConfig(){return {...this.config}}getDateReading(){return this.dateReading}readDates(e){let{tokens:t}=this.lexToTokens(e,void 0,false),n=this.normalizer.normalize(t.filter(s=>s.type!=="COMMENT")),i=[];for(let s of n){let o=s.type===chunkWQGHJAW2_cjs.p;if(!o&&s.type!==chunkWQGHJAW2_cjs.o)continue;let c=s.offset,l=s.sourceEnd??s.offset+s.text.length;i.push(this.describeDateLiteral(e.slice(c,l),c,l,s,o));}return i}describeDateLiteral(e,t,n,i,s){let o=chunkWQGHJAW2_cjs.n(e);if(o!==null){let a=chunkWQGHJAW2_cjs.l(o,this.dateReading.order,this.config.date.onAmbiguous,this.context.calendar),u=chunkWQGHJAW2_cjs.i(o.groups[0],o.groups[1],o.groups[2],o.separator)==="iso",p=this.dateReading.order==="auto"?o.separator==="hyphen"?"MDY":"DMY":this.dateReading.order,d=u?{order:"ISO",orderSource:"iso",locale:void 0}:{order:p,orderSource:this.dateReading.orderSource,locale:this.dateReading.locale};return a.kind==="date"?chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:chunkWQGHJAW2_cjs.k(a.day,a.month,a.year),...d,contested:a.alternative!==void 0,shortYear:a.shortYear,alternative:a.alternative},o.separator):chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:null,...d,contested:false,shortYear:false,problem:a.kind==="refuse"?a.code:void 0},o.separator,a.kind==="refuse"?a.message:void 0)}if(s){let a=i.fault??{code:"DATE_NOT_A_CALENDAR_DAY",message:`"${i.value}" is not a date this engine can read.`};return chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:null,order:null,orderSource:"spelled",contested:false,shortYear:false,problem:a.code},"slash",a.message)}let c=this.context.calendar.fields(Number(i.value)),l=/^\d{4}-/.test(e)?"iso":"spelled";return chunkWQGHJAW2_cjs.m({text:e,start:t,end:n,iso:chunkWQGHJAW2_cjs.k(c.day,c.month0+1,c.year),order:l==="iso"?"ISO":"spelled",orderSource:l,contested:false,shortYear:false},"slash")}getDiagnosticPipeline(){return this.diagnosticPipeline}storeLineResult(e,t,n,i,s,o){this.lineCache.set(e,new K(t,n,i,s.length>0?s[0]:null),o);}executeAndStore(e,t,n,i,s,o,c,l){let a=this.vm.getStack().length,u=new AbortController,p=()=>u.abort();this.keystrokeSignal?.addEventListener("abort",p,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("executeAndStore"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("executeAndStore"),this.vm.activeSignal=u.signal,this.vm.abortCurrent=()=>{chunkTTFO4YDP_cjs.a.signalUnlinked("executeAndStore"),this.keystrokeSignal?.removeEventListener("abort",p),u.abort();},chunkZLRJ7TDP_cjs.a(this.queryClient);let d=chunkGWV273KZ_cjs.d(e,this.vm,c,l,this.makeLineContext(t));for(;this.vm.getStack().length>a;)this.vm.pop();if(d.type==="pending"){this.resolveAsync(d),this.dag.registerLineDataSourceDependency(t,d.packageId||o,[d.queryKey]);let m=chunkOM7NOHJF_cjs.O(d.queryKey);return this.storeLineResult(t,m,e,i,s,n),m}if(d.type==="error")throw this.keystrokeSignal?.removeEventListener("abort",p),d.error;return this.keystrokeSignal?.removeEventListener("abort",p),this.dag.registerLine(t,i,s),this.storeLineResult(t,d.value,e,i,s,n),d.value}executeRaw(e,t=-1){let n=this.vm.getStack().length,i=new AbortController,s=()=>i.abort();this.keystrokeSignal?.addEventListener("abort",s,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("executeRaw"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("executeRaw"),this.vm.activeSignal=i.signal,this.vm.abortCurrent=()=>{chunkTTFO4YDP_cjs.a.signalUnlinked("executeRaw"),this.keystrokeSignal?.removeEventListener("abort",s),i.abort();},chunkZLRJ7TDP_cjs.a(this.queryClient);let o=chunkGWV273KZ_cjs.d(e,this.vm,void 0,void 0,this.makeLineContext(t));for(;this.vm.getStack().length>n;)this.vm.pop();return o.type!=="pending"&&this.keystrokeSignal?.removeEventListener("abort",s),o}async resolveAsync(e){let{queryKey:t,resolver:n,packageId:i,signal:s}=e,o=i||"_engine";try{if(await n,s.aborted){chunkTTFO4YDP_cjs.a.staleDataDiscarded(t,"signal aborted after resolve");return}this.batcher.add({queryKey:t,packageId:o,signal:s,isError:!1});}catch(c){if(s.aborted){chunkTTFO4YDP_cjs.a.staleDataDiscarded(t,"signal aborted after error");return}let l=c instanceof Error?c:new Error(String(c));this.batcher.add({queryKey:t,packageId:o,signal:s,isError:true,error:l});}}registerBackgroundRefresh(e){this.backgroundRefresh&&(e.refetchIntervalMs===void 0||!e.refetch||this.backgroundRefresh.register({packageId:e.packageId||"_engine",queryKey:e.queryKey,intervalMs:e.refetchIntervalMs,refetch:e.refetch}));}getBackgroundRefreshCount(){return this.backgroundRefresh?.size??0}parseDocument(e,t={inputType:"markdown"}){let n=this.config.performance.maxDocumentLines;if(chunkUURM7P3P_cjs.b(e,n)>n)throw chunkSUAGBRQ7_cjs.c.execution("DOCUMENT_TOO_LARGE",`This document has more than ${n.toLocaleString("en-US")} lines, which is the most the engine will process in one pass`,{maxLines:n});this.userUnits.isEmpty||this.clearCompiledCache(),this.userUnits.clear(),this.resetAccumulators();let i=this.lexer.scanDocument(e),s=this.processScanResults(i),o={lines:s,totalLines:s.length,errors:[]};for(let l of s){l.error&&o.errors.push(`Line ${l.lineNumber}: ${l.error}`);for(let a of l.inlineSolves)a.error&&o.errors.push(`Line ${l.lineNumber}: ${a.error}`);}if(t.includeDiagnostics??false){let l=this.diagnosticPipeline.collectReports();l.length>0&&(o.diagnostics=l[0].toJSON());}return o}evaluateLines(e){this.userUnits.isEmpty||this.clearCompiledCache(),this.userUnits.clear(),this.resetAccumulators();let t=e.join(`
|
|
4
|
+
`),n=this.lexer.scanDocument(t);return this.processScanResults(n)}processScanResults(e){let t=[],n=this.batchScanResults,i=this.batchParsedLines;this.batchScanResults=e,this.batchParsedLines=t;try{for(let s of e){let o=s.text,c=s.lineNumber,l=s.startOffset,a=s.endOffset,u=s.classification.skip,p=s.inlineSolves.map(f=>({start:f.start,end:f.end,expression:f.expression,lineNumber:c,columnNumber:f.columnNumber})),d=p.length>0,m={lineNumber:c,text:o,startPosition:l,endPosition:a,isEmpty:u,hasInlineSolves:d,inlineSolves:p,expression:null,result:null,error:null};if(s.error)m.error=s.error.message;else if(!u){let f=o.trim().startsWith(":");if(d&&!f)for(let T of p)try{T.result=this.evaluateLine(c,T.expression);}catch(v){let R=v instanceof Error?v.message:String(v);T.error=R;}else {let T=s.classification.contentOffset,R=(T===void 0?o:o.slice(T-l)).trim();if(R)try{let O=this.evaluateLineWithPreTokenized(c,R,s.tokens);m.expression=R,m.result=O[0];}catch(O){let G=O instanceof Error?O.message:String(O);m.error=G;}}}t.push(m);}}finally{this.batchScanResults=n,this.batchParsedLines=i;}return t}evaluateLineWithPreTokenized(e,t,n){let i=[],s=false;for(let o of n)(o.type==="LPAREN"||o.type==="RPAREN")&&(s=true),i.push(o);return [this.evaluateWithTokens(e,t,i,s)]}parseExpression(e,t,n,i=true){this.parser.setBuilder(e),this.parser.load(t,this.config.validation.autoBalanceParens?n:false),this.parser.parseExpression(0);let s=this.parser.peek();if(s){if(s.type==="EQUALS"&&!this.parser.peekAt(1))return;for(let o=i?t.length-1:0;o>=1;o--){if(t[o].type!=="COLON"||o+1>=t.length)continue;let c=true;for(let l=0;l<o;l++){let a=t[l].type;if(a!=="NUMBER"&&a!=="COLON"){c=false;break}}if(c){let l=t.slice(0,o+2).map(a=>a.value).join("");throw chunkSUAGBRQ7_cjs.c.parsing("INVALID_TIME_LITERAL",`"${l}" is not a valid time`,{tokenType:t[o].type,tokenValue:l})}e.reset();try{this.parseExpression(e,t.slice(o+1),n,!1);return}catch{}}throw chunkSUAGBRQ7_cjs.c.parsing({code:"UNEXPECTED_TRAILING_TOKEN",message:`Unexpected token after expression: "${s.value}"`,context:{tokenType:s.type,tokenValue:s.value},span:{start:s.offset,end:s.sourceEnd??s.offset+s.text.length,line:s.line,col:s.col}})}}compileAdHoc(e){let t=new chunk5AKT36UK_cjs.d(this.pluginFunctionIndexByName);return this.parseExpression(t,e),t.build()}executeSymbolicTolerant(e,t=-1){let n=chunkGWV273KZ_cjs.d(e,this.vm,void 0,void 0,this.makeLineContext(t),true);if(n.type==="error")throw n.error;if(n.type==="pending")throw chunkSUAGBRQ7_cjs.c.execution("THEREFORE_ASYNC_UNSUPPORTED",`"=>" doesn't support expressions that call an async operation (weather/stocks/currency).`);return n.value}simplifySymbolically(e,t=-1){return this.executeSymbolicTolerant(this.compileAdHoc(e),t)}parseFactorChain(e){if(e.length===0||e.length%2===0)return null;let t=[];for(let n=0;n<e.length;n++)if(n%2===0){if(e[n].type!=="IDENT"&&e[n].type!=="UNIT")return null;t.push(e[n].value);}else if(e[n].type!=="STAR")return null;return t}solveEquation(e,t=-1){let n=[];for(let c of e.factorNames){let l=this.vm.getVar(c);if(l===void 0)return chunkOM7NOHJF_cjs.P("EQUATION_FACTOR_UNDEFINED",`Cannot solve for "${e.variable}": "${c}" is not yet defined.`);if(l.type!==7)return chunkOM7NOHJF_cjs.P("EQUATION_FACTOR_NOT_MATRIX",`Cannot solve for "${e.variable}": "${c}" must be a Matrix (got a different value type).`);n.push(l);}let i=n[0].value;for(let c=1;c<n.length;c++){let l=chunkYWF6C2IO_cjs._(i,n[c].value);if(l.type===13)return l;i=l.value;}let s=chunkYWF6C2IO_cjs.da(i);if(s.type===13)return s;let o=this.executeSymbolicTolerant(e.rhsProgram,t);return o.type!==7?chunkOM7NOHJF_cjs.P("EQUATION_RHS_NOT_MATRIX",`Cannot solve for "${e.variable}": the right-hand side must be a Matrix.`):chunkYWF6C2IO_cjs._(s.value,o.value)}tryDefineUserUnit(e){if(e.length<5||e[0].type!=="NUMBER"||Number(e[0].value)!==1)return null;let t=1;e[t].type==="STAR"&&t++;let n=[];for(;t<e.length&&e[t].type==="IDENT";)n.push(e[t].value),t++;if(n.length===0||e[t]?.type!=="EQUALS"||(t++,e[t]?.type!=="NUMBER"))return null;let i=e[t];if(t++,e[t]?.type!=="UNIT")return null;let s=e[t];return t++,t!==e.length?null:(this.userUnits.define(n,i.value,s.value),this.clearCompiledCache(),chunkOM7NOHJF_cjs.t(`${n.join(" ")} defined`))}tryCompoundAssignment(e,t=-1){if(e.length<2)return null;let n=e[0],i=e[1],s=n.type==="IDENT"||n.type==="UNIT",o=i.type==="PLUS_EQUALS"||i.type==="MINUS_EQUALS";if(!s||!o)return null;let c=e.slice(2);if(c.length===0)throw chunkSUAGBRQ7_cjs.c.parsing("COMPOUND_ASSIGN_REQUIRES_EXPRESSION",`"${n.value} ${i.value}" needs an expression on the right, e.g. "${n.value} ${i.value} 10".`);let l=n.value;this.accumulatorNames.add(l),this.vm.getVar(l)===void 0&&this.vm.setVar(l,chunkOM7NOHJF_cjs.n(0));let a=i.type==="PLUS_EQUALS"?{type:"PLUS",text:"+"}:{type:"MINUS",text:"-"},u=[chunk4DR5RBHQ_cjs.b("IDENT",l,[n]),chunk4DR5RBHQ_cjs.b(a.type,a.text,[i]),chunk4DR5RBHQ_cjs.b("LPAREN","(",[i]),...c,chunk4DR5RBHQ_cjs.b("RPAREN",")",[i])],p=chunkGWV273KZ_cjs.d(this.compileAdHoc(u),this.vm,void 0,void 0,this.makeLineContext(t),false);if(p.type==="error")throw p.error;if(p.type==="pending")throw chunkSUAGBRQ7_cjs.c.execution("COMPOUND_ASSIGN_ASYNC_UNSUPPORTED","A running total (+= / -=) cannot use an async operation (weather/stocks/currency) on its right-hand side.");return this.vm.setVar(l,p.value),p.value}resetAccumulators(){for(let e of this.accumulatorNames)this.vm.deleteVar(e);return this.accumulatorNames}trySymbolicGrammar(e,t=-1){if(e.length===0)return null;if(e[e.length-1].type==="THEREFORE"){let a=e.slice(0,-1);if(a.length===0)throw chunkSUAGBRQ7_cjs.c.parsing("THEREFORE_REQUIRES_EXPRESSION",'"=>" needs an expression or variable name before it.');if(a.length===1&&(a[0].type==="IDENT"||a[0].type==="UNIT")){let u=a[0].value,p=this.vm.getEquation(u),d=this.vm.getScalarEquation(u);if(p){let m=this.solveEquation(p,t);if(!(m.type===13&&m.value==="EQUATION_FACTOR_NOT_MATRIX")||!d)return m}if(d)return this.solveScalarEquation(d,t)}return this.simplifySymbolically(a,t)}if(chunkWQGHJAW2_cjs.b(e))return this.simplifySymbolically(e,t);if(e[0].type==="COLON"||e[0].type==="GLOBAL"||e[0].type==="GOAL_SEEK")return null;let i=e.findIndex(a=>a.type==="EQUALS");if(i===-1)return null;let s=this.parseFactorChain(e.slice(0,i));if(s===null)return this.tryStoreScalarEquation(e,i);let o=e.slice(i+1);if(s.length===1){let a=this.simplifySymbolically(o,t);return this.vm.setVar(s[0],a),a}let c=s[s.length-1],l=s.slice(0,-1);return this.vm.defineEquation(c,l,this.compileAdHoc(o)),this.vm.defineScalarEquation(c,this.compileAdHoc(e.slice(0,i)),this.compileAdHoc(o)),chunkOM7NOHJF_cjs.t(`${c} stored as an equation \u2014 solve with "${c} =>"`)}tryStoreScalarEquation(e,t){if(e[1]?.type==="LPAREN"||t===0||t===e.length-1)return null;let n=e.slice(0,t),i=e.slice(t+1);if(i.some(c=>c.type==="EQUALS"))return null;let s=this.equationUnknowns(n,i);if(s.length!==1)return null;let o=s[0];return this.vm.defineScalarEquation(o,this.compileAdHoc(n),this.compileAdHoc(i)),chunkOM7NOHJF_cjs.t(`${o} stored as an equation \u2014 solve with "${o} =>"`)}equationUnknowns(e,t){let n=[];for(let i of [...e,...t])i.type!=="IDENT"&&i.type!=="UNIT"||this.vm.getVar(i.value)===void 0&&(this.vm.hasUserFunction(i.value)||n.includes(i.value)||n.push(i.value));return n}solveScalarEquation(e,t=-1){let n=this.executeSymbolicTolerant(e.lhsProgram,t),i=this.executeSymbolicTolerant(e.rhsProgram,t);return chunkRAFOQ4T5_cjs.i(n,i,e.variable)}lexToTokens(e,t,n=true){let i=[],s=false;if(n&&!t&&this.frontHalfCached(e))return {tokens:i,hasParens:s,compiled:true};this.lexer.resetExpression(e);for(let o of this.lexer)o.type!=="COMMENT"&&((o.type==="LPAREN"||o.type==="RPAREN")&&(s=true),i.push(o),t?.(o));return {tokens:i,hasParens:s,compiled:false}}prepareExpression(e,t,n,i,s=-1){let o=this.bytecodeCache.get(e);if(o&&!i){let v=this.compiledFrontHalf.get(e);if(v)return {kind:"ready",normalizedTokens:v.normalizedTokens,reads:v.reads,writes:v.writes,program:o,cached:true}}let c=i?void 0:this.failedParses.get(e),l;if(c)l=c.normalizedTokens;else {let v=Ke(e,this.config.validation);if(!v.passed)return {kind:"error",stage:"length",error:v.error.engineError};let R=t.filter(G=>G.type!=="COMMENT");if(R.length===0)return {kind:"empty"};l=this.normalizer.normalize(R,i);let O=Ge(l,this.config.validation);if(!O.passed)return {kind:"error",stage:"complexity",error:O.engineError,normalizedTokens:l}}let a,u=null;try{if(a=this.tryDefineUserUnit(l),a===null){let v=this.tryCompoundAssignment(l,s);v!==null&&(a=v,u=we(l));}a===null&&(a=this.trySymbolicGrammar(l,s));}catch(v){let{reads:R,writes:O}=we(l);return {kind:"error",stage:"parse",error:chunkSUAGBRQ7_cjs.d(v),reads:R,writes:O,normalizedTokens:l}}if(a!==null)return {kind:"symbolic-solve",normalizedTokens:l,value:a,reads:u?.reads,writes:u?.writes};if(c)return {kind:"error",stage:"parse",error:c.error,reads:c.reads,writes:c.writes,normalizedTokens:l};let{reads:p,writes:d}=we(l);if(o)return this.compiledFrontHalf.set(e,{normalizedTokens:l,reads:p,writes:d}),{kind:"ready",normalizedTokens:l,reads:p,writes:d,program:o,cached:true};let m=this.builderPool[this.builderPoolIndex++%this.builderPool.length];m.reset();let f,T=null;try{let v=_.track("parser",()=>(this.parseExpression(m,l,n),m.build()));f=v.result,T=v.alloc;}catch(v){let R=chunkSUAGBRQ7_cjs.d(v);return this.rememberFailedParse(e,{error:R,normalizedTokens:l,reads:p,writes:d}),{kind:"error",stage:"parse",error:R,reads:p,writes:d,normalizedTokens:l}}return this.cacheBytecode(e,f,{normalizedTokens:l,reads:p,writes:d}),{kind:"ready",normalizedTokens:l,reads:p,writes:d,program:f,cached:false,parserAlloc:T}}preflightAsync(e,t,n,i,s,o){if(!(t.hasAsync||this.resolverRegistry.size>0))return {kind:"proceed"};let c=new AbortController,l=()=>c.abort();this.keystrokeSignal?.addEventListener("abort",l,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("preflightAsync"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("preflightAsync");let a=c.signal,u=this.resolverRegistry.preflightAll(e,t,"_engine",a,this.queryClient,this.config.network.enabled);if(u){this.resolveAsync({type:"pending",queryKey:u.queryKey,resolver:u.resolver,packageId:u.packageId||"_engine",signal:u.signal}),this.dag.registerLineDataSourceDependency(n,u.packageId||"_engine",[u.queryKey]),this.registerBackgroundRefresh(u);let p=chunkOM7NOHJF_cjs.O(u.queryKey);return this.storeLineResult(n,p,t,s,o,i),{kind:"pending",value:p}}return this.keystrokeSignal?.removeEventListener("abort",l),{kind:"proceed"}}evaluateWithTokens(e,t,n,i){let s=this.prepareExpression(t,n,i,void 0,e);if(s.kind==="empty"){let p=chunkOM7NOHJF_cjs.n(0);return this.lineCache.set(e,new K(p,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},[],null),t),p}if(s.kind==="error")throw s.error;if(s.kind==="symbolic-solve")return this.storeLineResult(e,s.value,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},s.reads??[],s.writes??[],t),s.value;let{normalizedTokens:o,reads:c,writes:l,program:a}=s,u=this.preflightAsync(o,a,e,t,c,l);return u.kind==="pending"?u.value:this.executeAndStore(a,e,t,c,l,"_engine")}evaluateLine(e,t){let n=this.evaluateLineWithDebug(e,t);if(n.error)throw n.engineError?n.engineError:chunkSUAGBRQ7_cjs.c.execution("EVALUATION_ERROR",n.error,{lineNumber:e});return chunkOM7NOHJF_cjs.l(n.value)}evaluateLineWithDebug(e,t,n="expression"){let i=t.match(/^s`([^`]*)`$/);if(i){let s=i[1];return {...this.evaluateExpressionWithDiagnostic(s,e,n),inlineSolve:{start:0,end:t.length,expression:s,lineNumber:e,columnNumber:1}}}return this.evaluateExpressionWithDiagnostic(t,e,n)}addDiagnosticStage(e,t,n,i,s,o,c,l,a){e.push({stage:t,label:n,icon:i,colorClass:s,stepNumber:o,elapsedNs:c,skipped:l,output:a});}evaluateExpressionWithDiagnostic(e,t,n="expression"){let i=this.diagnosticPipeline,s=i.hasCollectors,o=this.timelineCollector?.parseletMatchCount??0,c=_.isEnabled(),l=[],a=[],u=0,p=Ke(e,this.config.validation);if(!p.passed)return s&&this.addDiagnosticStage(a,"safety_length","Safety: Length","\u{1F6E1}\uFE0F","validate",2,u,false,{type:"safety_length",passed:false,expressionLength:e.length,maxLength:this.config.validation.maxExpressionLength,errorMessage:p.error.error}),{...p.error,debug:void 0,diagnostic:void 0};s&&(i.firePipelineStart({type:chunkHG4NPDN5_cjs.c.PipelineStart,elapsedNs:0,expression:e,inputType:n}),this.addDiagnosticStage(a,"pipeline_start","Pipeline Start","\u25B6","pipeline",1,u,false,{type:"pipeline_start",expression:e,inputType:n}),this.addDiagnosticStage(a,"safety_length","Safety: Length","\u{1F6E1}\uFE0F","validate",2,u,false,{type:"safety_length",passed:true,expressionLength:e.length,maxLength:this.config.validation.maxExpressionLength}));let d=s?y=>{i.fireTokenEmitted({type:chunkHG4NPDN5_cjs.c.TokenEmitted,elapsedNs:0,expression:e,token:{type:y.type,value:y.value,offset:y.offset||0,line:y.line||t,col:y.col||0}});}:void 0,m=_.track("lexer",()=>this.lexToTokens(e,d)),f=m.result.tokens,T=m.result.hasParens,v=m.result.compiled;if(c&&m.alloc&&l.push(m.alloc),s){let y={};for(let L of f)y[L.type]=(y[L.type]||0)+1;this.addDiagnosticStage(a,"lexer","Lexer","\u{1F524}","lexer",3,u,false,{type:"lexer",tokenCount:f.length,tokenTypes:y,hasParens:T,locale:this.localeCode,tokens:[...f]});let A=[];for(let L=0;L<f.length;L++){let ae=f[L];if(ae.type==="INLINE_SOLVE_START"){let D=-1;for(let H=L+1;H<f.length;H++)if(f[H].type==="BACKTICK_OPEN"){D=H;break}if(D>L){let Cr=f.slice(L+1,D).map(Tr=>Tr.value).join("");A.push({startTokenIndex:L,endTokenIndex:D,expression:Cr,columnNumber:ae.col||1}),L=D;}}}this.addDiagnosticStage(a,"line_classification","Line Classification","\u{1F4CB}","classify",3.5,u,false,{type:"line_classification",classification:"expression",skip:false,hasInlineSolve:A.length>0,inlineSolveSpans:A});}if(!v&&f.length===0){let y=chunkOM7NOHJF_cjs.n(0);return this.lineCache.set(t,new K(y,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},[],null),e),s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:0,totalOpcodes:0}),{value:y,tokens:f,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},debug:void 0,diagnostic:void 0}}let R=0,O=[],G=new Map,xr=s?y=>{R++,O.push(y),G.set(y.rule,(G.get(y.rule)||0)+1),i.fireTokenFused({type:chunkHG4NPDN5_cjs.c.TokenFused,elapsedNs:0,expression:e,ruleName:y.rule,sourceTokenCount:y.sourceTokens.length,fusedTokenType:y.fusedToken.type,fusedTokenValue:y.fusedToken.value});}:void 0;s&&this.normalizer.ruleCount>0&&i.fireNormalizerStart({type:chunkHG4NPDN5_cjs.c.NormalizerStart,elapsedNs:0,expression:e,inputTokenCount:f.length});let B=this.bytecodeCache.get(e);s&&!B&&this.parser.setDiagnosticPipeline(i,e);let b=this.prepareExpression(e,f,T,xr,t);v&&b.kind==="ready"&&(f=b.normalizedTokens),c&&b.kind==="ready"&&b.parserAlloc&&l.push(b.parserAlloc),s&&!B&&this.parser.setDiagnosticPipeline(void 0,"");let k=b.kind==="empty"?f:b.normalizedTokens??f;if(s&&(this.normalizer.ruleCount>0?(i.fireNormalizerEnd({type:chunkHG4NPDN5_cjs.c.NormalizerEnd,elapsedNs:0,expression:e,outputTokenCount:k.length,fusionsCount:R}),this.addDiagnosticStage(a,"normalizer","Normalizer","\u{1F504}","normalizer",4,u,false,{type:"normalizer",inputTokenCount:f.length,outputTokenCount:k.length,fusions:O,rulesApplied:[...G.entries()].map(([y,A])=>({rule:y,count:A})),tokens:[...k],phrases:this.normalizer.getPhrases(),ruleShapes:this.normalizer.getRuleShapes(),candidatesPerPosition:this.normalizer.getCandidateCounts(k)})):this.addDiagnosticStage(a,"normalizer","Normalizer","\u{1F504}","normalizer",4,u,true,{type:"normalizer",inputTokenCount:f.length,outputTokenCount:f.length,fusions:[],rulesApplied:[],tokens:[...f],phrases:this.normalizer.getPhrases(),ruleShapes:this.normalizer.getRuleShapes(),candidatesPerPosition:this.normalizer.getCandidateCounts(f)})),b.kind==="empty"||b.kind==="error"&&b.stage==="length"){if(s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:b.kind==="empty",totalTokens:f.length,totalOpcodes:0}),b.kind==="empty"){let y=chunkOM7NOHJF_cjs.n(0);return this.lineCache.set(t,new K(y,{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},[],null),e),{value:y,tokens:f,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},debug:void 0,diagnostic:void 0}}return {value:chunkOM7NOHJF_cjs.n(0),tokens:[],program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:b.error.message,engineError:b.error,debug:void 0,diagnostic:void 0}}let ie=Ge(k,this.config.validation);if(b.kind==="error"&&b.stage==="complexity")return s&&(this.addDiagnosticStage(a,"safety_complexity","Safety: Complexity","\u{1F6E1}\uFE0F","validate",5,u,false,{type:"safety_complexity",passed:false,complexityScore:ie.complexityScore??0,maxComplexity:this.config.validation.maxComplexity,breakdown:{tokenCount:k.length,functionCalls:0,nestingDepth:0},errorMessage:ie.errorMessage}),i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:false,totalTokens:f.length,totalOpcodes:0})),{value:chunkOM7NOHJF_cjs.n(0),tokens:[],program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:ie.errorMessage,engineError:ie.engineError,debug:void 0,diagnostic:void 0};if(s&&this.addDiagnosticStage(a,"safety_complexity","Safety: Complexity","\u{1F6E1}\uFE0F","validate",5,u,false,{type:"safety_complexity",passed:true,complexityScore:ie.complexityScore??k.length,maxComplexity:this.config.validation.maxComplexity,breakdown:{tokenCount:k.length,functionCalls:0,nestingDepth:0}}),b.kind==="symbolic-solve"){s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:0});let y={opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false};return this.storeLineResult(t,b.value,y,b.reads??[],b.writes??[],e),{value:b.value,tokens:k,program:y,debug:void 0,diagnostic:void 0}}let me=b.reads??[],se=b.writes??[];if(s&&(this.addDiagnosticStage(a,"readwrite","Read/Write","\u{1F4CB}","readwrite",6,u,false,{type:"readwrite",reads:me,writes:se,isAssignment:se.length>0}),this.addDiagnosticStage(a,"cache_check","Cache Check","\u{1F4BE}","cache",7,u,false,{type:"cache_check",hit:!!B,cacheSize:this.bytecodeCache.size,cacheKey:e}),B?i.fireCacheHit({type:chunkHG4NPDN5_cjs.c.CacheHit,elapsedNs:0,expression:e,cache:"bytecode",key:e}):i.fireCacheMiss({type:chunkHG4NPDN5_cjs.c.CacheMiss,elapsedNs:0,expression:e,cache:"bytecode",key:e})),b.kind==="error"&&b.stage==="parse")return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:false,totalTokens:f.length,totalOpcodes:0}),{value:chunkOM7NOHJF_cjs.n(0),tokens:k,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},error:b.error.message,engineError:b.error,debug:void 0,diagnostic:void 0};if(b.kind!=="ready")throw chunkSUAGBRQ7_cjs.c.internal({code:"UNEXPECTED_ERROR",message:"Internal error: prepareExpression() returned an unexpected variant after all other cases were handled"});let x=b.program;s&&(this.addDiagnosticStage(a,"parser","Parser","\u{1F333}","parser",8,u,!!B,{type:"parser",parselets:[],uniqueParseletTypes:[],astDepth:0}),this.addDiagnosticStage(a,"compiler","Compiler","\u2699\uFE0F","compiler",9,u,!!B,{type:"compiler",opcodeCount:x.opcodes.length,numberConstants:x.numbers.length,stringConstants:x.strings.length,hasAsync:x.hasAsync,cached:!!B}),i.fireBytecodeBuilt({type:chunkHG4NPDN5_cjs.c.BytecodeBuilt,elapsedNs:0,expression:e,opcodesLength:x.opcodes.length,numbersLength:x.numbers.length,stringsLength:x.strings.length,isCached:!!B}));let kr=x.hasAsync||this.resolverRegistry.size>0,oe=this.preflightAsync(k,x,t,e,me,se);if(s&&(oe.kind==="pending"?this.addDiagnosticStage(a,"async_preflight","Async Preflight","\u{1F52E}","async",10,u,false,{type:"async_preflight",path:"pending",pendingQueryKey:oe.value.value,resolverCount:this.resolverRegistry.size,skippedGuard:true}):kr?this.addDiagnosticStage(a,"async_preflight","Async Preflight","\u{1F52E}","async",10,u,false,{type:"async_preflight",path:"sync",resolverCount:this.resolverRegistry.size,skippedGuard:false}):this.addDiagnosticStage(a,"async_preflight","Async Preflight","\u{1F52E}","async",10,u,true,{type:"async_preflight",path:"sync",resolverCount:0,skippedGuard:true})),oe.kind==="pending")return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length}),{value:oe.value,tokens:k,program:x,debug:void 0,diagnostic:s?this.buildDiagnosticResult(a,oe.value,k,x,null):void 0};let Sr=s&&this.config.diagnostic.vmTraceEnabled===true,w;try{let y=_.track("vm",()=>this.executeAndStore(x,t,e,me,se,"_engine",Sr?i:void 0,e),{cacheHit:!!B});w=y.result,c&&y.alloc&&l.push(y.alloc);}catch(y){let A=chunkSUAGBRQ7_cjs.d(y);return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:false,totalTokens:f.length,totalOpcodes:x.opcodes.length}),{value:chunkOM7NOHJF_cjs.n(0),tokens:k,program:x,error:A.message,engineError:A,debug:void 0,diagnostic:void 0}}let ye=w.type===12;if(s){let y=ye?"pending":String(w.value??""),A=ye?"Pending":w.unit?"Uom":"Number";this.addDiagnosticStage(a,"vm_execute","VM Execute","\u26A1","vm",11,u,false,{type:"vm_execute",totalInstructions:x.opcodes.length,stackDepth:this.vm.getStack().length,resultType:A,resultValue:y,isPending:ye});}if(ye)return s&&i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length}),{value:w,tokens:k,program:x,debug:void 0,diagnostic:s?this.buildDiagnosticResult(a,w,k,x,null):void 0};if(c&&l.length>0&&(this.lastTelemetry=_.createTelemetry(e,l,!!B)),s&&(this.addDiagnosticStage(a,"dag_registration","DAG Registration","\u{1F517}","dag",12,u,false,{type:"dag_registration",readsRegistered:me,writesRegistered:se,dataSourcesRegistered:[]}),this.addDiagnosticStage(a,"linecache","Line Cache","\u{1F4E6}","cache",13,u,false,{type:"linecache",lineNumber:t,expression:e,stored:true}),this.addDiagnosticStage(a,"result","Result","\u2713","result",14,u,false,{type:"result",rawValue:String(w.value),formattedValue:String(w.value),valueType:w.type===0?"Number":"Value",unit:w.unit}),i.fireVmHalt({type:chunkHG4NPDN5_cjs.c.VmHalt,elapsedNs:0,expression:e,result:w?{type:w.type,value:w.value,unit:w.unit}:void 0}),this.addDiagnosticStage(a,"pipeline_end","Pipeline End","\u23F9","pipeline",15,u,false,{type:"pipeline_end",success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length,cacheHit:!!B}),i.firePipelineEnd({type:chunkHG4NPDN5_cjs.c.PipelineEnd,elapsedNs:0,expression:e,success:true,totalTokens:f.length,totalOpcodes:x.opcodes.length})),s){let A=i.collectReports()[0]?.toJSON(),L=A;if(A){let ae=A.parselets.slice(o),D={};for(let H of ae)D[H.parseletCategory]=(D[H.parseletCategory]??0)+1;L={...A,parselets:ae,summary:{...A.summary,totalParselets:Object.keys(D).length,parseCategories:D}};}return {value:w,tokens:k,program:x,debug:L,diagnostic:this.buildDiagnosticResult(a,w,k,x,null)}}return {value:w,tokens:k,program:x}}buildDiagnosticResult(e,t,n,i,s){return {stages:e,value:t,tokens:n,program:i,error:s,dagSnapshot:this.dag.getSnapshot(),cacheSnapshot:this.getCacheSnapshot(),batcherMetrics:this.getBatcherMetrics(),checkpoints:this.getCheckpoints()}}reEvaluateLine(e,t){let n=this.lineCache.get(e,t);if(!n)return;let i=this.bytecodeCache.get(t);if(!i)return;if(n.bytecode.hasAsync||this.resolverRegistry.size>0){let c=new AbortController,l=()=>c.abort();this.keystrokeSignal?.addEventListener("abort",l,{once:true}),chunkTTFO4YDP_cjs.a.localControllerCreated("reEvaluateLine preflight"),this.keystrokeSignal&&chunkTTFO4YDP_cjs.a.signalLinked("reEvaluateLine preflight");let a=c.signal,u=this.resolverRegistry.preflightAll([],n.bytecode,"_engine",a,this.queryClient,this.config.network.enabled);if(u)return this.resolveAsync({type:"pending",queryKey:u.queryKey,resolver:u.resolver,packageId:u.packageId||"_engine",signal:u.signal}),this.registerBackgroundRefresh(u),chunkOM7NOHJF_cjs.O(u.queryKey);this.keystrokeSignal?.removeEventListener("abort",l);}let s=this.executeRaw(i,e);if(s.type==="pending")return this.resolveAsync(s),chunkOM7NOHJF_cjs.O(s.queryKey);if(s.type==="error")throw s.error;let o=s.value;return n.result=o,o}getDag(){return this.dag}getLineCache(){return this.lineCache}getBytecodeCache(){return this.bytecodeCache}getVM(){return this.vm}getContext(){return this.context}getScopeManager(){return this.scopeManager}getLexer(){return this.lexer}getNormalizer(){return this.normalizer}getPackageCompletionItems(){let e=[];for(let t of this.packageCompletionItems.values())e.push(...t);return e}getParseletRegistry(){return {prefix:this.registry.getAllPrefix(),infix:this.registry.getAllInfix()}}tokenizeForClassification(e){this.lexer.resetExpression(e);let n=Array.from(this.lexer).filter(i=>i.type!=="COMMENT");return n.length===0?[]:this.normalizer.normalize(n)}getParser(){return this.parser}isDiagnosticMode(){return this.diagnosticPipeline.hasCollectors}setKeystrokeSignal(e){e?chunkTTFO4YDP_cjs.a.keystrokeSignalSet(e.aborted):chunkTTFO4YDP_cjs.a.keystrokeSignalCleared(),this.keystrokeSignal=e;}getCacheSnapshot(){let e=[];for(let[o,c]of this.bytecodeCache)e.push({expression:o,opcodesLength:c.opcodes.length,numbersLength:c.numbers.length,stringsLength:c.strings.length,hasAsync:c.hasAsync});let t=[];for(let o of this.lineCache.keys()){let c=o.indexOf(":"),l=c>0?parseInt(o.slice(0,c),10)||0:parseInt(o,10)||0,a=c>0?o.slice(c+1):void 0,u=a!==void 0?this.lineCache.get(l,a):this.lineCache.getEntryForLine(l);u&&t.push({key:o,lineNumber:l,resultType:String(u.result?.type??""),resultValue:String(u.result?.value??""),reads:u.readVariables??[],writeVar:u.writeVariable??null});}let s=this.queryClient.getQueryCache().getAll().map(o=>{let c=o.state.status==="success"?"resolved":o.state.status==="error"?"error":"in_flight";return {packageId:o.queryKey[0]??"unknown",resolvedCount:o.state.status==="success"?1:0,inFlightCount:o.state.status!=="success"&&o.state.status!=="error"?1:0,errorCount:o.state.status==="error"?1:0,entries:[{key:o.queryKey.join(":"),status:c}]}});return {bytecode:e,lineCache:t,asyncCache:s}}getBatcherMetrics(){return {pendingCount:this.batcher.pendingCount,dedupCount:this.batcher.dedupCount,workerOffloadCount:this.batcher.workerOffloadCount,listenerCount:this.batcher.listenerCount}}getCheckpoints(){let t=this.vm.checkpointer;return t?t.getAllCheckpoints().map(i=>({lineNumber:i.lineNumber,variables:Object.keys(i.variables),variableCount:Object.keys(i.variables).length})):[]}getLastTelemetry(){return this.lastTelemetry}evaluateExpression(e){return this.evaluateLine(-1,e)}explainLine(e){let{tokens:t}=this.lexToTokens(e,void 0,false),n=t.filter(s=>s.type!=="COMMENT"),i=this.normalizer.normalize(n);return Xe({expression:e,tokens:i,evaluate:s=>this.evaluateIsolated(s),locale:this.localeCode,readings:this.readDates(e)})}evaluateIsolated(e){let{tokens:t,hasParens:n}=this.lexToTokens(e),i=this.prepareExpression(e,t,n,void 0,-1);if(i.kind==="empty")return chunkOM7NOHJF_cjs.n(0);if(i.kind==="error")throw i.error;if(i.kind==="symbolic-solve")return i.value;let s=this.executeRaw(i.program,-1);if(s.type==="error")throw s.error;if(s.type==="pending")throw chunkSUAGBRQ7_cjs.c.execution("EXPLAIN_ASYNC_UNSUPPORTED",`A derivation cannot be built for a line that resolves data asynchronously: "${e}"`,{expression:e});return s.value}compileExpression(e){let t=this.lexToTokens(e),{hasParens:n}=t,i=this.prepareExpression(e,t.tokens,n),s=t.compiled&&i.kind==="ready"?i.normalizedTokens:t.tokens;if(i.kind==="empty")return {program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},tokens:[],reads:[],writes:[]};if(i.kind==="error")throw i.stage==="parse"&&(i.reads?.length||i.writes?.length)?new chunkSUAGBRQ7_cjs.b(i.error.category,{code:i.error.code,message:i.error.message,expected:i.error.expected,found:i.error.found,suggestion:i.error.suggestion,recoverable:i.error.recoverable,span:i.error.span,cause:i.error.cause,context:{...i.error.context,reads:i.reads??[],writes:i.writes??[]}}):i.error;return i.kind==="symbolic-solve"?{program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},tokens:i.normalizedTokens,reads:i.reads??[],writes:i.writes??[]}:{program:i.program,tokens:s,reads:i.reads,writes:i.writes}}tryCompileExpression(e){try{return this.tryCompileExpressionUnguarded(e)}catch{return false}}tryCompileExpressionUnguarded(e){let{tokens:t,hasParens:n}=this.lexToTokens(e);return this.prepareExpression(e,t,n).kind!=="error"}executeCached(e,t=-1){if(e.opcodes.length===0)return chunkOM7NOHJF_cjs.n(0);let n=this.executeRaw(e,t);if(n.type==="pending")return this.resolveAsync(n),chunkOM7NOHJF_cjs.O(n.queryKey);if(n.type==="error")throw n.error;return n.value}evaluateNumber(e){let t=e.trim();if(/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(t)&&this.vm.getVar(t)===void 0)return NaN;try{let n=this.evaluateLine(-1,e);return n.isFault()?NaN:n.toNumber()}catch{return NaN}}clear(){this.batcher.clearAll(),this.backgroundRefresh?.clearAll(),this.queryClient.clear(),chunkZLRJ7TDP_cjs.b()===this.queryClient&&chunkZLRJ7TDP_cjs.a(null),this.dag.clear(),this.lineCache.clear(),this.scopeManager.clear(),this.clearCompiledCache(),this.vm.reset(),this.userUnits.clear(),this.accumulatorNames.clear(),this.lastTelemetry=null;}toJSON(){let e=this.dag.getSnapshot(),t=new Set;for(let a of Object.keys(e.dataSourceDeps)){let u=Number(a);Number.isNaN(u)||t.add(u);}let n=this.lineCache.snapshotEntries(),i=new Map;for(let{line:a,entry:u}of n){let p=t.has(a)||u.bytecode.hasAsync;p&&t.add(a);let d=u.writeVariable;if(d){let m=i.get(d);(!m||a>=m.line)&&i.set(d,{line:a,async:p});}}let s={};for(let[a,u]of this.vm.getVariableEntries())if(u.type!==12&&!i.get(a)?.async)try{s[a]=ze(u,`variable "${a}"`);}catch(p){if(p instanceof chunkSUAGBRQ7_cjs.b&&p.code===V.SNAPSHOT_UNSUPPORTED_VALUE)continue;throw p}let o=this.vm.getUserFunctionDefs().map($e),c=[];for(let{line:a,expression:u,entry:p}of n){if(t.has(a)||p.result.type===12)continue;let d;try{d=ze(p.result,`line ${a}`);}catch(m){if(m instanceof chunkSUAGBRQ7_cjs.b&&m.code===V.SNAPSHOT_UNSUPPORTED_VALUE)continue;throw m}c.push({line:a,expression:u,result:d,bytecode:fe(p.bytecode),reads:p.readVariables.slice(),writeVar:p.writeVariable});}let l=Array.from(this.bytecodeCache.entries()).map(([a,u])=>({expression:a,program:fe(u)}));return {format:ee,version:Q,engineVersion:chunkRHRAONDK_cjs.a,locale:this.localeCode,variables:s,userFunctions:o,lineCache:c,bytecodeCache:l}}static fromJSON(e,t={}){or(e);let n=t.locale??e.locale??"en",i=new X({locale:n,diagnostics:t.diagnostics??false,config:t.config,packages:t.packages,calendar:t.calendar});return i.restoreSnapshot(e),i}restoreSnapshot(e){for(let[t,n]of Object.entries(e.variables))this.vm.setVar(t,Fe(n));for(let t of e.userFunctions){let n=je(t);this.vm.defineUserFunction(n.name,n.params,n.program);}for(let t of e.lineCache){let n=new K(Fe(t.result),de(t.bytecode),t.reads.slice(),t.writeVar);this.lineCache.set(t.line,n,t.expression),this.dag.registerLine(t.line,t.reads,t.writeVar?[t.writeVar]:[]);}for(let{expression:t,program:n}of e.bytecodeCache)this.bytecodeCache.set(t,de(n));}evaluateIncremental(e,t){let n=this.dag.getAffectedLinesInOrder(e);this.vm.setVar(e,chunkOM7NOHJF_cjs.n(t));let i=new Map;for(let s of n){let o=this.lineCache.getEntryForLine(s);if(!o||o.bytecode.opcodes.length===0)continue;let c=this.executeRaw(o.bytecode,s);if(c.type==="pending"){this.resolveAsync(c);continue}if(c.type==="error"){let a=chunkOM7NOHJF_cjs.P(c.error.code,c.error.message);i.set(s,a),o.result=a;continue}let l=c.value;i.set(s,l),o.result=l;}return i}};X.GOAL_SEEK_MAX_NESTING_DEPTH=1,X.WARMUP_EXPRESSIONS=["1 + 2 * 3","10.5 / 2 - 0.25","50% of 200","3 kg + 400 g","sqrt(144) + max(1, 2)","1 < 2 && 3 >= 3","half of 250",'"text" + "joined"'];var Ae=X;var Ye=(()=>{throw new Error("engine.worker.ts was not processed by esbuild-plugin-inline-worker, so worker offload is unavailable")}),re=null;function Zr(){return re||(re=new Ae),re}var ne=null;function en(){return ne||(ne=chunkGWV273KZ_cjs.c(chunkRAFOQ4T5_cjs.w,200,5e4)),ne}function tn(r){let e={lineId:r.lineId,expression:r.expression,compiledAgainstHash:r.textHash,strings:[],reads:[],writes:[],isVariableDef:false,error:null};try{let t=Zr(),{program:n,reads:i,writes:s}=t.compileExpression(r.expression),o=s.length>0,c=n.opcodes,l=n.numbers,a=c.buffer.slice(c.byteOffset,c.byteOffset+c.byteLength),u=l.buffer.slice(l.byteOffset,l.byteOffset+l.byteLength);return {...e,opcodesBuffer:a,numbersBuffer:u,opcodesLength:c.length,numbersLength:l.length,strings:[...n.strings],reads:i,writes:s,isVariableDef:o}}catch(t){return {...e,opcodesBuffer:new ArrayBuffer(0),numbersBuffer:new ArrayBuffer(0),opcodesLength:0,numbersLength:0,error:t instanceof Error?t.message:String(t)}}}function rn(r){let e=[],t=[];for(let n of r.items){let i=tn(n);e.push(i),i.opcodesBuffer.byteLength>0&&t.push(i.opcodesBuffer),i.numbersBuffer.byteLength>0&&t.push(i.numbersBuffer);}self.postMessage({id:r.id,type:"COMPILE_RESULT",results:e},t);}function nn(r){let e=en();e.reset();let t=new Uint8Array(r.opcodesBuffer,0,r.opcodesLength),n=new Float64Array(r.numbersBuffer,0,r.numbersLength),i={opcodes:t,numbers:n,strings:r.strings};try{let s=chunkGWV273KZ_cjs.d(i,e);if(s.type==="pending")return {lineNumber:r.lineNumber,valueType:12,value:0,isPending:!0,queryKey:s.queryKey};if(s.type==="error")return {lineNumber:r.lineNumber,valueType:13,value:0,isPending:!1,unit:s.error.message};let o=s.value;return {lineNumber:r.lineNumber,valueType:o.type,value:typeof o.value=="number"?o.value:typeof o.value=="bigint"?Number(o.value):0,unit:o.unit,isPending:!1}}catch{return {lineNumber:r.lineNumber,valueType:13,value:0,isPending:false,unit:"Worker execution failed"}}}function sn(r){let e=[];for(let t of r.items)e.push(nn(t));self.postMessage({id:r.id,type:"EXECUTE_RESULT",results:e});}var on=typeof self<"u"&&typeof window>"u",an=r=>{if(r.origin&&self.location&&r.origin!==self.location.origin)return;let e=r.data;switch(e.type){case "COMPILE_BATCH":rn(e);break;case "EXECUTE_BATCH":sn(e);break;case "TERMINATE":{re&&(re.clear(),re=null),ne&&(ne.reset(),ne=null),self.postMessage({id:e.id,type:"COMPILE_RESULT",results:[]});break}default:self.postMessage({id:-1,type:"COMPILE_RESULT",results:[],error:`Unknown message type: ${e.type}`});}};on&&(self.onmessage=an);var br=3e4,vr=50,Le=class{constructor(e){this.workers=[];this.nextWorker=0;this.nextId=1;this.pendingBatches=new Map;this.terminated=false;this._available=null;this.poolSize=Math.min(e??this.defaultPoolSize(),4);}defaultPoolSize(){return typeof navigator<"u"&&navigator.hardwareConcurrency?Math.min(navigator.hardwareConcurrency,4):2}isAvailable(){if(this.terminated)return false;if(this._available!==null)return this._available;if(typeof Worker>"u")return this._available=false,false;try{return Ye().terminate(),this._available=!0,!0}catch{return this._available=false,false}}executeBatch(e,t){if(!this.isAvailable())return;if(e.length===0)return Promise.resolve([]);this.ensureWorkers();let n=[];for(let l of e){let a=t.get(l);if(!a||a.bytecode.opcodes.length===0)continue;let u=a.bytecode.opcodes,p=a.bytecode.numbers,d=u.buffer.slice(u.byteOffset,u.byteOffset+u.byteLength),m=p.buffer.slice(p.byteOffset,p.byteOffset+p.byteLength);n.push({lineNumber:l,opcodesBuffer:d,numbersBuffer:m,opcodesLength:u.length,numbersLength:p.length,strings:[...a.bytecode.strings]});}if(n.length===0)return Promise.resolve([]);let i=[];for(let l of n)l.opcodesBuffer.byteLength>0&&i.push(l.opcodesBuffer),l.numbersBuffer.byteLength>0&&i.push(l.numbersBuffer);let s=this.nextId++,o=this.nextWorkerIndex(),c=this.workers[o];return new Promise(l=>{let a=setTimeout(()=>{this.pendingBatches.has(s)&&this.failWorker(o,"WORKER_TIMEOUT",`Evaluation did not finish within ${br/1e3} seconds; the worker was replaced`);},br);this.pendingBatches.set(s,{id:s,lineNumbers:n.map(u=>u.lineNumber),workerIndex:o,resolve:u=>{clearTimeout(a),l(u);}}),c.postMessage({type:"EXECUTE_BATCH",id:s,items:n},i);})}clear(){for(let[,e]of this.pendingBatches)e.resolve([]);this.pendingBatches.clear();for(let e of this.workers)e.terminate();this.workers=[],this.nextWorker=0;}destroy(){this.terminated=true,this.clear();}ensureWorkers(){if(!(this.workers.length>0))for(let e=0;e<this.poolSize;e++)this.spawnWorker(e);}spawnWorker(e){let t=Ye();t.onmessage=n=>{this.handleWorkerMessage(n.data);},t.onerror=n=>{console.error(`[ExecutionPool] Worker ${e} error:`,n.message),this.failWorker(e,"WORKER_EXECUTION_ERROR",`Worker failed: ${n.message}`);},this.workers[e]=t;}failWorker(e,t,n){if(this.workers.length!==0){this.workers[e]?.terminate(),this.terminated||this.spawnWorker(e);for(let[i,s]of this.pendingBatches)s.workerIndex===e&&(this.pendingBatches.delete(i),s.resolve(ln(s.lineNumbers,t,n)));}}nextWorkerIndex(){let e=this.nextWorker;return this.nextWorker=(this.nextWorker+1)%this.workers.length,e}handleWorkerMessage(e){if(e.type!=="EXECUTE_RESULT")return;let t=this.pendingBatches.get(e.id);t&&(this.pendingBatches.delete(e.id),t.resolve(e.results));}};function ln(r,e,t){return r.map(n=>({lineNumber:n,valueType:13,value:0,unit:t,isPending:false,errorCode:e}))}function Er(r){switch(r.valueType){case 0:return chunkOM7NOHJF_cjs.n(r.value);case 1:return chunkOM7NOHJF_cjs.r(r.value);case 2:return chunkOM7NOHJF_cjs.s(BigInt(r.value));case 3:return chunkOM7NOHJF_cjs.t(String(r.value));case 4:return chunkOM7NOHJF_cjs.M(r.value);case 5:return chunkOM7NOHJF_cjs.N(r.value);case 6:return chunkOM7NOHJF_cjs.u(r.value,r.unit??"");case 7:return chunkOM7NOHJF_cjs.n(r.value);case 10:return chunkOM7NOHJF_cjs.L(r.value!==0);case 12:return chunkOM7NOHJF_cjs.O(r.queryKey??"");case 13:return chunkOM7NOHJF_cjs.P(r.errorCode??"WORKER_EXECUTION_ERROR",r.unit??"Unknown worker error");default:return chunkOM7NOHJF_cjs.n(r.value)}}var Oe=class Oe{constructor(e,t,n,i=Oe.DEFAULT_HIGH_WATER_MARK){this.pending=[];this.scheduled=false;this.cleared=false;this.executionPool=null;this.workerOffloadDispatchCount=0;this._streamController=null;this._testCaptures=null;this.onLineResult=null;this.warnedAboutMissingHook=false;this.dag=e,this.lineCache=t,this.vm=n,this.highWaterMark=i,this._eventStream=this.createEventStream();}warnIfUnwired(){this.onLineResult||this.listenerCount>0||this.warnedAboutMissingHook||(this.warnedAboutMissingHook=true,console.warn("[solve-engine] An async result resolved, but nothing is listening for it: no reader is attached to engine.getEventStream() and AsyncResolutionBatcher.onLineResult is not set. The value is in the cache; without one of those the line keeps showing as pending. Read the event stream and re-evaluate the lines it names (see the async guide), or set onLineResult to mirror resolved values into your own state. This warning appears once per batcher."));}createEventStream(){return new ReadableStream({start:e=>{this._streamController=e;},cancel:()=>{this._streamController=null;}},new CountQueuingStrategy({highWaterMark:this.highWaterMark}))}add(e){this.cleared=false;for(let t of this.pending)if(t.packageId===e.packageId&&t.queryKey===e.queryKey)return;this.pending.push(e),this.scheduled||(this.scheduled=true,queueMicrotask(()=>{try{this.flush();}catch(t){let n=chunkSUAGBRQ7_cjs.d(t);console.error(`[AsyncResolutionBatcher] flush() failed unexpectedly \u2014 this should never happen; please report: ${n.format()}`);}}));}getEventStream(){return this._eventStream}get pendingCount(){return this.pending.length}get dedupCount(){let e=new Set;for(let t of this.pending)e.add(`${t.packageId}:${t.queryKey}`);return Math.max(0,this.pending.length-e.size)}get listenerCount(){return this._eventStream.locked?1:0}get workerOffloadCount(){return this.workerOffloadDispatchCount}clearAll(){this.pending=[],this.scheduled=false,this.cleared=true,this._testCaptures=null,this.onLineResult=null;try{this._streamController?.close();}catch{}this._streamController=null,this._eventStream=this.createEventStream(),this.executionPool&&(this.executionPool.clear(),this.executionPool=null),this.workerOffloadDispatchCount=0;}flush(){if(this.scheduled=false,this.cleared||this.pending.length===0)return;let e=this.pending;this.pending=[];let t=new Map;for(let a of e){let u=`${a.packageId}:${a.queryKey}`;t.set(u,a);}let n=[],i=[];for(let a of t.values())a.isError?n.push(a):i.push(a);for(let a of n)a.signal.aborted||this.notifyListeners({type:"error",queryKey:a.queryKey,packageId:a.packageId,error:a.error??new Error("Unknown async resolution error")});let s=new Set,o=[],c=[...i,...n];for(let a of c){if(a.signal.aborted)continue;o.push(a.queryKey);let u=this.dag.getAffectedLinesByDataSource(a.packageId,[a.queryKey]);for(let p of u)s.add(p);}if(s.size===0){this.notifyListeners({type:"lines-updated",lineNumbers:[],affectedQueryKeys:o});return}let l=this.topologicalSort(Array.from(s));if(l.length>vr){let a=new Map;for(let u of l)a.set(u,this.lineCache.getEntryForLine(u));this.reExecuteViaWorkerPool(l,a,o).catch(u=>{let p=chunkSUAGBRQ7_cjs.d(u);console.error(`[AsyncResolutionBatcher] reExecuteViaWorkerPool() failed unexpectedly: ${p.format()}`);});return}this.reExecuteMainThread(l,o);}topologicalSort(e){if(e.length<=1)return e;let t=new Map,n=new Map,i=new Map;for(let c of e)t.set(c,0),n.set(c,[]);for(let c of e){let l=this.dag.getWrites(c);for(let a of l)i.set(a,c);}for(let c of e){let l=this.dag.getDependencies(c);for(let a of l){let u=i.get(a);u!==void 0&&u!==c&&(n.get(u).push(c),t.set(c,(t.get(c)??0)+1));}}let s=[];for(let[c,l]of t)l===0&&s.push(c);if(s.length===0&&e.length>0)return [...e].sort((c,l)=>c-l);let o=[];for(;s.length>0;){let c=s.shift();o.push(c);for(let l of n.get(c)??[]){let a=(t.get(l)??1)-1;t.set(l,a),a===0&&s.push(l);}}if(o.length<e.length){let c=e.filter(l=>!o.includes(l)).sort((l,a)=>l-a);o.push(...c);}return o}async reExecuteViaWorkerPool(e,t,n){this.executionPool||(this.executionPool=new Le);let i=this.executionPool.executeBatch(e,t);if(!i){this.reExecuteMainThread(e,n,t);return}this.workerOffloadDispatchCount++;let s=await i;if(this.cleared)return;let o=[];for(let c of s){let l=t.get(c.lineNumber);if(!l||c.isPending)continue;let a=Er(c);l.result=a,this.warnIfUnwired(),this.onLineResult?.(c.lineNumber,a),o.push(c.lineNumber);}this.cleared||(o.length>0||n.length>0)&&this.notifyListeners({type:"lines-updated",lineNumbers:o,affectedQueryKeys:n});}reExecuteMainThread(e,t,n){let i=[];for(let s of e){let o=n?n.get(s):this.lineCache.getEntryForLine(s);if(!o||o.bytecode.opcodes.length===0)continue;let c=this.vm.getStack().length;try{let l=chunkGWV273KZ_cjs.d(o.bytecode,this.vm,void 0,void 0,{lineIndex:s,networkEnabled:this.vm.context.networkEnabled,calendar:this.vm.context.calendar});for(;this.vm.getStack().length>c;)this.vm.pop();if(l.type==="value")o.result=l.value,this.warnIfUnwired(),this.onLineResult?.(s,l.value),i.push(s);else if(l.type==="error"){let a=chunkOM7NOHJF_cjs.P(l.error.code,l.error.message);o.result=a,this.warnIfUnwired(),this.warnIfUnwired(),this.onLineResult?.(s,a),i.push(s);}}catch(l){for(;this.vm.getStack().length>c;)this.vm.pop();let a=chunkSUAGBRQ7_cjs.d(l),u=chunkOM7NOHJF_cjs.P(a.code,a.message);o.result=u,this.warnIfUnwired(),this.onLineResult?.(s,u),i.push(s);}}return (i.length>0||t.length>0)&&this.notifyListeners({type:"lines-updated",lineNumbers:i,affectedQueryKeys:t}),i}notifyListeners(e){if(this._testCaptures&&this._testCaptures.push(e),this._streamController)try{this._streamController.enqueue(e);}catch{}}};Oe.DEFAULT_HIGH_WATER_MARK=64;var Pe=Oe;exports.a=cn;exports.b=Ir;exports.c=Zt;exports.d=ee;exports.e=Q;exports.f=V;exports.g=Ye;exports.h=Pe;exports.i=Ke;exports.j=Ge;exports.k=we;exports.l=Pn;exports.m=Ln;exports.n=Ae;//# sourceMappingURL=chunk-PNHTC3FM.cjs.map
|
|
5
|
+
//# sourceMappingURL=chunk-PNHTC3FM.cjs.map
|