@milaboratories/pl-middle-layer 1.30.28 → 1.30.30

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/index.js CHANGED
@@ -1,34 +1,37 @@
1
- "use strict";var ms=Object.defineProperty;var _t=(r,e)=>(e=Symbol[r])?e:Symbol.for("Symbol."+r),Kt=r=>{throw TypeError(r)};var vs=(r,e,t)=>e in r?ms(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var w=(r,e,t)=>vs(r,typeof e!="symbol"?e+"":e,t);var Ie=(r,e,t)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&Kt("Object expected");var s;t&&(s=e[_t("asyncDispose")]),s===void 0&&(s=e[_t("dispose")]),typeof s!="function"&&Kt("Object not disposable"),r.push([t,s,e])}else t&&r.push([t]);return e},Ae=(r,e,t)=>{var s=typeof SuppressedError=="function"?SuppressedError:function(i,a,c,u){return u=Error(c),u.name="SuppressedError",u.error=i,u.suppressed=a,u},o=i=>e=t?new s(i,e,"An error was suppressed during disposal"):(t=!0,i),n=i=>{for(;i=r.pop();)try{var a=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(a).then(n,c=>(o(c),n()))}catch(c){o(c)}if(t)throw e};return n()};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("@platforma-sdk/model"),K=require("@milaboratories/pl-model-middle-layer"),Ht=require("@milaboratories/pl-deployments"),We=require("undici"),H=require("@platforma-sdk/block-tools"),Z=require("node:fs"),q=require("node:path"),ys=require("yaml"),k=require("@milaboratories/ts-helpers"),Ss=require("node:fs/promises"),bs=require("@milaboratories/resolve-helper"),f=require("@milaboratories/pl-client"),ze=require("@milaboratories/pl-tree"),B=require("@milaboratories/computable"),ae=require("node:crypto"),j=require("@milaboratories/pl-model-backend"),Ar=require("lru-cache"),Lr=require("denque"),ws=require("@platforma-sdk/workflow-tengo"),re=require("canonicalize"),Ps=require("node:assert"),_e=require("quickjs-emscripten"),Dr=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),qt=require("@milaboratories/pframes-node"),Cs=require("@milaboratories/pframes-rs-node"),Rs=require("node:diagnostics_channel");function Es(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return e.default=r,Object.freeze(e)}const Nr=Es(Ss);async function Wt(r){try{return await Nr.stat(r,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const ks=[H.RegistryV1.PlPackageYamlConfigFile],Os=[H.RegistryV1.PlPackageJsonConfigFile],Rt=["backend","dist","tengo","tpl","main.plj.gz"],Et=["config","dist","config.json"],Br=["frontend","dist"],zt="block-model/dist/config.json",$s="block-ui/package.json",Ts=[Rt,Et,ks,Os,Br];async function Fs(r){return await Wt(q.join(r,...Et))!==void 0||await Wt(q.join(r,...Rt))!==void 0}function it(r,e){const t=bs.tryResolve(r,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${r}`);return t}async function Xt(r,e){if(q.isAbsolute(r)||(r=q.resolve(r)),await Fs(r))return{workflow:q.join(r,...Rt),config:q.join(r,...Et),ui:q.join(r,...Br)};{const t=it(r,zt),s=it(r,zt),o=it(r,$s);return{workflow:t,config:s,ui:q.resolve(o,"..","dist")}}}async function Is(r){try{return await Z.promises.readFile(r,"utf8")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function As(r){try{return await Z.promises.stat(r,{bigint:!0})}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function kt(r){let e=0n;for(const t of Ts){const s=q.join(r,...t),o=await As(s);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function Xe(r){const e=await Z.promises.stat(r.components.workflow.main.file,{bigint:!0}),t=await Z.promises.stat(r.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class Ls{constructor(e,t,s){this.v2Provider=e,this.registries=t,this.http=s}async getPackagesForRoot(e){const t=[],s=e.spec;switch(s.type){case"remote-v1":{const o=this.http!==void 0?{dispatcher:this.http}:{},i=await(await We.request(`${s.url}/${H.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const a of i){const{organization:c,package:u,latestMeta:l,latestVersion:d}=a,g={organization:c,name:u,version:d},h={id:g,meta:{title:l.title??"No title",description:l.description??"No Description",organization:{name:c,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:g,registryUrl:s.url}};t.push({registryId:e.id,id:g,latestByChannel:{[K.AnyChannel]:h,[K.StableChannel]:h},allVersions:a.allVersions.map(R=>({version:R,channels:[]}))})}return t}case"remote-v2":return(await this.v2Provider.getRegistry(s.url).listBlockPacks()).map(o=>({...o,registryId:e.id}));case"local-dev":for(const o of await Z.promises.readdir(s.path,{withFileTypes:!0})){if(!o.isDirectory())continue;const n=q.join(s.path,o.name),i=await Is(q.join(n,H.RegistryV1.PlPackageYamlConfigFile));if(i!==void 0){const a=H.RegistryV1.PlPackageConfigData.parse(ys.parse(i)),c=await kt(n),u={organization:a.organization,name:a.package,version:"DEV"},l={id:u,meta:{title:a.meta.title??"No title",description:a.meta.description??"No Description",organization:{name:a.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:n,mtime:c}};t.push({registryId:e.id,id:u,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}else{let a=n,c=await H.tryLoadPackDescription(a);if(c===void 0){for(const u of["block","meta"])if(a=q.join(n,u),c=await H.tryLoadPackDescription(a),c!==void 0)break}if(c!==void 0){const u=await Xe(c),l={id:c.id,meta:await H.BlockPackMetaEmbedAbsoluteBytes.parseAsync(c.meta),spec:{type:"dev-v2",folder:a,mtime:u}};t.push({registryId:e.id,id:c.id,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}}}return t;default:return k.assertNever(s)}}async listBlockPacks(){const e=[],t=[];for(const s of this.registries)t.push({...s,status:"online"}),e.push(...await this.getPackagesForRoot(s));return{registries:t,blockPacks:e}}async getOverview(e,t,s){var i;const o=(i=this.registries.find(a=>a.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,s)}}class jr{constructor(e){w(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const s=new H.RegistryV2Reader(H.folderReaderByUrl(e,this.http));return this.registries.set(e,s),s}}const Ds={type:"remote-v2",url:"https://blocks.pl-open.science/"},Ns={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},Bs={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},js={groups:[{id:"default",label:"Default",blocks:[]}]},xs={stagingRefreshTimestamp:0,blocksInLimbo:[]},Vs={label:"New Project"},Us={name:"UserProject",version:"2"},xr="SchemaVersion",Vr="1",Ot="ProjectCreated",$e="ProjectLastModified",Te="ProjectMeta",pe="ProjectStructure",Ke="BlockRenderingState",Js="BlockFrontendState/",Gs=/^BlockFrontendState\/(?<blockid>.*)$/;function gt(r){return`${Js}${r}`}const Ms="BlockArgsAuthor/";function mt(r){return`${Ms}${r}`}const vt="ProjectStructureAuthor";function _s(r){const e=r.match(Gs);if(e!==null)return e.groups.blockid}const Ks="__serviceTemplate_";function yt(r){return`${Ks}${r}`}function G(r,e){return`${r}-${e}`}const Hs=/^(?<blockId>.*)-(?<fieldName>blockPack|blockSettings|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function qs(r){const e=r.match(Hs);if(e===null)return;const{blockId:t,fieldName:s}=e.groups;return{blockId:t,fieldName:s}}const Ws="projects",Ur={name:"Projects",version:"1"},zs=r=>f.resourceTypesEqual(r.type,Ur)?r.fields:[];async function Xs(r,e,t,s){const o=await ze.SynchronizedTreeState.init(r,e,{...s.ops.defaultTreeOptions,pruning:zs},s.logger);return{computable:B.Computable.make(i=>{const a=i.accessor(o.entry()).node(),c=t.getValue(i);if(a===void 0)return;const u=[];for(const l of a.listDynamicFields()){const d=a.traverse(l);if(d===void 0)continue;const g=k.notEmpty(d.getKeyValueAsJson(Te)),h=k.notEmpty(d.getKeyValueAsJson(Ot)),R=k.notEmpty(d.getKeyValueAsJson($e));u.push({id:l,rid:d.id,created:new Date(h),lastModified:new Date(R),opened:c.indexOf(d.id)>=0,meta:g})}return u.sort(l=>-l.lastModified.valueOf()),u}).withStableType(),tree:o}}const Ys={name:"EphRenderTemplate",version:"1"},Qs={name:"RenderTemplate",version:"1"};function $t(r,e,t,s,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?r.createEphemeral(Ys):r.createStruct(Qs),i=f.field(n,"template"),a=f.field(n,"inputs");return r.createField(i,"Input",e),r.createField(a,"Input",f.Pl.createPlMap(r,s,t)),r.lockInputs(n),f.Pl.futureRecord(r,n,o,"Output","outputs/")}const Zs={name:"BContextEnd",version:"1"},eo={name:"BContext",version:"1"},to="id",ro="parent/",so=["context","result"];function Yt(r,e,t){return $t(r,e,!0,t,so)}function oo(r){const e=r.createEphemeral(Zs);return r.lock(e),e}function Qt(r,e){if(e.length===0)return oo(r);if(e.length===1)return e[0];const t=r.createEphemeral(eo);r.createField(f.field(t,to),"Input",f.Pl.createPlString(r,ae.randomUUID()));for(let s=0;s<e.length;s++)r.createField(f.field(t,`${ro}${s}`),"Input",e[s]);return r.lock(t),t}function no(r,e){const t=j.parseTemplate(e.content),s=t.type;switch(s){case"pl.tengo-template.v2":return io(r,t);default:k.assertNever(s)}}const Zt={hash(r,e){e.update(j.PlTemplateLibV1.type.name).update(j.PlTemplateLibV1.type.version).update(r.name).update(r.version).update(r.src)},render(r,e,t){return e.createValue(j.PlTemplateLibV1.type,JSON.stringify(j.PlTemplateLibV1.fromV2Data(r).data))}},Le={hash(r,e){e.update(j.PlTemplateSoftwareV1.type.name).update(j.PlTemplateSoftwareV1.type.version).update(r.name).update(r.version).update(r.src)},render(r,e,t){const s=j.PlTemplateSoftwareV1.fromV2Data(r),o=e.createStruct(j.PlTemplateSoftwareV1.type,s.data);return e.setKValue(o,j.PlTemplateSoftwareV1.metaNameKey,JSON.stringify(s.name)),e.lock(o),o}},Jr={hash(r,e){e.update(j.PlTemplateV1.type.name).update(j.PlTemplateV1.type.version).update(r.hashOverride??"no-override").update(r.name).update(r.version).update(r.src);const t=s=>(s.sort((o,n)=>o[0]===n[0]?0:o[0]<n[0]?-1:1),s);for(const[s,o]of t(Object.entries(r.libs??{})))e.update("lib:"+s),Zt.hash(o,e);for(const[s,o]of t(Object.entries(r.software??{})))e.update("soft:"+s),Le.hash(o,e);for(const[s,o]of t(Object.entries(r.assets??{})))e.update("asset:"+s),Le.hash(o,e);for(const[s,o]of t(Object.entries(r.templates??{})))e.update("tpl:"+s),this.hash(o,e)},render(r,e,t){const s=e.createStruct(j.PlTemplateV1.type,JSON.stringify(j.PlTemplateV1.fromV2Data(r).data));for(const[i,a]of Object.entries(r.libs??{})){const c=j.PlTemplateV1.libField(s,i);e.createField(c,"Input"),e.setField(c,t(a,Zt))}for(const[i,a]of Object.entries(r.software??{})){const c=j.PlTemplateV1.swField(s,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(r.assets??{})){const c=j.PlTemplateV1.swField(s,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(r.templates??{})){const c=j.PlTemplateV1.tplField(s,i);e.createField(c,"Input"),e.setField(c,t(a,Jr))}if(e.lock(s),!r.hashOverride)return s;const o=e.createStruct(j.PlTemplateOverrideV1.type,JSON.stringify(j.PlTemplateOverrideV1.fromV2Data(r))),n=j.PlTemplateOverrideV1.tplField(o);return e.createField(n,"Service"),e.setField(n,s),e.lock(o),o}};function io(r,e){const t=new Map,s=(o,n)=>{const i=ae.createHash("sha256");n.hash(o,i);const a=i.digest("hex");if(!t.has(a)){const c=n.render(o,r,s);t.set(a,c)}return t.get(a)};return s(e,Jr)}const Gr={name:"TengoTemplateGet",version:"1"},Mr="registry",_r="templateURI",Kr="template",ao={name:"TengoTemplatePack",version:"1"},co={name:"TengoTemplatePackConvert",version:"1"},lo="templatePack",uo="template";async function Hr(r){switch(r.type){case"from-file":return{type:"explicit",content:await Z.promises.readFile(r.path)};case"from-registry":case"explicit":return r;default:return k.assertNever(r)}}function po(r,e){const t=r.createStruct(Gr),s=f.field(t,Mr),o=f.field(t,_r),n=f.field(t,Kr);return r.setField(s,r.createValue(f.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),r.setField(o,r.createValue(f.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function Ye(r,e){switch(e.type){case"from-registry":return po(r,e);case"explicit":return no(r,e);default:return k.assertNever(e)}}const Tt={name:"Frontend/FromUrl",version:"1"},Ft={name:"Frontend/FromFolder",version:"1"};function ho(r,e){switch(e.type){case"url":return r.createValue(Tt,JSON.stringify({url:e.url}));case"local":return r.createValue(Ft,JSON.stringify({path:e.path,signature:e.signature}));default:return k.assertNever(e)}}const fo={name:"BlockPackCustom",version:"1"},qr="template",Wr="frontend";function er(r){return r.endsWith("/")?r:`${r}/`}function go(r){return Buffer.from(r).toString("utf8")}function De(r){return JSON.parse(go(r))}class mo{constructor(e,t,s){w(this,"remoteContentCache",new Ar.LRUCache({max:500,maxSize:128*1024*1024,fetchMethod:async e=>{const t=this.http!==void 0?{dispatcher:this.http}:{};return await(await We.request(e,t)).body.arrayBuffer()},sizeCalculation:e=>e.byteLength}));this.v2RegistryProvider=e,this.signer=t,this.http=s}async getBlockConfigContainer(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Xt(e.folder),s=await Z.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(s)}case"dev-v2":{const t=await H.loadPackDescription(e.folder),s=await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(s)}case"from-registry-v1":{const t=`${er(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,s=await this.remoteContentCache.forceFetch(`${t}/config.json`);return De(s)}case"from-registry-v2":{const s=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=await this.remoteContentCache.forceFetch(s.model.url);return De(o)}default:return k.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Xt(e.folder),s=await Z.promises.readFile(t.workflow),o=JSON.parse(await Z.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:s},config:o,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:e}}case"dev-v2":{const t=await H.loadPackDescription(e.folder),s=JSON.parse(await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Z.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await Xe(t)),{type:"explicit",template:{type:"explicit",content:o},config:s,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=`${er(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,s=`${t}/template.plj.gz`,o=await this.remoteContentCache.forceFetch(s),n=new Uint8Array(o),i=await this.remoteContentCache.forceFetch(`${t}/config.json`),a=De(i);return{type:"explicit",template:{type:"explicit",content:n},config:a,frontend:{type:"url",url:`${t}/frontend.tgz`},source:e}}case"from-registry-v2":{const s=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=async()=>De(await this.remoteContentCache.forceFetch(s.model.url)),n=async()=>await this.remoteContentCache.forceFetch(s.workflow.main.url),[i,a]=await Promise.all([o(),n()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(a)},config:i,frontend:{type:"url",url:s.ui.url},source:e}}default:return k.assertNever(e)}}}function vo(r,e){const t={config:e.config,source:e.source},s=r.createStruct(fo,JSON.stringify(t));return r.createField(f.field(s,qr),"Input",Ye(r,e.template)),r.createField(f.field(s,Wr),"Input",ho(r,e.frontend)),r.lock(s),s}function tr(r,e){switch(e.type){case"explicit":return vo(r,e);default:return k.assertNever(e.type)}}function Ne(r,e){return{__isRef:!0,blockId:r,name:e}}function yo(r){return typeof r=="object"&&r!==null&&"__isRef"in r&&r.__isRef===!0&&"blockId"in r&&"name"in r}function St(r,e,t){const s=typeof e;switch(s){case"function":case"bigint":case"number":case"string":case"boolean":case"symbol":case"undefined":return;case"object":if(e===null)return;if(yo(e))t===void 0||t.has(e.blockId)?r.upstreams.add(e.blockId):r.missingReferences=!0;else if(Array.isArray(e))for(const o of e)St(r,o,t);else for(const[,o]of Object.entries(e))St(r,o,t);return;default:k.assertNever(s)}}function So(r,e){const t={upstreams:new Set,missingReferences:!1};return St(t,r,e),t}function ie(r){return{*[Symbol.iterator](){for(const e of r.groups)for(const t of e.blocks)yield t}}}class zr{constructor(e){w(this,"nodes");this.nodes=e}traverseIds(e,...t){const s=new Set;return this.traverse(e,t,o=>s.add(o.id)),s}traverseIdsExcludingRoots(e,...t){const s=this.traverseIds(e,...t);for(const o of t)s.delete(o);return s}traverse(e,t,s){let o=[...t];const n=new Set(o);for(;o.length>0;){const i=[];for(const a of o){const c=this.nodes.get(a);s(c),c[e].forEach(u=>{n.has(u)||(n.add(u),i.push(u))})}o=i}}}function bt(r){const e=new Map;let t;for(const{id:s}of ie(r)){const o={id:s,missingReferences:!1};e.set(s,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 zr(e)}function Me(r,e){const t=new Map,s=new Set;for(const{id:o}of ie(r)){const n=e(o);if(n===void 0)continue;const i=So(n,s),a={id:o,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(o,a),i.upstreams.forEach(c=>t.get(c).downstream.add(o)),s.add(o)}return new zr(t)}function bo(r,e){if(r.size!==e.size)return!1;for(const t of r)if(!e.has(t))return!1;return!0}function wt(r,e){if(r.size>e.size)return wt(e,r);for(const t of r)if(e.has(t))return!0;return!1}function rr(r,e){const t=new Set,s=new Set,o=new Set;return r.nodes.forEach(n=>{const i=e.nodes.get(n.id);i===void 0?t.add(n.id):(!bo(n.upstream,i.upstream)||wt(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{r.nodes.has(n.id)?wt(n.upstream,o)&&o.add(n.id):s.add(n.id)}),{onlyInA:t,onlyInB:s,different:o}}let at;async function Xr(){if(at===void 0){const r=await Hr(ws.Templates["pframes.export-pframe"]);if(r.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=ae.createHash("sha256").update(r.content).digest("hex");at={spec:r,hash:e}}return at}function wo(r,e,t){return $t(r,e,!0,{pf:t},["result"]).result}function ct(r,e){let t=!1,s,o;return()=>{if(!t)return t=!0,s=r(),o=e(),o;const n=r();return s!==n&&(s=n,o=e()),e()}}class sr{constructor(e,t){w(this,"currentInputsC",ct(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));w(this,"actualProductionInputsC",ct(()=>{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())}));w(this,"productionStaleC",ct(()=>{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 productionHasErrors(){var e;return((e=this.fields.prodUiCtx)==null?void 0:e.status)==="Error"}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()||this.productionHasErrors}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(f.Pl.unwrapHolder(e,this.fields.blockPack.ref),qr,"Input")}}const Po=r=>{throw new Error(`No new block info for ${r}`)};class He{constructor(e,t,s,o,n,i,a,c,u,l,d,g){w(this,"globalModCount",0);w(this,"fieldsChanged",!1);w(this,"lastModifiedChanged",!1);w(this,"structureChanged",!1);w(this,"metaChanged",!1);w(this,"renderingStateChanged",!1);w(this,"changedBlockFrontendStates",new Set);w(this,"blocksWithChangedInputs",new Set);w(this,"stagingGraph");w(this,"pendingProductionGraph");w(this,"actualProductionGraph");this.rid=e,this.tx=t,this.author=s,this.schema=o,this.lastModified=n,this.meta=i,this.struct=a,this.renderingState=c,this.blocksInLimbo=u,this.blockInfos=l,this.blockFrontendStates=d,this.ctxExportTplHolder=g}fixProblemsAndMigrate(){this.blockInfos.forEach(t=>{(t.fields.prodArgs===void 0||t.fields.prodOutput===void 0||t.fields.prodCtx===void 0)&&this.deleteBlockFields(t.id,"prodArgs","prodOutput","prodCtx")});let e;this.blockInfos.forEach(t=>{t.fields.blockSettings===void 0&&(e===void 0&&(e=this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(t.id,"blockSettings",e))})}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=bt(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=Me(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=Me(this.struct,e=>this.getBlockInfo(e).actualProductionInputs)),this.actualProductionGraph}getBlockInfo(e){const t=this.blockInfos.get(e);if(t===void 0)throw new Error(`No such block: ${e}`);return t}createJsonFieldValueByContent(e){const t=Buffer.from(e);return{ref:this.tx.createValue(f.Pl.JsonObject,t),value:t,status:"Ready"}}createJsonFieldValue(e){return this.createJsonFieldValueByContent(JSON.stringify(e))}getBlock(e){for(const t of ie(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,s){const o=f.field(this.rid,G(e,t));if(s.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",s.ref):this.tx.setField(o,s.ref),this.getBlockInfo(e).fields[t]={modCount:this.globalModCount++,...s},this.fieldsChanged=!0}setBlockField(e,t,s,o,n){this.setBlockFieldObj(e,t,{ref:s,status:o,value:n})}deleteBlockFields(e,...t){let s=!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,s=!0)}return s}updateLastModified(){this.lastModified=Date.now(),this.lastModifiedChanged=!0}resetStagingRefreshTimestamp(){this.renderingState.stagingRefreshTimestamp=Date.now(),this.renderingStateChanged=!0}resetStaging(e){var s,o,n;const t=this.getBlockInfo(e).fields;((s=t.stagingOutput)==null?void 0:s.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 s,o,n;const t=this.getBlockInfo(e).fields;((s=t.prodOutput)==null?void 0:s.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 s,o;const t=this.getBlockInfo(e).fields;return((s=t.prodOutput)==null?void 0:s.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:s,args:o}of e){const n=this.getBlockInfo(s);JSON.parse(o);const i=Buffer.from(o);if(Buffer.compare(n.fields.currentArgs.value,i)===0)continue;const a=this.tx.createValue(f.Pl.JsonObject,i);this.setBlockField(s,"currentArgs",a,"Ready",i),this.blocksWithChangedInputs.add(s),t.push(s)}this.getStagingGraph().traverse("downstream",t,({id:s})=>this.resetStaging(s)),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())}setBlockSettings(e,t){this.setBlockFieldObj(e,"blockSettings",this.createJsonFieldValue(t)),this.updateLastModified()}createProdCtx(e){const t=[];return e.forEach(s=>{var n;const o=this.getBlockInfo(s);if(((n=o.fields.prodCtx)==null?void 0:n.ref)===void 0)throw new Error("One of the upstreams staging is not rendered.");t.push(f.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),Qt(this.tx,t)}createStagingCtx(e){const t=[];return e.forEach(s=>{var n,i;const o=this.getBlockInfo(s);if(((n=o.fields.stagingCtx)==null?void 0:n.ref)===void 0)throw new Error("One of the upstreams staging is not rendered.");t.push(f.Pl.unwrapHolder(this.tx,o.fields.stagingCtx.ref)),((i=o.fields.prodCtx)==null?void 0:i.ref)!==void 0&&t.push(f.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),Qt(this.tx,t)}exportCtx(e){return wo(this.tx,f.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),s=this.createStagingCtx(this.getStagingGraph().nodes.get(e).upstream);if(this.getBlock(e).renderingMode!=="Heavy")throw new Error("not supported yet");const o=t.getTemplate(this.tx),n=Yt(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:s});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),s=this.createProdCtx(this.getPendingProductionGraph().nodes.get(e).upstream);if(this.getBlock(e).renderingMode==="Light")throw new Error("Can't render production for light block.");const o=t.getTemplate(this.tx),n=Yt(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:s});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=Po){const s=this.getStagingGraph(),o=this.getActualProductionGraph(),n=bt(e),i=Me(e,u=>{var l;return(l=this.blockInfos.get(u))==null?void 0:l.actualProductionInputs}),a=rr(s,n),c=rr(o,i);for(const u of a.onlyInA){const{fields:l}=this.getBlockInfo(u);this.deleteBlockFields(u,...Object.keys(l)),this.blockInfos.delete(u),this.blocksInLimbo.delete(u)&&(this.renderingStateChanged=!0),this.blockFrontendStates.delete(u)&&this.changedBlockFrontendStates.add(u)}for(const u of a.onlyInB){const l=new sr(u,{});this.blockInfos.set(u,l);const d=t(u),g=tr(this.tx,d.blockPack);this.setBlockField(u,"blockPack",f.Pl.wrapInHolder(this.tx,g),"NotReady"),this.setBlockFieldObj(u,"blockSettings",this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(u,"currentArgs",this.createJsonFieldValueByContent(d.args)),d.uiState&&(this.blockFrontendStates.set(u,d.uiState),this.changedBlockFrontendStates.add(u)),l.check()}for(const u of a.different)this.resetStaging(u);o.traverse("downstream",[...c.different],u=>{this.resetOrLimboProduction(u.id)}),(a.onlyInB.size>0||a.onlyInA.size>0||a.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,s){const o=this.structure;if(s===void 0)o.groups[o.groups.length-1].blocks.push(e);else{let n=!1;for(const i of o.groups){const a=i.blocks.findIndex(c=>c.id===s);if(!(a<0)){i.blocks.splice(a,0,e),n=!0;break}}if(!n)throw new Error(`Can't find element with id: ${s}`)}this.updateStructure(o,n=>{if(n!==e.id)throw new Error("Unexpected");return t})}deleteBlock(e){const t=this.structure;let s=!1;for(const o of t.groups){const n=o.blocks.findIndex(i=>i.id===e);if(!(n<0)){o.blocks.splice(n,1),s=!0;break}}if(!s)throw new Error(`Can't find element with id: ${e}`);this.updateStructure(t)}migrateBlockPack(e,t,s){const o=this.getBlockInfo(e);this.setBlockField(e,"blockPack",f.Pl.wrapInHolder(this.tx,tr(this.tx,t)),"NotReady"),s!==void 0?(this.setArgs([{blockId:e,args:s}]),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 s=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,a=>{s.add(a.id)});else for(const a of s){const c=o.nodes.get(a);if(c===void 0)throw new Error(`Can't find block with id: ${a}`);for(const u of c.upstream)if(!s.has(u))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const a of ie(this.structure)){if(!s.has(a.id))continue;let c=this.getBlockInfo(a.id).requireProductionRendering||this.blocksInLimbo.has(a.id);if(!c){for(const u of o.nodes.get(a.id).upstream)if(n.has(u)){c=!0;break}}c&&(this.renderProductionFor(a.id),n.add(a.id))}const i=[...n];return o.traverse("downstream",i,a=>{n.has(a.id)||this.resetOrLimboProduction(a.id)}),this.getStagingGraph().traverse("downstream",i,({id:a})=>{i[0]!==a&&this.resetStaging(a)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,a;const t=this.getActualProductionGraph(),s=new Lr(e),o=new Set(e),n=[];for(;!s.isEmpty();){const c=s.shift(),u=this.getBlockInfo(c).fields;if(!(((i=u.prodOutput)==null?void 0:i.status)==="Ready"&&((a=u.prodCtx)==null?void 0:a.status)==="Ready")&&this.deleteBlockFields(c,"prodOutput","prodCtx","prodUiCtx","prodArgs")){n.push(c);for(const l of t.traverseIdsExcludingRoots("downstream",c))o.has(l)||(s.push(l),o.add(l))}}for(const c of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(c)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(o=>{let i=this.getBlockInfo(o.id).stagingRendered?0:1;o.upstream.forEach(a=>{const c=t.get(a);c!==0&&(i=Math.max(c+1,i))}),e(o.id,i),t.set(o.id,i)})}refreshStagings(e){const t=Date.now()-this.renderingState.stagingRefreshTimestamp,s=e===void 0?void 0:1+Math.max(0,t*e/1e3);let o=0;this.traverseWithStagingLag((n,i)=>{i!==0&&(s===void 0||i<=s)&&(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 s,o,n,i;((s=t.fields.prodCtx)==null?void 0:s.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,mt(t)):this.tx.setKValue(this.rid,mt(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,vt):this.tx.setKValue(this.rid,vt,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,$e,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,pe,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Ke,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,Te,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,gt(e)):this.tx.setKValue(this.rid,gt(e),t)}this.assignAuthorMarkers()}}static async load(e,t,s){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,xr),i=e.getKValueJson(t,$e),a=e.getKValueJson(t,Te),c=e.getKValueJson(t,pe),u=e.getKValueJson(t,Ke),l=e.listKeyValuesString(t),[d,g,h,R,m,{stagingRefreshTimestamp:x,blocksInLimbo:L},U]=await Promise.all([o,n,i,a,c,u,l]);if(g!==Vr)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${g}`);const F=new Map;for(const p of d.fields){const v=qs(p.name);if(v===void 0)continue;let S=F.get(v.blockId);S===void 0&&(S={id:v.blockId,fields:{}},F.set(v.blockId,S)),S.fields[v.fieldName]=f.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const M=await Xr(),he=yt(M.hash),D=d.fields.find(p=>p.name===he);let Y;D!==void 0?Y=f.ensureResourceIdNotNull(D.value):(Y=f.Pl.wrapInHolder(e,Ye(e,M.spec)),e.createField(f.field(t,yt(M.hash)),"Dynamic",Y));const ue={stagingRefreshTimestamp:x},z=new Set(L),_=new Map;for(const p of U){const v=_s(p.key);v!==void 0&&_.set(v,p.value)}const J=[];F.forEach(({fields:p})=>{for(const[,v]of Object.entries(p))if(v.ref!==void 0){if(!f.isResource(v.ref)||f.isResourceRef(v.ref))throw new Error("unexpected behaviour");J.push([v,e.getResourceData(v.ref,!1)])}});for(const[p,v]of J){const S=await v;p.value=S.data,f.isNotNullResourceId(S.error)?p.status="Error":S.resourceReady||f.isNotNullResourceId(S.originalResourceId)?p.status="Ready":p.status="NotReady"}const Q=new Map;F.forEach(({id:p,fields:v})=>Q.set(p,new sr(p,v)));const fe=new Set;for(const p of ie(m)){if(!Q.has(p.id))throw new Error(`Inconsistent project structure: no inputs for ${p.id}`);fe.add(p.id)}Q.forEach(p=>{if(!fe.has(p.id))throw new Error(`Inconsistent project structure: no structure entry for ${p.id}`);p.check()});const y=new He(t,e,s,g,h,R,m,ue,z,Q,_,Y);return y.fixProblemsAndMigrate(),y}}async function Co(r,e=Vs){const t=r.createEphemeral(Us);r.lock(t);const s=String(Date.now());r.setKValue(t,xr,JSON.stringify(Vr)),r.setKValue(t,Ot,s),r.setKValue(t,$e,s),r.setKValue(t,Te,JSON.stringify(e)),r.setKValue(t,pe,JSON.stringify(js)),r.setKValue(t,Ke,JSON.stringify(xs));const o=await Xr();return r.createField(f.field(t,yt(o.hash)),"Dynamic",f.Pl.wrapInHolder(r,Ye(r,o.spec))),t}async function Be(r,e,t){return te(r,e,void 0,t)}async function te(r,e,t,s){if(r instanceof f.PlClient)return await r.withWriteTx("ProjectAction",async o=>{const n=await He.load(o,e,t),i=await s(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await He.load(r,e,t),n=await s(o);return o.save(),n}}function*Ro(r){switch(r.type){case"Json":return;case"JsonPartitioned":for(const[,e]of Object.entries(r.parts))yield e;return;case"BinaryPartitioned":for(const[,{index:e,values:t}]of Object.entries(r.parts))yield e,yield t;return;default:k.assertNever(r)}}function or(r,e){return Object.fromEntries(Object.entries(r).map(([t,s])=>[t,e(s,t)]))}function Eo(r,e){switch(r.type){case"Json":return{...r};case"JsonPartitioned":return{...r,parts:or(r.parts,e)};case"BinaryPartitioned":return{...r,parts:or(r.parts,t=>({index:e(t.index),values:e(t.values)}))};default:k.assertNever(r)}}const ko=f.resourceType("PColumnData/JsonPartitioned","1"),Oo=f.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),$o=f.resourceType("PColumnData/BinaryPartitioned","1"),To=f.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Fo=f.resourceType("PColumnData/Json","1");function Io(r){if(!r.getIsReadyOrError())throw new Error("Data not ready.");const e=r.getDataAsJson();if(e===void 0)throw new Error("unexpected data info structure, no resource data");if(f.resourceTypesEqual(r.resourceType,Fo)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(f.resourceTypesEqual(r.resourceType,ko)){const t=e,s=Object.fromEntries(r.listInputFields().map(o=>[o,r.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo]));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength,parts:s}}else if(f.resourceTypesEqual(r.resourceType,Oo)){const t=e,s={};for(const o of r.listInputFields()){const n=r.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const a of i){const c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);s[c]=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}}return{type:"JsonPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:s}}else if(f.resourceTypesEqual(r.resourceType,$o)){const t=e,s={};for(const o of r.listInputFields())if(o.endsWith(".index")){const n=o.slice(0,o.length-6);let i=s[n];i===void 0&&(i={},s[n]=i),i.index=r.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else if(o.endsWith(".values")){const n=o.slice(0,o.length-7);let i=s[n];i===void 0&&(i={},s[n]=i),i.values=r.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${o}`);for(const[o,n]of Object.entries(s)){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:s}}else if(f.resourceTypesEqual(r.resourceType,To)){const t=e,s={};for(const o of r.listInputFields()){const n=r.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const a of i)if(a.endsWith(".index")){const c=a.slice(0,a.length-6),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=s[u];l===void 0&&(l={},s[u]=l),s[u].index=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else if(a.endsWith(".values")){const c=a.slice(0,a.length-7),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=s[u];l===void 0&&(l={},s[u]=l),s[u].values=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${a}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:s}}throw new Error(`unsupported resource type: ${f.resourceTypeToString(r.resourceType)}`)}function Ao(r,e){const t=r.axesSpec.length,s={};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}`);s[JSON.stringify(o)]=n}return{type:"Json",keyLength:t,data:s}}function Lo(r,e){const t=ae.createHash("sha256");return t.update(re(r)),t.update(String(f.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function nr(r,e){return re({__isRef:!0,blockId:r,name:e})}function Do(r,e){return re({resolvePath:r,name:e})}function Yr(r,e=!0,t=!1,s=""){var a,c,u;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const l of r.listInputFields()){const d=l.match(o);if(!d){if(e)throw new Error(`unexpected field name ${l}`);continue}let g=k.notEmpty((a=d.groups)==null?void 0:a.name);if(!g.startsWith(s)){if(e)throw new Error(`unexpected field name ${l}`);continue}g=g.slice(s.length);const h=k.notEmpty((c=d.groups)==null?void 0:c.type);let R=n.get(g);switch(R===void 0&&(R={},n.set(g,R)),h){case"spec":R.spec=(u=r.traverse({field:l,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":R.hasData=!0,R.data=()=>r.traverseOrError({field:l,ignoreError:t});break}}const i=r.getInputsLocked();if(i)for(const[,l]of n)l.data===void 0&&(l.hasData=!1);return{locked:i,results:n}}function No(r,e=!0,t="",s){if(!r.getIsReadyOrError())throw new Error("resource is not ready");const o=Yr(r,e,!1,t);Ps(o.locked);const n={};for(const[i,a]of o.results){if(a.spec===void 0)throw new Error(`no spec for key ${i}`);if(a.hasData!==!0||a.data===void 0)throw new Error(`no data for key ${i}`);const c=a.data();if(c===void 0)throw new Error(`no data for key ${i}`);if(!c.ok)throw new ze.PlError(c.error);n[i]={id:s.length===0?Lo(a.spec,c.value):Do(s,i),spec:a.spec,data:c.value}}return n}class It{constructor(e,t){w(this,"allSpecsAvailable");this.ctx=e,this.blocks=t;let s=!0;e:for(const o of t.values())for(const n of[o.prod,o.staging])if(n!==void 0){if(!n.locked){s=!1;break e}for(const i of n.results.values())if(i.spec===void 0){s=!1;break e}}this.allSpecsAvailable=s}getSpecByRef(e,t){var n,i,a,c,u,l;const s=this.blocks.get(e);if(s===void 0)return;let o=(a=(i=(n=s.prod)==null?void 0:n.results)==null?void 0:i.get(t))==null?void 0:a.spec;if(o!==void 0||(o=(l=(u=(c=s.staging)==null?void 0:c.results)==null?void 0:u.get(t))==null?void 0:l.spec,o!==void 0))return o;s.staging===void 0?this.ctx.markUnstable(`staging_not_rendered:${e}`):s.staging.locked?s.prod!==void 0&&!s.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`):this.ctx.markUnstable(`staging_not_locked:${e}`)}getDataOrErrorByRef(e,t){var i,a,c;const s=this.blocks.get(e);if(s===void 0)return;const o=(a=(i=s.prod)==null?void 0:i.results)==null?void 0:a.get(t),n=(c=o==null?void 0:o.data)==null?void 0:c.call(o);if(o!==void 0&&o.spec!==void 0&&n!==void 0)return N.mapValueInVOE(n,u=>({id:nr(e,t),spec:o.spec,data:u}));o!==void 0&&this.ctx.markUnstable(`no_data:${e}:${t}`),s.prod!==void 0&&!s.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`)}getDataByRef(e,t){const s=this.getDataOrErrorByRef(e,t);if(!(s===void 0||!s.ok))return s.value}getData(){const e=this.getDataWithErrors(),t=[];for(const s of e.entries)s.obj.id!==void 0&&s.obj.data.ok&&t.push({ref:s.ref,obj:{id:s.obj.id,spec:s.obj.spec,data:s.obj.data.value}});return{entries:t,isComplete:e.isComplete,instabilityMarker:e.instabilityMarker}}getDataWithErrors(){const e=[];let t=!0,s;const o=i=>{s===void 0&&(s=i),t=!1},n=(i,a,c)=>{if(c.spec!==void 0&&c.hasData===!0&&c.data!==void 0){const u=c.data();u!==void 0?e.push({ref:Ne(i,a),obj:{id:u.ok?nr(i,a):void 0,spec:c.spec,data:u}}):o(`no_data:${i}:${a}`)}};for(const[i,a]of this.blocks){const c=new Set;if(a.prod!==void 0){a.prod.locked||o(`prod_not_locked:${i}`);for(const[u,l]of a.prod.results)c.add(u),n(i,u,l)}if(a.staging!==void 0){a.staging.locked||o(`staging_not_locked:${i}`);for(const[u,l]of a.staging.results)c.has(u)||n(i,u,l)}}return{entries:e,isComplete:t,instabilityMarker:s}}getSpecs(){const e=[];let t=!0,s;const o=n=>{s===void 0&&(s=n),t=!1};for(const[n,i]of this.blocks){const a=new Set;if(i.staging!==void 0){i.staging.locked||o(`staging_not_locked:${n}`);for(const[c,u]of i.staging.results)u.spec!==void 0&&(e.push({ref:Ne(n,c),obj:u.spec}),a.add(c))}else o(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||o(`prod_not_locked:${n}`);for(const[c,u]of i.prod.results)a.has(c)||u.spec!==void 0&&e.push({ref:Ne(n,c),obj:u.spec})}}return{entries:e,isComplete:t,instabilityMarker:s}}calculateOptions(e){const t=[];for(const s of this.blocks.values()){const o=new Set,n=i=>{for(const[a,c]of i.results)o.has(a)||c.spec===void 0||(o.add(a),N.executePSpecPredicate(e,c.spec)&&t.push({label:s.info.label+" / "+a,ref:Ne(s.info.id,a),spec:c.spec}))};s.staging!==void 0&&n(s.staging),s.prod!==void 0&&n(s.prod)}return t}static create(e,t,s){const o=e.accessor(t).node(),n=k.notEmpty(o.getKeyValueAsJson(pe)),a=bt(n).traverseIds("upstream",s),c=new Map;for(const u of ie(n)){if(!a.has(u.id))continue;const l=ir(o.traverse({field:G(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:G(u.id,"prodUiCtx"),stableIfNotFound:!0})),d=ir(o.traverse({field:G(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:G(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:l,staging:d})}return new It(e,c)}}function ir(r,e){if(e===void 0)return r?{locked:!1,results:new Map}:void 0;if(e.ok)return Yr(e.value,!1,!0)}function At(r,e){return{blockId:e,args:n=>k.notEmpty(n.accessor(r).node().traverse({field:G(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),activeArgs:n=>{var i;return(i=n.accessor(r).node().traverse({field:G(e,"prodArgs"),stableIfNotFound:!0}))==null?void 0:i.getDataAsString()},uiState:n=>n.accessor(r).node().getKeyValueAsString(gt(e)),blockMeta:n=>{const i=n.accessor(r).node(),a=k.notEmpty(i.getKeyValueAsJson(pe)),c=new Map;for(const u of ie(a))c.set(u.id,u);return c}}}function Qr(r,e){return{...At(r,e),prod:t=>{var s;return(s=t.accessor(r).node({ignoreError:!0}).traverse({field:G(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:s.persist()},staging:t=>{var o;const s=(o=t.accessor(r).node({ignoreError:!0}).traverse({field:G(e,"stagingOutput"),ignoreError:!0}))==null?void 0:o.persist();return s===void 0&&t.markUnstable("staging_not_rendered"),s},getResultsPool:t=>It.create(t,r,e)}}function*X(r,e){switch(yield r,r.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*X(r.cfg);return;case"MakeObject":for(const[,t]of Object.entries(r.template))yield*X(t);return;case"MakeArray":for(const t of r.template)yield*X(t);return;case"GetJsonField":case"GetResourceField":yield*X(r.source),yield*X(r.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*X(r.source),yield*X(r.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"ExtractArchiveAndGetURL":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetProgressLogWithInfo":case"GetLogHandle":yield*X(r.source);return;case"IsEmpty":yield*X(r.arg);return;case"Not":yield*X(r.operand);return;case"And":case"Or":yield*X(r.operand1),yield*X(r.operand2);return;default:k.assertNever(r)}}function Bo(r,e){const t={};for(const[s,o]of Object.entries(r))t[s]=e(o);return t}function Ee(r,e){return r===void 0?void 0:e(r)}function jo(r){switch(r.type){case"GetImportProgress":return!0;default:return!1}}function xo(r){for(const e of X(r))if(jo(e))return!0;return!1}function Qe(r){return{type:"ReturnResult",result:r}}function O(r){return()=>Qe(r)}const Vo=r=>{const e={};for(const[t,s]of Object.entries(r))e[t]=s;return O(e)},Uo=r=>{const e=r.source;if(e===void 0)return O(void 0);const t=[];for(const s of e)s instanceof Array?t.push(...s):t.push(s);return O(t)},Jo=r=>{const e=r.source,t=r.field;return e===void 0||t===void 0?O(void 0):({cCtx:s})=>{var o;return Qe((o=s.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function Zr(r,e){const t={},s=r.length;for(let o=0;o<s;o++)t[String(o)]=e(r[o]);return t}function Go(r,e){return t=>{const s=t.source;return s===void 0?O(void 0):()=>({type:"ScheduleSubroutine",subroutine:es(s.length),args:Zr(s,o=>$({...r,[e.itVar]:o},e.mapping))})}}function es(r){return e=>{const t=[];for(let s=0;s<r;s++)t.push(e[String(s)]);return O(t)}}function Mo(r,e){return t=>{const s=t.source;if(s===void 0)return O(void 0);const o={};for(const[n,i]of Object.entries(s)){const a={...r,[e.itVar]:i};o[n]=$(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:_o,args:o})}}const _o=r=>O(r),Ko=r=>{const e=r.arg;return O(e===void 0?void 0:e.length===0)},Ho=r=>{const e=r.operand;return O(e===void 0?void 0:!e)},qo=r=>{const e=r.operand1,t=r.operand2;return O(e===void 0||t===void 0?void 0:e&&t)},Wo=r=>{const e=r.operand1,t=r.operand2;return O(e===void 0||t===void 0?void 0:e||t)},zo=r=>{const e=r.source;return e===void 0?O(void 0):({cCtx:t})=>{var s;return Qe((s=t.accessor(e).node())==null?void 0:s.getDataAsJson())}},Xo=r=>{const e=r.source,t=r.field;return O(e===void 0||t===void 0?void 0:e[t])};function Yo(r,e){return t=>{const s=t.source;return s===void 0?O(void 0):({cCtx:o})=>{const n=o.accessor(s).node(),i={};for(const a of n.listInputFields()){const c=n.traverse(a);if(c===void 0)i[a]=O(void 0);else{const u={...r,[e.itVar]:c.persist()};i[a]=$(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:Qo,args:i}}}}const Qo=r=>O(r),Zo=r=>{const e=r.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.Computable.make(s=>t.blobDriver.getDownloadedBlob(s.accessor(e).node().resourceInfo),{postprocessValue:async s=>{if(s!==void 0)return await t.blobDriver.getContent(s.handle)}})})},en=r=>{const e=r.source;return e===void 0?O(void 0):({cCtx:t,drivers:s})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:B.Computable.make(()=>s.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await s.blobDriver.getContent(n.handle)).toString()})}}},tn=r=>{const e=r.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.Computable.make(s=>t.blobDriver.getDownloadedBlob(s.accessor(e).node().resourceInfo),{postprocessValue:async s=>{if(s==null)return;const o=await t.blobDriver.getContent(s.handle);if(o!=null)return JSON.parse(Buffer.from(o).toString())}})})},rn=r=>{const e=r.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},sn=r=>{const e=r.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},on=r=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:s})=>({type:"ScheduleComputable",computable:s.blobToURLDriver.extractArchiveAndGetURL(t,r)})},nn=r=>{const e=r.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},an=r=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:s})=>({type:"ScheduleComputable",computable:s.logDriver.getLastLogs(t,r)})},cn=r=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:s})=>({type:"ScheduleComputable",computable:s.logDriver.getProgressLog(t,r)})},ln=r=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:s})=>({type:"ScheduleComputable",computable:s.logDriver.getProgressLogWithInfo(t,r)})},un=r=>{const e=r.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function $(r,e){switch(e.type){case"GetFromCtx":{const t=r[e.variable];return typeof t=="function"?s=>Qe(t(s.cCtx)):O(t)}case"Isolate":return({drivers:t})=>({type:"ScheduleComputable",computable:ss(t,r,e.cfg)});case"Immediate":return O(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:Xo,args:{source:$(r,e.source),field:$(r,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:Go(r,e),args:{source:$(r,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Mo(r,e),args:{source:$(r,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:Vo,args:Bo(e.template,t=>$(r,t))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:es(e.template.length),args:Zr(e.template,t=>$(r,t))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:Uo,args:{source:$(r,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Ko,args:{arg:$(r,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Ho,args:{operand:$(r,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:qo,args:{operand1:$(r,e.operand1),operand2:$(r,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:Wo,args:{operand1:$(r,e.operand1),operand2:$(r,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Yo(r,e),args:{source:$(r,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:Jo,args:{source:$(r,e.source),field:$(r,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:zo,args:{source:$(r,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Zo,args:{source:$(r,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:en,args:{source:$(r,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:tn,args:{source:$(r,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:rn,args:{source:$(r,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:sn,args:{source:$(r,e.source)}});case"ExtractArchiveAndGetURL":return()=>({type:"ScheduleSubroutine",subroutine:on(e.format),args:{source:$(r,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:nn,args:{source:$(r,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:an(e.lines),args:{source:$(r,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:cn(e.patternToSearch),args:{source:$(r,e.source)}});case"GetProgressLogWithInfo":return()=>({type:"ScheduleSubroutine",subroutine:ln(e.patternToSearch),args:{source:$(r,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:un,args:{source:$(r,e.source)}});default:return k.assertNever(e)}}const dn=["$prod","$staging"];function pn(r){return{$blockId:r.blockId,$args:e=>JSON.parse(r.args(e)),$ui:e=>{const t=r.uiState(e);return t!==void 0?JSON.parse(t):void 0},$prod:r.prod,$staging:r.staging}}const ts=Symbol(),rs="return",hn={op:ts,arg:rs};function fn(r){return r.op==ts&&r.arg==rs}function gn(){return{pendingSubroutines:new Map}}function ar(r,e,t,s){const o=new Lr(t),n=(a,c)=>{if(fn(a))return e.result=c,!1;const u=k.notEmpty(e.pendingSubroutines.get(a.op));if(a.arg in u.args)throw new Error("argument already set");return u.args[a.arg]=c,u.argCounter--,u.argCounter===0&&(e.pendingSubroutines.delete(a.op),o.push({destination:u.destination,operation:u.subroutine(u.args)})),!0},i=[];e:for(;o.length>0;){const a=o.shift(),c=a.operation(r);switch(c.type){case"ReturnResult":if(!n(a.destination,c.result))break e;break;case"ScheduleSubroutine":{const u=Symbol(),l=Object.entries(c.args),d=l.length;if(d===0)o.push({destination:a.destination,operation:c.subroutine({})});else{for(const[g,h]of l)o.push({destination:{op:u,arg:g},operation:h});e.pendingSubroutines.set(u,{argCounter:d,args:{},subroutine:c.subroutine,destination:a.destination})}}break;case"ScheduleComputable":if(!s)throw new Error("asynchronous operations are forbidden in this context");i.push({destination:a.destination,computable:c.computable});break;default:k.assertNever(c)}}return i}function mn(r,e,t,s={}){return ss(r,pn(e),t,s)}function ss(r,e,t,s={}){const o=`${e.blockId}#`+re({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>dn.indexOf(n)===-1)),cfg:t});return B.Computable.makeRaw(n=>{const i={drivers:r,cCtx:n},a=gn();return{ir:ar(i,a,[{destination:hn,operation:$(e,t)}],!0),postprocessValue(u){const l=[];for(const R of u)l.push({destination:R.destination,operation:O(R.computable)});const d={drivers:r,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},g=new Map;for(const[R,m]of a.pendingSubroutines)g.set(R,{...m,args:{...m.args}});const h={result:a.result,pendingSubroutines:g};if(ar(d,h,l,!1),!("result"in h))throw new Error("illegal cfg rendering stack state, no result");return h.result}}},{...s,key:o})}function vn(r){return r instanceof ArrayBuffer||ArrayBuffer.isView(r)}function cr(r){return r!==void 0?Buffer.from(r).toString("base64"):void 0}class qe{constructor(e,t,s,o,n){w(this,"callbackRegistry");w(this,"fnJSONStringify");w(this,"fnJSONParse");w(this,"computablesToResolve",{});w(this,"computableCtx");w(this,"accessors",new Map);w(this,"meta");w(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=s,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=s.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 qe.cleanErrorContext(t),t}}runCallback(e,...t){try{return _e.Scope.withScope(s=>{const o=s.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,s)))))})}catch(s){throw qe.cleanErrorContext(s),s}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(s,o)=>{if(!this.accessors.has(s)){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(s,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(s,void 0)}return this.accessors.get(s)?s:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...s){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...s))}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 cr(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return cr(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,s,...o){const n=this.getAccessor(e);if(!n.getIsReadyOrError())return;const i=No(n,t,s,o),a={};for(const[c,u]of Object.entries(i))a[c]=N.mapPObjectData(u,l=>this.wrapAccessor(l));return a}registerComputable(e,t){const s=`${e}_${ae.randomUUID()}`;return this.computablesToResolve[s]=t,s}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",B.Computable.make(s=>this.env.driverKit.blobDriver.getDownloadedBlob(t,s),{postprocessValue:async s=>{if(s!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(s.handle)).toString("utf-8")}}))}getBlobContentAsBase64(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsBase64",B.Computable.make(s=>this.env.driverKit.blobDriver.getDownloadedBlob(t,s),{postprocessValue:async s=>{if(s!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(s.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))}extractArchiveAndGetURL(e,t){const s=this.getAccessor(e).persist();return this.registerComputable("extractArchiveAndGetURL",this.env.driverKit.blobToURLDriver.extractArchiveAndGetURL(s,t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const s=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(s,t))}getProgressLog(e,t){const s=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(s,t))}getProgressLogWithInfo(e,t){const s=this.getAccessor(e).persist();return this.registerComputable("getProgressLogWithInfo",this.env.driverKit.logDriver.getProgressLogWithInfo(s,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=k.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:N.mapPObjectData(t.obj,s=>this.wrapAccessor(s))}))}}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:N.mapValueInVOE(t.obj.data,s=>this.wrapAccessor(s))}}))}}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 N.mapPObjectData(this.resultPool.getDataByRef(e,t),s=>this.wrapAccessor(s))}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=>N.mapPObjectData(t,s=>typeof s=="string"?this.getAccessor(s):s)),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(N.mapPTableDef(e,t=>N.mapPObjectData(t,s=>typeof s=="string"?this.getAccessor(s):s)),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=ae.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const s=this.tryExportSingleValue(e,t);if(s===void 0)throw new Error(`Can't export value: ${e===void 0?"undefined":JSON.stringify(e)}`);return s}tryExportSingleValue(e,t){let s,o=!1;switch(typeof e){case"string":s=this.vm.newString(e),o=!0;break;case"number":s=this.vm.newNumber(e),o=!0;break;case"undefined":s=this.vm.undefined;break;case"boolean":s=e?this.vm.true:this.vm.false;break;default:if(e===null){s=this.vm.null;break}if(vn(e)){s=this.vm.newArrayBuffer(e),o=!0;break}return}return o&&t!=null?t.manage(s):s}exportObjectUniversal(e,t){const s=this.tryExportSingleValue(e,t);return s!==void 0?s:this.exportObjectViaJson(e,t)}exportObjectViaJson(e,t){const s=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(s):s}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(s=>this.vm.getString(s));if(t!=="undefined")return JSON.parse(t)}injectCtx(){_e.Scope.withScope(e=>{const t=e.manage(this.vm.newObject()),s=this.blockCtx.args(this.computableCtx),o=this.blockCtx.activeArgs(this.computableCtx),n=this.blockCtx.uiState(this.computableCtx);this.vm.setProp(t,"args",e.manage(this.vm.newString(s))),n!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(n))),o!==void 0&&this.vm.setProp(t,"activeArgs",e.manage(this.vm.newString(o))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry),this.vm.setProp(t,"featureFlags",this.exportObjectUniversal(N.JsRenderInternal.GlobalCfgRenderCtxFeatureFlags,e));const i=(a,c)=>{this.vm.newFunction(a,c).consume(u=>this.vm.setProp(t,a,u))};i("getAccessorHandleByName",a=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(a)),void 0)),i("resolveWithCommon",(a,c,...u)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(a),this.importObjectViaJson(c),...u.map(l=>this.importObjectViaJson(l))),void 0)),i("getResourceType",a=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(a)),void 0)),i("getInputsLocked",a=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(a)),void 0)),i("getOutputsLocked",a=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(a)),void 0)),i("getIsReadyOrError",a=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(a)),void 0)),i("getIsFinal",a=>this.exportSingleValue(this.getIsFinal(this.vm.getString(a)),void 0)),i("getError",a=>this.exportSingleValue(this.getError(this.vm.getString(a)),void 0)),i("listInputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listOutputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listDynamicFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("getKeyValueBase64",(a,c)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getKeyValueAsString",(a,c)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataBase64",a=>this.exportSingleValue(this.getDataBase64(this.vm.getString(a)),void 0)),i("getDataAsString",a=>this.exportSingleValue(this.getDataAsString(this.vm.getString(a)),void 0)),i("parsePObjectCollection",(a,c,u,...l)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(a),this.vm.dump(c),this.vm.getString(u),...l.map(d=>this.vm.getString(d))),void 0)),i("getBlobContentAsBase64",a=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(a)),void 0)),i("getBlobContentAsString",a=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(a)),void 0)),i("getDownloadedBlobContentHandle",a=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(a)),void 0)),i("getOnDemandBlobContentHandle",a=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(a)),void 0)),i("extractArchiveAndGetURL",(a,c)=>this.exportSingleValue(this.extractArchiveAndGetURL(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getImportProgress",a=>this.exportSingleValue(this.getImportProgress(this.vm.getString(a)),void 0)),i("getLastLogs",(a,c)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(a),this.vm.getNumber(c)),void 0)),i("getProgressLog",(a,c)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getProgressLogWithInfo",(a,c)=>this.exportSingleValue(this.getProgressLogWithInfo(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getLogHandle",a=>this.exportSingleValue(this.getLogHandle(this.vm.getString(a)),void 0)),i("getBlockLabel",a=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(a)),void 0)),i("getDataFromResultPool",()=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),i("getDataWithErrorsFromResultPool",()=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),i("getSpecsFromResultPool",()=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),i("calculateOptions",a=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(a)),void 0)),i("getSpecFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getSpecFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getDataFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("createPFrame",a=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(a)),void 0)),i("createPTable",a=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(a)),void 0)),i("getCurrentUnstableMarker",()=>this.exportSingleValue(this.getCurrentUnstableMarker(),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}function Ze(r,e){return Ee(r.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:f.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),t=>{const s=t.getDataAsJson(),o=N.extractConfig(s.config);return{bpId:t.resourceInfo.id.toString(),info:s,cfg:o}})}const je=process.env.MI_LOG_OUTPUT_STATUS;function yn(r,e,t,s,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"),B.Computable.makeRaw(a=>{const c=new _e.Scope;a.addOnDestroy(()=>c.dispose());const u=c.manage(r.quickJs.newRuntime());u.setMemoryLimit(1024*1024*8),u.setMaxStackSize(1024*320);const l=c.manage(u.newContext()),d=new qe(c,l,e,r,a);d.evaluateBundle(s.content);const g=d.runCallback(t.handle);d.resetComputableCtx();let h=0;return je&&je!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:(R,{unstableMarker:m,stable:x})=>{for(const[U,F]of Object.entries(R))d.runCallback(U,F);const L=d.importObjectUniversal(g);return h++,je&&(je!=="unstable-only"||!x)&&console.log(x?`Stable output ${t.handle} calculated ${L!==void 0?"defined":"undefined"}; (#${h})`:`Unstable output ${t.handle}; marker = ${m}; ${L!==void 0?"defined":"undefined"} (#${h})`),L}}},n)}function Sn(r){return N.isConfigLambda(r)?r.isActive===!0:xo(r)}function ke(r,e,t,s,o,n={}){if(N.isConfigLambda(t)){if(s===void 0)throw new Error("No code bundle.");return yn(r,e,t,s,o,n)}else return mn(r.driverKit,e,t,n)}function bn(r,e,t){return B.Computable.make(s=>{var R,m,x,L,U,F,M,he;const o=s.accessor(r).node(),n=k.notEmpty(o.getKeyValueAsJson(Ot)),i=k.notEmpty(o.getKeyValueAsJson($e)),a=k.notEmpty(o.getKeyValueAsJson(Te)),c=k.notEmpty(o.getKeyValueAsJson(pe)),u=k.notEmpty(o.getKeyValueAsJson(Ke)),l=new Map;for(const{id:D}of ie(c)){const Y=o.traverse({field:G(D,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ue;const z=o.traverse({field:G(D,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(z!==void 0){const _=o.getField({field:G(D,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),J=o.getField({field:G(D,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});ue={arguments:z.getDataAsJson(),stale:Y.id!==z.id,outputError:_.error!==void 0||J.error!==void 0||((R=_.value)==null?void 0:R.getError())!==void 0||((m=J.value)==null?void 0:m.getError())!==void 0,outputsError:((x=_.error)==null?void 0:x.getDataAsString())??((U=(L=_.value)==null?void 0:L.getError())==null?void 0:U.getDataAsString()),exportsError:((F=J.error)==null?void 0:F.getDataAsString())??((he=(M=J.value)==null?void 0:M.getError())==null?void 0:he.getDataAsString()),finished:(_.value!==void 0&&_.value.getIsReadyOrError()||_.error!==void 0&&_.error.getIsReadyOrError())&&(J.value!==void 0&&J.value.getIsReadyOrError()||J.error!==void 0&&J.error.getIsReadyOrError())}}l.set(D,{currentArguments:Y.getDataAsJson(),prod:ue})}const d=Me(c,D=>l.get(D).currentArguments),g=new Set(u.blocksInLimbo),h=[...ie(c)].map(({id:D,label:Y,renderingMode:ue})=>{var b,C,T,E,A;const z=k.notEmpty(l.get(D)),_=k.notEmpty(d.nodes.get(D));let J="NotCalculated";z.prod!==void 0&&(g.has(D)?J="Limbo":J=z.prod.finished?"Done":"Running");const Q=Ze(o,D),{sections:fe,title:y,inputsValid:p,sdkVersion:v}=Ee(Q,({bpId:V,cfg:I})=>{const ce=At(r,D);return{sections:ke(t,ce,I.sections,I.code,V).wrap({recover:be=>(t.logger.error("Error in block model sections"),t.logger.error(be),[])}),title:Ee(I.title,be=>ke(t,ce,be,I.code,V).wrap({recover:gs=>(t.logger.error("Error in block model title"),t.logger.error(gs),"Invalid title")})),inputsValid:ke(t,ce,I.inputsValid,I.code,V).wrap({recover:be=>(t.logger.error("Error in block model argsValid"),t.logger.error(be),!1)}),sdkVersion:I.sdkVersion}})||{},S=o.traverse({field:G(D,"blockSettings"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0}).getDataAsJson(),P=Ee(Q,({info:V})=>t.blockUpdateWatcher.get({currentSpec:V.source,settings:S}));return{projectResourceId:f.resourceIdToString(r.rid),id:D,label:y??Y,title:y??Y,renderingMode:ue,stale:((b=z.prod)==null?void 0:b.stale)!==!1||J==="Limbo",missingReference:_.missingReferences,upstreams:[...d.traverseIdsExcludingRoots("upstream",D)],downstreams:[...d.traverseIdsExcludingRoots("downstream",D)],calculationStatus:J,outputErrors:((C=z.prod)==null?void 0:C.outputError)===!0,outputsError:(T=z.prod)==null?void 0:T.outputsError,exportsError:(E=z.prod)==null?void 0:E.exportsError,settings:S,sections:fe,inputsValid:p,updateInfo:{},currentBlockPack:(A=Q==null?void 0:Q.info)==null?void 0:A.source,updates:P,sdkVersion:v,navigationState:e.getState(D)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(vt),blocks:h}},{postprocessValue:s=>{const o=new Set,n=new Set;return{...s,blocks:s.blocks.map(i=>{var l,d;i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const a=i.stale||i.upstreams.findIndex(g=>n.has(g))!==-1,c=(a||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(g=>o.has(g))===-1,u={...i,canRun:c,stale:a,updateSuggestions:((l=i.updates)==null?void 0:l.suggestions)??[],updatedBlockPack:(d=i.updates)==null?void 0:d.mainSuggestion};return delete u.updates,u})}}}).withStableType()}function wn(r,e){const t=r.node();if(f.resourceTypesEqual(t.resourceType,Tt)){const s=t.getDataAsJson();if(s===void 0)throw new Error("No resource data.");return e.frontendDownloadDriver.getPath(new URL(s.url)).withStableType()}else if(f.resourceTypesEqual(t.resourceType,Ft)){const s=t.getDataAsJson();if(s===void 0)throw new Error("No resource data.");return e.signer.verify(s.path,s.signature,`Frontend path signature mismatch for: ${s.path}`),s.path}else throw new Error(`Unsupported resource type: ${JSON.stringify(t.resourceType)}`)}function Pn(r,e){if(r!==void 0)return B.Computable.make(t=>wn(t.accessor(r),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 Cn(r,e,t){return B.Computable.make(s=>{var a;const o=s.accessor(r).node(),n=Ze(o,e),i=(a=o.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic"},{field:f.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Wr,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:Pn(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function os(r,e,t){if(t===void 0)return B.Computable.make(i=>os(r,e,i),{key:`inputs#${f.resourceIdToString(r.rid)}#${e}`});const s=t.accessor(r).node(),o=At(r,e),n=o.uiState(t);return{author:s.getKeyValueAsJson(mt(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function Rn(r,e,t){return B.Computable.make(s=>{const o=s.accessor(r).node(),n=Qr(r,e);return Ee(Ze(o,e),({cfg:i,bpId:a})=>{const c={};for(const[u,l]of Object.entries(i.outputs)){const d=ke(t,n,l,i.code,a);c[u]=B.Computable.wrapError(d)}return c})},{key:"outputs#"+f.resourceIdToString(r.rid)+"#"+e}).withStableType()}function En(r,e){return B.Computable.make(t=>{const s=t.accessor(r).node(),o=k.notEmpty(s.getKeyValueAsJson(pe)),n=[];for(const{id:i}of ie(o)){const a=Ze(s,i);if(a===void 0)continue;const c=Object.entries(a.cfg.outputs).map(([,l])=>l).filter(l=>Sn(l)).map(l=>l);if(c.length===0)continue;const u=Qr(s.persist(),i);for(const l of c)n.push(B.Computable.wrapError(ke(e,u,l,a.cfg.code,a.bpId)))}return n})}class kn{constructor(){w(this,"states",new Map)}setState(e,t){const s=this.states.get(e);if(s===void 0){this.states.set(e,{state:t,change:new B.ChangeSource});return}s.state={...t},s.change.markChanged()}readState(e,t){let s=this.states.get(t);return s===void 0&&(s={state:{...N.DefaultNavigationState},change:new B.ChangeSource},this.states.set(t,s)),s.change.attachWatcher(e.watcher),s.state}getState(e){return B.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 et{constructor(e,t,s){w(this,"rid");w(this,"overview");w(this,"navigationStates",new kn);w(this,"blockComputables",new Map);w(this,"blockFrontends",new Map);w(this,"activeConfigs");w(this,"refreshLoopResult");w(this,"abortController",new AbortController);w(this,"destroyed",!1);this.env=e,this.projectTree=s,this.overview=bn(s.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=En(s.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await Be(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await Dr.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,s,o=void 0,n=ae.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfigContainer(t),c=N.extractConfig(a);return await te(this.env.pl,this.rid,o,u=>u.addBlock({id:n,label:e,renderingMode:c.renderingMode},{args:JSON.stringify(c.initialArgs),uiState:JSON.stringify(c.initialUiState),blockPack:i},s)),await this.projectTree.refreshState(),n}async updateBlockPack(e,t,s=!1,o){const n=await this.env.bpPreparer.prepare(t),i=await this.env.bpPreparer.getBlockConfigContainer(t);await te(this.env.pl,this.rid,o,a=>a.migrateBlockPack(e,n,s?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await te(this.env.pl,this.rid,t,s=>s.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await te(this.env.pl,this.rid,t,s=>{const o=s.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(a=>{const c=n.blocks.find(u=>u.id===a);if(c===void 0)throw new Error(`Can't find block: ${a}`);return c})}]};s.updateStructure(i)}),await this.projectTree.refreshState()}async runBlock(e){await Be(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await Be(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,s){await te(this.env.pl,this.rid,s,o=>o.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,s){await te(this.env.pl,this.rid,s,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,s,o){await te(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(s))}),await this.projectTree.refreshState()}async setBlockSettings(e,t){await te(this.env.pl,this.rid,void 0,s=>{s.setBlockSettings(e,t)}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async s=>{const o=f.ensureResourceIdNotNull((await s.getField(f.field(this.rid,G(e,"blockPack")))).value),n=f.ensureResourceIdNotNull((await s.getField(f.field(o,f.Pl.HolderRefField))).value),i=await s.getResourceData(n,!1),a=JSON.parse(Buffer.from(k.notEmpty(i.data)).toString("utf-8"));await te(s,this.rid,t,c=>{c.setArgs([{blockId:e,args:JSON.stringify(a.config.initialArgs)}]),c.setUiState(e,void 0)}),await s.commit()}),await this.projectTree.refreshState()}getBlockComputables(e){const t=this.blockComputables.get(e);if(t===void 0){const s=Rn(this.projectTree.entry(),e,this.env),n={fullState:B.Computable.make(i=>({argsAndUiState:os(this.projectTree.entry(),e,i),outputs:s,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 s=Cn(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,s),s}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){await Be(e.pl,t,o=>{});const s=await ze.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:On},e.logger);return new et(e,t,s)}}function On(r){switch(r.type.name){case"BlockPackCustom":return r.fields.filter(e=>e.name!=="template");case"UserProject":return r.fields.filter(e=>!e.name.startsWith("__serviceTemplate"));case"Blob":return[];default:return r.fields}}const Lt={logger:new k.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:8*1024*1024*1024,nConcurrentDownloads:10},downloadBlobToURLDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function Dt(r){return{blobDownloadPath:q.join(r,"download"),downloadBlobToURLPath:q.join(r,"downloadToURL")}}const ns={...Lt,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function is(r){return{...Dt(r),frontendDownloadPath:q.join(r,"frontend")}}function $n(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var Pt={exports:{}};const Tn="2.0.0",as=256,Fn=Number.MAX_SAFE_INTEGER||9007199254740991,In=16,An=as-6,Ln=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var tt={MAX_LENGTH:as,MAX_SAFE_COMPONENT_LENGTH:In,MAX_SAFE_BUILD_LENGTH:An,MAX_SAFE_INTEGER:Fn,RELEASE_TYPES:Ln,SEMVER_SPEC_VERSION:Tn,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)?(...r)=>console.error("SEMVER",...r):()=>{};var rt=Dn;(function(r,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:s,MAX_LENGTH:o}=tt,n=rt;e=r.exports={};const i=e.re=[],a=e.safeRe=[],c=e.src=[],u=e.safeSrc=[],l=e.t={};let d=0;const g="[a-zA-Z0-9-]",h=[["\\s",1],["\\d",o],[g,s]],R=x=>{for(const[L,U]of h)x=x.split(`${L}*`).join(`${L}{0,${U}}`).split(`${L}+`).join(`${L}{1,${U}}`);return x},m=(x,L,U)=>{const F=R(L),M=d++;n(x,M,L),l[x]=M,c[M]=L,u[M]=F,i[M]=new RegExp(L,U?"g":void 0),a[M]=new RegExp(F,U?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${g}*`),m("MAINVERSION",`(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${c[l.NUMERICIDENTIFIER]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${c[l.NUMERICIDENTIFIERLOOSE]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${c[l.PRERELEASEIDENTIFIER]}(?:\\.${c[l.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${c[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[l.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${g}+`),m("BUILD",`(?:\\+(${c[l.BUILDIDENTIFIER]}(?:\\.${c[l.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${c[l.MAINVERSION]}${c[l.PRERELEASE]}?${c[l.BUILD]}?`),m("FULL",`^${c[l.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${c[l.MAINVERSIONLOOSE]}${c[l.PRERELEASELOOSE]}?${c[l.BUILD]}?`),m("LOOSE",`^${c[l.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${c[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${c[l.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:${c[l.PRERELEASE]})?${c[l.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:${c[l.PRERELEASELOOSE]})?${c[l.BUILD]}?)?)?`),m("XRANGE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),m("COERCE",`${c[l.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",c[l.COERCEPLAIN]+`(?:${c[l.PRERELEASE]})?(?:${c[l.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",c[l.COERCE],!0),m("COERCERTLFULL",c[l.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${c[l.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",m("TILDE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${c[l.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",m("CARET",`^${c[l.LONECARET]}${c[l.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${c[l.LONECARET]}${c[l.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${c[l.GTLT]}\\s*(${c[l.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]}|${c[l.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${c[l.XRANGEPLAIN]})\\s+-\\s+(${c[l.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${c[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[l.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Pt,Pt.exports);var Fe=Pt.exports;const Nn=Object.freeze({loose:!0}),Bn=Object.freeze({}),jn=r=>r?typeof r!="object"?Nn:r:Bn;var Nt=jn;const lr=/^[0-9]+$/,cs=(r,e)=>{const t=lr.test(r),s=lr.test(e);return t&&s&&(r=+r,e=+e),r===e?0:t&&!s?-1:s&&!t?1:r<e?-1:1},xn=(r,e)=>cs(e,r);var ls={compareIdentifiers:cs,rcompareIdentifiers:xn};const xe=rt,{MAX_LENGTH:ur,MAX_SAFE_INTEGER:Ve}=tt,{safeRe:dr,safeSrc:pr,t:Ue}=Fe,Vn=Nt,{compareIdentifiers:ge}=ls;let Un=class ne{constructor(e,t){if(t=Vn(t),e instanceof ne){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>ur)throw new TypeError(`version is longer than ${ur} characters`);xe("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const s=e.trim().match(t.loose?dr[Ue.LOOSE]:dr[Ue.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Ve||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Ve||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Ve||this.patch<0)throw new TypeError("Invalid patch version");s[4]?this.prerelease=s[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const n=+o;if(n>=0&&n<Ve)return n}return o}):this.prerelease=[],this.build=s[5]?s[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(xe("SemVer.compare",this.version,this.options,e),!(e instanceof ne)){if(typeof e=="string"&&e===this.version)return 0;e=new ne(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof ne||(e=new ne(e,this.options)),ge(this.major,e.major)||ge(this.minor,e.minor)||ge(this.patch,e.patch)}comparePre(e){if(e instanceof ne||(e=new ne(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 s=this.prerelease[t],o=e.prerelease[t];if(xe("prerelease compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return ge(s,o)}while(++t)}compareBuild(e){e instanceof ne||(e=new ne(e,this.options));let t=0;do{const s=this.build[t],o=e.build[t];if(xe("build compare",t,s,o),s===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(s===void 0)return-1;if(s===o)continue;return ge(s,o)}while(++t)}inc(e,t,s){if(e.startsWith("pre")){if(!t&&s===!1)throw new Error("invalid increment argument: identifier is empty");if(t){const o=new RegExp(`^${this.options.loose?pr[Ue.PRERELEASELOOSE]:pr[Ue.PRERELEASE]}$`),n=`-${t}`.match(o);if(!n||n[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,s);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,s);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,s),this.inc("pre",t,s);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,s),this.inc("pre",t,s);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;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(s)?1:0;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(".")&&s===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let n=[t,o];s===!1&&(n=[t]),ge(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 W=Un;const hr=W,Jn=(r,e,t=!1)=>{if(r instanceof hr)return r;try{return new hr(r,e)}catch(s){if(!t)return null;throw s}};var Se=Jn;const Gn=Se,Mn=(r,e)=>{const t=Gn(r,e);return t?t.version:null};var _n=Mn;const Kn=Se,Hn=(r,e)=>{const t=Kn(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var qn=Hn;const fr=W,Wn=(r,e,t,s,o)=>{typeof t=="string"&&(o=s,s=t,t=void 0);try{return new fr(r instanceof fr?r.version:r,t).inc(e,s,o).version}catch{return null}};var zn=Wn;const gr=Se,Xn=(r,e)=>{const t=gr(r,null,!0),s=gr(e,null,!0),o=t.compare(s);if(o===0)return null;const n=o>0,i=n?t:s,a=n?s:t,c=!!i.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}const l=c?"pre":"";return t.major!==s.major?l+"major":t.minor!==s.minor?l+"minor":t.patch!==s.patch?l+"patch":"prerelease"};var Yn=Xn;const Qn=W,Zn=(r,e)=>new Qn(r,e).major;var ei=Zn;const ti=W,ri=(r,e)=>new ti(r,e).minor;var si=ri;const oi=W,ni=(r,e)=>new oi(r,e).patch;var ii=ni;const ai=Se,ci=(r,e)=>{const t=ai(r,e);return t&&t.prerelease.length?t.prerelease:null};var li=ci;const mr=W,ui=(r,e,t)=>new mr(r,t).compare(new mr(e,t));var se=ui;const di=se,pi=(r,e,t)=>di(e,r,t);var hi=pi;const fi=se,gi=(r,e)=>fi(r,e,!0);var mi=gi;const vr=W,vi=(r,e,t)=>{const s=new vr(r,t),o=new vr(e,t);return s.compare(o)||s.compareBuild(o)};var Bt=vi;const yi=Bt,Si=(r,e)=>r.sort((t,s)=>yi(t,s,e));var bi=Si;const wi=Bt,Pi=(r,e)=>r.sort((t,s)=>wi(s,t,e));var Ci=Pi;const Ri=se,Ei=(r,e,t)=>Ri(r,e,t)>0;var st=Ei;const ki=se,Oi=(r,e,t)=>ki(r,e,t)<0;var jt=Oi;const $i=se,Ti=(r,e,t)=>$i(r,e,t)===0;var us=Ti;const Fi=se,Ii=(r,e,t)=>Fi(r,e,t)!==0;var ds=Ii;const Ai=se,Li=(r,e,t)=>Ai(r,e,t)>=0;var xt=Li;const Di=se,Ni=(r,e,t)=>Di(r,e,t)<=0;var Vt=Ni;const Bi=us,ji=ds,xi=st,Vi=xt,Ui=jt,Ji=Vt,Gi=(r,e,t,s)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return Bi(r,t,s);case"!=":return ji(r,t,s);case">":return xi(r,t,s);case">=":return Vi(r,t,s);case"<":return Ui(r,t,s);case"<=":return Ji(r,t,s);default:throw new TypeError(`Invalid operator: ${e}`)}};var ps=Gi;const Mi=W,_i=Se,{safeRe:Je,t:Ge}=Fe,Ki=(r,e)=>{if(r instanceof Mi)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(e.includePrerelease?Je[Ge.COERCEFULL]:Je[Ge.COERCE]);else{const c=e.includePrerelease?Je[Ge.COERCERTLFULL]:Je[Ge.COERCERTL];let u;for(;(u=c.exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||u.index+u[0].length!==t.index+t[0].length)&&(t=u),c.lastIndex=u.index+u[1].length+u[2].length;c.lastIndex=-1}if(t===null)return null;const s=t[2],o=t[3]||"0",n=t[4]||"0",i=e.includePrerelease&&t[5]?`-${t[5]}`:"",a=e.includePrerelease&&t[6]?`+${t[6]}`:"";return _i(`${s}.${o}.${n}${i}${a}`,e)};var Hi=Ki;class qi{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 Wi=qi,lt,yr;function oe(){if(yr)return lt;yr=1;const r=/\s+/g;class e{constructor(p,v){if(v=o(v),p instanceof e)return p.loose===!!v.loose&&p.includePrerelease===!!v.includePrerelease?p:new e(p.raw,v);if(p instanceof n)return this.raw=p.value,this.set=[[p]],this.formatted=void 0,this;if(this.options=v,this.loose=!!v.loose,this.includePrerelease=!!v.includePrerelease,this.raw=p.trim().replace(r," "),this.set=this.raw.split("||").map(S=>this.parseRange(S.trim())).filter(S=>S.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const S=this.set[0];if(this.set=this.set.filter(P=>!m(P[0])),this.set.length===0)this.set=[S];else if(this.set.length>1){for(const P of this.set)if(P.length===1&&x(P[0])){this.set=[P];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 v=this.set[p];for(let S=0;S<v.length;S++)S>0&&(this.formatted+=" "),this.formatted+=v[S].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const S=((this.options.includePrerelease&&h)|(this.options.loose&&R))+":"+p,P=s.get(S);if(P)return P;const b=this.options.loose,C=b?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];p=p.replace(C,Q(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(c[u.COMPARATORTRIM],l),i("comparator trim",p),p=p.replace(c[u.TILDETRIM],d),i("tilde trim",p),p=p.replace(c[u.CARETTRIM],g),i("caret trim",p);let T=p.split(" ").map(I=>U(I,this.options)).join(" ").split(/\s+/).map(I=>J(I,this.options));b&&(T=T.filter(I=>(i("loose invalid filter",I,this.options),!!I.match(c[u.COMPARATORLOOSE])))),i("range list",T);const E=new Map,A=T.map(I=>new n(I,this.options));for(const I of A){if(m(I))return[I];E.set(I.value,I)}E.size>1&&E.has("")&&E.delete("");const V=[...E.values()];return s.set(S,V),V}intersects(p,v){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(S=>L(S,v)&&p.set.some(P=>L(P,v)&&S.every(b=>P.every(C=>b.intersects(C,v)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new a(p,this.options)}catch{return!1}for(let v=0;v<this.set.length;v++)if(fe(this.set[v],p,this.options))return!0;return!1}}lt=e;const t=Wi,s=new t,o=Nt,n=ot(),i=rt,a=W,{safeRe:c,t:u,comparatorTrimReplace:l,tildeTrimReplace:d,caretTrimReplace:g}=Fe,{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:R}=tt,m=y=>y.value==="<0.0.0-0",x=y=>y.value==="",L=(y,p)=>{let v=!0;const S=y.slice();let P=S.pop();for(;v&&S.length;)v=S.every(b=>P.intersects(b,p)),P=S.pop();return v},U=(y,p)=>(i("comp",y,p),y=D(y,p),i("caret",y),y=M(y,p),i("tildes",y),y=ue(y,p),i("xrange",y),y=_(y,p),i("stars",y),y),F=y=>!y||y.toLowerCase()==="x"||y==="*",M=(y,p)=>y.trim().split(/\s+/).map(v=>he(v,p)).join(" "),he=(y,p)=>{const v=p.loose?c[u.TILDELOOSE]:c[u.TILDE];return y.replace(v,(S,P,b,C,T)=>{i("tilde",y,S,P,b,C,T);let E;return F(P)?E="":F(b)?E=`>=${P}.0.0 <${+P+1}.0.0-0`:F(C)?E=`>=${P}.${b}.0 <${P}.${+b+1}.0-0`:T?(i("replaceTilde pr",T),E=`>=${P}.${b}.${C}-${T} <${P}.${+b+1}.0-0`):E=`>=${P}.${b}.${C} <${P}.${+b+1}.0-0`,i("tilde return",E),E})},D=(y,p)=>y.trim().split(/\s+/).map(v=>Y(v,p)).join(" "),Y=(y,p)=>{i("caret",y,p);const v=p.loose?c[u.CARETLOOSE]:c[u.CARET],S=p.includePrerelease?"-0":"";return y.replace(v,(P,b,C,T,E)=>{i("caret",y,P,b,C,T,E);let A;return F(b)?A="":F(C)?A=`>=${b}.0.0${S} <${+b+1}.0.0-0`:F(T)?b==="0"?A=`>=${b}.${C}.0${S} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.0${S} <${+b+1}.0.0-0`:E?(i("replaceCaret pr",E),b==="0"?C==="0"?A=`>=${b}.${C}.${T}-${E} <${b}.${C}.${+T+1}-0`:A=`>=${b}.${C}.${T}-${E} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.${T}-${E} <${+b+1}.0.0-0`):(i("no pr"),b==="0"?C==="0"?A=`>=${b}.${C}.${T}${S} <${b}.${C}.${+T+1}-0`:A=`>=${b}.${C}.${T}${S} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.${T} <${+b+1}.0.0-0`),i("caret return",A),A})},ue=(y,p)=>(i("replaceXRanges",y,p),y.split(/\s+/).map(v=>z(v,p)).join(" ")),z=(y,p)=>{y=y.trim();const v=p.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return y.replace(v,(S,P,b,C,T,E)=>{i("xRange",y,S,P,b,C,T,E);const A=F(b),V=A||F(C),I=V||F(T),ce=I;return P==="="&&ce&&(P=""),E=p.includePrerelease?"-0":"",A?P===">"||P==="<"?S="<0.0.0-0":S="*":P&&ce?(V&&(C=0),T=0,P===">"?(P=">=",V?(b=+b+1,C=0,T=0):(C=+C+1,T=0)):P==="<="&&(P="<",V?b=+b+1:C=+C+1),P==="<"&&(E="-0"),S=`${P+b}.${C}.${T}${E}`):V?S=`>=${b}.0.0${E} <${+b+1}.0.0-0`:I&&(S=`>=${b}.${C}.0${E} <${b}.${+C+1}.0-0`),i("xRange return",S),S})},_=(y,p)=>(i("replaceStars",y,p),y.trim().replace(c[u.STAR],"")),J=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(c[p.includePrerelease?u.GTE0PRE:u.GTE0],"")),Q=y=>(p,v,S,P,b,C,T,E,A,V,I,ce)=>(F(S)?v="":F(P)?v=`>=${S}.0.0${y?"-0":""}`:F(b)?v=`>=${S}.${P}.0${y?"-0":""}`:C?v=`>=${v}`:v=`>=${v}${y?"-0":""}`,F(A)?E="":F(V)?E=`<${+A+1}.0.0-0`:F(I)?E=`<${A}.${+V+1}.0-0`:ce?E=`<=${A}.${V}.${I}-${ce}`:y?E=`<${A}.${V}.${+I+1}-0`:E=`<=${E}`,`${v} ${E}`.trim()),fe=(y,p,v)=>{for(let S=0;S<y.length;S++)if(!y[S].test(p))return!1;if(p.prerelease.length&&!v.includePrerelease){for(let S=0;S<y.length;S++)if(i(y[S].semver),y[S].semver!==n.ANY&&y[S].semver.prerelease.length>0){const P=y[S].semver;if(P.major===p.major&&P.minor===p.minor&&P.patch===p.patch)return!0}return!1}return!0};return lt}var ut,Sr;function ot(){if(Sr)return ut;Sr=1;const r=Symbol("SemVer ANY");class e{static get ANY(){return r}constructor(l,d){if(d=t(d),l instanceof e){if(l.loose===!!d.loose)return l;l=l.value}l=l.trim().split(/\s+/).join(" "),i("comparator",l,d),this.options=d,this.loose=!!d.loose,this.parse(l),this.semver===r?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}parse(l){const d=this.options.loose?s[o.COMPARATORLOOSE]:s[o.COMPARATOR],g=l.match(d);if(!g)throw new TypeError(`Invalid comparator: ${l}`);this.operator=g[1]!==void 0?g[1]:"",this.operator==="="&&(this.operator=""),g[2]?this.semver=new a(g[2],this.options.loose):this.semver=r}toString(){return this.value}test(l){if(i("Comparator.test",l,this.options.loose),this.semver===r||l===r)return!0;if(typeof l=="string")try{l=new a(l,this.options)}catch{return!1}return n(l,this.operator,this.semver,this.options)}intersects(l,d){if(!(l instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new c(l.value,d).test(this.value):l.operator===""?l.value===""?!0:new c(this.value,d).test(l.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||l.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||l.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&l.operator.startsWith(">")||this.operator.startsWith("<")&&l.operator.startsWith("<")||this.semver.version===l.semver.version&&this.operator.includes("=")&&l.operator.includes("=")||n(this.semver,"<",l.semver,d)&&this.operator.startsWith(">")&&l.operator.startsWith("<")||n(this.semver,">",l.semver,d)&&this.operator.startsWith("<")&&l.operator.startsWith(">")))}}ut=e;const t=Nt,{safeRe:s,t:o}=Fe,n=ps,i=rt,a=W,c=oe();return ut}const zi=oe(),Xi=(r,e,t)=>{try{e=new zi(e,t)}catch{return!1}return e.test(r)};var nt=Xi;const Yi=oe(),Qi=(r,e)=>new Yi(r,e).set.map(t=>t.map(s=>s.value).join(" ").trim().split(" "));var Zi=Qi;const ea=W,ta=oe(),ra=(r,e,t)=>{let s=null,o=null,n=null;try{n=new ta(e,t)}catch{return null}return r.forEach(i=>{n.test(i)&&(!s||o.compare(i)===-1)&&(s=i,o=new ea(s,t))}),s};var sa=ra;const oa=W,na=oe(),ia=(r,e,t)=>{let s=null,o=null,n=null;try{n=new na(e,t)}catch{return null}return r.forEach(i=>{n.test(i)&&(!s||o.compare(i)===1)&&(s=i,o=new oa(s,t))}),s};var aa=ia;const dt=W,ca=oe(),br=st,la=(r,e)=>{r=new ca(r,e);let t=new dt("0.0.0");if(r.test(t)||(t=new dt("0.0.0-0"),r.test(t)))return t;t=null;for(let s=0;s<r.set.length;++s){const o=r.set[s];let n=null;o.forEach(i=>{const a=new dt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!n||br(a,n))&&(n=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||br(t,n))&&(t=n)}return t&&r.test(t)?t:null};var ua=la;const da=oe(),pa=(r,e)=>{try{return new da(r,e).range||"*"}catch{return null}};var ha=pa;const fa=W,hs=ot(),{ANY:ga}=hs,ma=oe(),va=nt,wr=st,Pr=jt,ya=Vt,Sa=xt,ba=(r,e,t,s)=>{r=new fa(r,s),e=new ma(e,s);let o,n,i,a,c;switch(t){case">":o=wr,n=ya,i=Pr,a=">",c=">=";break;case"<":o=Pr,n=Sa,i=wr,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(va(r,e,s))return!1;for(let u=0;u<e.set.length;++u){const l=e.set[u];let d=null,g=null;if(l.forEach(h=>{h.semver===ga&&(h=new hs(">=0.0.0")),d=d||h,g=g||h,o(h.semver,d.semver,s)?d=h:i(h.semver,g.semver,s)&&(g=h)}),d.operator===a||d.operator===c||(!g.operator||g.operator===a)&&n(r,g.semver))return!1;if(g.operator===c&&i(r,g.semver))return!1}return!0};var Ut=ba;const wa=Ut,Pa=(r,e,t)=>wa(r,e,">",t);var Ca=Pa;const Ra=Ut,Ea=(r,e,t)=>Ra(r,e,"<",t);var ka=Ea;const Cr=oe(),Oa=(r,e,t)=>(r=new Cr(r,t),e=new Cr(e,t),r.intersects(e,t));var $a=Oa;const Ta=nt,Fa=se;var Ia=(r,e,t)=>{const s=[];let o=null,n=null;const i=r.sort((l,d)=>Fa(l,d,t));for(const l of i)Ta(l,e,t)?(n=l,o||(o=l)):(n&&s.push([o,n]),n=null,o=null);o&&s.push([o,null]);const a=[];for(const[l,d]of s)l===d?a.push(l):!d&&l===i[0]?a.push("*"):d?l===i[0]?a.push(`<=${d}`):a.push(`${l} - ${d}`):a.push(`>=${l}`);const c=a.join(" || "),u=typeof e.raw=="string"?e.raw:String(e);return c.length<u.length?c:e};const Rr=oe(),Jt=ot(),{ANY:pt}=Jt,we=nt,Gt=se,Aa=(r,e,t={})=>{if(r===e)return!0;r=new Rr(r,t),e=new Rr(e,t);let s=!1;e:for(const o of r.set){for(const n of e.set){const i=Da(o,n,t);if(s=s||i!==null,i)continue e}if(s)return!1}return!0},La=[new Jt(">=0.0.0-0")],Er=[new Jt(">=0.0.0")],Da=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===pt){if(e.length===1&&e[0].semver===pt)return!0;t.includePrerelease?r=La:r=Er}if(e.length===1&&e[0].semver===pt){if(t.includePrerelease)return!0;e=Er}const s=new Set;let o,n;for(const h of r)h.operator===">"||h.operator===">="?o=kr(o,h,t):h.operator==="<"||h.operator==="<="?n=Or(n,h,t):s.add(h.semver);if(s.size>1)return null;let i;if(o&&n){if(i=Gt(o.semver,n.semver,t),i>0)return null;if(i===0&&(o.operator!==">="||n.operator!=="<="))return null}for(const h of s){if(o&&!we(h,String(o),t)||n&&!we(h,String(n),t))return null;for(const R of e)if(!we(h,String(R),t))return!1;return!0}let a,c,u,l,d=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,g=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(l=l||h.operator===">"||h.operator===">=",u=u||h.operator==="<"||h.operator==="<=",o){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator===">"||h.operator===">="){if(a=kr(o,h,t),a===h&&a!==o)return!1}else if(o.operator===">="&&!we(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(c=Or(n,h,t),c===h&&c!==n)return!1}else if(n.operator==="<="&&!we(n.semver,String(h),t))return!1}if(!h.operator&&(n||o)&&i!==0)return!1}return!(o&&u&&!n&&i!==0||n&&l&&!o&&i!==0||g||d)},kr=(r,e,t)=>{if(!r)return e;const s=Gt(r.semver,e.semver,t);return s>0?r:s<0||e.operator===">"&&r.operator===">="?e:r},Or=(r,e,t)=>{if(!r)return e;const s=Gt(r.semver,e.semver,t);return s<0?r:s>0||e.operator==="<"&&r.operator==="<="?e:r};var Na=Aa;const ht=Fe,$r=tt,Ba=W,Tr=ls,ja=Se,xa=_n,Va=qn,Ua=zn,Ja=Yn,Ga=ei,Ma=si,_a=ii,Ka=li,Ha=se,qa=hi,Wa=mi,za=Bt,Xa=bi,Ya=Ci,Qa=st,Za=jt,ec=us,tc=ds,rc=xt,sc=Vt,oc=ps,nc=Hi,ic=ot(),ac=oe(),cc=nt,lc=Zi,uc=sa,dc=aa,pc=ua,hc=ha,fc=Ut,gc=Ca,mc=ka,vc=$a,yc=Ia,Sc=Na;var bc={parse:ja,valid:xa,clean:Va,inc:Ua,diff:Ja,major:Ga,minor:Ma,patch:_a,prerelease:Ka,compare:Ha,rcompare:qa,compareLoose:Wa,compareBuild:za,sort:Xa,rsort:Ya,gt:Qa,lt:Za,eq:ec,neq:tc,gte:rc,lte:sc,cmp:oc,coerce:nc,Comparator:ic,Range:ac,satisfies:cc,toComparators:lc,maxSatisfying:uc,minSatisfying:dc,minVersion:pc,validRange:hc,outside:fc,gtr:gc,ltr:mc,intersects:vc,simplifyRange:yc,subset:Sc,SemVer:Ba,re:ht.re,src:ht.src,tokens:ht.t,SEMVER_SPEC_VERSION:$r.SEMVER_SPEC_VERSION,RELEASE_TYPES:$r.RELEASE_TYPES,compareIdentifiers:Tr.compareIdentifiers,rcompareIdentifiers:Tr.rcompareIdentifiers};const wc=$n(bc),Pc={minDelay:1500},Cc="__no_updates__";class Rc extends B.PollComputablePool{constructor(t,s,o={}){super({...o,...Pc},s);w(this,"http");w(this,"preferredUpdateChannel");this.registryProvider=t,this.http=o.http,this.preferredUpdateChannel=o.preferredUpdateChannel}getKey(t){switch(t.currentSpec.type){case"dev-v1":return`dev_1_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"dev-v2":return`dev_2_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"from-registry-v2":return`from_registry_v2_${re(t)}`;default:return Cc}}async readValue(t){var s,o;try{const n=t.currentSpec;switch(n.type){case"dev-v1":try{const i=await kt(n.folder);return i===n.mtime?{suggestions:[]}:{mainSuggestion:{...n,mtime:i},suggestions:[]}}catch(i){return this.logger.warn(i),{suggestions:[]}}case"dev-v2":try{const i=await H.tryLoadPackDescription(n.folder,this.logger);if(i===void 0)return{suggestions:[]};const a=await Xe(i);return a===n.mtime?{suggestions:[]}:{mainSuggestion:{...n,mtime:a},suggestions:[]}}catch(i){return this.logger.warn(i),{suggestions:[]}}case"from-registry-v2":try{const{versionLock:i,skipVersion:a}=t.settings;if(i==="patch")return{suggestions:[]};const c=this.registryProvider.getRegistry(n.registryUrl);let u=this.preferredUpdateChannel;if(u===void 0)if(n.channel===void 0)if(await c.getLatestOverview(n.id,K.StableChannel))u=K.StableChannel;else{if(await c.getLatestOverview(n.id,K.AnyChannel)===void 0)return this.logger.error(`No "any" channel record for ${K.blockPackIdToString(n.id)}`),{suggestions:[]};u=K.AnyChannel}else u=n.channel;const l=await c.getUpdateSuggestions(n.id,u);if(l===void 0||l.length===0)return{suggestions:[]};l.reverse();let d;switch(i){case void 0:d=l[0].update;break;case"major":d=(s=l.find(R=>R.type!=="major"))==null?void 0:s.update;break;case"minor":d=(o=l.find(R=>R.type==="patch"))==null?void 0:o.update;break}const g=l.map(({type:R,update:m})=>({type:R,update:{...n,id:{...n.id,version:m}}}));if(d===void 0)return{suggestions:g};if(a!==void 0&&wc.lte(d,a))return{suggestions:g};const h={...n,id:{...n.id,version:d}};return(async()=>{try{await c.getComponents(h.id)}catch(R){this.logger.warn(R)}})(),{suggestions:g,mainSuggestion:h}}catch(i){return this.logger.warn(i),{suggestions:[]}}default:return{suggestions:[]}}}catch(n){return this.logger.warn(n),{suggestions:[]}}}resultsEqual(t,s){return re(t)===re(s)}}class Fr{constructor(){w(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");t.refCount===0&&(this.resources.delete(e),(o=>o!=null&&typeof o[Symbol.dispose]=="function")(t.resource)&&t.resource[Symbol.dispose]())}acquire(e){const t=this.calculateParamsKey(e);let s=this.resources.get(t);s===void 0&&(s={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,s)),s.refCount++;let o=!1;return{resource:s.resource,key:t,unref:()=>{o||(s.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}}let Pe;function le(){return Pe||(Pe={logPFrameRequests:process.env.MI_LOG_PFRAMES!==void 0,usePFrameRs:process.env.MI_USE_PFRAMES_RS!==void 0},process.env.MI_LOG_TREE_STAT&&(Pe.logTreeStats=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request"),Pe)}function Oe(r){return String(r.id)}const Ec=["Int","Long","Float","Double","String","Bytes"];function me(r){const e=[],t=[];for(const s of r)s.type==="bySingleColumn"?(e.push(s),t.push({...s,type:"bySingleColumnV2"})):t.push(s);if(e.length>0){const s=JSON.stringify(e);console.warn(`type overriten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${s}`)}return t}function ft(r){return le().usePFrameRs?r.rustCallback():r.rustCallback().catch(e=>{var t;if(((t=r.signal)==null?void 0:t.aborted)===!1)return e instanceof Error&&r.logger.warn(`PFrames Rust failed, error: ${e.message}`),r.cppCallback();throw e})}const Ce=(r,e)=>typeof e=="bigint"?e.toString():e;class kc{constructor(e,t,s,o){w(this,"rustPFrame");w(this,"blobIdToResource",new Map);w(this,"blobHandleComputables",new Map);w(this,"createDataPFrame");w(this,"preloadBlob",async e=>{const t=e.map(s=>this.getOrCreateComputableForBlob(s));for(const s of t)await s.awaitStableFullValue()});w(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});w(this,"resolveBlobContent",async e=>{try{const t=this.getOrCreateComputableForBlob(e),s=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(s)}catch(t){const s=JSON.stringify(t);throw console.log(`resolveBlobContent catched error: ${s}`),t}});this.blobDriver=e,this.logger=t,this.blobContentCache=s;const n=(a,c)=>{switch(a){default:case"info":return this.logger.info(c);case"warn":return this.logger.warn(c);case"error":return this.logger.error(c)}};for(const a of o)for(const c of Ro(a.data))this.blobIdToResource.set(Oe(c),c);const i=[...new Map(o.map(a=>({...a,data:Eo(a.data,Oe)})).map(a=>[re(a),a])).values()];this.rustPFrame=(()=>{try{const a=new Cs.PFrame(le().logPFrameRequests?n:void 0);a.setDataSource(this);for(const c of i)a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data);return a}catch(a){throw new Error(`Rust PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}})(),this.createDataPFrame=()=>{try{const a=le().logPFrameRequests?new qt.PFrame(n):new qt.PFrame;a.setDataSource(this);for(const c of i)try{a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data)}catch(u){throw new Error(`Adding column ${c.id} to PFrame failed: ${u}; Spec: ${JSON.stringify(c.spec)}, DataInfo: ${JSON.stringify(c.data)}.`)}return a}catch(a){throw new Error(`Data PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}}}get disposableDataPFrame(){const e=this.createDataPFrame();return{dataPFrame:e,[Symbol.dispose]:()=>{e.dispose()}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const s=this.blobIdToResource.get(e);if(s===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(s).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.rustPFrame.dispose()}}class Oc{constructor(e){this.table=e}[Symbol.dispose](){this.table.then(e=>e.dispose())}}class $c{constructor(e,t){w(this,"pFrames");w(this,"pTables");w(this,"blobContentCache");w(this,"concurrencyLimiter");this.blobDriver=e,this.logger=t;const s=new Ar.LRUCache({maxSize:1e9,fetchMethod:async n=>await Nr.readFile(n),sizeCalculation:n=>n.length});this.blobContentCache=s;const o=new k.ConcurrencyLimitingExecutor(1);this.concurrencyLimiter=o,this.pFrames=new class extends Fr{constructor(n,i){super(),this.blobDriver=n,this.logger=i}createNewResource(n){return le().logPFrameRequests&&t.info(`PFrame creation (pFrameHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,Ce)}`),new kc(this.blobDriver,this.logger,s,n)}calculateParamsKey(n){return Fc(n)}}(this.blobDriver,this.logger),this.pTables=new class extends Fr{constructor(n){super(),this.pFrames=n}createNewResource(n){const i=n.pFrameHandle;le().logPFrameRequests&&t.info(`PTable creation (pTableHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,Ce)}`);const a=ft({cppCallback:()=>o.run(async()=>{var u=[];try{const c=Ie(u,this.pFrames.getByKey(i).disposableDataPFrame);return await c.dataPFrame.createTable({src:de(n.def.src),filters:me(n.def.filters)},n.signal)}catch(l){var d=l,g=!0}finally{Ae(u,d,g)}}).then(async c=>{if(n.def.sorting.length===0)return c;try{return await o.run(async()=>await c.sort(n.def.sorting,n.signal))}finally{c.dispose()}}),rustCallback:()=>this.pFrames.getByKey(i).rustPFrame.createTable({src:de(n.def.src),filters:me(n.def.filters)},n.signal).then(async c=>{if(n.def.sorting.length===0)return c;try{return await c.sort(n.def.sorting,n.signal)}finally{c.dispose()}}),logger:t,filters:n.def.filters,signal:n.signal});return new Oc(a)}calculateParamsKey(n){return Tc(n)}}(this.pFrames)}createPFrame(e,t){const s=e.filter(n=>Ec.find(i=>i===n.spec.valueType)).map(n=>N.mapPObjectData(n,i=>ze.isPlTreeNodeAccessor(i)?Io(i):Ao(n.spec,i))),o=this.pFrames.acquire(s);return t.addOnDestroy(o.unref),o.key}createPTable(e,t,s){const o=this.createPFrame(N.extractAllColumns(e.src),t),n=N.mapPTableDef(e,a=>a.id),i=this.pTables.acquire({def:n,pFrameHandle:o,signal:s});return le().logPFrameRequests&&this.logger.info(`Create PTable call (pFrameHandle = ${o}; pTableHandle = ${JSON.stringify(i)}): ${JSON.stringify(N.mapPTableDef(e,a=>a.spec),Ce)}`),t.addOnDestroy(i.unref),i.key}async findColumns(e,t){const s={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:[...new Map(t.compatibleWith.map(n=>[re(n),n])).values()],qualifications:[]}]:[]};return{hits:(await this.pFrames.getByKey(e).rustPFrame.findColumns(s)).hits.filter(n=>n.mappingVariants.length===0||n.mappingVariants.some(i=>i.qualifications.forHit.length===0&&i.qualifications.forQueries.every(a=>a.length===0))).map(n=>n.hit)}}async getColumnSpec(e,t){return await this.pFrames.getByKey(e).rustPFrame.getColumnSpec(t)}async listColumns(e){return await this.pFrames.getByKey(e).rustPFrame.listColumns()}async calculateTableData(e,t,s){return le().logPFrameRequests&&this.logger.info(`Call calculateTableData, handle = ${e}, request = ${JSON.stringify(t,Ce)}`),await ft({cppCallback:async()=>await this.concurrencyLimiter.run(async()=>{var n=[];try{const o=Ie(n,this.pFrames.getByKey(e).disposableDataPFrame);return await o.dataPFrame.createTable({src:de(t.src),filters:me(t.filters)},s)}catch(i){var a=i,c=!0}finally{Ae(n,a,c)}}).then(async o=>{if(t.sorting.length===0)return o;try{return await this.concurrencyLimiter.run(async()=>await o.sort(t.sorting,s))}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await this.concurrencyLimiter.run(async()=>await o.getData([...n.keys()]));return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}}),rustCallback:async()=>await this.pFrames.getByKey(e).rustPFrame.createTable({src:de(t.src),filters:me(t.filters)},s).then(async o=>{if(t.sorting.length===0)return o;try{return await o.sort(t.sorting,s)}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await o.getData([...n.keys()]);return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}}),logger:this.logger,filters:t.filters,signal:s})}async getUniqueValues(e,t,s){return le().logPFrameRequests&&this.logger.info(`Call getUniqueValues, handle = ${e}, request = ${JSON.stringify(t,Ce)}`),await ft({cppCallback:async()=>await this.concurrencyLimiter.run(async()=>{var n=[];try{const o=Ie(n,this.pFrames.getByKey(e).disposableDataPFrame);return await o.dataPFrame.getUniqueValues({...t,filters:me(t.filters)},s)}catch(i){var a=i,c=!0}finally{Ae(n,a,c)}}),rustCallback:async()=>await this.pFrames.getByKey(e).rustPFrame.getUniqueValues({...t,filters:me(t.filters)},s),logger:this.logger,filters:t.filters,signal:s})}async getShape(e){return(await this.pTables.getByKey(e).table).getShape()}async getSpec(e){return(await this.pTables.getByKey(e).table).getSpec()}async getData(e,t,s){const o=await this.pTables.getByKey(e).table;return await this.concurrencyLimiter.run(async()=>await o.getData(t,s))}}function de(r){switch(r.type){case"column":return{type:"column",columnId:r.column,qualifications:[]};case"inner":case"full":return{type:r.type,entries:r.entries.map(e=>de(e))};case"outer":return{type:"outer",primary:de(r.primary),secondary:r.secondary.map(e=>de(e))};default:k.assertNever(r)}}function Tc(r){const e=ae.createHash("sha256");return e.update(re(r)),e.digest().toString("hex")}function Fc(r){const e=[...r].map(s=>N.mapPObjectData(s,o=>{let n;const i=o.type;switch(i){case"Json":n={type:o.type,keyLength:o.keyLength,payload:Object.entries(o.data).map(([a,c])=>({key:a,value:c}))};break;case"JsonPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:Oe(c)}))};break;case"BinaryPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:[Oe(c.index),Oe(c.values)]}))};break;default:throw Error(`unsupported resource type: ${JSON.stringify(i)}`)}return n.payload.sort((a,c)=>a.key.localeCompare(c.key)),n}));e.sort((s,o)=>s.id.localeCompare(o.id));const t=ae.createHash("sha256");return t.update(re(e)),t.digest().toString("hex")}async function fs(r,e,t){const s={...Lt,...Dt(e),...t},o=new k.HmacSha256Signer(s.localSecret),n=ee.createDownloadClient(s.logger,r,s.localProjections),i=ee.createLogsClient(r,s.logger),a=ee.createUploadBlobClient(r,s.logger),c=ee.createUploadProgressClient(r,s.logger),u=new ee.DownloadDriver(s.logger,n,i,s.blobDownloadPath,o,s.blobDriverOps),l=new ee.DownloadBlobToURLDriver(s.logger,o,n,s.downloadBlobToURLPath,s.downloadBlobToURLDriverOps),d=new ee.UploadDriver(s.logger,o,a,c,s.uploadDriverOps),g=new ee.LogsStreamDriver(s.logger,i,s.logStreamDriverOps),h=new ee.LogsDriver(s.logger,g,u),R=await ee.LsDriver.init(s.logger,r,o,s.localProjections,s.openFileDialogCallback,s.virtualLocalStoragesOverride),m=new $c(u,s.logger);return{blobDriver:u,blobToURLDriver:l,logDriver:h,lsDriver:R,signer:o,uploadDriver:d,pFrameDriver:m}}class Mt{constructor(e,t,s,o,n,i,a,c){w(this,"pl");w(this,"projectList");w(this,"openedProjectsByRid",new Map);this.env=e,this.driverKit=t,this.signer=s,this.projectListResourceId=o,this.openedProjectsList=n,this.projectListTree=i,this.blockRegistryProvider=a,this.projectList=c,this.pl=this.env.pl}get internalDriverKit(){return this.env.driverKit}async createProject(e,t=ae.randomUUID()){const s=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await Co(o,e);return o.createField(f.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await f.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),s}async setProjectMeta(e,t,s){await te(this.pl,e,s,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 s=(await t.getField(f.field(this.projectListResourceId,e))).value;if(f.isNullResourceId(s))throw new Error("Unexpected project list structure.");return s})}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 et.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 k.HmacSha256Signer.generateSecret()}static async init(e,t,s){const o={...ns,...is(t),...s};o.defaultTreeOptions.logStat=le().logTreeStats;const n=await e.withWriteTx("MLInitialization",async m=>{const x=f.field(m.clientRoot,Ws);m.createField(x,"Dynamic");const L=await m.getField(x);if(f.isNullResourceId(L.value)){const U=m.createEphemeral(Ur);return m.lock(U),m.setField(x,U),await m.commit(),await U.globalId}else return L.value}),i=o.logger,a=await fs(e,t,o),c=new We.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new jr(c),l=new mo(u,a.signer,c),d=new ee.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),g={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:o,bpPreparer:l,frontendDownloadDriver:d,driverKit:a,blockUpdateWatcher:new Rc(u,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await _e.getQuickJS()},h=new B.WatchableValue([]),R=await Xs(e,n,h,g);return new Mt(g,a,a.signer,n,h,R.tree,u,R.computable)}}const Ic=["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 Ac(r,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},s=[];Ic.forEach(c=>{Rs.channel(c).subscribe(l=>{var g;const d=new Date().toISOString();(g=l==null?void 0:l.response)!=null&&g.headers&&(l.response.headers=l.response.headers.map(h=>h.toString())),s.push(JSON.stringify({timestamp:d,event:c,data:l}))})});const o={plPings:[],blockRegistryOverviewChecks:[],blockGARegistryOverviewChecks:[],blockRegistryUiChecks:[],blockGARegistryUiChecks:[],autoUpdateCdnChecks:[]},n=f.plAddressToConfig(r,{defaultRequestTimeout:t.pingTimeoutMs});o.plPings=await ve(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const u=await new f.UnauthenticatedPlClient(n).ping();return JSON.stringify(u).slice(0,t.bodyLimit)+"..."});const a=new f.UnauthenticatedPlClient(n).ll.httpDispatcher;return o.blockRegistryOverviewChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,a)),o.blockGARegistryOverviewChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,a)),o.blockRegistryUiChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockUiPath,t.blockRegistryUrl),t,a)),o.blockGARegistryUiChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockUiPath,t.blockGARegistryUrl),t,a)),o.autoUpdateCdnChecks=await ve(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await Re(t.autoUpdateCdnUrl,t,a)),Lc(o,r,t,s)}async function ve(r,e,t){const s=Ct(),o=[];for(;Ir(s)<r;){const n=Ct();let i;try{i={ok:!0,value:await t()}}catch(u){i={ok:!1,error:u}}const a=Ir(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await Dr.setTimeout(c)}return o}async function Re(r,e,t){const{body:s,statusCode:o}=await We.request(r,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await s.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function Lc(r,e,t,s){const o=r.plPings.filter(a=>a.response.ok),n=r.plPings.filter(a=>!a.response.ok),i=[...new Set(o.map(a=>JSON.stringify(a.response.value)))];return`
1
+ "use strict";var ms=Object.defineProperty;var _t=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Kt=s=>{throw TypeError(s)};var vs=(s,e,t)=>e in s?ms(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var S=(s,e,t)=>vs(s,typeof e!="symbol"?e+"":e,t);var Ae=(s,e,t)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&Kt("Object expected");var r;t&&(r=e[_t("asyncDispose")]),r===void 0&&(r=e[_t("dispose")]),typeof r!="function"&&Kt("Object not disposable"),s.push([t,r,e])}else t&&s.push([t]);return e},Le=(s,e,t)=>{var r=typeof SuppressedError=="function"?SuppressedError:function(i,a,c,u){return u=Error(c),u.name="SuppressedError",u.error=i,u.suppressed=a,u},o=i=>e=t?new r(i,e,"An error was suppressed during disposal"):(t=!0,i),n=i=>{for(;i=s.pop();)try{var a=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(a).then(n,c=>(o(c),n()))}catch(c){o(c)}if(t)throw e};return n()};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const N=require("@platforma-sdk/model"),K=require("@milaboratories/pl-model-middle-layer"),Ht=require("@milaboratories/pl-deployments"),We=require("undici"),H=require("@platforma-sdk/block-tools"),Z=require("node:fs"),q=require("node:path"),ys=require("yaml"),k=require("@milaboratories/ts-helpers"),ws=require("node:fs/promises"),Ss=require("@milaboratories/resolve-helper"),h=require("@milaboratories/pl-client"),Ct=require("@milaboratories/pl-tree"),B=require("@milaboratories/computable"),se=require("node:crypto"),j=require("@milaboratories/pl-model-backend"),Ar=require("lru-cache"),Lr=require("denque"),bs=require("@platforma-sdk/workflow-tengo"),re=require("canonicalize"),Ps=require("@milaboratories/pl-errors"),Cs=require("node:assert"),$e=require("quickjs-emscripten"),Dr=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),qt=require("@milaboratories/pframes-node"),Rs=require("@milaboratories/pframes-rs-node"),Es=require("node:diagnostics_channel");function ks(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 Nr=ks(ws);async function Wt(s){try{return await Nr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const Os=[H.RegistryV1.PlPackageYamlConfigFile],$s=[H.RegistryV1.PlPackageJsonConfigFile],Rt=["backend","dist","tengo","tpl","main.plj.gz"],Et=["config","dist","config.json"],Br=["frontend","dist"],zt="block-model/dist/config.json",Ts="block-ui/package.json",Is=[Rt,Et,Os,$s,Br];async function Fs(s){return await Wt(q.join(s,...Et))!==void 0||await Wt(q.join(s,...Rt))!==void 0}function nt(s,e){const t=Ss.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Xt(s,e){if(q.isAbsolute(s)||(s=q.resolve(s)),await Fs(s))return{workflow:q.join(s,...Rt),config:q.join(s,...Et),ui:q.join(s,...Br)};{const t=nt(s,zt),r=nt(s,zt),o=nt(s,Ts);return{workflow:t,config:r,ui:q.resolve(o,"..","dist")}}}async function As(s){try{return await Z.promises.readFile(s,"utf8")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function Ls(s){try{return await Z.promises.stat(s,{bigint:!0})}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function kt(s){let e=0n;for(const t of Is){const r=q.join(s,...t),o=await Ls(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function ze(s){const e=await Z.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await Z.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class Ds{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 We.request(`${r.url}/${H.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const a of i){const{organization:c,package:u,latestMeta:l,latestVersion:d}=a,g={organization:c,name:u,version:d},f={id:g,meta:{title:l.title??"No title",description:l.description??"No Description",organization:{name:c,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:g,registryUrl:r.url}};t.push({registryId:e.id,id:g,latestByChannel:{[K.AnyChannel]:f,[K.StableChannel]:f},allVersions:a.allVersions.map(R=>({version:R,channels:[]}))})}return t}case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(o=>({...o,registryId:e.id}));case"local-dev":for(const o of await Z.promises.readdir(r.path,{withFileTypes:!0})){if(!o.isDirectory())continue;const n=q.join(r.path,o.name),i=await As(q.join(n,H.RegistryV1.PlPackageYamlConfigFile));if(i!==void 0){const a=H.RegistryV1.PlPackageConfigData.parse(ys.parse(i)),c=await kt(n),u={organization:a.organization,name:a.package,version:"DEV"},l={id:u,meta:{title:a.meta.title??"No title",description:a.meta.description??"No Description",organization:{name:a.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:n,mtime:c}};t.push({registryId:e.id,id:u,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}else{let a=n,c=await H.tryLoadPackDescription(a);if(c===void 0){for(const u of["block","meta"])if(a=q.join(n,u),c=await H.tryLoadPackDescription(a),c!==void 0)break}if(c!==void 0){const u=await ze(c),l={id:c.id,meta:await H.BlockPackMetaEmbedAbsoluteBytes.parseAsync(c.meta),spec:{type:"dev-v2",folder:a,mtime:u}};t.push({registryId:e.id,id:c.id,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}}}return t;default:return k.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(a=>a.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 jr{constructor(e){S(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new H.RegistryV2Reader(H.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const Ns={type:"remote-v2",url:"https://blocks.pl-open.science/"},Bs={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},js={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},xs={groups:[{id:"default",label:"Default",blocks:[]}]},Vs={stagingRefreshTimestamp:0,blocksInLimbo:[]},Us={label:"New Project"},Gs={name:"UserProject",version:"2"},xr="SchemaVersion",Vr="1",Ot="ProjectCreated",Te="ProjectLastModified",Ie="ProjectMeta",pe="ProjectStructure",Ke="BlockRenderingState",Js="BlockFrontendState/",Ms=/^BlockFrontendState\/(?<blockid>.*)$/;function ft(s){return`${Js}${s}`}const _s="BlockArgsAuthor/";function gt(s){return`${_s}${s}`}const mt="ProjectStructureAuthor";function Ks(s){const e=s.match(Ms);if(e!==null)return e.groups.blockid}const Hs="__serviceTemplate_";function vt(s){return`${Hs}${s}`}function J(s,e){return`${s}-${e}`}const qs=/^(?<blockId>.*)-(?<fieldName>blockPack|blockSettings|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function Ws(s){const e=s.match(qs);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const zs="projects",Ur={name:"Projects",version:"1"},Xs=s=>h.resourceTypesEqual(s.type,Ur)?s.fields:[];async function Ys(s,e,t,r){const o=await Ct.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Xs},r.logger);return{computable:B.Computable.make(i=>{const a=i.accessor(o.entry()).node(),c=t.getValue(i);if(a===void 0)return;const u=[];for(const l of a.listDynamicFields()){const d=a.traverse(l);if(d===void 0)continue;const g=k.notEmpty(d.getKeyValueAsJson(Ie)),f=k.notEmpty(d.getKeyValueAsJson(Ot)),R=k.notEmpty(d.getKeyValueAsJson(Te));u.push({id:l,rid:d.id,created:new Date(f),lastModified:new Date(R),opened:c.indexOf(d.id)>=0,meta:g})}return u.sort(l=>-l.lastModified.valueOf()),u}).withStableType(),tree:o}}const Qs={name:"EphRenderTemplate",version:"1"},Zs={name:"RenderTemplate",version:"1"};function $t(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(Qs):s.createStruct(Zs),i=h.field(n,"template"),a=h.field(n,"inputs");return s.createField(i,"Input",e),s.createField(a,"Input",h.Pl.createPlMap(s,r,t)),s.lockInputs(n),h.Pl.futureRecord(s,n,o,"Output","outputs/")}const eo={name:"BContextEnd",version:"1"},to={name:"BContext",version:"1"},ro="id",so="parent/",oo=["context","result"];function Yt(s,e,t){return $t(s,e,!0,t,oo)}function no(s){const e=s.createEphemeral(eo);return s.lock(e),e}function Qt(s,e){if(e.length===0)return no(s);if(e.length===1)return e[0];const t=s.createEphemeral(to);s.createField(h.field(t,ro),"Input",h.Pl.createPlString(s,se.randomUUID()));for(let r=0;r<e.length;r++)s.createField(h.field(t,`${so}${r}`),"Input",e[r]);return s.lock(t),t}function io(s,e){const t=j.parseTemplate(e.content),r=t.type;switch(r){case"pl.tengo-template.v2":return ao(s,t);default:k.assertNever(r)}}const Zt={hash(s,e){e.update(j.PlTemplateLibV1.type.name).update(j.PlTemplateLibV1.type.version).update(s.name).update(s.version).update(s.src)},render(s,e,t){return e.createValue(j.PlTemplateLibV1.type,JSON.stringify(j.PlTemplateLibV1.fromV2Data(s).data))}},De={hash(s,e){e.update(j.PlTemplateSoftwareV1.type.name).update(j.PlTemplateSoftwareV1.type.version).update(s.name).update(s.version).update(s.src)},render(s,e,t){const r=j.PlTemplateSoftwareV1.fromV2Data(s),o=e.createStruct(j.PlTemplateSoftwareV1.type,r.data);return e.setKValue(o,j.PlTemplateSoftwareV1.metaNameKey,JSON.stringify(r.name)),e.lock(o),o}},Gr={hash(s,e){e.update(j.PlTemplateV1.type.name).update(j.PlTemplateV1.type.version).update(s.hashOverride??"no-override").update(s.name).update(s.version).update(s.src);const t=r=>(r.sort((o,n)=>o[0]===n[0]?0:o[0]<n[0]?-1:1),r);for(const[r,o]of t(Object.entries(s.libs??{})))e.update("lib:"+r),Zt.hash(o,e);for(const[r,o]of t(Object.entries(s.software??{})))e.update("soft:"+r),De.hash(o,e);for(const[r,o]of t(Object.entries(s.assets??{})))e.update("asset:"+r),De.hash(o,e);for(const[r,o]of t(Object.entries(s.templates??{})))e.update("tpl:"+r),this.hash(o,e)},render(s,e,t){const r=e.createStruct(j.PlTemplateV1.type,JSON.stringify(j.PlTemplateV1.fromV2Data(s).data));for(const[i,a]of Object.entries(s.libs??{})){const c=j.PlTemplateV1.libField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Zt))}for(const[i,a]of Object.entries(s.software??{})){const c=j.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,De))}for(const[i,a]of Object.entries(s.assets??{})){const c=j.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,De))}for(const[i,a]of Object.entries(s.templates??{})){const c=j.PlTemplateV1.tplField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Gr))}if(e.lock(r),!s.hashOverride)return r;const o=e.createStruct(j.PlTemplateOverrideV1.type,JSON.stringify(j.PlTemplateOverrideV1.fromV2Data(s))),n=j.PlTemplateOverrideV1.tplField(o);return e.createField(n,"Service"),e.setField(n,r),e.lock(o),o}};function ao(s,e){const t=new Map,r=(o,n)=>{const i=se.createHash("sha256");n.hash(o,i);const a=i.digest("hex");if(!t.has(a)){const c=n.render(o,s,r);t.set(a,c)}return t.get(a)};return r(e,Gr)}const Jr={name:"TengoTemplateGet",version:"1"},Mr="registry",_r="templateURI",Kr="template",co={name:"TengoTemplatePack",version:"1"},lo={name:"TengoTemplatePackConvert",version:"1"},uo="templatePack",po="template";async function Hr(s){switch(s.type){case"from-file":return{type:"explicit",content:await Z.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return k.assertNever(s)}}function ho(s,e){const t=s.createStruct(Jr),r=h.field(t,Mr),o=h.field(t,_r),n=h.field(t,Kr);return s.setField(r,s.createValue(h.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(h.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function Xe(s,e){switch(e.type){case"from-registry":return ho(s,e);case"explicit":return io(s,e);default:return k.assertNever(e)}}const Tt={name:"Frontend/FromUrl",version:"1"},It={name:"Frontend/FromFolder",version:"1"};function fo(s,e){switch(e.type){case"url":return s.createValue(Tt,JSON.stringify({url:e.url}));case"local":return s.createValue(It,JSON.stringify({path:e.path,signature:e.signature}));default:return k.assertNever(e)}}const go={name:"BlockPackCustom",version:"1"},qr="template",Wr="frontend";function er(s){return s.endsWith("/")?s:`${s}/`}function mo(s){return Buffer.from(s).toString("utf8")}function Ne(s){return JSON.parse(mo(s))}class vo{constructor(e,t,r){S(this,"remoteContentCache",new Ar.LRUCache({max:500,maxSize:128*1024*1024,fetchMethod:async e=>{const t=this.http!==void 0?{dispatcher:this.http}:{};return await(await We.request(e,t)).body.arrayBuffer()},sizeCalculation:e=>e.byteLength}));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 Xt(e.folder),r=await Z.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await H.loadPackDescription(e.folder),r=await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=`${er(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,r=await this.remoteContentCache.forceFetch(`${t}/config.json`);return Ne(r)}case"from-registry-v2":{const r=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=await this.remoteContentCache.forceFetch(r.model.url);return Ne(o)}default:return k.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Xt(e.folder),r=await Z.promises.readFile(t.workflow),o=JSON.parse(await Z.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 H.loadPackDescription(e.folder),r=JSON.parse(await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Z.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await ze(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=`${er(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,r=`${t}/template.plj.gz`,o=await this.remoteContentCache.forceFetch(r),n=new Uint8Array(o),i=await this.remoteContentCache.forceFetch(`${t}/config.json`),a=Ne(i);return{type:"explicit",template:{type:"explicit",content:n},config:a,frontend:{type:"url",url:`${t}/frontend.tgz`},source:e}}case"from-registry-v2":{const r=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=async()=>Ne(await this.remoteContentCache.forceFetch(r.model.url)),n=async()=>await this.remoteContentCache.forceFetch(r.workflow.main.url),[i,a]=await Promise.all([o(),n()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(a)},config:i,frontend:{type:"url",url:r.ui.url},source:e}}default:return k.assertNever(e)}}}function yo(s,e){const t={config:e.config,source:e.source},r=s.createStruct(go,JSON.stringify(t));return s.createField(h.field(r,qr),"Input",Xe(s,e.template)),s.createField(h.field(r,Wr),"Input",fo(s,e.frontend)),s.lock(r),r}function tr(s,e){switch(e.type){case"explicit":return yo(s,e);default:return k.assertNever(e.type)}}function Be(s,e){return{__isRef:!0,blockId:s,name:e}}function wo(s){return typeof s=="object"&&s!==null&&"__isRef"in s&&s.__isRef===!0&&"blockId"in s&&"name"in s}function yt(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(wo(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)yt(s,o,t);else for(const[,o]of Object.entries(e))yt(s,o,t);return;default:k.assertNever(r)}}function So(s,e){const t={upstreams:new Set,missingReferences:!1};return yt(t,s,e),t}function ae(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class zr{constructor(e){S(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;){const i=[];for(const a of o){const c=this.nodes.get(a);r(c),c[e].forEach(u=>{n.has(u)||(n.add(u),i.push(u))})}o=i}}}function wt(s){const e=new Map;let t;for(const{id:r}of ae(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 zr(e)}function _e(s,e){const t=new Map,r=new Set;for(const{id:o}of ae(s)){const n=e(o);if(n===void 0)continue;const i=So(n,r),a={id:o,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(o,a),i.upstreams.forEach(c=>t.get(c).downstream.add(o)),r.add(o)}return new zr(t)}function bo(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function St(s,e){if(s.size>e.size)return St(e,s);for(const t of s)if(e.has(t))return!0;return!1}function rr(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):(!bo(n.upstream,i.upstream)||St(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?St(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let it;async function Xr(){if(it===void 0){const s=await Hr(bs.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=se.createHash("sha256").update(s.content).digest("hex");it={spec:s,hash:e}}return it}function Po(s,e,t){return $t(s,e,!0,{pf:t},["result"]).result}function at(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 sr{constructor(e,t){S(this,"currentInputsC",at(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));S(this,"actualProductionInputsC",at(()=>{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())}));S(this,"productionStaleC",at(()=>{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 productionHasErrors(){var e;return((e=this.fields.prodUiCtx)==null?void 0:e.status)==="Error"}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()||this.productionHasErrors}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(h.Pl.unwrapHolder(e,this.fields.blockPack.ref),qr,"Input")}}const Co=s=>{throw new Error(`No new block info for ${s}`)};class He{constructor(e,t,r,o,n,i,a,c,u,l,d,g){S(this,"globalModCount",0);S(this,"fieldsChanged",!1);S(this,"lastModifiedChanged",!1);S(this,"structureChanged",!1);S(this,"metaChanged",!1);S(this,"renderingStateChanged",!1);S(this,"changedBlockFrontendStates",new Set);S(this,"blocksWithChangedInputs",new Set);S(this,"stagingGraph");S(this,"pendingProductionGraph");S(this,"actualProductionGraph");this.rid=e,this.tx=t,this.author=r,this.schema=o,this.lastModified=n,this.meta=i,this.struct=a,this.renderingState=c,this.blocksInLimbo=u,this.blockInfos=l,this.blockFrontendStates=d,this.ctxExportTplHolder=g}fixProblemsAndMigrate(){this.blockInfos.forEach(t=>{(t.fields.prodArgs===void 0||t.fields.prodOutput===void 0||t.fields.prodCtx===void 0)&&this.deleteBlockFields(t.id,"prodArgs","prodOutput","prodCtx")});let e;this.blockInfos.forEach(t=>{t.fields.blockSettings===void 0&&(e===void 0&&(e=this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(t.id,"blockSettings",e))})}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=wt(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=_e(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=_e(this.struct,e=>this.getBlockInfo(e).actualProductionInputs)),this.actualProductionGraph}getBlockInfo(e){const t=this.blockInfos.get(e);if(t===void 0)throw new Error(`No such block: ${e}`);return t}createJsonFieldValueByContent(e){const t=Buffer.from(e);return{ref:this.tx.createValue(h.Pl.JsonObject,t),value:t,status:"Ready"}}createJsonFieldValue(e){return this.createJsonFieldValueByContent(JSON.stringify(e))}getBlock(e){for(const t of ae(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=h.field(this.rid,J(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(h.field(this.rid,J(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 a=this.tx.createValue(h.Pl.JsonObject,i);this.setBlockField(r,"currentArgs",a,"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())}setBlockSettings(e,t){this.setBlockFieldObj(e,"blockSettings",this.createJsonFieldValue(t)),this.updateLastModified()}createProdCtx(e){const t=[];return e.forEach(r=>{var n;const o=this.getBlockInfo(r);if(((n=o.fields.prodCtx)==null?void 0:n.ref)===void 0)throw new Error("One of the upstreams staging is not rendered.");t.push(h.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),Qt(this.tx,t)}createStagingCtx(e){const t=[];return e.forEach(r=>{var n,i;const o=this.getBlockInfo(r);if(((n=o.fields.stagingCtx)==null?void 0:n.ref)===void 0)throw new Error("One of the upstreams staging is not rendered.");t.push(h.Pl.unwrapHolder(this.tx,o.fields.stagingCtx.ref)),((i=o.fields.prodCtx)==null?void 0:i.ref)!==void 0&&t.push(h.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),Qt(this.tx,t)}exportCtx(e){return Po(this.tx,h.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=this.createStagingCtx(this.getStagingGraph().nodes.get(e).upstream);if(this.getBlock(e).renderingMode!=="Heavy")throw new Error("not supported yet");const o=t.getTemplate(this.tx),n=Yt(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(h.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(h.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",h.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.createProdCtx(this.getPendingProductionGraph().nodes.get(e).upstream);if(this.getBlock(e).renderingMode==="Light")throw new Error("Can't render production for light block.");const o=t.getTemplate(this.tx),n=Yt(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(h.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(h.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",h.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=Co){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=wt(e),i=_e(e,u=>{var l;return(l=this.blockInfos.get(u))==null?void 0:l.actualProductionInputs}),a=rr(r,n),c=rr(o,i);for(const u of a.onlyInA){const{fields:l}=this.getBlockInfo(u);this.deleteBlockFields(u,...Object.keys(l)),this.blockInfos.delete(u),this.blocksInLimbo.delete(u)&&(this.renderingStateChanged=!0),this.blockFrontendStates.delete(u)&&this.changedBlockFrontendStates.add(u)}for(const u of a.onlyInB){const l=new sr(u,{});this.blockInfos.set(u,l);const d=t(u),g=tr(this.tx,d.blockPack);this.setBlockField(u,"blockPack",h.Pl.wrapInHolder(this.tx,g),"NotReady"),this.setBlockFieldObj(u,"blockSettings",this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(u,"currentArgs",this.createJsonFieldValueByContent(d.args)),d.uiState&&(this.blockFrontendStates.set(u,d.uiState),this.changedBlockFrontendStates.add(u)),l.check()}for(const u of a.different)this.resetStaging(u);o.traverse("downstream",[...c.different],u=>{this.resetOrLimboProduction(u.id)}),(a.onlyInB.size>0||a.onlyInA.size>0||a.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 a=i.blocks.findIndex(c=>c.id===r);if(!(a<0)){i.blocks.splice(a,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",h.Pl.wrapInHolder(this.tx,tr(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,a=>{r.add(a.id)});else for(const a of r){const c=o.nodes.get(a);if(c===void 0)throw new Error(`Can't find block with id: ${a}`);for(const u of c.upstream)if(!r.has(u))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const a of ae(this.structure)){if(!r.has(a.id))continue;let c=this.getBlockInfo(a.id).requireProductionRendering||this.blocksInLimbo.has(a.id);if(!c){for(const u of o.nodes.get(a.id).upstream)if(n.has(u)){c=!0;break}}c&&(this.renderProductionFor(a.id),n.add(a.id))}const i=[...n];return o.traverse("downstream",i,a=>{n.has(a.id)||this.resetOrLimboProduction(a.id)}),this.getStagingGraph().traverse("downstream",i,({id:a})=>{i[0]!==a&&this.resetStaging(a)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,a;const t=this.getActualProductionGraph(),r=new Lr(e),o=new Set(e),n=[];for(;!r.isEmpty();){const c=r.shift(),u=this.getBlockInfo(c).fields;if(!(((i=u.prodOutput)==null?void 0:i.status)==="Ready"&&((a=u.prodCtx)==null?void 0:a.status)==="Ready")&&this.deleteBlockFields(c,"prodOutput","prodCtx","prodUiCtx","prodArgs")){n.push(c);for(const l of t.traverseIdsExcludingRoots("downstream",c))o.has(l)||(r.push(l),o.add(l))}}for(const c of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(c)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(o=>{let i=this.getBlockInfo(o.id).stagingRendered?0:1;o.upstream.forEach(a=>{const c=t.get(a);c!==0&&(i=Math.max(c+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,gt(t)):this.tx.setKValue(this.rid,gt(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,mt):this.tx.setKValue(this.rid,mt,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,Te,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,pe,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Ke,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,Ie,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,ft(e)):this.tx.setKValue(this.rid,ft(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,xr),i=e.getKValueJson(t,Te),a=e.getKValueJson(t,Ie),c=e.getKValueJson(t,pe),u=e.getKValueJson(t,Ke),l=e.listKeyValuesString(t),[d,g,f,R,m,{stagingRefreshTimestamp:x,blocksInLimbo:L},U]=await Promise.all([o,n,i,a,c,u,l]);if(g!==Vr)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${g}`);const I=new Map;for(const p of d.fields){const v=Ws(p.name);if(v===void 0)continue;let w=I.get(v.blockId);w===void 0&&(w={id:v.blockId,fields:{}},I.set(v.blockId,w)),w.fields[v.fieldName]=h.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const M=await Xr(),he=vt(M.hash),D=d.fields.find(p=>p.name===he);let Y;D!==void 0?Y=h.ensureResourceIdNotNull(D.value):(Y=h.Pl.wrapInHolder(e,Xe(e,M.spec)),e.createField(h.field(t,vt(M.hash)),"Dynamic",Y));const ue={stagingRefreshTimestamp:x},z=new Set(L),_=new Map;for(const p of U){const v=Ks(p.key);v!==void 0&&_.set(v,p.value)}const G=[];I.forEach(({fields:p})=>{for(const[,v]of Object.entries(p))if(v.ref!==void 0){if(!h.isResource(v.ref)||h.isResourceRef(v.ref))throw new Error("unexpected behaviour");G.push([v,e.getResourceData(v.ref,!1)])}});for(const[p,v]of G){const w=await v;p.value=w.data,h.isNotNullResourceId(w.error)?p.status="Error":w.resourceReady||h.isNotNullResourceId(w.originalResourceId)?p.status="Ready":p.status="NotReady"}const Q=new Map;I.forEach(({id:p,fields:v})=>Q.set(p,new sr(p,v)));const fe=new Set;for(const p of ae(m)){if(!Q.has(p.id))throw new Error(`Inconsistent project structure: no inputs for ${p.id}`);fe.add(p.id)}Q.forEach(p=>{if(!fe.has(p.id))throw new Error(`Inconsistent project structure: no structure entry for ${p.id}`);p.check()});const y=new He(t,e,r,g,f,R,m,ue,z,Q,_,Y);return y.fixProblemsAndMigrate(),y}}async function Ro(s,e=Us){const t=s.createEphemeral(Gs);s.lock(t);const r=String(Date.now());s.setKValue(t,xr,JSON.stringify(Vr)),s.setKValue(t,Ot,r),s.setKValue(t,Te,r),s.setKValue(t,Ie,JSON.stringify(e)),s.setKValue(t,pe,JSON.stringify(xs)),s.setKValue(t,Ke,JSON.stringify(Vs));const o=await Xr();return s.createField(h.field(t,vt(o.hash)),"Dynamic",h.Pl.wrapInHolder(s,Xe(s,o.spec))),t}async function je(s,e,t){return te(s,e,void 0,t)}async function te(s,e,t,r){if(s instanceof h.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await He.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await He.load(s,e,t),n=await r(o);return o.save(),n}}function*Eo(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:k.assertNever(s)}}function or(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function ko(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:or(s.parts,e)};case"BinaryPartitioned":return{...s,parts:or(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:k.assertNever(s)}}const Oo=h.resourceType("PColumnData/JsonPartitioned","1"),$o=h.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),To=h.resourceType("PColumnData/BinaryPartitioned","1"),Io=h.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Fo=h.resourceType("PColumnData/Json","1");function Ao(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(h.resourceTypesEqual(s.resourceType,Fo)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(h.resourceTypesEqual(s.resourceType,Oo)){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(h.resourceTypesEqual(s.resourceType,$o)){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 a of i){const c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);r[c]=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}}return{type:"JsonPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,To)){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(h.resourceTypesEqual(s.resourceType,Io)){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 a of i)if(a.endsWith(".index")){const c=a.slice(0,a.length-6),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=r[u];l===void 0&&(l={},r[u]=l),r[u].index=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else if(a.endsWith(".values")){const c=a.slice(0,a.length-7),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=r[u];l===void 0&&(l={},r[u]=l),r[u].values=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${a}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}throw new Error(`unsupported resource type: ${h.resourceTypeToString(s.resourceType)}`)}function Lo(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 Do(s,e){const t=se.createHash("sha256");return t.update(re(s)),t.update(String(h.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function nr(s,e){return re({__isRef:!0,blockId:s,name:e})}function No(s,e){return re({resolvePath:s,name:e})}function Yr(s,e=!0,t=!1,r=""){var a,c,u;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const l of s.listInputFields()){const d=l.match(o);if(!d){if(e)throw new Error(`unexpected field name ${l}`);continue}let g=k.notEmpty((a=d.groups)==null?void 0:a.name);if(!g.startsWith(r)){if(e)throw new Error(`unexpected field name ${l}`);continue}g=g.slice(r.length);const f=k.notEmpty((c=d.groups)==null?void 0:c.type);let R=n.get(g);switch(R===void 0&&(R={},n.set(g,R)),f){case"spec":R.spec=(u=s.traverse({field:l,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":R.hasData=!0,R.data=()=>s.traverseOrError({field:l,ignoreError:t});break}}const i=s.getInputsLocked();if(i)for(const[,l]of n)l.data===void 0&&(l.hasData=!1);return{locked:i,results:n}}function Bo(s,e=!0,t="",r){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const o=Yr(s,e,!1,t);Cs(o.locked);const n={};for(const[i,a]of o.results){if(a.spec===void 0)throw new Error(`no spec for key ${i}`);if(a.hasData!==!0||a.data===void 0)throw new Error(`no data for key ${i}`);const c=a.data();if(c===void 0)throw new Error(`no data for key ${i}`);if(!c.ok)throw Ps.parsePlError(c.error);n[i]={id:r.length===0?Do(a.spec,c.value):No(r,i),spec:a.spec,data:c.value}}return n}class Ft{constructor(e,t){S(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,a,c,u,l;const r=this.blocks.get(e);if(r===void 0)return;let o=(a=(i=(n=r.prod)==null?void 0:n.results)==null?void 0:i.get(t))==null?void 0:a.spec;if(o!==void 0||(o=(l=(u=(c=r.staging)==null?void 0:c.results)==null?void 0:u.get(t))==null?void 0:l.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,a,c;const r=this.blocks.get(e);if(r===void 0)return;const o=(a=(i=r.prod)==null?void 0:i.results)==null?void 0:a.get(t),n=(c=o==null?void 0:o.data)==null?void 0:c.call(o);if(o!==void 0&&o.spec!==void 0&&n!==void 0)return N.mapValueInVOE(n,u=>({id:nr(e,t),spec:o.spec,data:u}));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,a,c)=>{if(c.spec!==void 0&&c.hasData===!0&&c.data!==void 0){const u=c.data();u!==void 0?e.push({ref:Be(i,a),obj:{id:u.ok?nr(i,a):void 0,spec:c.spec,data:u}}):o(`no_data:${i}:${a}`)}};for(const[i,a]of this.blocks){const c=new Set;if(a.prod!==void 0){a.prod.locked||o(`prod_not_locked:${i}`);for(const[u,l]of a.prod.results)c.add(u),n(i,u,l)}if(a.staging!==void 0){a.staging.locked||o(`staging_not_locked:${i}`);for(const[u,l]of a.staging.results)c.has(u)||n(i,u,l)}}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 a=new Set;if(i.staging!==void 0){i.staging.locked||o(`staging_not_locked:${n}`);for(const[c,u]of i.staging.results)u.spec!==void 0&&(e.push({ref:Be(n,c),obj:u.spec}),a.add(c))}else o(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||o(`prod_not_locked:${n}`);for(const[c,u]of i.prod.results)a.has(c)||u.spec!==void 0&&e.push({ref:Be(n,c),obj:u.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[a,c]of i.results)o.has(a)||c.spec===void 0||(o.add(a),N.executePSpecPredicate(e,c.spec)&&t.push({label:r.info.label+" / "+a,ref:Be(r.info.id,a),spec:c.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=k.notEmpty(o.getKeyValueAsJson(pe)),a=wt(n).traverseIds("upstream",r),c=new Map;for(const u of ae(n)){if(!a.has(u.id))continue;const l=ir(o.traverse({field:J(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:J(u.id,"prodUiCtx"),stableIfNotFound:!0})),d=ir(o.traverse({field:J(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:J(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:l,staging:d})}return new Ft(e,c)}}function ir(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return Yr(e.value,!1,!0)}function At(s,e){return{blockId:e,args:n=>k.notEmpty(n.accessor(s).node().traverse({field:J(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),activeArgs:n=>{var i;return(i=n.accessor(s).node().traverse({field:J(e,"prodArgs"),stableIfNotFound:!0}))==null?void 0:i.getDataAsString()},uiState:n=>n.accessor(s).node().getKeyValueAsString(ft(e)),blockMeta:n=>{const i=n.accessor(s).node(),a=k.notEmpty(i.getKeyValueAsJson(pe)),c=new Map;for(const u of ae(a))c.set(u.id,u);return c}}}function Qr(s,e){return{...At(s,e),prod:t=>{var r;return(r=t.accessor(s).node({ignoreError:!0}).traverse({field:J(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:J(e,"stagingOutput"),ignoreError:!0}))==null?void 0:o.persist();return r===void 0&&t.markUnstable("staging_not_rendered"),r},getResultsPool:t=>Ft.create(t,s,e)}}function*X(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*X(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*X(t);return;case"MakeArray":for(const t of s.template)yield*X(t);return;case"GetJsonField":case"GetResourceField":yield*X(s.source),yield*X(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*X(s.source),yield*X(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"ExtractArchiveAndGetURL":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetProgressLogWithInfo":case"GetLogHandle":yield*X(s.source);return;case"IsEmpty":yield*X(s.arg);return;case"Not":yield*X(s.operand);return;case"And":case"Or":yield*X(s.operand1),yield*X(s.operand2);return;default:k.assertNever(s)}}function jo(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function Ee(s,e){return s===void 0?void 0:e(s)}function xo(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function Vo(s){for(const e of X(s))if(xo(e))return!0;return!1}function Ye(s){return{type:"ReturnResult",result:s}}function O(s){return()=>Ye(s)}const Uo=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return O(e)},Go=s=>{const e=s.source;if(e===void 0)return O(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return O(t)},Jo=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?O(void 0):({cCtx:r})=>{var o;return Ye((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function Zr(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function Mo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):()=>({type:"ScheduleSubroutine",subroutine:es(r.length),args:Zr(r,o=>$({...s,[e.itVar]:o},e.mapping))})}}function es(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return O(t)}}function _o(s,e){return t=>{const r=t.source;if(r===void 0)return O(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=$(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Ko,args:o})}}const Ko=s=>O(s),Ho=s=>{const e=s.arg;return O(e===void 0?void 0:e.length===0)},qo=s=>{const e=s.operand;return O(e===void 0?void 0:!e)},Wo=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e&&t)},zo=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e||t)},Xo=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t})=>{var r;return Ye((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},Yo=s=>{const e=s.source,t=s.field;return O(e===void 0||t===void 0?void 0:e[t])};function Qo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):({cCtx:o})=>{const n=o.accessor(r).node(),i={};for(const a of n.listInputFields()){const c=n.traverse(a);if(c===void 0)i[a]=O(void 0);else{const u={...s,[e.itVar]:c.persist()};i[a]=$(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:Zo,args:i}}}}const Zo=s=>O(s),en=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.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)}})})},tn=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:B.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},rn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.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())}})})},sn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},on=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},nn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.blobToURLDriver.extractArchiveAndGetURL(t,s)})},an=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},cn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},ln=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},un=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLogWithInfo(t,s)})},dn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function $(s,e){switch(e.type){case"GetFromCtx":{const t=s[e.variable];return typeof t=="function"?r=>Ye(t(r.cCtx)):O(t)}case"Isolate":return({drivers:t})=>({type:"ScheduleComputable",computable:ss(t,s,e.cfg)});case"Immediate":return O(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:Yo,args:{source:$(s,e.source),field:$(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:Mo(s,e),args:{source:$(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:_o(s,e),args:{source:$(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:Uo,args:jo(e.template,t=>$(s,t))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:es(e.template.length),args:Zr(e.template,t=>$(s,t))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:Go,args:{source:$(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Ho,args:{arg:$(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:qo,args:{operand:$(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:Wo,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:zo,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Qo(s,e),args:{source:$(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:Jo,args:{source:$(s,e.source),field:$(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Xo,args:{source:$(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:en,args:{source:$(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:tn,args:{source:$(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:rn,args:{source:$(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:sn,args:{source:$(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:on,args:{source:$(s,e.source)}});case"ExtractArchiveAndGetURL":return()=>({type:"ScheduleSubroutine",subroutine:nn(e.format),args:{source:$(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:an,args:{source:$(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:cn(e.lines),args:{source:$(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:ln(e.patternToSearch),args:{source:$(s,e.source)}});case"GetProgressLogWithInfo":return()=>({type:"ScheduleSubroutine",subroutine:un(e.patternToSearch),args:{source:$(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:dn,args:{source:$(s,e.source)}});default:return k.assertNever(e)}}const pn=["$prod","$staging"];function hn(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 ts=Symbol(),rs="return",fn={op:ts,arg:rs};function gn(s){return s.op==ts&&s.arg==rs}function mn(){return{pendingSubroutines:new Map}}function ar(s,e,t,r){const o=new Lr(t),n=(a,c)=>{if(gn(a))return e.result=c,!1;const u=k.notEmpty(e.pendingSubroutines.get(a.op));if(a.arg in u.args)throw new Error("argument already set");return u.args[a.arg]=c,u.argCounter--,u.argCounter===0&&(e.pendingSubroutines.delete(a.op),o.push({destination:u.destination,operation:u.subroutine(u.args)})),!0},i=[];e:for(;o.length>0;){const a=o.shift(),c=a.operation(s);switch(c.type){case"ReturnResult":if(!n(a.destination,c.result))break e;break;case"ScheduleSubroutine":{const u=Symbol(),l=Object.entries(c.args),d=l.length;if(d===0)o.push({destination:a.destination,operation:c.subroutine({})});else{for(const[g,f]of l)o.push({destination:{op:u,arg:g},operation:f});e.pendingSubroutines.set(u,{argCounter:d,args:{},subroutine:c.subroutine,destination:a.destination})}}break;case"ScheduleComputable":if(!r)throw new Error("asynchronous operations are forbidden in this context");i.push({destination:a.destination,computable:c.computable});break;default:k.assertNever(c)}}return i}function vn(s,e,t,r={}){return ss(s,hn(e),t,r)}function ss(s,e,t,r={}){const o=`${e.blockId}#`+re({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>pn.indexOf(n)===-1)),cfg:t});return B.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=mn();return{ir:ar(i,a,[{destination:fn,operation:$(e,t)}],!0),postprocessValue(u){const l=[];for(const R of u)l.push({destination:R.destination,operation:O(R.computable)});const d={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},g=new Map;for(const[R,m]of a.pendingSubroutines)g.set(R,{...m,args:{...m.args}});const f={result:a.result,pendingSubroutines:g};if(ar(d,f,l,!1),!("result"in f))throw new Error("illegal cfg rendering stack state, no result");return f.result}}},{...r,key:o})}function yn(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function cr(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class qe{constructor(e,t,r,o,n){S(this,"callbackRegistry");S(this,"fnJSONStringify");S(this,"fnJSONParse");S(this,"computablesToResolve",{});S(this,"computableCtx");S(this,"accessors",new Map);S(this,"meta");S(this,"errorRepo",new wn);S(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 qe.cleanErrorContext(t),t}}runCallback(e,...t){try{return $e.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 qe.cleanErrorContext(r),this.errorRepo.getOriginal(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 cr(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return cr(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r,...o){const n=this.getAccessor(e);if(!n.getIsReadyOrError())return;const i=Bo(n,t,r,o),a={};for(const[c,u]of Object.entries(i))a[c]=N.mapPObjectData(u,l=>this.wrapAccessor(l));return a}registerComputable(e,t){const r=`${e}_${se.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",B.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",B.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))}extractArchiveAndGetURL(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("extractArchiveAndGetURL",this.env.driverKit.blobToURLDriver.extractArchiveAndGetURL(r,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))}getProgressLogWithInfo(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLogWithInfo",this.env.driverKit.logDriver.getProgressLogWithInfo(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=k.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:N.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:N.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 N.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=>N.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(N.mapPTableDef(e,t=>N.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=se.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===void 0?"undefined":JSON.stringify(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(yn(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(){$e.Scope.withScope(e=>{const t=e.manage(this.vm.newObject()),r=this.blockCtx.args(this.computableCtx),o=this.blockCtx.activeArgs(this.computableCtx),n=this.blockCtx.uiState(this.computableCtx);this.vm.setProp(t,"args",e.manage(this.vm.newString(r))),n!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(n))),o!==void 0&&this.vm.setProp(t,"activeArgs",e.manage(this.vm.newString(o))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry),this.vm.setProp(t,"featureFlags",this.exportObjectUniversal(N.JsRenderInternal.GlobalCfgRenderCtxFeatureFlags,e));const i=(a,c)=>{const u=(...l)=>{try{return c(...l)}catch(d){const g=this.errorRepo.setAndRecreateForQuickJS(d);throw this.vm.newError(g)}};this.vm.newFunction(a,u).consume(l=>this.vm.setProp(t,a,l)),this.vm.newFunction(a,c).consume(l=>this.vm.setProp(t,a+"__internal__",l))};i("getAccessorHandleByName",a=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(a)),void 0)),i("resolveWithCommon",(a,c,...u)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(a),this.importObjectViaJson(c),...u.map(l=>this.importObjectViaJson(l))),void 0)),i("getResourceType",a=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(a)),void 0)),i("getInputsLocked",a=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(a)),void 0)),i("getOutputsLocked",a=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(a)),void 0)),i("getIsReadyOrError",a=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(a)),void 0)),i("getIsFinal",a=>this.exportSingleValue(this.getIsFinal(this.vm.getString(a)),void 0)),i("getError",a=>this.exportSingleValue(this.getError(this.vm.getString(a)),void 0)),i("listInputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listOutputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listDynamicFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("getKeyValueBase64",(a,c)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getKeyValueAsString",(a,c)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataBase64",a=>this.exportSingleValue(this.getDataBase64(this.vm.getString(a)),void 0)),i("getDataAsString",a=>this.exportSingleValue(this.getDataAsString(this.vm.getString(a)),void 0)),i("parsePObjectCollection",(a,c,u,...l)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(a),this.vm.dump(c),this.vm.getString(u),...l.map(d=>this.vm.getString(d))),void 0)),i("getBlobContentAsBase64",a=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(a)),void 0)),i("getBlobContentAsString",a=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(a)),void 0)),i("getDownloadedBlobContentHandle",a=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(a)),void 0)),i("getOnDemandBlobContentHandle",a=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(a)),void 0)),i("extractArchiveAndGetURL",(a,c)=>this.exportSingleValue(this.extractArchiveAndGetURL(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getImportProgress",a=>this.exportSingleValue(this.getImportProgress(this.vm.getString(a)),void 0)),i("getLastLogs",(a,c)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(a),this.vm.getNumber(c)),void 0)),i("getProgressLog",(a,c)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getProgressLogWithInfo",(a,c)=>this.exportSingleValue(this.getProgressLogWithInfo(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getLogHandle",a=>this.exportSingleValue(this.getLogHandle(this.vm.getString(a)),void 0)),i("getBlockLabel",a=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(a)),void 0)),i("getDataFromResultPool",()=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),i("getDataWithErrorsFromResultPool",()=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),i("getSpecsFromResultPool",()=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),i("calculateOptions",a=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(a)),void 0)),i("getSpecFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getSpecFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getDataFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("createPFrame",a=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(a)),void 0)),i("createPTable",a=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(a)),void 0)),i("getCurrentUnstableMarker",()=>this.exportSingleValue(this.getCurrentUnstableMarker(),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}class wn{constructor(){S(this,"errorIdToError",new Map)}setAndRecreateForQuickJS(e){const t=se.randomUUID();return this.errorIdToError.set(t,e),e instanceof Error?{name:`${e.name}/uuid:${t}`,message:e.message}:{name:`UnknownErrorQuickJS/uuid:${t}`,message:`${e}`}}getOriginal(e){if(!(e instanceof $e.errors.QuickJSUnwrapError))return console.warn("ErrorRepo: quickJSError is not a QuickJSUnwrapError",h.stringifyWithResourceId(e)),e;if(!("name"in e.cause))return console.warn("ErrorRepo: quickJSError.cause is not an Error",h.stringifyWithResourceId(e)),e;const t=e.cause.name,r=t.slice(t.indexOf("/uuid:")+6);if(!r)throw new Error(`ErrorRepo: quickJSError.cause.name does not contain errorId: ${t}, ${h.stringifyWithResourceId(e)}`);const o=this.errorIdToError.get(r);if(o===void 0)throw new Error(`ErrorRepo: errorId not found: ${r}, ${h.stringifyWithResourceId(e)}`);return new Sn(e,o)}}class Sn extends Error{constructor(t,r){var o;super("",{cause:r});S(this,"stack");this.name="ModelError",this.stack=((o=t.stack)==null?void 0:o.replace(t.message,""))??"",this.stack=this.stack.replace(r.message,""),this.message=this.toString()}toString(){var r;return`ModelError: ${(r=this.cause)==null?void 0:r.message}
2
+ QuickJS stacktrace:
3
+ ${this.stack}
4
+ `}}function Qe(s,e){return Ee(s.traverse({field:J(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:h.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),t=>{const r=t.getDataAsJson(),o=N.extractConfig(r.config);return{bpId:t.resourceInfo.id.toString(),info:r,cfg:o}})}const xe=process.env.MI_LOG_OUTPUT_STATUS;function bn(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"),B.Computable.makeRaw(a=>{const c=new $e.Scope;a.addOnDestroy(()=>c.dispose());const u=c.manage(s.quickJs.newRuntime());u.setMemoryLimit(1024*1024*8),u.setMaxStackSize(1024*320);const l=c.manage(u.newContext()),d=new qe(c,l,e,s,a);d.evaluateBundle(r.content);const g=d.runCallback(t.handle);d.resetComputableCtx();let f=0;return xe&&xe!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:(R,{unstableMarker:m,stable:x})=>{for(const[U,I]of Object.entries(R))d.runCallback(U,I);const L=d.importObjectUniversal(g);return f++,xe&&(xe!=="unstable-only"||!x)&&console.log(x?`Stable output ${t.handle} calculated ${L!==void 0?"defined":"undefined"}; (#${f})`:`Unstable output ${t.handle}; marker = ${m}; ${L!==void 0?"defined":"undefined"} (#${f})`),L}}},n)}function Pn(s){return N.isConfigLambda(s)?s.isActive===!0:Vo(s)}function ke(s,e,t,r,o,n={}){if(N.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return bn(s,e,t,r,o,n)}else return vn(s.driverKit,e,t,n)}function Cn(s,e,t){return B.Computable.make(r=>{var R,m,x,L,U,I,M,he;const o=r.accessor(s).node(),n=k.notEmpty(o.getKeyValueAsJson(Ot)),i=k.notEmpty(o.getKeyValueAsJson(Te)),a=k.notEmpty(o.getKeyValueAsJson(Ie)),c=k.notEmpty(o.getKeyValueAsJson(pe)),u=k.notEmpty(o.getKeyValueAsJson(Ke)),l=new Map;for(const{id:D}of ae(c)){const Y=o.traverse({field:J(D,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ue;const z=o.traverse({field:J(D,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(z!==void 0){const _=o.getField({field:J(D,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),G=o.getField({field:J(D,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});ue={arguments:z.getDataAsJson(),stale:Y.id!==z.id,outputError:_.error!==void 0||G.error!==void 0||((R=_.value)==null?void 0:R.getError())!==void 0||((m=G.value)==null?void 0:m.getError())!==void 0,outputsError:((x=_.error)==null?void 0:x.getDataAsString())??((U=(L=_.value)==null?void 0:L.getError())==null?void 0:U.getDataAsString()),exportsError:((I=G.error)==null?void 0:I.getDataAsString())??((he=(M=G.value)==null?void 0:M.getError())==null?void 0:he.getDataAsString()),finished:(_.value!==void 0&&_.value.getIsReadyOrError()||_.error!==void 0&&_.error.getIsReadyOrError())&&(G.value!==void 0&&G.value.getIsReadyOrError()||G.error!==void 0&&G.error.getIsReadyOrError())}}l.set(D,{currentArguments:Y.getDataAsJson(),prod:ue})}const d=_e(c,D=>l.get(D).currentArguments),g=new Set(u.blocksInLimbo),f=[...ae(c)].map(({id:D,label:Y,renderingMode:ue})=>{var b,C,T,E,A;const z=k.notEmpty(l.get(D)),_=k.notEmpty(d.nodes.get(D));let G="NotCalculated";z.prod!==void 0&&(g.has(D)?G="Limbo":G=z.prod.finished?"Done":"Running");const Q=Qe(o,D),{sections:fe,title:y,inputsValid:p,sdkVersion:v}=Ee(Q,({bpId:V,cfg:F})=>{const ce=At(s,D);return{sections:ke(t,ce,F.sections,F.code,V).wrap({recover:Se=>(t.logger.error("Error in block model sections"),t.logger.error(Se),[])}),title:Ee(F.title,Se=>ke(t,ce,Se,F.code,V).wrap({recover:gs=>(t.logger.error("Error in block model title"),t.logger.error(gs),"Invalid title")})),inputsValid:ke(t,ce,F.inputsValid,F.code,V).wrap({recover:Se=>(t.logger.error("Error in block model argsValid"),t.logger.error(Se),!1)}),sdkVersion:F.sdkVersion}})||{},w=o.traverse({field:J(D,"blockSettings"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0}).getDataAsJson(),P=Ee(Q,({info:V})=>t.blockUpdateWatcher.get({currentSpec:V.source,settings:w}));return{projectResourceId:h.resourceIdToString(s.rid),id:D,label:y??Y,title:y??Y,renderingMode:ue,stale:((b=z.prod)==null?void 0:b.stale)!==!1||G==="Limbo",missingReference:_.missingReferences,upstreams:[...d.traverseIdsExcludingRoots("upstream",D)],downstreams:[...d.traverseIdsExcludingRoots("downstream",D)],calculationStatus:G,outputErrors:((C=z.prod)==null?void 0:C.outputError)===!0,outputsError:(T=z.prod)==null?void 0:T.outputsError,exportsError:(E=z.prod)==null?void 0:E.exportsError,settings:w,sections:fe,inputsValid:p,updateInfo:{},currentBlockPack:(A=Q==null?void 0:Q.info)==null?void 0:A.source,updates:P,sdkVersion:v,navigationState:e.getState(D)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(mt),blocks:f}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{var l,d;i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const a=i.stale||i.upstreams.findIndex(g=>n.has(g))!==-1,c=(a||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(g=>o.has(g))===-1,u={...i,canRun:c,stale:a,updateSuggestions:((l=i.updates)==null?void 0:l.suggestions)??[],updatedBlockPack:(d=i.updates)==null?void 0:d.mainSuggestion};return delete u.updates,u})}}}).withStableType()}function Rn(s,e){const t=s.node();if(h.resourceTypesEqual(t.resourceType,Tt)){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(h.resourceTypesEqual(t.resourceType,It)){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 En(s,e){if(s!==void 0)return B.Computable.make(t=>Rn(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 kn(s,e,t){return B.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Qe(o,e),i=(a=o.traverse({field:J(e,"blockPack"),assertFieldType:"Dynamic"},{field:h.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Wr,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:En(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function os(s,e,t){if(t===void 0)return B.Computable.make(i=>os(s,e,i),{key:`inputs#${h.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=At(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(gt(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function On(s,e,t){return B.Computable.make(r=>{const o=r.accessor(s).node(),n=Qr(s,e);return Ee(Qe(o,e),({cfg:i,bpId:a})=>{const c={};for(const[u,l]of Object.entries(i.outputs)){const d=ke(t,n,l,i.code,a);c[u]=B.Computable.wrapError(d)}return c})},{key:"outputs#"+h.resourceIdToString(s.rid)+"#"+e}).withStableType()}function $n(s,e){return B.Computable.make(t=>{const r=t.accessor(s).node(),o=k.notEmpty(r.getKeyValueAsJson(pe)),n=[];for(const{id:i}of ae(o)){const a=Qe(r,i);if(a===void 0)continue;const c=Object.entries(a.cfg.outputs).map(([,l])=>l).filter(l=>Pn(l)).map(l=>l);if(c.length===0)continue;const u=Qr(r.persist(),i);for(const l of c)n.push(B.Computable.wrapError(ke(e,u,l,a.cfg.code,a.bpId)))}return n})}class Tn{constructor(){S(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 B.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...N.DefaultNavigationState},change:new B.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return B.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 Ze{constructor(e,t,r){S(this,"rid");S(this,"overview");S(this,"navigationStates",new Tn);S(this,"blockComputables",new Map);S(this,"blockFrontends",new Map);S(this,"activeConfigs");S(this,"refreshLoopResult");S(this,"abortController",new AbortController);S(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=Cn(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=$n(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await je(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await Dr.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(h.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!h.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=se.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfigContainer(t),c=N.extractConfig(a);return await te(this.env.pl,this.rid,o,u=>u.addBlock({id:n,label:e,renderingMode:c.renderingMode},{args:JSON.stringify(c.initialArgs),uiState:JSON.stringify(c.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 te(this.env.pl,this.rid,o,a=>a.migrateBlockPack(e,n,r?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await te(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await te(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(a=>{const c=n.blocks.find(u=>u.id===a);if(c===void 0)throw new Error(`Can't find block: ${a}`);return c})}]};r.updateStructure(i)}),await this.projectTree.refreshState()}async runBlock(e){await je(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await je(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await te(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 te(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 te(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 setBlockSettings(e,t){await te(this.env.pl,this.rid,void 0,r=>{r.setBlockSettings(e,t)}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=h.ensureResourceIdNotNull((await r.getField(h.field(this.rid,J(e,"blockPack")))).value),n=h.ensureResourceIdNotNull((await r.getField(h.field(o,h.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),a=JSON.parse(Buffer.from(k.notEmpty(i.data)).toString("utf-8"));await te(r,this.rid,t,c=>{c.setArgs([{blockId:e,args:JSON.stringify(a.config.initialArgs)}]),c.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=On(this.projectTree.entry(),e,this.env),n={fullState:B.Computable.make(i=>({argsAndUiState:os(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=kn(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){await je(e.pl,t,o=>{});const r=await Ct.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:In},e.logger);return new Ze(e,t,r)}}function In(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 Lt={logger:new k.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:8*1024*1024*1024,nConcurrentDownloads:10},downloadBlobToURLDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function Dt(s){return{blobDownloadPath:q.join(s,"download"),downloadBlobToURLPath:q.join(s,"downloadToURL")}}const ns={...Lt,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function is(s){return{...Dt(s),frontendDownloadPath:q.join(s,"frontend")}}function Fn(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var bt={exports:{}};const An="2.0.0",as=256,Ln=Number.MAX_SAFE_INTEGER||9007199254740991,Dn=16,Nn=as-6,Bn=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var et={MAX_LENGTH:as,MAX_SAFE_COMPONENT_LENGTH:Dn,MAX_SAFE_BUILD_LENGTH:Nn,MAX_SAFE_INTEGER:Ln,RELEASE_TYPES:Bn,SEMVER_SPEC_VERSION:An,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const jn=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var tt=jn;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=et,n=tt;e=s.exports={};const i=e.re=[],a=e.safeRe=[],c=e.src=[],u=e.safeSrc=[],l=e.t={};let d=0;const g="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",o],[g,r]],R=x=>{for(const[L,U]of f)x=x.split(`${L}*`).join(`${L}{0,${U}}`).split(`${L}+`).join(`${L}{1,${U}}`);return x},m=(x,L,U)=>{const I=R(L),M=d++;n(x,M,L),l[x]=M,c[M]=L,u[M]=I,i[M]=new RegExp(L,U?"g":void 0),a[M]=new RegExp(I,U?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${g}*`),m("MAINVERSION",`(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${c[l.NUMERICIDENTIFIER]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${c[l.NUMERICIDENTIFIERLOOSE]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${c[l.PRERELEASEIDENTIFIER]}(?:\\.${c[l.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${c[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[l.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${g}+`),m("BUILD",`(?:\\+(${c[l.BUILDIDENTIFIER]}(?:\\.${c[l.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${c[l.MAINVERSION]}${c[l.PRERELEASE]}?${c[l.BUILD]}?`),m("FULL",`^${c[l.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${c[l.MAINVERSIONLOOSE]}${c[l.PRERELEASELOOSE]}?${c[l.BUILD]}?`),m("LOOSE",`^${c[l.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${c[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${c[l.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:${c[l.PRERELEASE]})?${c[l.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:${c[l.PRERELEASELOOSE]})?${c[l.BUILD]}?)?)?`),m("XRANGE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),m("COERCE",`${c[l.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",c[l.COERCEPLAIN]+`(?:${c[l.PRERELEASE]})?(?:${c[l.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",c[l.COERCE],!0),m("COERCERTLFULL",c[l.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${c[l.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",m("TILDE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${c[l.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",m("CARET",`^${c[l.LONECARET]}${c[l.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${c[l.LONECARET]}${c[l.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${c[l.GTLT]}\\s*(${c[l.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]}|${c[l.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${c[l.XRANGEPLAIN]})\\s+-\\s+(${c[l.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${c[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[l.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(bt,bt.exports);var Fe=bt.exports;const xn=Object.freeze({loose:!0}),Vn=Object.freeze({}),Un=s=>s?typeof s!="object"?xn:s:Vn;var Nt=Un;const lr=/^[0-9]+$/,cs=(s,e)=>{const t=lr.test(s),r=lr.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)=>cs(e,s);var ls={compareIdentifiers:cs,rcompareIdentifiers:Gn};const Ve=tt,{MAX_LENGTH:ur,MAX_SAFE_INTEGER:Ue}=et,{safeRe:dr,safeSrc:pr,t:Ge}=Fe,Jn=Nt,{compareIdentifiers:ge}=ls;let Mn=class ie{constructor(e,t){if(t=Jn(t),e instanceof ie){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>ur)throw new TypeError(`version is longer than ${ur} characters`);Ve("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?dr[Ge.LOOSE]:dr[Ge.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>Ue||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Ue||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Ue||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<Ue)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(Ve("SemVer.compare",this.version,this.options,e),!(e instanceof ie)){if(typeof e=="string"&&e===this.version)return 0;e=new ie(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof ie||(e=new ie(e,this.options)),ge(this.major,e.major)||ge(this.minor,e.minor)||ge(this.patch,e.patch)}comparePre(e){if(e instanceof ie||(e=new ie(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(Ve("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 ge(r,o)}while(++t)}compareBuild(e){e instanceof ie||(e=new ie(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(Ve("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 ge(r,o)}while(++t)}inc(e,t,r){if(e.startsWith("pre")){if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(t){const o=new RegExp(`^${this.options.loose?pr[Ge.PRERELEASELOOSE]:pr[Ge.PRERELEASE]}$`),n=`-${t}`.match(o);if(!n||n[1]!==t)throw new Error(`invalid identifier: ${t}`)}}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"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;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(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]),ge(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 W=Mn;const hr=W,_n=(s,e,t=!1)=>{if(s instanceof hr)return s;try{return new hr(s,e)}catch(r){if(!t)return null;throw r}};var we=_n;const Kn=we,Hn=(s,e)=>{const t=Kn(s,e);return t?t.version:null};var qn=Hn;const Wn=we,zn=(s,e)=>{const t=Wn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Xn=zn;const fr=W,Yn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new fr(s instanceof fr?s.version:s,t).inc(e,r,o).version}catch{return null}};var Qn=Yn;const gr=we,Zn=(s,e)=>{const t=gr(s,null,!0),r=gr(e,null,!0),o=t.compare(r);if(o===0)return null;const n=o>0,i=n?t:r,a=n?r:t,c=!!i.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}const l=c?"pre":"";return t.major!==r.major?l+"major":t.minor!==r.minor?l+"minor":t.patch!==r.patch?l+"patch":"prerelease"};var ei=Zn;const ti=W,ri=(s,e)=>new ti(s,e).major;var si=ri;const oi=W,ni=(s,e)=>new oi(s,e).minor;var ii=ni;const ai=W,ci=(s,e)=>new ai(s,e).patch;var li=ci;const ui=we,di=(s,e)=>{const t=ui(s,e);return t&&t.prerelease.length?t.prerelease:null};var pi=di;const mr=W,hi=(s,e,t)=>new mr(s,t).compare(new mr(e,t));var oe=hi;const fi=oe,gi=(s,e,t)=>fi(e,s,t);var mi=gi;const vi=oe,yi=(s,e)=>vi(s,e,!0);var wi=yi;const vr=W,Si=(s,e,t)=>{const r=new vr(s,t),o=new vr(e,t);return r.compare(o)||r.compareBuild(o)};var Bt=Si;const bi=Bt,Pi=(s,e)=>s.sort((t,r)=>bi(t,r,e));var Ci=Pi;const Ri=Bt,Ei=(s,e)=>s.sort((t,r)=>Ri(r,t,e));var ki=Ei;const Oi=oe,$i=(s,e,t)=>Oi(s,e,t)>0;var rt=$i;const Ti=oe,Ii=(s,e,t)=>Ti(s,e,t)<0;var jt=Ii;const Fi=oe,Ai=(s,e,t)=>Fi(s,e,t)===0;var us=Ai;const Li=oe,Di=(s,e,t)=>Li(s,e,t)!==0;var ds=Di;const Ni=oe,Bi=(s,e,t)=>Ni(s,e,t)>=0;var xt=Bi;const ji=oe,xi=(s,e,t)=>ji(s,e,t)<=0;var Vt=xi;const Vi=us,Ui=ds,Gi=rt,Ji=xt,Mi=jt,_i=Vt,Ki=(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 Vi(s,t,r);case"!=":return Ui(s,t,r);case">":return Gi(s,t,r);case">=":return Ji(s,t,r);case"<":return Mi(s,t,r);case"<=":return _i(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var ps=Ki;const Hi=W,qi=we,{safeRe:Je,t:Me}=Fe,Wi=(s,e)=>{if(s instanceof Hi)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?Je[Me.COERCEFULL]:Je[Me.COERCE]);else{const c=e.includePrerelease?Je[Me.COERCERTLFULL]:Je[Me.COERCERTL];let u;for(;(u=c.exec(s))&&(!t||t.index+t[0].length!==s.length);)(!t||u.index+u[0].length!==t.index+t[0].length)&&(t=u),c.lastIndex=u.index+u[1].length+u[2].length;c.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]}`:"",a=e.includePrerelease&&t[6]?`+${t[6]}`:"";return qi(`${r}.${o}.${n}${i}${a}`,e)};var zi=Wi;class Xi{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 Yi=Xi,ct,yr;function ne(){if(yr)return ct;yr=1;const s=/\s+/g;class e{constructor(p,v){if(v=o(v),p instanceof e)return p.loose===!!v.loose&&p.includePrerelease===!!v.includePrerelease?p:new e(p.raw,v);if(p instanceof n)return this.raw=p.value,this.set=[[p]],this.formatted=void 0,this;if(this.options=v,this.loose=!!v.loose,this.includePrerelease=!!v.includePrerelease,this.raw=p.trim().replace(s," "),this.set=this.raw.split("||").map(w=>this.parseRange(w.trim())).filter(w=>w.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const w=this.set[0];if(this.set=this.set.filter(P=>!m(P[0])),this.set.length===0)this.set=[w];else if(this.set.length>1){for(const P of this.set)if(P.length===1&&x(P[0])){this.set=[P];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 v=this.set[p];for(let w=0;w<v.length;w++)w>0&&(this.formatted+=" "),this.formatted+=v[w].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const w=((this.options.includePrerelease&&f)|(this.options.loose&&R))+":"+p,P=r.get(w);if(P)return P;const b=this.options.loose,C=b?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];p=p.replace(C,Q(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(c[u.COMPARATORTRIM],l),i("comparator trim",p),p=p.replace(c[u.TILDETRIM],d),i("tilde trim",p),p=p.replace(c[u.CARETTRIM],g),i("caret trim",p);let T=p.split(" ").map(F=>U(F,this.options)).join(" ").split(/\s+/).map(F=>G(F,this.options));b&&(T=T.filter(F=>(i("loose invalid filter",F,this.options),!!F.match(c[u.COMPARATORLOOSE])))),i("range list",T);const E=new Map,A=T.map(F=>new n(F,this.options));for(const F of A){if(m(F))return[F];E.set(F.value,F)}E.size>1&&E.has("")&&E.delete("");const V=[...E.values()];return r.set(w,V),V}intersects(p,v){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(w=>L(w,v)&&p.set.some(P=>L(P,v)&&w.every(b=>P.every(C=>b.intersects(C,v)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new a(p,this.options)}catch{return!1}for(let v=0;v<this.set.length;v++)if(fe(this.set[v],p,this.options))return!0;return!1}}ct=e;const t=Yi,r=new t,o=Nt,n=st(),i=tt,a=W,{safeRe:c,t:u,comparatorTrimReplace:l,tildeTrimReplace:d,caretTrimReplace:g}=Fe,{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:R}=et,m=y=>y.value==="<0.0.0-0",x=y=>y.value==="",L=(y,p)=>{let v=!0;const w=y.slice();let P=w.pop();for(;v&&w.length;)v=w.every(b=>P.intersects(b,p)),P=w.pop();return v},U=(y,p)=>(i("comp",y,p),y=D(y,p),i("caret",y),y=M(y,p),i("tildes",y),y=ue(y,p),i("xrange",y),y=_(y,p),i("stars",y),y),I=y=>!y||y.toLowerCase()==="x"||y==="*",M=(y,p)=>y.trim().split(/\s+/).map(v=>he(v,p)).join(" "),he=(y,p)=>{const v=p.loose?c[u.TILDELOOSE]:c[u.TILDE];return y.replace(v,(w,P,b,C,T)=>{i("tilde",y,w,P,b,C,T);let E;return I(P)?E="":I(b)?E=`>=${P}.0.0 <${+P+1}.0.0-0`:I(C)?E=`>=${P}.${b}.0 <${P}.${+b+1}.0-0`:T?(i("replaceTilde pr",T),E=`>=${P}.${b}.${C}-${T} <${P}.${+b+1}.0-0`):E=`>=${P}.${b}.${C} <${P}.${+b+1}.0-0`,i("tilde return",E),E})},D=(y,p)=>y.trim().split(/\s+/).map(v=>Y(v,p)).join(" "),Y=(y,p)=>{i("caret",y,p);const v=p.loose?c[u.CARETLOOSE]:c[u.CARET],w=p.includePrerelease?"-0":"";return y.replace(v,(P,b,C,T,E)=>{i("caret",y,P,b,C,T,E);let A;return I(b)?A="":I(C)?A=`>=${b}.0.0${w} <${+b+1}.0.0-0`:I(T)?b==="0"?A=`>=${b}.${C}.0${w} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.0${w} <${+b+1}.0.0-0`:E?(i("replaceCaret pr",E),b==="0"?C==="0"?A=`>=${b}.${C}.${T}-${E} <${b}.${C}.${+T+1}-0`:A=`>=${b}.${C}.${T}-${E} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.${T}-${E} <${+b+1}.0.0-0`):(i("no pr"),b==="0"?C==="0"?A=`>=${b}.${C}.${T}${w} <${b}.${C}.${+T+1}-0`:A=`>=${b}.${C}.${T}${w} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.${T} <${+b+1}.0.0-0`),i("caret return",A),A})},ue=(y,p)=>(i("replaceXRanges",y,p),y.split(/\s+/).map(v=>z(v,p)).join(" ")),z=(y,p)=>{y=y.trim();const v=p.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return y.replace(v,(w,P,b,C,T,E)=>{i("xRange",y,w,P,b,C,T,E);const A=I(b),V=A||I(C),F=V||I(T),ce=F;return P==="="&&ce&&(P=""),E=p.includePrerelease?"-0":"",A?P===">"||P==="<"?w="<0.0.0-0":w="*":P&&ce?(V&&(C=0),T=0,P===">"?(P=">=",V?(b=+b+1,C=0,T=0):(C=+C+1,T=0)):P==="<="&&(P="<",V?b=+b+1:C=+C+1),P==="<"&&(E="-0"),w=`${P+b}.${C}.${T}${E}`):V?w=`>=${b}.0.0${E} <${+b+1}.0.0-0`:F&&(w=`>=${b}.${C}.0${E} <${b}.${+C+1}.0-0`),i("xRange return",w),w})},_=(y,p)=>(i("replaceStars",y,p),y.trim().replace(c[u.STAR],"")),G=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(c[p.includePrerelease?u.GTE0PRE:u.GTE0],"")),Q=y=>(p,v,w,P,b,C,T,E,A,V,F,ce)=>(I(w)?v="":I(P)?v=`>=${w}.0.0${y?"-0":""}`:I(b)?v=`>=${w}.${P}.0${y?"-0":""}`:C?v=`>=${v}`:v=`>=${v}${y?"-0":""}`,I(A)?E="":I(V)?E=`<${+A+1}.0.0-0`:I(F)?E=`<${A}.${+V+1}.0-0`:ce?E=`<=${A}.${V}.${F}-${ce}`:y?E=`<${A}.${V}.${+F+1}-0`:E=`<=${E}`,`${v} ${E}`.trim()),fe=(y,p,v)=>{for(let w=0;w<y.length;w++)if(!y[w].test(p))return!1;if(p.prerelease.length&&!v.includePrerelease){for(let w=0;w<y.length;w++)if(i(y[w].semver),y[w].semver!==n.ANY&&y[w].semver.prerelease.length>0){const P=y[w].semver;if(P.major===p.major&&P.minor===p.minor&&P.patch===p.patch)return!0}return!1}return!0};return ct}var lt,wr;function st(){if(wr)return lt;wr=1;const s=Symbol("SemVer ANY");class e{static get ANY(){return s}constructor(l,d){if(d=t(d),l instanceof e){if(l.loose===!!d.loose)return l;l=l.value}l=l.trim().split(/\s+/).join(" "),i("comparator",l,d),this.options=d,this.loose=!!d.loose,this.parse(l),this.semver===s?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}parse(l){const d=this.options.loose?r[o.COMPARATORLOOSE]:r[o.COMPARATOR],g=l.match(d);if(!g)throw new TypeError(`Invalid comparator: ${l}`);this.operator=g[1]!==void 0?g[1]:"",this.operator==="="&&(this.operator=""),g[2]?this.semver=new a(g[2],this.options.loose):this.semver=s}toString(){return this.value}test(l){if(i("Comparator.test",l,this.options.loose),this.semver===s||l===s)return!0;if(typeof l=="string")try{l=new a(l,this.options)}catch{return!1}return n(l,this.operator,this.semver,this.options)}intersects(l,d){if(!(l instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new c(l.value,d).test(this.value):l.operator===""?l.value===""?!0:new c(this.value,d).test(l.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||l.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||l.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&l.operator.startsWith(">")||this.operator.startsWith("<")&&l.operator.startsWith("<")||this.semver.version===l.semver.version&&this.operator.includes("=")&&l.operator.includes("=")||n(this.semver,"<",l.semver,d)&&this.operator.startsWith(">")&&l.operator.startsWith("<")||n(this.semver,">",l.semver,d)&&this.operator.startsWith("<")&&l.operator.startsWith(">")))}}lt=e;const t=Nt,{safeRe:r,t:o}=Fe,n=ps,i=tt,a=W,c=ne();return lt}const Qi=ne(),Zi=(s,e,t)=>{try{e=new Qi(e,t)}catch{return!1}return e.test(s)};var ot=Zi;const ea=ne(),ta=(s,e)=>new ea(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var ra=ta;const sa=W,oa=ne(),na=(s,e,t)=>{let r=null,o=null,n=null;try{n=new oa(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new sa(r,t))}),r};var ia=na;const aa=W,ca=ne(),la=(s,e,t)=>{let r=null,o=null,n=null;try{n=new ca(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new aa(r,t))}),r};var ua=la;const ut=W,da=ne(),Sr=rt,pa=(s,e)=>{s=new da(s,e);let t=new ut("0.0.0");if(s.test(t)||(t=new ut("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 a=new ut(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!n||Sr(a,n))&&(n=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||Sr(t,n))&&(t=n)}return t&&s.test(t)?t:null};var ha=pa;const fa=ne(),ga=(s,e)=>{try{return new fa(s,e).range||"*"}catch{return null}};var ma=ga;const va=W,hs=st(),{ANY:ya}=hs,wa=ne(),Sa=ot,br=rt,Pr=jt,ba=Vt,Pa=xt,Ca=(s,e,t,r)=>{s=new va(s,r),e=new wa(e,r);let o,n,i,a,c;switch(t){case">":o=br,n=ba,i=Pr,a=">",c=">=";break;case"<":o=Pr,n=Pa,i=br,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(Sa(s,e,r))return!1;for(let u=0;u<e.set.length;++u){const l=e.set[u];let d=null,g=null;if(l.forEach(f=>{f.semver===ya&&(f=new hs(">=0.0.0")),d=d||f,g=g||f,o(f.semver,d.semver,r)?d=f:i(f.semver,g.semver,r)&&(g=f)}),d.operator===a||d.operator===c||(!g.operator||g.operator===a)&&n(s,g.semver))return!1;if(g.operator===c&&i(s,g.semver))return!1}return!0};var Ut=Ca;const Ra=Ut,Ea=(s,e,t)=>Ra(s,e,">",t);var ka=Ea;const Oa=Ut,$a=(s,e,t)=>Oa(s,e,"<",t);var Ta=$a;const Cr=ne(),Ia=(s,e,t)=>(s=new Cr(s,t),e=new Cr(e,t),s.intersects(e,t));var Fa=Ia;const Aa=ot,La=oe;var Da=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((l,d)=>La(l,d,t));for(const l of i)Aa(l,e,t)?(n=l,o||(o=l)):(n&&r.push([o,n]),n=null,o=null);o&&r.push([o,null]);const a=[];for(const[l,d]of r)l===d?a.push(l):!d&&l===i[0]?a.push("*"):d?l===i[0]?a.push(`<=${d}`):a.push(`${l} - ${d}`):a.push(`>=${l}`);const c=a.join(" || "),u=typeof e.raw=="string"?e.raw:String(e);return c.length<u.length?c:e};const Rr=ne(),Gt=st(),{ANY:dt}=Gt,be=ot,Jt=oe,Na=(s,e,t={})=>{if(s===e)return!0;s=new Rr(s,t),e=new Rr(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=ja(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},Ba=[new Gt(">=0.0.0-0")],Er=[new Gt(">=0.0.0")],ja=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===dt){if(e.length===1&&e[0].semver===dt)return!0;t.includePrerelease?s=Ba:s=Er}if(e.length===1&&e[0].semver===dt){if(t.includePrerelease)return!0;e=Er}const r=new Set;let o,n;for(const f of s)f.operator===">"||f.operator===">="?o=kr(o,f,t):f.operator==="<"||f.operator==="<="?n=Or(n,f,t):r.add(f.semver);if(r.size>1)return null;let i;if(o&&n){if(i=Jt(o.semver,n.semver,t),i>0)return null;if(i===0&&(o.operator!==">="||n.operator!=="<="))return null}for(const f of r){if(o&&!be(f,String(o),t)||n&&!be(f,String(n),t))return null;for(const R of e)if(!be(f,String(R),t))return!1;return!0}let a,c,u,l,d=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,g=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 f of e){if(l=l||f.operator===">"||f.operator===">=",u=u||f.operator==="<"||f.operator==="<=",o){if(g&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===g.major&&f.semver.minor===g.minor&&f.semver.patch===g.patch&&(g=!1),f.operator===">"||f.operator===">="){if(a=kr(o,f,t),a===f&&a!==o)return!1}else if(o.operator===">="&&!be(o.semver,String(f),t))return!1}if(n){if(d&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===d.major&&f.semver.minor===d.minor&&f.semver.patch===d.patch&&(d=!1),f.operator==="<"||f.operator==="<="){if(c=Or(n,f,t),c===f&&c!==n)return!1}else if(n.operator==="<="&&!be(n.semver,String(f),t))return!1}if(!f.operator&&(n||o)&&i!==0)return!1}return!(o&&u&&!n&&i!==0||n&&l&&!o&&i!==0||g||d)},kr=(s,e,t)=>{if(!s)return e;const r=Jt(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},Or=(s,e,t)=>{if(!s)return e;const r=Jt(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var xa=Na;const pt=Fe,$r=et,Va=W,Tr=ls,Ua=we,Ga=qn,Ja=Xn,Ma=Qn,_a=ei,Ka=si,Ha=ii,qa=li,Wa=pi,za=oe,Xa=mi,Ya=wi,Qa=Bt,Za=Ci,ec=ki,tc=rt,rc=jt,sc=us,oc=ds,nc=xt,ic=Vt,ac=ps,cc=zi,lc=st(),uc=ne(),dc=ot,pc=ra,hc=ia,fc=ua,gc=ha,mc=ma,vc=Ut,yc=ka,wc=Ta,Sc=Fa,bc=Da,Pc=xa;var Cc={parse:Ua,valid:Ga,clean:Ja,inc:Ma,diff:_a,major:Ka,minor:Ha,patch:qa,prerelease:Wa,compare:za,rcompare:Xa,compareLoose:Ya,compareBuild:Qa,sort:Za,rsort:ec,gt:tc,lt:rc,eq:sc,neq:oc,gte:nc,lte:ic,cmp:ac,coerce:cc,Comparator:lc,Range:uc,satisfies:dc,toComparators:pc,maxSatisfying:hc,minSatisfying:fc,minVersion:gc,validRange:mc,outside:vc,gtr:yc,ltr:wc,intersects:Sc,simplifyRange:bc,subset:Pc,SemVer:Va,re:pt.re,src:pt.src,tokens:pt.t,SEMVER_SPEC_VERSION:$r.SEMVER_SPEC_VERSION,RELEASE_TYPES:$r.RELEASE_TYPES,compareIdentifiers:Tr.compareIdentifiers,rcompareIdentifiers:Tr.rcompareIdentifiers};const Rc=Fn(Cc),Ec={minDelay:1500},kc="__no_updates__";class Oc extends B.PollComputablePool{constructor(t,r,o={}){super({...o,...Ec},r);S(this,"http");S(this,"preferredUpdateChannel");this.registryProvider=t,this.http=o.http,this.preferredUpdateChannel=o.preferredUpdateChannel}getKey(t){switch(t.currentSpec.type){case"dev-v1":return`dev_1_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"dev-v2":return`dev_2_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"from-registry-v2":return`from_registry_v2_${re(t)}`;default:return kc}}async readValue(t){var r,o;try{const n=t.currentSpec;switch(n.type){case"dev-v1":try{const i=await kt(n.folder);return i===n.mtime?{suggestions:[]}:{mainSuggestion:{...n,mtime:i},suggestions:[]}}catch(i){return this.logger.warn(i),{suggestions:[]}}case"dev-v2":try{const i=await H.tryLoadPackDescription(n.folder,this.logger);if(i===void 0)return{suggestions:[]};const a=await ze(i);return a===n.mtime?{suggestions:[]}:{mainSuggestion:{...n,mtime:a},suggestions:[]}}catch(i){return this.logger.warn(i),{suggestions:[]}}case"from-registry-v2":try{const{versionLock:i,skipVersion:a}=t.settings;if(i==="patch")return{suggestions:[]};const c=this.registryProvider.getRegistry(n.registryUrl);let u=this.preferredUpdateChannel;if(u===void 0)if(n.channel===void 0)if(await c.getLatestOverview(n.id,K.StableChannel))u=K.StableChannel;else{if(await c.getLatestOverview(n.id,K.AnyChannel)===void 0)return this.logger.error(`No "any" channel record for ${K.blockPackIdToString(n.id)}`),{suggestions:[]};u=K.AnyChannel}else u=n.channel;const l=await c.getUpdateSuggestions(n.id,u);if(l===void 0||l.length===0)return{suggestions:[]};l.reverse();let d;switch(i){case void 0:d=l[0].update;break;case"major":d=(r=l.find(R=>R.type!=="major"))==null?void 0:r.update;break;case"minor":d=(o=l.find(R=>R.type==="patch"))==null?void 0:o.update;break}const g=l.map(({type:R,update:m})=>({type:R,update:{...n,id:{...n.id,version:m}}}));if(d===void 0)return{suggestions:g};if(a!==void 0&&Rc.lte(d,a))return{suggestions:g};const f={...n,id:{...n.id,version:d}};return(async()=>{try{await c.getComponents(f.id)}catch(R){this.logger.warn(R)}})(),{suggestions:g,mainSuggestion:f}}catch(i){return this.logger.warn(i),{suggestions:[]}}default:return{suggestions:[]}}}catch(n){return this.logger.warn(n),{suggestions:[]}}}resultsEqual(t,r){return re(t)===re(r)}}class Ir{constructor(){S(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");t.refCount===0&&(this.resources.delete(e),(o=>o!=null&&typeof o[Symbol.dispose]=="function")(t.resource)&&t.resource[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}}let Pe;function le(){return Pe||(Pe={logPFrameRequests:process.env.MI_LOG_PFRAMES!==void 0,usePFrameRs:process.env.MI_USE_PFRAMES_RS!==void 0},process.env.MI_LOG_TREE_STAT&&(Pe.logTreeStats=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request"),Pe)}function Oe(s){return String(s.id)}const $c=["Int","Long","Float","Double","String","Bytes"];function me(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 t}function ht(s){return le().usePFrameRs?s.rustCallback():s.rustCallback().catch(e=>{var t;if(((t=s.signal)==null?void 0:t.aborted)===!1)return e instanceof Error&&s.logger.warn(`PFrames Rust failed, error: ${e.message}`),s.cppCallback();throw e})}const Ce=(s,e)=>typeof e=="bigint"?e.toString():e;class Tc{constructor(e,t,r,o){S(this,"rustPFrame");S(this,"blobIdToResource",new Map);S(this,"blobHandleComputables",new Map);S(this,"createDataPFrame");S(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});S(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});S(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.logger=t,this.blobContentCache=r;const n=(a,c)=>{switch(a){default:case"info":return this.logger.info(c);case"warn":return this.logger.warn(c);case"error":return this.logger.error(c)}};for(const a of o)for(const c of Eo(a.data))this.blobIdToResource.set(Oe(c),c);const i=[...new Map(o.map(a=>({...a,data:ko(a.data,Oe)})).map(a=>[re(a),a])).values()];this.rustPFrame=(()=>{try{const a=new Rs.PFrame(le().logPFrameRequests?n:void 0);a.setDataSource(this);for(const c of i)a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data);return a}catch(a){throw new Error(`Rust PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}})(),this.createDataPFrame=()=>{try{const a=le().logPFrameRequests?new qt.PFrame(n):new qt.PFrame;a.setDataSource(this);for(const c of i)try{a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data)}catch(u){throw new Error(`Adding column ${c.id} to PFrame failed: ${u}; Spec: ${JSON.stringify(c.spec)}, DataInfo: ${JSON.stringify(c.data)}.`)}return a}catch(a){throw new Error(`Data PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}}}get disposableDataPFrame(){const e=this.createDataPFrame();return{dataPFrame:e,[Symbol.dispose]:()=>{e.dispose()}}}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.rustPFrame.dispose()}}class Ic{constructor(e){this.table=e}[Symbol.dispose](){this.table.then(e=>e.dispose())}}class Fc{constructor(e,t){S(this,"pFrames");S(this,"pTables");S(this,"blobContentCache");S(this,"concurrencyLimiter");this.blobDriver=e,this.logger=t;const r=new Ar.LRUCache({maxSize:1e9,fetchMethod:async n=>await Nr.readFile(n),sizeCalculation:n=>n.length});this.blobContentCache=r;const o=new k.ConcurrencyLimitingExecutor(1);this.concurrencyLimiter=o,this.pFrames=new class extends Ir{constructor(n,i){super(),this.blobDriver=n,this.logger=i}createNewResource(n){return le().logPFrameRequests&&t.info(`PFrame creation (pFrameHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,Ce)}`),new Tc(this.blobDriver,this.logger,r,n)}calculateParamsKey(n){return Lc(n)}}(this.blobDriver,this.logger),this.pTables=new class extends Ir{constructor(n){super(),this.pFrames=n}createNewResource(n){const i=n.pFrameHandle;le().logPFrameRequests&&t.info(`PTable creation (pTableHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,Ce)}`);const a=ht({cppCallback:()=>o.run(async()=>{var u=[];try{const c=Ae(u,this.pFrames.getByKey(i).disposableDataPFrame);return await c.dataPFrame.createTable({src:de(n.def.src),filters:me(n.def.filters)},n.signal)}catch(l){var d=l,g=!0}finally{Le(u,d,g)}}).then(async c=>{if(n.def.sorting.length===0)return c;try{return await o.run(async()=>await c.sort(n.def.sorting,n.signal))}finally{c.dispose()}}),rustCallback:()=>this.pFrames.getByKey(i).rustPFrame.createTable({src:de(n.def.src),filters:me(n.def.filters)},n.signal).then(async c=>{if(n.def.sorting.length===0)return c;try{return await c.sort(n.def.sorting,n.signal)}finally{c.dispose()}}),logger:t,filters:n.def.filters,signal:n.signal});return new Ic(a)}calculateParamsKey(n){return Ac(n)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>$c.find(i=>i===n.spec.valueType)).map(n=>N.mapPObjectData(n,i=>Ct.isPlTreeNodeAccessor(i)?Ao(i):Lo(n.spec,i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t,r){const o=this.createPFrame(N.extractAllColumns(e.src),t),n=N.mapPTableDef(e,a=>a.id),i=this.pTables.acquire({def:n,pFrameHandle:o,signal:r});return le().logPFrameRequests&&this.logger.info(`Create PTable call (pFrameHandle = ${o}; pTableHandle = ${JSON.stringify(i)}): ${JSON.stringify(N.mapPTableDef(e,a=>a.spec),Ce)}`),t.addOnDestroy(i.unref),i.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:[...new Map(t.compatibleWith.map(n=>[re(n),n])).values()],qualifications:[]}]:[]};return{hits:(await this.pFrames.getByKey(e).rustPFrame.findColumns(r)).hits.filter(n=>n.mappingVariants.length===0||n.mappingVariants.some(i=>i.qualifications.forHit.length===0&&i.qualifications.forQueries.every(a=>a.length===0))).map(n=>n.hit)}}async getColumnSpec(e,t){return await this.pFrames.getByKey(e).rustPFrame.getColumnSpec(t)}async listColumns(e){return await this.pFrames.getByKey(e).rustPFrame.listColumns()}async calculateTableData(e,t,r){return le().logPFrameRequests&&this.logger.info(`Call calculateTableData, handle = ${e}, request = ${JSON.stringify(t,Ce)}`),await ht({cppCallback:async()=>await this.concurrencyLimiter.run(async()=>{var n=[];try{const o=Ae(n,this.pFrames.getByKey(e).disposableDataPFrame);return await o.dataPFrame.createTable({src:de(t.src),filters:me(t.filters)},r)}catch(i){var a=i,c=!0}finally{Le(n,a,c)}}).then(async o=>{if(t.sorting.length===0)return o;try{return await this.concurrencyLimiter.run(async()=>await o.sort(t.sorting,r))}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await this.concurrencyLimiter.run(async()=>await o.getData([...n.keys()]));return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}}),rustCallback:async()=>await this.pFrames.getByKey(e).rustPFrame.createTable({src:de(t.src),filters:me(t.filters)},r).then(async o=>{if(t.sorting.length===0)return o;try{return await o.sort(t.sorting,r)}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await o.getData([...n.keys()]);return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}}),logger:this.logger,filters:t.filters,signal:r})}async getUniqueValues(e,t,r){return le().logPFrameRequests&&this.logger.info(`Call getUniqueValues, handle = ${e}, request = ${JSON.stringify(t,Ce)}`),await ht({cppCallback:async()=>await this.concurrencyLimiter.run(async()=>{var n=[];try{const o=Ae(n,this.pFrames.getByKey(e).disposableDataPFrame);return await o.dataPFrame.getUniqueValues({...t,filters:me(t.filters)},r)}catch(i){var a=i,c=!0}finally{Le(n,a,c)}}),rustCallback:async()=>await this.pFrames.getByKey(e).rustPFrame.getUniqueValues({...t,filters:me(t.filters)},r),logger:this.logger,filters:t.filters,signal:r})}async getShape(e){return(await this.pTables.getByKey(e).table).getShape()}async getSpec(e){return(await this.pTables.getByKey(e).table).getSpec()}async getData(e,t,r){const o=await this.pTables.getByKey(e).table;return await this.concurrencyLimiter.run(async()=>await o.getData(t,r))}}function de(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=>de(e))};case"outer":return{type:"outer",primary:de(s.primary),secondary:s.secondary.map(e=>de(e))};default:k.assertNever(s)}}function Ac(s){const e=se.createHash("sha256");return e.update(re(s)),e.digest().toString("hex")}function Lc(s){const e=[...s].map(r=>N.mapPObjectData(r,o=>{let n;const i=o.type;switch(i){case"Json":n={type:o.type,keyLength:o.keyLength,payload:Object.entries(o.data).map(([a,c])=>({key:a,value:c}))};break;case"JsonPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:Oe(c)}))};break;case"BinaryPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:[Oe(c.index),Oe(c.values)]}))};break;default:throw Error(`unsupported resource type: ${JSON.stringify(i)}`)}return n.payload.sort((a,c)=>a.key.localeCompare(c.key)),n}));e.sort((r,o)=>r.id.localeCompare(o.id));const t=se.createHash("sha256");return t.update(re(e)),t.digest().toString("hex")}async function fs(s,e,t){const r={...Lt,...Dt(e),...t},o=new k.HmacSha256Signer(r.localSecret),n=ee.createDownloadClient(r.logger,s,r.localProjections),i=ee.createLogsClient(s,r.logger),a=ee.createUploadBlobClient(s,r.logger),c=ee.createUploadProgressClient(s,r.logger),u=new ee.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),l=new ee.DownloadBlobToURLDriver(r.logger,o,n,r.downloadBlobToURLPath,r.downloadBlobToURLDriverOps),d=new ee.UploadDriver(r.logger,o,a,c,r.uploadDriverOps),g=new ee.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),f=new ee.LogsDriver(r.logger,g,u),R=await ee.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),m=new Fc(u,r.logger);return{blobDriver:u,blobToURLDriver:l,logDriver:f,lsDriver:R,signer:o,uploadDriver:d,pFrameDriver:m}}class Mt{constructor(e,t,r,o,n,i,a,c){S(this,"pl");S(this,"projectList");S(this,"openedProjectsByRid",new Map);this.env=e,this.driverKit=t,this.signer=r,this.projectListResourceId=o,this.openedProjectsList=n,this.projectListTree=i,this.blockRegistryProvider=a,this.projectList=c,this.pl=this.env.pl}get internalDriverKit(){return this.env.driverKit}async createProject(e,t=se.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await Ro(o,e);return o.createField(h.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await h.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await te(this.pl,e,r,o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(h.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(h.field(this.projectListResourceId,e))).value;if(h.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 Ze.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 k.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={...ns,...is(t),...r};o.defaultTreeOptions.logStat=le().logTreeStats;const n=await e.withWriteTx("MLInitialization",async m=>{const x=h.field(m.clientRoot,zs);m.createField(x,"Dynamic");const L=await m.getField(x);if(h.isNullResourceId(L.value)){const U=m.createEphemeral(Ur);return m.lock(U),m.setField(x,U),await m.commit(),await U.globalId}else return L.value}),i=o.logger,a=await fs(e,t,o),c=new We.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new jr(c),l=new vo(u,a.signer,c),d=new ee.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),g={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:o,bpPreparer:l,frontendDownloadDriver:d,driverKit:a,blockUpdateWatcher:new Oc(u,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await $e.getQuickJS()},f=new B.WatchableValue([]),R=await Ys(e,n,f,g);return new Mt(g,a,a.signer,n,f,R.tree,u,R.computable)}}const Dc=["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 Nc(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=[];Dc.forEach(c=>{Es.channel(c).subscribe(l=>{var g;const d=new Date().toISOString();(g=l==null?void 0:l.response)!=null&&g.headers&&(l.response.headers=l.response.headers.map(f=>f.toString())),r.push(JSON.stringify({timestamp:d,event:c,data:l}))})});const o={plPings:[],blockRegistryOverviewChecks:[],blockGARegistryOverviewChecks:[],blockRegistryUiChecks:[],blockGARegistryUiChecks:[],autoUpdateCdnChecks:[]},n=h.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});o.plPings=await ve(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const u=await new h.UnauthenticatedPlClient(n).ping();return JSON.stringify(u).slice(0,t.bodyLimit)+"..."});const a=new h.UnauthenticatedPlClient(n).ll.httpDispatcher;return o.blockRegistryOverviewChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,a)),o.blockGARegistryOverviewChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,a)),o.blockRegistryUiChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockUiPath,t.blockRegistryUrl),t,a)),o.blockGARegistryUiChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Re(new URL(t.blockUiPath,t.blockGARegistryUrl),t,a)),o.autoUpdateCdnChecks=await ve(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await Re(t.autoUpdateCdnUrl,t,a)),Bc(o,s,t,r)}async function ve(s,e,t){const r=Pt(),o=[];for(;Fr(r)<s;){const n=Pt();let i;try{i={ok:!0,value:await t()}}catch(u){i={ok:!1,error:u}}const a=Fr(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await Dr.setTimeout(c)}return o}async function Re(s,e,t){const{body:r,statusCode:o}=await We.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function Bc(s,e,t,r){const o=s.plPings.filter(a=>a.response.ok),n=s.plPings.filter(a=>!a.response.ok),i=[...new Set(o.map(a=>JSON.stringify(a.response.value)))];return`
2
5
  Network report:
3
6
  pl endpoint: ${e};
4
7
  options: ${JSON.stringify(t,null,2)}.
5
8
 
6
- Platforma pings: ${ye(r.plPings)}
9
+ Platforma pings: ${ye(s.plPings)}
7
10
 
8
- Block registry overview responses: ${ye(r.blockRegistryOverviewChecks)}
11
+ Block registry overview responses: ${ye(s.blockRegistryOverviewChecks)}
9
12
 
10
- Block ga registry overview responses: ${ye(r.blockGARegistryOverviewChecks)}
13
+ Block ga registry overview responses: ${ye(s.blockGARegistryOverviewChecks)}
11
14
 
12
- Block registry ui responses: ${ye(r.blockRegistryUiChecks)}
15
+ Block registry ui responses: ${ye(s.blockRegistryUiChecks)}
13
16
 
14
- Block ga registry ui responses: ${ye(r.blockGARegistryUiChecks)}
17
+ Block ga registry ui responses: ${ye(s.blockGARegistryUiChecks)}
15
18
 
16
- Auto-update CDN responses: ${ye(r.autoUpdateCdnChecks)}
19
+ Auto-update CDN responses: ${ye(s.autoUpdateCdnChecks)}
17
20
 
18
21
  Block registry overview dumps:
19
- ${JSON.stringify(r.blockRegistryOverviewChecks,null,2)}
22
+ ${JSON.stringify(s.blockRegistryOverviewChecks,null,2)}
20
23
 
21
24
  Block ga registry overview dumps:
22
- ${JSON.stringify(r.blockGARegistryOverviewChecks,null,2)}
25
+ ${JSON.stringify(s.blockGARegistryOverviewChecks,null,2)}
23
26
 
24
27
  Block registry ui dumps:
25
- ${JSON.stringify(r.blockRegistryUiChecks,null,2)}
28
+ ${JSON.stringify(s.blockRegistryUiChecks,null,2)}
26
29
 
27
30
  Block ga registry ui dumps:
28
- ${JSON.stringify(r.blockGARegistryUiChecks,null,2)}
31
+ ${JSON.stringify(s.blockGARegistryUiChecks,null,2)}
29
32
 
30
33
  Auto-update CDN dumps:
31
- ${JSON.stringify(r.autoUpdateCdnChecks,null,2)}
34
+ ${JSON.stringify(s.autoUpdateCdnChecks,null,2)}
32
35
 
33
36
  Platforma pings error dumps:
34
37
  ${JSON.stringify(n,null,2)}
@@ -37,13 +40,13 @@ Platforma pings success dump examples:
37
40
  ${JSON.stringify(i,null,2)}
38
41
 
39
42
  Undici logs:
40
- ${s.join(`
43
+ ${r.join(`
41
44
  `)}
42
- `}function ye(r){const e=r.filter(o=>o.response.ok),{mean:t,median:s}=Dc(r);return`
43
- total: ${r.length};
45
+ `}function ye(s){const e=s.filter(o=>o.response.ok),{mean:t,median:r}=jc(s);return`
46
+ total: ${s.length};
44
47
  successes: ${e.length};
45
- errors: ${r.length-e.length};
48
+ errors: ${s.length-e.length};
46
49
  mean in ms: ${t};
47
- median in ms: ${s};
48
- `}function Dc(r){const e=r.map(o=>o.elapsedMs),t=e.reduce((o,n)=>o+n)/e.length;let s;if(e.length>0){const o=Math.floor(e.length/2);s=e.length%2?e[o]:(e[o-1]+e[o])/2}return{mean:t,median:s}}function Ct(){return Date.now()}function Ir(r){return Ct()-r}exports.BlockPackRegistry=Ls;exports.CentralBlockRegistry=Ds;exports.DefaultDriverKitOpsPaths=Dt;exports.DefaultDriverKitOpsSettings=Lt;exports.DefaultMiddleLayerOpsPaths=is;exports.DefaultMiddleLayerOpsSettings=ns;exports.FrontendFromFolderResourceType=Ft;exports.FrontendFromUrlResourceType=Tt;exports.MiddleLayer=Mt;exports.Project=et;exports.TengoTemplateGet=Gr;exports.TengoTemplateGetRegistry=Mr;exports.TengoTemplateGetTemplate=Kr;exports.TengoTemplateGetTemplateURI=_r;exports.TengoTemplatePack=ao;exports.TengoTemplatePackConvert=co;exports.TengoTemplatePackConvertTemplate=uo;exports.TengoTemplatePackConvertTemplatePack=lo;exports.V1CentralDevSnapshotRegistry=Bs;exports.V1CentralRegistry=Ns;exports.V2RegistryProvider=jr;exports.checkNetwork=Ac;exports.createRenderTemplate=$t;exports.getDevV1PacketMtime=kt;exports.getDevV2PacketMtime=Xe;exports.initDriverKit=fs;exports.loadTemplate=Ye;exports.prepareTemplateSpec=Hr;Object.keys(N).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>N[r]})});Object.keys(K).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>K[r]})});Object.keys(Ht).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>Ht[r]})});Object.keys(f).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>f[r]})});
50
+ median in ms: ${r};
51
+ `}function jc(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 Pt(){return Date.now()}function Fr(s){return Pt()-s}exports.BlockPackRegistry=Ds;exports.CentralBlockRegistry=Ns;exports.DefaultDriverKitOpsPaths=Dt;exports.DefaultDriverKitOpsSettings=Lt;exports.DefaultMiddleLayerOpsPaths=is;exports.DefaultMiddleLayerOpsSettings=ns;exports.FrontendFromFolderResourceType=It;exports.FrontendFromUrlResourceType=Tt;exports.MiddleLayer=Mt;exports.Project=Ze;exports.TengoTemplateGet=Jr;exports.TengoTemplateGetRegistry=Mr;exports.TengoTemplateGetTemplate=Kr;exports.TengoTemplateGetTemplateURI=_r;exports.TengoTemplatePack=co;exports.TengoTemplatePackConvert=lo;exports.TengoTemplatePackConvertTemplate=po;exports.TengoTemplatePackConvertTemplatePack=uo;exports.V1CentralDevSnapshotRegistry=js;exports.V1CentralRegistry=Bs;exports.V2RegistryProvider=jr;exports.checkNetwork=Nc;exports.createRenderTemplate=$t;exports.getDevV1PacketMtime=kt;exports.getDevV2PacketMtime=ze;exports.initDriverKit=fs;exports.loadTemplate=Xe;exports.prepareTemplateSpec=Hr;Object.keys(N).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>N[s]})});Object.keys(K).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>K[s]})});Object.keys(Ht).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>Ht[s]})});Object.keys(h).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>h[s]})});
49
52
  //# sourceMappingURL=index.js.map