@milaboratories/pl-middle-layer 1.21.5 → 1.22.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/block_registry/watcher.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -75
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/src/block_registry/watcher.ts +9 -15
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var ts=Object.defineProperty;var rs=(s,e,t)=>e in s?ts(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var b=(s,e,t)=>rs(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const V=require("@platforma-sdk/model"),L=require("@milaboratories/pl-model-middle-layer"),ne=require("undici"),J=require("@platforma-sdk/block-tools"),Y=require("node:fs"),q=require("node:path"),ss=require("yaml"),P=require("@milaboratories/ts-helpers"),os=require("node:fs/promises"),ns=require("@milaboratories/resolve-helper"),f=require("@milaboratories/pl-client"),De=require("@milaboratories/pl-tree"),D=require("@milaboratories/computable"),ie=require("node:crypto"),gr=require("denque"),is=require("@platforma-sdk/workflow-tengo"),pt=require("canonicalize"),as=require("node:assert"),Ae=require("quickjs-emscripten"),mr=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),cs=require("@milaboratories/pframes-node"),ls=require("lru-cache"),us=require("node:diagnostics_channel");function ds(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const vr=ds(os);async function Ft(s){try{return await vr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const ps=[J.RegistryV1.PlPackageYamlConfigFile],hs=[J.RegistryV1.PlPackageJsonConfigFile],ht=["backend","dist","tengo","tpl","main.plj.gz"],ft=["config","dist","config.json"],yr=["frontend","dist"],Lt="block-model/dist/config.json",fs="block-ui/package.json",gs=[ht,ft,ps,hs,yr];async function ms(s){return await Ft(q.join(s,...ft))!==void 0||await Ft(q.join(s,...ht))!==void 0}function He(s,e){const t=ns.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Dt(s,e){if(q.isAbsolute(s)||(s=q.resolve(s)),await ms(s))return{workflow:q.join(s,...ht),config:q.join(s,...ft),ui:q.join(s,...yr)};{const t=He(s,Lt),r=He(s,Lt),o=He(s,fs);return{workflow:t,config:r,ui:q.resolve(o,"..","dist")}}}async function vs(s){try{return await Y.promises.readFile(s,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function ys(s){try{return await Y.promises.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function gt(s){let e=0n;for(const t of gs){const r=q.join(s,...t),o=await ys(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function Be(s){const e=await Y.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await Y.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class ws{constructor(e,t,r){this.v2Provider=e,this.registries=t,this.http=r}async getPackagesForRoot(e){const t=[],r=e.spec;switch(r.type){case"remote-v1":const o=this.http!==void 0?{dispatcher:this.http}:{},i=await(await ne.request(`${r.url}/${J.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const l of i){const{organization:a,package:c,latestMeta:u,latestVersion:d}=l,v={organization:a,name:c,version:d},h={id:v,meta:{title:u.title??"No title",description:u.description??"No Description",organization:{name:a,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:v,registryUrl:r.url}};t.push({registryId:e.id,id:v,latestByChannel:{[L.AnyChannel]:h,[L.StableChannel]:h},allVersions:l.allVersions.map(g=>({version:g,channels:[]}))})}return t;case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(l=>l.latestByChannel[L.StableChannel]?{...l,registryId:e.id}:{...l,latestByChannel:{...l.latestByChannel,[L.StableChannel]:(a=>a.spec.type==="from-registry-v2"?{...a,spec:{...a.spec,channel:L.StableChannel}}:a)(l.latestByChannel[L.AnyChannel])},registryId:e.id});case"local-dev":for(const l of await Y.promises.readdir(r.path,{withFileTypes:!0})){if(!l.isDirectory())continue;const a=q.join(r.path,l.name),c=await vs(q.join(a,J.RegistryV1.PlPackageYamlConfigFile));if(c!==void 0){const u=J.RegistryV1.PlPackageConfigData.parse(ss.parse(c)),d=await gt(a),v={organization:u.organization,name:u.package,version:"DEV"},h={id:v,meta:{title:u.meta.title??"No title",description:u.meta.description??"No Description",organization:{name:u.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:a,mtime:d}};t.push({registryId:e.id,id:v,latestByChannel:{[L.AnyChannel]:h,[L.StableChannel]:h},allVersions:[]})}else{let u=a,d=await J.tryLoadPackDescription(u);if(d===void 0){for(const v of["block","meta"])if(u=q.join(a,v),d=await J.tryLoadPackDescription(u),d!==void 0)break}if(d!==void 0){const v=await Be(d),h={id:d.id,meta:await J.BlockPackMetaEmbedAbsoluteBytes.parseAsync(d.meta),spec:{type:"dev-v2",folder:u,mtime:v}};t.push({registryId:e.id,id:d.id,latestByChannel:{[L.AnyChannel]:h,[L.StableChannel]:h},allVersions:[]})}}}return t;default:return P.assertNever(r)}}async listBlockPacks(){const e=[],t=[];for(const r of this.registries)t.push({...r,status:"online"}),e.push(...await this.getPackagesForRoot(r));return{registries:t,blockPacks:e}}async getOverview(e,t,r){var i;const o=(i=this.registries.find(l=>l.id===e))==null?void 0:i.spec;if(!o)throw new Error(`Registry with id "${e}" not found`);if(o.type!=="remote-v2")throw new Error('Only "remote-v2" registries support specific package version overview retrieval.');return await this.v2Provider.getRegistry(o.url).getSpecificOverview(t,r)}}class wr{constructor(e){b(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new J.RegistryV2Reader(J.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const Ss={type:"remote-v2",url:"https://blocks.pl-open.science/"},bs={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},Cs={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},Es={groups:[{id:"default",label:"Default",blocks:[]}]},Rs={stagingRefreshTimestamp:0,blocksInLimbo:[]},Ps={label:"New Project"},ks={name:"UserProject",version:"2"},Sr="SchemaVersion",br="1",mt="ProjectCreated",be="ProjectLastModified",Ce="ProjectMeta",le="ProjectStructure",Ne="BlockRenderingState",Os="BlockFrontendState/",$s=/^BlockFrontendState\/(?<blockid>.*)$/;function rt(s){return`${Os}${s}`}const Ts="BlockArgsAuthor/";function st(s){return`${Ts}${s}`}const ot="ProjectStructureAuthor";function Is(s){const e=s.match($s);if(e!==null)return e.groups.blockid}const As="__serviceTemplate_";function nt(s){return`${As}${s}`}function G(s,e){return`${s}-${e}`}const Ns=/^(?<blockId>.*)-(?<fieldName>blockPack|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function Fs(s){const e=s.match(Ns);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const Ls="projects",Cr={name:"Projects",version:"1"},Ds=s=>f.resourceTypesEqual(s.type,Cr)?s.fields:[];async function Bs(s,e,t,r){const o=await De.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Ds},r.logger);return{computable:D.Computable.make(i=>{const l=i.accessor(o.entry()).node(),a=t.getValue(i);if(l===void 0)return;const c=[];for(const u of l.listDynamicFields()){const d=l.traverse(u);if(d===void 0)continue;const v=P.notEmpty(d.getKeyValueAsJson(Ce)),h=P.notEmpty(d.getKeyValueAsJson(mt)),g=P.notEmpty(d.getKeyValueAsJson(be));c.push({id:u,rid:d.id,created:new Date(h),lastModified:new Date(g),opened:a.indexOf(d.id)>=0,meta:v})}return c.sort(u=>-u.lastModified.valueOf()),c}).withStableType(),tree:o}}const js={name:"EphRenderTemplate",version:"1"},xs={name:"RenderTemplate",version:"1"};function vt(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(js):s.createStruct(xs),i=f.field(n,"template"),l=f.field(n,"inputs");return s.createField(i,"Input",e),s.createField(l,"Input",f.Pl.createPlMap(s,r,t)),s.lockInputs(n),f.Pl.futureRecord(s,n,o,"Output","outputs/")}const Vs={name:"BContextEnd",version:"1"},Us={name:"BContext",version:"1"},Gs="id",Ms="parent/",Js=["context","result"];function Bt(s,e,t){return vt(s,e,!0,t,Js)}function _s(s){const e=s.createEphemeral(Vs);return s.lock(e),e}function Ks(s,e){if(e.length===0)return _s(s);if(e.length===1)return e[0];const t=s.createEphemeral(Us);s.createField(f.field(t,Gs),"Input",f.Pl.createPlString(s,ie.randomUUID()));for(let r=0;r<e.length;r++)s.createField(f.field(t,`${Ms}${r}`),"Input",e[r]);return s.lock(t),t}const Er={name:"TengoTemplateGet",version:"1"},Rr="registry",Pr="templateURI",kr="template",Or={name:"TengoTemplatePack",version:"1"},$r={name:"TengoTemplatePackConvert",version:"1"},Tr="templatePack",Ir="template";async function Ar(s){switch(s.type){case"from-file":return{type:"explicit",content:await Y.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return P.assertNever(s)}}function Hs(s,e){const t=s.createStruct(Er),r=f.field(t,Rr),o=f.field(t,Pr),n=f.field(t,kr);return s.setField(r,s.createValue(f.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(f.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function qs(s,e){const t=s.createValue(Or,e.content),r=s.createStruct($r),o=f.field(r,Tr),n=f.field(r,Ir);return s.setField(o,t),n}function je(s,e){switch(e.type){case"from-registry":return Hs(s,e);case"explicit":return qs(s,e);default:return P.assertNever(e)}}const yt={name:"Frontend/FromUrl",version:"1"},wt={name:"Frontend/FromFolder",version:"1"};function Ws(s,e){switch(e.type){case"url":return s.createValue(yt,JSON.stringify({url:e.url}));case"local":return s.createValue(wt,JSON.stringify({path:e.path,signature:e.signature}));default:return P.assertNever(e)}}const zs={name:"BlockPackCustom",version:"1"},Nr="template",Fr="frontend";function jt(s){return s.endsWith("/")?s:`${s}/`}class Xs{constructor(e,t,r){this.v2RegistryProvider=e,this.signer=t,this.http=r}async getBlockConfigContainer(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Dt(e.folder),r=await Y.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await J.loadPackDescription(e.folder),r=await Y.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${jt(e.registryUrl)}${J.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await ne.request(`${r}/config.json`,t)).body.json()}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id);return await(await ne.request(o.model.url,t)).body.json()}default:return P.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Dt(e.folder),r=await Y.promises.readFile(t.workflow),o=JSON.parse(await Y.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:r},config:o,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:e}}case"dev-v2":{const t=await J.loadPackDescription(e.folder),r=JSON.parse(await Y.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Y.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await Be(t)),{type:"explicit",template:{type:"explicit",content:o},config:r,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${jt(e.registryUrl)}${J.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,o=`${r}/template.plj.gz`,n=await ne.request(o,t);if(n.statusCode!==200)throw new Error(`Block not found in registry (url = ${o} ; code = ${n.statusCode}): `+JSON.stringify(e));const i=new Uint8Array(await n.body.arrayBuffer()),a=await(await ne.request(`${r}/config.json`,t)).body.json();return{type:"explicit",template:{type:"explicit",content:i},config:a,frontend:{type:"url",url:`${r}/frontend.tgz`},source:e}}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),n=async()=>await(await ne.request(o.model.url,t)).body.json(),i=async()=>await(await ne.request(o.workflow.main.url,t)).body.arrayBuffer(),[l,a]=await Promise.all([n(),i()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(a)},config:l,frontend:{type:"url",url:o.ui.url},source:e}}default:return P.assertNever(e)}}}function Ys(s,e){const t={config:e.config,source:e.source},r=s.createStruct(zs,JSON.stringify(t));return s.createField(f.field(r,Nr),"Input",je(s,e.template)),s.createField(f.field(r,Fr),"Input",Ws(s,e.frontend)),s.lock(r),r}function xt(s,e){switch(e.type){case"explicit":return Ys(s,e);default:return P.assertNever(e.type)}}function Re(s,e){return{__isRef:!0,blockId:s,name:e}}function Zs(s){return typeof s=="object"&&s!==null&&s.__isRef===!0&&"blockId"in s&&"name"in s}function it(s,e,t){const r=typeof e;switch(r){case"function":case"bigint":case"number":case"string":case"boolean":case"symbol":case"undefined":return;case"object":if(e===null)return;if(Zs(e))t===void 0||t.has(e.blockId)?s.upstreams.add(e.blockId):s.missingReferences=!0;else if(Array.isArray(e))for(const o of e)it(s,o,t);else for(const[,o]of Object.entries(e))it(s,o,t);return;default:P.assertNever(r)}}function Qs(s,e){const t={upstreams:new Set,missingReferences:!1};return it(t,s,e),t}function se(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class Lr{constructor(e){b(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,o=>r.add(o.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const o of t)r.delete(o);return r}traverse(e,t,r){let o=[...t];const n=new Set(o);for(;o.length>0;){let i=[];for(const l of o){const a=this.nodes.get(l);r(a),a[e].forEach(c=>{n.has(c)||(n.add(c),i.push(c))})}o=i}}}function at(s){const e=new Map;let t;for(const{id:r}of se(s)){const o={id:r,missingReferences:!1};e.set(r,o),t===void 0?o.upstream=new Set:(o.upstream=new Set([t.id]),t.downstream=new Set([o.id])),t=o}return t!==void 0&&(t.downstream=new Set),new Lr(e)}function Ie(s,e){const t=new Map,r=new Set;for(const{id:o}of se(s)){const n=e(o);if(n===void 0)continue;const i=Qs(n,r),l={id:o,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(o,l),i.upstreams.forEach(a=>t.get(a).downstream.add(o)),r.add(o)}return new Lr(t)}function eo(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function ct(s,e){if(s.size>e.size)return ct(e,s);for(const t of s)if(e.has(t))return!0;return!1}function Vt(s,e){const t=new Set,r=new Set,o=new Set;return s.nodes.forEach(n=>{const i=e.nodes.get(n.id);i===void 0?t.add(n.id):(!eo(n.upstream,i.upstream)||ct(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?ct(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let qe;async function Dr(){if(qe===void 0){const s=await Ar(is.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=ie.createHash("sha256").update(s.content).digest("hex");qe={spec:s,hash:e}}return qe}function to(s,e,t){return vt(s,e,!0,{pf:t},["result"]).result}function We(s,e){let t=!1,r,o;return()=>{if(!t)return t=!0,r=s(),o=e(),o;const n=s();return r!==n&&(r=n,o=e()),e()}}class Ut{constructor(e,t){b(this,"currentInputsC",We(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));b(this,"actualProductionInputsC",We(()=>{var e;return(e=this.fields.prodArgs)==null?void 0:e.modCount},()=>{var t;const e=(t=this.fields.prodArgs)==null?void 0:t.value;if(e!==void 0)return JSON.parse(Buffer.from(e).toString())}));b(this,"productionStaleC",We(()=>{var e;return`${this.fields.currentArgs.modCount}_${(e=this.fields.prodArgs)==null?void 0:e.modCount}`},()=>this.fields.prodArgs===void 0||Buffer.compare(this.fields.currentArgs.value,this.fields.prodArgs.value)!==0));this.id=e,this.fields=t}check(){if(this.fields.prodOutput===void 0!=(this.fields.prodCtx===void 0))throw new Error("inconsistent prod fields");if(this.fields.stagingOutput===void 0!=(this.fields.stagingCtx===void 0))throw new Error("inconsistent stage fields");if(this.fields.prodOutputPrevious===void 0!=(this.fields.prodCtxPrevious===void 0))throw new Error("inconsistent prod cache fields");if(this.fields.stagingOutputPrevious===void 0!=(this.fields.stagingCtxPrevious===void 0))throw new Error("inconsistent stage cache fields");if(this.fields.blockPack===void 0)throw new Error("no block pack field");if(this.fields.currentArgs===void 0)throw new Error("no current args field")}get currentInputs(){return this.currentInputsC()}get stagingRendered(){return this.fields.stagingCtx!==void 0}get productionRendered(){return this.fields.prodCtx!==void 0}get productionStale(){return this.productionRendered&&this.productionStaleC()}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(f.Pl.unwrapHolder(e,this.fields.blockPack.ref),Nr,"Input")}}const ro=s=>{throw new Error(`No new block info for ${s}`)};class Fe{constructor(e,t,r,o,n,i,l,a,c,u,d,v){b(this,"globalModCount",0);b(this,"fieldsChanged",!1);b(this,"lastModifiedChanged",!1);b(this,"structureChanged",!1);b(this,"metaChanged",!1);b(this,"renderingStateChanged",!1);b(this,"changedBlockFrontendStates",new Set);b(this,"blocksWithChangedInputs",new Set);b(this,"stagingGraph");b(this,"pendingProductionGraph");b(this,"actualProductionGraph");this.rid=e,this.tx=t,this.author=r,this.schema=o,this.lastModified=n,this.meta=i,this.struct=l,this.renderingState=a,this.blocksInLimbo=c,this.blockInfos=u,this.blockFrontendStates=d,this.ctxExportTplHolder=v}fixProblems(){this.blockInfos.forEach(e=>{(e.fields.prodArgs===void 0||e.fields.prodOutput===void 0||e.fields.prodCtx===void 0)&&this.deleteBlockFields(e.id,"prodArgs","prodOutput","prodCtx")})}get wasModified(){return this.lastModifiedChanged||this.structureChanged||this.fieldsChanged||this.metaChanged||this.renderingStateChanged||this.changedBlockFrontendStates.size>0}get structure(){return JSON.parse(JSON.stringify(this.struct))}getStagingGraph(){return this.stagingGraph===void 0&&(this.stagingGraph=at(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=Ie(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=Ie(this.struct,e=>this.getBlockInfo(e).actualProductionInputs)),this.actualProductionGraph}getBlockInfo(e){return P.notEmpty(this.blockInfos.get(e))}getBlock(e){for(const t of se(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=f.field(this.rid,G(e,t));if(r.ref===void 0)throw new Error("Can't set value with empty ref");this.getBlockInfo(e).fields[t]===void 0?this.tx.createField(o,"Dynamic",r.ref):this.tx.setField(o,r.ref),this.getBlockInfo(e).fields[t]={modCount:this.globalModCount++,...r},this.fieldsChanged=!0}setBlockField(e,t,r,o,n){this.setBlockFieldObj(e,t,{ref:r,status:o,value:n})}deleteBlockFields(e,...t){let r=!1;const o=this.getBlockInfo(e);for(const n of t){const i=o.fields;n in i&&(this.tx.removeField(f.field(this.rid,G(e,n))),delete i[n],this.fieldsChanged=!0,r=!0)}return r}updateLastModified(){this.lastModified=Date.now(),this.lastModifiedChanged=!0}resetStagingRefreshTimestamp(){this.renderingState.stagingRefreshTimestamp=Date.now(),this.renderingStateChanged=!0}resetStaging(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.stagingOutput)==null?void 0:r.status)==="Ready"&&((o=t.stagingCtx)==null?void 0:o.status)==="Ready"&&((n=t.stagingUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"stagingOutputPrevious",t.stagingOutput),this.setBlockFieldObj(e,"stagingCtxPrevious",t.stagingCtx),this.setBlockFieldObj(e,"stagingUiCtxPrevious",t.stagingUiCtx)),this.deleteBlockFields(e,"stagingOutput","stagingCtx","stagingUiCtx")&&this.resetStagingRefreshTimestamp()}resetProduction(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"&&((n=t.prodUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"prodOutputPrevious",t.prodOutput),this.setBlockFieldObj(e,"prodCtxPrevious",t.prodCtx),this.setBlockFieldObj(e,"prodUiCtxPrevious",t.prodUiCtx)),this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}resetOrLimboProduction(e){var r,o;const t=this.getBlockInfo(e).fields;return((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"?this.blocksInLimbo.has(e)?!1:(this.blocksInLimbo.add(e),this.renderingStateChanged=!0,this.deleteBlockFields(e,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),!0):this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}setArgs(e){const t=[];for(const{blockId:r,args:o}of e){const n=this.getBlockInfo(r);JSON.parse(o);const i=Buffer.from(o);if(Buffer.compare(n.fields.currentArgs.value,i)===0)continue;const l=this.tx.createValue(f.Pl.JsonObject,i);this.setBlockField(r,"currentArgs",l,"Ready",i),this.blocksWithChangedInputs.add(r),t.push(r)}this.getStagingGraph().traverse("downstream",t,({id:r})=>this.resetStaging(r)),t.length>0&&this.updateLastModified()}setUiState(e,t){if(this.blockInfos.get(e)===void 0)throw new Error("no such block");this.blockFrontendStates.get(e)!==t&&(t===void 0?this.blockFrontendStates.delete(e):this.blockFrontendStates.set(e,t),this.changedBlockFrontendStates.add(e),this.blocksWithChangedInputs.add(e),this.updateLastModified())}createCtx(e,t){const r=[];return e.forEach(o=>{const n=this.getBlockInfo(o);if(n.fields[t]===void 0||n.fields[t].ref===void 0)throw new Error("One of the upstreams staging is not rendered.");r.push(f.Pl.unwrapHolder(this.tx,n.fields[t].ref))}),Ks(this.tx,r)}exportCtx(e){return to(this.tx,f.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getStagingGraph().nodes.get(e).upstream,"stagingCtx");if(this.getBlock(e).renderingMode!=="Heavy")throw new Error("not supported yet");const o=t.getTemplate(this.tx),n=Bt(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(f.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(f.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",f.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"stagingUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"stagingOutput",n.result,"NotReady")}renderProductionFor(e){this.resetProduction(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getPendingProductionGraph().nodes.get(e).upstream,"prodCtx");if(this.getBlock(e).renderingMode==="Light")throw new Error("Can't render production for light block.");const o=t.getTemplate(this.tx),n=Bt(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(f.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(f.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",f.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"prodUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"prodOutput",n.result,"NotReady"),this.setBlockFieldObj(e,"prodArgs",t.fields.currentArgs),this.blocksInLimbo.delete(e)&&(this.renderingStateChanged=!0)}updateStructure(e,t=ro){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=at(e),i=Ie(e,c=>{var u;return(u=this.blockInfos.get(c))==null?void 0:u.actualProductionInputs}),l=Vt(r,n),a=Vt(o,i);for(const c of l.onlyInA){const{fields:u}=this.getBlockInfo(c);this.deleteBlockFields(c,...Object.keys(u)),this.blockInfos.delete(c),this.blocksInLimbo.delete(c)&&(this.renderingStateChanged=!0),this.blockFrontendStates.delete(c)&&this.changedBlockFrontendStates.add(c)}for(const c of l.onlyInB){const u=new Ut(c,{});this.blockInfos.set(c,u);const d=t(c),v=xt(this.tx,d.blockPack);this.setBlockField(c,"blockPack",f.Pl.wrapInHolder(this.tx,v),"NotReady");const h=Buffer.from(d.args),g=this.tx.createValue(f.Pl.JsonObject,h);this.setBlockField(c,"currentArgs",g,"Ready",h),d.uiState&&(this.blockFrontendStates.set(c,d.uiState),this.changedBlockFrontendStates.add(c)),u.check()}for(const c of l.different)this.resetStaging(c);o.traverse("downstream",[...a.different],c=>{this.resetOrLimboProduction(c.id)}),(l.onlyInB.size>0||l.onlyInA.size>0||l.different.size>0)&&this.resetStagingRefreshTimestamp(),this.struct=e,this.structureChanged=!0,this.stagingGraph=void 0,this.pendingProductionGraph=void 0,this.actualProductionGraph=void 0,this.updateLastModified()}addBlock(e,t,r){const o=this.structure;if(r===void 0)o.groups[o.groups.length-1].blocks.push(e);else{let n=!1;for(const i of o.groups){const l=i.blocks.findIndex(a=>a.id===r);if(!(l<0)){i.blocks.splice(l,0,e),n=!0;break}}if(!n)throw new Error(`Can't find element with id: ${r}`)}this.updateStructure(o,n=>{if(n!==e.id)throw new Error("Unexpected");return t})}deleteBlock(e){const t=this.structure;let r=!1;for(const o of t.groups){const n=o.blocks.findIndex(i=>i.id===e);if(!(n<0)){o.blocks.splice(n,1),r=!0;break}}if(!r)throw new Error(`Can't find element with id: ${e}`);this.updateStructure(t)}migrateBlockPack(e,t,r){const o=this.getBlockInfo(e);this.setBlockField(e,"blockPack",f.Pl.wrapInHolder(this.tx,xt(this.tx,t)),"NotReady"),r!==void 0?(this.setArgs([{blockId:e,args:r}]),this.setUiState(e,void 0)):this.getStagingGraph().traverse("downstream",[e],({id:n})=>this.resetStaging(n)),o.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,i=>{r.add(i.id)});else for(const i of r){const l=o.nodes.get(i);if(l===void 0)throw new Error(`Can't find block with id: ${i}`);for(const a of l.upstream)if(!r.has(a))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const i of se(this.structure)){if(!r.has(i.id))continue;let l=this.getBlockInfo(i.id).requireProductionRendering||this.blocksInLimbo.has(i.id);if(!l){for(const a of o.nodes.get(i.id).upstream)if(n.has(a)){l=!0;break}}l&&(this.renderProductionFor(i.id),n.add(i.id))}return o.traverse("downstream",[...n],i=>{n.has(i.id)||this.resetOrLimboProduction(i.id)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,l;const t=this.getActualProductionGraph(),r=new gr(e),o=new Set(e),n=[];for(;!r.isEmpty();){const a=r.shift(),c=this.getBlockInfo(a).fields;if(!(((i=c.prodOutput)==null?void 0:i.status)==="Ready"&&((l=c.prodCtx)==null?void 0:l.status)==="Ready")&&this.deleteBlockFields(a,"prodOutput","prodCtx","prodUiCtx","prodArgs")){n.push(a);for(const u of t.traverseIdsExcludingRoots("downstream",a))o.has(u)||(r.push(u),o.add(u))}}for(const a of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(a)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(o=>{let i=this.getBlockInfo(o.id).stagingRendered?0:1;o.upstream.forEach(l=>{const a=t.get(l);a!==0&&(i=Math.max(a+1,i))}),e(o.id,i),t.set(o.id,i)})}refreshStagings(e){const t=Date.now()-this.renderingState.stagingRefreshTimestamp,r=e===void 0?void 0:1+Math.max(0,t*e/1e3);let o=0;this.traverseWithStagingLag((n,i)=>{i!==0&&(r===void 0||i<=r)&&(this.renderStagingFor(n),o++)}),o>0&&this.resetStagingRefreshTimestamp()}setMeta(e){this.meta=e,this.metaChanged=!0,this.updateLastModified()}doRefresh(e){this.refreshStagings(e),this.blockInfos.forEach(t=>{var r,o,n,i;((r=t.fields.prodCtx)==null?void 0:r.status)==="Ready"&&((o=t.fields.prodOutput)==null?void 0:o.status)==="Ready"&&this.deleteBlockFields(t.id,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),((n=t.fields.stagingCtx)==null?void 0:n.status)==="Ready"&&((i=t.fields.stagingOutput)==null?void 0:i.status)==="Ready"&&this.deleteBlockFields(t.id,"stagingOutputPrevious","stagingCtxPrevious","stagingUiCtxPrevious")})}assignAuthorMarkers(){const e=this.author?JSON.stringify(this.author):void 0;for(const t of this.blocksWithChangedInputs)e===void 0?this.tx.deleteKValue(this.rid,st(t)):this.tx.setKValue(this.rid,st(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,ot):this.tx.setKValue(this.rid,ot,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,be,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,le,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Ne,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,Ce,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,rt(e)):this.tx.setKValue(this.rid,rt(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,Sr),i=e.getKValueJson(t,be),l=e.getKValueJson(t,Ce),a=e.getKValueJson(t,le),c=e.getKValueJson(t,Ne),u=e.listKeyValuesString(t),[d,v,h,g,A,{stagingRefreshTimestamp:N,blocksInLimbo:x},K]=await Promise.all([o,n,i,l,a,c,u]);if(v!==br)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${v}`);const O=new Map;for(const p of d.fields){const w=Fs(p.name);if(w===void 0)continue;let m=O.get(w.blockId);m===void 0&&(m={id:w.blockId,fields:{}},O.set(w.blockId,m)),m.fields[w.fieldName]=f.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const ae=await Dr(),ue=nt(ae.hash),F=d.fields.find(p=>p.name===ue);let z;F!==void 0?z=f.ensureResourceIdNotNull(F.value):(z=f.Pl.wrapInHolder(e,je(e,ae.spec)),e.createField(f.field(t,nt(ae.hash)),"Dynamic",z));const ce={stagingRefreshTimestamp:N},H=new Set(x),M=new Map;for(const p of K){const w=Is(p.key);w!==void 0&&M.set(w,p.value)}const U=[];O.forEach(({id:p,fields:w})=>{for(const[,m]of Object.entries(w))if(m.ref!==void 0){if(!f.isResource(m.ref)||f.isResourceRef(m.ref))throw new Error("unexpected behaviour");U.push([m,e.getResourceData(m.ref,!1)])}});for(const[p,w]of U){const m=await w;p.value=m.data,f.isNotNullResourceId(m.error)?p.status="Error":m.resourceReady||f.isNotNullResourceId(m.originalResourceId)?p.status="Ready":p.status="NotReady"}const X=new Map;O.forEach(({id:p,fields:w})=>X.set(p,new Ut(p,w)));const de=new Set;for(const p of se(A)){if(!X.has(p.id))throw new Error(`Inconsistent project structure: no inputs for ${p.id}`);de.add(p.id)}X.forEach(p=>{if(!de.has(p.id))throw new Error(`Inconsistent project structure: no structure entry for ${p.id}`);p.check()});const y=new Fe(t,e,r,v,h,g,A,ce,H,X,M,z);return y.fixProblems(),y}}async function so(s,e=Ps){const t=s.createEphemeral(ks);s.lock(t);const r=String(Date.now());s.setKValue(t,Sr,JSON.stringify(br)),s.setKValue(t,mt,r),s.setKValue(t,be,r),s.setKValue(t,Ce,JSON.stringify(e)),s.setKValue(t,le,JSON.stringify(Es)),s.setKValue(t,Ne,JSON.stringify(Rs));const o=await Dr();return s.createField(f.field(t,nt(o.hash)),"Dynamic",f.Pl.wrapInHolder(s,je(s,o.spec))),t}async function ze(s,e,t){return re(s,e,void 0,t)}async function re(s,e,t,r){if(s instanceof f.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await Fe.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await Fe.load(s,e,t),n=await r(o);return o.save(),n}}function*oo(s){switch(s.type){case"Json":return;case"JsonPartitioned":for(const[,e]of Object.entries(s.parts))yield e;return;case"BinaryPartitioned":for(const[,{index:e,values:t}]of Object.entries(s.parts))yield e,yield t;return;default:P.assertNever(s)}}function Gt(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function no(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:Gt(s.parts,e)};case"BinaryPartitioned":return{...s,parts:Gt(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:P.assertNever(s)}}const io=f.resourceType("PColumnData/JsonPartitioned","1"),ao=f.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),co=f.resourceType("PColumnData/BinaryPartitioned","1"),lo=f.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),uo=f.resourceType("PColumnData/Json","1");function po(s){if(!s.getIsReadyOrError())throw new Error("Data not ready.");const e=s.getDataAsJson();if(e===void 0)throw new Error("unexpected data info structure, no resource data");if(f.resourceTypesEqual(s.resourceType,uo)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(f.resourceTypesEqual(s.resourceType,io)){const t=e,r=Object.fromEntries(s.listInputFields().map(o=>[o,s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo]));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(f.resourceTypesEqual(s.resourceType,ao)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const l of i){const a=JSON.stringify([...JSON.parse(o),...JSON.parse(l)]);r[a]=n.traverse({field:l,errorIfFieldNotSet:!0}).resourceInfo}}return{type:"JsonPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}else if(f.resourceTypesEqual(s.resourceType,co)){const t=e,r={};for(const o of s.listInputFields())if(o.endsWith(".index")){const n=o.slice(0,o.length-6);let i=r[n];i===void 0&&(i={},r[n]=i),i.index=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else if(o.endsWith(".values")){const n=o.slice(0,o.length-7);let i=r[n];i===void 0&&(i={},r[n]=i),i.values=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${o}`);for(const[o,n]of Object.entries(r)){if(n.index===void 0)throw new Error(`no index for part ${o}`);if(n.values===void 0)throw new Error(`no values for part ${o}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(f.resourceTypesEqual(s.resourceType,lo)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const l of i)if(l.endsWith(".index")){const a=l.slice(0,l.length-6),c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);let u=r[c];u===void 0&&(u={},r[c]=u),r[c].index=n.traverse({field:l,errorIfFieldNotSet:!0}).resourceInfo}else if(l.endsWith(".values")){const a=l.slice(0,l.length-7),c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);let u=r[c];u===void 0&&(u={},r[c]=u),r[c].values=n.traverse({field:l,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${l}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}throw new Error(`unsupported resource type: ${f.resourceTypeToString(s.resourceType)}`)}function ho(s,e){const t=s.axesSpec.length,r={};for(const{key:o,val:n}of e){if(o.length!==t)throw new Error(`inline column key length ${o.length} differs from axes count ${t}`);r[JSON.stringify(o)]=n}return{type:"Json",keyLength:t,data:r}}function lt(s,e){const t=ie.createHash("sha256");return t.update(pt(s)),t.update(String(f.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function Br(s,e=!0,t=!1,r=""){var l,a,c;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const u of s.listInputFields()){const d=u.match(o);if(!d){if(e)throw new Error(`unexpected field name ${u}`);continue}let v=P.notEmpty((l=d.groups)==null?void 0:l.name);if(!v.startsWith(r)){if(e)throw new Error(`unexpected field name ${u}`);continue}v=v.slice(r.length);const h=P.notEmpty((a=d.groups)==null?void 0:a.type);let g=n.get(v);switch(g===void 0&&(g={},n.set(v,g)),h){case"spec":g.spec=(c=s.traverse({field:u,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:c.getDataAsJson();break;case"data":g.hasData=!0,g.data=()=>s.traverseOrError({field:u,ignoreError:t});default:continue}}const i=s.getInputsLocked();if(i)for(const[,u]of n)u.data===void 0&&(u.hasData=!1);return{locked:i,results:n}}function fo(s,e=!0,t=""){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const r=Br(s,e,!1,t);as(r.locked);const o={};for(const[n,i]of r.results){if(i.spec===void 0)throw new Error(`no spec for key ${n}`);if(i.hasData!==!0||i.data===void 0)throw new Error(`no data for key ${n}`);const l=i.data();if(l===void 0)throw new Error(`no data for key ${n}`);if(!l.ok)throw new De.PlError(l.error);o[n]={id:lt(i.spec,l.value),spec:i.spec,data:l.value}}return o}class St{constructor(e,t){b(this,"allSpecsAvailable");this.ctx=e,this.blocks=t;let r=!0;e:for(const o of t.values())for(const n of[o.prod,o.staging])if(n!==void 0){if(!n.locked){r=!1;break e}for(const i of n.results.values())if(i.spec===void 0){r=!1;break e}}this.allSpecsAvailable=r}getSpecByRef(e,t){var n,i,l,a,c,u;const r=this.blocks.get(e);if(r===void 0)return;let o=(l=(i=(n=r.prod)==null?void 0:n.results)==null?void 0:i.get(t))==null?void 0:l.spec;if(o!==void 0||(o=(u=(c=(a=r.staging)==null?void 0:a.results)==null?void 0:c.get(t))==null?void 0:u.spec,o!==void 0))return o;r.staging===void 0?this.ctx.markUnstable(`staging_not_rendered:${e}`):r.staging.locked?r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`):this.ctx.markUnstable(`staging_not_locked:${e}`)}getDataOrErrorByRef(e,t){var i,l,a;const r=this.blocks.get(e);if(r===void 0)return;let o=(l=(i=r.prod)==null?void 0:i.results)==null?void 0:l.get(t),n=(a=o==null?void 0:o.data)==null?void 0:a.call(o);if(o!==void 0&&o.spec!==void 0&&n!==void 0)return V.mapValueInVOE(n,c=>({id:lt(o.spec,c),spec:o.spec,data:c}));o!==void 0&&this.ctx.markUnstable(`no_data:${e}:${t}`),r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`)}getDataByRef(e,t){const r=this.getDataOrErrorByRef(e,t);if(!(r===void 0||!r.ok))return r.value}getData(){const e=this.getDataWithErrors(),t=[];for(const r of e.entries)r.obj.id!==void 0&&r.obj.data.ok&&t.push({ref:r.ref,obj:{id:r.obj.id,spec:r.obj.spec,data:r.obj.data.value}});return{entries:t,isComplete:e.isComplete,instabilityMarker:e.instabilityMarker}}getDataWithErrors(){const e=[];let t=!0,r;const o=i=>{r===void 0&&(r=i),t=!1},n=(i,l,a)=>{if(a.spec!==void 0&&a.hasData===!0&&a.data!==void 0){const c=a.data();c!==void 0?e.push({ref:Re(i,l),obj:{id:c.ok?lt(a.spec,c.value):void 0,spec:a.spec,data:c}}):o(`no_data:${i}:${l}`)}};for(const[i,l]of this.blocks){const a=new Set;if(l.prod!==void 0){l.prod.locked||o(`prod_not_locked:${i}`);for(const[c,u]of l.prod.results)a.add(c),n(i,c,u)}if(l.staging!==void 0){l.staging.locked||o(`staging_not_locked:${i}`);for(const[c,u]of l.staging.results)a.has(c)||n(i,c,u)}}return{entries:e,isComplete:t,instabilityMarker:r}}getSpecs(){const e=[];let t=!0,r;const o=n=>{r===void 0&&(r=n),t=!1};for(const[n,i]of this.blocks){const l=new Set;if(i.staging!==void 0){i.staging.locked||o(`staging_not_locked:${n}`);for(const[a,c]of i.staging.results)c.spec!==void 0&&(e.push({ref:Re(n,a),obj:c.spec}),l.add(a))}else o(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||o(`prod_not_locked:${n}`);for(const[a,c]of i.prod.results)l.has(a)||c.spec!==void 0&&e.push({ref:Re(n,a),obj:c.spec})}}return{entries:e,isComplete:t,instabilityMarker:r}}calculateOptions(e){const t=[];for(const r of this.blocks.values()){const o=new Set,n=i=>{for(const[l,a]of i.results)o.has(l)||a.spec===void 0||(o.add(l),V.executePSpecPredicate(e,a.spec)&&t.push({label:r.info.label+" / "+l,ref:Re(r.info.id,l),spec:a.spec}))};r.staging!==void 0&&n(r.staging),r.prod!==void 0&&n(r.prod)}return t}static create(e,t,r){const o=e.accessor(t).node(),n=P.notEmpty(o.getKeyValueAsJson(le)),l=at(n).traverseIds("upstream",r),a=new Map;for(const c of se(n)){if(!l.has(c.id))continue;const u=Mt(o.traverse({field:G(c.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:G(c.id,"prodUiCtx"),stableIfNotFound:!0})),d=Mt(o.traverse({field:G(c.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:G(c.id,"stagingUiCtx")}));a.set(c.id,{info:c,prod:u,staging:d})}return new St(e,a)}}function Mt(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return Br(e.value,!1,!0)}function bt(s,e){return{blockId:e,args:o=>P.notEmpty(o.accessor(s).node().traverse({field:G(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),uiState:o=>o.accessor(s).node().getKeyValueAsString(rt(e)),blockMeta:o=>{const n=o.accessor(s).node(),i=P.notEmpty(n.getKeyValueAsJson(le)),l=new Map;for(const a of se(i))l.set(a.id,a);return l}}}function jr(s,e){return{...bt(s,e),prod:t=>{var r;return(r=t.accessor(s).node({ignoreError:!0}).traverse({field:G(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:r.persist()},staging:t=>{var o;const r=(o=t.accessor(s).node({ignoreError:!0}).traverse({field:G(e,"stagingOutput"),ignoreError:!0}))==null?void 0:o.persist();return r===void 0&&t.markUnstable("staging_not_rendered"),r},getResultsPool:t=>St.create(t,s,e)}}function*W(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*W(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*W(t);return;case"MakeArray":for(const t of s.template)yield*W(t);return;case"GetJsonField":case"GetResourceField":yield*W(s.source),yield*W(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*W(s.source),yield*W(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetLogHandle":yield*W(s.source);return;case"IsEmpty":yield*W(s.arg);return;case"Not":yield*W(s.operand);return;case"And":case"Or":yield*W(s.operand1),yield*W(s.operand2);return;default:P.assertNever(s)}}function go(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function ye(s,e){return s===void 0?void 0:e(s)}function mo(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function vo(s){for(const e of W(s))if(mo(e))return!0;return!1}function xe(s){return{type:"ReturnResult",result:s}}function k(s){return()=>xe(s)}const yo=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return k(e)},wo=s=>{const e=s.source;if(e===void 0)return k(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return k(t)},So=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?k(void 0):({cCtx:r})=>{var o;return xe((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function xr(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function bo(s,e){return t=>{const r=t.source;return r===void 0?k(void 0):()=>({type:"ScheduleSubroutine",subroutine:Vr(r.length),args:xr(r,o=>T({...s,[e.itVar]:o},e.mapping))})}}function Vr(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return k(t)}}function Co(s,e){return t=>{const r=t.source;if(r===void 0)return k(void 0);const o={};for(const[n,i]of Object.entries(r)){const l={...s,[e.itVar]:i};o[n]=T(l,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Eo,args:o})}}const Eo=s=>k(s),Ro=s=>{const e=s.arg;return k(e===void 0?void 0:e.length===0)},Po=s=>{const e=s.operand;return k(e===void 0?void 0:!e)},ko=s=>{const e=s.operand1,t=s.operand2;return k(e===void 0||t===void 0?void 0:e&&t)},Oo=s=>{const e=s.operand1,t=s.operand2;return k(e===void 0||t===void 0?void 0:e||t)},$o=s=>{const e=s.source;return e===void 0?k(void 0):({cCtx:t})=>{var r;return xe((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},To=s=>{const e=s.source,t=s.field;return k(e===void 0||t===void 0?void 0:e[t])};function Io(s,e){return t=>{const r=t.source;return r===void 0?k(void 0):({cCtx:o})=>{const n=o.accessor(r).node(),i={};for(const l of n.listInputFields()){const a=n.traverse(l);if(a===void 0)i[l]=k(void 0);else{const c={...s,[e.itVar]:a.persist()};i[l]=T(c,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:Ao,args:i}}}}const Ao=s=>k(s),No=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:D.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r!==void 0)return await t.blobDriver.getContent(r.handle)}})})},Fo=s=>{const e=s.source;return e===void 0?k(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:D.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},Lo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:D.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r==null)return;const o=await t.blobDriver.getContent(r.handle);if(o!=null)return JSON.parse(Buffer.from(o).toString())}})})},Do=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},Bo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},jo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},xo=s=>e=>{const t=e.source;return t===void 0?k(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},Vo=s=>e=>{const t=e.source;return t===void 0?k(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},Uo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function T(s,e){switch(e.type){case"GetFromCtx":const t=s[e.variable];return typeof t=="function"?r=>xe(t(r.cCtx)):k(t);case"Isolate":return({drivers:r})=>({type:"ScheduleComputable",computable:Mr(r,s,e.cfg)});case"Immediate":return k(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:To,args:{source:T(s,e.source),field:T(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:bo(s,e),args:{source:T(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Co(s,e),args:{source:T(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:yo,args:go(e.template,r=>T(s,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:Vr(e.template.length),args:xr(e.template,r=>T(s,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:wo,args:{source:T(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Ro,args:{arg:T(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Po,args:{operand:T(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:ko,args:{operand1:T(s,e.operand1),operand2:T(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:Oo,args:{operand1:T(s,e.operand1),operand2:T(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Io(s,e),args:{source:T(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:So,args:{source:T(s,e.source),field:T(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:$o,args:{source:T(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:No,args:{source:T(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:Fo,args:{source:T(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Lo,args:{source:T(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Do,args:{source:T(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Bo,args:{source:T(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:jo,args:{source:T(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:xo(e.lines),args:{source:T(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:Vo(e.patternToSearch),args:{source:T(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:Uo,args:{source:T(s,e.source)}});default:return P.assertNever(e)}}const Go=["$prod","$staging"];function Mo(s){return{$blockId:s.blockId,$args:e=>JSON.parse(s.args(e)),$ui:e=>{const t=s.uiState(e);return t!==void 0?JSON.parse(t):void 0},$prod:s.prod,$staging:s.staging}}const Ur=Symbol(),Gr="return",Jo={op:Ur,arg:Gr};function _o(s){return s.op==Ur&&s.arg==Gr}function Ko(){return{pendingSubroutines:new Map}}function Jt(s,e,t,r){const o=new gr(t),n=(l,a)=>{if(_o(l))return e.result=a,!1;const c=P.notEmpty(e.pendingSubroutines.get(l.op));if(l.arg in c.args)throw new Error("argument already set");return c.args[l.arg]=a,c.argCounter--,c.argCounter===0&&(e.pendingSubroutines.delete(l.op),o.push({destination:c.destination,operation:c.subroutine(c.args)})),!0},i=[];e:for(;o.length>0;){const l=o.shift(),a=l.operation(s);switch(a.type){case"ReturnResult":if(!n(l.destination,a.result))break e;break;case"ScheduleSubroutine":const c=Symbol(),u=Object.entries(a.args),d=u.length;if(d===0)o.push({destination:l.destination,operation:a.subroutine({})});else{for(const[v,h]of u)o.push({destination:{op:c,arg:v},operation:h});e.pendingSubroutines.set(c,{argCounter:d,args:{},subroutine:a.subroutine,destination:l.destination})}break;case"ScheduleComputable":if(!r)throw new Error("asynchronous operations are forbidden in this context");i.push({destination:l.destination,computable:a.computable});break;default:P.assertNever(a)}}return i}function Ho(s,e,t,r={}){return Mr(s,Mo(e),t,r)}function Mr(s,e,t,r={}){const o=`${e.blockId}#`+pt({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>Go.indexOf(n)===-1)),cfg:t});return D.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},l=Ko();return{ir:Jt(i,l,[{destination:Jo,operation:T(e,t)}],!0),async postprocessValue(c){const u=[];for(const g of c)u.push({destination:g.destination,operation:k(g.computable)});const d={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},v=new Map;for(const[g,A]of l.pendingSubroutines)v.set(g,{...A,args:{...A.args}});const h={result:l.result,pendingSubroutines:v};if(Jt(d,h,u,!1),!("result"in h))throw new Error("illegal cfg rendering stack state, no result");return h.result}}},{...r,key:o})}function qo(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function _t(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class Le{constructor(e,t,r,o,n){b(this,"callbackRegistry");b(this,"fnJSONStringify");b(this,"fnJSONParse");b(this,"computablesToResolve",{});b(this,"computableCtx");b(this,"accessors",new Map);b(this,"meta");b(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=r,this.env=o,this.computableCtx=n,this.callbackRegistry=this.scope.manage(this.vm.newObject()),this.fnJSONStringify=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"stringify"))),t.typeof(this.fnJSONStringify)!=="function")throw new Error("JSON.stringify() not found.");if(this.fnJSONParse=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"parse"))),t.typeof(this.fnJSONParse)!=="function")throw new Error("JSON.parse() not found.");this.meta=r.blockMeta(n),this.injectCtx()}resetComputableCtx(){this.computableCtx=void 0,this.accessors.clear()}static cleanErrorContext(e){typeof e=="object"&&e!==null&&"context"in e&&delete e.context}evaluateBundle(e){try{this.vm.unwrapResult(this.vm.evalCode(e,"bundle.js",{type:"global"})).dispose()}catch(t){throw Le.cleanErrorContext(t),t}}runCallback(e,...t){try{return Ae.Scope.withScope(r=>{const o=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(o)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(o,this.vm.undefined,...t.map(n=>this.exportObjectUniversal(n,r)))))})}catch(r){throw Le.cleanErrorContext(r),r}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(r,o)=>{if(!this.accessors.has(r)){const n=this.blockCtx[o];if(n===void 0)throw new Error("Staging context not available");const i=n(this.computableCtx);i?this.accessors.set(r,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(r,void 0)}return this.accessors.get(r)?r:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...r){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...r))}getResourceType(e){return this.getAccessor(e).resourceType}getInputsLocked(e){return this.getAccessor(e).getInputsLocked()}getOutputsLocked(e){return this.getAccessor(e).getOutputsLocked()}getIsReadyOrError(e){return this.getAccessor(e).getIsReadyOrError()}getIsFinal(e){return this.getAccessor(e).getIsFinal()}getError(e){return this.wrapAccessor(this.getAccessor(e).getError())}listInputFields(e){return this.getAccessor(e).listInputFields()}listOutputFields(e){return this.getAccessor(e).listOutputFields()}listDynamicFields(e){return this.getAccessor(e).listDynamicFields()}getKeyValueBase64(e,t){return _t(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return _t(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r){const o=this.getAccessor(e);if(!o.getIsReadyOrError())return;const n=fo(o,t,r),i={};for(const[l,a]of Object.entries(n))i[l]=V.mapPObjectData(a,c=>this.wrapAccessor(c));return i}registerComputable(e,t){const r=`${e}_${ie.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",D.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("utf-8")}}))}getBlobContentAsBase64(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsBase64",D.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("base64")}}))}getDownloadedBlobContentHandle(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getDownloadedBlobContentHandle",this.env.driverKit.blobDriver.getDownloadedBlob(t))}getOnDemandBlobContentHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getOnDemandBlobContentHandle",this.env.driverKit.blobDriver.getOnDemandBlob(t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(r,t))}getProgressLog(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=P.notEmpty(this.blockCtx.getResultsPool,"getResultsPool")(this.computableCtx)}return this._resultPool}calculateOptions(e){return this.resultPool.calculateOptions(e)}getDataFromResultPool(){const e=this.resultPool.getData();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:V.mapPObjectData(t.obj,r=>this.wrapAccessor(r))}))}}getDataWithErrorsFromResultPool(){const e=this.resultPool.getDataWithErrors();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:{id:t.obj.id,spec:t.obj.spec,data:V.mapValueInVOE(t.obj.data,r=>this.wrapAccessor(r))}}))}}getSpecsFromResultPool(){const e=this.resultPool.getSpecs();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`specs_from_pool_incomplete:${e.instabilityMarker}`),e}getSpecFromResultPoolByRef(e,t){return this.resultPool.getSpecByRef(e,t)}getDataFromResultPoolByRef(e,t){return V.mapPObjectData(this.resultPool.getDataByRef(e,t),r=>this.wrapAccessor(r))}createPFrame(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PFrames from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPFrame(e.map(t=>V.mapPObjectData(t,r=>typeof r=="string"?this.getAccessor(r):r)),this.computableCtx)}createPTable(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PTable from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPTable(V.mapPTableDef(e,t=>V.mapPObjectData(t,r=>typeof r=="string"?this.getAccessor(r):r)),this.computableCtx)}getCurrentUnstableMarker(){var e;return(e=this.computableCtx)==null?void 0:e.unstableMarker}getAccessor(e){const t=this.accessors.get(e);if(t===void 0)throw new Error("No such accessor");return t}wrapAccessor(e){if(e!==void 0){const t=ie.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const r=this.tryExportSingleValue(e,t);if(r===void 0)throw new Error(`Can't export value: ${e}`);return r}tryExportSingleValue(e,t){let r,o=!1;switch(typeof e){case"string":r=this.vm.newString(e),o=!0;break;case"number":r=this.vm.newNumber(e),o=!0;break;case"undefined":r=this.vm.undefined;break;case"boolean":r=e?this.vm.true:this.vm.false;break;default:if(e===null){r=this.vm.null;break}if(qo(e)){r=this.vm.newArrayBuffer(e),o=!0;break}return}return o&&t!=null?t.manage(r):r}exportObjectUniversal(e,t){const r=this.tryExportSingleValue(e,t);return r!==void 0?r:this.exportObjectViaJson(e,t)}exportObjectViaJson(e,t){const r=this.vm.newString(JSON.stringify(e)).consume(o=>this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse,this.vm.undefined,o)));return t!==void 0?t.manage(r):r}importObjectUniversal(e){switch(this.vm.typeof(e)){case"undefined":return;case"boolean":case"number":case"string":return this.vm.dump(e);default:return this.importObjectViaJson(e)}}importObjectViaJson(e){const t=this.vm.unwrapResult(this.vm.callFunction(this.fnJSONStringify,this.vm.undefined,e)).consume(r=>this.vm.getString(r));if(t!=="undefined")return JSON.parse(t)}injectCtx(){Ae.Scope.withScope(e=>{const t=e.manage(this.vm.newObject()),r=this.blockCtx.args(this.computableCtx),o=this.blockCtx.uiState(this.computableCtx);this.vm.setProp(t,"args",e.manage(this.vm.newString(r))),o!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(o))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry),this.vm.setProp(t,"featureFlags",this.exportObjectUniversal(V.JsRenderInternal.GlobalCfgRenderCtxFeatureFlags,e));const n=(i,l)=>{this.vm.newFunction(i,l).consume(a=>this.vm.setProp(t,i,a))};n("getAccessorHandleByName",i=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(i)),void 0)),n("resolveWithCommon",(i,l,...a)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(i),this.importObjectViaJson(l),...a.map(c=>this.importObjectViaJson(c))),void 0)),n("getResourceType",i=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(i)),void 0)),n("getInputsLocked",i=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(i)),void 0)),n("getOutputsLocked",i=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(i)),void 0)),n("getIsReadyOrError",i=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(i)),void 0)),n("getIsFinal",i=>this.exportSingleValue(this.getIsFinal(this.vm.getString(i)),void 0)),n("getError",i=>this.exportSingleValue(this.getError(this.vm.getString(i)),void 0)),n("listInputFields",i=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(i)),void 0)),n("listOutputFields",i=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(i)),void 0)),n("listDynamicFields",i=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(i)),void 0)),n("getKeyValueBase64",(i,l)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getKeyValueAsString",(i,l)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getDataBase64",i=>this.exportSingleValue(this.getDataBase64(this.vm.getString(i)),void 0)),n("getDataAsString",i=>this.exportSingleValue(this.getDataAsString(this.vm.getString(i)),void 0)),n("parsePObjectCollection",(i,l,a)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(i),this.vm.dump(l),this.vm.getString(a)),void 0)),n("getBlobContentAsBase64",i=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(i)),void 0)),n("getBlobContentAsString",i=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(i)),void 0)),n("getDownloadedBlobContentHandle",i=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(i)),void 0)),n("getOnDemandBlobContentHandle",i=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(i)),void 0)),n("getImportProgress",i=>this.exportSingleValue(this.getImportProgress(this.vm.getString(i)),void 0)),n("getLastLogs",(i,l)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(i),this.vm.getNumber(l)),void 0)),n("getProgressLog",(i,l)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getLogHandle",i=>this.exportSingleValue(this.getLogHandle(this.vm.getString(i)),void 0)),n("getBlockLabel",i=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(i)),void 0)),n("getDataFromResultPool",i=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),n("getDataWithErrorsFromResultPool",i=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),n("getSpecsFromResultPool",i=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),n("calculateOptions",i=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(i)),void 0)),n("getSpecFromResultPoolByRef",(i,l)=>this.exportObjectUniversal(this.getSpecFromResultPoolByRef(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getDataFromResultPoolByRef",(i,l)=>this.exportObjectUniversal(this.getDataFromResultPoolByRef(this.vm.getString(i),this.vm.getString(l)),void 0)),n("createPFrame",i=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(i)),void 0)),n("createPTable",i=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(i)),void 0)),n("getCurrentUnstableMarker",()=>this.exportSingleValue(this.getCurrentUnstableMarker(),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}function Ve(s,e){return ye(s.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:f.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),t=>{const r=t.getDataAsJson(),o=V.extractConfig(r.config);return{bpId:t.resourceInfo.id.toString(),info:r,cfg:o}})}const Pe=process.env.MI_LOG_OUTPUT_STATUS;function Wo(s,e,t,r,o,n={}){const i=`${e.blockId}#lambda#${o}#${t.handle}`;return n={...n,key:i},n.mode===void 0&&t.retentive===!0&&(n.mode="StableOnlyRetentive"),D.Computable.makeRaw(l=>{const a=new Ae.Scope;l.addOnDestroy(()=>a.dispose());const c=a.manage(s.quickJs.newRuntime());c.setMemoryLimit(1024*640),c.setMaxStackSize(1024*320);const u=a.manage(c.newContext()),d=new Le(a,u,e,s,l);d.evaluateBundle(r.content);const v=d.runCallback(t.handle);d.resetComputableCtx();let h=0;return Pe&&Pe!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:async(g,{unstableMarker:A,stable:N})=>{for(const[K,O]of Object.entries(g))d.runCallback(K,O);const x=d.importObjectUniversal(v);return h++,Pe&&(Pe!=="unstable-only"||!N)&&console.log(N?`Stable output ${t.handle} calculated ${x!==void 0?"defined":"undefined"}; (#${h})`:`Unstable output ${t.handle}; marker = ${A}; ${x!==void 0?"defined":"undefined"} (#${h})`),x}}},n)}function zo(s){return V.isConfigLambda(s)?s.isActive===!0:vo(s)}function we(s,e,t,r,o,n={}){if(V.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return Wo(s,e,t,r,o,n)}else return Ho(s.driverKit,e,t,n)}function Xo(s,e,t){return D.Computable.make(r=>{var g,A,N,x,K,O,ae,ue;const o=r.accessor(s).node(),n=P.notEmpty(o.getKeyValueAsJson(mt)),i=P.notEmpty(o.getKeyValueAsJson(be)),l=P.notEmpty(o.getKeyValueAsJson(Ce)),a=P.notEmpty(o.getKeyValueAsJson(le)),c=P.notEmpty(o.getKeyValueAsJson(Ne)),u=new Map;for(const{id:F}of se(a)){const z=o.traverse({field:G(F,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ce;const H=o.traverse({field:G(F,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(H!==void 0){const M=o.getField({field:G(F,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),U=o.getField({field:G(F,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});ce={arguments:H.getDataAsJson(),stale:z.id!==H.id,outputError:M.error!==void 0||U.error!==void 0||((g=M.value)==null?void 0:g.getError())!==void 0||((A=U.value)==null?void 0:A.getError())!==void 0,outputsError:((N=M.error)==null?void 0:N.getDataAsString())??((K=(x=M.value)==null?void 0:x.getError())==null?void 0:K.getDataAsString()),exportsError:((O=U.error)==null?void 0:O.getDataAsString())??((ue=(ae=U.value)==null?void 0:ae.getError())==null?void 0:ue.getDataAsString()),finished:(M.value!==void 0&&M.value.getIsReadyOrError()||M.error!==void 0&&M.error.getIsReadyOrError())&&(U.value!==void 0&&U.value.getIsReadyOrError()||U.error!==void 0&&U.error.getIsReadyOrError())}}u.set(F,{currentArguments:z.getDataAsJson(),prod:ce})}const d=Ie(a,F=>u.get(F).currentArguments),v=new Set(c.blocksInLimbo),h=[...se(a)].map(({id:F,label:z,renderingMode:ce})=>{var C,S,E,$,R;const H=P.notEmpty(u.get(F)),M=P.notEmpty(d.nodes.get(F));let U="NotCalculated";H.prod!==void 0&&(v.has(F)?U="Limbo":U=H.prod.finished?"Done":"Running");const X=Ve(o,F),{sections:de,title:y,inputsValid:p,sdkVersion:w}=ye(X,({bpId:I,cfg:B,info:j})=>{const oe=bt(s,F);return{sections:we(t,oe,B.sections,B.code,I),title:ye(B.title,es=>we(t,oe,es,B.code,I)),inputsValid:we(t,oe,B.inputsValid,B.code,I),sdkVersion:B.sdkVersion}})||{},m=ye(X,({info:I})=>t.blockUpdateWatcher.get(I.source));return{id:F,label:y??z,title:y??z,renderingMode:ce,stale:((C=H.prod)==null?void 0:C.stale)!==!1||U==="Limbo",missingReference:M.missingReferences,upstreams:[...d.traverseIdsExcludingRoots("upstream",F)],downstreams:[...d.traverseIdsExcludingRoots("downstream",F)],calculationStatus:U,outputErrors:((S=H.prod)==null?void 0:S.outputError)===!0,outputsError:(E=H.prod)==null?void 0:E.outputsError,exportsError:($=H.prod)==null?void 0:$.exportsError,sections:de,inputsValid:p,currentBlockPack:(R=X==null?void 0:X.info)==null?void 0:R.source,updatedBlockPack:m,sdkVersion:w,navigationState:e.getState(F)}});return{meta:l,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(ot),blocks:h}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const l=i.stale||i.upstreams.findIndex(c=>n.has(c))!==-1,a=(l||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(c=>o.has(c))===-1;return{...i,canRun:a,stale:l}})}}}).withStableType()}function Yo(s,e){const t=s.node();if(f.resourceTypesEqual(t.resourceType,yt)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.frontendDownloadDriver.getPath(new URL(r.url)).withStableType()}else if(f.resourceTypesEqual(t.resourceType,wt)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.signer.verify(r.path,r.signature,`Frontend path signature mismatch for: ${r.path}`),r.path}else throw new Error(`Unsupported resource type: ${JSON.stringify(t.resourceType)}`)}function Zo(s,e){if(s!==void 0)return D.Computable.make(t=>Yo(t.accessor(s),e),{postprocessValue:t=>{if(t!==void 0){if(typeof t=="string")return t;if(t.error!==void 0)throw new Error(t.error);return t.path}}}).withStableType()}function Qo(s,e,t){return D.Computable.make(r=>{var l;const o=r.accessor(s).node(),n=Ve(o,e),i=(l=o.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic"},{field:f.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Fr,assertFieldType:"Input"}))==null?void 0:l.persist();return{path:Zo(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function Jr(s,e,t){if(t===void 0)return D.Computable.make(i=>Jr(s,e,i),{key:`inputs#${f.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=bt(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(st(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function en(s,e,t){return D.Computable.make(r=>{const o=r.accessor(s).node(),n=jr(s,e);return ye(Ve(o,e),({cfg:i,bpId:l})=>{const a={};for(const[c,u]of Object.entries(i.outputs)){const d=we(t,n,u,i.code,l);a[c]=D.Computable.wrapError(d)}return a})},{key:"outputs#"+f.resourceIdToString(s.rid)+"#"+e}).withStableType()}function tn(s,e){return D.Computable.make(t=>{const r=t.accessor(s).node(),o=P.notEmpty(r.getKeyValueAsJson(le)),n=[];for(const{id:i,renderingMode:l}of se(o)){const a=Ve(r,i);if(a===void 0)continue;const c=Object.entries(a.cfg.outputs).map(([,d])=>d).filter(d=>zo(d)).map(d=>d);if(c.length===0)continue;const u=jr(r.persist(),i);for(const d of c)n.push(D.Computable.wrapError(we(e,u,d,a.cfg.code,a.bpId)))}return n})}class rn{constructor(){b(this,"states",new Map)}setState(e,t){const r=this.states.get(e);if(r===void 0){this.states.set(e,{state:t,change:new D.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...V.DefaultNavigationState},change:new D.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return D.Computable.make(t=>this.readState(t,e),{key:`navigationState#${e}`})}deleteBlock(e){const t=this.states.get(e);t!==void 0&&(this.states.delete(e),t.change.markChanged())}}class Ue{constructor(e,t,r){b(this,"rid");b(this,"overview");b(this,"navigationStates",new rn);b(this,"blockComputables",new Map);b(this,"blockFrontends",new Map);b(this,"activeConfigs");b(this,"refreshLoopResult");b(this,"abortController",new AbortController);b(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=Xo(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=tn(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await ze(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await mr.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(f.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!f.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=ie.randomUUID()){const i=await this.env.bpPreparer.prepare(t),l=await this.env.bpPreparer.getBlockConfigContainer(t),a=V.extractConfig(l);return await re(this.env.pl,this.rid,o,c=>c.addBlock({id:n,label:e,renderingMode:a.renderingMode},{args:JSON.stringify(a.initialArgs),uiState:JSON.stringify(a.initialUiState),blockPack:i},r)),await this.projectTree.refreshState(),n}async updateBlockPack(e,t,r=!1,o){const n=await this.env.bpPreparer.prepare(t),i=await this.env.bpPreparer.getBlockConfigContainer(t);await re(this.env.pl,this.rid,o,l=>l.migrateBlockPack(e,n,r?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await re(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await re(this.env.pl,this.rid,t,r=>{const o=r.structure;if(o.groups.length!==1)throw new Error("Unexpected project structure, non-sinular block group");const n=o.groups[0];if(n.blocks.length!==e.length)throw new Error(`Lengh mismatch: ${n.blocks.length} !== ${e.length}`);if(new Set(e).size!==e.length)throw new Error("Repeated block ids");const i={groups:[{id:n.id,label:n.label,blocks:e.map(l=>{const a=n.blocks.find(c=>c.id===l);if(a===void 0)throw new Error(`Can't find block: ${l}`);return a})}]};r.updateStructure(i)}),await this.projectTree.refreshState()}async runBlock(e){await ze(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await ze(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await re(this.env.pl,this.rid,r,o=>o.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,r){await re(this.env.pl,this.rid,r,o=>o.setUiState(e,t===void 0?void 0:JSON.stringify(t))),await this.projectTree.refreshState()}async setNavigationState(e,t){this.navigationStates.setState(e,t)}async setBlockArgsAndUiState(e,t,r,o){await re(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=f.ensureResourceIdNotNull((await r.getField(f.field(this.rid,G(e,"blockPack")))).value),n=f.ensureResourceIdNotNull((await r.getField(f.field(o,f.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),l=JSON.parse(Buffer.from(P.notEmpty(i.data)).toString("utf-8"));await re(r,this.rid,t,a=>{a.setArgs([{blockId:e,args:JSON.stringify(l.config.initialArgs)}]),a.setUiState(e,void 0)}),await r.commit()}),await this.projectTree.refreshState()}getBlockComputables(e){const t=this.blockComputables.get(e);if(t===void 0){const r=en(this.projectTree.entry(),e,this.env),n={fullState:D.Computable.make(i=>({argsAndUiState:Jr(this.projectTree.entry(),e,i),outputs:r,navigationState:this.navigationStates.getState(e)}),{postprocessValue:i=>({...i.argsAndUiState,outputs:i.outputs,navigationState:i.navigationState})}).withPreCalculatedValueTree()};return this.blockComputables.set(e,n),n}return t}getBlockState(e){return this.getBlockComputables(e).fullState}getBlockFrontend(e){const t=this.blockFrontends.get(e);if(t===void 0){const r=Qo(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,r),r}return t}async destroy(){this.destroyed=!0,this.abortController.abort(),await this.refreshLoopResult,await this.projectTree.terminate(),this.overview.resetState(),this.blockFrontends.forEach(e=>e.resetState()),this.blockComputables.forEach(e=>{e.fullState.resetState()}),this.activeConfigs.resetState()}async destroyAndAwaitTermination(){await this.destroy()}static async init(e,t){const r=await De.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:sn},e.logger);return new Ue(e,t,r)}}function sn(s){switch(s.type.name){case"BlockPackCustom":return s.fields.filter(e=>e.name!=="template");case"UserProject":return s.fields.filter(e=>!e.name.startsWith("__serviceTemplate"));case"Blob":return[];default:return s.fields}}const Ct={logger:new P.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function Et(s){return{blobDownloadPath:q.join(s,"download")}}const _r={...Ct,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function Kr(s){return{...Et(s),frontendDownloadPath:q.join(s,"frontend")}}function on(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var ut={exports:{}};const nn="2.0.0",Hr=256,an=Number.MAX_SAFE_INTEGER||9007199254740991,cn=16,ln=Hr-6,un=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Ge={MAX_LENGTH:Hr,MAX_SAFE_COMPONENT_LENGTH:cn,MAX_SAFE_BUILD_LENGTH:ln,MAX_SAFE_INTEGER:an,RELEASE_TYPES:un,SEMVER_SPEC_VERSION:nn,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const dn=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var Me=dn;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=Ge,n=Me;e=s.exports={};const i=e.re=[],l=e.safeRe=[],a=e.src=[],c=e.t={};let u=0;const d="[a-zA-Z0-9-]",v=[["\\s",1],["\\d",o],[d,r]],h=A=>{for(const[N,x]of v)A=A.split(`${N}*`).join(`${N}{0,${x}}`).split(`${N}+`).join(`${N}{1,${x}}`);return A},g=(A,N,x)=>{const K=h(N),O=u++;n(A,O,N),c[A]=O,a[O]=N,i[O]=new RegExp(N,x?"g":void 0),l[O]=new RegExp(K,x?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*"),g("NUMERICIDENTIFIERLOOSE","\\d+"),g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),g("MAINVERSION",`(${a[c.NUMERICIDENTIFIER]})\\.(${a[c.NUMERICIDENTIFIER]})\\.(${a[c.NUMERICIDENTIFIER]})`),g("MAINVERSIONLOOSE",`(${a[c.NUMERICIDENTIFIERLOOSE]})\\.(${a[c.NUMERICIDENTIFIERLOOSE]})\\.(${a[c.NUMERICIDENTIFIERLOOSE]})`),g("PRERELEASEIDENTIFIER",`(?:${a[c.NUMERICIDENTIFIER]}|${a[c.NONNUMERICIDENTIFIER]})`),g("PRERELEASEIDENTIFIERLOOSE",`(?:${a[c.NUMERICIDENTIFIERLOOSE]}|${a[c.NONNUMERICIDENTIFIER]})`),g("PRERELEASE",`(?:-(${a[c.PRERELEASEIDENTIFIER]}(?:\\.${a[c.PRERELEASEIDENTIFIER]})*))`),g("PRERELEASELOOSE",`(?:-?(${a[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[c.PRERELEASEIDENTIFIERLOOSE]})*))`),g("BUILDIDENTIFIER",`${d}+`),g("BUILD",`(?:\\+(${a[c.BUILDIDENTIFIER]}(?:\\.${a[c.BUILDIDENTIFIER]})*))`),g("FULLPLAIN",`v?${a[c.MAINVERSION]}${a[c.PRERELEASE]}?${a[c.BUILD]}?`),g("FULL",`^${a[c.FULLPLAIN]}$`),g("LOOSEPLAIN",`[v=\\s]*${a[c.MAINVERSIONLOOSE]}${a[c.PRERELEASELOOSE]}?${a[c.BUILD]}?`),g("LOOSE",`^${a[c.LOOSEPLAIN]}$`),g("GTLT","((?:<|>)?=?)"),g("XRANGEIDENTIFIERLOOSE",`${a[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),g("XRANGEIDENTIFIER",`${a[c.NUMERICIDENTIFIER]}|x|X|\\*`),g("XRANGEPLAIN",`[v=\\s]*(${a[c.XRANGEIDENTIFIER]})(?:\\.(${a[c.XRANGEIDENTIFIER]})(?:\\.(${a[c.XRANGEIDENTIFIER]})(?:${a[c.PRERELEASE]})?${a[c.BUILD]}?)?)?`),g("XRANGEPLAINLOOSE",`[v=\\s]*(${a[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[c.XRANGEIDENTIFIERLOOSE]})(?:${a[c.PRERELEASELOOSE]})?${a[c.BUILD]}?)?)?`),g("XRANGE",`^${a[c.GTLT]}\\s*${a[c.XRANGEPLAIN]}$`),g("XRANGELOOSE",`^${a[c.GTLT]}\\s*${a[c.XRANGEPLAINLOOSE]}$`),g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),g("COERCE",`${a[c.COERCEPLAIN]}(?:$|[^\\d])`),g("COERCEFULL",a[c.COERCEPLAIN]+`(?:${a[c.PRERELEASE]})?(?:${a[c.BUILD]})?(?:$|[^\\d])`),g("COERCERTL",a[c.COERCE],!0),g("COERCERTLFULL",a[c.COERCEFULL],!0),g("LONETILDE","(?:~>?)"),g("TILDETRIM",`(\\s*)${a[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",g("TILDE",`^${a[c.LONETILDE]}${a[c.XRANGEPLAIN]}$`),g("TILDELOOSE",`^${a[c.LONETILDE]}${a[c.XRANGEPLAINLOOSE]}$`),g("LONECARET","(?:\\^)"),g("CARETTRIM",`(\\s*)${a[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",g("CARET",`^${a[c.LONECARET]}${a[c.XRANGEPLAIN]}$`),g("CARETLOOSE",`^${a[c.LONECARET]}${a[c.XRANGEPLAINLOOSE]}$`),g("COMPARATORLOOSE",`^${a[c.GTLT]}\\s*(${a[c.LOOSEPLAIN]})$|^$`),g("COMPARATOR",`^${a[c.GTLT]}\\s*(${a[c.FULLPLAIN]})$|^$`),g("COMPARATORTRIM",`(\\s*)${a[c.GTLT]}\\s*(${a[c.LOOSEPLAIN]}|${a[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",g("HYPHENRANGE",`^\\s*(${a[c.XRANGEPLAIN]})\\s+-\\s+(${a[c.XRANGEPLAIN]})\\s*$`),g("HYPHENRANGELOOSE",`^\\s*(${a[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[c.XRANGEPLAINLOOSE]})\\s*$`),g("STAR","(<|>)?=?\\s*\\*"),g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(ut,ut.exports);var Ee=ut.exports;const pn=Object.freeze({loose:!0}),hn=Object.freeze({}),fn=s=>s?typeof s!="object"?pn:s:hn;var Rt=fn;const Kt=/^[0-9]+$/,qr=(s,e)=>{const t=Kt.test(s),r=Kt.test(e);return t&&r&&(s=+s,e=+e),s===e?0:t&&!r?-1:r&&!t?1:s<e?-1:1},gn=(s,e)=>qr(e,s);var Wr={compareIdentifiers:qr,rcompareIdentifiers:gn};const ke=Me,{MAX_LENGTH:Ht,MAX_SAFE_INTEGER:Oe}=Ge,{safeRe:qt,t:Wt}=Ee,mn=Rt,{compareIdentifiers:pe}=Wr;let vn=class te{constructor(e,t){if(t=mn(t),e instanceof te){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Ht)throw new TypeError(`version is longer than ${Ht} characters`);ke("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?qt[Wt.LOOSE]:qt[Wt.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Oe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Oe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Oe||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const n=+o;if(n>=0&&n<Oe)return n}return o}):this.prerelease=[],this.build=r[5]?r[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(ke("SemVer.compare",this.version,this.options,e),!(e instanceof te)){if(typeof e=="string"&&e===this.version)return 0;e=new te(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof te||(e=new te(e,this.options)),pe(this.major,e.major)||pe(this.minor,e.minor)||pe(this.patch,e.patch)}comparePre(e){if(e instanceof te||(e=new te(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const r=this.prerelease[t],o=e.prerelease[t];if(ke("prerelease compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return pe(r,o)}while(++t)}compareBuild(e){e instanceof te||(e=new te(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(ke("build compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return pe(r,o)}while(++t)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const o=Number(r)?1:0;if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[o];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let n=[t,o];r===!1&&(n=[t]),pe(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var _=vn;const zt=_,yn=(s,e,t=!1)=>{if(s instanceof zt)return s;try{return new zt(s,e)}catch(r){if(!t)return null;throw r}};var ge=yn;const wn=ge,Sn=(s,e)=>{const t=wn(s,e);return t?t.version:null};var bn=Sn;const Cn=ge,En=(s,e)=>{const t=Cn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Rn=En;const Xt=_,Pn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new Xt(s instanceof Xt?s.version:s,t).inc(e,r,o).version}catch{return null}};var kn=Pn;const Yt=ge,On=(s,e)=>{const t=Yt(s,null,!0),r=Yt(e,null,!0),o=t.compare(r);if(o===0)return null;const n=o>0,i=n?t:r,l=n?r:t,a=!!i.prerelease.length;if(!!l.prerelease.length&&!a)return!l.patch&&!l.minor?"major":i.patch?"patch":i.minor?"minor":"major";const u=a?"pre":"";return t.major!==r.major?u+"major":t.minor!==r.minor?u+"minor":t.patch!==r.patch?u+"patch":"prerelease"};var $n=On;const Tn=_,In=(s,e)=>new Tn(s,e).major;var An=In;const Nn=_,Fn=(s,e)=>new Nn(s,e).minor;var Ln=Fn;const Dn=_,Bn=(s,e)=>new Dn(s,e).patch;var jn=Bn;const xn=ge,Vn=(s,e)=>{const t=xn(s,e);return t&&t.prerelease.length?t.prerelease:null};var Un=Vn;const Zt=_,Gn=(s,e,t)=>new Zt(s,t).compare(new Zt(e,t));var Z=Gn;const Mn=Z,Jn=(s,e,t)=>Mn(e,s,t);var _n=Jn;const Kn=Z,Hn=(s,e)=>Kn(s,e,!0);var qn=Hn;const Qt=_,Wn=(s,e,t)=>{const r=new Qt(s,t),o=new Qt(e,t);return r.compare(o)||r.compareBuild(o)};var Pt=Wn;const zn=Pt,Xn=(s,e)=>s.sort((t,r)=>zn(t,r,e));var Yn=Xn;const Zn=Pt,Qn=(s,e)=>s.sort((t,r)=>Zn(r,t,e));var ei=Qn;const ti=Z,ri=(s,e,t)=>ti(s,e,t)>0;var Je=ri;const si=Z,oi=(s,e,t)=>si(s,e,t)<0;var kt=oi;const ni=Z,ii=(s,e,t)=>ni(s,e,t)===0;var zr=ii;const ai=Z,ci=(s,e,t)=>ai(s,e,t)!==0;var Xr=ci;const li=Z,ui=(s,e,t)=>li(s,e,t)>=0;var Ot=ui;const di=Z,pi=(s,e,t)=>di(s,e,t)<=0;var $t=pi;const hi=zr,fi=Xr,gi=Je,mi=Ot,vi=kt,yi=$t,wi=(s,e,t,r)=>{switch(e){case"===":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s===t;case"!==":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s!==t;case"":case"=":case"==":return hi(s,t,r);case"!=":return fi(s,t,r);case">":return gi(s,t,r);case">=":return mi(s,t,r);case"<":return vi(s,t,r);case"<=":return yi(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var Yr=wi;const Si=_,bi=ge,{safeRe:$e,t:Te}=Ee,Ci=(s,e)=>{if(s instanceof Si)return s;if(typeof s=="number"&&(s=String(s)),typeof s!="string")return null;e=e||{};let t=null;if(!e.rtl)t=s.match(e.includePrerelease?$e[Te.COERCEFULL]:$e[Te.COERCE]);else{const a=e.includePrerelease?$e[Te.COERCERTLFULL]:$e[Te.COERCERTL];let c;for(;(c=a.exec(s))&&(!t||t.index+t[0].length!==s.length);)(!t||c.index+c[0].length!==t.index+t[0].length)&&(t=c),a.lastIndex=c.index+c[1].length+c[2].length;a.lastIndex=-1}if(t===null)return null;const r=t[2],o=t[3]||"0",n=t[4]||"0",i=e.includePrerelease&&t[5]?`-${t[5]}`:"",l=e.includePrerelease&&t[6]?`+${t[6]}`:"";return bi(`${r}.${o}.${n}${i}${l}`,e)};var Ei=Ci;class Ri{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){const o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}}var Pi=Ri,Xe,er;function Q(){if(er)return Xe;er=1;const s=/\s+/g;class e{constructor(p,w){if(w=o(w),p instanceof e)return p.loose===!!w.loose&&p.includePrerelease===!!w.includePrerelease?p:new e(p.raw,w);if(p instanceof n)return this.raw=p.value,this.set=[[p]],this.formatted=void 0,this;if(this.options=w,this.loose=!!w.loose,this.includePrerelease=!!w.includePrerelease,this.raw=p.trim().replace(s," "),this.set=this.raw.split("||").map(m=>this.parseRange(m.trim())).filter(m=>m.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const m=this.set[0];if(this.set=this.set.filter(C=>!A(C[0])),this.set.length===0)this.set=[m];else if(this.set.length>1){for(const C of this.set)if(C.length===1&&N(C[0])){this.set=[C];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let p=0;p<this.set.length;p++){p>0&&(this.formatted+="||");const w=this.set[p];for(let m=0;m<w.length;m++)m>0&&(this.formatted+=" "),this.formatted+=w[m].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const m=((this.options.includePrerelease&&h)|(this.options.loose&&g))+":"+p,C=r.get(m);if(C)return C;const S=this.options.loose,E=S?a[c.HYPHENRANGELOOSE]:a[c.HYPHENRANGE];p=p.replace(E,X(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(a[c.COMPARATORTRIM],u),i("comparator trim",p),p=p.replace(a[c.TILDETRIM],d),i("tilde trim",p),p=p.replace(a[c.CARETTRIM],v),i("caret trim",p);let $=p.split(" ").map(j=>K(j,this.options)).join(" ").split(/\s+/).map(j=>U(j,this.options));S&&($=$.filter(j=>(i("loose invalid filter",j,this.options),!!j.match(a[c.COMPARATORLOOSE])))),i("range list",$);const R=new Map,I=$.map(j=>new n(j,this.options));for(const j of I){if(A(j))return[j];R.set(j.value,j)}R.size>1&&R.has("")&&R.delete("");const B=[...R.values()];return r.set(m,B),B}intersects(p,w){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(m=>x(m,w)&&p.set.some(C=>x(C,w)&&m.every(S=>C.every(E=>S.intersects(E,w)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new l(p,this.options)}catch{return!1}for(let w=0;w<this.set.length;w++)if(de(this.set[w],p,this.options))return!0;return!1}}Xe=e;const t=Pi,r=new t,o=Rt,n=_e(),i=Me,l=_,{safeRe:a,t:c,comparatorTrimReplace:u,tildeTrimReplace:d,caretTrimReplace:v}=Ee,{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:g}=Ge,A=y=>y.value==="<0.0.0-0",N=y=>y.value==="",x=(y,p)=>{let w=!0;const m=y.slice();let C=m.pop();for(;w&&m.length;)w=m.every(S=>C.intersects(S,p)),C=m.pop();return w},K=(y,p)=>(i("comp",y,p),y=F(y,p),i("caret",y),y=ae(y,p),i("tildes",y),y=ce(y,p),i("xrange",y),y=M(y,p),i("stars",y),y),O=y=>!y||y.toLowerCase()==="x"||y==="*",ae=(y,p)=>y.trim().split(/\s+/).map(w=>ue(w,p)).join(" "),ue=(y,p)=>{const w=p.loose?a[c.TILDELOOSE]:a[c.TILDE];return y.replace(w,(m,C,S,E,$)=>{i("tilde",y,m,C,S,E,$);let R;return O(C)?R="":O(S)?R=`>=${C}.0.0 <${+C+1}.0.0-0`:O(E)?R=`>=${C}.${S}.0 <${C}.${+S+1}.0-0`:$?(i("replaceTilde pr",$),R=`>=${C}.${S}.${E}-${$} <${C}.${+S+1}.0-0`):R=`>=${C}.${S}.${E} <${C}.${+S+1}.0-0`,i("tilde return",R),R})},F=(y,p)=>y.trim().split(/\s+/).map(w=>z(w,p)).join(" "),z=(y,p)=>{i("caret",y,p);const w=p.loose?a[c.CARETLOOSE]:a[c.CARET],m=p.includePrerelease?"-0":"";return y.replace(w,(C,S,E,$,R)=>{i("caret",y,C,S,E,$,R);let I;return O(S)?I="":O(E)?I=`>=${S}.0.0${m} <${+S+1}.0.0-0`:O($)?S==="0"?I=`>=${S}.${E}.0${m} <${S}.${+E+1}.0-0`:I=`>=${S}.${E}.0${m} <${+S+1}.0.0-0`:R?(i("replaceCaret pr",R),S==="0"?E==="0"?I=`>=${S}.${E}.${$}-${R} <${S}.${E}.${+$+1}-0`:I=`>=${S}.${E}.${$}-${R} <${S}.${+E+1}.0-0`:I=`>=${S}.${E}.${$}-${R} <${+S+1}.0.0-0`):(i("no pr"),S==="0"?E==="0"?I=`>=${S}.${E}.${$}${m} <${S}.${E}.${+$+1}-0`:I=`>=${S}.${E}.${$}${m} <${S}.${+E+1}.0-0`:I=`>=${S}.${E}.${$} <${+S+1}.0.0-0`),i("caret return",I),I})},ce=(y,p)=>(i("replaceXRanges",y,p),y.split(/\s+/).map(w=>H(w,p)).join(" ")),H=(y,p)=>{y=y.trim();const w=p.loose?a[c.XRANGELOOSE]:a[c.XRANGE];return y.replace(w,(m,C,S,E,$,R)=>{i("xRange",y,m,C,S,E,$,R);const I=O(S),B=I||O(E),j=B||O($),oe=j;return C==="="&&oe&&(C=""),R=p.includePrerelease?"-0":"",I?C===">"||C==="<"?m="<0.0.0-0":m="*":C&&oe?(B&&(E=0),$=0,C===">"?(C=">=",B?(S=+S+1,E=0,$=0):(E=+E+1,$=0)):C==="<="&&(C="<",B?S=+S+1:E=+E+1),C==="<"&&(R="-0"),m=`${C+S}.${E}.${$}${R}`):B?m=`>=${S}.0.0${R} <${+S+1}.0.0-0`:j&&(m=`>=${S}.${E}.0${R} <${S}.${+E+1}.0-0`),i("xRange return",m),m})},M=(y,p)=>(i("replaceStars",y,p),y.trim().replace(a[c.STAR],"")),U=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(a[p.includePrerelease?c.GTE0PRE:c.GTE0],"")),X=y=>(p,w,m,C,S,E,$,R,I,B,j,oe)=>(O(m)?w="":O(C)?w=`>=${m}.0.0${y?"-0":""}`:O(S)?w=`>=${m}.${C}.0${y?"-0":""}`:E?w=`>=${w}`:w=`>=${w}${y?"-0":""}`,O(I)?R="":O(B)?R=`<${+I+1}.0.0-0`:O(j)?R=`<${I}.${+B+1}.0-0`:oe?R=`<=${I}.${B}.${j}-${oe}`:y?R=`<${I}.${B}.${+j+1}-0`:R=`<=${R}`,`${w} ${R}`.trim()),de=(y,p,w)=>{for(let m=0;m<y.length;m++)if(!y[m].test(p))return!1;if(p.prerelease.length&&!w.includePrerelease){for(let m=0;m<y.length;m++)if(i(y[m].semver),y[m].semver!==n.ANY&&y[m].semver.prerelease.length>0){const C=y[m].semver;if(C.major===p.major&&C.minor===p.minor&&C.patch===p.patch)return!0}return!1}return!0};return Xe}var Ye,tr;function _e(){if(tr)return Ye;tr=1;const s=Symbol("SemVer ANY");class e{static get ANY(){return s}constructor(u,d){if(d=t(d),u instanceof e){if(u.loose===!!d.loose)return u;u=u.value}u=u.trim().split(/\s+/).join(" "),i("comparator",u,d),this.options=d,this.loose=!!d.loose,this.parse(u),this.semver===s?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}parse(u){const d=this.options.loose?r[o.COMPARATORLOOSE]:r[o.COMPARATOR],v=u.match(d);if(!v)throw new TypeError(`Invalid comparator: ${u}`);this.operator=v[1]!==void 0?v[1]:"",this.operator==="="&&(this.operator=""),v[2]?this.semver=new l(v[2],this.options.loose):this.semver=s}toString(){return this.value}test(u){if(i("Comparator.test",u,this.options.loose),this.semver===s||u===s)return!0;if(typeof u=="string")try{u=new l(u,this.options)}catch{return!1}return n(u,this.operator,this.semver,this.options)}intersects(u,d){if(!(u instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new a(u.value,d).test(this.value):u.operator===""?u.value===""?!0:new a(this.value,d).test(u.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||u.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||u.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&u.operator.startsWith(">")||this.operator.startsWith("<")&&u.operator.startsWith("<")||this.semver.version===u.semver.version&&this.operator.includes("=")&&u.operator.includes("=")||n(this.semver,"<",u.semver,d)&&this.operator.startsWith(">")&&u.operator.startsWith("<")||n(this.semver,">",u.semver,d)&&this.operator.startsWith("<")&&u.operator.startsWith(">")))}}Ye=e;const t=Rt,{safeRe:r,t:o}=Ee,n=Yr,i=Me,l=_,a=Q();return Ye}const ki=Q(),Oi=(s,e,t)=>{try{e=new ki(e,t)}catch{return!1}return e.test(s)};var Ke=Oi;const $i=Q(),Ti=(s,e)=>new $i(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var Ii=Ti;const Ai=_,Ni=Q(),Fi=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Ni(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new Ai(r,t))}),r};var Li=Fi;const Di=_,Bi=Q(),ji=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Bi(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new Di(r,t))}),r};var xi=ji;const Ze=_,Vi=Q(),rr=Je,Ui=(s,e)=>{s=new Vi(s,e);let t=new Ze("0.0.0");if(s.test(t)||(t=new Ze("0.0.0-0"),s.test(t)))return t;t=null;for(let r=0;r<s.set.length;++r){const o=s.set[r];let n=null;o.forEach(i=>{const l=new Ze(i.semver.version);switch(i.operator){case">":l.prerelease.length===0?l.patch++:l.prerelease.push(0),l.raw=l.format();case"":case">=":(!n||rr(l,n))&&(n=l);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||rr(t,n))&&(t=n)}return t&&s.test(t)?t:null};var Gi=Ui;const Mi=Q(),Ji=(s,e)=>{try{return new Mi(s,e).range||"*"}catch{return null}};var _i=Ji;const Ki=_,Zr=_e(),{ANY:Hi}=Zr,qi=Q(),Wi=Ke,sr=Je,or=kt,zi=$t,Xi=Ot,Yi=(s,e,t,r)=>{s=new Ki(s,r),e=new qi(e,r);let o,n,i,l,a;switch(t){case">":o=sr,n=zi,i=or,l=">",a=">=";break;case"<":o=or,n=Xi,i=sr,l="<",a="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Wi(s,e,r))return!1;for(let c=0;c<e.set.length;++c){const u=e.set[c];let d=null,v=null;if(u.forEach(h=>{h.semver===Hi&&(h=new Zr(">=0.0.0")),d=d||h,v=v||h,o(h.semver,d.semver,r)?d=h:i(h.semver,v.semver,r)&&(v=h)}),d.operator===l||d.operator===a||(!v.operator||v.operator===l)&&n(s,v.semver))return!1;if(v.operator===a&&i(s,v.semver))return!1}return!0};var Tt=Yi;const Zi=Tt,Qi=(s,e,t)=>Zi(s,e,">",t);var ea=Qi;const ta=Tt,ra=(s,e,t)=>ta(s,e,"<",t);var sa=ra;const nr=Q(),oa=(s,e,t)=>(s=new nr(s,t),e=new nr(e,t),s.intersects(e,t));var na=oa;const ia=Ke,aa=Z;var ca=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((u,d)=>aa(u,d,t));for(const u of i)ia(u,e,t)?(n=u,o||(o=u)):(n&&r.push([o,n]),n=null,o=null);o&&r.push([o,null]);const l=[];for(const[u,d]of r)u===d?l.push(u):!d&&u===i[0]?l.push("*"):d?u===i[0]?l.push(`<=${d}`):l.push(`${u} - ${d}`):l.push(`>=${u}`);const a=l.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return a.length<c.length?a:e};const ir=Q(),It=_e(),{ANY:Qe}=It,me=Ke,At=Z,la=(s,e,t={})=>{if(s===e)return!0;s=new ir(s,t),e=new ir(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=da(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},ua=[new It(">=0.0.0-0")],ar=[new It(">=0.0.0")],da=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===Qe){if(e.length===1&&e[0].semver===Qe)return!0;t.includePrerelease?s=ua:s=ar}if(e.length===1&&e[0].semver===Qe){if(t.includePrerelease)return!0;e=ar}const r=new Set;let o,n;for(const h of s)h.operator===">"||h.operator===">="?o=cr(o,h,t):h.operator==="<"||h.operator==="<="?n=lr(n,h,t):r.add(h.semver);if(r.size>1)return null;let i;if(o&&n){if(i=At(o.semver,n.semver,t),i>0)return null;if(i===0&&(o.operator!==">="||n.operator!=="<="))return null}for(const h of r){if(o&&!me(h,String(o),t)||n&&!me(h,String(n),t))return null;for(const g of e)if(!me(h,String(g),t))return!1;return!0}let l,a,c,u,d=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&n.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(const h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",o){if(v&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===v.major&&h.semver.minor===v.minor&&h.semver.patch===v.patch&&(v=!1),h.operator===">"||h.operator===">="){if(l=cr(o,h,t),l===h&&l!==o)return!1}else if(o.operator===">="&&!me(o.semver,String(h),t))return!1}if(n){if(d&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===d.major&&h.semver.minor===d.minor&&h.semver.patch===d.patch&&(d=!1),h.operator==="<"||h.operator==="<="){if(a=lr(n,h,t),a===h&&a!==n)return!1}else if(n.operator==="<="&&!me(n.semver,String(h),t))return!1}if(!h.operator&&(n||o)&&i!==0)return!1}return!(o&&c&&!n&&i!==0||n&&u&&!o&&i!==0||v||d)},cr=(s,e,t)=>{if(!s)return e;const r=At(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},lr=(s,e,t)=>{if(!s)return e;const r=At(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var pa=la;const et=Ee,ur=Ge,ha=_,dr=Wr,fa=ge,ga=bn,ma=Rn,va=kn,ya=$n,wa=An,Sa=Ln,ba=jn,Ca=Un,Ea=Z,Ra=_n,Pa=qn,ka=Pt,Oa=Yn,$a=ei,Ta=Je,Ia=kt,Aa=zr,Na=Xr,Fa=Ot,La=$t,Da=Yr,Ba=Ei,ja=_e(),xa=Q(),Va=Ke,Ua=Ii,Ga=Li,Ma=xi,Ja=Gi,_a=_i,Ka=Tt,Ha=ea,qa=sa,Wa=na,za=ca,Xa=pa;var Ya={parse:fa,valid:ga,clean:ma,inc:va,diff:ya,major:wa,minor:Sa,patch:ba,prerelease:Ca,compare:Ea,rcompare:Ra,compareLoose:Pa,compareBuild:ka,sort:Oa,rsort:$a,gt:Ta,lt:Ia,eq:Aa,neq:Na,gte:Fa,lte:La,cmp:Da,coerce:Ba,Comparator:ja,Range:xa,satisfies:Va,toComparators:Ua,maxSatisfying:Ga,minSatisfying:Ma,minVersion:Ja,validRange:_a,outside:Ka,gtr:Ha,ltr:qa,intersects:Wa,simplifyRange:za,subset:Xa,SemVer:ha,re:et.re,src:et.src,tokens:et.t,SEMVER_SPEC_VERSION:ur.SEMVER_SPEC_VERSION,RELEASE_TYPES:ur.RELEASE_TYPES,compareIdentifiers:dr.compareIdentifiers,rcompareIdentifiers:dr.rcompareIdentifiers};const Za=on(Ya),Qa={minDelay:1500},ec="__no_updates__";class tc extends D.PollComputablePool{constructor(t,r,o={}){super({...o,...Qa},r);b(this,"http");b(this,"preferredUpdateChannel");this.registryProvider=t,this.http=o.http,this.preferredUpdateChannel=o.preferredUpdateChannel}getKey(t){switch(t.type){case"dev-v1":return`dev_1_${t.folder}_${t.mtime}`;case"dev-v2":return`dev_2_${t.folder}_${t.mtime}`;case"from-registry-v2":return`from_registry_v2_${t.registryUrl}_${t.id.organization}_${t.id.name}_${t.id.version}`;default:return ec}}async readValue(t){try{switch(t.type){case"dev-v1":try{const r=await gt(t.folder);return r===t.mtime?void 0:{...t,mtime:r}}catch(r){this.logger.warn(r);return}case"dev-v2":try{const r=await J.tryLoadPackDescription(t.folder,this.logger);if(r===void 0)return;const o=await Be(r);return o===t.mtime?void 0:{...t,mtime:o}}catch(r){this.logger.warn(r);return}case"from-registry-v2":try{const r=this.registryProvider.getRegistry(t.registryUrl);let o;if(t.channel===void 0){const n=await r.getLatestOverview(t.id,L.StableChannel);if(n)o=n.spec;else{const i=await r.getLatestOverview(t.id,L.AnyChannel);if(i===void 0){this.logger.error(`No any channel record for ${L.blockPackIdToString(t.id)}`);return}o={...i.spec,channel:L.StableChannel}}}else{const n=await r.getLatestOverview(t.id,this.preferredUpdateChannel??t.channel);if(n)o=n.spec;else if(t.channel===L.StableChannel){const i=await r.getLatestOverview(t.id,L.AnyChannel);if(i===void 0){this.logger.error(`No any channel record for ${L.blockPackIdToString(t.id)}`);return}o={...i.spec,channel:L.StableChannel}}}if((o==null?void 0:o.type)!=="from-registry-v2")throw new Error("Unexpected");return Za.compare(o.id.version,t.id.version)<=0?void 0:((async()=>{try{await r.getComponents(o.id)}catch(n){this.logger.warn(n)}})(),o)}catch(r){this.logger.warn(r);return}default:return}}catch(r){this.logger.warn(r);return}}resultsEqual(t,r){if(t===void 0&&r===void 0)return!0;if(t===void 0||r===void 0||t.type!==r.type)return!1;switch(t.type){case"from-registry-v1":return r.type!=="from-registry-v1"?!1:t.registryUrl===r.registryUrl&&L.blockPackIdEquals(t.id,r.id);case"from-registry-v2":return r.type!=="from-registry-v2"?!1:t.registryUrl===r.registryUrl&&L.blockPackIdEquals(t.id,r.id);case"dev-v1":return r.type!=="dev-v1"?!1:t.folder===r.folder&&t.mtime===r.mtime;case"dev-v2":return r.type!=="dev-v2"?!1:t.folder===r.folder&&t.mtime===r.mtime;default:P.assertNever(t)}}}class pr{constructor(){b(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");if(t.refCount===0){this.resources.delete(e);const r=t.resource;r!=null&&typeof r[Symbol.dispose]=="function"&&r[Symbol.dispose]()}}acquire(e){const t=this.calculateParamsKey(e);let r=this.resources.get(t);r===void 0&&(r={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,r)),r.refCount++;let o=!1;return{resource:r.resource,key:t,unref:()=>{o||(r.refCount--,o=!0,this.check(t))}}}getByKey(e){if(!this.resources.has(e))throw new Error(`resource not found, key = ${e}`);return this.resources.get(e).resource}tryGetByKey(e){var t;return(t=this.resources.get(e))==null?void 0:t.resource}}function hr(s){return String(s.id)}const rc=["Int","Long","Float","Double","String","Bytes"];function tt(s){const e=[],t=[];for(const r of s)r.type==="bySingleColumn"?(e.push(r),t.push({...r,type:"bySingleColumnV2"})):t.push(r);if(e.length>0){const r=JSON.stringify(e);console.warn(`type overriten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${r}`)}return s}class sc{constructor(e,t,r){b(this,"pFrame",new cs.PFrame);b(this,"blobIdToResource",new Map);b(this,"blobHandleComputables",new Map);b(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});b(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});b(this,"resolveBlobContent",async e=>{try{const t=this.getOrCreateComputableForBlob(e),r=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(r)}catch(t){const r=JSON.stringify(t);throw console.log(`resolveBlobContent catched error: ${r}`),t}});this.blobDriver=e,this.blobContentCache=t,this.columns=r,this.pFrame.setDataSource(this);for(const o of r){for(const i of oo(o.data))this.blobIdToResource.set(hr(i),i);const n=no(o.data,hr);try{this.pFrame.addColumnSpec(o.id,o.spec),this.pFrame.setColumnData(o.id,n)}catch(i){throw new Error(`Adding column ${o.id} to PFrame failed: ${i}; Spec: ${o.spec}, DataInfo: ${n}.`)}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.pFrame.dispose()}}class oc{constructor(e){b(this,"pFrames");b(this,"pTables");b(this,"blobContentCache");b(this,"concurrencyLimiter");this.blobDriver=e;const t=new ls.LRUCache({maxSize:1e9,fetchMethod:async o=>await vr.readFile(o),sizeCalculation:o=>o.length}),r=new P.ConcurrencyLimitingExecutor(1);this.blobContentCache=t,this.concurrencyLimiter=r,this.pFrames=new class extends pr{constructor(o){super(),this.blobDriver=o}createNewResource(o){return new sc(this.blobDriver,t,o)}calculateParamsKey(o){return ic(o)}}(this.blobDriver),this.pTables=new class extends pr{constructor(o){super(),this.pFrames=o}async createNewResource(o){const n=this.pFrames.getByKey(o.pFrameHandle),i=await r.run(async()=>await n.pFrame.createTable({src:Se(o.def.src),filters:tt(o.def.filters)}));return o.def.sorting.length!==0?i.sort(o.def.sorting):i}calculateParamsKey(o){return nc(o)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>rc.find(i=>i===n.spec.valueType)).map(n=>V.mapPObjectData(n,i=>De.isPlTreeNodeAccessor(i)?po(i):ho(n.spec,i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t){const r=this.createPFrame(V.extractAllColumns(e.src),t),o=V.mapPTableDef(e,i=>i.id),n=this.pTables.acquire({def:o,pFrameHandle:r});return t.addOnDestroy(n.unref),n.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:t.compatibleWith,qualifications:[]}]:[]};return{hits:(await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.findColumns(r))).hits.map(o=>o.hit)}}async getColumnSpec(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getColumnSpec(t))}async listColumns(e){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.listColumns())}async calculateTableData(e,t){let r=await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.createTable({src:Se(t.src),filters:tt(t.filters)}));if(t.sorting.length>0){const i=await this.concurrencyLimiter.run(async()=>await r.sort(t.sorting));r.dispose(),r=i}const o=r.getSpec(),n=await this.concurrencyLimiter.run(async()=>await r.getData([...o.keys()]));return r.dispose(),o.map((i,l)=>({spec:i,data:n[l]}))}async getUniqueValues(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getUniqueValues({...t,filters:tt(t.filters)}))}async getShape(e){return(await this.pTables.getByKey(e)).getShape()}async getSpec(e){return(await this.pTables.getByKey(e)).getSpec()}async getData(e,t,r){const o=await this.pTables.getByKey(e);return await this.concurrencyLimiter.run(async()=>await o.getData(t,r))}}function Se(s){switch(s.type){case"column":return{type:"column",columnId:s.column,qualifications:[]};case"inner":case"full":return{type:s.type,entries:s.entries.map(e=>Se(e))};case"outer":return{type:"outer",primary:Se(s.primary),secondary:s.secondary.map(e=>Se(e))};default:P.assertNever(s)}}function nc(s){const e=ie.createHash("sha256");return e.update(s.pFrameHandle),e.update(pt(s.def)),e.digest().toString("hex")}function ic(s){const e=s.map(o=>o.id).sort(),t=ie.createHash("sha256");let r="";for(const o of e)r!==o&&(t.update(o),r=o);return t.digest().toString("hex")}async function Qr(s,e,t){const r={...Ct,...Et(e),...t},o=new P.HmacSha256Signer(r.localSecret),n=ee.createDownloadClient(r.logger,s,r.localProjections),i=ee.createLogsClient(s,r.logger),l=ee.createUploadBlobClient(s,r.logger),a=ee.createUploadProgressClient(s,r.logger),c=new ee.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),u=new ee.UploadDriver(r.logger,o,l,a,r.uploadDriverOps),d=new ee.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),v=new ee.LogsDriver(r.logger,d,c),h=await ee.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),g=new oc(c);return{blobDriver:c,logDriver:v,lsDriver:h,signer:o,uploadDriver:u,pFrameDriver:g}}class Nt{constructor(e,t,r,o,n,i,l,a){b(this,"pl");b(this,"projectList");b(this,"openedProjectsByRid",new Map);this.env=e,this.driverKit=t,this.signer=r,this.projectListResourceId=o,this.openedProjectsList=n,this.projectListTree=i,this.blockRegistryProvider=l,this.projectList=a,this.pl=this.env.pl}get internalDriverKit(){return this.env.driverKit}async createProject(e,t=ie.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await so(o,e);return o.createField(f.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await f.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await re(this.pl,e,r,async o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(f.field(this.projectListResourceId,e)),await t.commit()}),await this.projectListTree.refreshState()}async projectIdToResourceId(e){return await this.pl.withReadTx("Project id to resource id",async t=>{const r=(await t.getField(f.field(this.projectListResourceId,e))).value;if(f.isNullResourceId(r))throw new Error("Unexpected project list structure.");return r})}async ensureProjectRid(e){return typeof e=="string"?await this.projectIdToResourceId(e):e}async openProject(e){const t=await this.ensureProjectRid(e);if(this.openedProjectsByRid.has(t))throw new Error(`Project ${t} already opened`);this.openedProjectsByRid.set(t,await Ue.init(this.env,t)),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}async closeProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);this.openedProjectsByRid.delete(e),await t.destroy(),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}getOpenedProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);return t}async close(){await Promise.all([...this.openedProjectsByRid.values()].map(e=>e.destroy())),await this.projectListTree.terminate(),await this.env.retryHttpDispatcher.destroy(),await this.pl.close()}async closeAndAwaitTermination(){await this.close()}static generateLocalSecret(){return P.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={..._r,...Kr(t),...r};process.env.MI_LOG_TREE_STAT&&(o.defaultTreeOptions.logStat=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request");const n=await e.withWriteTx("MLInitialization",async A=>{const N=f.field(A.clientRoot,Ls);A.createField(N,"Dynamic");const x=await A.getField(N);if(f.isNullResourceId(x.value)){const K=A.createEphemeral(Cr);return A.lock(K),A.setField(N,K),await A.commit(),await K.globalId}else return x.value}),i=o.logger,l=await Qr(e,t,o),a=new ne.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),c=new wr(a),u=new Xs(c,l.signer,a),d=new ee.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),v={pl:e,signer:l.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:a,ops:o,bpPreparer:u,frontendDownloadDriver:d,driverKit:l,blockUpdateWatcher:new tc(c,i,{minDelay:o.devBlockUpdateRecheckInterval,http:a,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await Ae.getQuickJS()},h=new D.WatchableValue([]),g=await Bs(e,n,h,v);return new Nt(v,l,l.signer,n,h,g.tree,c,g.computable)}}const ac=["undici:request:create","undici:request:bodySent","undici:request:headers","undici:request:error","undici:request:trailers","undici:client:sendHeaders","undici:client:beforeConnect","undici:client:connected","undici:client:connectError","undici:socket:close","undici:socket:connect","undici:socket:error","undici:pool:request","undici:pool:connect","undici:pool:disconnect","undici:pool:destroy","undici:dispatcher:request","undici:dispatcher:connect","undici:dispatcher:disconnect","undici:dispatcher:retry"];async function cc(s,e={}){const t={pingCheckDurationMs:1e4,pingTimeoutMs:3e3,maxPingsPerSecond:50,httpTimeoutMs:3e3,blockRegistryDurationMs:3e3,maxRegistryChecksPerSecond:1,blockRegistryUrl:"https://blocks.pl-open.science",blockGARegistryUrl:"https://blocks-ga.pl-open.science",blockOverviewPath:"v2/overview.json",blockUiPath:"v2/milaboratories/samples-and-data/1.7.0/ui.tgz",autoUpdateCdnDurationMs:5e3,maxAutoUpdateCdnChecksPerSecond:1,autoUpdateCdnUrl:"https://cdn.platforma.bio/software/platforma-desktop-v2/windows/amd64/latest.yml",bodyLimit:300,...e},r=[];ac.forEach(a=>{us.channel(a).subscribe(u=>{var v;const d=new Date().toISOString();(v=u==null?void 0:u.response)!=null&&v.headers&&(u.response.headers=u.response.headers.map(h=>h.toString())),r.push(JSON.stringify({timestamp:d,event:a,data:u}))})});const o={plPings:[],blockRegistryOverviewChecks:[],blockGARegistryOverviewChecks:[],blockRegistryUiChecks:[],blockGARegistryUiChecks:[],autoUpdateCdnChecks:[]},n=f.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});o.plPings=await he(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const c=await new f.UnauthenticatedPlClient(n).ping();return JSON.stringify(c).slice(0,t.bodyLimit)+"..."});const l=new f.UnauthenticatedPlClient(n).ll.httpDispatcher;return o.blockRegistryOverviewChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,l)),o.blockGARegistryOverviewChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,l)),o.blockRegistryUiChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockUiPath,t.blockRegistryUrl),t,l)),o.blockGARegistryUiChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockUiPath,t.blockGARegistryUrl),t,l)),o.autoUpdateCdnChecks=await he(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await ve(t.autoUpdateCdnUrl,t,l)),lc(o,s,t,r)}async function he(s,e,t){const r=dt(),o=[];for(;fr(r)<s;){const n=dt();let i;try{i={ok:!0,value:await t()}}catch(c){i={ok:!1,error:c}}const l=fr(n);o.push({elapsedMs:l,response:i});const a=1e3/e-l;a>0&&await mr.setTimeout(a)}return o}async function ve(s,e,t){const{body:r,statusCode:o}=await ne.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function lc(s,e,t,r){const o=s.plPings.filter(l=>l.response.ok),n=s.plPings.filter(l=>!l.response.ok),i=[...new Set(o.map(l=>JSON.stringify(l.response.value)))];return`
|
|
1
|
+
"use strict";var ts=Object.defineProperty;var rs=(s,e,t)=>e in s?ts(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var b=(s,e,t)=>rs(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("@platforma-sdk/model"),V=require("@milaboratories/pl-model-middle-layer"),ne=require("undici"),J=require("@platforma-sdk/block-tools"),Y=require("node:fs"),q=require("node:path"),ss=require("yaml"),P=require("@milaboratories/ts-helpers"),os=require("node:fs/promises"),ns=require("@milaboratories/resolve-helper"),f=require("@milaboratories/pl-client"),Le=require("@milaboratories/pl-tree"),D=require("@milaboratories/computable"),ie=require("node:crypto"),gr=require("denque"),is=require("@platforma-sdk/workflow-tengo"),pt=require("canonicalize"),as=require("node:assert"),Ae=require("quickjs-emscripten"),mr=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),cs=require("@milaboratories/pframes-node"),ls=require("lru-cache"),us=require("node:diagnostics_channel");function ds(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const vr=ds(os);async function Ft(s){try{return await vr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const ps=[J.RegistryV1.PlPackageYamlConfigFile],hs=[J.RegistryV1.PlPackageJsonConfigFile],ht=["backend","dist","tengo","tpl","main.plj.gz"],ft=["config","dist","config.json"],yr=["frontend","dist"],Dt="block-model/dist/config.json",fs="block-ui/package.json",gs=[ht,ft,ps,hs,yr];async function ms(s){return await Ft(q.join(s,...ft))!==void 0||await Ft(q.join(s,...ht))!==void 0}function He(s,e){const t=ns.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Lt(s,e){if(q.isAbsolute(s)||(s=q.resolve(s)),await ms(s))return{workflow:q.join(s,...ht),config:q.join(s,...ft),ui:q.join(s,...yr)};{const t=He(s,Dt),r=He(s,Dt),o=He(s,fs);return{workflow:t,config:r,ui:q.resolve(o,"..","dist")}}}async function vs(s){try{return await Y.promises.readFile(s,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function ys(s){try{return await Y.promises.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function gt(s){let e=0n;for(const t of gs){const r=q.join(s,...t),o=await ys(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function Be(s){const e=await Y.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await Y.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class ws{constructor(e,t,r){this.v2Provider=e,this.registries=t,this.http=r}async getPackagesForRoot(e){const t=[],r=e.spec;switch(r.type){case"remote-v1":const o=this.http!==void 0?{dispatcher:this.http}:{},i=await(await ne.request(`${r.url}/${J.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const l of i){const{organization:a,package:c,latestMeta:u,latestVersion:d}=l,v={organization:a,name:c,version:d},h={id:v,meta:{title:u.title??"No title",description:u.description??"No Description",organization:{name:a,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:v,registryUrl:r.url}};t.push({registryId:e.id,id:v,latestByChannel:{[V.AnyChannel]:h,[V.StableChannel]:h},allVersions:l.allVersions.map(g=>({version:g,channels:[]}))})}return t;case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(l=>l.latestByChannel[V.StableChannel]?{...l,registryId:e.id}:{...l,latestByChannel:{...l.latestByChannel,[V.StableChannel]:(a=>a.spec.type==="from-registry-v2"?{...a,spec:{...a.spec,channel:V.StableChannel}}:a)(l.latestByChannel[V.AnyChannel])},registryId:e.id});case"local-dev":for(const l of await Y.promises.readdir(r.path,{withFileTypes:!0})){if(!l.isDirectory())continue;const a=q.join(r.path,l.name),c=await vs(q.join(a,J.RegistryV1.PlPackageYamlConfigFile));if(c!==void 0){const u=J.RegistryV1.PlPackageConfigData.parse(ss.parse(c)),d=await gt(a),v={organization:u.organization,name:u.package,version:"DEV"},h={id:v,meta:{title:u.meta.title??"No title",description:u.meta.description??"No Description",organization:{name:u.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:a,mtime:d}};t.push({registryId:e.id,id:v,latestByChannel:{[V.AnyChannel]:h,[V.StableChannel]:h},allVersions:[]})}else{let u=a,d=await J.tryLoadPackDescription(u);if(d===void 0){for(const v of["block","meta"])if(u=q.join(a,v),d=await J.tryLoadPackDescription(u),d!==void 0)break}if(d!==void 0){const v=await Be(d),h={id:d.id,meta:await J.BlockPackMetaEmbedAbsoluteBytes.parseAsync(d.meta),spec:{type:"dev-v2",folder:u,mtime:v}};t.push({registryId:e.id,id:d.id,latestByChannel:{[V.AnyChannel]:h,[V.StableChannel]:h},allVersions:[]})}}}return t;default:return P.assertNever(r)}}async listBlockPacks(){const e=[],t=[];for(const r of this.registries)t.push({...r,status:"online"}),e.push(...await this.getPackagesForRoot(r));return{registries:t,blockPacks:e}}async getOverview(e,t,r){var i;const o=(i=this.registries.find(l=>l.id===e))==null?void 0:i.spec;if(!o)throw new Error(`Registry with id "${e}" not found`);if(o.type!=="remote-v2")throw new Error('Only "remote-v2" registries support specific package version overview retrieval.');return await this.v2Provider.getRegistry(o.url).getSpecificOverview(t,r)}}class wr{constructor(e){b(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new J.RegistryV2Reader(J.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const Ss={type:"remote-v2",url:"https://blocks.pl-open.science/"},bs={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},Cs={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},Es={groups:[{id:"default",label:"Default",blocks:[]}]},Rs={stagingRefreshTimestamp:0,blocksInLimbo:[]},Ps={label:"New Project"},ks={name:"UserProject",version:"2"},Sr="SchemaVersion",br="1",mt="ProjectCreated",be="ProjectLastModified",Ce="ProjectMeta",le="ProjectStructure",Ne="BlockRenderingState",Os="BlockFrontendState/",$s=/^BlockFrontendState\/(?<blockid>.*)$/;function rt(s){return`${Os}${s}`}const Ts="BlockArgsAuthor/";function st(s){return`${Ts}${s}`}const ot="ProjectStructureAuthor";function Is(s){const e=s.match($s);if(e!==null)return e.groups.blockid}const As="__serviceTemplate_";function nt(s){return`${As}${s}`}function G(s,e){return`${s}-${e}`}const Ns=/^(?<blockId>.*)-(?<fieldName>blockPack|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function Fs(s){const e=s.match(Ns);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const Ds="projects",Cr={name:"Projects",version:"1"},Ls=s=>f.resourceTypesEqual(s.type,Cr)?s.fields:[];async function Bs(s,e,t,r){const o=await Le.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Ls},r.logger);return{computable:D.Computable.make(i=>{const l=i.accessor(o.entry()).node(),a=t.getValue(i);if(l===void 0)return;const c=[];for(const u of l.listDynamicFields()){const d=l.traverse(u);if(d===void 0)continue;const v=P.notEmpty(d.getKeyValueAsJson(Ce)),h=P.notEmpty(d.getKeyValueAsJson(mt)),g=P.notEmpty(d.getKeyValueAsJson(be));c.push({id:u,rid:d.id,created:new Date(h),lastModified:new Date(g),opened:a.indexOf(d.id)>=0,meta:v})}return c.sort(u=>-u.lastModified.valueOf()),c}).withStableType(),tree:o}}const js={name:"EphRenderTemplate",version:"1"},xs={name:"RenderTemplate",version:"1"};function vt(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(js):s.createStruct(xs),i=f.field(n,"template"),l=f.field(n,"inputs");return s.createField(i,"Input",e),s.createField(l,"Input",f.Pl.createPlMap(s,r,t)),s.lockInputs(n),f.Pl.futureRecord(s,n,o,"Output","outputs/")}const Vs={name:"BContextEnd",version:"1"},Us={name:"BContext",version:"1"},Gs="id",Ms="parent/",Js=["context","result"];function Bt(s,e,t){return vt(s,e,!0,t,Js)}function _s(s){const e=s.createEphemeral(Vs);return s.lock(e),e}function Ks(s,e){if(e.length===0)return _s(s);if(e.length===1)return e[0];const t=s.createEphemeral(Us);s.createField(f.field(t,Gs),"Input",f.Pl.createPlString(s,ie.randomUUID()));for(let r=0;r<e.length;r++)s.createField(f.field(t,`${Ms}${r}`),"Input",e[r]);return s.lock(t),t}const Er={name:"TengoTemplateGet",version:"1"},Rr="registry",Pr="templateURI",kr="template",Or={name:"TengoTemplatePack",version:"1"},$r={name:"TengoTemplatePackConvert",version:"1"},Tr="templatePack",Ir="template";async function Ar(s){switch(s.type){case"from-file":return{type:"explicit",content:await Y.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return P.assertNever(s)}}function Hs(s,e){const t=s.createStruct(Er),r=f.field(t,Rr),o=f.field(t,Pr),n=f.field(t,kr);return s.setField(r,s.createValue(f.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(f.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function qs(s,e){const t=s.createValue(Or,e.content),r=s.createStruct($r),o=f.field(r,Tr),n=f.field(r,Ir);return s.setField(o,t),n}function je(s,e){switch(e.type){case"from-registry":return Hs(s,e);case"explicit":return qs(s,e);default:return P.assertNever(e)}}const yt={name:"Frontend/FromUrl",version:"1"},wt={name:"Frontend/FromFolder",version:"1"};function Ws(s,e){switch(e.type){case"url":return s.createValue(yt,JSON.stringify({url:e.url}));case"local":return s.createValue(wt,JSON.stringify({path:e.path,signature:e.signature}));default:return P.assertNever(e)}}const zs={name:"BlockPackCustom",version:"1"},Nr="template",Fr="frontend";function jt(s){return s.endsWith("/")?s:`${s}/`}class Xs{constructor(e,t,r){this.v2RegistryProvider=e,this.signer=t,this.http=r}async getBlockConfigContainer(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Lt(e.folder),r=await Y.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await J.loadPackDescription(e.folder),r=await Y.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${jt(e.registryUrl)}${J.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await ne.request(`${r}/config.json`,t)).body.json()}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id);return await(await ne.request(o.model.url,t)).body.json()}default:return P.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Lt(e.folder),r=await Y.promises.readFile(t.workflow),o=JSON.parse(await Y.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:r},config:o,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:e}}case"dev-v2":{const t=await J.loadPackDescription(e.folder),r=JSON.parse(await Y.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Y.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await Be(t)),{type:"explicit",template:{type:"explicit",content:o},config:r,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${jt(e.registryUrl)}${J.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,o=`${r}/template.plj.gz`,n=await ne.request(o,t);if(n.statusCode!==200)throw new Error(`Block not found in registry (url = ${o} ; code = ${n.statusCode}): `+JSON.stringify(e));const i=new Uint8Array(await n.body.arrayBuffer()),a=await(await ne.request(`${r}/config.json`,t)).body.json();return{type:"explicit",template:{type:"explicit",content:i},config:a,frontend:{type:"url",url:`${r}/frontend.tgz`},source:e}}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),n=async()=>await(await ne.request(o.model.url,t)).body.json(),i=async()=>await(await ne.request(o.workflow.main.url,t)).body.arrayBuffer(),[l,a]=await Promise.all([n(),i()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(a)},config:l,frontend:{type:"url",url:o.ui.url},source:e}}default:return P.assertNever(e)}}}function Ys(s,e){const t={config:e.config,source:e.source},r=s.createStruct(zs,JSON.stringify(t));return s.createField(f.field(r,Nr),"Input",je(s,e.template)),s.createField(f.field(r,Fr),"Input",Ws(s,e.frontend)),s.lock(r),r}function xt(s,e){switch(e.type){case"explicit":return Ys(s,e);default:return P.assertNever(e.type)}}function Re(s,e){return{__isRef:!0,blockId:s,name:e}}function Zs(s){return typeof s=="object"&&s!==null&&s.__isRef===!0&&"blockId"in s&&"name"in s}function it(s,e,t){const r=typeof e;switch(r){case"function":case"bigint":case"number":case"string":case"boolean":case"symbol":case"undefined":return;case"object":if(e===null)return;if(Zs(e))t===void 0||t.has(e.blockId)?s.upstreams.add(e.blockId):s.missingReferences=!0;else if(Array.isArray(e))for(const o of e)it(s,o,t);else for(const[,o]of Object.entries(e))it(s,o,t);return;default:P.assertNever(r)}}function Qs(s,e){const t={upstreams:new Set,missingReferences:!1};return it(t,s,e),t}function se(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class Dr{constructor(e){b(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,o=>r.add(o.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const o of t)r.delete(o);return r}traverse(e,t,r){let o=[...t];const n=new Set(o);for(;o.length>0;){let i=[];for(const l of o){const a=this.nodes.get(l);r(a),a[e].forEach(c=>{n.has(c)||(n.add(c),i.push(c))})}o=i}}}function at(s){const e=new Map;let t;for(const{id:r}of se(s)){const o={id:r,missingReferences:!1};e.set(r,o),t===void 0?o.upstream=new Set:(o.upstream=new Set([t.id]),t.downstream=new Set([o.id])),t=o}return t!==void 0&&(t.downstream=new Set),new Dr(e)}function Ie(s,e){const t=new Map,r=new Set;for(const{id:o}of se(s)){const n=e(o);if(n===void 0)continue;const i=Qs(n,r),l={id:o,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(o,l),i.upstreams.forEach(a=>t.get(a).downstream.add(o)),r.add(o)}return new Dr(t)}function eo(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function ct(s,e){if(s.size>e.size)return ct(e,s);for(const t of s)if(e.has(t))return!0;return!1}function Vt(s,e){const t=new Set,r=new Set,o=new Set;return s.nodes.forEach(n=>{const i=e.nodes.get(n.id);i===void 0?t.add(n.id):(!eo(n.upstream,i.upstream)||ct(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?ct(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let qe;async function Lr(){if(qe===void 0){const s=await Ar(is.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=ie.createHash("sha256").update(s.content).digest("hex");qe={spec:s,hash:e}}return qe}function to(s,e,t){return vt(s,e,!0,{pf:t},["result"]).result}function We(s,e){let t=!1,r,o;return()=>{if(!t)return t=!0,r=s(),o=e(),o;const n=s();return r!==n&&(r=n,o=e()),e()}}class Ut{constructor(e,t){b(this,"currentInputsC",We(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));b(this,"actualProductionInputsC",We(()=>{var e;return(e=this.fields.prodArgs)==null?void 0:e.modCount},()=>{var t;const e=(t=this.fields.prodArgs)==null?void 0:t.value;if(e!==void 0)return JSON.parse(Buffer.from(e).toString())}));b(this,"productionStaleC",We(()=>{var e;return`${this.fields.currentArgs.modCount}_${(e=this.fields.prodArgs)==null?void 0:e.modCount}`},()=>this.fields.prodArgs===void 0||Buffer.compare(this.fields.currentArgs.value,this.fields.prodArgs.value)!==0));this.id=e,this.fields=t}check(){if(this.fields.prodOutput===void 0!=(this.fields.prodCtx===void 0))throw new Error("inconsistent prod fields");if(this.fields.stagingOutput===void 0!=(this.fields.stagingCtx===void 0))throw new Error("inconsistent stage fields");if(this.fields.prodOutputPrevious===void 0!=(this.fields.prodCtxPrevious===void 0))throw new Error("inconsistent prod cache fields");if(this.fields.stagingOutputPrevious===void 0!=(this.fields.stagingCtxPrevious===void 0))throw new Error("inconsistent stage cache fields");if(this.fields.blockPack===void 0)throw new Error("no block pack field");if(this.fields.currentArgs===void 0)throw new Error("no current args field")}get currentInputs(){return this.currentInputsC()}get stagingRendered(){return this.fields.stagingCtx!==void 0}get productionRendered(){return this.fields.prodCtx!==void 0}get productionStale(){return this.productionRendered&&this.productionStaleC()}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(f.Pl.unwrapHolder(e,this.fields.blockPack.ref),Nr,"Input")}}const ro=s=>{throw new Error(`No new block info for ${s}`)};class Fe{constructor(e,t,r,o,n,i,l,a,c,u,d,v){b(this,"globalModCount",0);b(this,"fieldsChanged",!1);b(this,"lastModifiedChanged",!1);b(this,"structureChanged",!1);b(this,"metaChanged",!1);b(this,"renderingStateChanged",!1);b(this,"changedBlockFrontendStates",new Set);b(this,"blocksWithChangedInputs",new Set);b(this,"stagingGraph");b(this,"pendingProductionGraph");b(this,"actualProductionGraph");this.rid=e,this.tx=t,this.author=r,this.schema=o,this.lastModified=n,this.meta=i,this.struct=l,this.renderingState=a,this.blocksInLimbo=c,this.blockInfos=u,this.blockFrontendStates=d,this.ctxExportTplHolder=v}fixProblems(){this.blockInfos.forEach(e=>{(e.fields.prodArgs===void 0||e.fields.prodOutput===void 0||e.fields.prodCtx===void 0)&&this.deleteBlockFields(e.id,"prodArgs","prodOutput","prodCtx")})}get wasModified(){return this.lastModifiedChanged||this.structureChanged||this.fieldsChanged||this.metaChanged||this.renderingStateChanged||this.changedBlockFrontendStates.size>0}get structure(){return JSON.parse(JSON.stringify(this.struct))}getStagingGraph(){return this.stagingGraph===void 0&&(this.stagingGraph=at(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=Ie(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=Ie(this.struct,e=>this.getBlockInfo(e).actualProductionInputs)),this.actualProductionGraph}getBlockInfo(e){return P.notEmpty(this.blockInfos.get(e))}getBlock(e){for(const t of se(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=f.field(this.rid,G(e,t));if(r.ref===void 0)throw new Error("Can't set value with empty ref");this.getBlockInfo(e).fields[t]===void 0?this.tx.createField(o,"Dynamic",r.ref):this.tx.setField(o,r.ref),this.getBlockInfo(e).fields[t]={modCount:this.globalModCount++,...r},this.fieldsChanged=!0}setBlockField(e,t,r,o,n){this.setBlockFieldObj(e,t,{ref:r,status:o,value:n})}deleteBlockFields(e,...t){let r=!1;const o=this.getBlockInfo(e);for(const n of t){const i=o.fields;n in i&&(this.tx.removeField(f.field(this.rid,G(e,n))),delete i[n],this.fieldsChanged=!0,r=!0)}return r}updateLastModified(){this.lastModified=Date.now(),this.lastModifiedChanged=!0}resetStagingRefreshTimestamp(){this.renderingState.stagingRefreshTimestamp=Date.now(),this.renderingStateChanged=!0}resetStaging(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.stagingOutput)==null?void 0:r.status)==="Ready"&&((o=t.stagingCtx)==null?void 0:o.status)==="Ready"&&((n=t.stagingUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"stagingOutputPrevious",t.stagingOutput),this.setBlockFieldObj(e,"stagingCtxPrevious",t.stagingCtx),this.setBlockFieldObj(e,"stagingUiCtxPrevious",t.stagingUiCtx)),this.deleteBlockFields(e,"stagingOutput","stagingCtx","stagingUiCtx")&&this.resetStagingRefreshTimestamp()}resetProduction(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"&&((n=t.prodUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"prodOutputPrevious",t.prodOutput),this.setBlockFieldObj(e,"prodCtxPrevious",t.prodCtx),this.setBlockFieldObj(e,"prodUiCtxPrevious",t.prodUiCtx)),this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}resetOrLimboProduction(e){var r,o;const t=this.getBlockInfo(e).fields;return((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"?this.blocksInLimbo.has(e)?!1:(this.blocksInLimbo.add(e),this.renderingStateChanged=!0,this.deleteBlockFields(e,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),!0):this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}setArgs(e){const t=[];for(const{blockId:r,args:o}of e){const n=this.getBlockInfo(r);JSON.parse(o);const i=Buffer.from(o);if(Buffer.compare(n.fields.currentArgs.value,i)===0)continue;const l=this.tx.createValue(f.Pl.JsonObject,i);this.setBlockField(r,"currentArgs",l,"Ready",i),this.blocksWithChangedInputs.add(r),t.push(r)}this.getStagingGraph().traverse("downstream",t,({id:r})=>this.resetStaging(r)),t.length>0&&this.updateLastModified()}setUiState(e,t){if(this.blockInfos.get(e)===void 0)throw new Error("no such block");this.blockFrontendStates.get(e)!==t&&(t===void 0?this.blockFrontendStates.delete(e):this.blockFrontendStates.set(e,t),this.changedBlockFrontendStates.add(e),this.blocksWithChangedInputs.add(e),this.updateLastModified())}createCtx(e,t){const r=[];return e.forEach(o=>{const n=this.getBlockInfo(o);if(n.fields[t]===void 0||n.fields[t].ref===void 0)throw new Error("One of the upstreams staging is not rendered.");r.push(f.Pl.unwrapHolder(this.tx,n.fields[t].ref))}),Ks(this.tx,r)}exportCtx(e){return to(this.tx,f.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getStagingGraph().nodes.get(e).upstream,"stagingCtx");if(this.getBlock(e).renderingMode!=="Heavy")throw new Error("not supported yet");const o=t.getTemplate(this.tx),n=Bt(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(f.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(f.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",f.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"stagingUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"stagingOutput",n.result,"NotReady")}renderProductionFor(e){this.resetProduction(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getPendingProductionGraph().nodes.get(e).upstream,"prodCtx");if(this.getBlock(e).renderingMode==="Light")throw new Error("Can't render production for light block.");const o=t.getTemplate(this.tx),n=Bt(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(f.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(f.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",f.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"prodUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"prodOutput",n.result,"NotReady"),this.setBlockFieldObj(e,"prodArgs",t.fields.currentArgs),this.blocksInLimbo.delete(e)&&(this.renderingStateChanged=!0)}updateStructure(e,t=ro){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=at(e),i=Ie(e,c=>{var u;return(u=this.blockInfos.get(c))==null?void 0:u.actualProductionInputs}),l=Vt(r,n),a=Vt(o,i);for(const c of l.onlyInA){const{fields:u}=this.getBlockInfo(c);this.deleteBlockFields(c,...Object.keys(u)),this.blockInfos.delete(c),this.blocksInLimbo.delete(c)&&(this.renderingStateChanged=!0),this.blockFrontendStates.delete(c)&&this.changedBlockFrontendStates.add(c)}for(const c of l.onlyInB){const u=new Ut(c,{});this.blockInfos.set(c,u);const d=t(c),v=xt(this.tx,d.blockPack);this.setBlockField(c,"blockPack",f.Pl.wrapInHolder(this.tx,v),"NotReady");const h=Buffer.from(d.args),g=this.tx.createValue(f.Pl.JsonObject,h);this.setBlockField(c,"currentArgs",g,"Ready",h),d.uiState&&(this.blockFrontendStates.set(c,d.uiState),this.changedBlockFrontendStates.add(c)),u.check()}for(const c of l.different)this.resetStaging(c);o.traverse("downstream",[...a.different],c=>{this.resetOrLimboProduction(c.id)}),(l.onlyInB.size>0||l.onlyInA.size>0||l.different.size>0)&&this.resetStagingRefreshTimestamp(),this.struct=e,this.structureChanged=!0,this.stagingGraph=void 0,this.pendingProductionGraph=void 0,this.actualProductionGraph=void 0,this.updateLastModified()}addBlock(e,t,r){const o=this.structure;if(r===void 0)o.groups[o.groups.length-1].blocks.push(e);else{let n=!1;for(const i of o.groups){const l=i.blocks.findIndex(a=>a.id===r);if(!(l<0)){i.blocks.splice(l,0,e),n=!0;break}}if(!n)throw new Error(`Can't find element with id: ${r}`)}this.updateStructure(o,n=>{if(n!==e.id)throw new Error("Unexpected");return t})}deleteBlock(e){const t=this.structure;let r=!1;for(const o of t.groups){const n=o.blocks.findIndex(i=>i.id===e);if(!(n<0)){o.blocks.splice(n,1),r=!0;break}}if(!r)throw new Error(`Can't find element with id: ${e}`);this.updateStructure(t)}migrateBlockPack(e,t,r){const o=this.getBlockInfo(e);this.setBlockField(e,"blockPack",f.Pl.wrapInHolder(this.tx,xt(this.tx,t)),"NotReady"),r!==void 0?(this.setArgs([{blockId:e,args:r}]),this.setUiState(e,void 0)):this.getStagingGraph().traverse("downstream",[e],({id:n})=>this.resetStaging(n)),o.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,i=>{r.add(i.id)});else for(const i of r){const l=o.nodes.get(i);if(l===void 0)throw new Error(`Can't find block with id: ${i}`);for(const a of l.upstream)if(!r.has(a))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const i of se(this.structure)){if(!r.has(i.id))continue;let l=this.getBlockInfo(i.id).requireProductionRendering||this.blocksInLimbo.has(i.id);if(!l){for(const a of o.nodes.get(i.id).upstream)if(n.has(a)){l=!0;break}}l&&(this.renderProductionFor(i.id),n.add(i.id))}return o.traverse("downstream",[...n],i=>{n.has(i.id)||this.resetOrLimboProduction(i.id)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,l;const t=this.getActualProductionGraph(),r=new gr(e),o=new Set(e),n=[];for(;!r.isEmpty();){const a=r.shift(),c=this.getBlockInfo(a).fields;if(!(((i=c.prodOutput)==null?void 0:i.status)==="Ready"&&((l=c.prodCtx)==null?void 0:l.status)==="Ready")&&this.deleteBlockFields(a,"prodOutput","prodCtx","prodUiCtx","prodArgs")){n.push(a);for(const u of t.traverseIdsExcludingRoots("downstream",a))o.has(u)||(r.push(u),o.add(u))}}for(const a of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(a)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(o=>{let i=this.getBlockInfo(o.id).stagingRendered?0:1;o.upstream.forEach(l=>{const a=t.get(l);a!==0&&(i=Math.max(a+1,i))}),e(o.id,i),t.set(o.id,i)})}refreshStagings(e){const t=Date.now()-this.renderingState.stagingRefreshTimestamp,r=e===void 0?void 0:1+Math.max(0,t*e/1e3);let o=0;this.traverseWithStagingLag((n,i)=>{i!==0&&(r===void 0||i<=r)&&(this.renderStagingFor(n),o++)}),o>0&&this.resetStagingRefreshTimestamp()}setMeta(e){this.meta=e,this.metaChanged=!0,this.updateLastModified()}doRefresh(e){this.refreshStagings(e),this.blockInfos.forEach(t=>{var r,o,n,i;((r=t.fields.prodCtx)==null?void 0:r.status)==="Ready"&&((o=t.fields.prodOutput)==null?void 0:o.status)==="Ready"&&this.deleteBlockFields(t.id,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),((n=t.fields.stagingCtx)==null?void 0:n.status)==="Ready"&&((i=t.fields.stagingOutput)==null?void 0:i.status)==="Ready"&&this.deleteBlockFields(t.id,"stagingOutputPrevious","stagingCtxPrevious","stagingUiCtxPrevious")})}assignAuthorMarkers(){const e=this.author?JSON.stringify(this.author):void 0;for(const t of this.blocksWithChangedInputs)e===void 0?this.tx.deleteKValue(this.rid,st(t)):this.tx.setKValue(this.rid,st(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,ot):this.tx.setKValue(this.rid,ot,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,be,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,le,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Ne,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,Ce,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,rt(e)):this.tx.setKValue(this.rid,rt(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,Sr),i=e.getKValueJson(t,be),l=e.getKValueJson(t,Ce),a=e.getKValueJson(t,le),c=e.getKValueJson(t,Ne),u=e.listKeyValuesString(t),[d,v,h,g,A,{stagingRefreshTimestamp:N,blocksInLimbo:j},K]=await Promise.all([o,n,i,l,a,c,u]);if(v!==br)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${v}`);const O=new Map;for(const p of d.fields){const w=Fs(p.name);if(w===void 0)continue;let m=O.get(w.blockId);m===void 0&&(m={id:w.blockId,fields:{}},O.set(w.blockId,m)),m.fields[w.fieldName]=f.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const ae=await Lr(),ue=nt(ae.hash),F=d.fields.find(p=>p.name===ue);let z;F!==void 0?z=f.ensureResourceIdNotNull(F.value):(z=f.Pl.wrapInHolder(e,je(e,ae.spec)),e.createField(f.field(t,nt(ae.hash)),"Dynamic",z));const ce={stagingRefreshTimestamp:N},H=new Set(j),M=new Map;for(const p of K){const w=Is(p.key);w!==void 0&&M.set(w,p.value)}const U=[];O.forEach(({id:p,fields:w})=>{for(const[,m]of Object.entries(w))if(m.ref!==void 0){if(!f.isResource(m.ref)||f.isResourceRef(m.ref))throw new Error("unexpected behaviour");U.push([m,e.getResourceData(m.ref,!1)])}});for(const[p,w]of U){const m=await w;p.value=m.data,f.isNotNullResourceId(m.error)?p.status="Error":m.resourceReady||f.isNotNullResourceId(m.originalResourceId)?p.status="Ready":p.status="NotReady"}const X=new Map;O.forEach(({id:p,fields:w})=>X.set(p,new Ut(p,w)));const de=new Set;for(const p of se(A)){if(!X.has(p.id))throw new Error(`Inconsistent project structure: no inputs for ${p.id}`);de.add(p.id)}X.forEach(p=>{if(!de.has(p.id))throw new Error(`Inconsistent project structure: no structure entry for ${p.id}`);p.check()});const y=new Fe(t,e,r,v,h,g,A,ce,H,X,M,z);return y.fixProblems(),y}}async function so(s,e=Ps){const t=s.createEphemeral(ks);s.lock(t);const r=String(Date.now());s.setKValue(t,Sr,JSON.stringify(br)),s.setKValue(t,mt,r),s.setKValue(t,be,r),s.setKValue(t,Ce,JSON.stringify(e)),s.setKValue(t,le,JSON.stringify(Es)),s.setKValue(t,Ne,JSON.stringify(Rs));const o=await Lr();return s.createField(f.field(t,nt(o.hash)),"Dynamic",f.Pl.wrapInHolder(s,je(s,o.spec))),t}async function ze(s,e,t){return re(s,e,void 0,t)}async function re(s,e,t,r){if(s instanceof f.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await Fe.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await Fe.load(s,e,t),n=await r(o);return o.save(),n}}function*oo(s){switch(s.type){case"Json":return;case"JsonPartitioned":for(const[,e]of Object.entries(s.parts))yield e;return;case"BinaryPartitioned":for(const[,{index:e,values:t}]of Object.entries(s.parts))yield e,yield t;return;default:P.assertNever(s)}}function Gt(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function no(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:Gt(s.parts,e)};case"BinaryPartitioned":return{...s,parts:Gt(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:P.assertNever(s)}}const io=f.resourceType("PColumnData/JsonPartitioned","1"),ao=f.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),co=f.resourceType("PColumnData/BinaryPartitioned","1"),lo=f.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),uo=f.resourceType("PColumnData/Json","1");function po(s){if(!s.getIsReadyOrError())throw new Error("Data not ready.");const e=s.getDataAsJson();if(e===void 0)throw new Error("unexpected data info structure, no resource data");if(f.resourceTypesEqual(s.resourceType,uo)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(f.resourceTypesEqual(s.resourceType,io)){const t=e,r=Object.fromEntries(s.listInputFields().map(o=>[o,s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo]));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(f.resourceTypesEqual(s.resourceType,ao)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const l of i){const a=JSON.stringify([...JSON.parse(o),...JSON.parse(l)]);r[a]=n.traverse({field:l,errorIfFieldNotSet:!0}).resourceInfo}}return{type:"JsonPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}else if(f.resourceTypesEqual(s.resourceType,co)){const t=e,r={};for(const o of s.listInputFields())if(o.endsWith(".index")){const n=o.slice(0,o.length-6);let i=r[n];i===void 0&&(i={},r[n]=i),i.index=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else if(o.endsWith(".values")){const n=o.slice(0,o.length-7);let i=r[n];i===void 0&&(i={},r[n]=i),i.values=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${o}`);for(const[o,n]of Object.entries(r)){if(n.index===void 0)throw new Error(`no index for part ${o}`);if(n.values===void 0)throw new Error(`no values for part ${o}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(f.resourceTypesEqual(s.resourceType,lo)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const l of i)if(l.endsWith(".index")){const a=l.slice(0,l.length-6),c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);let u=r[c];u===void 0&&(u={},r[c]=u),r[c].index=n.traverse({field:l,errorIfFieldNotSet:!0}).resourceInfo}else if(l.endsWith(".values")){const a=l.slice(0,l.length-7),c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);let u=r[c];u===void 0&&(u={},r[c]=u),r[c].values=n.traverse({field:l,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${l}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}throw new Error(`unsupported resource type: ${f.resourceTypeToString(s.resourceType)}`)}function ho(s,e){const t=s.axesSpec.length,r={};for(const{key:o,val:n}of e){if(o.length!==t)throw new Error(`inline column key length ${o.length} differs from axes count ${t}`);r[JSON.stringify(o)]=n}return{type:"Json",keyLength:t,data:r}}function lt(s,e){const t=ie.createHash("sha256");return t.update(pt(s)),t.update(String(f.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function Br(s,e=!0,t=!1,r=""){var l,a,c;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const u of s.listInputFields()){const d=u.match(o);if(!d){if(e)throw new Error(`unexpected field name ${u}`);continue}let v=P.notEmpty((l=d.groups)==null?void 0:l.name);if(!v.startsWith(r)){if(e)throw new Error(`unexpected field name ${u}`);continue}v=v.slice(r.length);const h=P.notEmpty((a=d.groups)==null?void 0:a.type);let g=n.get(v);switch(g===void 0&&(g={},n.set(v,g)),h){case"spec":g.spec=(c=s.traverse({field:u,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:c.getDataAsJson();break;case"data":g.hasData=!0,g.data=()=>s.traverseOrError({field:u,ignoreError:t});default:continue}}const i=s.getInputsLocked();if(i)for(const[,u]of n)u.data===void 0&&(u.hasData=!1);return{locked:i,results:n}}function fo(s,e=!0,t=""){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const r=Br(s,e,!1,t);as(r.locked);const o={};for(const[n,i]of r.results){if(i.spec===void 0)throw new Error(`no spec for key ${n}`);if(i.hasData!==!0||i.data===void 0)throw new Error(`no data for key ${n}`);const l=i.data();if(l===void 0)throw new Error(`no data for key ${n}`);if(!l.ok)throw new Le.PlError(l.error);o[n]={id:lt(i.spec,l.value),spec:i.spec,data:l.value}}return o}class St{constructor(e,t){b(this,"allSpecsAvailable");this.ctx=e,this.blocks=t;let r=!0;e:for(const o of t.values())for(const n of[o.prod,o.staging])if(n!==void 0){if(!n.locked){r=!1;break e}for(const i of n.results.values())if(i.spec===void 0){r=!1;break e}}this.allSpecsAvailable=r}getSpecByRef(e,t){var n,i,l,a,c,u;const r=this.blocks.get(e);if(r===void 0)return;let o=(l=(i=(n=r.prod)==null?void 0:n.results)==null?void 0:i.get(t))==null?void 0:l.spec;if(o!==void 0||(o=(u=(c=(a=r.staging)==null?void 0:a.results)==null?void 0:c.get(t))==null?void 0:u.spec,o!==void 0))return o;r.staging===void 0?this.ctx.markUnstable(`staging_not_rendered:${e}`):r.staging.locked?r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`):this.ctx.markUnstable(`staging_not_locked:${e}`)}getDataOrErrorByRef(e,t){var i,l,a;const r=this.blocks.get(e);if(r===void 0)return;let o=(l=(i=r.prod)==null?void 0:i.results)==null?void 0:l.get(t),n=(a=o==null?void 0:o.data)==null?void 0:a.call(o);if(o!==void 0&&o.spec!==void 0&&n!==void 0)return x.mapValueInVOE(n,c=>({id:lt(o.spec,c),spec:o.spec,data:c}));o!==void 0&&this.ctx.markUnstable(`no_data:${e}:${t}`),r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`)}getDataByRef(e,t){const r=this.getDataOrErrorByRef(e,t);if(!(r===void 0||!r.ok))return r.value}getData(){const e=this.getDataWithErrors(),t=[];for(const r of e.entries)r.obj.id!==void 0&&r.obj.data.ok&&t.push({ref:r.ref,obj:{id:r.obj.id,spec:r.obj.spec,data:r.obj.data.value}});return{entries:t,isComplete:e.isComplete,instabilityMarker:e.instabilityMarker}}getDataWithErrors(){const e=[];let t=!0,r;const o=i=>{r===void 0&&(r=i),t=!1},n=(i,l,a)=>{if(a.spec!==void 0&&a.hasData===!0&&a.data!==void 0){const c=a.data();c!==void 0?e.push({ref:Re(i,l),obj:{id:c.ok?lt(a.spec,c.value):void 0,spec:a.spec,data:c}}):o(`no_data:${i}:${l}`)}};for(const[i,l]of this.blocks){const a=new Set;if(l.prod!==void 0){l.prod.locked||o(`prod_not_locked:${i}`);for(const[c,u]of l.prod.results)a.add(c),n(i,c,u)}if(l.staging!==void 0){l.staging.locked||o(`staging_not_locked:${i}`);for(const[c,u]of l.staging.results)a.has(c)||n(i,c,u)}}return{entries:e,isComplete:t,instabilityMarker:r}}getSpecs(){const e=[];let t=!0,r;const o=n=>{r===void 0&&(r=n),t=!1};for(const[n,i]of this.blocks){const l=new Set;if(i.staging!==void 0){i.staging.locked||o(`staging_not_locked:${n}`);for(const[a,c]of i.staging.results)c.spec!==void 0&&(e.push({ref:Re(n,a),obj:c.spec}),l.add(a))}else o(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||o(`prod_not_locked:${n}`);for(const[a,c]of i.prod.results)l.has(a)||c.spec!==void 0&&e.push({ref:Re(n,a),obj:c.spec})}}return{entries:e,isComplete:t,instabilityMarker:r}}calculateOptions(e){const t=[];for(const r of this.blocks.values()){const o=new Set,n=i=>{for(const[l,a]of i.results)o.has(l)||a.spec===void 0||(o.add(l),x.executePSpecPredicate(e,a.spec)&&t.push({label:r.info.label+" / "+l,ref:Re(r.info.id,l),spec:a.spec}))};r.staging!==void 0&&n(r.staging),r.prod!==void 0&&n(r.prod)}return t}static create(e,t,r){const o=e.accessor(t).node(),n=P.notEmpty(o.getKeyValueAsJson(le)),l=at(n).traverseIds("upstream",r),a=new Map;for(const c of se(n)){if(!l.has(c.id))continue;const u=Mt(o.traverse({field:G(c.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:G(c.id,"prodUiCtx"),stableIfNotFound:!0})),d=Mt(o.traverse({field:G(c.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:G(c.id,"stagingUiCtx")}));a.set(c.id,{info:c,prod:u,staging:d})}return new St(e,a)}}function Mt(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return Br(e.value,!1,!0)}function bt(s,e){return{blockId:e,args:o=>P.notEmpty(o.accessor(s).node().traverse({field:G(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),uiState:o=>o.accessor(s).node().getKeyValueAsString(rt(e)),blockMeta:o=>{const n=o.accessor(s).node(),i=P.notEmpty(n.getKeyValueAsJson(le)),l=new Map;for(const a of se(i))l.set(a.id,a);return l}}}function jr(s,e){return{...bt(s,e),prod:t=>{var r;return(r=t.accessor(s).node({ignoreError:!0}).traverse({field:G(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:r.persist()},staging:t=>{var o;const r=(o=t.accessor(s).node({ignoreError:!0}).traverse({field:G(e,"stagingOutput"),ignoreError:!0}))==null?void 0:o.persist();return r===void 0&&t.markUnstable("staging_not_rendered"),r},getResultsPool:t=>St.create(t,s,e)}}function*W(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*W(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*W(t);return;case"MakeArray":for(const t of s.template)yield*W(t);return;case"GetJsonField":case"GetResourceField":yield*W(s.source),yield*W(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*W(s.source),yield*W(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetLogHandle":yield*W(s.source);return;case"IsEmpty":yield*W(s.arg);return;case"Not":yield*W(s.operand);return;case"And":case"Or":yield*W(s.operand1),yield*W(s.operand2);return;default:P.assertNever(s)}}function go(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function ye(s,e){return s===void 0?void 0:e(s)}function mo(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function vo(s){for(const e of W(s))if(mo(e))return!0;return!1}function xe(s){return{type:"ReturnResult",result:s}}function k(s){return()=>xe(s)}const yo=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return k(e)},wo=s=>{const e=s.source;if(e===void 0)return k(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return k(t)},So=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?k(void 0):({cCtx:r})=>{var o;return xe((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function xr(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function bo(s,e){return t=>{const r=t.source;return r===void 0?k(void 0):()=>({type:"ScheduleSubroutine",subroutine:Vr(r.length),args:xr(r,o=>T({...s,[e.itVar]:o},e.mapping))})}}function Vr(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return k(t)}}function Co(s,e){return t=>{const r=t.source;if(r===void 0)return k(void 0);const o={};for(const[n,i]of Object.entries(r)){const l={...s,[e.itVar]:i};o[n]=T(l,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Eo,args:o})}}const Eo=s=>k(s),Ro=s=>{const e=s.arg;return k(e===void 0?void 0:e.length===0)},Po=s=>{const e=s.operand;return k(e===void 0?void 0:!e)},ko=s=>{const e=s.operand1,t=s.operand2;return k(e===void 0||t===void 0?void 0:e&&t)},Oo=s=>{const e=s.operand1,t=s.operand2;return k(e===void 0||t===void 0?void 0:e||t)},$o=s=>{const e=s.source;return e===void 0?k(void 0):({cCtx:t})=>{var r;return xe((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},To=s=>{const e=s.source,t=s.field;return k(e===void 0||t===void 0?void 0:e[t])};function Io(s,e){return t=>{const r=t.source;return r===void 0?k(void 0):({cCtx:o})=>{const n=o.accessor(r).node(),i={};for(const l of n.listInputFields()){const a=n.traverse(l);if(a===void 0)i[l]=k(void 0);else{const c={...s,[e.itVar]:a.persist()};i[l]=T(c,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:Ao,args:i}}}}const Ao=s=>k(s),No=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:D.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r!==void 0)return await t.blobDriver.getContent(r.handle)}})})},Fo=s=>{const e=s.source;return e===void 0?k(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:D.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},Do=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:D.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r==null)return;const o=await t.blobDriver.getContent(r.handle);if(o!=null)return JSON.parse(Buffer.from(o).toString())}})})},Lo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},Bo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},jo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},xo=s=>e=>{const t=e.source;return t===void 0?k(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},Vo=s=>e=>{const t=e.source;return t===void 0?k(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},Uo=s=>{const e=s.source;return e===void 0?k(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function T(s,e){switch(e.type){case"GetFromCtx":const t=s[e.variable];return typeof t=="function"?r=>xe(t(r.cCtx)):k(t);case"Isolate":return({drivers:r})=>({type:"ScheduleComputable",computable:Mr(r,s,e.cfg)});case"Immediate":return k(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:To,args:{source:T(s,e.source),field:T(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:bo(s,e),args:{source:T(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Co(s,e),args:{source:T(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:yo,args:go(e.template,r=>T(s,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:Vr(e.template.length),args:xr(e.template,r=>T(s,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:wo,args:{source:T(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Ro,args:{arg:T(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Po,args:{operand:T(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:ko,args:{operand1:T(s,e.operand1),operand2:T(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:Oo,args:{operand1:T(s,e.operand1),operand2:T(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Io(s,e),args:{source:T(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:So,args:{source:T(s,e.source),field:T(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:$o,args:{source:T(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:No,args:{source:T(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:Fo,args:{source:T(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Do,args:{source:T(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Lo,args:{source:T(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Bo,args:{source:T(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:jo,args:{source:T(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:xo(e.lines),args:{source:T(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:Vo(e.patternToSearch),args:{source:T(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:Uo,args:{source:T(s,e.source)}});default:return P.assertNever(e)}}const Go=["$prod","$staging"];function Mo(s){return{$blockId:s.blockId,$args:e=>JSON.parse(s.args(e)),$ui:e=>{const t=s.uiState(e);return t!==void 0?JSON.parse(t):void 0},$prod:s.prod,$staging:s.staging}}const Ur=Symbol(),Gr="return",Jo={op:Ur,arg:Gr};function _o(s){return s.op==Ur&&s.arg==Gr}function Ko(){return{pendingSubroutines:new Map}}function Jt(s,e,t,r){const o=new gr(t),n=(l,a)=>{if(_o(l))return e.result=a,!1;const c=P.notEmpty(e.pendingSubroutines.get(l.op));if(l.arg in c.args)throw new Error("argument already set");return c.args[l.arg]=a,c.argCounter--,c.argCounter===0&&(e.pendingSubroutines.delete(l.op),o.push({destination:c.destination,operation:c.subroutine(c.args)})),!0},i=[];e:for(;o.length>0;){const l=o.shift(),a=l.operation(s);switch(a.type){case"ReturnResult":if(!n(l.destination,a.result))break e;break;case"ScheduleSubroutine":const c=Symbol(),u=Object.entries(a.args),d=u.length;if(d===0)o.push({destination:l.destination,operation:a.subroutine({})});else{for(const[v,h]of u)o.push({destination:{op:c,arg:v},operation:h});e.pendingSubroutines.set(c,{argCounter:d,args:{},subroutine:a.subroutine,destination:l.destination})}break;case"ScheduleComputable":if(!r)throw new Error("asynchronous operations are forbidden in this context");i.push({destination:l.destination,computable:a.computable});break;default:P.assertNever(a)}}return i}function Ho(s,e,t,r={}){return Mr(s,Mo(e),t,r)}function Mr(s,e,t,r={}){const o=`${e.blockId}#`+pt({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>Go.indexOf(n)===-1)),cfg:t});return D.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},l=Ko();return{ir:Jt(i,l,[{destination:Jo,operation:T(e,t)}],!0),async postprocessValue(c){const u=[];for(const g of c)u.push({destination:g.destination,operation:k(g.computable)});const d={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},v=new Map;for(const[g,A]of l.pendingSubroutines)v.set(g,{...A,args:{...A.args}});const h={result:l.result,pendingSubroutines:v};if(Jt(d,h,u,!1),!("result"in h))throw new Error("illegal cfg rendering stack state, no result");return h.result}}},{...r,key:o})}function qo(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function _t(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class De{constructor(e,t,r,o,n){b(this,"callbackRegistry");b(this,"fnJSONStringify");b(this,"fnJSONParse");b(this,"computablesToResolve",{});b(this,"computableCtx");b(this,"accessors",new Map);b(this,"meta");b(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=r,this.env=o,this.computableCtx=n,this.callbackRegistry=this.scope.manage(this.vm.newObject()),this.fnJSONStringify=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"stringify"))),t.typeof(this.fnJSONStringify)!=="function")throw new Error("JSON.stringify() not found.");if(this.fnJSONParse=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"parse"))),t.typeof(this.fnJSONParse)!=="function")throw new Error("JSON.parse() not found.");this.meta=r.blockMeta(n),this.injectCtx()}resetComputableCtx(){this.computableCtx=void 0,this.accessors.clear()}static cleanErrorContext(e){typeof e=="object"&&e!==null&&"context"in e&&delete e.context}evaluateBundle(e){try{this.vm.unwrapResult(this.vm.evalCode(e,"bundle.js",{type:"global"})).dispose()}catch(t){throw De.cleanErrorContext(t),t}}runCallback(e,...t){try{return Ae.Scope.withScope(r=>{const o=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(o)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(o,this.vm.undefined,...t.map(n=>this.exportObjectUniversal(n,r)))))})}catch(r){throw De.cleanErrorContext(r),r}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(r,o)=>{if(!this.accessors.has(r)){const n=this.blockCtx[o];if(n===void 0)throw new Error("Staging context not available");const i=n(this.computableCtx);i?this.accessors.set(r,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(r,void 0)}return this.accessors.get(r)?r:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...r){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...r))}getResourceType(e){return this.getAccessor(e).resourceType}getInputsLocked(e){return this.getAccessor(e).getInputsLocked()}getOutputsLocked(e){return this.getAccessor(e).getOutputsLocked()}getIsReadyOrError(e){return this.getAccessor(e).getIsReadyOrError()}getIsFinal(e){return this.getAccessor(e).getIsFinal()}getError(e){return this.wrapAccessor(this.getAccessor(e).getError())}listInputFields(e){return this.getAccessor(e).listInputFields()}listOutputFields(e){return this.getAccessor(e).listOutputFields()}listDynamicFields(e){return this.getAccessor(e).listDynamicFields()}getKeyValueBase64(e,t){return _t(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return _t(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r){const o=this.getAccessor(e);if(!o.getIsReadyOrError())return;const n=fo(o,t,r),i={};for(const[l,a]of Object.entries(n))i[l]=x.mapPObjectData(a,c=>this.wrapAccessor(c));return i}registerComputable(e,t){const r=`${e}_${ie.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",D.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("utf-8")}}))}getBlobContentAsBase64(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsBase64",D.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("base64")}}))}getDownloadedBlobContentHandle(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getDownloadedBlobContentHandle",this.env.driverKit.blobDriver.getDownloadedBlob(t))}getOnDemandBlobContentHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getOnDemandBlobContentHandle",this.env.driverKit.blobDriver.getOnDemandBlob(t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(r,t))}getProgressLog(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=P.notEmpty(this.blockCtx.getResultsPool,"getResultsPool")(this.computableCtx)}return this._resultPool}calculateOptions(e){return this.resultPool.calculateOptions(e)}getDataFromResultPool(){const e=this.resultPool.getData();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:x.mapPObjectData(t.obj,r=>this.wrapAccessor(r))}))}}getDataWithErrorsFromResultPool(){const e=this.resultPool.getDataWithErrors();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:{id:t.obj.id,spec:t.obj.spec,data:x.mapValueInVOE(t.obj.data,r=>this.wrapAccessor(r))}}))}}getSpecsFromResultPool(){const e=this.resultPool.getSpecs();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`specs_from_pool_incomplete:${e.instabilityMarker}`),e}getSpecFromResultPoolByRef(e,t){return this.resultPool.getSpecByRef(e,t)}getDataFromResultPoolByRef(e,t){return x.mapPObjectData(this.resultPool.getDataByRef(e,t),r=>this.wrapAccessor(r))}createPFrame(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PFrames from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPFrame(e.map(t=>x.mapPObjectData(t,r=>typeof r=="string"?this.getAccessor(r):r)),this.computableCtx)}createPTable(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PTable from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPTable(x.mapPTableDef(e,t=>x.mapPObjectData(t,r=>typeof r=="string"?this.getAccessor(r):r)),this.computableCtx)}getCurrentUnstableMarker(){var e;return(e=this.computableCtx)==null?void 0:e.unstableMarker}getAccessor(e){const t=this.accessors.get(e);if(t===void 0)throw new Error("No such accessor");return t}wrapAccessor(e){if(e!==void 0){const t=ie.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const r=this.tryExportSingleValue(e,t);if(r===void 0)throw new Error(`Can't export value: ${e}`);return r}tryExportSingleValue(e,t){let r,o=!1;switch(typeof e){case"string":r=this.vm.newString(e),o=!0;break;case"number":r=this.vm.newNumber(e),o=!0;break;case"undefined":r=this.vm.undefined;break;case"boolean":r=e?this.vm.true:this.vm.false;break;default:if(e===null){r=this.vm.null;break}if(qo(e)){r=this.vm.newArrayBuffer(e),o=!0;break}return}return o&&t!=null?t.manage(r):r}exportObjectUniversal(e,t){const r=this.tryExportSingleValue(e,t);return r!==void 0?r:this.exportObjectViaJson(e,t)}exportObjectViaJson(e,t){const r=this.vm.newString(JSON.stringify(e)).consume(o=>this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse,this.vm.undefined,o)));return t!==void 0?t.manage(r):r}importObjectUniversal(e){switch(this.vm.typeof(e)){case"undefined":return;case"boolean":case"number":case"string":return this.vm.dump(e);default:return this.importObjectViaJson(e)}}importObjectViaJson(e){const t=this.vm.unwrapResult(this.vm.callFunction(this.fnJSONStringify,this.vm.undefined,e)).consume(r=>this.vm.getString(r));if(t!=="undefined")return JSON.parse(t)}injectCtx(){Ae.Scope.withScope(e=>{const t=e.manage(this.vm.newObject()),r=this.blockCtx.args(this.computableCtx),o=this.blockCtx.uiState(this.computableCtx);this.vm.setProp(t,"args",e.manage(this.vm.newString(r))),o!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(o))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry),this.vm.setProp(t,"featureFlags",this.exportObjectUniversal(x.JsRenderInternal.GlobalCfgRenderCtxFeatureFlags,e));const n=(i,l)=>{this.vm.newFunction(i,l).consume(a=>this.vm.setProp(t,i,a))};n("getAccessorHandleByName",i=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(i)),void 0)),n("resolveWithCommon",(i,l,...a)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(i),this.importObjectViaJson(l),...a.map(c=>this.importObjectViaJson(c))),void 0)),n("getResourceType",i=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(i)),void 0)),n("getInputsLocked",i=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(i)),void 0)),n("getOutputsLocked",i=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(i)),void 0)),n("getIsReadyOrError",i=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(i)),void 0)),n("getIsFinal",i=>this.exportSingleValue(this.getIsFinal(this.vm.getString(i)),void 0)),n("getError",i=>this.exportSingleValue(this.getError(this.vm.getString(i)),void 0)),n("listInputFields",i=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(i)),void 0)),n("listOutputFields",i=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(i)),void 0)),n("listDynamicFields",i=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(i)),void 0)),n("getKeyValueBase64",(i,l)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getKeyValueAsString",(i,l)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getDataBase64",i=>this.exportSingleValue(this.getDataBase64(this.vm.getString(i)),void 0)),n("getDataAsString",i=>this.exportSingleValue(this.getDataAsString(this.vm.getString(i)),void 0)),n("parsePObjectCollection",(i,l,a)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(i),this.vm.dump(l),this.vm.getString(a)),void 0)),n("getBlobContentAsBase64",i=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(i)),void 0)),n("getBlobContentAsString",i=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(i)),void 0)),n("getDownloadedBlobContentHandle",i=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(i)),void 0)),n("getOnDemandBlobContentHandle",i=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(i)),void 0)),n("getImportProgress",i=>this.exportSingleValue(this.getImportProgress(this.vm.getString(i)),void 0)),n("getLastLogs",(i,l)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(i),this.vm.getNumber(l)),void 0)),n("getProgressLog",(i,l)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getLogHandle",i=>this.exportSingleValue(this.getLogHandle(this.vm.getString(i)),void 0)),n("getBlockLabel",i=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(i)),void 0)),n("getDataFromResultPool",i=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),n("getDataWithErrorsFromResultPool",i=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),n("getSpecsFromResultPool",i=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),n("calculateOptions",i=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(i)),void 0)),n("getSpecFromResultPoolByRef",(i,l)=>this.exportObjectUniversal(this.getSpecFromResultPoolByRef(this.vm.getString(i),this.vm.getString(l)),void 0)),n("getDataFromResultPoolByRef",(i,l)=>this.exportObjectUniversal(this.getDataFromResultPoolByRef(this.vm.getString(i),this.vm.getString(l)),void 0)),n("createPFrame",i=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(i)),void 0)),n("createPTable",i=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(i)),void 0)),n("getCurrentUnstableMarker",()=>this.exportSingleValue(this.getCurrentUnstableMarker(),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}function Ve(s,e){return ye(s.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:f.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),t=>{const r=t.getDataAsJson(),o=x.extractConfig(r.config);return{bpId:t.resourceInfo.id.toString(),info:r,cfg:o}})}const Pe=process.env.MI_LOG_OUTPUT_STATUS;function Wo(s,e,t,r,o,n={}){const i=`${e.blockId}#lambda#${o}#${t.handle}`;return n={...n,key:i},n.mode===void 0&&t.retentive===!0&&(n.mode="StableOnlyRetentive"),D.Computable.makeRaw(l=>{const a=new Ae.Scope;l.addOnDestroy(()=>a.dispose());const c=a.manage(s.quickJs.newRuntime());c.setMemoryLimit(1024*640),c.setMaxStackSize(1024*320);const u=a.manage(c.newContext()),d=new De(a,u,e,s,l);d.evaluateBundle(r.content);const v=d.runCallback(t.handle);d.resetComputableCtx();let h=0;return Pe&&Pe!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:async(g,{unstableMarker:A,stable:N})=>{for(const[K,O]of Object.entries(g))d.runCallback(K,O);const j=d.importObjectUniversal(v);return h++,Pe&&(Pe!=="unstable-only"||!N)&&console.log(N?`Stable output ${t.handle} calculated ${j!==void 0?"defined":"undefined"}; (#${h})`:`Unstable output ${t.handle}; marker = ${A}; ${j!==void 0?"defined":"undefined"} (#${h})`),j}}},n)}function zo(s){return x.isConfigLambda(s)?s.isActive===!0:vo(s)}function we(s,e,t,r,o,n={}){if(x.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return Wo(s,e,t,r,o,n)}else return Ho(s.driverKit,e,t,n)}function Xo(s,e,t){return D.Computable.make(r=>{var g,A,N,j,K,O,ae,ue;const o=r.accessor(s).node(),n=P.notEmpty(o.getKeyValueAsJson(mt)),i=P.notEmpty(o.getKeyValueAsJson(be)),l=P.notEmpty(o.getKeyValueAsJson(Ce)),a=P.notEmpty(o.getKeyValueAsJson(le)),c=P.notEmpty(o.getKeyValueAsJson(Ne)),u=new Map;for(const{id:F}of se(a)){const z=o.traverse({field:G(F,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ce;const H=o.traverse({field:G(F,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(H!==void 0){const M=o.getField({field:G(F,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),U=o.getField({field:G(F,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});ce={arguments:H.getDataAsJson(),stale:z.id!==H.id,outputError:M.error!==void 0||U.error!==void 0||((g=M.value)==null?void 0:g.getError())!==void 0||((A=U.value)==null?void 0:A.getError())!==void 0,outputsError:((N=M.error)==null?void 0:N.getDataAsString())??((K=(j=M.value)==null?void 0:j.getError())==null?void 0:K.getDataAsString()),exportsError:((O=U.error)==null?void 0:O.getDataAsString())??((ue=(ae=U.value)==null?void 0:ae.getError())==null?void 0:ue.getDataAsString()),finished:(M.value!==void 0&&M.value.getIsReadyOrError()||M.error!==void 0&&M.error.getIsReadyOrError())&&(U.value!==void 0&&U.value.getIsReadyOrError()||U.error!==void 0&&U.error.getIsReadyOrError())}}u.set(F,{currentArguments:z.getDataAsJson(),prod:ce})}const d=Ie(a,F=>u.get(F).currentArguments),v=new Set(c.blocksInLimbo),h=[...se(a)].map(({id:F,label:z,renderingMode:ce})=>{var C,S,E,$,R;const H=P.notEmpty(u.get(F)),M=P.notEmpty(d.nodes.get(F));let U="NotCalculated";H.prod!==void 0&&(v.has(F)?U="Limbo":U=H.prod.finished?"Done":"Running");const X=Ve(o,F),{sections:de,title:y,inputsValid:p,sdkVersion:w}=ye(X,({bpId:I,cfg:L,info:B})=>{const oe=bt(s,F);return{sections:we(t,oe,L.sections,L.code,I),title:ye(L.title,es=>we(t,oe,es,L.code,I)),inputsValid:we(t,oe,L.inputsValid,L.code,I),sdkVersion:L.sdkVersion}})||{},m=ye(X,({info:I})=>t.blockUpdateWatcher.get(I.source));return{id:F,label:y??z,title:y??z,renderingMode:ce,stale:((C=H.prod)==null?void 0:C.stale)!==!1||U==="Limbo",missingReference:M.missingReferences,upstreams:[...d.traverseIdsExcludingRoots("upstream",F)],downstreams:[...d.traverseIdsExcludingRoots("downstream",F)],calculationStatus:U,outputErrors:((S=H.prod)==null?void 0:S.outputError)===!0,outputsError:(E=H.prod)==null?void 0:E.outputsError,exportsError:($=H.prod)==null?void 0:$.exportsError,sections:de,inputsValid:p,currentBlockPack:(R=X==null?void 0:X.info)==null?void 0:R.source,updatedBlockPack:m,sdkVersion:w,navigationState:e.getState(F)}});return{meta:l,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(ot),blocks:h}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const l=i.stale||i.upstreams.findIndex(c=>n.has(c))!==-1,a=(l||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(c=>o.has(c))===-1;return{...i,canRun:a,stale:l}})}}}).withStableType()}function Yo(s,e){const t=s.node();if(f.resourceTypesEqual(t.resourceType,yt)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.frontendDownloadDriver.getPath(new URL(r.url)).withStableType()}else if(f.resourceTypesEqual(t.resourceType,wt)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.signer.verify(r.path,r.signature,`Frontend path signature mismatch for: ${r.path}`),r.path}else throw new Error(`Unsupported resource type: ${JSON.stringify(t.resourceType)}`)}function Zo(s,e){if(s!==void 0)return D.Computable.make(t=>Yo(t.accessor(s),e),{postprocessValue:t=>{if(t!==void 0){if(typeof t=="string")return t;if(t.error!==void 0)throw new Error(t.error);return t.path}}}).withStableType()}function Qo(s,e,t){return D.Computable.make(r=>{var l;const o=r.accessor(s).node(),n=Ve(o,e),i=(l=o.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic"},{field:f.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Fr,assertFieldType:"Input"}))==null?void 0:l.persist();return{path:Zo(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function Jr(s,e,t){if(t===void 0)return D.Computable.make(i=>Jr(s,e,i),{key:`inputs#${f.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=bt(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(st(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function en(s,e,t){return D.Computable.make(r=>{const o=r.accessor(s).node(),n=jr(s,e);return ye(Ve(o,e),({cfg:i,bpId:l})=>{const a={};for(const[c,u]of Object.entries(i.outputs)){const d=we(t,n,u,i.code,l);a[c]=D.Computable.wrapError(d)}return a})},{key:"outputs#"+f.resourceIdToString(s.rid)+"#"+e}).withStableType()}function tn(s,e){return D.Computable.make(t=>{const r=t.accessor(s).node(),o=P.notEmpty(r.getKeyValueAsJson(le)),n=[];for(const{id:i,renderingMode:l}of se(o)){const a=Ve(r,i);if(a===void 0)continue;const c=Object.entries(a.cfg.outputs).map(([,d])=>d).filter(d=>zo(d)).map(d=>d);if(c.length===0)continue;const u=jr(r.persist(),i);for(const d of c)n.push(D.Computable.wrapError(we(e,u,d,a.cfg.code,a.bpId)))}return n})}class rn{constructor(){b(this,"states",new Map)}setState(e,t){const r=this.states.get(e);if(r===void 0){this.states.set(e,{state:t,change:new D.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...x.DefaultNavigationState},change:new D.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return D.Computable.make(t=>this.readState(t,e),{key:`navigationState#${e}`})}deleteBlock(e){const t=this.states.get(e);t!==void 0&&(this.states.delete(e),t.change.markChanged())}}class Ue{constructor(e,t,r){b(this,"rid");b(this,"overview");b(this,"navigationStates",new rn);b(this,"blockComputables",new Map);b(this,"blockFrontends",new Map);b(this,"activeConfigs");b(this,"refreshLoopResult");b(this,"abortController",new AbortController);b(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=Xo(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=tn(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await ze(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await mr.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(f.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!f.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=ie.randomUUID()){const i=await this.env.bpPreparer.prepare(t),l=await this.env.bpPreparer.getBlockConfigContainer(t),a=x.extractConfig(l);return await re(this.env.pl,this.rid,o,c=>c.addBlock({id:n,label:e,renderingMode:a.renderingMode},{args:JSON.stringify(a.initialArgs),uiState:JSON.stringify(a.initialUiState),blockPack:i},r)),await this.projectTree.refreshState(),n}async updateBlockPack(e,t,r=!1,o){const n=await this.env.bpPreparer.prepare(t),i=await this.env.bpPreparer.getBlockConfigContainer(t);await re(this.env.pl,this.rid,o,l=>l.migrateBlockPack(e,n,r?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await re(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await re(this.env.pl,this.rid,t,r=>{const o=r.structure;if(o.groups.length!==1)throw new Error("Unexpected project structure, non-sinular block group");const n=o.groups[0];if(n.blocks.length!==e.length)throw new Error(`Lengh mismatch: ${n.blocks.length} !== ${e.length}`);if(new Set(e).size!==e.length)throw new Error("Repeated block ids");const i={groups:[{id:n.id,label:n.label,blocks:e.map(l=>{const a=n.blocks.find(c=>c.id===l);if(a===void 0)throw new Error(`Can't find block: ${l}`);return a})}]};r.updateStructure(i)}),await this.projectTree.refreshState()}async runBlock(e){await ze(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await ze(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await re(this.env.pl,this.rid,r,o=>o.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,r){await re(this.env.pl,this.rid,r,o=>o.setUiState(e,t===void 0?void 0:JSON.stringify(t))),await this.projectTree.refreshState()}async setNavigationState(e,t){this.navigationStates.setState(e,t)}async setBlockArgsAndUiState(e,t,r,o){await re(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=f.ensureResourceIdNotNull((await r.getField(f.field(this.rid,G(e,"blockPack")))).value),n=f.ensureResourceIdNotNull((await r.getField(f.field(o,f.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),l=JSON.parse(Buffer.from(P.notEmpty(i.data)).toString("utf-8"));await re(r,this.rid,t,a=>{a.setArgs([{blockId:e,args:JSON.stringify(l.config.initialArgs)}]),a.setUiState(e,void 0)}),await r.commit()}),await this.projectTree.refreshState()}getBlockComputables(e){const t=this.blockComputables.get(e);if(t===void 0){const r=en(this.projectTree.entry(),e,this.env),n={fullState:D.Computable.make(i=>({argsAndUiState:Jr(this.projectTree.entry(),e,i),outputs:r,navigationState:this.navigationStates.getState(e)}),{postprocessValue:i=>({...i.argsAndUiState,outputs:i.outputs,navigationState:i.navigationState})}).withPreCalculatedValueTree()};return this.blockComputables.set(e,n),n}return t}getBlockState(e){return this.getBlockComputables(e).fullState}getBlockFrontend(e){const t=this.blockFrontends.get(e);if(t===void 0){const r=Qo(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,r),r}return t}async destroy(){this.destroyed=!0,this.abortController.abort(),await this.refreshLoopResult,await this.projectTree.terminate(),this.overview.resetState(),this.blockFrontends.forEach(e=>e.resetState()),this.blockComputables.forEach(e=>{e.fullState.resetState()}),this.activeConfigs.resetState()}async destroyAndAwaitTermination(){await this.destroy()}static async init(e,t){const r=await Le.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:sn},e.logger);return new Ue(e,t,r)}}function sn(s){switch(s.type.name){case"BlockPackCustom":return s.fields.filter(e=>e.name!=="template");case"UserProject":return s.fields.filter(e=>!e.name.startsWith("__serviceTemplate"));case"Blob":return[];default:return s.fields}}const Ct={logger:new P.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function Et(s){return{blobDownloadPath:q.join(s,"download")}}const _r={...Ct,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function Kr(s){return{...Et(s),frontendDownloadPath:q.join(s,"frontend")}}function on(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var ut={exports:{}};const nn="2.0.0",Hr=256,an=Number.MAX_SAFE_INTEGER||9007199254740991,cn=16,ln=Hr-6,un=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Ge={MAX_LENGTH:Hr,MAX_SAFE_COMPONENT_LENGTH:cn,MAX_SAFE_BUILD_LENGTH:ln,MAX_SAFE_INTEGER:an,RELEASE_TYPES:un,SEMVER_SPEC_VERSION:nn,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const dn=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var Me=dn;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=Ge,n=Me;e=s.exports={};const i=e.re=[],l=e.safeRe=[],a=e.src=[],c=e.t={};let u=0;const d="[a-zA-Z0-9-]",v=[["\\s",1],["\\d",o],[d,r]],h=A=>{for(const[N,j]of v)A=A.split(`${N}*`).join(`${N}{0,${j}}`).split(`${N}+`).join(`${N}{1,${j}}`);return A},g=(A,N,j)=>{const K=h(N),O=u++;n(A,O,N),c[A]=O,a[O]=N,i[O]=new RegExp(N,j?"g":void 0),l[O]=new RegExp(K,j?"g":void 0)};g("NUMERICIDENTIFIER","0|[1-9]\\d*"),g("NUMERICIDENTIFIERLOOSE","\\d+"),g("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${d}*`),g("MAINVERSION",`(${a[c.NUMERICIDENTIFIER]})\\.(${a[c.NUMERICIDENTIFIER]})\\.(${a[c.NUMERICIDENTIFIER]})`),g("MAINVERSIONLOOSE",`(${a[c.NUMERICIDENTIFIERLOOSE]})\\.(${a[c.NUMERICIDENTIFIERLOOSE]})\\.(${a[c.NUMERICIDENTIFIERLOOSE]})`),g("PRERELEASEIDENTIFIER",`(?:${a[c.NUMERICIDENTIFIER]}|${a[c.NONNUMERICIDENTIFIER]})`),g("PRERELEASEIDENTIFIERLOOSE",`(?:${a[c.NUMERICIDENTIFIERLOOSE]}|${a[c.NONNUMERICIDENTIFIER]})`),g("PRERELEASE",`(?:-(${a[c.PRERELEASEIDENTIFIER]}(?:\\.${a[c.PRERELEASEIDENTIFIER]})*))`),g("PRERELEASELOOSE",`(?:-?(${a[c.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${a[c.PRERELEASEIDENTIFIERLOOSE]})*))`),g("BUILDIDENTIFIER",`${d}+`),g("BUILD",`(?:\\+(${a[c.BUILDIDENTIFIER]}(?:\\.${a[c.BUILDIDENTIFIER]})*))`),g("FULLPLAIN",`v?${a[c.MAINVERSION]}${a[c.PRERELEASE]}?${a[c.BUILD]}?`),g("FULL",`^${a[c.FULLPLAIN]}$`),g("LOOSEPLAIN",`[v=\\s]*${a[c.MAINVERSIONLOOSE]}${a[c.PRERELEASELOOSE]}?${a[c.BUILD]}?`),g("LOOSE",`^${a[c.LOOSEPLAIN]}$`),g("GTLT","((?:<|>)?=?)"),g("XRANGEIDENTIFIERLOOSE",`${a[c.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),g("XRANGEIDENTIFIER",`${a[c.NUMERICIDENTIFIER]}|x|X|\\*`),g("XRANGEPLAIN",`[v=\\s]*(${a[c.XRANGEIDENTIFIER]})(?:\\.(${a[c.XRANGEIDENTIFIER]})(?:\\.(${a[c.XRANGEIDENTIFIER]})(?:${a[c.PRERELEASE]})?${a[c.BUILD]}?)?)?`),g("XRANGEPLAINLOOSE",`[v=\\s]*(${a[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[c.XRANGEIDENTIFIERLOOSE]})(?:\\.(${a[c.XRANGEIDENTIFIERLOOSE]})(?:${a[c.PRERELEASELOOSE]})?${a[c.BUILD]}?)?)?`),g("XRANGE",`^${a[c.GTLT]}\\s*${a[c.XRANGEPLAIN]}$`),g("XRANGELOOSE",`^${a[c.GTLT]}\\s*${a[c.XRANGEPLAINLOOSE]}$`),g("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),g("COERCE",`${a[c.COERCEPLAIN]}(?:$|[^\\d])`),g("COERCEFULL",a[c.COERCEPLAIN]+`(?:${a[c.PRERELEASE]})?(?:${a[c.BUILD]})?(?:$|[^\\d])`),g("COERCERTL",a[c.COERCE],!0),g("COERCERTLFULL",a[c.COERCEFULL],!0),g("LONETILDE","(?:~>?)"),g("TILDETRIM",`(\\s*)${a[c.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",g("TILDE",`^${a[c.LONETILDE]}${a[c.XRANGEPLAIN]}$`),g("TILDELOOSE",`^${a[c.LONETILDE]}${a[c.XRANGEPLAINLOOSE]}$`),g("LONECARET","(?:\\^)"),g("CARETTRIM",`(\\s*)${a[c.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",g("CARET",`^${a[c.LONECARET]}${a[c.XRANGEPLAIN]}$`),g("CARETLOOSE",`^${a[c.LONECARET]}${a[c.XRANGEPLAINLOOSE]}$`),g("COMPARATORLOOSE",`^${a[c.GTLT]}\\s*(${a[c.LOOSEPLAIN]})$|^$`),g("COMPARATOR",`^${a[c.GTLT]}\\s*(${a[c.FULLPLAIN]})$|^$`),g("COMPARATORTRIM",`(\\s*)${a[c.GTLT]}\\s*(${a[c.LOOSEPLAIN]}|${a[c.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",g("HYPHENRANGE",`^\\s*(${a[c.XRANGEPLAIN]})\\s+-\\s+(${a[c.XRANGEPLAIN]})\\s*$`),g("HYPHENRANGELOOSE",`^\\s*(${a[c.XRANGEPLAINLOOSE]})\\s+-\\s+(${a[c.XRANGEPLAINLOOSE]})\\s*$`),g("STAR","(<|>)?=?\\s*\\*"),g("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),g("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(ut,ut.exports);var Ee=ut.exports;const pn=Object.freeze({loose:!0}),hn=Object.freeze({}),fn=s=>s?typeof s!="object"?pn:s:hn;var Rt=fn;const Kt=/^[0-9]+$/,qr=(s,e)=>{const t=Kt.test(s),r=Kt.test(e);return t&&r&&(s=+s,e=+e),s===e?0:t&&!r?-1:r&&!t?1:s<e?-1:1},gn=(s,e)=>qr(e,s);var Wr={compareIdentifiers:qr,rcompareIdentifiers:gn};const ke=Me,{MAX_LENGTH:Ht,MAX_SAFE_INTEGER:Oe}=Ge,{safeRe:qt,t:Wt}=Ee,mn=Rt,{compareIdentifiers:pe}=Wr;let vn=class te{constructor(e,t){if(t=mn(t),e instanceof te){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>Ht)throw new TypeError(`version is longer than ${Ht} characters`);ke("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?qt[Wt.LOOSE]:qt[Wt.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Oe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Oe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Oe||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const n=+o;if(n>=0&&n<Oe)return n}return o}):this.prerelease=[],this.build=r[5]?r[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(ke("SemVer.compare",this.version,this.options,e),!(e instanceof te)){if(typeof e=="string"&&e===this.version)return 0;e=new te(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof te||(e=new te(e,this.options)),pe(this.major,e.major)||pe(this.minor,e.minor)||pe(this.patch,e.patch)}comparePre(e){if(e instanceof te||(e=new te(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const r=this.prerelease[t],o=e.prerelease[t];if(ke("prerelease compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return pe(r,o)}while(++t)}compareBuild(e){e instanceof te||(e=new te(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(ke("build compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return pe(r,o)}while(++t)}inc(e,t,r){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const o=Number(r)?1:0;if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(this.prerelease.length===0)this.prerelease=[o];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let n=[t,o];r===!1&&(n=[t]),pe(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var _=vn;const zt=_,yn=(s,e,t=!1)=>{if(s instanceof zt)return s;try{return new zt(s,e)}catch(r){if(!t)return null;throw r}};var ge=yn;const wn=ge,Sn=(s,e)=>{const t=wn(s,e);return t?t.version:null};var bn=Sn;const Cn=ge,En=(s,e)=>{const t=Cn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Rn=En;const Xt=_,Pn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new Xt(s instanceof Xt?s.version:s,t).inc(e,r,o).version}catch{return null}};var kn=Pn;const Yt=ge,On=(s,e)=>{const t=Yt(s,null,!0),r=Yt(e,null,!0),o=t.compare(r);if(o===0)return null;const n=o>0,i=n?t:r,l=n?r:t,a=!!i.prerelease.length;if(!!l.prerelease.length&&!a)return!l.patch&&!l.minor?"major":i.patch?"patch":i.minor?"minor":"major";const u=a?"pre":"";return t.major!==r.major?u+"major":t.minor!==r.minor?u+"minor":t.patch!==r.patch?u+"patch":"prerelease"};var $n=On;const Tn=_,In=(s,e)=>new Tn(s,e).major;var An=In;const Nn=_,Fn=(s,e)=>new Nn(s,e).minor;var Dn=Fn;const Ln=_,Bn=(s,e)=>new Ln(s,e).patch;var jn=Bn;const xn=ge,Vn=(s,e)=>{const t=xn(s,e);return t&&t.prerelease.length?t.prerelease:null};var Un=Vn;const Zt=_,Gn=(s,e,t)=>new Zt(s,t).compare(new Zt(e,t));var Z=Gn;const Mn=Z,Jn=(s,e,t)=>Mn(e,s,t);var _n=Jn;const Kn=Z,Hn=(s,e)=>Kn(s,e,!0);var qn=Hn;const Qt=_,Wn=(s,e,t)=>{const r=new Qt(s,t),o=new Qt(e,t);return r.compare(o)||r.compareBuild(o)};var Pt=Wn;const zn=Pt,Xn=(s,e)=>s.sort((t,r)=>zn(t,r,e));var Yn=Xn;const Zn=Pt,Qn=(s,e)=>s.sort((t,r)=>Zn(r,t,e));var ei=Qn;const ti=Z,ri=(s,e,t)=>ti(s,e,t)>0;var Je=ri;const si=Z,oi=(s,e,t)=>si(s,e,t)<0;var kt=oi;const ni=Z,ii=(s,e,t)=>ni(s,e,t)===0;var zr=ii;const ai=Z,ci=(s,e,t)=>ai(s,e,t)!==0;var Xr=ci;const li=Z,ui=(s,e,t)=>li(s,e,t)>=0;var Ot=ui;const di=Z,pi=(s,e,t)=>di(s,e,t)<=0;var $t=pi;const hi=zr,fi=Xr,gi=Je,mi=Ot,vi=kt,yi=$t,wi=(s,e,t,r)=>{switch(e){case"===":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s===t;case"!==":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s!==t;case"":case"=":case"==":return hi(s,t,r);case"!=":return fi(s,t,r);case">":return gi(s,t,r);case">=":return mi(s,t,r);case"<":return vi(s,t,r);case"<=":return yi(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var Yr=wi;const Si=_,bi=ge,{safeRe:$e,t:Te}=Ee,Ci=(s,e)=>{if(s instanceof Si)return s;if(typeof s=="number"&&(s=String(s)),typeof s!="string")return null;e=e||{};let t=null;if(!e.rtl)t=s.match(e.includePrerelease?$e[Te.COERCEFULL]:$e[Te.COERCE]);else{const a=e.includePrerelease?$e[Te.COERCERTLFULL]:$e[Te.COERCERTL];let c;for(;(c=a.exec(s))&&(!t||t.index+t[0].length!==s.length);)(!t||c.index+c[0].length!==t.index+t[0].length)&&(t=c),a.lastIndex=c.index+c[1].length+c[2].length;a.lastIndex=-1}if(t===null)return null;const r=t[2],o=t[3]||"0",n=t[4]||"0",i=e.includePrerelease&&t[5]?`-${t[5]}`:"",l=e.includePrerelease&&t[6]?`+${t[6]}`:"";return bi(`${r}.${o}.${n}${i}${l}`,e)};var Ei=Ci;class Ri{constructor(){this.max=1e3,this.map=new Map}get(e){const t=this.map.get(e);if(t!==void 0)return this.map.delete(e),this.map.set(e,t),t}delete(e){return this.map.delete(e)}set(e,t){if(!this.delete(e)&&t!==void 0){if(this.map.size>=this.max){const o=this.map.keys().next().value;this.delete(o)}this.map.set(e,t)}return this}}var Pi=Ri,Xe,er;function Q(){if(er)return Xe;er=1;const s=/\s+/g;class e{constructor(p,w){if(w=o(w),p instanceof e)return p.loose===!!w.loose&&p.includePrerelease===!!w.includePrerelease?p:new e(p.raw,w);if(p instanceof n)return this.raw=p.value,this.set=[[p]],this.formatted=void 0,this;if(this.options=w,this.loose=!!w.loose,this.includePrerelease=!!w.includePrerelease,this.raw=p.trim().replace(s," "),this.set=this.raw.split("||").map(m=>this.parseRange(m.trim())).filter(m=>m.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const m=this.set[0];if(this.set=this.set.filter(C=>!A(C[0])),this.set.length===0)this.set=[m];else if(this.set.length>1){for(const C of this.set)if(C.length===1&&N(C[0])){this.set=[C];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let p=0;p<this.set.length;p++){p>0&&(this.formatted+="||");const w=this.set[p];for(let m=0;m<w.length;m++)m>0&&(this.formatted+=" "),this.formatted+=w[m].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const m=((this.options.includePrerelease&&h)|(this.options.loose&&g))+":"+p,C=r.get(m);if(C)return C;const S=this.options.loose,E=S?a[c.HYPHENRANGELOOSE]:a[c.HYPHENRANGE];p=p.replace(E,X(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(a[c.COMPARATORTRIM],u),i("comparator trim",p),p=p.replace(a[c.TILDETRIM],d),i("tilde trim",p),p=p.replace(a[c.CARETTRIM],v),i("caret trim",p);let $=p.split(" ").map(B=>K(B,this.options)).join(" ").split(/\s+/).map(B=>U(B,this.options));S&&($=$.filter(B=>(i("loose invalid filter",B,this.options),!!B.match(a[c.COMPARATORLOOSE])))),i("range list",$);const R=new Map,I=$.map(B=>new n(B,this.options));for(const B of I){if(A(B))return[B];R.set(B.value,B)}R.size>1&&R.has("")&&R.delete("");const L=[...R.values()];return r.set(m,L),L}intersects(p,w){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(m=>j(m,w)&&p.set.some(C=>j(C,w)&&m.every(S=>C.every(E=>S.intersects(E,w)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new l(p,this.options)}catch{return!1}for(let w=0;w<this.set.length;w++)if(de(this.set[w],p,this.options))return!0;return!1}}Xe=e;const t=Pi,r=new t,o=Rt,n=_e(),i=Me,l=_,{safeRe:a,t:c,comparatorTrimReplace:u,tildeTrimReplace:d,caretTrimReplace:v}=Ee,{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:g}=Ge,A=y=>y.value==="<0.0.0-0",N=y=>y.value==="",j=(y,p)=>{let w=!0;const m=y.slice();let C=m.pop();for(;w&&m.length;)w=m.every(S=>C.intersects(S,p)),C=m.pop();return w},K=(y,p)=>(i("comp",y,p),y=F(y,p),i("caret",y),y=ae(y,p),i("tildes",y),y=ce(y,p),i("xrange",y),y=M(y,p),i("stars",y),y),O=y=>!y||y.toLowerCase()==="x"||y==="*",ae=(y,p)=>y.trim().split(/\s+/).map(w=>ue(w,p)).join(" "),ue=(y,p)=>{const w=p.loose?a[c.TILDELOOSE]:a[c.TILDE];return y.replace(w,(m,C,S,E,$)=>{i("tilde",y,m,C,S,E,$);let R;return O(C)?R="":O(S)?R=`>=${C}.0.0 <${+C+1}.0.0-0`:O(E)?R=`>=${C}.${S}.0 <${C}.${+S+1}.0-0`:$?(i("replaceTilde pr",$),R=`>=${C}.${S}.${E}-${$} <${C}.${+S+1}.0-0`):R=`>=${C}.${S}.${E} <${C}.${+S+1}.0-0`,i("tilde return",R),R})},F=(y,p)=>y.trim().split(/\s+/).map(w=>z(w,p)).join(" "),z=(y,p)=>{i("caret",y,p);const w=p.loose?a[c.CARETLOOSE]:a[c.CARET],m=p.includePrerelease?"-0":"";return y.replace(w,(C,S,E,$,R)=>{i("caret",y,C,S,E,$,R);let I;return O(S)?I="":O(E)?I=`>=${S}.0.0${m} <${+S+1}.0.0-0`:O($)?S==="0"?I=`>=${S}.${E}.0${m} <${S}.${+E+1}.0-0`:I=`>=${S}.${E}.0${m} <${+S+1}.0.0-0`:R?(i("replaceCaret pr",R),S==="0"?E==="0"?I=`>=${S}.${E}.${$}-${R} <${S}.${E}.${+$+1}-0`:I=`>=${S}.${E}.${$}-${R} <${S}.${+E+1}.0-0`:I=`>=${S}.${E}.${$}-${R} <${+S+1}.0.0-0`):(i("no pr"),S==="0"?E==="0"?I=`>=${S}.${E}.${$}${m} <${S}.${E}.${+$+1}-0`:I=`>=${S}.${E}.${$}${m} <${S}.${+E+1}.0-0`:I=`>=${S}.${E}.${$} <${+S+1}.0.0-0`),i("caret return",I),I})},ce=(y,p)=>(i("replaceXRanges",y,p),y.split(/\s+/).map(w=>H(w,p)).join(" ")),H=(y,p)=>{y=y.trim();const w=p.loose?a[c.XRANGELOOSE]:a[c.XRANGE];return y.replace(w,(m,C,S,E,$,R)=>{i("xRange",y,m,C,S,E,$,R);const I=O(S),L=I||O(E),B=L||O($),oe=B;return C==="="&&oe&&(C=""),R=p.includePrerelease?"-0":"",I?C===">"||C==="<"?m="<0.0.0-0":m="*":C&&oe?(L&&(E=0),$=0,C===">"?(C=">=",L?(S=+S+1,E=0,$=0):(E=+E+1,$=0)):C==="<="&&(C="<",L?S=+S+1:E=+E+1),C==="<"&&(R="-0"),m=`${C+S}.${E}.${$}${R}`):L?m=`>=${S}.0.0${R} <${+S+1}.0.0-0`:B&&(m=`>=${S}.${E}.0${R} <${S}.${+E+1}.0-0`),i("xRange return",m),m})},M=(y,p)=>(i("replaceStars",y,p),y.trim().replace(a[c.STAR],"")),U=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(a[p.includePrerelease?c.GTE0PRE:c.GTE0],"")),X=y=>(p,w,m,C,S,E,$,R,I,L,B,oe)=>(O(m)?w="":O(C)?w=`>=${m}.0.0${y?"-0":""}`:O(S)?w=`>=${m}.${C}.0${y?"-0":""}`:E?w=`>=${w}`:w=`>=${w}${y?"-0":""}`,O(I)?R="":O(L)?R=`<${+I+1}.0.0-0`:O(B)?R=`<${I}.${+L+1}.0-0`:oe?R=`<=${I}.${L}.${B}-${oe}`:y?R=`<${I}.${L}.${+B+1}-0`:R=`<=${R}`,`${w} ${R}`.trim()),de=(y,p,w)=>{for(let m=0;m<y.length;m++)if(!y[m].test(p))return!1;if(p.prerelease.length&&!w.includePrerelease){for(let m=0;m<y.length;m++)if(i(y[m].semver),y[m].semver!==n.ANY&&y[m].semver.prerelease.length>0){const C=y[m].semver;if(C.major===p.major&&C.minor===p.minor&&C.patch===p.patch)return!0}return!1}return!0};return Xe}var Ye,tr;function _e(){if(tr)return Ye;tr=1;const s=Symbol("SemVer ANY");class e{static get ANY(){return s}constructor(u,d){if(d=t(d),u instanceof e){if(u.loose===!!d.loose)return u;u=u.value}u=u.trim().split(/\s+/).join(" "),i("comparator",u,d),this.options=d,this.loose=!!d.loose,this.parse(u),this.semver===s?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}parse(u){const d=this.options.loose?r[o.COMPARATORLOOSE]:r[o.COMPARATOR],v=u.match(d);if(!v)throw new TypeError(`Invalid comparator: ${u}`);this.operator=v[1]!==void 0?v[1]:"",this.operator==="="&&(this.operator=""),v[2]?this.semver=new l(v[2],this.options.loose):this.semver=s}toString(){return this.value}test(u){if(i("Comparator.test",u,this.options.loose),this.semver===s||u===s)return!0;if(typeof u=="string")try{u=new l(u,this.options)}catch{return!1}return n(u,this.operator,this.semver,this.options)}intersects(u,d){if(!(u instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new a(u.value,d).test(this.value):u.operator===""?u.value===""?!0:new a(this.value,d).test(u.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||u.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||u.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&u.operator.startsWith(">")||this.operator.startsWith("<")&&u.operator.startsWith("<")||this.semver.version===u.semver.version&&this.operator.includes("=")&&u.operator.includes("=")||n(this.semver,"<",u.semver,d)&&this.operator.startsWith(">")&&u.operator.startsWith("<")||n(this.semver,">",u.semver,d)&&this.operator.startsWith("<")&&u.operator.startsWith(">")))}}Ye=e;const t=Rt,{safeRe:r,t:o}=Ee,n=Yr,i=Me,l=_,a=Q();return Ye}const ki=Q(),Oi=(s,e,t)=>{try{e=new ki(e,t)}catch{return!1}return e.test(s)};var Ke=Oi;const $i=Q(),Ti=(s,e)=>new $i(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var Ii=Ti;const Ai=_,Ni=Q(),Fi=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Ni(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new Ai(r,t))}),r};var Di=Fi;const Li=_,Bi=Q(),ji=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Bi(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new Li(r,t))}),r};var xi=ji;const Ze=_,Vi=Q(),rr=Je,Ui=(s,e)=>{s=new Vi(s,e);let t=new Ze("0.0.0");if(s.test(t)||(t=new Ze("0.0.0-0"),s.test(t)))return t;t=null;for(let r=0;r<s.set.length;++r){const o=s.set[r];let n=null;o.forEach(i=>{const l=new Ze(i.semver.version);switch(i.operator){case">":l.prerelease.length===0?l.patch++:l.prerelease.push(0),l.raw=l.format();case"":case">=":(!n||rr(l,n))&&(n=l);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||rr(t,n))&&(t=n)}return t&&s.test(t)?t:null};var Gi=Ui;const Mi=Q(),Ji=(s,e)=>{try{return new Mi(s,e).range||"*"}catch{return null}};var _i=Ji;const Ki=_,Zr=_e(),{ANY:Hi}=Zr,qi=Q(),Wi=Ke,sr=Je,or=kt,zi=$t,Xi=Ot,Yi=(s,e,t,r)=>{s=new Ki(s,r),e=new qi(e,r);let o,n,i,l,a;switch(t){case">":o=sr,n=zi,i=or,l=">",a=">=";break;case"<":o=or,n=Xi,i=sr,l="<",a="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Wi(s,e,r))return!1;for(let c=0;c<e.set.length;++c){const u=e.set[c];let d=null,v=null;if(u.forEach(h=>{h.semver===Hi&&(h=new Zr(">=0.0.0")),d=d||h,v=v||h,o(h.semver,d.semver,r)?d=h:i(h.semver,v.semver,r)&&(v=h)}),d.operator===l||d.operator===a||(!v.operator||v.operator===l)&&n(s,v.semver))return!1;if(v.operator===a&&i(s,v.semver))return!1}return!0};var Tt=Yi;const Zi=Tt,Qi=(s,e,t)=>Zi(s,e,">",t);var ea=Qi;const ta=Tt,ra=(s,e,t)=>ta(s,e,"<",t);var sa=ra;const nr=Q(),oa=(s,e,t)=>(s=new nr(s,t),e=new nr(e,t),s.intersects(e,t));var na=oa;const ia=Ke,aa=Z;var ca=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((u,d)=>aa(u,d,t));for(const u of i)ia(u,e,t)?(n=u,o||(o=u)):(n&&r.push([o,n]),n=null,o=null);o&&r.push([o,null]);const l=[];for(const[u,d]of r)u===d?l.push(u):!d&&u===i[0]?l.push("*"):d?u===i[0]?l.push(`<=${d}`):l.push(`${u} - ${d}`):l.push(`>=${u}`);const a=l.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return a.length<c.length?a:e};const ir=Q(),It=_e(),{ANY:Qe}=It,me=Ke,At=Z,la=(s,e,t={})=>{if(s===e)return!0;s=new ir(s,t),e=new ir(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=da(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},ua=[new It(">=0.0.0-0")],ar=[new It(">=0.0.0")],da=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===Qe){if(e.length===1&&e[0].semver===Qe)return!0;t.includePrerelease?s=ua:s=ar}if(e.length===1&&e[0].semver===Qe){if(t.includePrerelease)return!0;e=ar}const r=new Set;let o,n;for(const h of s)h.operator===">"||h.operator===">="?o=cr(o,h,t):h.operator==="<"||h.operator==="<="?n=lr(n,h,t):r.add(h.semver);if(r.size>1)return null;let i;if(o&&n){if(i=At(o.semver,n.semver,t),i>0)return null;if(i===0&&(o.operator!==">="||n.operator!=="<="))return null}for(const h of r){if(o&&!me(h,String(o),t)||n&&!me(h,String(n),t))return null;for(const g of e)if(!me(h,String(g),t))return!1;return!0}let l,a,c,u,d=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,v=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&n.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(const h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",o){if(v&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===v.major&&h.semver.minor===v.minor&&h.semver.patch===v.patch&&(v=!1),h.operator===">"||h.operator===">="){if(l=cr(o,h,t),l===h&&l!==o)return!1}else if(o.operator===">="&&!me(o.semver,String(h),t))return!1}if(n){if(d&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===d.major&&h.semver.minor===d.minor&&h.semver.patch===d.patch&&(d=!1),h.operator==="<"||h.operator==="<="){if(a=lr(n,h,t),a===h&&a!==n)return!1}else if(n.operator==="<="&&!me(n.semver,String(h),t))return!1}if(!h.operator&&(n||o)&&i!==0)return!1}return!(o&&c&&!n&&i!==0||n&&u&&!o&&i!==0||v||d)},cr=(s,e,t)=>{if(!s)return e;const r=At(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},lr=(s,e,t)=>{if(!s)return e;const r=At(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var pa=la;const et=Ee,ur=Ge,ha=_,dr=Wr,fa=ge,ga=bn,ma=Rn,va=kn,ya=$n,wa=An,Sa=Dn,ba=jn,Ca=Un,Ea=Z,Ra=_n,Pa=qn,ka=Pt,Oa=Yn,$a=ei,Ta=Je,Ia=kt,Aa=zr,Na=Xr,Fa=Ot,Da=$t,La=Yr,Ba=Ei,ja=_e(),xa=Q(),Va=Ke,Ua=Ii,Ga=Di,Ma=xi,Ja=Gi,_a=_i,Ka=Tt,Ha=ea,qa=sa,Wa=na,za=ca,Xa=pa;var Ya={parse:fa,valid:ga,clean:ma,inc:va,diff:ya,major:wa,minor:Sa,patch:ba,prerelease:Ca,compare:Ea,rcompare:Ra,compareLoose:Pa,compareBuild:ka,sort:Oa,rsort:$a,gt:Ta,lt:Ia,eq:Aa,neq:Na,gte:Fa,lte:Da,cmp:La,coerce:Ba,Comparator:ja,Range:xa,satisfies:Va,toComparators:Ua,maxSatisfying:Ga,minSatisfying:Ma,minVersion:Ja,validRange:_a,outside:Ka,gtr:Ha,ltr:qa,intersects:Wa,simplifyRange:za,subset:Xa,SemVer:ha,re:et.re,src:et.src,tokens:et.t,SEMVER_SPEC_VERSION:ur.SEMVER_SPEC_VERSION,RELEASE_TYPES:ur.RELEASE_TYPES,compareIdentifiers:dr.compareIdentifiers,rcompareIdentifiers:dr.rcompareIdentifiers};const Za=on(Ya),Qa={minDelay:1500},ec="__no_updates__";class tc extends D.PollComputablePool{constructor(t,r,o={}){super({...o,...Qa},r);b(this,"http");b(this,"preferredUpdateChannel");this.registryProvider=t,this.http=o.http,this.preferredUpdateChannel=o.preferredUpdateChannel}getKey(t){switch(t.type){case"dev-v1":return`dev_1_${t.folder}_${t.mtime}`;case"dev-v2":return`dev_2_${t.folder}_${t.mtime}`;case"from-registry-v2":return`from_registry_v2_${t.registryUrl}_${t.id.organization}_${t.id.name}_${t.id.version}`;default:return ec}}async readValue(t){try{switch(t.type){case"dev-v1":try{const r=await gt(t.folder);return r===t.mtime?void 0:{...t,mtime:r}}catch(r){this.logger.warn(r);return}case"dev-v2":try{const r=await J.tryLoadPackDescription(t.folder,this.logger);if(r===void 0)return;const o=await Be(r);return o===t.mtime?void 0:{...t,mtime:o}}catch(r){this.logger.warn(r);return}case"from-registry-v2":try{const r=this.registryProvider.getRegistry(t.registryUrl);let o;if(t.channel===void 0){const n=await r.getLatestOverview(t.id,V.StableChannel);if(n)o=n.spec;else{const i=await r.getLatestOverview(t.id,V.AnyChannel);if(i===void 0){this.logger.error(`No "any" channel record for ${V.blockPackIdToString(t.id)}`);return}o={...i.spec,channel:V.StableChannel}}}else{const n=this.preferredUpdateChannel??t.channel,i=await r.getLatestOverview(t.id,n);if(i)o=i.spec;else{this.logger.error(`Can't find update for ${V.blockPackIdToString(t.id)} in channel "${n}"`);return}}if(o.type!=="from-registry-v2")throw new Error(`Unexpected spec type ${o}.`);return Za.compare(o.id.version,t.id.version)<=0?void 0:((async()=>{try{await r.getComponents(o.id)}catch(n){this.logger.warn(n)}})(),o)}catch(r){this.logger.warn(r);return}default:return}}catch(r){this.logger.warn(r);return}}resultsEqual(t,r){if(t===void 0&&r===void 0)return!0;if(t===void 0||r===void 0||t.type!==r.type)return!1;switch(t.type){case"from-registry-v1":return r.type!=="from-registry-v1"?!1:t.registryUrl===r.registryUrl&&V.blockPackIdEquals(t.id,r.id);case"from-registry-v2":return r.type!=="from-registry-v2"?!1:t.registryUrl===r.registryUrl&&V.blockPackIdEquals(t.id,r.id);case"dev-v1":return r.type!=="dev-v1"?!1:t.folder===r.folder&&t.mtime===r.mtime;case"dev-v2":return r.type!=="dev-v2"?!1:t.folder===r.folder&&t.mtime===r.mtime;default:P.assertNever(t)}}}class pr{constructor(){b(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");if(t.refCount===0){this.resources.delete(e);const r=t.resource;r!=null&&typeof r[Symbol.dispose]=="function"&&r[Symbol.dispose]()}}acquire(e){const t=this.calculateParamsKey(e);let r=this.resources.get(t);r===void 0&&(r={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,r)),r.refCount++;let o=!1;return{resource:r.resource,key:t,unref:()=>{o||(r.refCount--,o=!0,this.check(t))}}}getByKey(e){if(!this.resources.has(e))throw new Error(`resource not found, key = ${e}`);return this.resources.get(e).resource}tryGetByKey(e){var t;return(t=this.resources.get(e))==null?void 0:t.resource}}function hr(s){return String(s.id)}const rc=["Int","Long","Float","Double","String","Bytes"];function tt(s){const e=[],t=[];for(const r of s)r.type==="bySingleColumn"?(e.push(r),t.push({...r,type:"bySingleColumnV2"})):t.push(r);if(e.length>0){const r=JSON.stringify(e);console.warn(`type overriten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${r}`)}return s}class sc{constructor(e,t,r){b(this,"pFrame",new cs.PFrame);b(this,"blobIdToResource",new Map);b(this,"blobHandleComputables",new Map);b(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});b(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});b(this,"resolveBlobContent",async e=>{try{const t=this.getOrCreateComputableForBlob(e),r=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(r)}catch(t){const r=JSON.stringify(t);throw console.log(`resolveBlobContent catched error: ${r}`),t}});this.blobDriver=e,this.blobContentCache=t,this.columns=r,this.pFrame.setDataSource(this);for(const o of r){for(const i of oo(o.data))this.blobIdToResource.set(hr(i),i);const n=no(o.data,hr);try{this.pFrame.addColumnSpec(o.id,o.spec),this.pFrame.setColumnData(o.id,n)}catch(i){throw new Error(`Adding column ${o.id} to PFrame failed: ${i}; Spec: ${o.spec}, DataInfo: ${n}.`)}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.pFrame.dispose()}}class oc{constructor(e){b(this,"pFrames");b(this,"pTables");b(this,"blobContentCache");b(this,"concurrencyLimiter");this.blobDriver=e;const t=new ls.LRUCache({maxSize:1e9,fetchMethod:async o=>await vr.readFile(o),sizeCalculation:o=>o.length}),r=new P.ConcurrencyLimitingExecutor(1);this.blobContentCache=t,this.concurrencyLimiter=r,this.pFrames=new class extends pr{constructor(o){super(),this.blobDriver=o}createNewResource(o){return new sc(this.blobDriver,t,o)}calculateParamsKey(o){return ic(o)}}(this.blobDriver),this.pTables=new class extends pr{constructor(o){super(),this.pFrames=o}async createNewResource(o){const n=this.pFrames.getByKey(o.pFrameHandle),i=await r.run(async()=>await n.pFrame.createTable({src:Se(o.def.src),filters:tt(o.def.filters)}));return o.def.sorting.length!==0?i.sort(o.def.sorting):i}calculateParamsKey(o){return nc(o)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>rc.find(i=>i===n.spec.valueType)).map(n=>x.mapPObjectData(n,i=>Le.isPlTreeNodeAccessor(i)?po(i):ho(n.spec,i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t){const r=this.createPFrame(x.extractAllColumns(e.src),t),o=x.mapPTableDef(e,i=>i.id),n=this.pTables.acquire({def:o,pFrameHandle:r});return t.addOnDestroy(n.unref),n.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:t.compatibleWith,qualifications:[]}]:[]};return{hits:(await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.findColumns(r))).hits.map(o=>o.hit)}}async getColumnSpec(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getColumnSpec(t))}async listColumns(e){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.listColumns())}async calculateTableData(e,t){let r=await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.createTable({src:Se(t.src),filters:tt(t.filters)}));if(t.sorting.length>0){const i=await this.concurrencyLimiter.run(async()=>await r.sort(t.sorting));r.dispose(),r=i}const o=r.getSpec(),n=await this.concurrencyLimiter.run(async()=>await r.getData([...o.keys()]));return r.dispose(),o.map((i,l)=>({spec:i,data:n[l]}))}async getUniqueValues(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getUniqueValues({...t,filters:tt(t.filters)}))}async getShape(e){return(await this.pTables.getByKey(e)).getShape()}async getSpec(e){return(await this.pTables.getByKey(e)).getSpec()}async getData(e,t,r){const o=await this.pTables.getByKey(e);return await this.concurrencyLimiter.run(async()=>await o.getData(t,r))}}function Se(s){switch(s.type){case"column":return{type:"column",columnId:s.column,qualifications:[]};case"inner":case"full":return{type:s.type,entries:s.entries.map(e=>Se(e))};case"outer":return{type:"outer",primary:Se(s.primary),secondary:s.secondary.map(e=>Se(e))};default:P.assertNever(s)}}function nc(s){const e=ie.createHash("sha256");return e.update(s.pFrameHandle),e.update(pt(s.def)),e.digest().toString("hex")}function ic(s){const e=s.map(o=>o.id).sort(),t=ie.createHash("sha256");let r="";for(const o of e)r!==o&&(t.update(o),r=o);return t.digest().toString("hex")}async function Qr(s,e,t){const r={...Ct,...Et(e),...t},o=new P.HmacSha256Signer(r.localSecret),n=ee.createDownloadClient(r.logger,s,r.localProjections),i=ee.createLogsClient(s,r.logger),l=ee.createUploadBlobClient(s,r.logger),a=ee.createUploadProgressClient(s,r.logger),c=new ee.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),u=new ee.UploadDriver(r.logger,o,l,a,r.uploadDriverOps),d=new ee.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),v=new ee.LogsDriver(r.logger,d,c),h=await ee.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),g=new oc(c);return{blobDriver:c,logDriver:v,lsDriver:h,signer:o,uploadDriver:u,pFrameDriver:g}}class Nt{constructor(e,t,r,o,n,i,l,a){b(this,"pl");b(this,"projectList");b(this,"openedProjectsByRid",new Map);this.env=e,this.driverKit=t,this.signer=r,this.projectListResourceId=o,this.openedProjectsList=n,this.projectListTree=i,this.blockRegistryProvider=l,this.projectList=a,this.pl=this.env.pl}get internalDriverKit(){return this.env.driverKit}async createProject(e,t=ie.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await so(o,e);return o.createField(f.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await f.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await re(this.pl,e,r,async o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(f.field(this.projectListResourceId,e)),await t.commit()}),await this.projectListTree.refreshState()}async projectIdToResourceId(e){return await this.pl.withReadTx("Project id to resource id",async t=>{const r=(await t.getField(f.field(this.projectListResourceId,e))).value;if(f.isNullResourceId(r))throw new Error("Unexpected project list structure.");return r})}async ensureProjectRid(e){return typeof e=="string"?await this.projectIdToResourceId(e):e}async openProject(e){const t=await this.ensureProjectRid(e);if(this.openedProjectsByRid.has(t))throw new Error(`Project ${t} already opened`);this.openedProjectsByRid.set(t,await Ue.init(this.env,t)),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}async closeProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);this.openedProjectsByRid.delete(e),await t.destroy(),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}getOpenedProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);return t}async close(){await Promise.all([...this.openedProjectsByRid.values()].map(e=>e.destroy())),await this.projectListTree.terminate(),await this.env.retryHttpDispatcher.destroy(),await this.pl.close()}async closeAndAwaitTermination(){await this.close()}static generateLocalSecret(){return P.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={..._r,...Kr(t),...r};process.env.MI_LOG_TREE_STAT&&(o.defaultTreeOptions.logStat=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request");const n=await e.withWriteTx("MLInitialization",async A=>{const N=f.field(A.clientRoot,Ds);A.createField(N,"Dynamic");const j=await A.getField(N);if(f.isNullResourceId(j.value)){const K=A.createEphemeral(Cr);return A.lock(K),A.setField(N,K),await A.commit(),await K.globalId}else return j.value}),i=o.logger,l=await Qr(e,t,o),a=new ne.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),c=new wr(a),u=new Xs(c,l.signer,a),d=new ee.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),v={pl:e,signer:l.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:a,ops:o,bpPreparer:u,frontendDownloadDriver:d,driverKit:l,blockUpdateWatcher:new tc(c,i,{minDelay:o.devBlockUpdateRecheckInterval,http:a,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await Ae.getQuickJS()},h=new D.WatchableValue([]),g=await Bs(e,n,h,v);return new Nt(v,l,l.signer,n,h,g.tree,c,g.computable)}}const ac=["undici:request:create","undici:request:bodySent","undici:request:headers","undici:request:error","undici:request:trailers","undici:client:sendHeaders","undici:client:beforeConnect","undici:client:connected","undici:client:connectError","undici:socket:close","undici:socket:connect","undici:socket:error","undici:pool:request","undici:pool:connect","undici:pool:disconnect","undici:pool:destroy","undici:dispatcher:request","undici:dispatcher:connect","undici:dispatcher:disconnect","undici:dispatcher:retry"];async function cc(s,e={}){const t={pingCheckDurationMs:1e4,pingTimeoutMs:3e3,maxPingsPerSecond:50,httpTimeoutMs:3e3,blockRegistryDurationMs:3e3,maxRegistryChecksPerSecond:1,blockRegistryUrl:"https://blocks.pl-open.science",blockGARegistryUrl:"https://blocks-ga.pl-open.science",blockOverviewPath:"v2/overview.json",blockUiPath:"v2/milaboratories/samples-and-data/1.7.0/ui.tgz",autoUpdateCdnDurationMs:5e3,maxAutoUpdateCdnChecksPerSecond:1,autoUpdateCdnUrl:"https://cdn.platforma.bio/software/platforma-desktop-v2/windows/amd64/latest.yml",bodyLimit:300,...e},r=[];ac.forEach(a=>{us.channel(a).subscribe(u=>{var v;const d=new Date().toISOString();(v=u==null?void 0:u.response)!=null&&v.headers&&(u.response.headers=u.response.headers.map(h=>h.toString())),r.push(JSON.stringify({timestamp:d,event:a,data:u}))})});const o={plPings:[],blockRegistryOverviewChecks:[],blockGARegistryOverviewChecks:[],blockRegistryUiChecks:[],blockGARegistryUiChecks:[],autoUpdateCdnChecks:[]},n=f.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});o.plPings=await he(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const c=await new f.UnauthenticatedPlClient(n).ping();return JSON.stringify(c).slice(0,t.bodyLimit)+"..."});const l=new f.UnauthenticatedPlClient(n).ll.httpDispatcher;return o.blockRegistryOverviewChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,l)),o.blockGARegistryOverviewChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,l)),o.blockRegistryUiChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockUiPath,t.blockRegistryUrl),t,l)),o.blockGARegistryUiChecks=await he(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await ve(new URL(t.blockUiPath,t.blockGARegistryUrl),t,l)),o.autoUpdateCdnChecks=await he(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await ve(t.autoUpdateCdnUrl,t,l)),lc(o,s,t,r)}async function he(s,e,t){const r=dt(),o=[];for(;fr(r)<s;){const n=dt();let i;try{i={ok:!0,value:await t()}}catch(c){i={ok:!1,error:c}}const l=fr(n);o.push({elapsedMs:l,response:i});const a=1e3/e-l;a>0&&await mr.setTimeout(a)}return o}async function ve(s,e,t){const{body:r,statusCode:o}=await ne.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function lc(s,e,t,r){const o=s.plPings.filter(l=>l.response.ok),n=s.plPings.filter(l=>!l.response.ok),i=[...new Set(o.map(l=>JSON.stringify(l.response.value)))];return`
|
|
2
2
|
Network report:
|
|
3
3
|
pl endpoint: ${e};
|
|
4
4
|
options: ${JSON.stringify(t,null,2)}.
|
|
@@ -45,5 +45,5 @@ successes: ${e.length};
|
|
|
45
45
|
errors: ${s.length-e.length};
|
|
46
46
|
mean in ms: ${t};
|
|
47
47
|
median in ms: ${r};
|
|
48
|
-
`}function uc(s){const e=s.map(o=>o.elapsedMs),t=e.reduce((o,n)=>o+n)/e.length;let r;if(e.length>0){const o=Math.floor(e.length/2);r=e.length%2?e[o]:(e[o-1]+e[o])/2}return{mean:t,median:r}}function dt(){return Date.now()}function fr(s){return dt()-s}exports.BlockPackRegistry=ws;exports.CentralBlockRegistry=Ss;exports.DefaultDriverKitOpsPaths=Et;exports.DefaultDriverKitOpsSettings=Ct;exports.DefaultMiddleLayerOpsPaths=Kr;exports.DefaultMiddleLayerOpsSettings=_r;exports.FrontendFromFolderResourceType=wt;exports.FrontendFromUrlResourceType=yt;exports.MiddleLayer=Nt;exports.Project=Ue;exports.TengoTemplateGet=Er;exports.TengoTemplateGetRegistry=Rr;exports.TengoTemplateGetTemplate=kr;exports.TengoTemplateGetTemplateURI=Pr;exports.TengoTemplatePack=Or;exports.TengoTemplatePackConvert=$r;exports.TengoTemplatePackConvertTemplate=Ir;exports.TengoTemplatePackConvertTemplatePack=Tr;exports.V1CentralDevSnapshotRegistry=Cs;exports.V1CentralRegistry=bs;exports.V2RegistryProvider=wr;exports.checkNetwork=cc;exports.createRenderTemplate=vt;exports.getDevV1PacketMtime=gt;exports.getDevV2PacketMtime=Be;exports.initDriverKit=Qr;exports.loadTemplate=je;exports.prepareTemplateSpec=Ar;Object.keys(
|
|
48
|
+
`}function uc(s){const e=s.map(o=>o.elapsedMs),t=e.reduce((o,n)=>o+n)/e.length;let r;if(e.length>0){const o=Math.floor(e.length/2);r=e.length%2?e[o]:(e[o-1]+e[o])/2}return{mean:t,median:r}}function dt(){return Date.now()}function fr(s){return dt()-s}exports.BlockPackRegistry=ws;exports.CentralBlockRegistry=Ss;exports.DefaultDriverKitOpsPaths=Et;exports.DefaultDriverKitOpsSettings=Ct;exports.DefaultMiddleLayerOpsPaths=Kr;exports.DefaultMiddleLayerOpsSettings=_r;exports.FrontendFromFolderResourceType=wt;exports.FrontendFromUrlResourceType=yt;exports.MiddleLayer=Nt;exports.Project=Ue;exports.TengoTemplateGet=Er;exports.TengoTemplateGetRegistry=Rr;exports.TengoTemplateGetTemplate=kr;exports.TengoTemplateGetTemplateURI=Pr;exports.TengoTemplatePack=Or;exports.TengoTemplatePackConvert=$r;exports.TengoTemplatePackConvertTemplate=Ir;exports.TengoTemplatePackConvertTemplatePack=Tr;exports.V1CentralDevSnapshotRegistry=Cs;exports.V1CentralRegistry=bs;exports.V2RegistryProvider=wr;exports.checkNetwork=cc;exports.createRenderTemplate=vt;exports.getDevV1PacketMtime=gt;exports.getDevV2PacketMtime=Be;exports.initDriverKit=Qr;exports.loadTemplate=je;exports.prepareTemplateSpec=Ar;Object.keys(x).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>x[s]})});Object.keys(V).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>V[s]})});Object.keys(f).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>f[s]})});
|
|
49
49
|
//# sourceMappingURL=index.js.map
|