@milaboratories/pl-middle-layer 1.25.0 → 1.25.2

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