@milaboratories/pl-middle-layer 1.14.26 → 1.14.28

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,28 +1,13 @@
1
- "use strict";var Ht=Object.defineProperty;var _t=(s,e,t)=>e in s?Ht(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var p=(s,e,t)=>_t(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("@platforma-sdk/model"),Z=require("@milaboratories/pl-model-middle-layer"),M=require("undici"),D=require("@platforma-sdk/block-tools"),A=require("node:fs"),x=require("node:path"),qt=require("yaml"),h=require("@milaboratories/ts-helpers"),zt=require("node:fs/promises"),Wt=require("@milaboratories/resolve-helper"),l=require("@milaboratories/pl-client"),xe=require("@milaboratories/pl-tree"),S=require("@milaboratories/computable"),K=require("node:crypto"),dt=require("denque"),Yt=require("@platforma-sdk/workflow-tengo"),je=require("canonicalize"),Qt=require("node:assert"),ae=require("quickjs-emscripten"),pt=require("node:timers/promises"),J=require("@milaboratories/pl-drivers"),Zt=require("@milaboratories/pframes-node"),Xt=require("lru-cache");function er(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 gt=er(zt);async function Qe(s){try{return await gt.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const tr=[D.RegistryV1.PlPackageYamlConfigFile],rr=[D.RegistryV1.PlPackageJsonConfigFile],Ae=["backend","dist","tengo","tpl","main.plj.gz"],Ie=["config","dist","config.json"],ht=["frontend","dist"],Ze="block-model/dist/config.json",sr="block-ui/package.json",or=[Ae,Ie,tr,rr,ht];async function nr(s){return await Qe(x.join(s,...Ie))!==void 0||await Qe(x.join(s,...Ae))!==void 0}function ve(s,e){const t=Wt.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Xe(s,e){if(x.isAbsolute(s)||(s=x.resolve(s)),await nr(s))return{workflow:x.join(s,...Ae),config:x.join(s,...Ie),ui:x.join(s,...ht)};{const t=ve(s,Ze),r=ve(s,Ze),o=ve(s,sr);return{workflow:t,config:r,ui:x.resolve(o,"..","dist")}}}async function ir(s){try{return await A.promises.readFile(s,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function ar(s){try{return await A.promises.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function Ne(s){let e=0n;for(const t of or){const r=x.join(s,...t),o=await ar(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function pe(s){const e=await A.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await A.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class cr{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 M.request(`${r.url}/${D.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const a of i){const{organization:c,package:u,latestMeta:d,latestVersion:g}=a,f={organization:c,name:u,version:g};t.push({registryId:e.id,id:f,meta:{title:d.title??"No title",description:d.description??"No Description",organization:{name:c,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:f,registryUrl:r.url},otherVersions:a.allVersions})}return t;case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(a=>({...a,registryId:e.id}));case"local-dev":for(const a of await A.promises.readdir(r.path,{withFileTypes:!0})){if(!a.isDirectory())continue;const c=x.join(r.path,a.name),u=await ir(x.join(c,D.RegistryV1.PlPackageYamlConfigFile));if(u!==void 0){const d=D.RegistryV1.PlPackageConfigData.parse(qt.parse(u)),g=await Ne(c),f={organization:d.organization,name:d.package,version:"DEV"};t.push({registryId:e.id,id:f,meta:{title:d.meta.title??"No title",description:d.meta.description??"No Description",organization:{name:d.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:c,mtime:g},otherVersions:[]})}else{const d=await D.tryLoadPackDescription(c);if(d!==void 0){const g=await pe(d);t.push({registryId:e.id,id:d.id,meta:await D.BlockPackMetaEmbedAbsoluteBytes.parseAsync(d.meta),spec:{type:"dev-v2",folder:c,mtime:g},otherVersions:[]})}}}return t;default:return h.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}}}class ft{constructor(e){p(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new D.RegistryV2Reader(D.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const ur={type:"remote-v2",url:"https://blocks.pl-open.science/"},lr={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},dr={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},pr={groups:[{id:"default",label:"Default",blocks:[]}]},gr={stagingRefreshTimestamp:0,blocksInLimbo:[]},hr={label:"New Project"},fr={name:"UserProject",version:"2"},mt="SchemaVersion",vt="1",Ve="ProjectCreated",ee="ProjectLastModified",te="ProjectMeta",q="ProjectStructure",ce="BlockRenderingState",mr="BlockFrontendState/",vr=/^BlockFrontendState\/(?<blockid>.*)$/;function Ce(s){return`${mr}${s}`}const yr="BlockArgsAuthor/";function Pe(s){return`${yr}${s}`}const Re="ProjectStructureAuthor";function br(s){const e=s.match(vr);if(e!==null)return e.groups.blockid}const wr="__serviceTemplate_";function Fe(s){return`${wr}${s}`}function P(s,e){return`${s}-${e}`}const Sr=/^(?<blockId>.*)-(?<fieldName>blockPack|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function kr(s){const e=s.match(Sr);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const Cr="projects",yt={name:"Projects",version:"1"},Pr=s=>l.resourceTypesEqual(s.type,yt)?s.fields:[];async function Rr(s,e,t,r){const o=await xe.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Pr},r.logger);return{computable:S.Computable.make(i=>{const a=i.accessor(o.entry()).node(),c=t.getValue(i);if(a===void 0)return;const u=[];for(const d of a.listDynamicFields()){const g=a.traverse(d);if(g===void 0)continue;const f=h.notEmpty(g.getKeyValueAsJson(te)),y=h.notEmpty(g.getKeyValueAsJson(Ve)),m=h.notEmpty(g.getKeyValueAsJson(ee));u.push({id:d,rid:g.id,created:new Date(y),lastModified:new Date(m),opened:c.indexOf(g.id)>=0,meta:f})}return u.sort(d=>-d.lastModified.valueOf()),u}).withStableType(),tree:o}}const Fr={name:"EphRenderTemplate",version:"1"},Or={name:"RenderTemplate",version:"1"};function Le(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(Fr):s.createStruct(Or),i=l.field(n,"template"),a=l.field(n,"inputs");return s.createField(i,"Input",e),s.createField(a,"Input",l.Pl.createPlMap(s,r,t)),s.lockInputs(n),l.Pl.futureRecord(s,n,o,"Output","outputs/")}const Br={name:"BContextEnd",version:"1"},Dr={name:"BContext",version:"1"},Tr="id",Er="parent/",xr=["context","result"];function et(s,e,t){return Le(s,e,!0,t,xr)}function jr(s){const e=s.createEphemeral(Br);return s.lock(e),e}function Ar(s,e){if(e.length===0)return jr(s);if(e.length===1)return e[0];const t=s.createEphemeral(Dr);s.createField(l.field(t,Tr),"Input",l.Pl.createPlString(s,K.randomUUID()));for(let r=0;r<e.length;r++)s.createField(l.field(t,`${Er}${r}`),"Input",e[r]);return s.lock(t),t}const bt={name:"TengoTemplateGet",version:"1"},wt="registry",St="templateURI",kt="template",Ct={name:"TengoTemplatePack",version:"1"},Pt={name:"TengoTemplatePackConvert",version:"1"},Rt="templatePack",Ft="template";async function Ot(s){switch(s.type){case"from-file":return{type:"explicit",content:await A.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return h.assertNever(s)}}function Ir(s,e){const t=s.createStruct(bt),r=l.field(t,wt),o=l.field(t,St),n=l.field(t,kt);return s.setField(r,s.createValue(l.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(l.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function Nr(s,e){const t=s.createValue(Ct,e.content),r=s.createStruct(Pt),o=l.field(r,Rt),n=l.field(r,Ft);return s.setField(o,t),n}function ge(s,e){switch(e.type){case"from-registry":return Ir(s,e);case"explicit":return Nr(s,e);default:return h.assertNever(e)}}const Je={name:"Frontend/FromUrl",version:"1"},Me={name:"Frontend/FromFolder",version:"1"};function Vr(s,e){switch(e.type){case"url":return s.createValue(Je,JSON.stringify({url:e.url}));case"local":return s.createValue(Me,JSON.stringify({path:e.path,signature:e.signature}));default:return h.assertNever(e)}}const Lr={name:"BlockPackCustom",version:"1"},Bt="template",Dt="frontend";function tt(s){return s.endsWith("/")?s:`${s}/`}class Jr{constructor(e,t,r){this.v2RegistryProvider=e,this.signer=t,this.http=r}async getBlockConfig(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Xe(e.folder),r=await A.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await D.loadPackDescription(e.folder),r=await A.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${tt(e.registryUrl)}${D.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await M.request(`${r}/config.json`,t)).body.json()}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id);return await(await M.request(o.model.url,t)).body.json()}default:return h.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Xe(e.folder),r=await A.promises.readFile(t.workflow),o=JSON.parse(await A.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 D.loadPackDescription(e.folder),r=JSON.parse(await A.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await A.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await pe(t)),{type:"explicit",template:{type:"explicit",content:o},config:r,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${tt(e.registryUrl)}${D.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,o=`${r}/template.plj.gz`,n=await M.request(o,t);if(n.statusCode!==200)throw new Error(`Block not found in registry (url = ${o} ; code = ${n.statusCode}): `+JSON.stringify(e));const i=new Uint8Array(await n.body.arrayBuffer()),c=await(await M.request(`${r}/config.json`,t)).body.json();return{type:"explicit",template:{type:"explicit",content:i},config:c,frontend:{type:"url",url:`${r}/frontend.tgz`},source:e}}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),n=async()=>await(await M.request(o.model.url,t)).body.json(),i=async()=>await(await M.request(o.workflow.main.url,t)).body.arrayBuffer(),[a,c]=await Promise.all([n(),i()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(c)},config:a,frontend:{type:"url",url:o.ui.url},source:e}}default:return h.assertNever(e)}}}function Mr(s,e){const t={config:e.config,source:e.source},r=s.createStruct(Lr,JSON.stringify(t));return s.createField(l.field(r,Bt),"Input",ge(s,e.template)),s.createField(l.field(r,Dt),"Input",Vr(s,e.frontend)),s.lock(r),r}function rt(s,e){switch(e.type){case"explicit":return Mr(s,e);default:return h.assertNever(e.type)}}function oe(s,e){return{__isRef:!0,blockId:s,name:e}}function Ur(s){return typeof s=="object"&&s!==null&&s.__isRef===!0&&"blockId"in s&&"name"in s}function Oe(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(Ur(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)Oe(s,o,t);else for(const[,o]of Object.entries(e))Oe(s,o,t);return;default:h.assertNever(r)}}function Kr(s,e){const t={upstreams:new Set,missingReferences:!1};return Oe(t,s,e),t}function V(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class Tt{constructor(e){p(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,o=>r.add(o.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const o of t)r.delete(o);return r}traverse(e,t,r){let o=[...t];const n=new Set(o);for(;o.length>0;){let i=[];for(const 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 Be(s){const e=new Map;let t;for(const{id:r}of V(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 Tt(e)}function ne(s,e){const t=new Map,r=new Set;for(const{id:o}of V(s)){const n=e(o);if(n===void 0)continue;const i=Kr(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 Tt(t)}function $r(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function De(s,e){if(s.size>e.size)return De(e,s);for(const t of s)if(e.has(t))return!0;return!1}function st(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):(!$r(n.upstream,i.upstream)||De(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?De(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let ye;async function Et(){if(ye===void 0){const s=await Ot(Yt.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=K.createHash("sha256").update(s.content).digest("hex");ye={spec:s,hash:e}}return ye}function Gr(s,e,t){return Le(s,e,!0,{pf:t},["result"]).result}function be(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 ot{constructor(e,t){p(this,"currentInputsC",be(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));p(this,"actualProductionInputsC",be(()=>{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())}));p(this,"productionStaleC",be(()=>{var e;return`${this.fields.currentArgs.modCount}_${(e=this.fields.prodArgs)==null?void 0:e.modCount}`},()=>this.fields.prodArgs===void 0||Buffer.compare(this.fields.currentArgs.value,this.fields.prodArgs.value)!==0));this.id=e,this.fields=t}check(){if(this.fields.prodOutput===void 0!=(this.fields.prodCtx===void 0))throw new Error("inconsistent prod fields");if(this.fields.stagingOutput===void 0!=(this.fields.stagingCtx===void 0))throw new Error("inconsistent stage fields");if(this.fields.prodOutputPrevious===void 0!=(this.fields.prodCtxPrevious===void 0))throw new Error("inconsistent prod cache fields");if(this.fields.stagingOutputPrevious===void 0!=(this.fields.stagingCtxPrevious===void 0))throw new Error("inconsistent stage cache fields");if(this.fields.blockPack===void 0)throw new Error("no block pack field");if(this.fields.currentArgs===void 0)throw new Error("no current args field")}get currentInputs(){return this.currentInputsC()}get stagingRendered(){return this.fields.stagingCtx!==void 0}get productionRendered(){return this.fields.prodCtx!==void 0}get productionStale(){return this.productionRendered&&this.productionStaleC()}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(l.Pl.unwrapHolder(e,this.fields.blockPack.ref),Bt,"Input")}}const Hr=s=>{throw new Error(`No new block info for ${s}`)};class ue{constructor(e,t,r,o,n,i,a,c,u,d,g,f){p(this,"globalModCount",0);p(this,"fieldsChanged",!1);p(this,"lastModifiedChanged",!1);p(this,"structureChanged",!1);p(this,"metaChanged",!1);p(this,"renderingStateChanged",!1);p(this,"changedBlockFrontendStates",new Set);p(this,"blocksWithChangedInputs",new Set);p(this,"stagingGraph");p(this,"pendingProductionGraph");p(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=d,this.blockFrontendStates=g,this.ctxExportTplHolder=f}fixProblems(){this.blockInfos.forEach(e=>{(e.fields.prodArgs===void 0||e.fields.prodOutput===void 0||e.fields.prodCtx===void 0)&&this.deleteBlockFields(e.id,"prodArgs","prodOutput","prodCtx")})}get wasModified(){return this.lastModifiedChanged||this.structureChanged||this.fieldsChanged||this.metaChanged||this.renderingStateChanged||this.changedBlockFrontendStates.size>0}get structure(){return JSON.parse(JSON.stringify(this.struct))}getStagingGraph(){return this.stagingGraph===void 0&&(this.stagingGraph=Be(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=ne(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=ne(this.struct,e=>this.getBlockInfo(e).actualProductionInputs)),this.actualProductionGraph}getBlockInfo(e){return h.notEmpty(this.blockInfos.get(e))}getBlock(e){for(const t of V(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=l.field(this.rid,P(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(l.field(this.rid,P(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(l.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())}setBlockLabel(e,t){const r=this.structure;let o=!1;for(const n of V(r))if(n.id===e){n.label=t,o=!0;break}if(!o)throw new Error(`block ${e} not found`);this.updateStructure(r),this.updateLastModified()}createCtx(e,t){const r=[];return e.forEach(o=>{const n=this.getBlockInfo(o);if(n.fields[t]===void 0||n.fields[t].ref===void 0)throw new Error("One of the upstreams staging is not rendered.");r.push(l.Pl.unwrapHolder(this.tx,n.fields[t].ref))}),Ar(this.tx,r)}exportCtx(e){return Gr(this.tx,l.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getStagingGraph().nodes.get(e).upstream,"stagingCtx");if(this.getBlock(e).renderingMode!=="Heavy")throw new Error("not supported yet");const o=t.getTemplate(this.tx),n=et(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(l.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(l.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",l.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"stagingUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"stagingOutput",n.result,"NotReady")}renderProductionFor(e){this.resetProduction(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getPendingProductionGraph().nodes.get(e).upstream,"prodCtx");if(this.getBlock(e).renderingMode==="Light")throw new Error("Can't render production for light block.");const o=t.getTemplate(this.tx),n=et(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(l.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(l.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",l.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=Hr){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=Be(e),i=ne(e,u=>{var d;return(d=this.blockInfos.get(u))==null?void 0:d.actualProductionInputs}),a=st(r,n),c=st(o,i);for(const u of a.onlyInA){const{fields:d}=this.getBlockInfo(u);this.deleteBlockFields(u,...Object.keys(d)),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 d=new ot(u,{});this.blockInfos.set(u,d);const g=t(u),f=rt(this.tx,g.blockPack);this.setBlockField(u,"blockPack",l.Pl.wrapInHolder(this.tx,f),"NotReady");const y=Buffer.from(g.args),m=this.tx.createValue(l.Pl.JsonObject,y);this.setBlockField(u,"currentArgs",m,"Ready",y),d.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",l.Pl.wrapInHolder(this.tx,rt(this.tx,t)),"NotReady"),r!==void 0?(this.setArgs([{blockId:e,args:r}]),this.setUiState(e,void 0)):this.getStagingGraph().traverse("downstream",[e],({id:n})=>this.resetStaging(n)),o.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,i=>{r.add(i.id)});else for(const i of r){const a=o.nodes.get(i);if(a===void 0)throw new Error(`Can't find block with id: ${i}`);for(const c of a.upstream)if(!r.has(c))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const i of V(this.structure)){if(!r.has(i.id))continue;let a=this.getBlockInfo(i.id).requireProductionRendering||this.blocksInLimbo.has(i.id);if(!a){for(const c of o.nodes.get(i.id).upstream)if(n.has(c)){a=!0;break}}a&&(this.renderProductionFor(i.id),n.add(i.id))}return o.traverse("downstream",[...n],i=>{n.has(i.id)||this.resetOrLimboProduction(i.id)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,a;const t=this.getActualProductionGraph(),r=new dt(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 d of t.traverseIdsExcludingRoots("downstream",c))o.has(d)||(r.push(d),o.add(d))}}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,Pe(t)):this.tx.setKValue(this.rid,Pe(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,Re):this.tx.setKValue(this.rid,Re,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,ee,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,q,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,ce,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,Ce(e)):this.tx.setKValue(this.rid,Ce(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,mt),i=e.getKValueJson(t,ee),a=e.getKValueJson(t,te),c=e.getKValueJson(t,q),u=e.getKValueJson(t,ce),d=e.listKeyValuesString(t),[g,f,y,m,C,{stagingRefreshTimestamp:I,blocksInLimbo:H},$]=await Promise.all([o,n,i,a,c,u,d]);if(f!==vt)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${f}`);const _=new Map;for(const w of g.fields){const B=kr(w.name);if(B===void 0)continue;let R=_.get(B.blockId);R===void 0&&(R={id:B.blockId,fields:{}},_.set(B.blockId,R)),R.fields[B.fieldName]=l.isNullResourceId(w.value)?{modCount:0}:{modCount:0,ref:w.value}}const z=await Et(),re=Fe(z.hash),k=g.fields.find(w=>w.name===re);let U;k!==void 0?U=l.ensureResourceIdNotNull(k.value):(U=l.Pl.wrapInHolder(e,ge(e,z.spec)),e.createField(l.field(t,Fe(z.hash)),"Dynamic",U));const W={stagingRefreshTimestamp:I},j=new Set(H),T=new Map;for(const w of $){const B=br(w.key);B!==void 0&&T.set(B,w.value)}const O=[];_.forEach(({id:w,fields:B})=>{for(const[,R]of Object.entries(B))if(R.ref!==void 0){if(!l.isResource(R.ref)||l.isResourceRef(R.ref))throw new Error("unexpected behaviour");O.push([R,e.getResourceData(R.ref,!1)])}});for(const[w,B]of O){const R=await B;w.value=R.data,l.isNotNullResourceId(R.error)?w.status="Error":R.resourceReady||l.isNotNullResourceId(R.originalResourceId)?w.status="Ready":w.status="NotReady"}const G=new Map;_.forEach(({id:w,fields:B})=>G.set(w,new ot(w,B)));const L=new Set;for(const w of V(C)){if(!G.has(w.id))throw new Error(`Inconsistent project structure: no inputs for ${w.id}`);L.add(w.id)}G.forEach(w=>{if(!L.has(w.id))throw new Error(`Inconsistent project structure: no structure entry for ${w.id}`);w.check()});const se=new ue(t,e,r,f,y,m,C,W,j,G,T,U);return se.fixProblems(),se}}async function _r(s,e=hr){const t=s.createEphemeral(fr);s.lock(t);const r=String(Date.now());s.setKValue(t,mt,JSON.stringify(vt)),s.setKValue(t,Ve,r),s.setKValue(t,ee,r),s.setKValue(t,te,JSON.stringify(e)),s.setKValue(t,q,JSON.stringify(pr)),s.setKValue(t,ce,JSON.stringify(gr));const o=await Et();return s.createField(l.field(t,Fe(o.hash)),"Dynamic",l.Pl.wrapInHolder(s,ge(s,o.spec))),t}async function we(s,e,t){return N(s,e,void 0,t)}async function N(s,e,t,r){if(s instanceof l.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await ue.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await ue.load(s,e,t),n=await r(o);return o.save(),n}}function*qr(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:h.assertNever(s)}}function nt(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function zr(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:nt(s.parts,e)};case"BinaryPartitioned":return{...s,parts:nt(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:h.assertNever(s)}}const Wr=l.resourceType("PColumnData/JsonPartitioned","1"),Yr=l.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),Qr=l.resourceType("PColumnData/BinaryPartitioned","1"),Zr=l.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Xr=l.resourceType("PColumnData/Json","1");function es(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(l.resourceTypesEqual(s.resourceType,Xr)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(l.resourceTypesEqual(s.resourceType,Wr)){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(l.resourceTypesEqual(s.resourceType,Yr)){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(l.resourceTypesEqual(s.resourceType,Qr)){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(l.resourceTypesEqual(s.resourceType,Zr)){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 d=r[u];d===void 0&&(d={},r[u]=d),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 d=r[u];d===void 0&&(d={},r[u]=d),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: ${l.resourceTypeToString(s.resourceType)}`)}function xt(s,e){const t=K.createHash("sha256");return t.update(je(s)),t.update(String(l.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function jt(s,e=!0,t=!1,r=""){var a,c,u;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const d of s.listInputFields()){const g=d.match(o);if(!g){if(e)throw new Error(`unexpected field name ${d}`);continue}let f=h.notEmpty((a=g.groups)==null?void 0:a.name);if(!f.startsWith(r)){if(e)throw new Error(`unexpected field name ${d}`);continue}f=f.slice(r.length);const y=h.notEmpty((c=g.groups)==null?void 0:c.type);let m=n.get(f);switch(m===void 0&&(m={},n.set(f,m)),y){case"spec":m.spec=(u=s.traverse({field:d,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":m.hasData=!0,m.data=()=>s.traverseOrError({field:d,ignoreError:t});default:continue}}const i=s.getInputsLocked();if(i)for(const[,d]of n)d.data===void 0&&(d.hasData=!1);return{locked:i,results:n}}function ts(s,e=!0,t=""){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const r=jt(s,e,!1,t);Qt(r.locked);const o={};for(const[n,i]of r.results){if(i.spec===void 0)throw new Error(`no spec for key ${n}`);if(i.hasData!==!0||i.data===void 0)throw new Error(`no data for key ${n}`);const a=i.data();if(a===void 0)throw new Error(`no data for key ${n}`);if(!a.ok)throw new xe.PlError(a.error);o[n]={id:xt(i.spec,a.value),spec:i.spec,data:a.value}}return o}class Ue{constructor(e,t){p(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}getBlockLabel(e){var t,r;return h.notEmpty((r=(t=this.blocks.get(e))==null?void 0:t.info)==null?void 0:r.label,`block "${e}" not found`)}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:oe(i,a),obj:{id:u.ok?xt(c.spec,u.value):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,d]of a.prod.results)c.add(u),n(i,u,d)}if(a.staging!==void 0){a.staging.locked||o(`staging_not_locked:${i}`);for(const[u,d]of a.staging.results)c.has(u)||n(i,u,d)}}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:oe(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:oe(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),F.executePSpecPredicate(e,c.spec)&&t.push({label:r.info.label+" / "+a,ref:oe(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=h.notEmpty(o.getKeyValueAsJson(q)),a=Be(n).traverseIds("upstream",r),c=new Map;for(const u of V(n)){if(!a.has(u.id))continue;const d=it(o.traverse({field:P(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:P(u.id,"prodUiCtx"),stableIfNotFound:!0})),g=it(o.traverse({field:P(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:P(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:d,staging:g})}return new Ue(e,c)}}function it(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return jt(e.value,!1,!0)}function Ke(s,e){const t=s.persist(),r=h.notEmpty(s.traverse({field:P(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),o=s.getKeyValueAsString(Ce(e));return{blockId:e,args:r,uiState:o,blockMeta:n=>{const i=n.accessor(t).node(),a=h.notEmpty(i.getKeyValueAsJson(q)),c=new Map;for(const u of V(a))c.set(u.id,u);return c}}}function At(s,e){const t=s.persist();return{...Ke(s,e),prod:r=>{var o;return(o=r.accessor(t).node({ignoreError:!0}).traverse({field:P(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:o.persist()},staging:r=>{var n;const o=(n=r.accessor(t).node({ignoreError:!0}).traverse({field:P(e,"stagingOutput"),ignoreError:!0}))==null?void 0:n.persist();return o===void 0&&r.markUnstable("staging_not_rendered"),o},getResultsPool:r=>Ue.create(r,t,e)}}function*E(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*E(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*E(t);return;case"MakeArray":for(const t of s.template)yield*E(t);return;case"GetJsonField":case"GetResourceField":yield*E(s.source),yield*E(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*E(s.source),yield*E(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetLogHandle":yield*E(s.source);return;case"IsEmpty":yield*E(s.arg);return;case"Not":yield*E(s.operand);return;case"And":case"Or":yield*E(s.operand1),yield*E(s.operand2);return;default:h.assertNever(s)}}function rs(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function le(s,e){return s===void 0?void 0:e(s)}function ss(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function os(s){for(const e of E(s))if(ss(e))return!0;return!1}function he(s){return{type:"ReturnResult",result:s}}function v(s){return()=>he(s)}const ns=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return v(e)},is=s=>{const e=s.source;if(e===void 0)return v(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return v(t)},as=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?v(void 0):({cCtx:r})=>{var o;return he((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function It(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function cs(s,e){return t=>{const r=t.source;return r===void 0?v(void 0):()=>({type:"ScheduleSubroutine",subroutine:Nt(r.length),args:It(r,o=>b({...s,[e.itVar]:o},e.mapping))})}}function Nt(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return v(t)}}function us(s,e){return t=>{const r=t.source;if(r===void 0)return v(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=b(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:ls,args:o})}}const ls=s=>v(s),ds=s=>{const e=s.arg;return v(e===void 0?void 0:e.length===0)},ps=s=>{const e=s.operand;return v(e===void 0?void 0:!e)},gs=s=>{const e=s.operand1,t=s.operand2;return v(e===void 0||t===void 0?void 0:e&&t)},hs=s=>{const e=s.operand1,t=s.operand2;return v(e===void 0||t===void 0?void 0:e||t)},fs=s=>{const e=s.source;return e===void 0?v(void 0):({cCtx:t})=>{var r;return he((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},ms=s=>{const e=s.source,t=s.field;return v(e===void 0||t===void 0?void 0:e[t])};function vs(s,e){return t=>{const r=t.source;return r===void 0?v(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]=v(void 0);else{const u={...s,[e.itVar]:c.persist()};i[a]=b(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:ys,args:i}}}}const ys=s=>v(s),bs=s=>{const e=s.source;return e===void 0?v(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:S.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)}})})},ws=s=>{const e=s.source;return e===void 0?v(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:S.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},Ss=s=>{const e=s.source;return e===void 0?v(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:S.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())}})})},ks=s=>{const e=s.source;return e===void 0?v(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},Cs=s=>{const e=s.source;return e===void 0?v(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},Ps=s=>{const e=s.source;return e===void 0?v(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},Rs=s=>e=>{const t=e.source;return t===void 0?v(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},Fs=s=>e=>{const t=e.source;return t===void 0?v(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},Os=s=>{const e=s.source;return e===void 0?v(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function b(s,e){switch(e.type){case"GetFromCtx":const t=s[e.variable];return typeof t=="function"?r=>he(t(r.cCtx)):(t===void 0&&console.log("asdasd"),v(t));case"Isolate":return({drivers:r})=>({type:"ScheduleComputable",computable:Mt(r,s,e.cfg)});case"Immediate":return v(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:ms,args:{source:b(s,e.source),field:b(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:cs(s,e),args:{source:b(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:us(s,e),args:{source:b(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:ns,args:rs(e.template,r=>b(s,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:Nt(e.template.length),args:It(e.template,r=>b(s,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:is,args:{source:b(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:ds,args:{arg:b(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:ps,args:{operand:b(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:gs,args:{operand1:b(s,e.operand1),operand2:b(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:hs,args:{operand1:b(s,e.operand1),operand2:b(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:vs(s,e),args:{source:b(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:as,args:{source:b(s,e.source),field:b(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:fs,args:{source:b(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:bs,args:{source:b(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:ws,args:{source:b(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Ss,args:{source:b(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:ks,args:{source:b(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Cs,args:{source:b(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:Ps,args:{source:b(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:Rs(e.lines),args:{source:b(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:Fs(e.patternToSearch),args:{source:b(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:Os,args:{source:b(s,e.source)}});default:return h.assertNever(e)}}const Bs=["$prod","$staging"];function Ds(s){return{$blockId:s.blockId,$args:JSON.parse(s.args),$ui:s.uiState!==void 0?JSON.parse(s.uiState):void 0,$prod:s.prod,$staging:s.staging}}const Vt=Symbol(),Lt="return",Ts={op:Vt,arg:Lt};function Es(s){return s.op==Vt&&s.arg==Lt}function xs(){return{pendingSubroutines:new Map}}function at(s,e,t,r){const o=new dt(t),n=(a,c)=>{if(Es(a))return e.result=c,!1;const u=h.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(),d=Object.entries(c.args),g=d.length;if(g===0)o.push({destination:a.destination,operation:c.subroutine({})});else{for(const[f,y]of d)o.push({destination:{op:u,arg:f},operation:y});e.pendingSubroutines.set(u,{argCounter:g,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:h.assertNever(c)}}return i}function Jt(s,e,t,r={}){return Mt(s,Ds(e),t,r)}function Mt(s,e,t,r={}){const o=je({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>Bs.indexOf(n)===-1)),cfg:t});return S.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=xs();return{ir:at(i,a,[{destination:Ts,operation:b(e,t)}],!0),async postprocessValue(u,d){const g=[];for(const C of u)g.push({destination:C.destination,operation:v(C.computable)});const f={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},y=new Map;for(const[C,I]of a.pendingSubroutines)y.set(C,{...I,args:{...I.args}});const m={result:a.result,pendingSubroutines:y};if(at(f,m,g,!1),!("result"in m))throw new Error("illegal cfg rendering stack state, no result");return m.result}}},{...r,key:o})}function js(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function ct(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class de{constructor(e,t,r,o,n){p(this,"callbackRegistry");p(this,"fnJSONStringify");p(this,"fnJSONParse");p(this,"computablesToResolve",{});p(this,"computableCtx");p(this,"accessors",new Map);p(this,"meta");p(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=r,this.env=o,this.computableCtx=n,this.callbackRegistry=this.scope.manage(this.vm.newObject()),this.fnJSONStringify=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"stringify"))),t.typeof(this.fnJSONStringify)!=="function")throw new Error("JSON.stringify() not found.");if(this.fnJSONParse=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"parse"))),t.typeof(this.fnJSONParse)!=="function")throw new Error("JSON.parse() not found.");this.meta=r.blockMeta(n),this.injectCtx()}resetComputableCtx(){this.computableCtx=void 0,this.accessors.clear()}static cleanErrorContext(e){typeof e=="object"&&e!==null&&"context"in e&&delete e.context}evaluateBundle(e){try{this.vm.unwrapResult(this.vm.evalCode(e,"bundle.js",{type:"global"})).dispose()}catch(t){throw de.cleanErrorContext(t),t}}runCallback(e,...t){try{return ae.Scope.withScope(r=>{const o=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(o)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(o,this.vm.undefined,...t.map(n=>this.exportObjectUniversal(n,r)))))})}catch(r){throw de.cleanErrorContext(r),r}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(r,o)=>{if(!this.accessors.has(r)){const n=this.blockCtx[o];if(n===void 0)throw new Error("Staging context not available");const i=n(this.computableCtx);i?this.accessors.set(r,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(r,void 0)}return this.accessors.get(r)?r:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...r){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...r))}getResourceType(e){return this.getAccessor(e).resourceType}getInputsLocked(e){return this.getAccessor(e).getInputsLocked()}getOutputsLocked(e){return this.getAccessor(e).getOutputsLocked()}getIsReadyOrError(e){return this.getAccessor(e).getIsReadyOrError()}getIsFinal(e){return this.getAccessor(e).getIsFinal()}getError(e){return this.wrapAccessor(this.getAccessor(e).getError())}listInputFields(e){return this.getAccessor(e).listInputFields()}listOutputFields(e){return this.getAccessor(e).listOutputFields()}listDynamicFields(e){return this.getAccessor(e).listDynamicFields()}getKeyValueBase64(e,t){return ct(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return ct(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r){const o=this.getAccessor(e);if(!o.getIsReadyOrError())return;const n=ts(o,t,r),i={};for(const[a,c]of Object.entries(n))i[a]=F.mapPObjectData(c,u=>this.wrapAccessor(u));return i}registerComputable(e,t){const r=`${e}_${K.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",S.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",S.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("base64")}}))}getDownloadedBlobContentHandle(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getDownloadedBlobContentHandle",this.env.driverKit.blobDriver.getDownloadedBlob(t))}getOnDemandBlobContentHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getOnDemandBlobContentHandle",this.env.driverKit.blobDriver.getOnDemandBlob(t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(r,t))}getProgressLog(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=h.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:F.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:F.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}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=>F.mapPObjectData(t,r=>this.getAccessor(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(F.mapPTableDef(e,t=>F.mapPObjectData(t,r=>this.getAccessor(r))),this.computableCtx)}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=K.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const r=this.tryExportSingleValue(e,t);if(r===void 0)throw new Error(`Can't export value: ${e}`);return r}tryExportSingleValue(e,t){let r,o=!1;switch(typeof e){case"string":r=this.vm.newString(e),o=!0;break;case"number":r=this.vm.newNumber(e),o=!0;break;case"undefined":r=this.vm.undefined;break;case"boolean":r=e?this.vm.true:this.vm.false;break;default:if(e===null){r=this.vm.null;break}if(js(e)){r=this.vm.newArrayBuffer(e),o=!0;break}return}return o&&t!=null?t.manage(r):r}exportObjectUniversal(e,t){const r=this.tryExportSingleValue(e,t);return r!==void 0?r:this.exportObjectViaJson(e,t)}exportObjectViaJson(e,t){const r=this.vm.newString(JSON.stringify(e)).consume(o=>this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse,this.vm.undefined,o)));return t!==void 0?t.manage(r):r}importObjectUniversal(e){switch(this.vm.typeof(e)){case"undefined":return;case"boolean":case"number":case"string":return this.vm.dump(e);default:return this.importObjectViaJson(e)}}importObjectViaJson(e){const t=this.vm.unwrapResult(this.vm.callFunction(this.fnJSONStringify,this.vm.undefined,e)).consume(r=>this.vm.getString(r));if(t!=="undefined")return JSON.parse(t)}injectCtx(){ae.Scope.withScope(e=>{const t=e.manage(this.vm.newObject());this.vm.setProp(t,"args",e.manage(this.vm.newString(this.blockCtx.args))),this.blockCtx.uiState!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(this.blockCtx.uiState))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry);const r=(o,n)=>{this.vm.newFunction(o,n).consume(i=>this.vm.setProp(t,o,i))};r("getAccessorHandleByName",o=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(o)),void 0)),r("resolveWithCommon",(o,n,...i)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(o),this.importObjectViaJson(n),...i.map(a=>this.importObjectViaJson(a))),void 0)),r("getResourceType",o=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(o)),void 0)),r("getInputsLocked",o=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(o)),void 0)),r("getOutputsLocked",o=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(o)),void 0)),r("getIsReadyOrError",o=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(o)),void 0)),r("getIsFinal",o=>this.exportSingleValue(this.getIsFinal(this.vm.getString(o)),void 0)),r("getError",o=>this.exportSingleValue(this.getError(this.vm.getString(o)),void 0)),r("listInputFields",o=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(o)),void 0)),r("listOutputFields",o=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(o)),void 0)),r("listDynamicFields",o=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(o)),void 0)),r("getKeyValueBase64",(o,n)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(o),this.vm.getString(n)),void 0)),r("getKeyValueAsString",(o,n)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(o),this.vm.getString(n)),void 0)),r("getDataBase64",o=>this.exportSingleValue(this.getDataBase64(this.vm.getString(o)),void 0)),r("getDataAsString",o=>this.exportSingleValue(this.getDataAsString(this.vm.getString(o)),void 0)),r("parsePObjectCollection",(o,n,i)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(o),this.vm.dump(n),this.vm.getString(i)),void 0)),r("getBlobContentAsBase64",o=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(o)),void 0)),r("getBlobContentAsString",o=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(o)),void 0)),r("getDownloadedBlobContentHandle",o=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(o)),void 0)),r("getOnDemandBlobContentHandle",o=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(o)),void 0)),r("getImportProgress",o=>this.exportSingleValue(this.getImportProgress(this.vm.getString(o)),void 0)),r("getLastLogs",(o,n)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(o),this.vm.getNumber(n)),void 0)),r("getProgressLog",(o,n)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(o),this.vm.getString(n)),void 0)),r("getLogHandle",o=>this.exportSingleValue(this.getLogHandle(this.vm.getString(o)),void 0)),r("getBlockLabel",o=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(o)),void 0)),r("getDataFromResultPool",o=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),r("getDataWithErrorsFromResultPool",o=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),r("getSpecsFromResultPool",o=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),r("calculateOptions",o=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(o)),void 0)),r("createPFrame",o=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(o)),void 0)),r("createPTable",o=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(o)),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}function As(s,e,t,r,o={}){return S.Computable.makeRaw(n=>{const i=new ae.Scope;n.addOnDestroy(()=>i.dispose());const a=i.manage(s.quickJs.newRuntime());a.setMemoryLimit(1024*640),a.setMaxStackSize(1024*320);const c=i.manage(a.newContext()),u=new de(i,c,e,s,n);u.evaluateBundle(r.content);const d=u.runCallback(t);return u.resetComputableCtx(),{ir:u.computablesToResolve,postprocessValue:async g=>{for(const[f,y]of Object.entries(g))u.runCallback(f,y);return u.importObjectUniversal(d)}}},o)}function Te(s,e,t,r,o={}){if(F.isFunctionHandle(t)){if(r===void 0)throw new Error("No code bundle.");return As(s,e,t,r,o)}else return Jt(s.driverKit,e,t,o)}function Is(s,e,t){return S.Computable.make(r=>{var m,C,I,H,$,_,z,re;const o=r.accessor(s).node(),n=h.notEmpty(o.getKeyValueAsJson(Ve)),i=h.notEmpty(o.getKeyValueAsJson(ee)),a=h.notEmpty(o.getKeyValueAsJson(te)),c=h.notEmpty(o.getKeyValueAsJson(q)),u=h.notEmpty(o.getKeyValueAsJson(ce)),d=new Map;for(const{id:k}of V(c)){const U=o.traverse({field:P(k,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let W;const j=o.traverse({field:P(k,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(j!==void 0){const T=o.getField({field:P(k,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),O=o.getField({field:P(k,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});W={arguments:j.getDataAsJson(),stale:U.id!==j.id,outputError:T.error!==void 0||O.error!==void 0||((m=T.value)==null?void 0:m.getError())!==void 0||((C=O.value)==null?void 0:C.getError())!==void 0,outputsError:((I=T.error)==null?void 0:I.getDataAsString())??(($=(H=T.value)==null?void 0:H.getError())==null?void 0:$.getDataAsString()),exportsError:((_=O.error)==null?void 0:_.getDataAsString())??((re=(z=O.value)==null?void 0:z.getError())==null?void 0:re.getDataAsString()),finished:(T.value!==void 0&&T.value.getIsReadyOrError()||T.error!==void 0&&T.error.getIsReadyOrError())&&(O.value!==void 0&&O.value.getIsReadyOrError()||O.error!==void 0&&O.error.getIsReadyOrError())}}d.set(k,{currentArguments:U.getDataAsJson(),prod:W})}const g=ne(c,k=>d.get(k).currentArguments),f=new Set(u.blocksInLimbo),y=[...V(c)].map(({id:k,label:U,renderingMode:W})=>{var _e,qe,ze,We;const j=h.notEmpty(d.get(k)),T=h.notEmpty(g.nodes.get(k));let O="NotCalculated";j.prod!==void 0&&(f.has(k)?O="Limbo":O=j.prod.finished?"Done":"Running");const G=o.traverse({field:P(k,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),L=G==null?void 0:G.getDataAsJson(),{sections:se,inputsValid:w,sdkVersion:B}=le(L==null?void 0:L.config,me=>{const Y=F.normalizeBlockConfig(me),Ye=Ke(o,k);return{sections:Te(t,Ye,Y.sections,Y.code),inputsValid:Te(t,Ye,Y.inputsValid,Y.code),sdkVersion:Y.sdkVersion}})||{},R=le(L,me=>t.blockUpdateWatcher.get(me.source));return{id:k,label:U,renderingMode:W,stale:((_e=j.prod)==null?void 0:_e.stale)!==!1||O==="Limbo",missingReference:T.missingReferences,upstreams:[...g.traverseIdsExcludingRoots("upstream",k)],downstreams:[...g.traverseIdsExcludingRoots("downstream",k)],calculationStatus:O,outputErrors:((qe=j.prod)==null?void 0:qe.outputError)===!0,outputsError:(ze=j.prod)==null?void 0:ze.outputsError,exportsError:(We=j.prod)==null?void 0:We.exportsError,sections:se,inputsValid:w,currentBlockPack:L==null?void 0:L.source,updatedBlockPack:R,sdkVersion:B,navigationState:e.getState(k)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(Re),blocks:y}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const a=i.stale||i.upstreams.findIndex(u=>n.has(u))!==-1,c=(a||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(u=>o.has(u))===-1;return{...i,canRun:c,stale:a}})}}}).withStableType()}function Ut(s,e){var t,r;return le((r=(t=s.traverse({field:P(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}))==null?void 0:t.getDataAsJson())==null?void 0:r.config,o=>F.normalizeBlockConfig(o))}function Ns(s,e){const t=s.node();if(l.resourceTypesEqual(t.resourceType,Je)){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(l.resourceTypesEqual(t.resourceType,Me)){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 Vs(s,e){if(s!==void 0)return S.Computable.make(t=>Ns(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 Ls(s,e,t){return S.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Ut(o,e),i=(a=o.traverse({field:P(e,"blockPack"),assertFieldType:"Dynamic"},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Dt,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:Vs(i,t),sdkVersion:n==null?void 0:n.sdkVersion}},{mode:"StableOnlyLive"})}function Js(s,e,t){return S.Computable.make(r=>{const o=r.accessor(s).node(),n=Ke(o,e);return{author:o.getKeyValueAsJson(Pe(e)),args:JSON.parse(n.args),ui:n.uiState!==void 0?JSON.parse(n.uiState):void 0}},{key:"inputs#"+l.resourceIdToString(s.rid)+e})}function Ms(s,e,t){return S.Computable.make(r=>{const o=r.accessor(s).node(),n=At(o,e),i=Ut(o,e);return le(i,a=>{const c={};for(const[u,d]of Object.entries(a.outputs))c[u]=S.Computable.wrapError(Te(t,n,d,a.code));return c})},{key:"outputs#"+l.resourceIdToString(s.rid)+e}).withStableType()}function Us(s,e){return S.Computable.make(t=>{const r=t.accessor(s).node(),o=h.notEmpty(r.getKeyValueAsJson(q)),n=[];for(const{id:i,renderingMode:a}of V(o)){const c=r.traverse({field:P(i,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),u=c==null?void 0:c.getDataAsJson();if((u==null?void 0:u.config)===void 0)continue;const d=F.normalizeBlockConfig(u.config),g=Object.entries(d.outputs).map(([,y])=>y).filter(y=>!F.isFunctionHandle(y)&&os(y)).map(y=>y);if(g.length===0)continue;const f=At(r,i);for(const y of g)n.push(S.Computable.wrapError(Jt(e.driverKit,f,y)))}return n})}class Ks{constructor(){p(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 S.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...F.DefaultNavigationState},change:new S.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return S.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 fe{constructor(e,t,r){p(this,"rid");p(this,"overview");p(this,"navigationStates",new Ks);p(this,"blockComputables",new Map);p(this,"blockFrontends",new Map);p(this,"activeConfigs");p(this,"refreshLoopResult");p(this,"abortController",new AbortController);p(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=Is(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=Us(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await we(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await pt.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(l.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!l.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=K.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfig(t);return await N(this.env.pl,this.rid,o,c=>c.addBlock({id:n,label:e,renderingMode:a.renderingMode},{args:JSON.stringify(a.initialArgs),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.getBlockConfig(t);await N(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 N(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await N(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 we(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await we(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockLabel(e,t,r){await N(this.env.pl,this.rid,r,o=>{o.setBlockLabel(e,t)}),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await N(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 N(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 N(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=l.ensureResourceIdNotNull((await r.getField(l.field(this.rid,P(e,"blockPack")))).value),n=l.ensureResourceIdNotNull((await r.getField(l.field(o,l.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),a=JSON.parse(Buffer.from(h.notEmpty(i.data)).toString("utf-8"));await N(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=Ms(this.projectTree.entry(),e,this.env),n={fullState:S.Computable.make(i=>({argsAndUiState:Js(this.projectTree.entry(),e),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=Ls(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,r),r}return t}async destroy(){this.destroyed=!0,this.abortController.abort(),await this.refreshLoopResult,await this.projectTree.terminate(),this.overview.resetState(),this.blockFrontends.forEach(e=>e.resetState()),this.blockComputables.forEach(e=>{e.fullState.resetState()}),this.activeConfigs.resetState()}async destroyAndAwaitTermination(){await this.destroy()}static async init(e,t){const r=await xe.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:$s},e.logger);return new fe(e,t,r)}}function $s(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 $e={logger:new h.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function Ge(s){return{blobDownloadPath:x.join(s,"download")}}const Kt={...$e,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function $t(s){return{...Ge(s),frontendDownloadPath:x.join(s,"frontend")}}const Gs={minDelay:1500},Hs="__no_updates__";class _s extends S.PollComputablePool{constructor(t,r,o={}){super({...o,...Gs},r);p(this,"http");this.registryProvider=t,this.http=o.http}getKey(t){switch(t.type){case"dev-v1":return`dev_1_${t.folder}_${t.mtime}`;case"dev-v2":return`dev_2_${t.folder}_${t.mtime}`;case"from-registry-v2":return`from_registry_v2_${t.registryUrl}_${t.id.organization}_${t.id.name}_${t.id.version}`;default:return Hs}}async readValue(t){var r;try{switch(t.type){case"dev-v1":try{const o=await Ne(t.folder);return o===t.mtime?void 0:{...t,mtime:o}}catch(o){this.logger.warn(o);return}case"dev-v2":try{const o=await D.tryLoadPackDescription(t.folder,this.logger);if(o===void 0)return;const n=await pe(o);return n===t.mtime?void 0:{...t,mtime:n}}catch(o){this.logger.warn(o);return}case"from-registry-v2":try{const o=this.registryProvider.getRegistry(t.registryUrl),n=(r=await o.getOverviewForSpec(t.id))==null?void 0:r.spec;if((n==null?void 0:n.type)!=="from-registry-v2")throw new Error("Unexpected");return Z.blockPackIdEquals(n.id,t.id)?void 0:((async()=>{try{await o.getComponents(n.id)}catch(i){this.logger.warn(i)}})(),n)}catch(o){this.logger.warn(o);return}default:return}}catch(o){this.logger.warn(o);return}}resultsEqual(t,r){if(t===void 0&&r===void 0)return!0;if(t===void 0||r===void 0||t.type!==r.type)return!1;switch(t.type){case"from-registry-v1":return r.type!=="from-registry-v1"?!1:t.registryUrl===r.registryUrl&&Z.blockPackIdEquals(t.id,r.id);case"from-registry-v2":return r.type!=="from-registry-v2"?!1:t.registryUrl===r.registryUrl&&Z.blockPackIdEquals(t.id,r.id);case"dev-v1":return r.type!=="dev-v1"?!1:t.folder===r.folder&&t.mtime===r.mtime;case"dev-v2":return r.type!=="dev-v2"?!1:t.folder===r.folder&&t.mtime===r.mtime;default:h.assertNever(t)}}}class ut{constructor(){p(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");if(t.refCount===0){this.resources.delete(e);const r=t.resource;r!=null&&typeof r[Symbol.dispose]=="function"&&r[Symbol.dispose]()}}acquire(e){const t=this.calculateParamsKey(e);let r=this.resources.get(t);r===void 0&&(r={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,r)),r.refCount++;let o=!1;return{resource:r.resource,key:t,unref:()=>{o||(r.refCount--,o=!0,this.check(t))}}}getByKey(e){if(!this.resources.has(e))throw new Error(`resource not found, key = ${e}`);return this.resources.get(e).resource}tryGetByKey(e){var t;return(t=this.resources.get(e))==null?void 0:t.resource}}function lt(s){return String(s.id)}class qs{constructor(e,t,r){p(this,"pFrame",new Zt.PFrame);p(this,"blobIdToResource",new Map);p(this,"blobHandleComputables",new Map);p(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});p(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});p(this,"resolveBlobContent",async e=>{const t=this.getOrCreateComputableForBlob(e),r=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(r)});this.blobDriver=e,this.blobContentCache=t,this.columns=r,this.pFrame.setDataSource(this);for(const o of r){for(const i of qr(o.data))this.blobIdToResource.set(lt(i),i);const n=zr(o.data,lt);try{this.pFrame.addColumnSpec(o.id,o.spec),this.pFrame.setColumnData(o.id,n)}catch(i){throw new Error(`Adding column ${o.id} to PFrame failed: ${i}; Spec: ${o.spec}, DataInfo: ${n}.`)}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.pFrame.dispose()}}class zs{constructor(e){p(this,"pFrames");p(this,"pTables");p(this,"blobContentCache");p(this,"concurrencyLimiter");this.blobDriver=e;const t=new Xt.LRUCache({maxSize:1e9,fetchMethod:async o=>await gt.readFile(o),sizeCalculation:o=>o.length}),r=new h.ConcurrencyLimitingExecutor(1);this.blobContentCache=t,this.concurrencyLimiter=r,this.pFrames=new class extends ut{constructor(o){super(),this.blobDriver=o}createNewResource(o){return new qs(this.blobDriver,t,o)}calculateParamsKey(o){return Ys(o)}}(this.blobDriver),this.pTables=new class extends ut{constructor(o){super(),this.pFrames=o}async createNewResource(o){const n=this.pFrames.getByKey(o.pFrameHandle),i=await r.run(async()=>await n.pFrame.createTable({src:X(o.def.src),filters:o.def.filters}));return o.def.sorting.length!==0?i.sort(o.def.sorting):i}calculateParamsKey(o){return Ws(o)}}(this.pFrames)}createPFrame(e,t){const r=e.map(n=>F.mapPObjectData(n,i=>es(i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t){const r=this.createPFrame(Qs(e.src),t),o=F.mapPTableDef(e,i=>i.id),n=this.pTables.acquire({def:o,pFrameHandle:r});return t.addOnDestroy(n.unref),n.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:t.compatibleWith,qualifications:[]}]:[]};return{hits:(await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.findColumns(r))).hits.map(o=>o.hit)}}async getColumnSpec(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getColumnSpec(t))}async listColumns(e){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.listColumns())}async calculateTableData(e,t){let r=await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.createTable({src:X(t.src),filters:t.filters}));if(t.sorting.length>0){const i=await this.concurrencyLimiter.run(async()=>await r.sort(t.sorting));r.dispose(),r=i}const o=r.getSpec(),n=await this.concurrencyLimiter.run(async()=>await r.getData([...o.keys()]));return r.dispose(),o.map((i,a)=>({spec:i,data:n[a]}))}async getUniqueValues(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getUniqueValues(t))}async getShape(e){return(await this.pTables.getByKey(e)).getShape()}async getSpec(e){return(await this.pTables.getByKey(e)).getSpec()}async getData(e,t,r){const o=await this.pTables.getByKey(e);return await this.concurrencyLimiter.run(async()=>await o.getData(t,r))}}function X(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=>X(e))};case"outer":return{type:"outer",primary:X(s.primary),secondary:s.secondary.map(e=>X(e))};default:h.assertNever(s)}}function Ws(s){const e=K.createHash("sha256");return e.update(s.pFrameHandle),e.update(je(s.def)),e.digest().toString("hex")}function Ys(s){const e=s.map(o=>o.id).sort(),t=K.createHash("sha256");let r="";for(const o of e)r!==o&&(t.update(o),r=o);return t.digest().toString("hex")}function Qs(s){const e=new Map;return ie(s,e),[...e.values()]}function ie(s,e){switch(s.type){case"column":e.set(s.column.id,s.column);return;case"full":case"inner":for(const t of s.entries)ie(t,e);return;case"outer":ie(s.primary,e);for(const t of s.secondary)ie(t,e);return;default:h.assertNever(s)}}async function Gt(s,e,t){const r={...$e,...Ge(e),...t},o=new h.HmacSha256Signer(r.localSecret),n=J.createDownloadClient(r.logger,s,r.localProjections),i=J.createLogsClient(s,r.logger),a=J.createUploadBlobClient(s,r.logger),c=J.createUploadProgressClient(s,r.logger),u=new J.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),d=new J.UploadDriver(r.logger,o,a,c,r.uploadDriverOps),g=new J.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),f=new J.LogsDriver(r.logger,g,u),y=await J.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),m=new zs(u);return{blobDriver:u,logDriver:f,lsDriver:y,signer:o,uploadDriver:d,pFrameDriver:m}}class He{constructor(e,t,r,o,n,i,a,c){p(this,"pl");p(this,"projectList");p(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=K.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await _r(o,e);return o.createField(l.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await l.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await N(this.pl,e,r,async o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(l.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(l.field(this.projectListResourceId,e))).value;if(l.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 fe.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 h.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={...Kt,...$t(t),...r};process.env.MI_LOG_TREE_STAT&&(o.defaultTreeOptions.logStat=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request");const n=await e.withWriteTx("MLInitialization",async C=>{const I=l.field(C.clientRoot,Cr);C.createField(I,"Dynamic");const H=await C.getField(I);if(l.isNullResourceId(H.value)){const $=C.createEphemeral(yt);return C.lock($),C.setField(I,$),await C.commit(),await $.globalId}else return H.value}),i=o.logger,a=await Gt(e,t,o),c=new M.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new ft(c),d=new Jr(u,a.signer,c),g=new J.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),f={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:o,bpPreparer:d,frontendDownloadDriver:g,driverKit:a,blockUpdateWatcher:new _s(u,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c}),quickJs:await ae.getQuickJS()},y=new S.WatchableValue([]),m=await Rr(e,n,y,f);return new He(f,a,a.signer,n,y,m.tree,u,m.computable)}}async function Zs(s,e={}){const t={pingCheckDurationMs:1e4,pingTimeoutMs:3e3,maxPingsPerSecond:50,httpTimeoutMs:3e3,blockRegistryDurationMs:5e3,maxRegistryChecksPerSecond:1,blockRegistryUrl:"https://blocks.pl-open.science/v2/overview.json",autoUpdateCdnDurationMs:5e3,maxAutoUpdateCdnChecksPerSecond:1,autoUpdateCdnUrl:"https://cdn.platforma.bio/software/platforma-desktop-v2/windows/amd64/latest.yml",...e},r={plPings:[],blockRegistryChecks:[],autoUpdateCdnChecks:[]},o=l.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});r.plPings=await Se(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const c=await new l.UnauthenticatedPlClient(o).ping();return JSON.stringify(c).slice(0,100)+"..."});const i=new l.UnauthenticatedPlClient(o).ll.httpDispatcher;return r.blockRegistryChecks=await Se(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>{const{body:a,statusCode:c}=await M.request(t.blockRegistryUrl,{dispatcher:i,bodyTimeout:t.httpTimeoutMs}),u=await a.text();return{statusCode:c,beginningOfBody:u.slice(0,100)+"..."}}),r.autoUpdateCdnChecks=await Se(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>{const{body:a,statusCode:c}=await M.request(t.autoUpdateCdnUrl,{dispatcher:i,bodyTimeout:t.httpTimeoutMs}),u=await a.text();return{statusCode:c,beginningOfBody:u.slice(0,100)+"..."}}),Xs(r,s,t)}async function Se(s,e,t){const r=Ee(),o=[];for(;Q(r)<s;){const n=Ee();try{const i=await t();o.push({elapsedMs:Q(n),response:{ok:!0,value:i}})}catch(i){o.push({elapsedMs:Q(n),response:{ok:!1,error:i}})}Q(n)<1e3/e&&await pt.setTimeout(1e3/e-Q(n))}return o}function Xs(s,e,t){const r=s.plPings.filter(m=>m.response.ok),o=s.plPings.filter(m=>!m.response.ok),{mean:n,median:i}=ke(s.plPings),a=[...new Set(r.map(m=>JSON.stringify(m.response.value)))],c=s.blockRegistryChecks.filter(m=>m.response.ok).length,{mean:u,median:d}=ke(s.blockRegistryChecks),g=s.autoUpdateCdnChecks.filter(m=>m.response.ok).length,{mean:f,median:y}=ke(s.autoUpdateCdnChecks);return`
1
+ "use strict";var Ht=Object.defineProperty;var _t=(s,e,t)=>e in s?Ht(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var p=(s,e,t)=>_t(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("@platforma-sdk/model"),Q=require("@milaboratories/pl-model-middle-layer"),M=require("undici"),D=require("@platforma-sdk/block-tools"),A=require("node:fs"),x=require("node:path"),qt=require("yaml"),h=require("@milaboratories/ts-helpers"),zt=require("node:fs/promises"),Wt=require("@milaboratories/resolve-helper"),l=require("@milaboratories/pl-client"),Ee=require("@milaboratories/pl-tree"),S=require("@milaboratories/computable"),K=require("node:crypto"),dt=require("denque"),Yt=require("@platforma-sdk/workflow-tengo"),xe=require("canonicalize"),Qt=require("node:assert"),ie=require("quickjs-emscripten"),pt=require("node:timers/promises"),J=require("@milaboratories/pl-drivers"),Zt=require("@milaboratories/pframes-node"),Xt=require("lru-cache");function er(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 gt=er(zt);async function Ye(s){try{return await gt.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const tr=[D.RegistryV1.PlPackageYamlConfigFile],rr=[D.RegistryV1.PlPackageJsonConfigFile],je=["backend","dist","tengo","tpl","main.plj.gz"],Ae=["config","dist","config.json"],ht=["frontend","dist"],Qe="block-model/dist/config.json",sr="block-ui/package.json",or=[je,Ae,tr,rr,ht];async function nr(s){return await Ye(x.join(s,...Ae))!==void 0||await Ye(x.join(s,...je))!==void 0}function me(s,e){const t=Wt.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Ze(s,e){if(x.isAbsolute(s)||(s=x.resolve(s)),await nr(s))return{workflow:x.join(s,...je),config:x.join(s,...Ae),ui:x.join(s,...ht)};{const t=me(s,Qe),r=me(s,Qe),o=me(s,sr);return{workflow:t,config:r,ui:x.resolve(o,"..","dist")}}}async function ir(s){try{return await A.promises.readFile(s,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function ar(s){try{return await A.promises.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function Ie(s){let e=0n;for(const t of or){const r=x.join(s,...t),o=await ar(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function de(s){const e=await A.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await A.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class cr{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 M.request(`${r.url}/${D.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const a of i){const{organization:c,package:u,latestMeta:d,latestVersion:g}=a,f={organization:c,name:u,version:g};t.push({registryId:e.id,id:f,meta:{title:d.title??"No title",description:d.description??"No Description",organization:{name:c,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:f,registryUrl:r.url},otherVersions:a.allVersions})}return t;case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(a=>({...a,registryId:e.id}));case"local-dev":for(const a of await A.promises.readdir(r.path,{withFileTypes:!0})){if(!a.isDirectory())continue;const c=x.join(r.path,a.name),u=await ir(x.join(c,D.RegistryV1.PlPackageYamlConfigFile));if(u!==void 0){const d=D.RegistryV1.PlPackageConfigData.parse(qt.parse(u)),g=await Ie(c),f={organization:d.organization,name:d.package,version:"DEV"};t.push({registryId:e.id,id:f,meta:{title:d.meta.title??"No title",description:d.meta.description??"No Description",organization:{name:d.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:c,mtime:g},otherVersions:[]})}else{const d=await D.tryLoadPackDescription(c);if(d!==void 0){const g=await de(d);t.push({registryId:e.id,id:d.id,meta:await D.BlockPackMetaEmbedAbsoluteBytes.parseAsync(d.meta),spec:{type:"dev-v2",folder:c,mtime:g},otherVersions:[]})}}}return t;default:return h.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}}}class ft{constructor(e){p(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new D.RegistryV2Reader(D.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const ur={type:"remote-v2",url:"https://blocks.pl-open.science/"},lr={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},dr={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},pr={groups:[{id:"default",label:"Default",blocks:[]}]},gr={stagingRefreshTimestamp:0,blocksInLimbo:[]},hr={label:"New Project"},fr={name:"UserProject",version:"2"},mt="SchemaVersion",vt="1",Ne="ProjectCreated",X="ProjectLastModified",ee="ProjectMeta",q="ProjectStructure",ae="BlockRenderingState",mr="BlockFrontendState/",vr=/^BlockFrontendState\/(?<blockid>.*)$/;function ke(s){return`${mr}${s}`}const yr="BlockArgsAuthor/";function Ce(s){return`${yr}${s}`}const Pe="ProjectStructureAuthor";function br(s){const e=s.match(vr);if(e!==null)return e.groups.blockid}const wr="__serviceTemplate_";function Re(s){return`${wr}${s}`}function P(s,e){return`${s}-${e}`}const Sr=/^(?<blockId>.*)-(?<fieldName>blockPack|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function kr(s){const e=s.match(Sr);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const Cr="projects",yt={name:"Projects",version:"1"},Pr=s=>l.resourceTypesEqual(s.type,yt)?s.fields:[];async function Rr(s,e,t,r){const o=await Ee.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Pr},r.logger);return{computable:S.Computable.make(i=>{const a=i.accessor(o.entry()).node(),c=t.getValue(i);if(a===void 0)return;const u=[];for(const d of a.listDynamicFields()){const g=a.traverse(d);if(g===void 0)continue;const f=h.notEmpty(g.getKeyValueAsJson(ee)),v=h.notEmpty(g.getKeyValueAsJson(Ne)),w=h.notEmpty(g.getKeyValueAsJson(X));u.push({id:d,rid:g.id,created:new Date(v),lastModified:new Date(w),opened:c.indexOf(g.id)>=0,meta:f})}return u.sort(d=>-d.lastModified.valueOf()),u}).withStableType(),tree:o}}const Fr={name:"EphRenderTemplate",version:"1"},Or={name:"RenderTemplate",version:"1"};function Ve(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(Fr):s.createStruct(Or),i=l.field(n,"template"),a=l.field(n,"inputs");return s.createField(i,"Input",e),s.createField(a,"Input",l.Pl.createPlMap(s,r,t)),s.lockInputs(n),l.Pl.futureRecord(s,n,o,"Output","outputs/")}const Br={name:"BContextEnd",version:"1"},Dr={name:"BContext",version:"1"},Tr="id",Er="parent/",xr=["context","result"];function Xe(s,e,t){return Ve(s,e,!0,t,xr)}function jr(s){const e=s.createEphemeral(Br);return s.lock(e),e}function Ar(s,e){if(e.length===0)return jr(s);if(e.length===1)return e[0];const t=s.createEphemeral(Dr);s.createField(l.field(t,Tr),"Input",l.Pl.createPlString(s,K.randomUUID()));for(let r=0;r<e.length;r++)s.createField(l.field(t,`${Er}${r}`),"Input",e[r]);return s.lock(t),t}const bt={name:"TengoTemplateGet",version:"1"},wt="registry",St="templateURI",kt="template",Ct={name:"TengoTemplatePack",version:"1"},Pt={name:"TengoTemplatePackConvert",version:"1"},Rt="templatePack",Ft="template";async function Ot(s){switch(s.type){case"from-file":return{type:"explicit",content:await A.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return h.assertNever(s)}}function Ir(s,e){const t=s.createStruct(bt),r=l.field(t,wt),o=l.field(t,St),n=l.field(t,kt);return s.setField(r,s.createValue(l.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(l.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function Nr(s,e){const t=s.createValue(Ct,e.content),r=s.createStruct(Pt),o=l.field(r,Rt),n=l.field(r,Ft);return s.setField(o,t),n}function pe(s,e){switch(e.type){case"from-registry":return Ir(s,e);case"explicit":return Nr(s,e);default:return h.assertNever(e)}}const Le={name:"Frontend/FromUrl",version:"1"},Je={name:"Frontend/FromFolder",version:"1"};function Vr(s,e){switch(e.type){case"url":return s.createValue(Le,JSON.stringify({url:e.url}));case"local":return s.createValue(Je,JSON.stringify({path:e.path,signature:e.signature}));default:return h.assertNever(e)}}const Lr={name:"BlockPackCustom",version:"1"},Bt="template",Dt="frontend";function et(s){return s.endsWith("/")?s:`${s}/`}class Jr{constructor(e,t,r){this.v2RegistryProvider=e,this.signer=t,this.http=r}async getBlockConfig(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Ze(e.folder),r=await A.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await D.loadPackDescription(e.folder),r=await A.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${et(e.registryUrl)}${D.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await M.request(`${r}/config.json`,t)).body.json()}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id);return await(await M.request(o.model.url,t)).body.json()}default:return h.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Ze(e.folder),r=await A.promises.readFile(t.workflow),o=JSON.parse(await A.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 D.loadPackDescription(e.folder),r=JSON.parse(await A.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await A.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await de(t)),{type:"explicit",template:{type:"explicit",content:o},config:r,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${et(e.registryUrl)}${D.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,o=`${r}/template.plj.gz`,n=await M.request(o,t);if(n.statusCode!==200)throw new Error(`Block not found in registry (url = ${o} ; code = ${n.statusCode}): `+JSON.stringify(e));const i=new Uint8Array(await n.body.arrayBuffer()),c=await(await M.request(`${r}/config.json`,t)).body.json();return{type:"explicit",template:{type:"explicit",content:i},config:c,frontend:{type:"url",url:`${r}/frontend.tgz`},source:e}}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},o=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),n=async()=>await(await M.request(o.model.url,t)).body.json(),i=async()=>await(await M.request(o.workflow.main.url,t)).body.arrayBuffer(),[a,c]=await Promise.all([n(),i()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(c)},config:a,frontend:{type:"url",url:o.ui.url},source:e}}default:return h.assertNever(e)}}}function Mr(s,e){const t={config:e.config,source:e.source},r=s.createStruct(Lr,JSON.stringify(t));return s.createField(l.field(r,Bt),"Input",pe(s,e.template)),s.createField(l.field(r,Dt),"Input",Vr(s,e.frontend)),s.lock(r),r}function tt(s,e){switch(e.type){case"explicit":return Mr(s,e);default:return h.assertNever(e.type)}}function se(s,e){return{__isRef:!0,blockId:s,name:e}}function Ur(s){return typeof s=="object"&&s!==null&&s.__isRef===!0&&"blockId"in s&&"name"in s}function Fe(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(Ur(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)Fe(s,o,t);else for(const[,o]of Object.entries(e))Fe(s,o,t);return;default:h.assertNever(r)}}function Kr(s,e){const t={upstreams:new Set,missingReferences:!1};return Fe(t,s,e),t}function V(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class Tt{constructor(e){p(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,o=>r.add(o.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const o of t)r.delete(o);return r}traverse(e,t,r){let o=[...t];const n=new Set(o);for(;o.length>0;){let i=[];for(const 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 Oe(s){const e=new Map;let t;for(const{id:r}of V(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 Tt(e)}function oe(s,e){const t=new Map,r=new Set;for(const{id:o}of V(s)){const n=e(o);if(n===void 0)continue;const i=Kr(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 Tt(t)}function $r(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function Be(s,e){if(s.size>e.size)return Be(e,s);for(const t of s)if(e.has(t))return!0;return!1}function rt(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):(!$r(n.upstream,i.upstream)||Be(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?Be(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let ve;async function Et(){if(ve===void 0){const s=await Ot(Yt.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=K.createHash("sha256").update(s.content).digest("hex");ve={spec:s,hash:e}}return ve}function Gr(s,e,t){return Ve(s,e,!0,{pf:t},["result"]).result}function ye(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 st{constructor(e,t){p(this,"currentInputsC",ye(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));p(this,"actualProductionInputsC",ye(()=>{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())}));p(this,"productionStaleC",ye(()=>{var e;return`${this.fields.currentArgs.modCount}_${(e=this.fields.prodArgs)==null?void 0:e.modCount}`},()=>this.fields.prodArgs===void 0||Buffer.compare(this.fields.currentArgs.value,this.fields.prodArgs.value)!==0));this.id=e,this.fields=t}check(){if(this.fields.prodOutput===void 0!=(this.fields.prodCtx===void 0))throw new Error("inconsistent prod fields");if(this.fields.stagingOutput===void 0!=(this.fields.stagingCtx===void 0))throw new Error("inconsistent stage fields");if(this.fields.prodOutputPrevious===void 0!=(this.fields.prodCtxPrevious===void 0))throw new Error("inconsistent prod cache fields");if(this.fields.stagingOutputPrevious===void 0!=(this.fields.stagingCtxPrevious===void 0))throw new Error("inconsistent stage cache fields");if(this.fields.blockPack===void 0)throw new Error("no block pack field");if(this.fields.currentArgs===void 0)throw new Error("no current args field")}get currentInputs(){return this.currentInputsC()}get stagingRendered(){return this.fields.stagingCtx!==void 0}get productionRendered(){return this.fields.prodCtx!==void 0}get productionStale(){return this.productionRendered&&this.productionStaleC()}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(l.Pl.unwrapHolder(e,this.fields.blockPack.ref),Bt,"Input")}}const Hr=s=>{throw new Error(`No new block info for ${s}`)};class ce{constructor(e,t,r,o,n,i,a,c,u,d,g,f){p(this,"globalModCount",0);p(this,"fieldsChanged",!1);p(this,"lastModifiedChanged",!1);p(this,"structureChanged",!1);p(this,"metaChanged",!1);p(this,"renderingStateChanged",!1);p(this,"changedBlockFrontendStates",new Set);p(this,"blocksWithChangedInputs",new Set);p(this,"stagingGraph");p(this,"pendingProductionGraph");p(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=d,this.blockFrontendStates=g,this.ctxExportTplHolder=f}fixProblems(){this.blockInfos.forEach(e=>{(e.fields.prodArgs===void 0||e.fields.prodOutput===void 0||e.fields.prodCtx===void 0)&&this.deleteBlockFields(e.id,"prodArgs","prodOutput","prodCtx")})}get wasModified(){return this.lastModifiedChanged||this.structureChanged||this.fieldsChanged||this.metaChanged||this.renderingStateChanged||this.changedBlockFrontendStates.size>0}get structure(){return JSON.parse(JSON.stringify(this.struct))}getStagingGraph(){return this.stagingGraph===void 0&&(this.stagingGraph=Oe(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=oe(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=oe(this.struct,e=>this.getBlockInfo(e).actualProductionInputs)),this.actualProductionGraph}getBlockInfo(e){return h.notEmpty(this.blockInfos.get(e))}getBlock(e){for(const t of V(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=l.field(this.rid,P(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(l.field(this.rid,P(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(l.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())}setBlockLabel(e,t){const r=this.structure;let o=!1;for(const n of V(r))if(n.id===e){n.label=t,o=!0;break}if(!o)throw new Error(`block ${e} not found`);this.updateStructure(r),this.updateLastModified()}createCtx(e,t){const r=[];return e.forEach(o=>{const n=this.getBlockInfo(o);if(n.fields[t]===void 0||n.fields[t].ref===void 0)throw new Error("One of the upstreams staging is not rendered.");r.push(l.Pl.unwrapHolder(this.tx,n.fields[t].ref))}),Ar(this.tx,r)}exportCtx(e){return Gr(this.tx,l.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getStagingGraph().nodes.get(e).upstream,"stagingCtx");if(this.getBlock(e).renderingMode!=="Heavy")throw new Error("not supported yet");const o=t.getTemplate(this.tx),n=Xe(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(l.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(l.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",l.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"stagingUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"stagingOutput",n.result,"NotReady")}renderProductionFor(e){this.resetProduction(e);const t=this.getBlockInfo(e),r=this.createCtx(this.getPendingProductionGraph().nodes.get(e).upstream,"prodCtx");if(this.getBlock(e).renderingMode==="Light")throw new Error("Can't render production for light block.");const o=t.getTemplate(this.tx),n=Xe(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(l.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(l.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",l.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=Hr){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=Oe(e),i=oe(e,u=>{var d;return(d=this.blockInfos.get(u))==null?void 0:d.actualProductionInputs}),a=rt(r,n),c=rt(o,i);for(const u of a.onlyInA){const{fields:d}=this.getBlockInfo(u);this.deleteBlockFields(u,...Object.keys(d)),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 d=new st(u,{});this.blockInfos.set(u,d);const g=t(u),f=tt(this.tx,g.blockPack);this.setBlockField(u,"blockPack",l.Pl.wrapInHolder(this.tx,f),"NotReady");const v=Buffer.from(g.args),w=this.tx.createValue(l.Pl.JsonObject,v);this.setBlockField(u,"currentArgs",w,"Ready",v),d.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",l.Pl.wrapInHolder(this.tx,tt(this.tx,t)),"NotReady"),r!==void 0?(this.setArgs([{blockId:e,args:r}]),this.setUiState(e,void 0)):this.getStagingGraph().traverse("downstream",[e],({id:n})=>this.resetStaging(n)),o.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,i=>{r.add(i.id)});else for(const i of r){const a=o.nodes.get(i);if(a===void 0)throw new Error(`Can't find block with id: ${i}`);for(const c of a.upstream)if(!r.has(c))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const i of V(this.structure)){if(!r.has(i.id))continue;let a=this.getBlockInfo(i.id).requireProductionRendering||this.blocksInLimbo.has(i.id);if(!a){for(const c of o.nodes.get(i.id).upstream)if(n.has(c)){a=!0;break}}a&&(this.renderProductionFor(i.id),n.add(i.id))}return o.traverse("downstream",[...n],i=>{n.has(i.id)||this.resetOrLimboProduction(i.id)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,a;const t=this.getActualProductionGraph(),r=new dt(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 d of t.traverseIdsExcludingRoots("downstream",c))o.has(d)||(r.push(d),o.add(d))}}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,Ce(t)):this.tx.setKValue(this.rid,Ce(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,Pe):this.tx.setKValue(this.rid,Pe,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,X,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,q,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,ae,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,ee,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,ke(e)):this.tx.setKValue(this.rid,ke(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,mt),i=e.getKValueJson(t,X),a=e.getKValueJson(t,ee),c=e.getKValueJson(t,q),u=e.getKValueJson(t,ae),d=e.listKeyValuesString(t),[g,f,v,w,C,{stagingRefreshTimestamp:I,blocksInLimbo:H},$]=await Promise.all([o,n,i,a,c,u,d]);if(f!==vt)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${f}`);const _=new Map;for(const b of g.fields){const B=kr(b.name);if(B===void 0)continue;let R=_.get(B.blockId);R===void 0&&(R={id:B.blockId,fields:{}},_.set(B.blockId,R)),R.fields[B.fieldName]=l.isNullResourceId(b.value)?{modCount:0}:{modCount:0,ref:b.value}}const z=await Et(),te=Re(z.hash),k=g.fields.find(b=>b.name===te);let U;k!==void 0?U=l.ensureResourceIdNotNull(k.value):(U=l.Pl.wrapInHolder(e,pe(e,z.spec)),e.createField(l.field(t,Re(z.hash)),"Dynamic",U));const W={stagingRefreshTimestamp:I},j=new Set(H),T=new Map;for(const b of $){const B=br(b.key);B!==void 0&&T.set(B,b.value)}const O=[];_.forEach(({id:b,fields:B})=>{for(const[,R]of Object.entries(B))if(R.ref!==void 0){if(!l.isResource(R.ref)||l.isResourceRef(R.ref))throw new Error("unexpected behaviour");O.push([R,e.getResourceData(R.ref,!1)])}});for(const[b,B]of O){const R=await B;b.value=R.data,l.isNotNullResourceId(R.error)?b.status="Error":R.resourceReady||l.isNotNullResourceId(R.originalResourceId)?b.status="Ready":b.status="NotReady"}const G=new Map;_.forEach(({id:b,fields:B})=>G.set(b,new st(b,B)));const L=new Set;for(const b of V(C)){if(!G.has(b.id))throw new Error(`Inconsistent project structure: no inputs for ${b.id}`);L.add(b.id)}G.forEach(b=>{if(!L.has(b.id))throw new Error(`Inconsistent project structure: no structure entry for ${b.id}`);b.check()});const re=new ce(t,e,r,f,v,w,C,W,j,G,T,U);return re.fixProblems(),re}}async function _r(s,e=hr){const t=s.createEphemeral(fr);s.lock(t);const r=String(Date.now());s.setKValue(t,mt,JSON.stringify(vt)),s.setKValue(t,Ne,r),s.setKValue(t,X,r),s.setKValue(t,ee,JSON.stringify(e)),s.setKValue(t,q,JSON.stringify(pr)),s.setKValue(t,ae,JSON.stringify(gr));const o=await Et();return s.createField(l.field(t,Re(o.hash)),"Dynamic",l.Pl.wrapInHolder(s,pe(s,o.spec))),t}async function be(s,e,t){return N(s,e,void 0,t)}async function N(s,e,t,r){if(s instanceof l.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await ce.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await ce.load(s,e,t),n=await r(o);return o.save(),n}}function*qr(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:h.assertNever(s)}}function ot(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function zr(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:ot(s.parts,e)};case"BinaryPartitioned":return{...s,parts:ot(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:h.assertNever(s)}}const Wr=l.resourceType("PColumnData/JsonPartitioned","1"),Yr=l.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),Qr=l.resourceType("PColumnData/BinaryPartitioned","1"),Zr=l.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Xr=l.resourceType("PColumnData/Json","1");function es(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(l.resourceTypesEqual(s.resourceType,Xr)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(l.resourceTypesEqual(s.resourceType,Wr)){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(l.resourceTypesEqual(s.resourceType,Yr)){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(l.resourceTypesEqual(s.resourceType,Qr)){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(l.resourceTypesEqual(s.resourceType,Zr)){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 d=r[u];d===void 0&&(d={},r[u]=d),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 d=r[u];d===void 0&&(d={},r[u]=d),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: ${l.resourceTypeToString(s.resourceType)}`)}function xt(s,e){const t=K.createHash("sha256");return t.update(xe(s)),t.update(String(l.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function jt(s,e=!0,t=!1,r=""){var a,c,u;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const d of s.listInputFields()){const g=d.match(o);if(!g){if(e)throw new Error(`unexpected field name ${d}`);continue}let f=h.notEmpty((a=g.groups)==null?void 0:a.name);if(!f.startsWith(r)){if(e)throw new Error(`unexpected field name ${d}`);continue}f=f.slice(r.length);const v=h.notEmpty((c=g.groups)==null?void 0:c.type);let w=n.get(f);switch(w===void 0&&(w={},n.set(f,w)),v){case"spec":w.spec=(u=s.traverse({field:d,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":w.hasData=!0,w.data=()=>s.traverseOrError({field:d,ignoreError:t});default:continue}}const i=s.getInputsLocked();if(i)for(const[,d]of n)d.data===void 0&&(d.hasData=!1);return{locked:i,results:n}}function ts(s,e=!0,t=""){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const r=jt(s,e,!1,t);Qt(r.locked);const o={};for(const[n,i]of r.results){if(i.spec===void 0)throw new Error(`no spec for key ${n}`);if(i.hasData!==!0||i.data===void 0)throw new Error(`no data for key ${n}`);const a=i.data();if(a===void 0)throw new Error(`no data for key ${n}`);if(!a.ok)throw new Ee.PlError(a.error);o[n]={id:xt(i.spec,a.value),spec:i.spec,data:a.value}}return o}class Me{constructor(e,t){p(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}getBlockLabel(e){var t,r;return h.notEmpty((r=(t=this.blocks.get(e))==null?void 0:t.info)==null?void 0:r.label,`block "${e}" not found`)}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:se(i,a),obj:{id:u.ok?xt(c.spec,u.value):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,d]of a.prod.results)c.add(u),n(i,u,d)}if(a.staging!==void 0){a.staging.locked||o(`staging_not_locked:${i}`);for(const[u,d]of a.staging.results)c.has(u)||n(i,u,d)}}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:se(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:se(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),F.executePSpecPredicate(e,c.spec)&&t.push({label:r.info.label+" / "+a,ref:se(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=h.notEmpty(o.getKeyValueAsJson(q)),a=Oe(n).traverseIds("upstream",r),c=new Map;for(const u of V(n)){if(!a.has(u.id))continue;const d=nt(o.traverse({field:P(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:P(u.id,"prodUiCtx"),stableIfNotFound:!0})),g=nt(o.traverse({field:P(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:P(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:d,staging:g})}return new Me(e,c)}}function nt(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return jt(e.value,!1,!0)}function Ue(s,e){const t=s.persist(),r=h.notEmpty(s.traverse({field:P(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),o=s.getKeyValueAsString(ke(e));return{blockId:e,args:r,uiState:o,blockMeta:n=>{const i=n.accessor(t).node(),a=h.notEmpty(i.getKeyValueAsJson(q)),c=new Map;for(const u of V(a))c.set(u.id,u);return c}}}function At(s,e){const t=s.persist();return{...Ue(s,e),prod:r=>{var o;return(o=r.accessor(t).node({ignoreError:!0}).traverse({field:P(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:o.persist()},staging:r=>{var n;const o=(n=r.accessor(t).node({ignoreError:!0}).traverse({field:P(e,"stagingOutput"),ignoreError:!0}))==null?void 0:n.persist();return o===void 0&&r.markUnstable("staging_not_rendered"),o},getResultsPool:r=>Me.create(r,t,e)}}function*E(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*E(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*E(t);return;case"MakeArray":for(const t of s.template)yield*E(t);return;case"GetJsonField":case"GetResourceField":yield*E(s.source),yield*E(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*E(s.source),yield*E(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetLogHandle":yield*E(s.source);return;case"IsEmpty":yield*E(s.arg);return;case"Not":yield*E(s.operand);return;case"And":case"Or":yield*E(s.operand1),yield*E(s.operand2);return;default:h.assertNever(s)}}function rs(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function ue(s,e){return s===void 0?void 0:e(s)}function ss(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function os(s){for(const e of E(s))if(ss(e))return!0;return!1}function ge(s){return{type:"ReturnResult",result:s}}function m(s){return()=>ge(s)}const ns=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return m(e)},is=s=>{const e=s.source;if(e===void 0)return m(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return m(t)},as=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?m(void 0):({cCtx:r})=>{var o;return ge((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function It(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function cs(s,e){return t=>{const r=t.source;return r===void 0?m(void 0):()=>({type:"ScheduleSubroutine",subroutine:Nt(r.length),args:It(r,o=>y({...s,[e.itVar]:o},e.mapping))})}}function Nt(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return m(t)}}function us(s,e){return t=>{const r=t.source;if(r===void 0)return m(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=y(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:ls,args:o})}}const ls=s=>m(s),ds=s=>{const e=s.arg;return m(e===void 0?void 0:e.length===0)},ps=s=>{const e=s.operand;return m(e===void 0?void 0:!e)},gs=s=>{const e=s.operand1,t=s.operand2;return m(e===void 0||t===void 0?void 0:e&&t)},hs=s=>{const e=s.operand1,t=s.operand2;return m(e===void 0||t===void 0?void 0:e||t)},fs=s=>{const e=s.source;return e===void 0?m(void 0):({cCtx:t})=>{var r;return ge((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},ms=s=>{const e=s.source,t=s.field;return m(e===void 0||t===void 0?void 0:e[t])};function vs(s,e){return t=>{const r=t.source;return r===void 0?m(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]=m(void 0);else{const u={...s,[e.itVar]:c.persist()};i[a]=y(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:ys,args:i}}}}const ys=s=>m(s),bs=s=>{const e=s.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:S.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)}})})},ws=s=>{const e=s.source;return e===void 0?m(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:S.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},Ss=s=>{const e=s.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:S.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())}})})},ks=s=>{const e=s.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},Cs=s=>{const e=s.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},Ps=s=>{const e=s.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},Rs=s=>e=>{const t=e.source;return t===void 0?m(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},Fs=s=>e=>{const t=e.source;return t===void 0?m(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},Os=s=>{const e=s.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function y(s,e){switch(e.type){case"GetFromCtx":const t=s[e.variable];return typeof t=="function"?r=>ge(t(r.cCtx)):(t===void 0&&console.log("asdasd"),m(t));case"Isolate":return({drivers:r})=>({type:"ScheduleComputable",computable:Mt(r,s,e.cfg)});case"Immediate":return m(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:ms,args:{source:y(s,e.source),field:y(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:cs(s,e),args:{source:y(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:us(s,e),args:{source:y(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:ns,args:rs(e.template,r=>y(s,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:Nt(e.template.length),args:It(e.template,r=>y(s,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:is,args:{source:y(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:ds,args:{arg:y(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:ps,args:{operand:y(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:gs,args:{operand1:y(s,e.operand1),operand2:y(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:hs,args:{operand1:y(s,e.operand1),operand2:y(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:vs(s,e),args:{source:y(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:as,args:{source:y(s,e.source),field:y(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:fs,args:{source:y(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:bs,args:{source:y(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:ws,args:{source:y(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Ss,args:{source:y(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:ks,args:{source:y(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Cs,args:{source:y(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:Ps,args:{source:y(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:Rs(e.lines),args:{source:y(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:Fs(e.patternToSearch),args:{source:y(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:Os,args:{source:y(s,e.source)}});default:return h.assertNever(e)}}const Bs=["$prod","$staging"];function Ds(s){return{$blockId:s.blockId,$args:JSON.parse(s.args),$ui:s.uiState!==void 0?JSON.parse(s.uiState):void 0,$prod:s.prod,$staging:s.staging}}const Vt=Symbol(),Lt="return",Ts={op:Vt,arg:Lt};function Es(s){return s.op==Vt&&s.arg==Lt}function xs(){return{pendingSubroutines:new Map}}function it(s,e,t,r){const o=new dt(t),n=(a,c)=>{if(Es(a))return e.result=c,!1;const u=h.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(),d=Object.entries(c.args),g=d.length;if(g===0)o.push({destination:a.destination,operation:c.subroutine({})});else{for(const[f,v]of d)o.push({destination:{op:u,arg:f},operation:v});e.pendingSubroutines.set(u,{argCounter:g,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:h.assertNever(c)}}return i}function Jt(s,e,t,r={}){return Mt(s,Ds(e),t,r)}function Mt(s,e,t,r={}){const o=xe({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>Bs.indexOf(n)===-1)),cfg:t});return S.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=xs();return{ir:it(i,a,[{destination:Ts,operation:y(e,t)}],!0),async postprocessValue(u,d){const g=[];for(const C of u)g.push({destination:C.destination,operation:m(C.computable)});const f={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},v=new Map;for(const[C,I]of a.pendingSubroutines)v.set(C,{...I,args:{...I.args}});const w={result:a.result,pendingSubroutines:v};if(it(f,w,g,!1),!("result"in w))throw new Error("illegal cfg rendering stack state, no result");return w.result}}},{...r,key:o})}function js(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function at(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class le{constructor(e,t,r,o,n){p(this,"callbackRegistry");p(this,"fnJSONStringify");p(this,"fnJSONParse");p(this,"computablesToResolve",{});p(this,"computableCtx");p(this,"accessors",new Map);p(this,"meta");p(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=r,this.env=o,this.computableCtx=n,this.callbackRegistry=this.scope.manage(this.vm.newObject()),this.fnJSONStringify=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"stringify"))),t.typeof(this.fnJSONStringify)!=="function")throw new Error("JSON.stringify() not found.");if(this.fnJSONParse=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"parse"))),t.typeof(this.fnJSONParse)!=="function")throw new Error("JSON.parse() not found.");this.meta=r.blockMeta(n),this.injectCtx()}resetComputableCtx(){this.computableCtx=void 0,this.accessors.clear()}static cleanErrorContext(e){typeof e=="object"&&e!==null&&"context"in e&&delete e.context}evaluateBundle(e){try{this.vm.unwrapResult(this.vm.evalCode(e,"bundle.js",{type:"global"})).dispose()}catch(t){throw le.cleanErrorContext(t),t}}runCallback(e,...t){try{return ie.Scope.withScope(r=>{const o=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(o)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(o,this.vm.undefined,...t.map(n=>this.exportObjectUniversal(n,r)))))})}catch(r){throw le.cleanErrorContext(r),r}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(r,o)=>{if(!this.accessors.has(r)){const n=this.blockCtx[o];if(n===void 0)throw new Error("Staging context not available");const i=n(this.computableCtx);i?this.accessors.set(r,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(r,void 0)}return this.accessors.get(r)?r:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...r){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...r))}getResourceType(e){return this.getAccessor(e).resourceType}getInputsLocked(e){return this.getAccessor(e).getInputsLocked()}getOutputsLocked(e){return this.getAccessor(e).getOutputsLocked()}getIsReadyOrError(e){return this.getAccessor(e).getIsReadyOrError()}getIsFinal(e){return this.getAccessor(e).getIsFinal()}getError(e){return this.wrapAccessor(this.getAccessor(e).getError())}listInputFields(e){return this.getAccessor(e).listInputFields()}listOutputFields(e){return this.getAccessor(e).listOutputFields()}listDynamicFields(e){return this.getAccessor(e).listDynamicFields()}getKeyValueBase64(e,t){return at(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return at(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r){const o=this.getAccessor(e);if(!o.getIsReadyOrError())return;const n=ts(o,t,r),i={};for(const[a,c]of Object.entries(n))i[a]=F.mapPObjectData(c,u=>this.wrapAccessor(u));return i}registerComputable(e,t){const r=`${e}_${K.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",S.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",S.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("base64")}}))}getDownloadedBlobContentHandle(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getDownloadedBlobContentHandle",this.env.driverKit.blobDriver.getDownloadedBlob(t))}getOnDemandBlobContentHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getOnDemandBlobContentHandle",this.env.driverKit.blobDriver.getOnDemandBlob(t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(r,t))}getProgressLog(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=h.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:F.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:F.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}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=>F.mapPObjectData(t,r=>this.getAccessor(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(F.mapPTableDef(e,t=>F.mapPObjectData(t,r=>this.getAccessor(r))),this.computableCtx)}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=K.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const r=this.tryExportSingleValue(e,t);if(r===void 0)throw new Error(`Can't export value: ${e}`);return r}tryExportSingleValue(e,t){let r,o=!1;switch(typeof e){case"string":r=this.vm.newString(e),o=!0;break;case"number":r=this.vm.newNumber(e),o=!0;break;case"undefined":r=this.vm.undefined;break;case"boolean":r=e?this.vm.true:this.vm.false;break;default:if(e===null){r=this.vm.null;break}if(js(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(){ie.Scope.withScope(e=>{const t=e.manage(this.vm.newObject());this.vm.setProp(t,"args",e.manage(this.vm.newString(this.blockCtx.args))),this.blockCtx.uiState!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(this.blockCtx.uiState))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry);const r=(o,n)=>{this.vm.newFunction(o,n).consume(i=>this.vm.setProp(t,o,i))};r("getAccessorHandleByName",o=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(o)),void 0)),r("resolveWithCommon",(o,n,...i)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(o),this.importObjectViaJson(n),...i.map(a=>this.importObjectViaJson(a))),void 0)),r("getResourceType",o=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(o)),void 0)),r("getInputsLocked",o=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(o)),void 0)),r("getOutputsLocked",o=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(o)),void 0)),r("getIsReadyOrError",o=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(o)),void 0)),r("getIsFinal",o=>this.exportSingleValue(this.getIsFinal(this.vm.getString(o)),void 0)),r("getError",o=>this.exportSingleValue(this.getError(this.vm.getString(o)),void 0)),r("listInputFields",o=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(o)),void 0)),r("listOutputFields",o=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(o)),void 0)),r("listDynamicFields",o=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(o)),void 0)),r("getKeyValueBase64",(o,n)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(o),this.vm.getString(n)),void 0)),r("getKeyValueAsString",(o,n)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(o),this.vm.getString(n)),void 0)),r("getDataBase64",o=>this.exportSingleValue(this.getDataBase64(this.vm.getString(o)),void 0)),r("getDataAsString",o=>this.exportSingleValue(this.getDataAsString(this.vm.getString(o)),void 0)),r("parsePObjectCollection",(o,n,i)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(o),this.vm.dump(n),this.vm.getString(i)),void 0)),r("getBlobContentAsBase64",o=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(o)),void 0)),r("getBlobContentAsString",o=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(o)),void 0)),r("getDownloadedBlobContentHandle",o=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(o)),void 0)),r("getOnDemandBlobContentHandle",o=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(o)),void 0)),r("getImportProgress",o=>this.exportSingleValue(this.getImportProgress(this.vm.getString(o)),void 0)),r("getLastLogs",(o,n)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(o),this.vm.getNumber(n)),void 0)),r("getProgressLog",(o,n)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(o),this.vm.getString(n)),void 0)),r("getLogHandle",o=>this.exportSingleValue(this.getLogHandle(this.vm.getString(o)),void 0)),r("getBlockLabel",o=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(o)),void 0)),r("getDataFromResultPool",o=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),r("getDataWithErrorsFromResultPool",o=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),r("getSpecsFromResultPool",o=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),r("calculateOptions",o=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(o)),void 0)),r("createPFrame",o=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(o)),void 0)),r("createPTable",o=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(o)),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}function As(s,e,t,r,o={}){return S.Computable.makeRaw(n=>{const i=new ie.Scope;n.addOnDestroy(()=>i.dispose());const a=i.manage(s.quickJs.newRuntime());a.setMemoryLimit(1024*640),a.setMaxStackSize(1024*320);const c=i.manage(a.newContext()),u=new le(i,c,e,s,n);u.evaluateBundle(r.content);const d=u.runCallback(t);return u.resetComputableCtx(),{ir:u.computablesToResolve,postprocessValue:async g=>{for(const[f,v]of Object.entries(g))u.runCallback(f,v);return u.importObjectUniversal(d)}}},o)}function De(s,e,t,r,o={}){if(F.isFunctionHandle(t)){if(r===void 0)throw new Error("No code bundle.");return As(s,e,t,r,o)}else return Jt(s.driverKit,e,t,o)}function Is(s,e,t){return S.Computable.make(r=>{var w,C,I,H,$,_,z,te;const o=r.accessor(s).node(),n=h.notEmpty(o.getKeyValueAsJson(Ne)),i=h.notEmpty(o.getKeyValueAsJson(X)),a=h.notEmpty(o.getKeyValueAsJson(ee)),c=h.notEmpty(o.getKeyValueAsJson(q)),u=h.notEmpty(o.getKeyValueAsJson(ae)),d=new Map;for(const{id:k}of V(c)){const U=o.traverse({field:P(k,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let W;const j=o.traverse({field:P(k,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(j!==void 0){const T=o.getField({field:P(k,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),O=o.getField({field:P(k,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});W={arguments:j.getDataAsJson(),stale:U.id!==j.id,outputError:T.error!==void 0||O.error!==void 0||((w=T.value)==null?void 0:w.getError())!==void 0||((C=O.value)==null?void 0:C.getError())!==void 0,outputsError:((I=T.error)==null?void 0:I.getDataAsString())??(($=(H=T.value)==null?void 0:H.getError())==null?void 0:$.getDataAsString()),exportsError:((_=O.error)==null?void 0:_.getDataAsString())??((te=(z=O.value)==null?void 0:z.getError())==null?void 0:te.getDataAsString()),finished:(T.value!==void 0&&T.value.getIsReadyOrError()||T.error!==void 0&&T.error.getIsReadyOrError())&&(O.value!==void 0&&O.value.getIsReadyOrError()||O.error!==void 0&&O.error.getIsReadyOrError())}}d.set(k,{currentArguments:U.getDataAsJson(),prod:W})}const g=oe(c,k=>d.get(k).currentArguments),f=new Set(u.blocksInLimbo),v=[...V(c)].map(({id:k,label:U,renderingMode:W})=>{var He,_e,qe,ze;const j=h.notEmpty(d.get(k)),T=h.notEmpty(g.nodes.get(k));let O="NotCalculated";j.prod!==void 0&&(f.has(k)?O="Limbo":O=j.prod.finished?"Done":"Running");const G=o.traverse({field:P(k,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),L=G==null?void 0:G.getDataAsJson(),{sections:re,inputsValid:b,sdkVersion:B}=ue(L==null?void 0:L.config,fe=>{const Y=F.normalizeBlockConfig(fe),We=Ue(o,k);return{sections:De(t,We,Y.sections,Y.code),inputsValid:De(t,We,Y.inputsValid,Y.code),sdkVersion:Y.sdkVersion}})||{},R=ue(L,fe=>t.blockUpdateWatcher.get(fe.source));return{id:k,label:U,renderingMode:W,stale:((He=j.prod)==null?void 0:He.stale)!==!1||O==="Limbo",missingReference:T.missingReferences,upstreams:[...g.traverseIdsExcludingRoots("upstream",k)],downstreams:[...g.traverseIdsExcludingRoots("downstream",k)],calculationStatus:O,outputErrors:((_e=j.prod)==null?void 0:_e.outputError)===!0,outputsError:(qe=j.prod)==null?void 0:qe.outputsError,exportsError:(ze=j.prod)==null?void 0:ze.exportsError,sections:re,inputsValid:b,currentBlockPack:L==null?void 0:L.source,updatedBlockPack:R,sdkVersion:B,navigationState:e.getState(k)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(Pe),blocks:v}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const a=i.stale||i.upstreams.findIndex(u=>n.has(u))!==-1,c=(a||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(u=>o.has(u))===-1;return{...i,canRun:c,stale:a}})}}}).withStableType()}function Ut(s,e){var t,r;return ue((r=(t=s.traverse({field:P(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}))==null?void 0:t.getDataAsJson())==null?void 0:r.config,o=>F.normalizeBlockConfig(o))}function Ns(s,e){const t=s.node();if(l.resourceTypesEqual(t.resourceType,Le)){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(l.resourceTypesEqual(t.resourceType,Je)){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 Vs(s,e){if(s!==void 0)return S.Computable.make(t=>Ns(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 Ls(s,e,t){return S.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Ut(o,e),i=(a=o.traverse({field:P(e,"blockPack"),assertFieldType:"Dynamic"},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Dt,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:Vs(i,t),sdkVersion:n==null?void 0:n.sdkVersion}},{mode:"StableOnlyLive"})}function Js(s,e,t){return S.Computable.make(r=>{const o=r.accessor(s).node(),n=Ue(o,e);return{author:o.getKeyValueAsJson(Ce(e)),args:JSON.parse(n.args),ui:n.uiState!==void 0?JSON.parse(n.uiState):void 0}},{key:"inputs#"+l.resourceIdToString(s.rid)+e})}function Ms(s,e,t){return S.Computable.make(r=>{const o=r.accessor(s).node(),n=At(o,e),i=Ut(o,e);return ue(i,a=>{const c={};for(const[u,d]of Object.entries(a.outputs))c[u]=S.Computable.wrapError(De(t,n,d,a.code));return c})},{key:"outputs#"+l.resourceIdToString(s.rid)+e}).withStableType()}function Us(s,e){return S.Computable.make(t=>{const r=t.accessor(s).node(),o=h.notEmpty(r.getKeyValueAsJson(q)),n=[];for(const{id:i,renderingMode:a}of V(o)){const c=r.traverse({field:P(i,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),u=c==null?void 0:c.getDataAsJson();if((u==null?void 0:u.config)===void 0)continue;const d=F.normalizeBlockConfig(u.config),g=Object.entries(d.outputs).map(([,v])=>v).filter(v=>!F.isFunctionHandle(v)&&os(v)).map(v=>v);if(g.length===0)continue;const f=At(r,i);for(const v of g)n.push(S.Computable.wrapError(Jt(e.driverKit,f,v)))}return n})}class Ks{constructor(){p(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 S.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...F.DefaultNavigationState},change:new S.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return S.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 he{constructor(e,t,r){p(this,"rid");p(this,"overview");p(this,"navigationStates",new Ks);p(this,"blockComputables",new Map);p(this,"blockFrontends",new Map);p(this,"activeConfigs");p(this,"refreshLoopResult");p(this,"abortController",new AbortController);p(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=Is(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=Us(r.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 pt.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(l.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!l.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=K.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfig(t);return await N(this.env.pl,this.rid,o,c=>c.addBlock({id:n,label:e,renderingMode:a.renderingMode},{args:JSON.stringify(a.initialArgs),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.getBlockConfig(t);await N(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 N(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await N(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 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 setBlockLabel(e,t,r){await N(this.env.pl,this.rid,r,o=>{o.setBlockLabel(e,t)}),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await N(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 N(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 N(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=l.ensureResourceIdNotNull((await r.getField(l.field(this.rid,P(e,"blockPack")))).value),n=l.ensureResourceIdNotNull((await r.getField(l.field(o,l.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),a=JSON.parse(Buffer.from(h.notEmpty(i.data)).toString("utf-8"));await N(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=Ms(this.projectTree.entry(),e,this.env),n={fullState:S.Computable.make(i=>({argsAndUiState:Js(this.projectTree.entry(),e),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=Ls(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,r),r}return t}async destroy(){this.destroyed=!0,this.abortController.abort(),await this.refreshLoopResult,await this.projectTree.terminate(),this.overview.resetState(),this.blockFrontends.forEach(e=>e.resetState()),this.blockComputables.forEach(e=>{e.fullState.resetState()}),this.activeConfigs.resetState()}async destroyAndAwaitTermination(){await this.destroy()}static async init(e,t){const r=await Ee.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:$s},e.logger);return new he(e,t,r)}}function $s(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 Ke={logger:new h.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function $e(s){return{blobDownloadPath:x.join(s,"download")}}const Kt={...Ke,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function $t(s){return{...$e(s),frontendDownloadPath:x.join(s,"frontend")}}const Gs={minDelay:1500},Hs="__no_updates__";class _s extends S.PollComputablePool{constructor(t,r,o={}){super({...o,...Gs},r);p(this,"http");this.registryProvider=t,this.http=o.http}getKey(t){switch(t.type){case"dev-v1":return`dev_1_${t.folder}_${t.mtime}`;case"dev-v2":return`dev_2_${t.folder}_${t.mtime}`;case"from-registry-v2":return`from_registry_v2_${t.registryUrl}_${t.id.organization}_${t.id.name}_${t.id.version}`;default:return Hs}}async readValue(t){var r;try{switch(t.type){case"dev-v1":try{const o=await Ie(t.folder);return o===t.mtime?void 0:{...t,mtime:o}}catch(o){this.logger.warn(o);return}case"dev-v2":try{const o=await D.tryLoadPackDescription(t.folder,this.logger);if(o===void 0)return;const n=await de(o);return n===t.mtime?void 0:{...t,mtime:n}}catch(o){this.logger.warn(o);return}case"from-registry-v2":try{const o=this.registryProvider.getRegistry(t.registryUrl),n=(r=await o.getOverviewForSpec(t.id))==null?void 0:r.spec;if((n==null?void 0:n.type)!=="from-registry-v2")throw new Error("Unexpected");return Q.blockPackIdEquals(n.id,t.id)?void 0:((async()=>{try{await o.getComponents(n.id)}catch(i){this.logger.warn(i)}})(),n)}catch(o){this.logger.warn(o);return}default:return}}catch(o){this.logger.warn(o);return}}resultsEqual(t,r){if(t===void 0&&r===void 0)return!0;if(t===void 0||r===void 0||t.type!==r.type)return!1;switch(t.type){case"from-registry-v1":return r.type!=="from-registry-v1"?!1:t.registryUrl===r.registryUrl&&Q.blockPackIdEquals(t.id,r.id);case"from-registry-v2":return r.type!=="from-registry-v2"?!1:t.registryUrl===r.registryUrl&&Q.blockPackIdEquals(t.id,r.id);case"dev-v1":return r.type!=="dev-v1"?!1:t.folder===r.folder&&t.mtime===r.mtime;case"dev-v2":return r.type!=="dev-v2"?!1:t.folder===r.folder&&t.mtime===r.mtime;default:h.assertNever(t)}}}class ct{constructor(){p(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");if(t.refCount===0){this.resources.delete(e);const r=t.resource;r!=null&&typeof r[Symbol.dispose]=="function"&&r[Symbol.dispose]()}}acquire(e){const t=this.calculateParamsKey(e);let r=this.resources.get(t);r===void 0&&(r={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,r)),r.refCount++;let o=!1;return{resource:r.resource,key:t,unref:()=>{o||(r.refCount--,o=!0,this.check(t))}}}getByKey(e){if(!this.resources.has(e))throw new Error(`resource not found, key = ${e}`);return this.resources.get(e).resource}tryGetByKey(e){var t;return(t=this.resources.get(e))==null?void 0:t.resource}}function ut(s){return String(s.id)}class qs{constructor(e,t,r){p(this,"pFrame",new Zt.PFrame);p(this,"blobIdToResource",new Map);p(this,"blobHandleComputables",new Map);p(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});p(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});p(this,"resolveBlobContent",async e=>{const t=this.getOrCreateComputableForBlob(e),r=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(r)});this.blobDriver=e,this.blobContentCache=t,this.columns=r,this.pFrame.setDataSource(this);for(const o of r){for(const i of qr(o.data))this.blobIdToResource.set(ut(i),i);const n=zr(o.data,ut);try{this.pFrame.addColumnSpec(o.id,o.spec),this.pFrame.setColumnData(o.id,n)}catch(i){throw new Error(`Adding column ${o.id} to PFrame failed: ${i}; Spec: ${o.spec}, DataInfo: ${n}.`)}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.pFrame.dispose()}}class zs{constructor(e){p(this,"pFrames");p(this,"pTables");p(this,"blobContentCache");p(this,"concurrencyLimiter");this.blobDriver=e;const t=new Xt.LRUCache({maxSize:1e9,fetchMethod:async o=>await gt.readFile(o),sizeCalculation:o=>o.length}),r=new h.ConcurrencyLimitingExecutor(1);this.blobContentCache=t,this.concurrencyLimiter=r,this.pFrames=new class extends ct{constructor(o){super(),this.blobDriver=o}createNewResource(o){return new qs(this.blobDriver,t,o)}calculateParamsKey(o){return Ys(o)}}(this.blobDriver),this.pTables=new class extends ct{constructor(o){super(),this.pFrames=o}async createNewResource(o){const n=this.pFrames.getByKey(o.pFrameHandle),i=await r.run(async()=>await n.pFrame.createTable({src:Z(o.def.src),filters:o.def.filters}));return o.def.sorting.length!==0?i.sort(o.def.sorting):i}calculateParamsKey(o){return Ws(o)}}(this.pFrames)}createPFrame(e,t){const r=e.map(n=>F.mapPObjectData(n,i=>es(i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t){const r=this.createPFrame(Qs(e.src),t),o=F.mapPTableDef(e,i=>i.id),n=this.pTables.acquire({def:o,pFrameHandle:r});return t.addOnDestroy(n.unref),n.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:t.compatibleWith,qualifications:[]}]:[]};return{hits:(await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.findColumns(r))).hits.map(o=>o.hit)}}async getColumnSpec(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getColumnSpec(t))}async listColumns(e){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.listColumns())}async calculateTableData(e,t){let r=await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.createTable({src:Z(t.src),filters:t.filters}));if(t.sorting.length>0){const i=await this.concurrencyLimiter.run(async()=>await r.sort(t.sorting));r.dispose(),r=i}const o=r.getSpec(),n=await this.concurrencyLimiter.run(async()=>await r.getData([...o.keys()]));return r.dispose(),o.map((i,a)=>({spec:i,data:n[a]}))}async getUniqueValues(e,t){return await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).pFrame.getUniqueValues(t))}async getShape(e){return(await this.pTables.getByKey(e)).getShape()}async getSpec(e){return(await this.pTables.getByKey(e)).getSpec()}async getData(e,t,r){const o=await this.pTables.getByKey(e);return await this.concurrencyLimiter.run(async()=>await o.getData(t,r))}}function Z(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=>Z(e))};case"outer":return{type:"outer",primary:Z(s.primary),secondary:s.secondary.map(e=>Z(e))};default:h.assertNever(s)}}function Ws(s){const e=K.createHash("sha256");return e.update(s.pFrameHandle),e.update(xe(s.def)),e.digest().toString("hex")}function Ys(s){const e=s.map(o=>o.id).sort(),t=K.createHash("sha256");let r="";for(const o of e)r!==o&&(t.update(o),r=o);return t.digest().toString("hex")}function Qs(s){const e=new Map;return ne(s,e),[...e.values()]}function ne(s,e){switch(s.type){case"column":e.set(s.column.id,s.column);return;case"full":case"inner":for(const t of s.entries)ne(t,e);return;case"outer":ne(s.primary,e);for(const t of s.secondary)ne(t,e);return;default:h.assertNever(s)}}async function Gt(s,e,t){const r={...Ke,...$e(e),...t},o=new h.HmacSha256Signer(r.localSecret),n=J.createDownloadClient(r.logger,s,r.localProjections),i=J.createLogsClient(s,r.logger),a=J.createUploadBlobClient(s,r.logger),c=J.createUploadProgressClient(s,r.logger),u=new J.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),d=new J.UploadDriver(r.logger,o,a,c,r.uploadDriverOps),g=new J.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),f=new J.LogsDriver(r.logger,g,u),v=await J.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),w=new zs(u);return{blobDriver:u,logDriver:f,lsDriver:v,signer:o,uploadDriver:d,pFrameDriver:w}}class Ge{constructor(e,t,r,o,n,i,a,c){p(this,"pl");p(this,"projectList");p(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=K.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await _r(o,e);return o.createField(l.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await l.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await N(this.pl,e,r,async o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(l.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(l.field(this.projectListResourceId,e))).value;if(l.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 he.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 h.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={...Kt,...$t(t),...r};process.env.MI_LOG_TREE_STAT&&(o.defaultTreeOptions.logStat=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request");const n=await e.withWriteTx("MLInitialization",async C=>{const I=l.field(C.clientRoot,Cr);C.createField(I,"Dynamic");const H=await C.getField(I);if(l.isNullResourceId(H.value)){const $=C.createEphemeral(yt);return C.lock($),C.setField(I,$),await C.commit(),await $.globalId}else return H.value}),i=o.logger,a=await Gt(e,t,o),c=new M.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new ft(c),d=new Jr(u,a.signer,c),g=new J.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),f={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:o,bpPreparer:d,frontendDownloadDriver:g,driverKit:a,blockUpdateWatcher:new _s(u,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c}),quickJs:await ie.getQuickJS()},v=new S.WatchableValue([]),w=await Rr(e,n,v,f);return new Ge(f,a,a.signer,n,v,w.tree,u,w.computable)}}async function Zs(s,e={}){const t={pingCheckDurationMs:1e4,pingTimeoutMs:3e3,maxPingsPerSecond:50,httpTimeoutMs:3e3,blockRegistryDurationMs:5e3,maxRegistryChecksPerSecond:1,blockRegistryUrl:"https://blocks.pl-open.science/v2/overview.json",autoUpdateCdnDurationMs:5e3,maxAutoUpdateCdnChecksPerSecond:1,autoUpdateCdnUrl:"https://cdn.platforma.bio/software/platforma-desktop-v2/windows/amd64/latest.yml",...e},r={plPings:[],blockRegistryChecks:[],autoUpdateCdnChecks:[]},o=l.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});r.plPings=await we(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const c=await new l.UnauthenticatedPlClient(o).ping();return JSON.stringify(c).slice(0,100)+"..."});const i=new l.UnauthenticatedPlClient(o).ll.httpDispatcher;return r.blockRegistryChecks=await we(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>{const{body:a,statusCode:c}=await M.request(t.blockRegistryUrl,{dispatcher:i,headersTimeout:t.httpTimeoutMs,bodyTimeout:t.httpTimeoutMs}),u=await a.text();return{statusCode:c,beginningOfBody:u.slice(0,100)+"..."}}),r.autoUpdateCdnChecks=await we(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>{const{body:a,statusCode:c}=await M.request(t.autoUpdateCdnUrl,{dispatcher:i,headersTimeout:t.httpTimeoutMs,bodyTimeout:t.httpTimeoutMs}),u=await a.text();return{statusCode:c,beginningOfBody:u.slice(0,100)+"..."}}),Xs(r,s,t)}async function we(s,e,t){const r=Te(),o=[];for(;lt(r)<s;){const n=Te();let i;try{i={ok:!0,value:await t()}}catch(u){i={ok:!1,error:u}}const a=lt(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await pt.setTimeout(c)}return o}function Xs(s,e,t){const r=s.plPings.filter(i=>i.response.ok),o=s.plPings.filter(i=>!i.response.ok),n=[...new Set(r.map(i=>JSON.stringify(i.response.value)))];return`
2
2
  Network report:
3
3
  pl endpoint: ${e};
4
4
  options: ${JSON.stringify(t,null,2)}.
5
5
 
6
- Platforma pings:
7
- total: ${s.plPings.length};
8
- successes: ${r.length};
9
- errors: ${s.plPings.length-r.length};
10
- mean in ms: ${n};
11
- median in ms: ${i};
6
+ Platforma pings: ${Se(s.plPings)}
12
7
 
13
- Block registry responses:
14
- total: ${s.blockRegistryChecks.length};
15
- successes: ${c};
16
- errors: ${s.blockRegistryChecks.length-c};
17
- mean in ms: ${u};
18
- median in ms: ${d};
8
+ Block registry responses: ${Se(s.blockRegistryChecks)}
19
9
 
20
- Auto-update CDN responses:
21
- total: ${s.autoUpdateCdnChecks.length};
22
- successes: ${g};
23
- errors: ${s.autoUpdateCdnChecks.length-g};
24
- mean in ms: ${f};
25
- median in ms: ${y};
10
+ Auto-update CDN responses: ${Se(s.autoUpdateCdnChecks)}
26
11
 
27
12
  Block registry dumps:
28
13
  ${JSON.stringify(s.blockRegistryChecks,null,2)}
@@ -34,6 +19,12 @@ Platforma pings error dumps:
34
19
  ${JSON.stringify(o,null,2)}
35
20
 
36
21
  Platforma pings success dump examples:
37
- ${JSON.stringify(a,null,2)}
38
- `}function ke(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 Ee(){return Date.now()}function Q(s){return Ee()-s}exports.BlockPackRegistry=cr;exports.CentralBlockRegistry=ur;exports.DefaultDriverKitOpsPaths=Ge;exports.DefaultDriverKitOpsSettings=$e;exports.DefaultMiddleLayerOpsPaths=$t;exports.DefaultMiddleLayerOpsSettings=Kt;exports.FrontendFromFolderResourceType=Me;exports.FrontendFromUrlResourceType=Je;exports.MiddleLayer=He;exports.Project=fe;exports.TengoTemplateGet=bt;exports.TengoTemplateGetRegistry=wt;exports.TengoTemplateGetTemplate=kt;exports.TengoTemplateGetTemplateURI=St;exports.TengoTemplatePack=Ct;exports.TengoTemplatePackConvert=Pt;exports.TengoTemplatePackConvertTemplate=Ft;exports.TengoTemplatePackConvertTemplatePack=Rt;exports.V1CentralDevSnapshotRegistry=dr;exports.V1CentralRegistry=lr;exports.V2RegistryProvider=ft;exports.checkNetwork=Zs;exports.createRenderTemplate=Le;exports.getDevV1PacketMtime=Ne;exports.getDevV2PacketMtime=pe;exports.initDriverKit=Gt;exports.loadTemplate=ge;exports.prepareTemplateSpec=Ot;Object.keys(F).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>F[s]})});Object.keys(Z).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>Z[s]})});Object.keys(l).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>l[s]})});
22
+ ${JSON.stringify(n,null,2)}
23
+ `}function Se(s){const e=s.filter(o=>o.response.ok),{mean:t,median:r}=eo(s);return`
24
+ total: ${s.length};
25
+ successes: ${e.length};
26
+ errors: ${s.length-e.length};
27
+ mean in ms: ${t};
28
+ median in ms: ${r};
29
+ `}function eo(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 Te(){return Date.now()}function lt(s){return Te()-s}exports.BlockPackRegistry=cr;exports.CentralBlockRegistry=ur;exports.DefaultDriverKitOpsPaths=$e;exports.DefaultDriverKitOpsSettings=Ke;exports.DefaultMiddleLayerOpsPaths=$t;exports.DefaultMiddleLayerOpsSettings=Kt;exports.FrontendFromFolderResourceType=Je;exports.FrontendFromUrlResourceType=Le;exports.MiddleLayer=Ge;exports.Project=he;exports.TengoTemplateGet=bt;exports.TengoTemplateGetRegistry=wt;exports.TengoTemplateGetTemplate=kt;exports.TengoTemplateGetTemplateURI=St;exports.TengoTemplatePack=Ct;exports.TengoTemplatePackConvert=Pt;exports.TengoTemplatePackConvertTemplate=Ft;exports.TengoTemplatePackConvertTemplatePack=Rt;exports.V1CentralDevSnapshotRegistry=dr;exports.V1CentralRegistry=lr;exports.V2RegistryProvider=ft;exports.checkNetwork=Zs;exports.createRenderTemplate=Ve;exports.getDevV1PacketMtime=Ie;exports.getDevV2PacketMtime=de;exports.initDriverKit=Gt;exports.loadTemplate=pe;exports.prepareTemplateSpec=Ot;Object.keys(F).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>F[s]})});Object.keys(Q).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>Q[s]})});Object.keys(l).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>l[s]})});
39
30
  //# sourceMappingURL=index.js.map