@milaboratories/pl-middle-layer 1.14.25 → 1.14.26
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.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1389 -1254
- package/dist/index.mjs.map +1 -1
- package/dist/network_check.d.ts +14 -0
- package/dist/network_check.d.ts.map +1 -0
- package/package.json +5 -5
- package/src/index.ts +2 -0
- package/src/network_check.test.ts +15 -0
- package/src/network_check.ts +236 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from '@milaboratories/pl-model-middle-layer';
|
|
|
3
3
|
export * from './block_registry';
|
|
4
4
|
export * from './middle_layer';
|
|
5
5
|
export * from './model';
|
|
6
|
+
export * from './network_check';
|
|
6
7
|
export { type ProjectListEntry } from './model';
|
|
7
8
|
export * from '@milaboratories/pl-client';
|
|
8
9
|
export type { FieldType, ResourceType } from '@milaboratories/pl-client';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uCAAuC,CAAC;AAEtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AAExB,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD,cAAc,2BAA2B,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,39 @@
|
|
|
1
|
-
"use strict";var Mt=Object.defineProperty;var Kt=(o,e,t)=>e in o?Mt(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var p=(o,e,t)=>Kt(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const R=require("@platforma-sdk/model"),Q=require("@milaboratories/pl-model-middle-layer"),G=require("undici"),D=require("@platforma-sdk/block-tools"),A=require("node:fs"),j=require("node:path"),Ut=require("yaml"),h=require("@milaboratories/ts-helpers"),$t=require("node:fs/promises"),Gt=require("@milaboratories/resolve-helper"),l=require("@milaboratories/pl-client"),Be=require("@milaboratories/pl-tree"),S=require("@milaboratories/computable"),K=require("node:crypto"),at=require("denque"),Ht=require("@platforma-sdk/workflow-tengo"),De=require("canonicalize"),_t=require("node:assert"),ie=require("quickjs-emscripten"),qt=require("node:timers/promises"),J=require("@milaboratories/pl-drivers"),zt=require("@milaboratories/pframes-node"),Wt=require("lru-cache");function Yt(o){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const t in o)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(o,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>o[t]})}}return e.default=o,Object.freeze(e)}const ct=Yt($t);async function qe(o){try{return await ct.stat(o,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const Qt=[D.RegistryV1.PlPackageYamlConfigFile],Zt=[D.RegistryV1.PlPackageJsonConfigFile],Te=["backend","dist","tengo","tpl","main.plj.gz"],Ee=["config","dist","config.json"],ut=["frontend","dist"],ze="block-model/dist/config.json",Xt="block-ui/package.json",er=[Te,Ee,Qt,Zt,ut];async function tr(o){return await qe(j.join(o,...Ee))!==void 0||await qe(j.join(o,...Te))!==void 0}function me(o,e){const t=Gt.tryResolve(o,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${o}`);return t}async function We(o,e){if(j.isAbsolute(o)||(o=j.resolve(o)),await tr(o))return{workflow:j.join(o,...Te),config:j.join(o,...Ee),ui:j.join(o,...ut)};{const t=me(o,ze),r=me(o,ze),s=me(o,Xt);return{workflow:t,config:r,ui:j.resolve(s,"..","dist")}}}async function rr(o){try{return await A.promises.readFile(o,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function or(o){try{return await A.promises.stat(o,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function je(o){let e=0n;for(const t of er){const r=j.join(o,...t),s=await or(r);s!==void 0&&e<s.mtimeNs&&(e=s.mtimeNs)}return e.toString()}async function de(o){const e=await A.promises.stat(o.components.workflow.main.file,{bigint:!0}),t=await A.promises.stat(o.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class sr{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 s=this.http!==void 0?{dispatcher:this.http}:{},i=await(await G.request(`${r.url}/${D.RegistryV1.GlobalOverviewPath}`,s)).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=j.join(r.path,a.name),u=await rr(j.join(c,D.RegistryV1.PlPackageYamlConfigFile));if(u!==void 0){const d=D.RegistryV1.PlPackageConfigData.parse(Ut.parse(u)),g=await je(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 lt{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 nr={type:"remote-v2",url:"https://blocks.pl-open.science/"},ir={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},ar={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},cr={groups:[{id:"default",label:"Default",blocks:[]}]},ur={stagingRefreshTimestamp:0,blocksInLimbo:[]},lr={label:"New Project"},dr={name:"UserProject",version:"2"},dt="SchemaVersion",pt="1",xe="ProjectCreated",X="ProjectLastModified",ee="ProjectMeta",q="ProjectStructure",ae="BlockRenderingState",pr="BlockFrontendState/",gr=/^BlockFrontendState\/(?<blockid>.*)$/;function we(o){return`${pr}${o}`}const hr="BlockArgsAuthor/";function Se(o){return`${hr}${o}`}const ke="ProjectStructureAuthor";function fr(o){const e=o.match(gr);if(e!==null)return e.groups.blockid}const mr="__serviceTemplate_";function Pe(o){return`${mr}${o}`}function C(o,e){return`${o}-${e}`}const vr=/^(?<blockId>.*)-(?<fieldName>blockPack|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function yr(o){const e=o.match(vr);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const br="projects",gt={name:"Projects",version:"1"},wr=o=>l.resourceTypesEqual(o.type,gt)?o.fields:[];async function Sr(o,e,t,r){const s=await Be.SynchronizedTreeState.init(o,e,{...r.ops.defaultTreeOptions,pruning:wr},r.logger);return{computable:S.Computable.make(i=>{const a=i.accessor(s.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(xe)),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:s}}const kr={name:"EphRenderTemplate",version:"1"},Pr={name:"RenderTemplate",version:"1"};function Ae(o,e,t,r,s){if(s.length===0)throw new Error("Zero output names provided");const n=t?o.createEphemeral(kr):o.createStruct(Pr),i=l.field(n,"template"),a=l.field(n,"inputs");return o.createField(i,"Input",e),o.createField(a,"Input",l.Pl.createPlMap(o,r,t)),o.lockInputs(n),l.Pl.futureRecord(o,n,s,"Output","outputs/")}const Cr={name:"BContextEnd",version:"1"},Fr={name:"BContext",version:"1"},Rr="id",Or="parent/",Br=["context","result"];function Ye(o,e,t){return Ae(o,e,!0,t,Br)}function Dr(o){const e=o.createEphemeral(Cr);return o.lock(e),e}function Tr(o,e){if(e.length===0)return Dr(o);if(e.length===1)return e[0];const t=o.createEphemeral(Fr);o.createField(l.field(t,Rr),"Input",l.Pl.createPlString(o,K.randomUUID()));for(let r=0;r<e.length;r++)o.createField(l.field(t,`${Or}${r}`),"Input",e[r]);return o.lock(t),t}const ht={name:"TengoTemplateGet",version:"1"},ft="registry",mt="templateURI",vt="template",yt={name:"TengoTemplatePack",version:"1"},bt={name:"TengoTemplatePackConvert",version:"1"},wt="templatePack",St="template";async function kt(o){switch(o.type){case"from-file":return{type:"explicit",content:await A.promises.readFile(o.path)};case"from-registry":case"explicit":return o;default:return h.assertNever(o)}}function Er(o,e){const t=o.createStruct(ht),r=l.field(t,ft),s=l.field(t,mt),n=l.field(t,vt);return o.setField(r,o.createValue(l.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),o.setField(s,o.createValue(l.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function jr(o,e){const t=o.createValue(yt,e.content),r=o.createStruct(bt),s=l.field(r,wt),n=l.field(r,St);return o.setField(s,t),n}function pe(o,e){switch(e.type){case"from-registry":return Er(o,e);case"explicit":return jr(o,e);default:return h.assertNever(e)}}const Ie={name:"Frontend/FromUrl",version:"1"},Ne={name:"Frontend/FromFolder",version:"1"};function xr(o,e){switch(e.type){case"url":return o.createValue(Ie,JSON.stringify({url:e.url}));case"local":return o.createValue(Ne,JSON.stringify({path:e.path,signature:e.signature}));default:return h.assertNever(e)}}const Ar={name:"BlockPackCustom",version:"1"},Pt="template",Ct="frontend";function Qe(o){return o.endsWith("/")?o:`${o}/`}class Ir{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 We(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=`${Qe(e.registryUrl)}${D.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await G.request(`${r}/config.json`,t)).body.json()}case"from-registry-v2":{const t=this.http!==void 0?{dispatcher:this.http}:{},s=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id);return await(await G.request(s.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 We(e.folder),r=await A.promises.readFile(t.workflow),s=JSON.parse(await A.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:r},config:s,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"})),s=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:s},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=`${Qe(e.registryUrl)}${D.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,s=`${r}/template.plj.gz`,n=await G.request(s,t);if(n.statusCode!==200)throw new Error(`Block not found in registry (url = ${s} ; code = ${n.statusCode}): `+JSON.stringify(e));const i=new Uint8Array(await n.body.arrayBuffer()),c=await(await G.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}:{},s=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),n=async()=>await(await G.request(s.model.url,t)).body.json(),i=async()=>await(await G.request(s.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:s.ui.url},source:e}}default:return h.assertNever(e)}}}function Nr(o,e){const t={config:e.config,source:e.source},r=o.createStruct(Ar,JSON.stringify(t));return o.createField(l.field(r,Pt),"Input",pe(o,e.template)),o.createField(l.field(r,Ct),"Input",xr(o,e.frontend)),o.lock(r),r}function Ze(o,e){switch(e.type){case"explicit":return Nr(o,e);default:return h.assertNever(e.type)}}function oe(o,e){return{__isRef:!0,blockId:o,name:e}}function Vr(o){return typeof o=="object"&&o!==null&&o.__isRef===!0&&"blockId"in o&&"name"in o}function Ce(o,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(Vr(e))t===void 0||t.has(e.blockId)?o.upstreams.add(e.blockId):o.missingReferences=!0;else if(Array.isArray(e))for(const s of e)Ce(o,s,t);else for(const[,s]of Object.entries(e))Ce(o,s,t);return;default:h.assertNever(r)}}function Lr(o,e){const t={upstreams:new Set,missingReferences:!1};return Ce(t,o,e),t}function V(o){return{*[Symbol.iterator](){for(const e of o.groups)for(const t of e.blocks)yield t}}}class Ft{constructor(e){p(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,s=>r.add(s.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const s of t)r.delete(s);return r}traverse(e,t,r){let s=[...t];const n=new Set(s);for(;s.length>0;){let i=[];for(const a of s){const c=this.nodes.get(a);r(c),c[e].forEach(u=>{n.has(u)||(n.add(u),i.push(u))})}s=i}}}function Fe(o){const e=new Map;let t;for(const{id:r}of V(o)){const s={id:r,missingReferences:!1};e.set(r,s),t===void 0?s.upstream=new Set:(s.upstream=new Set([t.id]),t.downstream=new Set([s.id])),t=s}return t!==void 0&&(t.downstream=new Set),new Ft(e)}function se(o,e){const t=new Map,r=new Set;for(const{id:s}of V(o)){const n=e(s);if(n===void 0)continue;const i=Lr(n,r),a={id:s,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(s,a),i.upstreams.forEach(c=>t.get(c).downstream.add(s)),r.add(s)}return new Ft(t)}function Jr(o,e){if(o.size!==e.size)return!1;for(const t of o)if(!e.has(t))return!1;return!0}function Re(o,e){if(o.size>e.size)return Re(e,o);for(const t of o)if(e.has(t))return!0;return!1}function Xe(o,e){const t=new Set,r=new Set,s=new Set;return o.nodes.forEach(n=>{const i=e.nodes.get(n.id);i===void 0?t.add(n.id):(!Jr(n.upstream,i.upstream)||Re(n.upstream,s))&&s.add(n.id)}),e.nodes.forEach(n=>{o.nodes.has(n.id)?Re(n.upstream,s)&&s.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:s}}let ve;async function Rt(){if(ve===void 0){const o=await kt(Ht.Templates["pframes.export-pframe"]);if(o.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=K.createHash("sha256").update(o.content).digest("hex");ve={spec:o,hash:e}}return ve}function Mr(o,e,t){return Ae(o,e,!0,{pf:t},["result"]).result}function ye(o,e){let t=!1,r,s;return()=>{if(!t)return t=!0,r=o(),s=e(),s;const n=o();return r!==n&&(r=n,s=e()),e()}}class et{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),Pt,"Input")}}const Kr=o=>{throw new Error(`No new block info for ${o}`)};class ce{constructor(e,t,r,s,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=s,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=Fe(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=se(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=se(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 s=l.field(this.rid,C(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(s,"Dynamic",r.ref):this.tx.setField(s,r.ref),this.getBlockInfo(e).fields[t]={modCount:this.globalModCount++,...r},this.fieldsChanged=!0}setBlockField(e,t,r,s,n){this.setBlockFieldObj(e,t,{ref:r,status:s,value:n})}deleteBlockFields(e,...t){let r=!1;const s=this.getBlockInfo(e);for(const n of t){const i=s.fields;n in i&&(this.tx.removeField(l.field(this.rid,C(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,s,n;const t=this.getBlockInfo(e).fields;((r=t.stagingOutput)==null?void 0:r.status)==="Ready"&&((s=t.stagingCtx)==null?void 0:s.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,s,n;const t=this.getBlockInfo(e).fields;((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((s=t.prodCtx)==null?void 0:s.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,s;const t=this.getBlockInfo(e).fields;return((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((s=t.prodCtx)==null?void 0:s.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:s}of e){const n=this.getBlockInfo(r);JSON.parse(s);const i=Buffer.from(s);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 s=!1;for(const n of V(r))if(n.id===e){n.label=t,s=!0;break}if(!s)throw new Error(`block ${e} not found`);this.updateStructure(r),this.updateLastModified()}createCtx(e,t){const r=[];return e.forEach(s=>{const n=this.getBlockInfo(s);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))}),Tr(this.tx,r)}exportCtx(e){return Mr(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 s=t.getTemplate(this.tx),n=Ye(this.tx,s,{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 s=t.getTemplate(this.tx),n=Ye(this.tx,s,{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=Kr){const r=this.getStagingGraph(),s=this.getActualProductionGraph(),n=Fe(e),i=se(e,u=>{var d;return(d=this.blockInfos.get(u))==null?void 0:d.actualProductionInputs}),a=Xe(r,n),c=Xe(s,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 et(u,{});this.blockInfos.set(u,d);const g=t(u),f=Ze(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);s.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 s=this.structure;if(r===void 0)s.groups[s.groups.length-1].blocks.push(e);else{let n=!1;for(const i of s.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(s,n=>{if(n!==e.id)throw new Error("Unexpected");return t})}deleteBlock(e){const t=this.structure;let r=!1;for(const s of t.groups){const n=s.blocks.findIndex(i=>i.id===e);if(!(n<0)){s.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 s=this.getBlockInfo(e);this.setBlockField(e,"blockPack",l.Pl.wrapInHolder(this.tx,Ze(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)),s.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),s=this.getPendingProductionGraph();if(t)s.traverse("upstream",e,i=>{r.add(i.id)});else for(const i of r){const a=s.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 s.nodes.get(i.id).upstream)if(n.has(c)){a=!0;break}}a&&(this.renderProductionFor(i.id),n.add(i.id))}return s.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 at(e),s=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))s.has(d)||(r.push(d),s.add(d))}}for(const c of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(c)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(s=>{let i=this.getBlockInfo(s.id).stagingRendered?0:1;s.upstream.forEach(a=>{const c=t.get(a);c!==0&&(i=Math.max(c+1,i))}),e(s.id,i),t.set(s.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 s=0;this.traverseWithStagingLag((n,i)=>{i!==0&&(r===void 0||i<=r)&&(this.renderStagingFor(n),s++)}),s>0&&this.resetStagingRefreshTimestamp()}setMeta(e){this.meta=e,this.metaChanged=!0,this.updateLastModified()}doRefresh(e){this.refreshStagings(e),this.blockInfos.forEach(t=>{var r,s,n,i;((r=t.fields.prodCtx)==null?void 0:r.status)==="Ready"&&((s=t.fields.prodOutput)==null?void 0:s.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,Se(t)):this.tx.setKValue(this.rid,Se(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,ke):this.tx.setKValue(this.rid,ke,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,we(e)):this.tx.setKValue(this.rid,we(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const s=e.getResourceData(t,!0),n=e.getKValueJson(t,dt),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,P,{stagingRefreshTimestamp:I,blocksInLimbo:H},U]=await Promise.all([s,n,i,a,c,u,d]);if(f!==pt)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=yr(b.name);if(B===void 0)continue;let F=_.get(B.blockId);F===void 0&&(F={id:B.blockId,fields:{}},_.set(B.blockId,F)),F.fields[B.fieldName]=l.isNullResourceId(b.value)?{modCount:0}:{modCount:0,ref:b.value}}const z=await Rt(),te=Pe(z.hash),k=g.fields.find(b=>b.name===te);let M;k!==void 0?M=l.ensureResourceIdNotNull(k.value):(M=l.Pl.wrapInHolder(e,pe(e,z.spec)),e.createField(l.field(t,Pe(z.hash)),"Dynamic",M));const W={stagingRefreshTimestamp:I},x=new Set(H),T=new Map;for(const b of U){const B=fr(b.key);B!==void 0&&T.set(B,b.value)}const O=[];_.forEach(({id:b,fields:B})=>{for(const[,F]of Object.entries(B))if(F.ref!==void 0){if(!l.isResource(F.ref)||l.isResourceRef(F.ref))throw new Error("unexpected behaviour");O.push([F,e.getResourceData(F.ref,!1)])}});for(const[b,B]of O){const F=await B;b.value=F.data,l.isNotNullResourceId(F.error)?b.status="Error":F.resourceReady||l.isNotNullResourceId(F.originalResourceId)?b.status="Ready":b.status="NotReady"}const $=new Map;_.forEach(({id:b,fields:B})=>$.set(b,new et(b,B)));const L=new Set;for(const b of V(P)){if(!$.has(b.id))throw new Error(`Inconsistent project structure: no inputs for ${b.id}`);L.add(b.id)}$.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,P,W,x,$,T,M);return re.fixProblems(),re}}async function Ur(o,e=lr){const t=o.createEphemeral(dr);o.lock(t);const r=String(Date.now());o.setKValue(t,dt,JSON.stringify(pt)),o.setKValue(t,xe,r),o.setKValue(t,X,r),o.setKValue(t,ee,JSON.stringify(e)),o.setKValue(t,q,JSON.stringify(cr)),o.setKValue(t,ae,JSON.stringify(ur));const s=await Rt();return o.createField(l.field(t,Pe(s.hash)),"Dynamic",l.Pl.wrapInHolder(o,pe(o,s.spec))),t}async function be(o,e,t){return N(o,e,void 0,t)}async function N(o,e,t,r){if(o instanceof l.PlClient)return await o.withWriteTx("ProjectAction",async s=>{const n=await ce.load(s,e,t),i=await r(n);return n.wasModified&&(n.save(),await s.commit()),i});{const s=await ce.load(o,e,t),n=await r(s);return s.save(),n}}function*$r(o){switch(o.type){case"Json":return;case"JsonPartitioned":for(const[,e]of Object.entries(o.parts))yield e;return;case"BinaryPartitioned":for(const[,{index:e,values:t}]of Object.entries(o.parts))yield e,yield t;return;default:h.assertNever(o)}}function tt(o,e){return Object.fromEntries(Object.entries(o).map(([t,r])=>[t,e(r,t)]))}function Gr(o,e){switch(o.type){case"Json":return{...o};case"JsonPartitioned":return{...o,parts:tt(o.parts,e)};case"BinaryPartitioned":return{...o,parts:tt(o.parts,t=>({index:e(t.index),values:e(t.values)}))};default:h.assertNever(o)}}const Hr=l.resourceType("PColumnData/JsonPartitioned","1"),_r=l.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),qr=l.resourceType("PColumnData/BinaryPartitioned","1"),zr=l.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Wr=l.resourceType("PColumnData/Json","1");function Yr(o){if(!o.getIsReadyOrError())throw new Error("Data not ready.");const e=o.getDataAsJson();if(e===void 0)throw new Error("unexpected data info structure, no resource data");if(l.resourceTypesEqual(o.resourceType,Wr)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(l.resourceTypesEqual(o.resourceType,Hr)){const t=e,r=Object.fromEntries(o.listInputFields().map(s=>[s,o.traverse({field:s,errorIfFieldNotSet:!0}).resourceInfo]));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(l.resourceTypesEqual(o.resourceType,_r)){const t=e,r={};for(const s of o.listInputFields()){const n=o.traverse({field:s,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${s}`);for(const a of i){const c=JSON.stringify([...JSON.parse(s),...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(o.resourceType,qr)){const t=e,r={};for(const s of o.listInputFields())if(s.endsWith(".index")){const n=s.slice(0,s.length-6);let i=r[n];i===void 0&&(i={},r[n]=i),i.index=o.traverse({field:s,errorIfFieldNotSet:!0}).resourceInfo}else if(s.endsWith(".values")){const n=s.slice(0,s.length-7);let i=r[n];i===void 0&&(i={},r[n]=i),i.values=o.traverse({field:s,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${s}`);for(const[s,n]of Object.entries(r)){if(n.index===void 0)throw new Error(`no index for part ${s}`);if(n.values===void 0)throw new Error(`no values for part ${s}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(l.resourceTypesEqual(o.resourceType,zr)){const t=e,r={};for(const s of o.listInputFields()){const n=o.traverse({field:s,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${s}`);for(const a of i)if(a.endsWith(".index")){const c=a.slice(0,a.length-6),u=JSON.stringify([...JSON.parse(s),...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(s),...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(o.resourceType)}`)}function Ot(o,e){const t=K.createHash("sha256");return t.update(De(o)),t.update(String(l.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function Bt(o,e=!0,t=!1,r=""){var a,c,u;const s=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const d of o.listInputFields()){const g=d.match(s);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=o.traverse({field:d,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":w.hasData=!0,w.data=()=>o.traverseOrError({field:d,ignoreError:t});default:continue}}const i=o.getInputsLocked();if(i)for(const[,d]of n)d.data===void 0&&(d.hasData=!1);return{locked:i,results:n}}function Qr(o,e=!0,t=""){if(!o.getIsReadyOrError())throw new Error("resource is not ready");const r=Bt(o,e,!1,t);_t(r.locked);const s={};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 Be.PlError(a.error);s[n]={id:Ot(i.spec,a.value),spec:i.spec,data:a.value}}return s}class Ve{constructor(e,t){p(this,"allSpecsAvailable");this.ctx=e,this.blocks=t;let r=!0;e:for(const s of t.values())for(const n of[s.prod,s.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 s=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?Ot(c.spec,u.value):void 0,spec:c.spec,data:u}}):s(`no_data:${i}:${a}`)}};for(const[i,a]of this.blocks){const c=new Set;if(a.prod!==void 0){a.prod.locked||s(`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||s(`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 s=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||s(`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 s(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||s(`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 s=new Set,n=i=>{for(const[a,c]of i.results)s.has(a)||c.spec===void 0||(s.add(a),R.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 s=e.accessor(t).node(),n=h.notEmpty(s.getKeyValueAsJson(q)),a=Fe(n).traverseIds("upstream",r),c=new Map;for(const u of V(n)){if(!a.has(u.id))continue;const d=rt(s.traverse({field:C(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,s.traverseOrError({field:C(u.id,"prodUiCtx"),stableIfNotFound:!0})),g=rt(s.traverse({field:C(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,s.traverseOrError({field:C(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:d,staging:g})}return new Ve(e,c)}}function rt(o,e){if(e===void 0)return o?{locked:!1,results:new Map}:void 0;if(e.ok)return Bt(e.value,!1,!0)}function Le(o,e){const t=o.persist(),r=h.notEmpty(o.traverse({field:C(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),s=o.getKeyValueAsString(we(e));return{blockId:e,args:r,uiState:s,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 Dt(o,e){const t=o.persist();return{...Le(o,e),prod:r=>{var s;return(s=r.accessor(t).node({ignoreError:!0}).traverse({field:C(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:s.persist()},staging:r=>{var n;const s=(n=r.accessor(t).node({ignoreError:!0}).traverse({field:C(e,"stagingOutput"),ignoreError:!0}))==null?void 0:n.persist();return s===void 0&&r.markUnstable("staging_not_rendered"),s},getResultsPool:r=>Ve.create(r,t,e)}}function*E(o,e){switch(yield o,o.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*E(o.cfg);return;case"MakeObject":for(const[,t]of Object.entries(o.template))yield*E(t);return;case"MakeArray":for(const t of o.template)yield*E(t);return;case"GetJsonField":case"GetResourceField":yield*E(o.source),yield*E(o.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*E(o.source),yield*E(o.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(o.source);return;case"IsEmpty":yield*E(o.arg);return;case"Not":yield*E(o.operand);return;case"And":case"Or":yield*E(o.operand1),yield*E(o.operand2);return;default:h.assertNever(o)}}function Zr(o,e){const t={};for(const[r,s]of Object.entries(o))t[r]=e(s);return t}function ue(o,e){return o===void 0?void 0:e(o)}function Xr(o){switch(o.type){case"GetImportProgress":return!0;default:return!1}}function eo(o){for(const e of E(o))if(Xr(e))return!0;return!1}function ge(o){return{type:"ReturnResult",result:o}}function m(o){return()=>ge(o)}const to=o=>{const e={};for(const[t,r]of Object.entries(o))e[t]=r;return m(e)},ro=o=>{const e=o.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)},oo=o=>{const e=o.source,t=o.field;return e===void 0||t===void 0?m(void 0):({cCtx:r})=>{var s;return ge((s=r.accessor(e).node().traverse(t))==null?void 0:s.persist())}};function Tt(o,e){const t={},r=o.length;for(let s=0;s<r;s++)t[String(s)]=e(o[s]);return t}function so(o,e){return t=>{const r=t.source;return r===void 0?m(void 0):()=>({type:"ScheduleSubroutine",subroutine:Et(r.length),args:Tt(r,s=>y({...o,[e.itVar]:s},e.mapping))})}}function Et(o){return e=>{const t=[];for(let r=0;r<o;r++)t.push(e[String(r)]);return m(t)}}function no(o,e){return t=>{const r=t.source;if(r===void 0)return m(void 0);const s={};for(const[n,i]of Object.entries(r)){const a={...o,[e.itVar]:i};s[n]=y(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:io,args:s})}}const io=o=>m(o),ao=o=>{const e=o.arg;return m(e===void 0?void 0:e.length===0)},co=o=>{const e=o.operand;return m(e===void 0?void 0:!e)},uo=o=>{const e=o.operand1,t=o.operand2;return m(e===void 0||t===void 0?void 0:e&&t)},lo=o=>{const e=o.operand1,t=o.operand2;return m(e===void 0||t===void 0?void 0:e||t)},po=o=>{const e=o.source;return e===void 0?m(void 0):({cCtx:t})=>{var r;return ge((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},go=o=>{const e=o.source,t=o.field;return m(e===void 0||t===void 0?void 0:e[t])};function ho(o,e){return t=>{const r=t.source;return r===void 0?m(void 0):({cCtx:s})=>{const n=s.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={...o,[e.itVar]:c.persist()};i[a]=y(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:fo,args:i}}}}const fo=o=>m(o),mo=o=>{const e=o.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)}})})},vo=o=>{const e=o.source;return e===void 0?m(void 0):({cCtx:t,drivers:r})=>{const s=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:S.Computable.make(()=>r.blobDriver.getDownloadedBlob(s),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},yo=o=>{const e=o.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 s=await t.blobDriver.getContent(r.handle);if(s!=null)return JSON.parse(Buffer.from(s).toString())}})})},bo=o=>{const e=o.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},wo=o=>{const e=o.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},So=o=>{const e=o.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},ko=o=>e=>{const t=e.source;return t===void 0?m(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,o)})},Po=o=>e=>{const t=e.source;return t===void 0?m(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,o)})},Co=o=>{const e=o.source;return e===void 0?m(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function y(o,e){switch(e.type){case"GetFromCtx":const t=o[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:It(r,o,e.cfg)});case"Immediate":return m(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:go,args:{source:y(o,e.source),field:y(o,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:so(o,e),args:{source:y(o,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:no(o,e),args:{source:y(o,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:to,args:Zr(e.template,r=>y(o,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:Et(e.template.length),args:Tt(e.template,r=>y(o,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:ro,args:{source:y(o,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:ao,args:{arg:y(o,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:co,args:{operand:y(o,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:uo,args:{operand1:y(o,e.operand1),operand2:y(o,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:lo,args:{operand1:y(o,e.operand1),operand2:y(o,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:ho(o,e),args:{source:y(o,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:oo,args:{source:y(o,e.source),field:y(o,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:po,args:{source:y(o,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:mo,args:{source:y(o,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:vo,args:{source:y(o,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:yo,args:{source:y(o,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:bo,args:{source:y(o,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:wo,args:{source:y(o,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:So,args:{source:y(o,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:ko(e.lines),args:{source:y(o,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:Po(e.patternToSearch),args:{source:y(o,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:Co,args:{source:y(o,e.source)}});default:return h.assertNever(e)}}const Fo=["$prod","$staging"];function Ro(o){return{$blockId:o.blockId,$args:JSON.parse(o.args),$ui:o.uiState!==void 0?JSON.parse(o.uiState):void 0,$prod:o.prod,$staging:o.staging}}const jt=Symbol(),xt="return",Oo={op:jt,arg:xt};function Bo(o){return o.op==jt&&o.arg==xt}function Do(){return{pendingSubroutines:new Map}}function ot(o,e,t,r){const s=new at(t),n=(a,c)=>{if(Bo(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),s.push({destination:u.destination,operation:u.subroutine(u.args)})),!0},i=[];e:for(;s.length>0;){const a=s.shift(),c=a.operation(o);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)s.push({destination:a.destination,operation:c.subroutine({})});else{for(const[f,v]of d)s.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 At(o,e,t,r={}){return It(o,Ro(e),t,r)}function It(o,e,t,r={}){const s=De({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>Fo.indexOf(n)===-1)),cfg:t});return S.Computable.makeRaw(n=>{const i={drivers:o,cCtx:n},a=Do();return{ir:ot(i,a,[{destination:Oo,operation:y(e,t)}],!0),async postprocessValue(u,d){const g=[];for(const P of u)g.push({destination:P.destination,operation:m(P.computable)});const f={drivers:o,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},v=new Map;for(const[P,I]of a.pendingSubroutines)v.set(P,{...I,args:{...I.args}});const w={result:a.result,pendingSubroutines:v};if(ot(f,w,g,!1),!("result"in w))throw new Error("illegal cfg rendering stack state, no result");return w.result}}},{...r,key:s})}function To(o){return o instanceof ArrayBuffer||ArrayBuffer.isView(o)}function st(o){return o!==void 0?Buffer.from(o).toString("base64"):void 0}class le{constructor(e,t,r,s,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=s,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 s=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(s)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(s,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,s)=>{if(!this.accessors.has(r)){const n=this.blockCtx[s];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 st(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return st(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r){const s=this.getAccessor(e);if(!s.getIsReadyOrError())return;const n=Qr(s,t,r),i={};for(const[a,c]of Object.entries(n))i[a]=R.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:R.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:R.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=>R.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(R.mapPTableDef(e,t=>R.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,s=!1;switch(typeof e){case"string":r=this.vm.newString(e),s=!0;break;case"number":r=this.vm.newNumber(e),s=!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(To(e)){r=this.vm.newArrayBuffer(e),s=!0;break}return}return s&&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(s=>this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse,this.vm.undefined,s)));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=(s,n)=>{this.vm.newFunction(s,n).consume(i=>this.vm.setProp(t,s,i))};r("getAccessorHandleByName",s=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(s)),void 0)),r("resolveWithCommon",(s,n,...i)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(s),this.importObjectViaJson(n),...i.map(a=>this.importObjectViaJson(a))),void 0)),r("getResourceType",s=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(s)),void 0)),r("getInputsLocked",s=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(s)),void 0)),r("getOutputsLocked",s=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(s)),void 0)),r("getIsReadyOrError",s=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(s)),void 0)),r("getIsFinal",s=>this.exportSingleValue(this.getIsFinal(this.vm.getString(s)),void 0)),r("getError",s=>this.exportSingleValue(this.getError(this.vm.getString(s)),void 0)),r("listInputFields",s=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(s)),void 0)),r("listOutputFields",s=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(s)),void 0)),r("listDynamicFields",s=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(s)),void 0)),r("getKeyValueBase64",(s,n)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(s),this.vm.getString(n)),void 0)),r("getKeyValueAsString",(s,n)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(s),this.vm.getString(n)),void 0)),r("getDataBase64",s=>this.exportSingleValue(this.getDataBase64(this.vm.getString(s)),void 0)),r("getDataAsString",s=>this.exportSingleValue(this.getDataAsString(this.vm.getString(s)),void 0)),r("parsePObjectCollection",(s,n,i)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(s),this.vm.dump(n),this.vm.getString(i)),void 0)),r("getBlobContentAsBase64",s=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(s)),void 0)),r("getBlobContentAsString",s=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(s)),void 0)),r("getDownloadedBlobContentHandle",s=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(s)),void 0)),r("getOnDemandBlobContentHandle",s=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(s)),void 0)),r("getImportProgress",s=>this.exportSingleValue(this.getImportProgress(this.vm.getString(s)),void 0)),r("getLastLogs",(s,n)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(s),this.vm.getNumber(n)),void 0)),r("getProgressLog",(s,n)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(s),this.vm.getString(n)),void 0)),r("getLogHandle",s=>this.exportSingleValue(this.getLogHandle(this.vm.getString(s)),void 0)),r("getBlockLabel",s=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(s)),void 0)),r("getDataFromResultPool",s=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),r("getDataWithErrorsFromResultPool",s=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),r("getSpecsFromResultPool",s=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),r("calculateOptions",s=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(s)),void 0)),r("createPFrame",s=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(s)),void 0)),r("createPTable",s=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(s)),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}function Eo(o,e,t,r,s={}){return S.Computable.makeRaw(n=>{const i=new ie.Scope;n.addOnDestroy(()=>i.dispose());const a=i.manage(o.quickJs.newRuntime());a.setMemoryLimit(1024*640),a.setMaxStackSize(1024*320);const c=i.manage(a.newContext()),u=new le(i,c,e,o,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)}}},s)}function Oe(o,e,t,r,s={}){if(R.isFunctionHandle(t)){if(r===void 0)throw new Error("No code bundle.");return Eo(o,e,t,r,s)}else return At(o.driverKit,e,t,s)}function jo(o,e,t){return S.Computable.make(r=>{var w,P,I,H,U,_,z,te;const s=r.accessor(o).node(),n=h.notEmpty(s.getKeyValueAsJson(xe)),i=h.notEmpty(s.getKeyValueAsJson(X)),a=h.notEmpty(s.getKeyValueAsJson(ee)),c=h.notEmpty(s.getKeyValueAsJson(q)),u=h.notEmpty(s.getKeyValueAsJson(ae)),d=new Map;for(const{id:k}of V(c)){const M=s.traverse({field:C(k,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let W;const x=s.traverse({field:C(k,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(x!==void 0){const T=s.getField({field:C(k,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),O=s.getField({field:C(k,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});W={arguments:x.getDataAsJson(),stale:M.id!==x.id,outputError:T.error!==void 0||O.error!==void 0||((w=T.value)==null?void 0:w.getError())!==void 0||((P=O.value)==null?void 0:P.getError())!==void 0,outputsError:((I=T.error)==null?void 0:I.getDataAsString())??((U=(H=T.value)==null?void 0:H.getError())==null?void 0:U.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:M.getDataAsJson(),prod:W})}const g=se(c,k=>d.get(k).currentArguments),f=new Set(u.blocksInLimbo),v=[...V(c)].map(({id:k,label:M,renderingMode:W})=>{var Ue,$e,Ge,He;const x=h.notEmpty(d.get(k)),T=h.notEmpty(g.nodes.get(k));let O="NotCalculated";x.prod!==void 0&&(f.has(k)?O="Limbo":O=x.prod.finished?"Done":"Running");const $=s.traverse({field:C(k,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),L=$==null?void 0:$.getDataAsJson(),{sections:re,inputsValid:b,sdkVersion:B}=ue(L==null?void 0:L.config,fe=>{const Y=R.normalizeBlockConfig(fe),_e=Le(s,k);return{sections:Oe(t,_e,Y.sections,Y.code),inputsValid:Oe(t,_e,Y.inputsValid,Y.code),sdkVersion:Y.sdkVersion}})||{},F=ue(L,fe=>t.blockUpdateWatcher.get(fe.source));return{id:k,label:M,renderingMode:W,stale:((Ue=x.prod)==null?void 0:Ue.stale)!==!1||O==="Limbo",missingReference:T.missingReferences,upstreams:[...g.traverseIdsExcludingRoots("upstream",k)],downstreams:[...g.traverseIdsExcludingRoots("downstream",k)],calculationStatus:O,outputErrors:(($e=x.prod)==null?void 0:$e.outputError)===!0,outputsError:(Ge=x.prod)==null?void 0:Ge.outputsError,exportsError:(He=x.prod)==null?void 0:He.exportsError,sections:re,inputsValid:b,currentBlockPack:L==null?void 0:L.source,updatedBlockPack:F,sdkVersion:B,navigationState:e.getState(k)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:s.getKeyValueAsJson(ke),blocks:v}},{postprocessValue:r=>{const s=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{i.inputsValid||s.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=>s.has(u))===-1;return{...i,canRun:c,stale:a}})}}}).withStableType()}function Nt(o,e){var t,r;return ue((r=(t=o.traverse({field:C(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}))==null?void 0:t.getDataAsJson())==null?void 0:r.config,s=>R.normalizeBlockConfig(s))}function xo(o,e){const t=o.node();if(l.resourceTypesEqual(t.resourceType,Ie)){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,Ne)){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 Ao(o,e){if(o!==void 0)return S.Computable.make(t=>xo(t.accessor(o),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 Io(o,e,t){return S.Computable.make(r=>{var a;const s=r.accessor(o).node(),n=Nt(s,e),i=(a=s.traverse({field:C(e,"blockPack"),assertFieldType:"Dynamic"},{field:l.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Ct,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:Ao(i,t),sdkVersion:n==null?void 0:n.sdkVersion}},{mode:"StableOnlyLive"})}function No(o,e,t){return S.Computable.make(r=>{const s=r.accessor(o).node(),n=Le(s,e);return{author:s.getKeyValueAsJson(Se(e)),args:JSON.parse(n.args),ui:n.uiState!==void 0?JSON.parse(n.uiState):void 0}},{key:"inputs#"+l.resourceIdToString(o.rid)+e})}function Vo(o,e,t){return S.Computable.make(r=>{const s=r.accessor(o).node(),n=Dt(s,e),i=Nt(s,e);return ue(i,a=>{const c={};for(const[u,d]of Object.entries(a.outputs))c[u]=S.Computable.wrapError(Oe(t,n,d,a.code));return c})},{key:"outputs#"+l.resourceIdToString(o.rid)+e}).withStableType()}function Lo(o,e){return S.Computable.make(t=>{const r=t.accessor(o).node(),s=h.notEmpty(r.getKeyValueAsJson(q)),n=[];for(const{id:i,renderingMode:a}of V(s)){const c=r.traverse({field:C(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=R.normalizeBlockConfig(u.config),g=Object.entries(d.outputs).map(([,v])=>v).filter(v=>!R.isFunctionHandle(v)&&eo(v)).map(v=>v);if(g.length===0)continue;const f=Dt(r,i);for(const v of g)n.push(S.Computable.wrapError(At(e.driverKit,f,v)))}return n})}class Jo{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:{...R.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 Jo);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=jo(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=Lo(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 qt.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,s=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,s,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,s){const n=await this.env.bpPreparer.prepare(t),i=await this.env.bpPreparer.getBlockConfig(t);await N(this.env.pl,this.rid,s,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 s=r.structure;if(s.groups.length!==1)throw new Error("Unexpected project structure, non-sinular block group");const n=s.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,s=>{s.setBlockLabel(e,t)}),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await N(this.env.pl,this.rid,r,s=>s.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,r){await N(this.env.pl,this.rid,r,s=>s.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,s){await N(this.env.pl,this.rid,s,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 s=l.ensureResourceIdNotNull((await r.getField(l.field(this.rid,C(e,"blockPack")))).value),n=l.ensureResourceIdNotNull((await r.getField(l.field(s,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=Vo(this.projectTree.entry(),e,this.env),n={fullState:S.Computable.make(i=>({argsAndUiState:No(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=Io(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 Be.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:Mo},e.logger);return new he(e,t,r)}}function Mo(o){switch(o.type.name){case"BlockPackCustom":return o.fields.filter(e=>e.name!=="template");case"UserProject":return o.fields.filter(e=>!e.name.startsWith("__serviceTemplate"));case"Blob":return[];default:return o.fields}}const Je={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 Me(o){return{blobDownloadPath:j.join(o,"download")}}const Vt={...Je,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function Lt(o){return{...Me(o),frontendDownloadPath:j.join(o,"frontend")}}const Ko={minDelay:1500},Uo="__no_updates__";class $o extends S.PollComputablePool{constructor(t,r,s={}){super({...s,...Ko},r);p(this,"http");this.registryProvider=t,this.http=s.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 Uo}}async readValue(t){var r;try{switch(t.type){case"dev-v1":try{const s=await je(t.folder);return s===t.mtime?void 0:{...t,mtime:s}}catch(s){this.logger.warn(s);return}case"dev-v2":try{const s=await D.tryLoadPackDescription(t.folder,this.logger);if(s===void 0)return;const n=await de(s);return n===t.mtime?void 0:{...t,mtime:n}}catch(s){this.logger.warn(s);return}case"from-registry-v2":try{const s=this.registryProvider.getRegistry(t.registryUrl),n=(r=await s.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 s.getComponents(n.id)}catch(i){this.logger.warn(i)}})(),n)}catch(s){this.logger.warn(s);return}default:return}}catch(s){this.logger.warn(s);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 nt{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 s=!1;return{resource:r.resource,key:t,unref:()=>{s||(r.refCount--,s=!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 it(o){return String(o.id)}class Go{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 s of r){for(const i of $r(s.data))this.blobIdToResource.set(it(i),i);const n=Gr(s.data,it);try{this.pFrame.addColumnSpec(s.id,s.spec),this.pFrame.setColumnData(s.id,n)}catch(i){throw new Error(`Adding column ${s.id} to PFrame failed: ${i}; Spec: ${s.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 Ho{constructor(e){p(this,"pFrames");p(this,"pTables");p(this,"blobContentCache");p(this,"concurrencyLimiter");this.blobDriver=e;const t=new Wt.LRUCache({maxSize:1e9,fetchMethod:async s=>await ct.readFile(s),sizeCalculation:s=>s.length}),r=new h.ConcurrencyLimitingExecutor(1);this.blobContentCache=t,this.concurrencyLimiter=r,this.pFrames=new class extends nt{constructor(s){super(),this.blobDriver=s}createNewResource(s){return new Go(this.blobDriver,t,s)}calculateParamsKey(s){return qo(s)}}(this.blobDriver),this.pTables=new class extends nt{constructor(s){super(),this.pFrames=s}async createNewResource(s){const n=this.pFrames.getByKey(s.pFrameHandle),i=await r.run(async()=>await n.pFrame.createTable({src:Z(s.def.src),filters:s.def.filters}));return s.def.sorting.length!==0?i.sort(s.def.sorting):i}calculateParamsKey(s){return _o(s)}}(this.pFrames)}createPFrame(e,t){const r=e.map(n=>R.mapPObjectData(n,i=>Yr(i))),s=this.pFrames.acquire(r);return t.addOnDestroy(s.unref),s.key}createPTable(e,t){const r=this.createPFrame(zo(e.src),t),s=R.mapPTableDef(e,i=>i.id),n=this.pTables.acquire({def:s,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(s=>s.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 s=r.getSpec(),n=await this.concurrencyLimiter.run(async()=>await r.getData([...s.keys()]));return r.dispose(),s.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 s=await this.pTables.getByKey(e);return await this.concurrencyLimiter.run(async()=>await s.getData(t,r))}}function Z(o){switch(o.type){case"column":return{type:"column",columnId:o.column,qualifications:[]};case"inner":case"full":return{type:o.type,entries:o.entries.map(e=>Z(e))};case"outer":return{type:"outer",primary:Z(o.primary),secondary:o.secondary.map(e=>Z(e))};default:h.assertNever(o)}}function _o(o){const e=K.createHash("sha256");return e.update(o.pFrameHandle),e.update(De(o.def)),e.digest().toString("hex")}function qo(o){const e=o.map(s=>s.id).sort(),t=K.createHash("sha256");let r="";for(const s of e)r!==s&&(t.update(s),r=s);return t.digest().toString("hex")}function zo(o){const e=new Map;return ne(o,e),[...e.values()]}function ne(o,e){switch(o.type){case"column":e.set(o.column.id,o.column);return;case"full":case"inner":for(const t of o.entries)ne(t,e);return;case"outer":ne(o.primary,e);for(const t of o.secondary)ne(t,e);return;default:h.assertNever(o)}}async function Jt(o,e,t){const r={...Je,...Me(e),...t},s=new h.HmacSha256Signer(r.localSecret),n=J.createDownloadClient(r.logger,o,r.localProjections),i=J.createLogsClient(o,r.logger),a=J.createUploadBlobClient(o,r.logger),c=J.createUploadProgressClient(o,r.logger),u=new J.DownloadDriver(r.logger,n,i,r.blobDownloadPath,s,r.blobDriverOps),d=new J.UploadDriver(r.logger,s,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,o,s,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),w=new Ho(u);return{blobDriver:u,logDriver:f,lsDriver:v,signer:s,uploadDriver:d,pFrameDriver:w}}class Ke{constructor(e,t,r,s,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=s,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 s=>{const n=await Ur(s,e);return s.createField(l.field(this.projectListResourceId,t),"Dynamic",n),await s.commit(),await l.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await N(this.pl,e,r,async s=>{s.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 s={...Vt,...Lt(t),...r};process.env.MI_LOG_TREE_STAT&&(s.defaultTreeOptions.logStat=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request");const n=await e.withWriteTx("MLInitialization",async P=>{const I=l.field(P.clientRoot,br);P.createField(I,"Dynamic");const H=await P.getField(I);if(l.isNullResourceId(H.value)){const U=P.createEphemeral(gt);return P.lock(U),P.setField(I,U),await P.commit(),await U.globalId}else return H.value}),i=s.logger,a=await Jt(e,t,s),c=new G.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new lt(c),d=new Ir(u,a.signer,c),g=new J.DownloadUrlDriver(i,e.httpDispatcher,s.frontendDownloadPath),f={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:s,bpPreparer:d,frontendDownloadDriver:g,driverKit:a,blockUpdateWatcher:new $o(u,i,{minDelay:s.devBlockUpdateRecheckInterval,http:c}),quickJs:await ie.getQuickJS()},v=new S.WatchableValue([]),w=await Sr(e,n,v,f);return new Ke(f,a,a.signer,n,v,w.tree,u,w.computable)}}exports.BlockPackRegistry=sr;exports.CentralBlockRegistry=nr;exports.DefaultDriverKitOpsPaths=Me;exports.DefaultDriverKitOpsSettings=Je;exports.DefaultMiddleLayerOpsPaths=Lt;exports.DefaultMiddleLayerOpsSettings=Vt;exports.FrontendFromFolderResourceType=Ne;exports.FrontendFromUrlResourceType=Ie;exports.MiddleLayer=Ke;exports.Project=he;exports.TengoTemplateGet=ht;exports.TengoTemplateGetRegistry=ft;exports.TengoTemplateGetTemplate=vt;exports.TengoTemplateGetTemplateURI=mt;exports.TengoTemplatePack=yt;exports.TengoTemplatePackConvert=bt;exports.TengoTemplatePackConvertTemplate=St;exports.TengoTemplatePackConvertTemplatePack=wt;exports.V1CentralDevSnapshotRegistry=ar;exports.V1CentralRegistry=ir;exports.V2RegistryProvider=lt;exports.createRenderTemplate=Ae;exports.getDevV1PacketMtime=je;exports.getDevV2PacketMtime=de;exports.initDriverKit=Jt;exports.loadTemplate=pe;exports.prepareTemplateSpec=kt;Object.keys(R).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>R[o]})});Object.keys(Q).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>Q[o]})});Object.keys(l).forEach(o=>{o!=="default"&&!Object.prototype.hasOwnProperty.call(exports,o)&&Object.defineProperty(exports,o,{enumerable:!0,get:()=>l[o]})});
|
|
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`
|
|
2
|
+
Network report:
|
|
3
|
+
pl endpoint: ${e};
|
|
4
|
+
options: ${JSON.stringify(t,null,2)}.
|
|
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};
|
|
12
|
+
|
|
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};
|
|
19
|
+
|
|
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};
|
|
26
|
+
|
|
27
|
+
Block registry dumps:
|
|
28
|
+
${JSON.stringify(s.blockRegistryChecks,null,2)}
|
|
29
|
+
|
|
30
|
+
Auto-update CDN dumps:
|
|
31
|
+
${JSON.stringify(s.autoUpdateCdnChecks,null,2)}
|
|
32
|
+
|
|
33
|
+
Platforma pings error dumps:
|
|
34
|
+
${JSON.stringify(o,null,2)}
|
|
35
|
+
|
|
36
|
+
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]})});
|
|
2
39
|
//# sourceMappingURL=index.js.map
|