@milaboratories/pl-middle-layer 1.26.2 → 1.26.3

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