solve-engine 2.38.11 → 2.38.13
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/{PackageCompatibility-CfREcBQl.d.ts → PackageCompatibility-BILTZSHP.d.ts} +1 -1
- package/dist/{PackageCompatibility-BrCgFgXc.d.cts → PackageCompatibility-Cu_bHpwY.d.cts} +1 -1
- package/dist/{PackageRegistry-BwjDDm71.d.ts → PackageRegistry-DMKDsYiA.d.ts} +1 -1
- package/dist/{PackageRegistry-BZnmnyrd.d.cts → PackageRegistry-wZgm2zzk.d.cts} +1 -1
- package/dist/{VMBuiltins-BAZsNYQ-.d.cts → VMBuiltins-D3rXBm2k.d.cts} +66 -2
- package/dist/{VMBuiltins-CorEIEMd.d.ts → VMBuiltins-Dd0KZR4G.d.ts} +66 -2
- package/dist/{VMCheckpoints-CAONfMZS.d.ts → VMCheckpoints-BXavssWa.d.ts} +1 -1
- package/dist/{VMCheckpoints-BcuUNpLy.d.cts → VMCheckpoints-BwLCnV8C.d.cts} +1 -1
- package/dist/chunk-3X2DR2QH.js +5 -0
- package/dist/chunk-3X2DR2QH.js.map +1 -0
- package/dist/{chunk-BQTIQI5Q.js → chunk-4LMPCB2V.js} +3 -3
- package/dist/{chunk-BQTIQI5Q.js.map → chunk-4LMPCB2V.js.map} +1 -1
- package/dist/chunk-6ADFAXTZ.cjs +2 -0
- package/dist/chunk-6ADFAXTZ.cjs.map +1 -0
- package/dist/chunk-AFNK2LUO.js +2 -0
- package/dist/chunk-AFNK2LUO.js.map +1 -0
- package/dist/{chunk-EDKYFXEZ.cjs → chunk-CW623SJ7.cjs} +2 -2
- package/dist/{chunk-EDKYFXEZ.cjs.map → chunk-CW623SJ7.cjs.map} +1 -1
- package/dist/{chunk-WHR3SUWC.cjs → chunk-DTOSRC6E.cjs} +2 -2
- package/dist/{chunk-WHR3SUWC.cjs.map → chunk-DTOSRC6E.cjs.map} +1 -1
- package/dist/{chunk-ERFHCXV4.js → chunk-IUCUBHFW.js} +2 -2
- package/dist/{chunk-ERFHCXV4.js.map → chunk-IUCUBHFW.js.map} +1 -1
- package/dist/{chunk-TOZHWK7O.cjs → chunk-KVONXXPJ.cjs} +3 -3
- package/dist/{chunk-TOZHWK7O.cjs.map → chunk-KVONXXPJ.cjs.map} +1 -1
- package/dist/{chunk-WZUFPG3F.js → chunk-PN6S4SW3.js} +2 -2
- package/dist/{chunk-WZUFPG3F.js.map → chunk-PN6S4SW3.js.map} +1 -1
- package/dist/{chunk-7TMPBP5P.cjs → chunk-QCH4JXSZ.cjs} +5 -5
- package/dist/chunk-QCH4JXSZ.cjs.map +1 -0
- package/dist/{chunk-U7DOO2OE.js → chunk-SWONJJK3.js} +3 -3
- package/dist/{chunk-U7DOO2OE.js.map → chunk-SWONJJK3.js.map} +1 -1
- package/dist/{chunk-R35GD4DP.cjs → chunk-U54BIYXO.cjs} +2 -2
- package/dist/{chunk-R35GD4DP.cjs.map → chunk-U54BIYXO.cjs.map} +1 -1
- package/dist/{chunk-WSMGTKCC.cjs → chunk-WLY2OSWU.cjs} +3 -3
- package/dist/{chunk-WSMGTKCC.cjs.map → chunk-WLY2OSWU.cjs.map} +1 -1
- package/dist/{chunk-QS7UXI44.js → chunk-ZXNM355C.js} +2 -2
- package/dist/{chunk-QS7UXI44.js.map → chunk-ZXNM355C.js.map} +1 -1
- package/dist/constants.cjs +1 -1
- package/dist/constants.js +1 -1
- package/dist/engine.cjs +1 -1
- package/dist/engine.d.cts +4 -4
- package/dist/engine.d.ts +4 -4
- package/dist/engine.js +1 -1
- package/dist/engine.worker.cjs +1 -1
- package/dist/engine.worker.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/language.d.cts +3 -3
- package/dist/language.d.ts +3 -3
- package/dist/packages.cjs +1 -1
- package/dist/packages.d.cts +2 -2
- package/dist/packages.d.ts +2 -2
- package/dist/packages.js +1 -1
- package/dist/testing.cjs +2 -2
- package/dist/testing.d.cts +3 -3
- package/dist/testing.d.ts +3 -3
- package/dist/testing.js +1 -1
- package/dist/vm.cjs +1 -1
- package/dist/vm.d.cts +2 -2
- package/dist/vm.d.ts +2 -2
- package/dist/vm.js +1 -1
- package/dist/worker.cjs +2 -2
- package/dist/worker.d.cts +2 -2
- package/dist/worker.d.ts +2 -2
- package/dist/worker.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4CECSCRX.cjs +0 -2
- package/dist/chunk-4CECSCRX.cjs.map +0 -1
- package/dist/chunk-7TMPBP5P.cjs.map +0 -1
- package/dist/chunk-ODKM4MVB.js +0 -5
- package/dist/chunk-ODKM4MVB.js.map +0 -1
- package/dist/chunk-VRQUCWT2.js +0 -2
- package/dist/chunk-VRQUCWT2.js.map +0 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
'use strict';var chunkEFJCC6FJ_cjs=require('./chunk-EFJCC6FJ.cjs'),
|
|
2
|
-
`),r=new Array(t.length);for(let i=0;i<t.length;i++){let s=this.nextLineId++;r[i]=s,this.lines.set(s,{lineId:s,textHash:chunkEFJCC6FJ_cjs.a(t[i]),text:t[i],expressions:[],bytecodes:[],reads:[],writes:[],results:[],result:null,dirty:true,isVariableDef:false,isEmpty:t[i].trim().length===0,inlineSolveCount:0});}this.orderTree.replaceAll(r);for(let i of r)this.dirtyLineIds.add(i);}applyChanges(e){let n=[],t=[],r=[...e].sort((i,s)=>s.startLine-i.startLine);for(let i of r){let s=i.startLine-1,l=[];for(let o of i.insertLines){let c=this.nextLineId++;l.push(c),n.push(c),this.lines.set(c,{lineId:c,textHash:chunkEFJCC6FJ_cjs.a(o),text:o,expressions:[],bytecodes:[],reads:[],writes:[],results:[],result:null,dirty:true,isVariableDef:false,isEmpty:o.trim().length===0,inlineSolveCount:0});}for(let o of l)this.dirtyLineIds.add(o);if(this.tagIndex!==null)for(let o of l)this.indexTags(o,this.lines.get(o).text);let u=this.orderTree.spliceAt(s,i.deleteCount,l);for(let o of u)t.push(o),this.tagIndex!==null&&this.unindexTags(o,this.lines.get(o)?.text??""),this.lines.delete(o),this.dirtyLineIds.delete(o);}return this._positionCache=null,{inserted:n,removed:t}}insertLines(e,n){let t={startLine:e,deleteCount:0,insertLines:n};return this.applyChanges([t]).inserted}deleteLines(e,n){let t={startLine:e,deleteCount:n-e+1,insertLines:[]};return this.applyChanges([t]).removed}editLine(e,n){let t=this.getLineAt(e);if(!t)return false;let r=chunkEFJCC6FJ_cjs.a(n);return r===t.textHash?false:(this.tagIndex!==null&&(this.unindexTags(t.lineId,t.text),this.indexTags(t.lineId,n)),t.text=n,t.textHash=r,t.expressions=[],t.bytecodes=[],t.results=[],t.result=null,t.inlineSolveCount=0,t.dirty=true,this.dirtyLineIds.add(t.lineId),t.isEmpty=n.trim().length===0,true)}linesCarryingTag(e){let n=this.ensureTagIndex().get(e.toLowerCase());if(n===void 0||n.size===0)return [];let t=[];for(let r of n){let i=this.getLinePosition(r);i>0&&t.push(i);}return t.sort((r,i)=>r-i),t}ensureTagIndex(){if(this.tagIndex!==null)return this.tagIndex;this.tagIndex=new Map;for(let e of this.lines.values())this.indexTags(e.lineId,e.text);return this.tagIndex}indexTags(e,n){if(!(n.indexOf("#")<0))for(let t of chunkR35GD4DP_cjs.b(n)){let r=this.tagIndex.get(t);r===void 0?this.tagIndex.set(t,new Set([e])):r.add(e);}}unindexTags(e,n){if(!(n.indexOf("#")<0))for(let t of chunkR35GD4DP_cjs.b(n)){let r=this.tagIndex.get(t);r!==void 0&&(r.delete(e),r.size===0&&this.tagIndex.delete(t));}}getLineAt(e){let n=e-1,t=this.orderTree.getAt(n);if(t!==void 0)return this.lines.get(t)}getLinePosition(e){if(this._positionCache)return this._positionCache.get(e)??-1;this._positionCache=new Map;let n=1;for(let t of this.orderTree)this._positionCache.set(t,n++);return this._positionCache.get(e)??-1}getVisibleLines(e,n){let t=this.orderTree.getRange(e-1,n-1),r=[];for(let i of t){let s=this.lines.get(i);s&&r.push(s);}return r}getLineStatesInRange(e,n){let t=this.orderTree.getRange(e-1,n-1),r=new Array(t.length);for(let i=0;i<t.length;i++)r[i]=this.lines.get(t[i]);return r}getAllLines(){return this.getVisibleLines(1,this.lineCount)}getLineById(e){return this.lines.get(e)}getDirtyLines(){let e=[];for(let n of this.lines.values())n.dirty&&e.push(n);return e}hasAnyDirtyLineBefore(e){for(let n of this.dirtyLineIds){let t=this.getLinePosition(n);if(t>=1&&t<e)return true}return false}hasAnyDirtyVariableDefLineBefore(e){for(let n of this.dirtyLineIds){let t=this.lines.get(n);if(!t||!t.isVariableDef)continue;let r=this.getLinePosition(n);if(r>=1&&r<e)return true}return false}get dirtyCount(){return this.dirtyLineIds.size}isBytecodeValid(e,n){let t=this.lines.get(e);return t!==void 0&&t.textHash===n}markClean(e){let n=this.lines.get(e);n&&(n.dirty=false,this.dirtyLineIds.delete(e));}markDirtyByLineNumber(e){let n=this.getLineAt(e);n&&(n.dirty=true,this.dirtyLineIds.add(n.lineId));}markDirty(e){let n=this.lines.get(e);n&&(n.dirty=true,this.dirtyLineIds.add(e));}invalidateAll(){for(let e of this.lines.values())e.dirty=true;this.dirtyLineIds=new Set(this.lines.keys());}updateLineResult(e,n,t,r,i,s,l,u=0){let o=this.lines.get(e);o&&(o.results=n,o.result=n[0]?.[0]??null,o.bytecodes=t,o.expressions=r,o.reads=i,o.writes=s,o.isVariableDef=l,o.inlineSolveCount=u,o.dirty=false,this.dirtyLineIds.delete(e));}updateLineCompiled(e,n,t,r,i,s,l=0){let u=this.lines.get(e);u&&(u.expressions=n,u.bytecodes=t,u.reads=r,u.writes=i,u.isVariableDef=s,u.inlineSolveCount=l);}get lineCount(){return this.orderTree.length}get isEmpty(){return this.orderTree.isEmpty}*[Symbol.iterator](){for(let e of this.orderTree){let n=this.lines.get(e);n&&(yield n);}}clear(){this.lines.clear(),this.orderTree.clear(),this._positionCache=null,this.nextLineId=1,this.tagIndex=null;}toJSON(){return {lineCount:this.lineCount,lines:this.getAllLines().map(e=>({lineId:e.lineId,text:e.text.substring(0,80),textHash:e.textHash,dirty:e.dirty,isVariableDef:e.isVariableDef,isEmpty:e.isEmpty,hasBytecode:e.bytecodes.length>0,hasResult:e.results.length>0,inlineSolveCount:e.inlineSolveCount,reads:e.reads,writes:e.writes}))}}};var A=class{constructor(){this.worker=null;this.nextId=1;this.pending=new Map;}ensureWorker(){if(this.worker)return this.worker;let e=chunk7TMPBP5P_cjs.h();if(e===null)throw new Error("no engine worker factory registered, so compilation stays on the main thread");return this.worker=e(),this.worker.onmessage=n=>{let t=n.data;if(!t||t.type!=="COMPILE_RESULT")return;let r=this.pending.get(t.id);if(!r)return;this.pending.delete(t.id);let i=[];for(let s of t.results)i.push(this.reconstructResult(s));r.resolve(i);},this.worker.onerror=n=>{for(let[t,r]of this.pending)r.reject(new Error(`Compilation worker error: ${n.message}`)),this.pending.delete(t);},this.worker}async compileBatch(e){if(e.length===0)return [];let n=this.ensureWorker(),t=this.nextId++;return new Promise((r,i)=>{this.pending.set(t,{resolve:r,reject:i}),n.postMessage({type:"COMPILE_BATCH",id:t,items:e});})}storeResults(e,n){let t=new Map;for(let s of e){if(s.error)continue;let l=n.getLineById(s.lineId);if(!l||l.textHash!==s.compiledAgainstHash)continue;let u=t.get(s.lineId);u||(u={bytecodes:[],reads:new Set,writes:new Set,isVariableDef:false,expressions:l.expressions.length>0?[...l.expressions]:[],textHash:s.compiledAgainstHash},t.set(s.lineId,u)),u.bytecodes.push(s.program);for(let o of s.reads)u.reads.add(o);for(let o of s.writes)u.writes.add(o);s.isVariableDef&&(u.isVariableDef=true);}let i=0;for(let[s,l]of t){if(l.bytecodes.length===0)continue;let o=n.getLineById(s)?.inlineSolveCount??0;n.updateLineCompiled(s,l.expressions,l.bytecodes,[...l.reads],[...l.writes],l.isVariableDef,o),i+=l.bytecodes.length;}return i}terminate(){this.worker&&(this.worker.terminate(),this.worker=null,this.pending.clear());}get isActive(){return this.worker!==null}reconstructResult(e){if(e.error)return {lineId:e.lineId,compiledAgainstHash:e.compiledAgainstHash,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},reads:[],writes:[],isVariableDef:false,error:e.error};let n=e.opcodesLength>0?new Uint8Array(e.opcodesBuffer,0,e.opcodesLength):new Uint8Array(0),t=e.numbersLength>0?new Float64Array(e.numbersBuffer,0,e.numbersLength):new Float64Array(0),r={opcodes:n,numbers:t,strings:e.strings,hasAsync:false};return {lineId:e.lineId,compiledAgainstHash:e.compiledAgainstHash,program:r,reads:e.reads,writes:e.writes,isVariableDef:e.isVariableDef,error:null}}};var j=128,k=3,ee=6,te=2,ne=k,W=class a{constructor(){this.lastViewportStart=null;this.savedDirection=null;this.pageAccess=new Map;this.accessSeq=0;}static pageForLine(e){return Math.floor((e-1)/j)}static pageRange(e,n){return {startLine:e*j+1,endLine:Math.min((e+1)*j,n)}}detectDirection(e){return this.lastViewportStart===null?null:e.startLine>this.lastViewportStart?"down":e.startLine<this.lastViewportStart?"up":null}maintainAfterEval(e,n){this.savedDirection=this.detectDirection(e),this.lastViewportStart=e.startLine;let t=n.lineCount,r=a.pageForLine(e.startLine),i=a.pageForLine(e.endLine),s=a.pageForLine(t),l=Math.max(0,r-k),u=Math.min(s,i+k),o=Math.max(0,r-ee),c=Math.min(s,i+ee);for(let p=l;p<=u;p++)this.touchPage(p);for(let p=o;p<=c;p++)p>=l&&p<=u||this.evictPageResults(p,n,t);let h=o-1,d=Math.max(0,h-ne+1);for(let p=d;p<=h;p++)this.evictPageBytecode(p,n,t);let f=c+1,g=Math.min(s,f+ne-1);for(let p=f;p<=g;p++)this.evictPageBytecode(p,n,t);}getPreloadTargets(e,n){let t=this.savedDirection;if(!t)return [];let r=[],i=a.pageForLine(e.endLine),s=a.pageForLine(e.startLine),l=a.pageForLine(n.lineCount),u=[];if(t==="down"){let o=i+k+1,c=Math.min(o+te-1,l);for(let h=o;h<=c&&h<=l;h++)u.push(h);}else {let o=s-k-1;for(let c=o;c>o-te&&c>=0;c--)u.push(c);}for(let o of u){let c=a.pageRange(o,n.lineCount);for(let h=c.startLine;h<=c.endLine;h++){let d=n.getLineAt(h);if(d&&d.dirty&&!(d.bytecodes.length>0&&!d.isVariableDef)&&!d.isEmpty)if(d.expressions.length>0)for(let f of d.expressions)f.trim()&&r.push({lineId:d.lineId,expression:f,textHash:d.textHash});else {let f=chunk3MG7VIPL_cjs.c.findInlineSolves(d.text);if(f.length>0)for(let g of f)g.expression.trim()&&r.push({lineId:d.lineId,expression:g.expression,textHash:d.textHash});else {let g=d.text.trim();g&&r.push({lineId:d.lineId,expression:g,textHash:d.textHash});}}}}return r}clear(){this.pageAccess.clear(),this.accessSeq=0,this.lastViewportStart=null,this.savedDirection=null;}touchPage(e){this.pageAccess.set(e,++this.accessSeq);}evictPageResults(e,n,t){let r=a.pageRange(e,t);for(let i=r.startLine;i<=r.endLine;i++){let s=n.getLineAt(i);s&&!s.isVariableDef&&s.results.length>0&&(s.results=[],s.result=null);}}evictPageBytecode(e,n,t){let r=a.pageRange(e,t);for(let i=r.startLine;i<=r.endLine;i++){let s=n.getLineAt(i);!s||s.isVariableDef||(s.bytecodes.length>0||s.results.length>0)&&(s.bytecodes=[],s.results=[],s.result=null,n.markDirty(s.lineId));}}};var re=(r=>(r[r.Tier1=1]="Tier1",r[r.Tier2=2]="Tier2",r[r.Tier3=3]="Tier3",r[r.Skipped=0]="Skipped",r))(re||{}),w=class{constructor(e,n,t){this.compilationWorker=null;this.globalUnsubscribe=null;this.doc=e,this.engine=n,this.dag=n.getDag(),this.checkpointer=t??null,this.pageManager=new W,this.engine.setDocumentModel(this.doc),this.globalUnsubscribe=chunk4CECSCRX_cjs.M.subscribe(r=>{for(let i of this.dag.getAffectedLines(chunk4CECSCRX_cjs.N(r)))this.doc.markDirtyByLineNumber(i);});}evaluate(e,n){this.engine.setKeystrokeSignal(n??null),chunkNH74IT7B_cjs.h();try{this.reseedAccumulators();let t=[],r=new Map,i={tier1:0,tier2:0,tier3:0,skipped:0},s=this.doc.lineCount,l=Math.min(e.endLine,s),u=this.doc.getLineStatesInRange(1,l);for(let o=1;o<=l;o++){let c=u[o-1];if(!c){i.skipped++;continue}let h=o>=e.startLine&&o<=e.endLine,d=this.evaluateSingleLine(c,o,h);t.push(d),d.tier===1?i.tier1++:d.tier===2?i.tier2++:d.tier===3?i.tier3++:i.skipped++,d.results&&h&&r.set(o,d.results.flat());}return this.pageManager.maintainAfterEval(e,this.doc),{lines:t,resultMap:r,tierCounts:i}}finally{this.engine.setKeystrokeSignal(null),chunkNH74IT7B_cjs.i();}}backgroundCompile(e){let n=[],t=this.doc.lineCount,r=e.endLine+1;for(let i=r;i<=t;i++){let s=this.doc.getLineAt(i);if(!s||!s.dirty||s.bytecodes.length>0&&!s.isVariableDef)continue;let l=this.evaluateSingleLine(s,i,false);n.push(l);}return n}dispatchBackgroundCompiles(e){let n=this.collectInvisibleCompileTargets(e);n.length!==0&&(this.compilationWorker||(this.compilationWorker=new A),this.compilationWorker.compileBatch(n).then(t=>{this.compilationWorker.storeResults(t,this.doc);}).catch(t=>{}));}terminateWorker(){this.compilationWorker&&(this.compilationWorker.terminate(),this.compilationWorker=null),this.globalUnsubscribe&&(this.globalUnsubscribe(),this.globalUnsubscribe=null);}getDoc(){return this.doc}evaluateAll(e){let n={startLine:1,endLine:this.doc.lineCount};return this.evaluate(n,e)}setViewport(e,n){if(this.engine.setKeystrokeSignal(n??null),e.startLine>1&&this.hasDirtyLinesBefore(e.startLine))return this.checkpointer?.clear(),this.evaluate(e,n);this.pageManager.maintainAfterEval(e,this.doc),this.preloadNextPages(e),this.restoreTo(e.startLine-1),chunkNH74IT7B_cjs.h();try{return this.collectEvalResults(e.startLine,e.endLine)}finally{this.engine.setKeystrokeSignal(null),chunkNH74IT7B_cjs.i();}}applyTransaction(e){let n=new Set;for(let i of e)for(let s=0;s<i.deleteCount;s++){let l=i.startLine+s,u=this.dag.getWrites(l);for(let o of u)n.add(o);this.dag.removeLine(l),this.engine.getLineCache().removeAllForLine(l);}let t=new Set;for(let i of n){let s=this.dag.getAffectedLines(i);for(let l of s){let u=this.doc.getLineAt(l);u&&t.add(u.lineId);}}let r=this.doc.applyChanges(e);this.checkpointer?.clear();for(let i of t)this.doc.markDirty(i);return this.dag.clear(),{inserted:r.inserted,removed:r.removed}}reseedAccumulators(){let e=this.engine.resetAccumulators();if(e.size===0)return;let n=this.doc.lineCount;for(let t=1;t<=n;t++){let r=this.dag.getWrites(t);if(r.size!==0){for(let i of r)if(e.has(i)){this.doc.markDirtyByLineNumber(t);break}}}}collectEvalResults(e,n){let t=[],r=new Map,i={tier1:0,tier2:0,tier3:0,skipped:0},s=this.doc.lineCount,l=Math.min(n,s);for(let u=e;u<=l;u++){let o=this.doc.getLineAt(u);if(!o)continue;let c=this.evaluateSingleLine(o,u,true);t.push(c),c.tier===1?i.tier1++:c.tier===2?i.tier2++:c.tier===3?i.tier3++:i.skipped++,c.results&&r.set(u,c.results.flat());}return {lines:t,resultMap:r,tierCounts:i}}hasDirtyLinesBefore(e){return this.doc.hasAnyDirtyVariableDefLineBefore(e)}evaluateSingleLine(e,n,t){let r={lineId:e.lineId,lineNumber:n};if(!e.dirty&&!t)return {...r,tier:0,result:null,error:null};if(e.isEmpty||chunk7TMPBP5P_cjs.m(e.text))return e.isEmpty=true,this.doc.markClean(e.lineId),{...r,tier:0,result:null,error:null};let{expressions:i,inlineSolveCount:s}=this.extractExpressions(e);return i.length===0?(e.isEmpty=true,this.doc.markClean(e.lineId),{...r,tier:0,result:null,error:null}):e.dirty?t?this.evaluateTier1(e,n,i,s,r):e.bytecodes.length>0&&e.bytecodes.length===i.length&&!e.isVariableDef?{...r,tier:0,result:null,error:null}:this.evaluateTier3(e,n,i,s,r):t&&e.bytecodes.length>0?this.evaluateTier2(e,n,r):{...r,tier:0,result:null,error:null}}registerWithTags(e,n,t){let r=this.doc.getLineAt(e)?.text??"",i=chunkR35GD4DP_cjs.a(r,n,t);this.dag.registerLine(e,i.reads,i.writes);}evaluateTier1(e,n,t,r,i){let s=[],l=[],u=new Set,o=new Set,c=false,h=null,d=null,f=false,g=false;for(let y of t){if(!y.trim())continue;let b=null,L;try{let m=this.engine.evaluateLine(n,y);b=[m],h=m,L=this.engine.getLineCache().get(n,y);}catch(m){let x=m instanceof Error?m.message:String(m);d||(d=x),f=true,b=null;}if(b&&b.some(m=>m.type===12)&&(g=true),b?s.push(b):s.push([chunkNH74IT7B_cjs.P("eval_failed",d??"unknown error")]),L){l.push(L.bytecode);for(let m of L.readVariables)u.add(m);L.writeVariable&&(o.add(L.writeVariable),c=true);}else try{let{program:m,reads:x,writes:I}=this.engine.compileExpression(y);l.push(m);for(let E of x)u.add(E);for(let E of I)o.add(E);I.length>0&&(c=!0);}catch(m){if(l.push({opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false}),m instanceof chunk6SYU4MH7_cjs.b&&m.context){let x=m.context.reads,I=m.context.writes;if(Array.isArray(x))for(let E of x)u.add(E);if(Array.isArray(I))for(let E of I)o.add(E);}}}let p=[...u],v=[...o];return f||g?(this.doc.updateLineCompiled(e.lineId,t,l,p,v,c,r),e.results=s,e.result=s[0]?.[0]??null,e.inlineSolveCount=r,e.expressions=t):this.doc.updateLineResult(e.lineId,s,l,t,p,v,c,r),this.registerWithTags(n,p,v),this.checkpointer&&v.length>0&&!f&&!g&&this.checkpointer.snapshot(n,e.lineId,v),{...i,tier:1,result:h,results:s,error:d}}evaluateTier2(e,n,t){if(e.bytecodes.length===0)return {...t,tier:0,result:null,error:null};let r=[],i=null,s=null,l=false;for(let u of e.bytecodes)if(u.opcodes.length!==0)try{let o=this.engine.executeCached(u,n);i=o,r.push([o]);}catch(o){let c=o instanceof Error?o.message:String(o);s||(s=c),l=true,r.push([chunkNH74IT7B_cjs.P("exec_failed",c)]);}return this.registerWithTags(n,e.reads,e.writes),r.length>0?(e.results=r,e.result=r[0][0]??null):e.result!==null&&chunkNH74IT7B_cjs.j()&&(e.results=e.results.map(u=>u.map(chunkNH74IT7B_cjs.k)),e.result=e.results[0]?.[0]??chunkNH74IT7B_cjs.k(e.result)),l&&this.doc.markDirty(e.lineId),this.checkpointer&&e.writes.length>0&&!l&&this.checkpointer.snapshot(n,e.lineId,e.writes),{...t,tier:2,result:r.length>0?i:e.result,results:r.length>0?r:e.results,error:s}}evaluateTier3(e,n,t,r,i){let s=[],l=new Set,u=new Set,o=false,c=null,h=null,d=false,f=false;for(let v of t)if(v.trim())try{let{program:y,reads:b,writes:L}=this.engine.compileExpression(v);s.push(y);for(let m of b)l.add(m);for(let m of L)u.add(m);L.length>0&&(o=!0),L.length>0&&y.opcodes.length>0&&(c=this.engine.executeCached(y,n),c&&c.type===12&&(f=!0));}catch(y){let b=y instanceof Error?y.message:String(y);h||(h=b),d=true,s.push({opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false});}let g=[...l],p=[...u];return this.doc.updateLineCompiled(e.lineId,t,s,g,p,o,r),this.registerWithTags(n,g,p),o&&c&&!d&&!f&&(e.results=[[c]],e.result=c,this.doc.markClean(e.lineId),this.checkpointer&&this.checkpointer.snapshot(n,e.lineId,p)),{...i,tier:3,result:c,results:o&&c&&!d&&!f?[[c]]:void 0,error:h}}restoreTo(e){this.checkpointer&&this.checkpointer.restoreTo(e);}getCheckpointer(){return this.checkpointer}getPageManager(){return this.pageManager}preloadNextPages(e){let n=this.pageManager.getPreloadTargets(e,this.doc);n.length!==0&&(this.compilationWorker||(this.compilationWorker=new A),this.compilationWorker.compileBatch(n).then(t=>{this.compilationWorker.storeResults(t,this.doc);}).catch(t=>{}));}collectInvisibleCompileTargets(e){let n=[],t=this.doc.lineCount,r=e.endLine+1;for(let i=r;i<=t;i++){let s=this.doc.getLineAt(i);if(!s||!s.dirty||s.bytecodes.length>0&&!s.isVariableDef||s.isEmpty||chunk7TMPBP5P_cjs.m(s.text))continue;let{expressions:l}=this.extractExpressions(s);if(l.length!==0)for(let u of l)u.trim()&&n.push({lineId:s.lineId,expression:u,textHash:s.textHash});}return n}extractExpressions(e){if(e.expressions.length>0)return {expressions:e.expressions,inlineSolveCount:e.inlineSolveCount};let n=e.text.trim();if(n.length===0)return {expressions:[],inlineSolveCount:0};let t=chunk3MG7VIPL_cjs.c.findInlineSolves(e.text);return t.length>0?{expressions:t.map(r=>r.expression),inlineSolveCount:t.length}:{expressions:[n],inlineSolveCount:0}}};function ie(a){return typeof a.unit=="string"?a.unit:String(a.value)}function ae(a,e,n={inputType:"markdown"}){let t=a.getDocumentModel(),r=new R;r.setDocument(e);let i=new w(r,a);try{let s=r.lineCount;i.evaluate({startLine:1,endLine:s});let l=[],u=[],o=0;for(let c=1;c<=s;c++){let h=r.getLineAt(c),d=h.text,f=o,g=o+d.length;o=g+1;let p=h.inlineSolveCount>0,v=[],y=null,b=null;h.isEmpty||(p?v=chunk7TMPBP5P_cjs.n(d,c).map((L,m)=>{let x=h.results[m]?.[0]??null;if(x&&x.type===13){let I=ie(x);return u.push(`Line ${c}: ${I}`),{...L,result:null,error:I}}return {...L,result:x,error:null}}):(y=h.expressions[0]??null,b=h.result??null,b&&b.type===13&&u.push(`Line ${c}: ${ie(b)}`))),l.push({lineNumber:c,text:d,startPosition:f,endPosition:g,isEmpty:h.isEmpty,hasInlineSolves:p,inlineSolves:v,expression:y,error:null,result:b});}return {lines:l,totalLines:s,errors:u}}finally{i.terminateWorker(),a.setDocumentModel(t);}}exports.a=R;exports.b=re;exports.c=w;exports.d=ae;//# sourceMappingURL=chunk-WSMGTKCC.cjs.map
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
'use strict';var chunkEFJCC6FJ_cjs=require('./chunk-EFJCC6FJ.cjs'),chunkQCH4JXSZ_cjs=require('./chunk-QCH4JXSZ.cjs'),chunkU54BIYXO_cjs=require('./chunk-U54BIYXO.cjs'),chunkUURM7P3P_cjs=require('./chunk-UURM7P3P.cjs'),chunk6ADFAXTZ_cjs=require('./chunk-6ADFAXTZ.cjs'),chunkNH74IT7B_cjs=require('./chunk-NH74IT7B.cjs'),chunkCW623SJ7_cjs=require('./chunk-CW623SJ7.cjs'),chunk3MG7VIPL_cjs=require('./chunk-3MG7VIPL.cjs'),chunk6SYU4MH7_cjs=require('./chunk-6SYU4MH7.cjs');var M=class{constructor(){this.root=null;}get length(){return this.root?this.root.size:0}get isEmpty(){return this.root===null}getAt(e){if(!(e<0||e>=(this.root?.size??0)))return this.nodeAt(this.root,e).lineId}insertAt(e,n){let[t,r]=C(this.root,e);this.root=S(S(t,se(n)),r);}deleteAt(e){if(e<0||e>=(this.root?.size??0))return;let[n,t]=C(this.root,e),[r,i]=C(t,1),s=r?r.lineId:void 0;return this.root=S(n,i),s}spliceAt(e,n,t){let r=Math.max(0,e),i=Math.min(Math.max(0,n),(this.root?.size??0)-r),[s,l]=C(this.root,r),[u,o]=C(l,i),c=oe(u),h=B(t,0,t.length);return this.root=S(S(s,h),o),c}replaceAll(e){this.root=B(e,0,e.length);}getRange(e,n){let t=Math.max(0,e),r=Math.min((this.root?.size??0)-1,n);if(t>r)return [];let i=[];return this.collectRange(this.root,t,r,0,i),i}clear(){this.root=null;}*[Symbol.iterator](){yield*this.inOrder(this.root);}*inOrder(e){e&&(yield*this.inOrder(e.left),yield e.lineId,yield*this.inOrder(e.right));}nodeAt(e,n){let t=e.left?e.left.size:0;return n<t?this.nodeAt(e.left,n):n===t?e:this.nodeAt(e.right,n-t-1)}collectRange(e,n,t,r,i){if(!e)return;let s=e.left?e.left.size:0,l=r+s;l>n&&e.left&&this.collectRange(e.left,n,t,r,i),l>=n&&l<=t&&i.push(e.lineId),l<t&&e.right&&this.collectRange(e.right,n,t,l+1,i);}};function se(a){return {lineId:a,size:1,priority:Math.random(),left:null,right:null}}function P(a){a.size=1+(a.left?a.left.size:0)+(a.right?a.right.size:0);}function S(a,e){return a?e?a.priority>e.priority?(a.right=S(a.right,e),P(a),a):(e.left=S(a,e.left),P(e),e):a:e}function C(a,e){if(!a)return [null,null];let n=a.left?a.left.size:0;if(e<=n){let[t,r]=C(a.left,e);return a.left=r,P(a),[t,a]}else {let[t,r]=C(a.right,e-n-1);return a.right=t,P(a),[a,r]}}function oe(a){let e=[];return _(a,e),e}function _(a,e){a&&(_(a.left,e),e.push(a.lineId),_(a.right,e));}function B(a,e,n){if(e>=n)return null;let t=Math.floor((e+n)/2),r=le(a[t]);return {lineId:a[t],size:n-e,priority:r,left:B(a,e,t),right:B(a,t+1,n)}}function le(a){let e=a+2654435769|0;return e=Math.imul(e>>>16^e,73244475),e=Math.imul(e>>>16^e,73244475),e=(e>>>16^e)>>>0,e/4294967296}var R=class{constructor(e=chunkCW623SJ7_cjs.b.performance.maxDocumentLines){this.lines=new Map;this.orderTree=new M;this.nextLineId=1;this._positionCache=null;this.dirtyLineIds=new Set;this.tagIndex=null;this.maxLines=e;}setDocument(e){if(chunkUURM7P3P_cjs.b(e,this.maxLines)>this.maxLines)throw chunk6SYU4MH7_cjs.c.execution("DOCUMENT_TOO_LARGE",`This document has more than ${this.maxLines.toLocaleString("en-US")} lines, which is the most the engine will hold at once`,{maxLines:this.maxLines});this.lines.clear(),this.orderTree.clear(),this._positionCache=null,this.dirtyLineIds.clear(),this.nextLineId=1,this.tagIndex=null;let t=e.split(`
|
|
2
|
+
`),r=new Array(t.length);for(let i=0;i<t.length;i++){let s=this.nextLineId++;r[i]=s,this.lines.set(s,{lineId:s,textHash:chunkEFJCC6FJ_cjs.a(t[i]),text:t[i],expressions:[],bytecodes:[],reads:[],writes:[],results:[],result:null,dirty:true,isVariableDef:false,isEmpty:t[i].trim().length===0,inlineSolveCount:0});}this.orderTree.replaceAll(r);for(let i of r)this.dirtyLineIds.add(i);}applyChanges(e){let n=[],t=[],r=[...e].sort((i,s)=>s.startLine-i.startLine);for(let i of r){let s=i.startLine-1,l=[];for(let o of i.insertLines){let c=this.nextLineId++;l.push(c),n.push(c),this.lines.set(c,{lineId:c,textHash:chunkEFJCC6FJ_cjs.a(o),text:o,expressions:[],bytecodes:[],reads:[],writes:[],results:[],result:null,dirty:true,isVariableDef:false,isEmpty:o.trim().length===0,inlineSolveCount:0});}for(let o of l)this.dirtyLineIds.add(o);if(this.tagIndex!==null)for(let o of l)this.indexTags(o,this.lines.get(o).text);let u=this.orderTree.spliceAt(s,i.deleteCount,l);for(let o of u)t.push(o),this.tagIndex!==null&&this.unindexTags(o,this.lines.get(o)?.text??""),this.lines.delete(o),this.dirtyLineIds.delete(o);}return this._positionCache=null,{inserted:n,removed:t}}insertLines(e,n){let t={startLine:e,deleteCount:0,insertLines:n};return this.applyChanges([t]).inserted}deleteLines(e,n){let t={startLine:e,deleteCount:n-e+1,insertLines:[]};return this.applyChanges([t]).removed}editLine(e,n){let t=this.getLineAt(e);if(!t)return false;let r=chunkEFJCC6FJ_cjs.a(n);return r===t.textHash?false:(this.tagIndex!==null&&(this.unindexTags(t.lineId,t.text),this.indexTags(t.lineId,n)),t.text=n,t.textHash=r,t.expressions=[],t.bytecodes=[],t.results=[],t.result=null,t.inlineSolveCount=0,t.dirty=true,this.dirtyLineIds.add(t.lineId),t.isEmpty=n.trim().length===0,true)}linesCarryingTag(e){let n=this.ensureTagIndex().get(e.toLowerCase());if(n===void 0||n.size===0)return [];let t=[];for(let r of n){let i=this.getLinePosition(r);i>0&&t.push(i);}return t.sort((r,i)=>r-i),t}ensureTagIndex(){if(this.tagIndex!==null)return this.tagIndex;this.tagIndex=new Map;for(let e of this.lines.values())this.indexTags(e.lineId,e.text);return this.tagIndex}indexTags(e,n){if(!(n.indexOf("#")<0))for(let t of chunkU54BIYXO_cjs.b(n)){let r=this.tagIndex.get(t);r===void 0?this.tagIndex.set(t,new Set([e])):r.add(e);}}unindexTags(e,n){if(!(n.indexOf("#")<0))for(let t of chunkU54BIYXO_cjs.b(n)){let r=this.tagIndex.get(t);r!==void 0&&(r.delete(e),r.size===0&&this.tagIndex.delete(t));}}getLineAt(e){let n=e-1,t=this.orderTree.getAt(n);if(t!==void 0)return this.lines.get(t)}getLinePosition(e){if(this._positionCache)return this._positionCache.get(e)??-1;this._positionCache=new Map;let n=1;for(let t of this.orderTree)this._positionCache.set(t,n++);return this._positionCache.get(e)??-1}getVisibleLines(e,n){let t=this.orderTree.getRange(e-1,n-1),r=[];for(let i of t){let s=this.lines.get(i);s&&r.push(s);}return r}getLineStatesInRange(e,n){let t=this.orderTree.getRange(e-1,n-1),r=new Array(t.length);for(let i=0;i<t.length;i++)r[i]=this.lines.get(t[i]);return r}getAllLines(){return this.getVisibleLines(1,this.lineCount)}getLineById(e){return this.lines.get(e)}getDirtyLines(){let e=[];for(let n of this.lines.values())n.dirty&&e.push(n);return e}hasAnyDirtyLineBefore(e){for(let n of this.dirtyLineIds){let t=this.getLinePosition(n);if(t>=1&&t<e)return true}return false}hasAnyDirtyVariableDefLineBefore(e){for(let n of this.dirtyLineIds){let t=this.lines.get(n);if(!t||!t.isVariableDef)continue;let r=this.getLinePosition(n);if(r>=1&&r<e)return true}return false}get dirtyCount(){return this.dirtyLineIds.size}isBytecodeValid(e,n){let t=this.lines.get(e);return t!==void 0&&t.textHash===n}markClean(e){let n=this.lines.get(e);n&&(n.dirty=false,this.dirtyLineIds.delete(e));}markDirtyByLineNumber(e){let n=this.getLineAt(e);n&&(n.dirty=true,this.dirtyLineIds.add(n.lineId));}markDirty(e){let n=this.lines.get(e);n&&(n.dirty=true,this.dirtyLineIds.add(e));}invalidateAll(){for(let e of this.lines.values())e.dirty=true;this.dirtyLineIds=new Set(this.lines.keys());}updateLineResult(e,n,t,r,i,s,l,u=0){let o=this.lines.get(e);o&&(o.results=n,o.result=n[0]?.[0]??null,o.bytecodes=t,o.expressions=r,o.reads=i,o.writes=s,o.isVariableDef=l,o.inlineSolveCount=u,o.dirty=false,this.dirtyLineIds.delete(e));}updateLineCompiled(e,n,t,r,i,s,l=0){let u=this.lines.get(e);u&&(u.expressions=n,u.bytecodes=t,u.reads=r,u.writes=i,u.isVariableDef=s,u.inlineSolveCount=l);}get lineCount(){return this.orderTree.length}get isEmpty(){return this.orderTree.isEmpty}*[Symbol.iterator](){for(let e of this.orderTree){let n=this.lines.get(e);n&&(yield n);}}clear(){this.lines.clear(),this.orderTree.clear(),this._positionCache=null,this.nextLineId=1,this.tagIndex=null;}toJSON(){return {lineCount:this.lineCount,lines:this.getAllLines().map(e=>({lineId:e.lineId,text:e.text.substring(0,80),textHash:e.textHash,dirty:e.dirty,isVariableDef:e.isVariableDef,isEmpty:e.isEmpty,hasBytecode:e.bytecodes.length>0,hasResult:e.results.length>0,inlineSolveCount:e.inlineSolveCount,reads:e.reads,writes:e.writes}))}}};var A=class{constructor(){this.worker=null;this.nextId=1;this.pending=new Map;}ensureWorker(){if(this.worker)return this.worker;let e=chunkQCH4JXSZ_cjs.h();if(e===null)throw new Error("no engine worker factory registered, so compilation stays on the main thread");return this.worker=e(),this.worker.onmessage=n=>{let t=n.data;if(!t||t.type!=="COMPILE_RESULT")return;let r=this.pending.get(t.id);if(!r)return;this.pending.delete(t.id);let i=[];for(let s of t.results)i.push(this.reconstructResult(s));r.resolve(i);},this.worker.onerror=n=>{for(let[t,r]of this.pending)r.reject(new Error(`Compilation worker error: ${n.message}`)),this.pending.delete(t);},this.worker}async compileBatch(e){if(e.length===0)return [];let n=this.ensureWorker(),t=this.nextId++;return new Promise((r,i)=>{this.pending.set(t,{resolve:r,reject:i}),n.postMessage({type:"COMPILE_BATCH",id:t,items:e});})}storeResults(e,n){let t=new Map;for(let s of e){if(s.error)continue;let l=n.getLineById(s.lineId);if(!l||l.textHash!==s.compiledAgainstHash)continue;let u=t.get(s.lineId);u||(u={bytecodes:[],reads:new Set,writes:new Set,isVariableDef:false,expressions:l.expressions.length>0?[...l.expressions]:[],textHash:s.compiledAgainstHash},t.set(s.lineId,u)),u.bytecodes.push(s.program);for(let o of s.reads)u.reads.add(o);for(let o of s.writes)u.writes.add(o);s.isVariableDef&&(u.isVariableDef=true);}let i=0;for(let[s,l]of t){if(l.bytecodes.length===0)continue;let o=n.getLineById(s)?.inlineSolveCount??0;n.updateLineCompiled(s,l.expressions,l.bytecodes,[...l.reads],[...l.writes],l.isVariableDef,o),i+=l.bytecodes.length;}return i}terminate(){this.worker&&(this.worker.terminate(),this.worker=null,this.pending.clear());}get isActive(){return this.worker!==null}reconstructResult(e){if(e.error)return {lineId:e.lineId,compiledAgainstHash:e.compiledAgainstHash,program:{opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false},reads:[],writes:[],isVariableDef:false,error:e.error};let n=e.opcodesLength>0?new Uint8Array(e.opcodesBuffer,0,e.opcodesLength):new Uint8Array(0),t=e.numbersLength>0?new Float64Array(e.numbersBuffer,0,e.numbersLength):new Float64Array(0),r={opcodes:n,numbers:t,strings:e.strings,hasAsync:false};return {lineId:e.lineId,compiledAgainstHash:e.compiledAgainstHash,program:r,reads:e.reads,writes:e.writes,isVariableDef:e.isVariableDef,error:null}}};var j=128,k=3,ee=6,te=2,ne=k,W=class a{constructor(){this.lastViewportStart=null;this.savedDirection=null;this.pageAccess=new Map;this.accessSeq=0;}static pageForLine(e){return Math.floor((e-1)/j)}static pageRange(e,n){return {startLine:e*j+1,endLine:Math.min((e+1)*j,n)}}detectDirection(e){return this.lastViewportStart===null?null:e.startLine>this.lastViewportStart?"down":e.startLine<this.lastViewportStart?"up":null}maintainAfterEval(e,n){this.savedDirection=this.detectDirection(e),this.lastViewportStart=e.startLine;let t=n.lineCount,r=a.pageForLine(e.startLine),i=a.pageForLine(e.endLine),s=a.pageForLine(t),l=Math.max(0,r-k),u=Math.min(s,i+k),o=Math.max(0,r-ee),c=Math.min(s,i+ee);for(let p=l;p<=u;p++)this.touchPage(p);for(let p=o;p<=c;p++)p>=l&&p<=u||this.evictPageResults(p,n,t);let h=o-1,d=Math.max(0,h-ne+1);for(let p=d;p<=h;p++)this.evictPageBytecode(p,n,t);let f=c+1,g=Math.min(s,f+ne-1);for(let p=f;p<=g;p++)this.evictPageBytecode(p,n,t);}getPreloadTargets(e,n){let t=this.savedDirection;if(!t)return [];let r=[],i=a.pageForLine(e.endLine),s=a.pageForLine(e.startLine),l=a.pageForLine(n.lineCount),u=[];if(t==="down"){let o=i+k+1,c=Math.min(o+te-1,l);for(let h=o;h<=c&&h<=l;h++)u.push(h);}else {let o=s-k-1;for(let c=o;c>o-te&&c>=0;c--)u.push(c);}for(let o of u){let c=a.pageRange(o,n.lineCount);for(let h=c.startLine;h<=c.endLine;h++){let d=n.getLineAt(h);if(d&&d.dirty&&!(d.bytecodes.length>0&&!d.isVariableDef)&&!d.isEmpty)if(d.expressions.length>0)for(let f of d.expressions)f.trim()&&r.push({lineId:d.lineId,expression:f,textHash:d.textHash});else {let f=chunk3MG7VIPL_cjs.c.findInlineSolves(d.text);if(f.length>0)for(let g of f)g.expression.trim()&&r.push({lineId:d.lineId,expression:g.expression,textHash:d.textHash});else {let g=d.text.trim();g&&r.push({lineId:d.lineId,expression:g,textHash:d.textHash});}}}}return r}clear(){this.pageAccess.clear(),this.accessSeq=0,this.lastViewportStart=null,this.savedDirection=null;}touchPage(e){this.pageAccess.set(e,++this.accessSeq);}evictPageResults(e,n,t){let r=a.pageRange(e,t);for(let i=r.startLine;i<=r.endLine;i++){let s=n.getLineAt(i);s&&!s.isVariableDef&&s.results.length>0&&(s.results=[],s.result=null);}}evictPageBytecode(e,n,t){let r=a.pageRange(e,t);for(let i=r.startLine;i<=r.endLine;i++){let s=n.getLineAt(i);!s||s.isVariableDef||(s.bytecodes.length>0||s.results.length>0)&&(s.bytecodes=[],s.results=[],s.result=null,n.markDirty(s.lineId));}}};var re=(r=>(r[r.Tier1=1]="Tier1",r[r.Tier2=2]="Tier2",r[r.Tier3=3]="Tier3",r[r.Skipped=0]="Skipped",r))(re||{}),w=class{constructor(e,n,t){this.compilationWorker=null;this.globalUnsubscribe=null;this.doc=e,this.engine=n,this.dag=n.getDag(),this.checkpointer=t??null,this.pageManager=new W,this.engine.setDocumentModel(this.doc),this.globalUnsubscribe=chunk6ADFAXTZ_cjs.M.subscribe(r=>{for(let i of this.dag.getAffectedLines(chunk6ADFAXTZ_cjs.N(r)))this.doc.markDirtyByLineNumber(i);});}evaluate(e,n){this.engine.setKeystrokeSignal(n??null),chunkNH74IT7B_cjs.h();try{this.reseedAccumulators();let t=[],r=new Map,i={tier1:0,tier2:0,tier3:0,skipped:0},s=this.doc.lineCount,l=Math.min(e.endLine,s),u=this.doc.getLineStatesInRange(1,l);for(let o=1;o<=l;o++){let c=u[o-1];if(!c){i.skipped++;continue}let h=o>=e.startLine&&o<=e.endLine,d=this.evaluateSingleLine(c,o,h);t.push(d),d.tier===1?i.tier1++:d.tier===2?i.tier2++:d.tier===3?i.tier3++:i.skipped++,d.results&&h&&r.set(o,d.results.flat());}return this.pageManager.maintainAfterEval(e,this.doc),{lines:t,resultMap:r,tierCounts:i}}finally{this.engine.setKeystrokeSignal(null),chunkNH74IT7B_cjs.i();}}backgroundCompile(e){let n=[],t=this.doc.lineCount,r=e.endLine+1;for(let i=r;i<=t;i++){let s=this.doc.getLineAt(i);if(!s||!s.dirty||s.bytecodes.length>0&&!s.isVariableDef)continue;let l=this.evaluateSingleLine(s,i,false);n.push(l);}return n}dispatchBackgroundCompiles(e){let n=this.collectInvisibleCompileTargets(e);n.length!==0&&(this.compilationWorker||(this.compilationWorker=new A),this.compilationWorker.compileBatch(n).then(t=>{this.compilationWorker.storeResults(t,this.doc);}).catch(t=>{}));}terminateWorker(){this.compilationWorker&&(this.compilationWorker.terminate(),this.compilationWorker=null),this.globalUnsubscribe&&(this.globalUnsubscribe(),this.globalUnsubscribe=null);}getDoc(){return this.doc}evaluateAll(e){let n={startLine:1,endLine:this.doc.lineCount};return this.evaluate(n,e)}setViewport(e,n){if(this.engine.setKeystrokeSignal(n??null),e.startLine>1&&this.hasDirtyLinesBefore(e.startLine))return this.checkpointer?.clear(),this.evaluate(e,n);this.pageManager.maintainAfterEval(e,this.doc),this.preloadNextPages(e),this.restoreTo(e.startLine-1),chunkNH74IT7B_cjs.h();try{return this.collectEvalResults(e.startLine,e.endLine)}finally{this.engine.setKeystrokeSignal(null),chunkNH74IT7B_cjs.i();}}applyTransaction(e){let n=new Set;for(let i of e)for(let s=0;s<i.deleteCount;s++){let l=i.startLine+s,u=this.dag.getWrites(l);for(let o of u)n.add(o);this.dag.removeLine(l),this.engine.getLineCache().removeAllForLine(l);}let t=new Set;for(let i of n){let s=this.dag.getAffectedLines(i);for(let l of s){let u=this.doc.getLineAt(l);u&&t.add(u.lineId);}}let r=this.doc.applyChanges(e);this.checkpointer?.clear();for(let i of t)this.doc.markDirty(i);return this.dag.clear(),{inserted:r.inserted,removed:r.removed}}reseedAccumulators(){let e=this.engine.resetAccumulators();if(e.size===0)return;let n=this.doc.lineCount;for(let t=1;t<=n;t++){let r=this.dag.getWrites(t);if(r.size!==0){for(let i of r)if(e.has(i)){this.doc.markDirtyByLineNumber(t);break}}}}collectEvalResults(e,n){let t=[],r=new Map,i={tier1:0,tier2:0,tier3:0,skipped:0},s=this.doc.lineCount,l=Math.min(n,s);for(let u=e;u<=l;u++){let o=this.doc.getLineAt(u);if(!o)continue;let c=this.evaluateSingleLine(o,u,true);t.push(c),c.tier===1?i.tier1++:c.tier===2?i.tier2++:c.tier===3?i.tier3++:i.skipped++,c.results&&r.set(u,c.results.flat());}return {lines:t,resultMap:r,tierCounts:i}}hasDirtyLinesBefore(e){return this.doc.hasAnyDirtyVariableDefLineBefore(e)}evaluateSingleLine(e,n,t){let r={lineId:e.lineId,lineNumber:n};if(!e.dirty&&!t)return {...r,tier:0,result:null,error:null};if(e.isEmpty||chunkQCH4JXSZ_cjs.m(e.text))return e.isEmpty=true,this.doc.markClean(e.lineId),{...r,tier:0,result:null,error:null};let{expressions:i,inlineSolveCount:s}=this.extractExpressions(e);return i.length===0?(e.isEmpty=true,this.doc.markClean(e.lineId),{...r,tier:0,result:null,error:null}):e.dirty?t?this.evaluateTier1(e,n,i,s,r):e.bytecodes.length>0&&e.bytecodes.length===i.length&&!e.isVariableDef?{...r,tier:0,result:null,error:null}:this.evaluateTier3(e,n,i,s,r):t&&e.bytecodes.length>0?this.evaluateTier2(e,n,r):{...r,tier:0,result:null,error:null}}registerWithTags(e,n,t){let r=this.doc.getLineAt(e)?.text??"",i=chunkU54BIYXO_cjs.a(r,n,t);this.dag.registerLine(e,i.reads,i.writes);}evaluateTier1(e,n,t,r,i){let s=[],l=[],u=new Set,o=new Set,c=false,h=null,d=null,f=false,g=false;for(let y of t){if(!y.trim())continue;let b=null,L;try{let m=this.engine.evaluateLine(n,y);b=[m],h=m,L=this.engine.getLineCache().get(n,y);}catch(m){let x=m instanceof Error?m.message:String(m);d||(d=x),f=true,b=null;}if(b&&b.some(m=>m.type===12)&&(g=true),b?s.push(b):s.push([chunkNH74IT7B_cjs.P("eval_failed",d??"unknown error")]),L){l.push(L.bytecode);for(let m of L.readVariables)u.add(m);L.writeVariable&&(o.add(L.writeVariable),c=true);}else try{let{program:m,reads:x,writes:I}=this.engine.compileExpression(y);l.push(m);for(let E of x)u.add(E);for(let E of I)o.add(E);I.length>0&&(c=!0);}catch(m){if(l.push({opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false}),m instanceof chunk6SYU4MH7_cjs.b&&m.context){let x=m.context.reads,I=m.context.writes;if(Array.isArray(x))for(let E of x)u.add(E);if(Array.isArray(I))for(let E of I)o.add(E);}}}let p=[...u],v=[...o];return f||g?(this.doc.updateLineCompiled(e.lineId,t,l,p,v,c,r),e.results=s,e.result=s[0]?.[0]??null,e.inlineSolveCount=r,e.expressions=t):this.doc.updateLineResult(e.lineId,s,l,t,p,v,c,r),this.registerWithTags(n,p,v),this.checkpointer&&v.length>0&&!f&&!g&&this.checkpointer.snapshot(n,e.lineId,v),{...i,tier:1,result:h,results:s,error:d}}evaluateTier2(e,n,t){if(e.bytecodes.length===0)return {...t,tier:0,result:null,error:null};let r=[],i=null,s=null,l=false;for(let u of e.bytecodes)if(u.opcodes.length!==0)try{let o=this.engine.executeCached(u,n);i=o,r.push([o]);}catch(o){let c=o instanceof Error?o.message:String(o);s||(s=c),l=true,r.push([chunkNH74IT7B_cjs.P("exec_failed",c)]);}return this.registerWithTags(n,e.reads,e.writes),r.length>0?(e.results=r,e.result=r[0][0]??null):e.result!==null&&chunkNH74IT7B_cjs.j()&&(e.results=e.results.map(u=>u.map(chunkNH74IT7B_cjs.k)),e.result=e.results[0]?.[0]??chunkNH74IT7B_cjs.k(e.result)),l&&this.doc.markDirty(e.lineId),this.checkpointer&&e.writes.length>0&&!l&&this.checkpointer.snapshot(n,e.lineId,e.writes),{...t,tier:2,result:r.length>0?i:e.result,results:r.length>0?r:e.results,error:s}}evaluateTier3(e,n,t,r,i){let s=[],l=new Set,u=new Set,o=false,c=null,h=null,d=false,f=false;for(let v of t)if(v.trim())try{let{program:y,reads:b,writes:L}=this.engine.compileExpression(v);s.push(y);for(let m of b)l.add(m);for(let m of L)u.add(m);L.length>0&&(o=!0),L.length>0&&y.opcodes.length>0&&(c=this.engine.executeCached(y,n),c&&c.type===12&&(f=!0));}catch(y){let b=y instanceof Error?y.message:String(y);h||(h=b),d=true,s.push({opcodes:new Uint8Array(0),numbers:new Float64Array(0),strings:[],hasAsync:false});}let g=[...l],p=[...u];return this.doc.updateLineCompiled(e.lineId,t,s,g,p,o,r),this.registerWithTags(n,g,p),o&&c&&!d&&!f&&(e.results=[[c]],e.result=c,this.doc.markClean(e.lineId),this.checkpointer&&this.checkpointer.snapshot(n,e.lineId,p)),{...i,tier:3,result:c,results:o&&c&&!d&&!f?[[c]]:void 0,error:h}}restoreTo(e){this.checkpointer&&this.checkpointer.restoreTo(e);}getCheckpointer(){return this.checkpointer}getPageManager(){return this.pageManager}preloadNextPages(e){let n=this.pageManager.getPreloadTargets(e,this.doc);n.length!==0&&(this.compilationWorker||(this.compilationWorker=new A),this.compilationWorker.compileBatch(n).then(t=>{this.compilationWorker.storeResults(t,this.doc);}).catch(t=>{}));}collectInvisibleCompileTargets(e){let n=[],t=this.doc.lineCount,r=e.endLine+1;for(let i=r;i<=t;i++){let s=this.doc.getLineAt(i);if(!s||!s.dirty||s.bytecodes.length>0&&!s.isVariableDef||s.isEmpty||chunkQCH4JXSZ_cjs.m(s.text))continue;let{expressions:l}=this.extractExpressions(s);if(l.length!==0)for(let u of l)u.trim()&&n.push({lineId:s.lineId,expression:u,textHash:s.textHash});}return n}extractExpressions(e){if(e.expressions.length>0)return {expressions:e.expressions,inlineSolveCount:e.inlineSolveCount};let n=e.text.trim();if(n.length===0)return {expressions:[],inlineSolveCount:0};let t=chunk3MG7VIPL_cjs.c.findInlineSolves(e.text);return t.length>0?{expressions:t.map(r=>r.expression),inlineSolveCount:t.length}:{expressions:[n],inlineSolveCount:0}}};function ie(a){return typeof a.unit=="string"?a.unit:String(a.value)}function ae(a,e,n={inputType:"markdown"}){let t=a.getDocumentModel(),r=new R;r.setDocument(e);let i=new w(r,a);try{let s=r.lineCount;i.evaluate({startLine:1,endLine:s});let l=[],u=[],o=0;for(let c=1;c<=s;c++){let h=r.getLineAt(c),d=h.text,f=o,g=o+d.length;o=g+1;let p=h.inlineSolveCount>0,v=[],y=null,b=null;h.isEmpty||(p?v=chunkQCH4JXSZ_cjs.n(d,c).map((L,m)=>{let x=h.results[m]?.[0]??null;if(x&&x.type===13){let I=ie(x);return u.push(`Line ${c}: ${I}`),{...L,result:null,error:I}}return {...L,result:x,error:null}}):(y=h.expressions[0]??null,b=h.result??null,b&&b.type===13&&u.push(`Line ${c}: ${ie(b)}`))),l.push({lineNumber:c,text:d,startPosition:f,endPosition:g,isEmpty:h.isEmpty,hasInlineSolves:p,inlineSolves:v,expression:y,error:null,result:b});}return {lines:l,totalLines:s,errors:u}}finally{i.terminateWorker(),a.setDocumentModel(t);}}exports.a=R;exports.b=re;exports.c=w;exports.d=ae;//# sourceMappingURL=chunk-WLY2OSWU.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-WLY2OSWU.cjs.map
|