@milaboratories/pl-middle-layer 1.27.7 → 1.27.9
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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +128 -120
- package/dist/index.mjs.map +1 -1
- package/dist/pool/driver.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/pool/driver.ts +46 -32
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var ds=Object.defineProperty;var Gt=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Mt=s=>{throw TypeError(s)};var ps=(s,e,t)=>e in s?ds(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var w=(s,e,t)=>ps(s,typeof e!="symbol"?e+"":e,t);var Fe=(s,e,t)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&Mt("Object expected");var r;t&&(r=e[Gt("asyncDispose")]),r===void 0&&(r=e[Gt("dispose")]),typeof r!="function"&&Mt("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,a,c,l){return l=Error(c),l.name="SuppressedError",l.error=i,l.suppressed=a,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 a=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(a).then(n,c=>(o(c),n()))}catch(c){o(c)}if(t)throw e};return n()};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("@platforma-sdk/model"),U=require("@milaboratories/pl-model-middle-layer"),_t=require("@milaboratories/pl-deployments"),ce=require("undici"),_=require("@platforma-sdk/block-tools"),Q=require("node:fs"),K=require("node:path"),hs=require("yaml"),k=require("@milaboratories/ts-helpers"),fs=require("node:fs/promises"),gs=require("@milaboratories/resolve-helper"),m=require("@milaboratories/pl-client"),qe=require("@milaboratories/pl-tree"),j=require("@milaboratories/computable"),ae=require("node:crypto"),N=require("@milaboratories/pl-model-backend"),$r=require("denque"),ms=require("@platforma-sdk/workflow-tengo"),te=require("canonicalize"),vs=require("node:assert"),Ge=require("quickjs-emscripten"),Tr=require("node:timers/promises"),Z=require("@milaboratories/pl-drivers"),Ae=require("@milaboratories/pframes-node"),ys=require("@milaboratories/pframes-rs-node"),Ss=require("lru-cache"),bs=require("node:diagnostics_channel");function ws(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 Fr=ws(fs);async function Kt(s){try{return await Fr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const Ps=[_.RegistryV1.PlPackageYamlConfigFile],Cs=[_.RegistryV1.PlPackageJsonConfigFile],Pt=["backend","dist","tengo","tpl","main.plj.gz"],Ct=["config","dist","config.json"],Ir=["frontend","dist"],qt="block-model/dist/config.json",Rs="block-ui/package.json",Es=[Pt,Ct,Ps,Cs,Ir];async function ks(s){return await Kt(K.join(s,...Ct))!==void 0||await Kt(K.join(s,...Pt))!==void 0}function ot(s,e){const t=gs.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Ht(s,e){if(K.isAbsolute(s)||(s=K.resolve(s)),await ks(s))return{workflow:K.join(s,...Pt),config:K.join(s,...Ct),ui:K.join(s,...Ir)};{const t=ot(s,qt),r=ot(s,qt),o=ot(s,Rs);return{workflow:t,config:r,ui:K.resolve(o,"..","dist")}}}async function Os(s){try{return await Q.promises.readFile(s,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function $s(s){try{return await Q.promises.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function Rt(s){let e=0n;for(const t of Es){const r=K.join(s,...t),o=await $s(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function He(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 Ts{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 ce.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 Os(K.join(c,_.RegistryV1.PlPackageYamlConfigFile));if(l!==void 0){const u=_.RegistryV1.PlPackageConfigData.parse(hs.parse(l)),d=await Rt(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 He(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 Ar{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 Fs={type:"remote-v2",url:"https://blocks.pl-open.science/"},Is={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},As={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},Ls={groups:[{id:"default",label:"Default",blocks:[]}]},Ds={stagingRefreshTimestamp:0,blocksInLimbo:[]},Ns={label:"New Project"},Bs={name:"UserProject",version:"2"},Lr="SchemaVersion",Dr="1",Et="ProjectCreated",Oe="ProjectLastModified",$e="ProjectMeta",de="ProjectStructure",Me="BlockRenderingState",js="BlockFrontendState/",xs=/^BlockFrontendState\/(?<blockid>.*)$/;function ht(s){return`${js}${s}`}const Vs="BlockArgsAuthor/";function ft(s){return`${Vs}${s}`}const gt="ProjectStructureAuthor";function Us(s){const e=s.match(xs);if(e!==null)return e.groups.blockid}const Js="__serviceTemplate_";function mt(s){return`${Js}${s}`}function G(s,e){return`${s}-${e}`}const Gs=/^(?<blockId>.*)-(?<fieldName>blockPack|blockSettings|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function Ms(s){const e=s.match(Gs);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const _s="projects",Nr={name:"Projects",version:"1"},Ks=s=>m.resourceTypesEqual(s.type,Nr)?s.fields:[];async function qs(s,e,t,r){const o=await qe.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Ks},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($e)),h=k.notEmpty(d.getKeyValueAsJson(Et)),g=k.notEmpty(d.getKeyValueAsJson(Oe));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 Hs={name:"EphRenderTemplate",version:"1"},Ws={name:"RenderTemplate",version:"1"};function kt(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(Hs):s.createStruct(Ws),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 zs={name:"BContextEnd",version:"1"},Xs={name:"BContext",version:"1"},Ys="id",Qs="parent/",Zs=["context","result"];function Wt(s,e,t){return kt(s,e,!0,t,Zs)}function eo(s){const e=s.createEphemeral(zs);return s.lock(e),e}function to(s,e){if(e.length===0)return eo(s);if(e.length===1)return e[0];const t=s.createEphemeral(Xs);s.createField(m.field(t,Ys),"Input",m.Pl.createPlString(s,ae.randomUUID()));for(let r=0;r<e.length;r++)s.createField(m.field(t,`${Qs}${r}`),"Input",e[r]);return s.lock(t),t}function ro(s,e){const t=N.parseTemplate(e.content),r=t.type;switch(r){case"pl.tengo-template.v2":return oo(s,t);default:k.assertNever(r)}}const zt={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))}},Le={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}},so={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)))}},Br={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),zt.hash(o,e);for(const[r,o]of t(Object.entries(s.software??{})))e.update("soft:"+r),Le.hash(o,e);for(const[r,o]of t(Object.entries(s.assets??{})))e.update("asset:"+r),Le.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,a]of Object.entries(s.libs??{})){const c=N.PlTemplateV1.libField(r,i);e.createField(c,"Input"),e.setField(c,t(a,zt))}for(const[i,a]of Object.entries(s.software??{})){const c=N.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(s.assets??{})){const c=N.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(s.templates??{})){const c=N.PlTemplateV1.tplField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Br))}if(e.lock(r),!s.hashOverride)return r;const o=t(s,so),n=N.PlTemplateOverrideV1.tplField(o);return e.createField(n,"Service"),e.setField(n,r),e.lock(r),o}};function oo(s,e){const t=new Map,r=(o,n)=>{const i=ae.createHash("sha256");n.hash(o,i);const a=i.digest("hex");if(!t.has(a)){const c=n.render(o,s,r);t.set(a,c)}return t.get(a)};return r(e,Br)}const jr={name:"TengoTemplateGet",version:"1"},xr="registry",Vr="templateURI",Ur="template",no={name:"TengoTemplatePack",version:"1"},io={name:"TengoTemplatePackConvert",version:"1"},ao="templatePack",co="template";async function Jr(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 lo(s,e){const t=s.createStruct(jr),r=m.field(t,xr),o=m.field(t,Vr),n=m.field(t,Ur);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 We(s,e){switch(e.type){case"from-registry":return lo(s,e);case"explicit":return ro(s,e);default:return k.assertNever(e)}}const Ot={name:"Frontend/FromUrl",version:"1"},$t={name:"Frontend/FromFolder",version:"1"};function uo(s,e){switch(e.type){case"url":return s.createValue(Ot,JSON.stringify({url:e.url}));case"local":return s.createValue($t,JSON.stringify({path:e.path,signature:e.signature}));default:return k.assertNever(e)}}const po={name:"BlockPackCustom",version:"1"},Gr="template",Mr="frontend";function Xt(s){return s.endsWith("/")?s:`${s}/`}class ho{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 Ht(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=`${Xt(e.registryUrl)}${_.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await ce.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 ce.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 Ht(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 He(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=`${Xt(e.registryUrl)}${_.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,o=`${r}/template.plj.gz`,n=await ce.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 ce.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 ce.request(o.model.url,t)).body.json(),i=async()=>await(await ce.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 fo(s,e){const t={config:e.config,source:e.source},r=s.createStruct(po,JSON.stringify(t));return s.createField(m.field(r,Gr),"Input",We(s,e.template)),s.createField(m.field(r,Mr),"Input",uo(s,e.frontend)),s.lock(r),r}function Yt(s,e){switch(e.type){case"explicit":return fo(s,e);default:return k.assertNever(e.type)}}function De(s,e){return{__isRef:!0,blockId:s,name:e}}function go(s){return typeof s=="object"&&s!==null&&s.__isRef===!0&&"blockId"in s&&"name"in s}function vt(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(go(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)vt(s,o,t);else for(const[,o]of Object.entries(e))vt(s,o,t);return;default:k.assertNever(r)}}function mo(s,e){const t={upstreams:new Set,missingReferences:!1};return vt(t,s,e),t}function ie(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class _r{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 yt(s){const e=new Map;let t;for(const{id:r}of ie(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 _r(e)}function Je(s,e){const t=new Map,r=new Set;for(const{id:o}of ie(s)){const n=e(o);if(n===void 0)continue;const i=mo(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 _r(t)}function vo(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function St(s,e){if(s.size>e.size)return St(e,s);for(const t of s)if(e.has(t))return!0;return!1}function Qt(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):(!vo(n.upstream,i.upstream)||St(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?St(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let nt;async function Kr(){if(nt===void 0){const s=await Jr(ms.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=ae.createHash("sha256").update(s.content).digest("hex");nt={spec:s,hash:e}}return nt}function yo(s,e,t){return kt(s,e,!0,{pf:t},["result"]).result}function it(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 Zt{constructor(e,t){w(this,"currentInputsC",it(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));w(this,"actualProductionInputsC",it(()=>{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",it(()=>{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),Gr,"Input")}}const So=s=>{throw new Error(`No new block info for ${s}`)};class _e{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=yt(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 ie(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 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))}),to(this.tx,r)}exportCtx(e){return yo(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=Wt(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=Wt(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=So){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=yt(e),i=Je(e,l=>{var u;return(u=this.blockInfos.get(l))==null?void 0:u.actualProductionInputs}),a=Qt(r,n),c=Qt(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 Zt(l,{});this.blockInfos.set(l,u);const d=t(l),f=Yt(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,Yt(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 ie(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 $r(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,ft(t)):this.tx.setKValue(this.rid,ft(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,gt):this.tx.setKValue(this.rid,gt,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,Oe,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,de,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Me,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,$e,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,ht(e)):this.tx.setKValue(this.rid,ht(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,Lr),i=e.getKValueJson(t,Oe),a=e.getKValueJson(t,$e),c=e.getKValueJson(t,de),l=e.getKValueJson(t,Me),u=e.listKeyValuesString(t),[d,f,h,g,R,{stagingRefreshTimestamp:A,blocksInLimbo:x},H]=await Promise.all([o,n,i,a,c,l,u]);if(f!==Dr)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${f}`);const T=new Map;for(const p of d.fields){const S=Ms(p.name);if(S===void 0)continue;let v=T.get(S.blockId);v===void 0&&(v={id:S.blockId,fields:{}},T.set(S.blockId,v)),v.fields[S.fieldName]=m.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const le=await Kr(),pe=mt(le.hash),D=d.fields.find(p=>p.name===pe);let X;D!==void 0?X=m.ensureResourceIdNotNull(D.value):(X=m.Pl.wrapInHolder(e,We(e,le.spec)),e.createField(m.field(t,mt(le.hash)),"Dynamic",X));const ue={stagingRefreshTimestamp:A},W=new Set(x),M=new Map;for(const p of H){const S=Us(p.key);S!==void 0&&M.set(S,p.value)}const J=[];T.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;T.forEach(({id:p,fields:S})=>Y.set(p,new Zt(p,S)));const he=new Set;for(const p of ie(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 _e(t,e,r,f,h,g,R,ue,W,Y,M,X);return y.fixProblemsAndMigrate(),y}}async function bo(s,e=Ns){const t=s.createEphemeral(Bs);s.lock(t);const r=String(Date.now());s.setKValue(t,Lr,JSON.stringify(Dr)),s.setKValue(t,Et,r),s.setKValue(t,Oe,r),s.setKValue(t,$e,JSON.stringify(e)),s.setKValue(t,de,JSON.stringify(Ls)),s.setKValue(t,Me,JSON.stringify(Ds));const o=await Kr();return s.createField(m.field(t,mt(o.hash)),"Dynamic",m.Pl.wrapInHolder(s,We(s,o.spec))),t}async function Ne(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 _e.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await _e.load(s,e,t),n=await r(o);return o.save(),n}}function*wo(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 er(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function Po(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:er(s.parts,e)};case"BinaryPartitioned":return{...s,parts:er(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:k.assertNever(s)}}const Co=m.resourceType("PColumnData/JsonPartitioned","1"),Ro=m.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),Eo=m.resourceType("PColumnData/BinaryPartitioned","1"),ko=m.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Oo=m.resourceType("PColumnData/Json","1");function $o(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,Oo)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(m.resourceTypesEqual(s.resourceType,Co)){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,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 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,Eo)){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,ko)){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 To(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 Fo(s,e){const t=ae.createHash("sha256");return t.update(te(s)),t.update(String(m.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function tr(s,e){return te({__isRef:!0,blockId:s,name:e})}function Io(s,e){return te({resolvePath:s,name:e})}function qr(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 Ao(s,e=!0,t="",r){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const o=qr(s,e,!1,t);vs(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 qe.PlError(c.error);n[i]={id:r.length===0?Fo(a.spec,c.value):Io(r,i),spec:a.spec,data:c.value}}return n}class Tt{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:tr(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:De(i,a),obj:{id:l.ok?tr(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:De(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:De(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:De(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(de)),a=yt(n).traverseIds("upstream",r),c=new Map;for(const l of ie(n)){if(!a.has(l.id))continue;const u=rr(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=rr(o.traverse({field:G(l.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:G(l.id,"stagingUiCtx")}));c.set(l.id,{info:l,prod:u,staging:d})}return new Tt(e,c)}}function rr(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return qr(e.value,!1,!0)}function Ft(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(ht(e)),blockMeta:n=>{const i=n.accessor(s).node(),a=k.notEmpty(i.getKeyValueAsJson(de)),c=new Map;for(const l of ie(a))c.set(l.id,l);return c}}}function Hr(s,e){return{...Ft(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=>Tt.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"GetProgressLogWithInfo":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 Lo(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 Do(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function No(s){for(const e of z(s))if(Do(e))return!0;return!1}function ze(s){return{type:"ReturnResult",result:s}}function O(s){return()=>ze(s)}const Bo=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return O(e)},jo=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)},xo=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?O(void 0):({cCtx:r})=>{var o;return ze((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function Wr(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function Vo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):()=>({type:"ScheduleSubroutine",subroutine:zr(r.length),args:Wr(r,o=>$({...s,[e.itVar]:o},e.mapping))})}}function zr(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return O(t)}}function Uo(s,e){return t=>{const r=t.source;if(r===void 0)return O(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=$(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Jo,args:o})}}const Jo=s=>O(s),Go=s=>{const e=s.arg;return O(e===void 0?void 0:e.length===0)},Mo=s=>{const e=s.operand;return O(e===void 0?void 0:!e)},_o=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e&&t)},Ko=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e||t)},qo=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t})=>{var r;return ze((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},Ho=s=>{const e=s.source,t=s.field;return O(e===void 0||t===void 0?void 0:e[t])};function Wo(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]=$(l,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:zo,args:i}}}}const zo=s=>O(s),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!==void 0)return await t.blobDriver.getContent(r.handle)}})})},Yo=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()})}}},Qo=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())}})})},Zo=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},en=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},tn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.blobToURLDriver.extractArchiveAndGetURL(t,s)})},rn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},sn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},on=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},nn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLogWithInfo(t,s)})},an=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function $(s,e){switch(e.type){case"GetFromCtx":const t=s[e.variable];return typeof t=="function"?r=>ze(t(r.cCtx)):O(t);case"Isolate":return({drivers:r})=>({type:"ScheduleComputable",computable:Qr(r,s,e.cfg)});case"Immediate":return O(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:Ho,args:{source:$(s,e.source),field:$(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:Vo(s,e),args:{source:$(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Uo(s,e),args:{source:$(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:Bo,args:Lo(e.template,r=>$(s,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:zr(e.template.length),args:Wr(e.template,r=>$(s,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:jo,args:{source:$(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Go,args:{arg:$(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Mo,args:{operand:$(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:_o,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:Ko,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Wo(s,e),args:{source:$(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:xo,args:{source:$(s,e.source),field:$(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:qo,args:{source:$(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Xo,args:{source:$(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:Yo,args:{source:$(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Qo,args:{source:$(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Zo,args:{source:$(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:en,args:{source:$(s,e.source)}});case"ExtractArchiveAndGetURL":return()=>({type:"ScheduleSubroutine",subroutine:tn(e.format),args:{source:$(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:rn,args:{source:$(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:sn(e.lines),args:{source:$(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:on(e.patternToSearch),args:{source:$(s,e.source)}});case"GetProgressLogWithInfo":return()=>({type:"ScheduleSubroutine",subroutine:nn(e.patternToSearch),args:{source:$(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:an,args:{source:$(s,e.source)}});default:return k.assertNever(e)}}const cn=["$prod","$staging"];function ln(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 Xr=Symbol(),Yr="return",un={op:Xr,arg:Yr};function dn(s){return s.op==Xr&&s.arg==Yr}function pn(){return{pendingSubroutines:new Map}}function sr(s,e,t,r){const o=new $r(t),n=(a,c)=>{if(dn(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 hn(s,e,t,r={}){return Qr(s,ln(e),t,r)}function Qr(s,e,t,r={}){const o=`${e.blockId}#`+te({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>cn.indexOf(n)===-1)),cfg:t});return j.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=pn();return{ir:sr(i,a,[{destination:un,operation:$(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 a.pendingSubroutines)f.set(g,{...R,args:{...R.args}});const h={result:a.result,pendingSubroutines:f};if(sr(d,h,u,!1),!("result"in h))throw new Error("illegal cfg rendering stack state, no result");return h.result}}},{...r,key:o})}function fn(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function or(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class Ke{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 Ke.cleanErrorContext(t),t}}runCallback(e,...t){try{return Ge.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 Ke.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 or(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return or(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=Ao(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}_${ae.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))}getProgressLogWithInfo(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLogWithInfo",this.env.driverKit.logDriver.getProgressLogWithInfo(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=k.notEmpty(this.blockCtx.getResultsPool,"getResultsPool")(this.computableCtx)}return this._resultPool}calculateOptions(e){return this.resultPool.calculateOptions(e)}getDataFromResultPool(){const e=this.resultPool.getData();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj: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=ae.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(fn(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(){Ge.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("getProgressLogWithInfo",(a,c)=>this.exportSingleValue(this.getProgressLogWithInfo(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getLogHandle",a=>this.exportSingleValue(this.getLogHandle(this.vm.getString(a)),void 0)),i("getBlockLabel",a=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(a)),void 0)),i("getDataFromResultPool",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 Xe(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 Be=process.env.MI_LOG_OUTPUT_STATUS;function gn(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 Ge.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 Ke(c,u,e,s,a);d.evaluateBundle(r.content);const f=d.runCallback(t.handle);d.resetComputableCtx();let h=0;return Be&&Be!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:async(g,{unstableMarker:R,stable:A})=>{for(const[H,T]of Object.entries(g))d.runCallback(H,T);const x=d.importObjectUniversal(f);return h++,Be&&(Be!=="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 mn(s){return B.isConfigLambda(s)?s.isActive===!0:No(s)}function Re(s,e,t,r,o,n={}){if(B.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return gn(s,e,t,r,o,n)}else return hn(s.driverKit,e,t,n)}function vn(s,e,t){return j.Computable.make(r=>{var g,R,A,x,H,T,le,pe;const o=r.accessor(s).node(),n=k.notEmpty(o.getKeyValueAsJson(Et)),i=k.notEmpty(o.getKeyValueAsJson(Oe)),a=k.notEmpty(o.getKeyValueAsJson($e)),c=k.notEmpty(o.getKeyValueAsJson(de)),l=k.notEmpty(o.getKeyValueAsJson(Me)),u=new Map;for(const{id:D}of ie(c)){const X=o.traverse({field:G(D,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ue;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});ue={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())??((H=(x=M.value)==null?void 0:x.getError())==null?void 0:H.getDataAsString()),exportsError:((T=J.error)==null?void 0:T.getDataAsString())??((pe=(le=J.value)==null?void 0:le.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:ue})}const d=Je(c,D=>u.get(D).currentArguments),f=new Set(l.blocksInLimbo),h=[...ie(c)].map(({id:D,label:X,renderingMode:ue})=>{var b,C,F,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=Xe(o,D),{sections:he,title:y,inputsValid:p,sdkVersion:S}=Ce(Y,({bpId:V,cfg:I,info:fe})=>{const st=Ft(s,D);return{sections:Re(t,st,I.sections,I.code,V),title:Ce(I.title,us=>Re(t,st,us,I.code,V)),inputsValid:Re(t,st,I.inputsValid,I.code,V),sdkVersion:I.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:ue,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:(F=W.prod)==null?void 0:F.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:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(gt),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 yn(s,e){const t=s.node();if(m.resourceTypesEqual(t.resourceType,Ot)){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,$t)){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 Sn(s,e){if(s!==void 0)return j.Computable.make(t=>yn(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 bn(s,e,t){return j.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Xe(o,e),i=(a=o.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic"},{field:m.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Mr,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:Sn(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function Zr(s,e,t){if(t===void 0)return j.Computable.make(i=>Zr(s,e,i),{key:`inputs#${m.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=Ft(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(ft(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function wn(s,e,t){return j.Computable.make(r=>{const o=r.accessor(s).node(),n=Hr(s,e);return Ce(Xe(o,e),({cfg:i,bpId:a})=>{const c={};for(const[l,u]of Object.entries(i.outputs)){const d=Re(t,n,u,i.code,a);c[l]=j.Computable.wrapError(d)}return c})},{key:"outputs#"+m.resourceIdToString(s.rid)+"#"+e}).withStableType()}function Pn(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:a}of ie(o)){const c=Xe(r,i);if(c===void 0)continue;const l=Object.entries(c.cfg.outputs).map(([,d])=>d).filter(d=>mn(d)).map(d=>d);if(l.length===0)continue;const u=Hr(r.persist(),i);for(const d of l)n.push(j.Computable.wrapError(Re(e,u,d,c.cfg.code,c.bpId)))}return n})}class Cn{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 Ye{constructor(e,t,r){w(this,"rid");w(this,"overview");w(this,"navigationStates",new Cn);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=vn(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=Pn(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await Ne(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await Tr.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=ae.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 Ne(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await Ne(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),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=wn(this.projectTree.entry(),e,this.env),n={fullState:j.Computable.make(i=>({argsAndUiState:Zr(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=bn(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 Ne(e.pl,t,o=>{});const r=await qe.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:Rn},e.logger);return new Ye(e,t,r)}}function Rn(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 It={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 At(s){return{blobDownloadPath:K.join(s,"download"),downloadBlobToURLPath:K.join(s,"downloadToURL")}}const es={...It,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function ts(s){return{...At(s),frontendDownloadPath:K.join(s,"frontend")}}function En(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var bt={exports:{}};const kn="2.0.0",rs=256,On=Number.MAX_SAFE_INTEGER||9007199254740991,$n=16,Tn=rs-6,Fn=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Qe={MAX_LENGTH:rs,MAX_SAFE_COMPONENT_LENGTH:$n,MAX_SAFE_BUILD_LENGTH:Tn,MAX_SAFE_INTEGER:On,RELEASE_TYPES:Fn,SEMVER_SPEC_VERSION:kn,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const In=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var Ze=In;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=Qe,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=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 H=h(A),T=u++;n(R,T,A),l[R]=T,c[T]=A,i[T]=new RegExp(A,x?"g":void 0),a[T]=new RegExp(H,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*$")})(bt,bt.exports);var Te=bt.exports;const An=Object.freeze({loose:!0}),Ln=Object.freeze({}),Dn=s=>s?typeof s!="object"?An:s:Ln;var Lt=Dn;const nr=/^[0-9]+$/,ss=(s,e)=>{const t=nr.test(s),r=nr.test(e);return t&&r&&(s=+s,e=+e),s===e?0:t&&!r?-1:r&&!t?1:s<e?-1:1},Nn=(s,e)=>ss(e,s);var os={compareIdentifiers:ss,rcompareIdentifiers:Nn};const je=Ze,{MAX_LENGTH:ir,MAX_SAFE_INTEGER:xe}=Qe,{safeRe:ar,t:cr}=Te,Bn=Lt,{compareIdentifiers:ge}=os;let jn=class oe{constructor(e,t){if(t=Bn(t),e instanceof oe){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>ir)throw new TypeError(`version is longer than ${ir} characters`);je("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?ar[cr.LOOSE]:ar[cr.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>xe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>xe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>xe||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<xe)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(je("SemVer.compare",this.version,this.options,e),!(e instanceof oe)){if(typeof e=="string"&&e===this.version)return 0;e=new oe(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof oe||(e=new oe(e,this.options)),ge(this.major,e.major)||ge(this.minor,e.minor)||ge(this.patch,e.patch)}comparePre(e){if(e instanceof oe||(e=new oe(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(je("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 oe||(e=new oe(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(je("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 q=jn;const lr=q,xn=(s,e,t=!1)=>{if(s instanceof lr)return s;try{return new lr(s,e)}catch(r){if(!t)return null;throw r}};var ye=xn;const Vn=ye,Un=(s,e)=>{const t=Vn(s,e);return t?t.version:null};var Jn=Un;const Gn=ye,Mn=(s,e)=>{const t=Gn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var _n=Mn;const ur=q,Kn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new ur(s instanceof ur?s.version:s,t).inc(e,r,o).version}catch{return null}};var qn=Kn;const dr=ye,Hn=(s,e)=>{const t=dr(s,null,!0),r=dr(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 Wn=Hn;const zn=q,Xn=(s,e)=>new zn(s,e).major;var Yn=Xn;const Qn=q,Zn=(s,e)=>new Qn(s,e).minor;var ei=Zn;const ti=q,ri=(s,e)=>new ti(s,e).patch;var si=ri;const oi=ye,ni=(s,e)=>{const t=oi(s,e);return t&&t.prerelease.length?t.prerelease:null};var ii=ni;const pr=q,ai=(s,e,t)=>new pr(s,t).compare(new pr(e,t));var re=ai;const ci=re,li=(s,e,t)=>ci(e,s,t);var ui=li;const di=re,pi=(s,e)=>di(s,e,!0);var hi=pi;const hr=q,fi=(s,e,t)=>{const r=new hr(s,t),o=new hr(e,t);return r.compare(o)||r.compareBuild(o)};var Dt=fi;const gi=Dt,mi=(s,e)=>s.sort((t,r)=>gi(t,r,e));var vi=mi;const yi=Dt,Si=(s,e)=>s.sort((t,r)=>yi(r,t,e));var bi=Si;const wi=re,Pi=(s,e,t)=>wi(s,e,t)>0;var et=Pi;const Ci=re,Ri=(s,e,t)=>Ci(s,e,t)<0;var Nt=Ri;const Ei=re,ki=(s,e,t)=>Ei(s,e,t)===0;var ns=ki;const Oi=re,$i=(s,e,t)=>Oi(s,e,t)!==0;var is=$i;const Ti=re,Fi=(s,e,t)=>Ti(s,e,t)>=0;var Bt=Fi;const Ii=re,Ai=(s,e,t)=>Ii(s,e,t)<=0;var jt=Ai;const Li=ns,Di=is,Ni=et,Bi=Bt,ji=Nt,xi=jt,Vi=(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 Li(s,t,r);case"!=":return Di(s,t,r);case">":return Ni(s,t,r);case">=":return Bi(s,t,r);case"<":return ji(s,t,r);case"<=":return xi(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var as=Vi;const Ui=q,Ji=ye,{safeRe:Ve,t:Ue}=Te,Gi=(s,e)=>{if(s instanceof Ui)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?Ve[Ue.COERCEFULL]:Ve[Ue.COERCE]);else{const c=e.includePrerelease?Ve[Ue.COERCERTLFULL]:Ve[Ue.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 Ji(`${r}.${o}.${n}${i}${a}`,e)};var Mi=Gi;class _i{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 Ki=_i,at,fr;function se(){if(fr)return at;fr=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?c[l.HYPHENRANGELOOSE]:c[l.HYPHENRANGE];p=p.replace(C,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 F=p.split(" ").map(I=>H(I,this.options)).join(" ").split(/\s+/).map(I=>J(I,this.options));b&&(F=F.filter(I=>(i("loose invalid filter",I,this.options),!!I.match(c[l.COMPARATORLOOSE])))),i("range list",F);const E=new Map,L=F.map(I=>new n(I,this.options));for(const I of L){if(R(I))return[I];E.set(I.value,I)}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 a(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}}at=e;const t=Ki,r=new t,o=Lt,n=tt(),i=Ze,a=q,{safeRe:c,t:l,comparatorTrimReplace:u,tildeTrimReplace:d,caretTrimReplace:f}=Te,{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:g}=Qe,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},H=(y,p)=>(i("comp",y,p),y=D(y,p),i("caret",y),y=le(y,p),i("tildes",y),y=ue(y,p),i("xrange",y),y=M(y,p),i("stars",y),y),T=y=>!y||y.toLowerCase()==="x"||y==="*",le=(y,p)=>y.trim().split(/\s+/).map(S=>pe(S,p)).join(" "),pe=(y,p)=>{const S=p.loose?c[l.TILDELOOSE]:c[l.TILDE];return y.replace(S,(v,P,b,C,F)=>{i("tilde",y,v,P,b,C,F);let E;return T(P)?E="":T(b)?E=`>=${P}.0.0 <${+P+1}.0.0-0`:T(C)?E=`>=${P}.${b}.0 <${P}.${+b+1}.0-0`:F?(i("replaceTilde pr",F),E=`>=${P}.${b}.${C}-${F} <${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?c[l.CARETLOOSE]:c[l.CARET],v=p.includePrerelease?"-0":"";return y.replace(S,(P,b,C,F,E)=>{i("caret",y,P,b,C,F,E);let L;return T(b)?L="":T(C)?L=`>=${b}.0.0${v} <${+b+1}.0.0-0`:T(F)?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}.${F}-${E} <${b}.${C}.${+F+1}-0`:L=`>=${b}.${C}.${F}-${E} <${b}.${+C+1}.0-0`:L=`>=${b}.${C}.${F}-${E} <${+b+1}.0.0-0`):(i("no pr"),b==="0"?C==="0"?L=`>=${b}.${C}.${F}${v} <${b}.${C}.${+F+1}-0`:L=`>=${b}.${C}.${F}${v} <${b}.${+C+1}.0-0`:L=`>=${b}.${C}.${F} <${+b+1}.0.0-0`),i("caret return",L),L})},ue=(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,P,b,C,F,E)=>{i("xRange",y,v,P,b,C,F,E);const L=T(b),V=L||T(C),I=V||T(F),fe=I;return P==="="&&fe&&(P=""),E=p.includePrerelease?"-0":"",L?P===">"||P==="<"?v="<0.0.0-0":v="*":P&&fe?(V&&(C=0),F=0,P===">"?(P=">=",V?(b=+b+1,C=0,F=0):(C=+C+1,F=0)):P==="<="&&(P="<",V?b=+b+1:C=+C+1),P==="<"&&(E="-0"),v=`${P+b}.${C}.${F}${E}`):V?v=`>=${b}.0.0${E} <${+b+1}.0.0-0`:I&&(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(c[l.STAR],"")),J=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(c[p.includePrerelease?l.GTE0PRE:l.GTE0],"")),Y=y=>(p,S,v,P,b,C,F,E,L,V,I,fe)=>(T(v)?S="":T(P)?S=`>=${v}.0.0${y?"-0":""}`:T(b)?S=`>=${v}.${P}.0${y?"-0":""}`:C?S=`>=${S}`:S=`>=${S}${y?"-0":""}`,T(L)?E="":T(V)?E=`<${+L+1}.0.0-0`:T(I)?E=`<${L}.${+V+1}.0-0`:fe?E=`<=${L}.${V}.${I}-${fe}`:y?E=`<${L}.${V}.${+I+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 at}var ct,gr;function tt(){if(gr)return ct;gr=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(">")))}}ct=e;const t=Lt,{safeRe:r,t:o}=Te,n=as,i=Ze,a=q,c=se();return ct}const qi=se(),Hi=(s,e,t)=>{try{e=new qi(e,t)}catch{return!1}return e.test(s)};var rt=Hi;const Wi=se(),zi=(s,e)=>new Wi(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var Xi=zi;const Yi=q,Qi=se(),Zi=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Qi(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new Yi(r,t))}),r};var ea=Zi;const ta=q,ra=se(),sa=(s,e,t)=>{let r=null,o=null,n=null;try{n=new ra(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new ta(r,t))}),r};var oa=sa;const lt=q,na=se(),mr=et,ia=(s,e)=>{s=new na(s,e);let t=new lt("0.0.0");if(s.test(t)||(t=new lt("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 lt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!n||mr(a,n))&&(n=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||mr(t,n))&&(t=n)}return t&&s.test(t)?t:null};var aa=ia;const ca=se(),la=(s,e)=>{try{return new ca(s,e).range||"*"}catch{return null}};var ua=la;const da=q,cs=tt(),{ANY:pa}=cs,ha=se(),fa=rt,vr=et,yr=Nt,ga=jt,ma=Bt,va=(s,e,t,r)=>{s=new da(s,r),e=new ha(e,r);let o,n,i,a,c;switch(t){case">":o=vr,n=ga,i=yr,a=">",c=">=";break;case"<":o=yr,n=ma,i=vr,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fa(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===pa&&(h=new cs(">=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 xt=va;const ya=xt,Sa=(s,e,t)=>ya(s,e,">",t);var ba=Sa;const wa=xt,Pa=(s,e,t)=>wa(s,e,"<",t);var Ca=Pa;const Sr=se(),Ra=(s,e,t)=>(s=new Sr(s,t),e=new Sr(e,t),s.intersects(e,t));var Ea=Ra;const ka=rt,Oa=re;var $a=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((u,d)=>Oa(u,d,t));for(const u of i)ka(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 br=se(),Vt=tt(),{ANY:ut}=Vt,Se=rt,Ut=re,Ta=(s,e,t={})=>{if(s===e)return!0;s=new br(s,t),e=new br(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=Ia(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},Fa=[new Vt(">=0.0.0-0")],wr=[new Vt(">=0.0.0")],Ia=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===ut){if(e.length===1&&e[0].semver===ut)return!0;t.includePrerelease?s=Fa:s=wr}if(e.length===1&&e[0].semver===ut){if(t.includePrerelease)return!0;e=wr}const r=new Set;let o,n;for(const h of s)h.operator===">"||h.operator===">="?o=Pr(o,h,t):h.operator==="<"||h.operator==="<="?n=Cr(n,h,t):r.add(h.semver);if(r.size>1)return null;let i;if(o&&n){if(i=Ut(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=Pr(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=Cr(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)},Pr=(s,e,t)=>{if(!s)return e;const r=Ut(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},Cr=(s,e,t)=>{if(!s)return e;const r=Ut(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var Aa=Ta;const dt=Te,Rr=Qe,La=q,Er=os,Da=ye,Na=Jn,Ba=_n,ja=qn,xa=Wn,Va=Yn,Ua=ei,Ja=si,Ga=ii,Ma=re,_a=ui,Ka=hi,qa=Dt,Ha=vi,Wa=bi,za=et,Xa=Nt,Ya=ns,Qa=is,Za=Bt,ec=jt,tc=as,rc=Mi,sc=tt(),oc=se(),nc=rt,ic=Xi,ac=ea,cc=oa,lc=aa,uc=ua,dc=xt,pc=ba,hc=Ca,fc=Ea,gc=$a,mc=Aa;var vc={parse:Da,valid:Na,clean:Ba,inc:ja,diff:xa,major:Va,minor:Ua,patch:Ja,prerelease:Ga,compare:Ma,rcompare:_a,compareLoose:Ka,compareBuild:qa,sort:Ha,rsort:Wa,gt:za,lt:Xa,eq:Ya,neq:Qa,gte:Za,lte:ec,cmp:tc,coerce:rc,Comparator:sc,Range:oc,satisfies:nc,toComparators:ic,maxSatisfying:ac,minSatisfying:cc,minVersion:lc,validRange:uc,outside:dc,gtr:pc,ltr:hc,intersects:fc,simplifyRange:gc,subset:mc,SemVer:La,re:dt.re,src:dt.src,tokens:dt.t,SEMVER_SPEC_VERSION:Rr.SEMVER_SPEC_VERSION,RELEASE_TYPES:Rr.RELEASE_TYPES,compareIdentifiers:Er.compareIdentifiers,rcompareIdentifiers:Er.rcompareIdentifiers};const yc=En(vc),Sc={minDelay:1500},bc="__no_updates__";class wc extends j.PollComputablePool{constructor(t,r,o={}){super({...o,...Sc},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_${te(t)}`;default:return bc}}async readValue(t){var r,o;try{const n=t.currentSpec;switch(n.type){case"dev-v1":try{const i=await Rt(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 He(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(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(a!==void 0&&yc.lte(f,a))return{suggestions:h};const g={...n,id:{...n.id,version:f}};return(async()=>{try{await c.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 te(t)===te(r)}}class kr{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 ne(){return be||(be={logPFrameRequests:process.env.MI_LOG_PFRAMES!==void 0,usePFrameRs:process.env.MI_USE_PFRAMES_RS!==void 0},process.env.MI_LOG_TREE_STAT&&(be.logTreeStats=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request"),be)}function Ee(s){return String(s.id)}const Pc=["Int","Long","Float","Double","String","Bytes"];function pt(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 Cc{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;const n=(l,u)=>{switch(l){default:case"info":return this.logger.info(u);case"warn":return this.logger.warn(u);case"error":return this.logger.error(u)}};for(const l of o)for(const u of wo(l.data))this.blobIdToResource.set(Ee(u),u);const i=[...new Map(o.map(l=>({...l,data:Po(l.data,Ee)})).map(l=>[te(l),l])).values()],a=()=>{try{if(ne().usePFrameRs){const l=new ys.PFrame(ne().logPFrameRequests?n:void 0);for(const u of i)l.addColumnSpec(u.id,u.spec);return l}else{const l=ne().logPFrameRequests?new Ae.PFrame(n):new Ae.PFrame;for(const u of i)try{l.addColumnSpec(u.id,u.spec)}catch(d){throw new Error(`Adding column ${u.id} to PFrame failed: ${d}; Spec: ${JSON.stringify(u.spec)}.`)}return l}}catch(l){throw new Error(`Spec PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${l}`)}},c=()=>{try{const l=ne().logPFrameRequests?new Ae.PFrame(n):new Ae.PFrame;l.setDataSource(this);for(const u of i)try{l.addColumnSpec(u.id,u.spec),l.setColumnData(u.id,u.data)}catch(d){throw new Error(`Adding column ${u.id} to PFrame failed: ${d}; Spec: ${JSON.stringify(u.spec)}, DataInfo: ${JSON.stringify(u.data)}.`)}return l}catch(l){throw new Error(`Data PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${l}`)}};this.specPFrame=a(),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 Rc{constructor(e,t){w(this,"pFrames");w(this,"pTables");w(this,"blobContentCache");w(this,"concurrencyLimiter");this.blobDriver=e,this.logger=t;const r=new Ss.LRUCache({maxSize:1e9,fetchMethod:async n=>await Fr.readFile(n),sizeCalculation:n=>n.length}),o=new k.ConcurrencyLimitingExecutor(1);this.blobContentCache=r,this.concurrencyLimiter=o,this.pFrames=new class extends kr{constructor(n,i){super(),this.blobDriver=n,this.logger=i}createNewResource(n){return ne().logPFrameRequests&&t.info(`PFrame creation (pFrameHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,we)}`),new Cc(this.blobDriver,this.logger,r,n)}calculateParamsKey(n){return kc(n)}}(this.blobDriver,this.logger),this.pTables=new class extends kr{constructor(n){super(),this.pFrames=n}async createNewResource(n){const i=n.pFrameHandle,a=await o.run(async()=>{var l=[];try{ne().logPFrameRequests&&t.info(`PTable creation (pTableHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,we)}`);const c=Fe(l,this.pFrames.getByKey(i).disposableDataPFrame);return await c.dataPFrame.createTable({src:ke(n.def.src),filters:pt(n.def.filters)})}catch(u){var d=u,f=!0}finally{Ie(l,d,f)}});return n.def.sorting.length!==0?a.sort(n.def.sorting):a}calculateParamsKey(n){return Ec(n)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>Pc.find(i=>i===n.spec.valueType)).map(n=>B.mapPObjectData(n,i=>qe.isPlTreeNodeAccessor(i)?$o(i):To(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 ne().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:[...new Map(t.compatibleWith.map(n=>[te(n),n])).values()],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(a=>a.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 a=[];try{ne().logPFrameRequests&&this.logger.info(`Call calculateTableData, handle = ${e}, request = ${JSON.stringify(t,we)}`);const i=Fe(a,this.pFrames.getByKey(e).disposableDataPFrame);return await i.dataPFrame.createTable({src:ke(t.src),filters:pt(t.filters)})}catch(c){var l=c,u=!0}finally{Ie(a,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,a)=>({spec:i,data:n[a]}))}async getUniqueValues(e,t){return await this.concurrencyLimiter.run(async()=>{var o=[];try{ne().logPFrameRequests&&this.logger.info(`Call getUniqueValues, handle = ${e}, request = ${JSON.stringify(t,we)}`);const r=Fe(o,this.pFrames.getByKey(e).disposableDataPFrame);return await r.dataPFrame.getUniqueValues({...t,filters:pt(t.filters)})}catch(n){var i=n,a=!0}finally{Ie(o,i,a)}})}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 ke(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=>ke(e))};case"outer":return{type:"outer",primary:ke(s.primary),secondary:s.secondary.map(e=>ke(e))};default:k.assertNever(s)}}function Ec(s){const e=ae.createHash("sha256");return e.update(te(s)),e.digest().toString("hex")}function kc(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:Ee(c)}))};break;case"BinaryPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:[Ee(c.index),Ee(c.values)]}))};break;default:throw Error(`unsupported resource type: ${JSON.stringify(i)}`)}return n.payload.sort((a,c)=>a.key.localeCompare(c.key)),n}));e.sort((r,o)=>r.id.localeCompare(o.id));const t=ae.createHash("sha256");return t.update(te(e)),t.digest().toString("hex")}async function ls(s,e,t){const r={...It,...At(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),R=new Rc(l,r.logger);return{blobDriver:l,blobToURLDriver:u,logDriver:h,lsDriver:g,signer:o,uploadDriver:d,pFrameDriver:R}}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=ae.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await bo(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 Ye.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={...es,...ts(t),...r};o.defaultTreeOptions.logStat=ne().logTreeStats;const n=await e.withWriteTx("MLInitialization",async R=>{const A=m.field(R.clientRoot,_s);R.createField(A,"Dynamic");const x=await R.getField(A);if(m.isNullResourceId(x.value)){const H=R.createEphemeral(Nr);return R.lock(H),R.setField(A,H),await R.commit(),await H.globalId}else return x.value}),i=o.logger,a=await ls(e,t,o),c=new ce.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),l=new Ar(c),u=new ho(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 wc(l,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await Ge.getQuickJS()},h=new j.WatchableValue([]),g=await qs(e,n,h,f);return new Jt(f,a,a.signer,n,h,g.tree,l,g.computable)}}const Oc=["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 $c(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=[];Oc.forEach(c=>{bs.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 me(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 me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,a)),o.blockGARegistryOverviewChecks=await me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,a)),o.blockRegistryUiChecks=await me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockUiPath,t.blockRegistryUrl),t,a)),o.blockGARegistryUiChecks=await me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockUiPath,t.blockGARegistryUrl),t,a)),o.autoUpdateCdnChecks=await me(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await Pe(t.autoUpdateCdnUrl,t,a)),Tc(o,s,t,r)}async function me(s,e,t){const r=wt(),o=[];for(;Or(r)<s;){const n=wt();let i;try{i={ok:!0,value:await t()}}catch(l){i={ok:!1,error:l}}const a=Or(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await Tr.setTimeout(c)}return o}async function Pe(s,e,t){const{body:r,statusCode:o}=await ce.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function Tc(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 ds=Object.defineProperty;var Gt=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Mt=s=>{throw TypeError(s)};var ps=(s,e,t)=>e in s?ds(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var w=(s,e,t)=>ps(s,typeof e!="symbol"?e+"":e,t);var Fe=(s,e,t)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&Mt("Object expected");var r;t&&(r=e[Gt("asyncDispose")]),r===void 0&&(r=e[Gt("dispose")]),typeof r!="function"&&Mt("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,a,c,l){return l=Error(c),l.name="SuppressedError",l.error=i,l.suppressed=a,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 a=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(a).then(n,c=>(o(c),n()))}catch(c){o(c)}if(t)throw e};return n()};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const B=require("@platforma-sdk/model"),U=require("@milaboratories/pl-model-middle-layer"),_t=require("@milaboratories/pl-deployments"),ce=require("undici"),_=require("@platforma-sdk/block-tools"),Z=require("node:fs"),K=require("node:path"),hs=require("yaml"),k=require("@milaboratories/ts-helpers"),fs=require("node:fs/promises"),gs=require("@milaboratories/resolve-helper"),m=require("@milaboratories/pl-client"),qe=require("@milaboratories/pl-tree"),j=require("@milaboratories/computable"),ae=require("node:crypto"),N=require("@milaboratories/pl-model-backend"),$r=require("denque"),ms=require("@platforma-sdk/workflow-tengo"),re=require("canonicalize"),vs=require("node:assert"),Ge=require("quickjs-emscripten"),Tr=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),Ae=require("@milaboratories/pframes-node"),ys=require("@milaboratories/pframes-rs-node"),Ss=require("lru-cache"),bs=require("node:diagnostics_channel");function ws(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 Fr=ws(fs);async function Kt(s){try{return await Fr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const Ps=[_.RegistryV1.PlPackageYamlConfigFile],Cs=[_.RegistryV1.PlPackageJsonConfigFile],Pt=["backend","dist","tengo","tpl","main.plj.gz"],Ct=["config","dist","config.json"],Ir=["frontend","dist"],qt="block-model/dist/config.json",Rs="block-ui/package.json",Es=[Pt,Ct,Ps,Cs,Ir];async function ks(s){return await Kt(K.join(s,...Ct))!==void 0||await Kt(K.join(s,...Pt))!==void 0}function ot(s,e){const t=gs.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Ht(s,e){if(K.isAbsolute(s)||(s=K.resolve(s)),await ks(s))return{workflow:K.join(s,...Pt),config:K.join(s,...Ct),ui:K.join(s,...Ir)};{const t=ot(s,qt),r=ot(s,qt),o=ot(s,Rs);return{workflow:t,config:r,ui:K.resolve(o,"..","dist")}}}async function Os(s){try{return await Z.promises.readFile(s,"utf8")}catch(e){if(e.code==="ENOENT")return;throw e}}async function $s(s){try{return await Z.promises.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}async function Rt(s){let e=0n;for(const t of Es){const r=K.join(s,...t),o=await $s(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function He(s){const e=await Z.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await Z.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class Ts{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 ce.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 Z.promises.readdir(r.path,{withFileTypes:!0})){if(!a.isDirectory())continue;const c=K.join(r.path,a.name),l=await Os(K.join(c,_.RegistryV1.PlPackageYamlConfigFile));if(l!==void 0){const u=_.RegistryV1.PlPackageConfigData.parse(hs.parse(l)),d=await Rt(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 He(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 Ar{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 Fs={type:"remote-v2",url:"https://blocks.pl-open.science/"},Is={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},As={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},Ls={groups:[{id:"default",label:"Default",blocks:[]}]},Ds={stagingRefreshTimestamp:0,blocksInLimbo:[]},Ns={label:"New Project"},Bs={name:"UserProject",version:"2"},Lr="SchemaVersion",Dr="1",Et="ProjectCreated",Oe="ProjectLastModified",$e="ProjectMeta",de="ProjectStructure",Me="BlockRenderingState",js="BlockFrontendState/",xs=/^BlockFrontendState\/(?<blockid>.*)$/;function ht(s){return`${js}${s}`}const Vs="BlockArgsAuthor/";function ft(s){return`${Vs}${s}`}const gt="ProjectStructureAuthor";function Us(s){const e=s.match(xs);if(e!==null)return e.groups.blockid}const Js="__serviceTemplate_";function mt(s){return`${Js}${s}`}function G(s,e){return`${s}-${e}`}const Gs=/^(?<blockId>.*)-(?<fieldName>blockPack|blockSettings|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function Ms(s){const e=s.match(Gs);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const _s="projects",Nr={name:"Projects",version:"1"},Ks=s=>m.resourceTypesEqual(s.type,Nr)?s.fields:[];async function qs(s,e,t,r){const o=await qe.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Ks},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($e)),h=k.notEmpty(d.getKeyValueAsJson(Et)),g=k.notEmpty(d.getKeyValueAsJson(Oe));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 Hs={name:"EphRenderTemplate",version:"1"},Ws={name:"RenderTemplate",version:"1"};function kt(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(Hs):s.createStruct(Ws),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 zs={name:"BContextEnd",version:"1"},Xs={name:"BContext",version:"1"},Ys="id",Qs="parent/",Zs=["context","result"];function Wt(s,e,t){return kt(s,e,!0,t,Zs)}function eo(s){const e=s.createEphemeral(zs);return s.lock(e),e}function to(s,e){if(e.length===0)return eo(s);if(e.length===1)return e[0];const t=s.createEphemeral(Xs);s.createField(m.field(t,Ys),"Input",m.Pl.createPlString(s,ae.randomUUID()));for(let r=0;r<e.length;r++)s.createField(m.field(t,`${Qs}${r}`),"Input",e[r]);return s.lock(t),t}function ro(s,e){const t=N.parseTemplate(e.content),r=t.type;switch(r){case"pl.tengo-template.v2":return oo(s,t);default:k.assertNever(r)}}const zt={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))}},Le={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}},so={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)))}},Br={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),zt.hash(o,e);for(const[r,o]of t(Object.entries(s.software??{})))e.update("soft:"+r),Le.hash(o,e);for(const[r,o]of t(Object.entries(s.assets??{})))e.update("asset:"+r),Le.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,a]of Object.entries(s.libs??{})){const c=N.PlTemplateV1.libField(r,i);e.createField(c,"Input"),e.setField(c,t(a,zt))}for(const[i,a]of Object.entries(s.software??{})){const c=N.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(s.assets??{})){const c=N.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(s.templates??{})){const c=N.PlTemplateV1.tplField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Br))}if(e.lock(r),!s.hashOverride)return r;const o=t(s,so),n=N.PlTemplateOverrideV1.tplField(o);return e.createField(n,"Service"),e.setField(n,r),e.lock(r),o}};function oo(s,e){const t=new Map,r=(o,n)=>{const i=ae.createHash("sha256");n.hash(o,i);const a=i.digest("hex");if(!t.has(a)){const c=n.render(o,s,r);t.set(a,c)}return t.get(a)};return r(e,Br)}const jr={name:"TengoTemplateGet",version:"1"},xr="registry",Vr="templateURI",Ur="template",no={name:"TengoTemplatePack",version:"1"},io={name:"TengoTemplatePackConvert",version:"1"},ao="templatePack",co="template";async function Jr(s){switch(s.type){case"from-file":return{type:"explicit",content:await Z.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return k.assertNever(s)}}function lo(s,e){const t=s.createStruct(jr),r=m.field(t,xr),o=m.field(t,Vr),n=m.field(t,Ur);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 We(s,e){switch(e.type){case"from-registry":return lo(s,e);case"explicit":return ro(s,e);default:return k.assertNever(e)}}const Ot={name:"Frontend/FromUrl",version:"1"},$t={name:"Frontend/FromFolder",version:"1"};function uo(s,e){switch(e.type){case"url":return s.createValue(Ot,JSON.stringify({url:e.url}));case"local":return s.createValue($t,JSON.stringify({path:e.path,signature:e.signature}));default:return k.assertNever(e)}}const po={name:"BlockPackCustom",version:"1"},Gr="template",Mr="frontend";function Xt(s){return s.endsWith("/")?s:`${s}/`}class ho{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 Ht(e.folder),r=await Z.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await _.loadPackDescription(e.folder),r=await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=this.http!==void 0?{dispatcher:this.http}:{},r=`${Xt(e.registryUrl)}${_.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`;return await(await ce.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 ce.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 Ht(e.folder),r=await Z.promises.readFile(t.workflow),o=JSON.parse(await Z.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:r},config:o,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:e}}case"dev-v2":{const t=await _.loadPackDescription(e.folder),r=JSON.parse(await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Z.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await He(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=`${Xt(e.registryUrl)}${_.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,o=`${r}/template.plj.gz`,n=await ce.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 ce.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 ce.request(o.model.url,t)).body.json(),i=async()=>await(await ce.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 fo(s,e){const t={config:e.config,source:e.source},r=s.createStruct(po,JSON.stringify(t));return s.createField(m.field(r,Gr),"Input",We(s,e.template)),s.createField(m.field(r,Mr),"Input",uo(s,e.frontend)),s.lock(r),r}function Yt(s,e){switch(e.type){case"explicit":return fo(s,e);default:return k.assertNever(e.type)}}function De(s,e){return{__isRef:!0,blockId:s,name:e}}function go(s){return typeof s=="object"&&s!==null&&s.__isRef===!0&&"blockId"in s&&"name"in s}function vt(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(go(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)vt(s,o,t);else for(const[,o]of Object.entries(e))vt(s,o,t);return;default:k.assertNever(r)}}function mo(s,e){const t={upstreams:new Set,missingReferences:!1};return vt(t,s,e),t}function ie(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class _r{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 yt(s){const e=new Map;let t;for(const{id:r}of ie(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 _r(e)}function Je(s,e){const t=new Map,r=new Set;for(const{id:o}of ie(s)){const n=e(o);if(n===void 0)continue;const i=mo(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 _r(t)}function vo(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function St(s,e){if(s.size>e.size)return St(e,s);for(const t of s)if(e.has(t))return!0;return!1}function Qt(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):(!vo(n.upstream,i.upstream)||St(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?St(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let nt;async function Kr(){if(nt===void 0){const s=await Jr(ms.Templates["pframes.export-pframe"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=ae.createHash("sha256").update(s.content).digest("hex");nt={spec:s,hash:e}}return nt}function yo(s,e,t){return kt(s,e,!0,{pf:t},["result"]).result}function it(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 Zt{constructor(e,t){w(this,"currentInputsC",it(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));w(this,"actualProductionInputsC",it(()=>{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",it(()=>{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),Gr,"Input")}}const So=s=>{throw new Error(`No new block info for ${s}`)};class _e{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=yt(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 ie(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 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))}),to(this.tx,r)}exportCtx(e){return yo(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=Wt(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=Wt(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=So){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=yt(e),i=Je(e,l=>{var u;return(u=this.blockInfos.get(l))==null?void 0:u.actualProductionInputs}),a=Qt(r,n),c=Qt(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 Zt(l,{});this.blockInfos.set(l,u);const d=t(l),f=Yt(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,Yt(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 ie(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 $r(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,ft(t)):this.tx.setKValue(this.rid,ft(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,gt):this.tx.setKValue(this.rid,gt,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,Oe,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,de,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Me,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,$e,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,ht(e)):this.tx.setKValue(this.rid,ht(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,Lr),i=e.getKValueJson(t,Oe),a=e.getKValueJson(t,$e),c=e.getKValueJson(t,de),l=e.getKValueJson(t,Me),u=e.listKeyValuesString(t),[d,f,h,g,R,{stagingRefreshTimestamp:A,blocksInLimbo:x},H]=await Promise.all([o,n,i,a,c,l,u]);if(f!==Dr)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${f}`);const T=new Map;for(const p of d.fields){const S=Ms(p.name);if(S===void 0)continue;let v=T.get(S.blockId);v===void 0&&(v={id:S.blockId,fields:{}},T.set(S.blockId,v)),v.fields[S.fieldName]=m.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const le=await Kr(),pe=mt(le.hash),D=d.fields.find(p=>p.name===pe);let X;D!==void 0?X=m.ensureResourceIdNotNull(D.value):(X=m.Pl.wrapInHolder(e,We(e,le.spec)),e.createField(m.field(t,mt(le.hash)),"Dynamic",X));const ue={stagingRefreshTimestamp:A},W=new Set(x),M=new Map;for(const p of H){const S=Us(p.key);S!==void 0&&M.set(S,p.value)}const J=[];T.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;T.forEach(({id:p,fields:S})=>Y.set(p,new Zt(p,S)));const he=new Set;for(const p of ie(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 _e(t,e,r,f,h,g,R,ue,W,Y,M,X);return y.fixProblemsAndMigrate(),y}}async function bo(s,e=Ns){const t=s.createEphemeral(Bs);s.lock(t);const r=String(Date.now());s.setKValue(t,Lr,JSON.stringify(Dr)),s.setKValue(t,Et,r),s.setKValue(t,Oe,r),s.setKValue(t,$e,JSON.stringify(e)),s.setKValue(t,de,JSON.stringify(Ls)),s.setKValue(t,Me,JSON.stringify(Ds));const o=await Kr();return s.createField(m.field(t,mt(o.hash)),"Dynamic",m.Pl.wrapInHolder(s,We(s,o.spec))),t}async function Ne(s,e,t){return te(s,e,void 0,t)}async function te(s,e,t,r){if(s instanceof m.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await _e.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await _e.load(s,e,t),n=await r(o);return o.save(),n}}function*wo(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 er(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function Po(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:er(s.parts,e)};case"BinaryPartitioned":return{...s,parts:er(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:k.assertNever(s)}}const Co=m.resourceType("PColumnData/JsonPartitioned","1"),Ro=m.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),Eo=m.resourceType("PColumnData/BinaryPartitioned","1"),ko=m.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Oo=m.resourceType("PColumnData/Json","1");function $o(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,Oo)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(m.resourceTypesEqual(s.resourceType,Co)){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,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 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,Eo)){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,ko)){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 To(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 Fo(s,e){const t=ae.createHash("sha256");return t.update(re(s)),t.update(String(m.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function tr(s,e){return re({__isRef:!0,blockId:s,name:e})}function Io(s,e){return re({resolvePath:s,name:e})}function qr(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 Ao(s,e=!0,t="",r){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const o=qr(s,e,!1,t);vs(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 qe.PlError(c.error);n[i]={id:r.length===0?Fo(a.spec,c.value):Io(r,i),spec:a.spec,data:c.value}}return n}class Tt{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:tr(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:De(i,a),obj:{id:l.ok?tr(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:De(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:De(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:De(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(de)),a=yt(n).traverseIds("upstream",r),c=new Map;for(const l of ie(n)){if(!a.has(l.id))continue;const u=rr(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=rr(o.traverse({field:G(l.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:G(l.id,"stagingUiCtx")}));c.set(l.id,{info:l,prod:u,staging:d})}return new Tt(e,c)}}function rr(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return qr(e.value,!1,!0)}function Ft(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(ht(e)),blockMeta:n=>{const i=n.accessor(s).node(),a=k.notEmpty(i.getKeyValueAsJson(de)),c=new Map;for(const l of ie(a))c.set(l.id,l);return c}}}function Hr(s,e){return{...Ft(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=>Tt.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"GetProgressLogWithInfo":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 Lo(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 Do(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function No(s){for(const e of z(s))if(Do(e))return!0;return!1}function ze(s){return{type:"ReturnResult",result:s}}function O(s){return()=>ze(s)}const Bo=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return O(e)},jo=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)},xo=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?O(void 0):({cCtx:r})=>{var o;return ze((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function Wr(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function Vo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):()=>({type:"ScheduleSubroutine",subroutine:zr(r.length),args:Wr(r,o=>$({...s,[e.itVar]:o},e.mapping))})}}function zr(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return O(t)}}function Uo(s,e){return t=>{const r=t.source;if(r===void 0)return O(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=$(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Jo,args:o})}}const Jo=s=>O(s),Go=s=>{const e=s.arg;return O(e===void 0?void 0:e.length===0)},Mo=s=>{const e=s.operand;return O(e===void 0?void 0:!e)},_o=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e&&t)},Ko=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e||t)},qo=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t})=>{var r;return ze((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},Ho=s=>{const e=s.source,t=s.field;return O(e===void 0||t===void 0?void 0:e[t])};function Wo(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]=$(l,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:zo,args:i}}}}const zo=s=>O(s),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!==void 0)return await t.blobDriver.getContent(r.handle)}})})},Yo=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()})}}},Qo=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())}})})},Zo=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},en=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},tn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.blobToURLDriver.extractArchiveAndGetURL(t,s)})},rn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},sn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},on=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},nn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLogWithInfo(t,s)})},an=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function $(s,e){switch(e.type){case"GetFromCtx":const t=s[e.variable];return typeof t=="function"?r=>ze(t(r.cCtx)):O(t);case"Isolate":return({drivers:r})=>({type:"ScheduleComputable",computable:Qr(r,s,e.cfg)});case"Immediate":return O(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:Ho,args:{source:$(s,e.source),field:$(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:Vo(s,e),args:{source:$(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Uo(s,e),args:{source:$(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:Bo,args:Lo(e.template,r=>$(s,r))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:zr(e.template.length),args:Wr(e.template,r=>$(s,r))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:jo,args:{source:$(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Go,args:{arg:$(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Mo,args:{operand:$(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:_o,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:Ko,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Wo(s,e),args:{source:$(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:xo,args:{source:$(s,e.source),field:$(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:qo,args:{source:$(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Xo,args:{source:$(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:Yo,args:{source:$(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Qo,args:{source:$(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Zo,args:{source:$(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:en,args:{source:$(s,e.source)}});case"ExtractArchiveAndGetURL":return()=>({type:"ScheduleSubroutine",subroutine:tn(e.format),args:{source:$(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:rn,args:{source:$(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:sn(e.lines),args:{source:$(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:on(e.patternToSearch),args:{source:$(s,e.source)}});case"GetProgressLogWithInfo":return()=>({type:"ScheduleSubroutine",subroutine:nn(e.patternToSearch),args:{source:$(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:an,args:{source:$(s,e.source)}});default:return k.assertNever(e)}}const cn=["$prod","$staging"];function ln(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 Xr=Symbol(),Yr="return",un={op:Xr,arg:Yr};function dn(s){return s.op==Xr&&s.arg==Yr}function pn(){return{pendingSubroutines:new Map}}function sr(s,e,t,r){const o=new $r(t),n=(a,c)=>{if(dn(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 hn(s,e,t,r={}){return Qr(s,ln(e),t,r)}function Qr(s,e,t,r={}){const o=`${e.blockId}#`+re({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>cn.indexOf(n)===-1)),cfg:t});return j.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=pn();return{ir:sr(i,a,[{destination:un,operation:$(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 a.pendingSubroutines)f.set(g,{...R,args:{...R.args}});const h={result:a.result,pendingSubroutines:f};if(sr(d,h,u,!1),!("result"in h))throw new Error("illegal cfg rendering stack state, no result");return h.result}}},{...r,key:o})}function fn(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function or(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class Ke{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 Ke.cleanErrorContext(t),t}}runCallback(e,...t){try{return Ge.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 Ke.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 or(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return or(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=Ao(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}_${ae.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))}getProgressLogWithInfo(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLogWithInfo",this.env.driverKit.logDriver.getProgressLogWithInfo(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=k.notEmpty(this.blockCtx.getResultsPool,"getResultsPool")(this.computableCtx)}return this._resultPool}calculateOptions(e){return this.resultPool.calculateOptions(e)}getDataFromResultPool(){const e=this.resultPool.getData();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj: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=ae.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(fn(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(){Ge.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("getProgressLogWithInfo",(a,c)=>this.exportSingleValue(this.getProgressLogWithInfo(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getLogHandle",a=>this.exportSingleValue(this.getLogHandle(this.vm.getString(a)),void 0)),i("getBlockLabel",a=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(a)),void 0)),i("getDataFromResultPool",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 Xe(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 Be=process.env.MI_LOG_OUTPUT_STATUS;function gn(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 Ge.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 Ke(c,u,e,s,a);d.evaluateBundle(r.content);const f=d.runCallback(t.handle);d.resetComputableCtx();let h=0;return Be&&Be!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:async(g,{unstableMarker:R,stable:A})=>{for(const[H,T]of Object.entries(g))d.runCallback(H,T);const x=d.importObjectUniversal(f);return h++,Be&&(Be!=="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 mn(s){return B.isConfigLambda(s)?s.isActive===!0:No(s)}function Re(s,e,t,r,o,n={}){if(B.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return gn(s,e,t,r,o,n)}else return hn(s.driverKit,e,t,n)}function vn(s,e,t){return j.Computable.make(r=>{var g,R,A,x,H,T,le,pe;const o=r.accessor(s).node(),n=k.notEmpty(o.getKeyValueAsJson(Et)),i=k.notEmpty(o.getKeyValueAsJson(Oe)),a=k.notEmpty(o.getKeyValueAsJson($e)),c=k.notEmpty(o.getKeyValueAsJson(de)),l=k.notEmpty(o.getKeyValueAsJson(Me)),u=new Map;for(const{id:D}of ie(c)){const X=o.traverse({field:G(D,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ue;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});ue={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())??((H=(x=M.value)==null?void 0:x.getError())==null?void 0:H.getDataAsString()),exportsError:((T=J.error)==null?void 0:T.getDataAsString())??((pe=(le=J.value)==null?void 0:le.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:ue})}const d=Je(c,D=>u.get(D).currentArguments),f=new Set(l.blocksInLimbo),h=[...ie(c)].map(({id:D,label:X,renderingMode:ue})=>{var b,C,F,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=Xe(o,D),{sections:he,title:y,inputsValid:p,sdkVersion:S}=Ce(Y,({bpId:V,cfg:I,info:fe})=>{const st=Ft(s,D);return{sections:Re(t,st,I.sections,I.code,V),title:Ce(I.title,us=>Re(t,st,us,I.code,V)),inputsValid:Re(t,st,I.inputsValid,I.code,V),sdkVersion:I.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:ue,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:(F=W.prod)==null?void 0:F.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:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(gt),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 yn(s,e){const t=s.node();if(m.resourceTypesEqual(t.resourceType,Ot)){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,$t)){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 Sn(s,e){if(s!==void 0)return j.Computable.make(t=>yn(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 bn(s,e,t){return j.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Xe(o,e),i=(a=o.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic"},{field:m.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Mr,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:Sn(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function Zr(s,e,t){if(t===void 0)return j.Computable.make(i=>Zr(s,e,i),{key:`inputs#${m.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=Ft(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(ft(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function wn(s,e,t){return j.Computable.make(r=>{const o=r.accessor(s).node(),n=Hr(s,e);return Ce(Xe(o,e),({cfg:i,bpId:a})=>{const c={};for(const[l,u]of Object.entries(i.outputs)){const d=Re(t,n,u,i.code,a);c[l]=j.Computable.wrapError(d)}return c})},{key:"outputs#"+m.resourceIdToString(s.rid)+"#"+e}).withStableType()}function Pn(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:a}of ie(o)){const c=Xe(r,i);if(c===void 0)continue;const l=Object.entries(c.cfg.outputs).map(([,d])=>d).filter(d=>mn(d)).map(d=>d);if(l.length===0)continue;const u=Hr(r.persist(),i);for(const d of l)n.push(j.Computable.wrapError(Re(e,u,d,c.cfg.code,c.bpId)))}return n})}class Cn{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 Ye{constructor(e,t,r){w(this,"rid");w(this,"overview");w(this,"navigationStates",new Cn);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=vn(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=Pn(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await Ne(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await Tr.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=ae.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfigContainer(t),c=B.extractConfig(a);return await te(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 te(this.env.pl,this.rid,o,a=>a.migrateBlockPack(e,n,r?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await te(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await te(this.env.pl,this.rid,t,r=>{const o=r.structure;if(o.groups.length!==1)throw new Error("Unexpected project structure, non-sinular block group");const n=o.groups[0];if(n.blocks.length!==e.length)throw new Error(`Lengh mismatch: ${n.blocks.length} !== ${e.length}`);if(new Set(e).size!==e.length)throw new Error("Repeated block ids");const i={groups:[{id:n.id,label:n.label,blocks:e.map(a=>{const c=n.blocks.find(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 Ne(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await Ne(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await te(this.env.pl,this.rid,r,o=>o.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,r){await te(this.env.pl,this.rid,r,o=>o.setUiState(e,t===void 0?void 0:JSON.stringify(t))),await this.projectTree.refreshState()}async setNavigationState(e,t){this.navigationStates.setState(e,t)}async setBlockArgsAndUiState(e,t,r,o){await te(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async setBlockSettings(e,t){await te(this.env.pl,this.rid,void 0,r=>{r.setBlockSettings(e,t)}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=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),a=JSON.parse(Buffer.from(k.notEmpty(i.data)).toString("utf-8"));await te(r,this.rid,t,c=>{c.setArgs([{blockId:e,args:JSON.stringify(a.config.initialArgs)}]),c.setUiState(e,void 0)}),await r.commit()}),await this.projectTree.refreshState()}getBlockComputables(e){const t=this.blockComputables.get(e);if(t===void 0){const r=wn(this.projectTree.entry(),e,this.env),n={fullState:j.Computable.make(i=>({argsAndUiState:Zr(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=bn(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 Ne(e.pl,t,o=>{});const r=await qe.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:Rn},e.logger);return new Ye(e,t,r)}}function Rn(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 It={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 At(s){return{blobDownloadPath:K.join(s,"download"),downloadBlobToURLPath:K.join(s,"downloadToURL")}}const es={...It,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function ts(s){return{...At(s),frontendDownloadPath:K.join(s,"frontend")}}function En(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var bt={exports:{}};const kn="2.0.0",rs=256,On=Number.MAX_SAFE_INTEGER||9007199254740991,$n=16,Tn=rs-6,Fn=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Qe={MAX_LENGTH:rs,MAX_SAFE_COMPONENT_LENGTH:$n,MAX_SAFE_BUILD_LENGTH:Tn,MAX_SAFE_INTEGER:On,RELEASE_TYPES:Fn,SEMVER_SPEC_VERSION:kn,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const In=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var Ze=In;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=Qe,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=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 H=h(A),T=u++;n(R,T,A),l[R]=T,c[T]=A,i[T]=new RegExp(A,x?"g":void 0),a[T]=new RegExp(H,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*$")})(bt,bt.exports);var Te=bt.exports;const An=Object.freeze({loose:!0}),Ln=Object.freeze({}),Dn=s=>s?typeof s!="object"?An:s:Ln;var Lt=Dn;const nr=/^[0-9]+$/,ss=(s,e)=>{const t=nr.test(s),r=nr.test(e);return t&&r&&(s=+s,e=+e),s===e?0:t&&!r?-1:r&&!t?1:s<e?-1:1},Nn=(s,e)=>ss(e,s);var os={compareIdentifiers:ss,rcompareIdentifiers:Nn};const je=Ze,{MAX_LENGTH:ir,MAX_SAFE_INTEGER:xe}=Qe,{safeRe:ar,t:cr}=Te,Bn=Lt,{compareIdentifiers:ge}=os;let jn=class ne{constructor(e,t){if(t=Bn(t),e instanceof ne){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>ir)throw new TypeError(`version is longer than ${ir} characters`);je("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?ar[cr.LOOSE]:ar[cr.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>xe||this.major<0)throw new TypeError("Invalid major version");if(this.minor>xe||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>xe||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<xe)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(je("SemVer.compare",this.version,this.options,e),!(e instanceof ne)){if(typeof e=="string"&&e===this.version)return 0;e=new ne(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof ne||(e=new ne(e,this.options)),ge(this.major,e.major)||ge(this.minor,e.minor)||ge(this.patch,e.patch)}comparePre(e){if(e instanceof ne||(e=new ne(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const r=this.prerelease[t],o=e.prerelease[t];if(je("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 ne||(e=new ne(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(je("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 q=jn;const lr=q,xn=(s,e,t=!1)=>{if(s instanceof lr)return s;try{return new lr(s,e)}catch(r){if(!t)return null;throw r}};var ye=xn;const Vn=ye,Un=(s,e)=>{const t=Vn(s,e);return t?t.version:null};var Jn=Un;const Gn=ye,Mn=(s,e)=>{const t=Gn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var _n=Mn;const ur=q,Kn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new ur(s instanceof ur?s.version:s,t).inc(e,r,o).version}catch{return null}};var qn=Kn;const dr=ye,Hn=(s,e)=>{const t=dr(s,null,!0),r=dr(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 Wn=Hn;const zn=q,Xn=(s,e)=>new zn(s,e).major;var Yn=Xn;const Qn=q,Zn=(s,e)=>new Qn(s,e).minor;var ei=Zn;const ti=q,ri=(s,e)=>new ti(s,e).patch;var si=ri;const oi=ye,ni=(s,e)=>{const t=oi(s,e);return t&&t.prerelease.length?t.prerelease:null};var ii=ni;const pr=q,ai=(s,e,t)=>new pr(s,t).compare(new pr(e,t));var se=ai;const ci=se,li=(s,e,t)=>ci(e,s,t);var ui=li;const di=se,pi=(s,e)=>di(s,e,!0);var hi=pi;const hr=q,fi=(s,e,t)=>{const r=new hr(s,t),o=new hr(e,t);return r.compare(o)||r.compareBuild(o)};var Dt=fi;const gi=Dt,mi=(s,e)=>s.sort((t,r)=>gi(t,r,e));var vi=mi;const yi=Dt,Si=(s,e)=>s.sort((t,r)=>yi(r,t,e));var bi=Si;const wi=se,Pi=(s,e,t)=>wi(s,e,t)>0;var et=Pi;const Ci=se,Ri=(s,e,t)=>Ci(s,e,t)<0;var Nt=Ri;const Ei=se,ki=(s,e,t)=>Ei(s,e,t)===0;var ns=ki;const Oi=se,$i=(s,e,t)=>Oi(s,e,t)!==0;var is=$i;const Ti=se,Fi=(s,e,t)=>Ti(s,e,t)>=0;var Bt=Fi;const Ii=se,Ai=(s,e,t)=>Ii(s,e,t)<=0;var jt=Ai;const Li=ns,Di=is,Ni=et,Bi=Bt,ji=Nt,xi=jt,Vi=(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 Li(s,t,r);case"!=":return Di(s,t,r);case">":return Ni(s,t,r);case">=":return Bi(s,t,r);case"<":return ji(s,t,r);case"<=":return xi(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var as=Vi;const Ui=q,Ji=ye,{safeRe:Ve,t:Ue}=Te,Gi=(s,e)=>{if(s instanceof Ui)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?Ve[Ue.COERCEFULL]:Ve[Ue.COERCE]);else{const c=e.includePrerelease?Ve[Ue.COERCERTLFULL]:Ve[Ue.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 Ji(`${r}.${o}.${n}${i}${a}`,e)};var Mi=Gi;class _i{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 Ki=_i,at,fr;function oe(){if(fr)return at;fr=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?c[l.HYPHENRANGELOOSE]:c[l.HYPHENRANGE];p=p.replace(C,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 F=p.split(" ").map(I=>H(I,this.options)).join(" ").split(/\s+/).map(I=>J(I,this.options));b&&(F=F.filter(I=>(i("loose invalid filter",I,this.options),!!I.match(c[l.COMPARATORLOOSE])))),i("range list",F);const E=new Map,L=F.map(I=>new n(I,this.options));for(const I of L){if(R(I))return[I];E.set(I.value,I)}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 a(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}}at=e;const t=Ki,r=new t,o=Lt,n=tt(),i=Ze,a=q,{safeRe:c,t:l,comparatorTrimReplace:u,tildeTrimReplace:d,caretTrimReplace:f}=Te,{FLAG_INCLUDE_PRERELEASE:h,FLAG_LOOSE:g}=Qe,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},H=(y,p)=>(i("comp",y,p),y=D(y,p),i("caret",y),y=le(y,p),i("tildes",y),y=ue(y,p),i("xrange",y),y=M(y,p),i("stars",y),y),T=y=>!y||y.toLowerCase()==="x"||y==="*",le=(y,p)=>y.trim().split(/\s+/).map(S=>pe(S,p)).join(" "),pe=(y,p)=>{const S=p.loose?c[l.TILDELOOSE]:c[l.TILDE];return y.replace(S,(v,P,b,C,F)=>{i("tilde",y,v,P,b,C,F);let E;return T(P)?E="":T(b)?E=`>=${P}.0.0 <${+P+1}.0.0-0`:T(C)?E=`>=${P}.${b}.0 <${P}.${+b+1}.0-0`:F?(i("replaceTilde pr",F),E=`>=${P}.${b}.${C}-${F} <${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?c[l.CARETLOOSE]:c[l.CARET],v=p.includePrerelease?"-0":"";return y.replace(S,(P,b,C,F,E)=>{i("caret",y,P,b,C,F,E);let L;return T(b)?L="":T(C)?L=`>=${b}.0.0${v} <${+b+1}.0.0-0`:T(F)?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}.${F}-${E} <${b}.${C}.${+F+1}-0`:L=`>=${b}.${C}.${F}-${E} <${b}.${+C+1}.0-0`:L=`>=${b}.${C}.${F}-${E} <${+b+1}.0.0-0`):(i("no pr"),b==="0"?C==="0"?L=`>=${b}.${C}.${F}${v} <${b}.${C}.${+F+1}-0`:L=`>=${b}.${C}.${F}${v} <${b}.${+C+1}.0-0`:L=`>=${b}.${C}.${F} <${+b+1}.0.0-0`),i("caret return",L),L})},ue=(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,P,b,C,F,E)=>{i("xRange",y,v,P,b,C,F,E);const L=T(b),V=L||T(C),I=V||T(F),fe=I;return P==="="&&fe&&(P=""),E=p.includePrerelease?"-0":"",L?P===">"||P==="<"?v="<0.0.0-0":v="*":P&&fe?(V&&(C=0),F=0,P===">"?(P=">=",V?(b=+b+1,C=0,F=0):(C=+C+1,F=0)):P==="<="&&(P="<",V?b=+b+1:C=+C+1),P==="<"&&(E="-0"),v=`${P+b}.${C}.${F}${E}`):V?v=`>=${b}.0.0${E} <${+b+1}.0.0-0`:I&&(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(c[l.STAR],"")),J=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(c[p.includePrerelease?l.GTE0PRE:l.GTE0],"")),Y=y=>(p,S,v,P,b,C,F,E,L,V,I,fe)=>(T(v)?S="":T(P)?S=`>=${v}.0.0${y?"-0":""}`:T(b)?S=`>=${v}.${P}.0${y?"-0":""}`:C?S=`>=${S}`:S=`>=${S}${y?"-0":""}`,T(L)?E="":T(V)?E=`<${+L+1}.0.0-0`:T(I)?E=`<${L}.${+V+1}.0-0`:fe?E=`<=${L}.${V}.${I}-${fe}`:y?E=`<${L}.${V}.${+I+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 at}var ct,gr;function tt(){if(gr)return ct;gr=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(">")))}}ct=e;const t=Lt,{safeRe:r,t:o}=Te,n=as,i=Ze,a=q,c=oe();return ct}const qi=oe(),Hi=(s,e,t)=>{try{e=new qi(e,t)}catch{return!1}return e.test(s)};var rt=Hi;const Wi=oe(),zi=(s,e)=>new Wi(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var Xi=zi;const Yi=q,Qi=oe(),Zi=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Qi(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new Yi(r,t))}),r};var ea=Zi;const ta=q,ra=oe(),sa=(s,e,t)=>{let r=null,o=null,n=null;try{n=new ra(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new ta(r,t))}),r};var oa=sa;const lt=q,na=oe(),mr=et,ia=(s,e)=>{s=new na(s,e);let t=new lt("0.0.0");if(s.test(t)||(t=new lt("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 lt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!n||mr(a,n))&&(n=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||mr(t,n))&&(t=n)}return t&&s.test(t)?t:null};var aa=ia;const ca=oe(),la=(s,e)=>{try{return new ca(s,e).range||"*"}catch{return null}};var ua=la;const da=q,cs=tt(),{ANY:pa}=cs,ha=oe(),fa=rt,vr=et,yr=Nt,ga=jt,ma=Bt,va=(s,e,t,r)=>{s=new da(s,r),e=new ha(e,r);let o,n,i,a,c;switch(t){case">":o=vr,n=ga,i=yr,a=">",c=">=";break;case"<":o=yr,n=ma,i=vr,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(fa(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===pa&&(h=new cs(">=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 xt=va;const ya=xt,Sa=(s,e,t)=>ya(s,e,">",t);var ba=Sa;const wa=xt,Pa=(s,e,t)=>wa(s,e,"<",t);var Ca=Pa;const Sr=oe(),Ra=(s,e,t)=>(s=new Sr(s,t),e=new Sr(e,t),s.intersects(e,t));var Ea=Ra;const ka=rt,Oa=se;var $a=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((u,d)=>Oa(u,d,t));for(const u of i)ka(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 br=oe(),Vt=tt(),{ANY:ut}=Vt,Se=rt,Ut=se,Ta=(s,e,t={})=>{if(s===e)return!0;s=new br(s,t),e=new br(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=Ia(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},Fa=[new Vt(">=0.0.0-0")],wr=[new Vt(">=0.0.0")],Ia=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===ut){if(e.length===1&&e[0].semver===ut)return!0;t.includePrerelease?s=Fa:s=wr}if(e.length===1&&e[0].semver===ut){if(t.includePrerelease)return!0;e=wr}const r=new Set;let o,n;for(const h of s)h.operator===">"||h.operator===">="?o=Pr(o,h,t):h.operator==="<"||h.operator==="<="?n=Cr(n,h,t):r.add(h.semver);if(r.size>1)return null;let i;if(o&&n){if(i=Ut(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=Pr(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=Cr(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)},Pr=(s,e,t)=>{if(!s)return e;const r=Ut(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},Cr=(s,e,t)=>{if(!s)return e;const r=Ut(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var Aa=Ta;const dt=Te,Rr=Qe,La=q,Er=os,Da=ye,Na=Jn,Ba=_n,ja=qn,xa=Wn,Va=Yn,Ua=ei,Ja=si,Ga=ii,Ma=se,_a=ui,Ka=hi,qa=Dt,Ha=vi,Wa=bi,za=et,Xa=Nt,Ya=ns,Qa=is,Za=Bt,ec=jt,tc=as,rc=Mi,sc=tt(),oc=oe(),nc=rt,ic=Xi,ac=ea,cc=oa,lc=aa,uc=ua,dc=xt,pc=ba,hc=Ca,fc=Ea,gc=$a,mc=Aa;var vc={parse:Da,valid:Na,clean:Ba,inc:ja,diff:xa,major:Va,minor:Ua,patch:Ja,prerelease:Ga,compare:Ma,rcompare:_a,compareLoose:Ka,compareBuild:qa,sort:Ha,rsort:Wa,gt:za,lt:Xa,eq:Ya,neq:Qa,gte:Za,lte:ec,cmp:tc,coerce:rc,Comparator:sc,Range:oc,satisfies:nc,toComparators:ic,maxSatisfying:ac,minSatisfying:cc,minVersion:lc,validRange:uc,outside:dc,gtr:pc,ltr:hc,intersects:fc,simplifyRange:gc,subset:mc,SemVer:La,re:dt.re,src:dt.src,tokens:dt.t,SEMVER_SPEC_VERSION:Rr.SEMVER_SPEC_VERSION,RELEASE_TYPES:Rr.RELEASE_TYPES,compareIdentifiers:Er.compareIdentifiers,rcompareIdentifiers:Er.rcompareIdentifiers};const yc=En(vc),Sc={minDelay:1500},bc="__no_updates__";class wc extends j.PollComputablePool{constructor(t,r,o={}){super({...o,...Sc},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_${re(t)}`;default:return bc}}async readValue(t){var r,o;try{const n=t.currentSpec;switch(n.type){case"dev-v1":try{const i=await Rt(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 He(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(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(a!==void 0&&yc.lte(f,a))return{suggestions:h};const g={...n,id:{...n.id,version:f}};return(async()=>{try{await c.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 re(t)===re(r)}}class kr{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 Q(){return be||(be={logPFrameRequests:process.env.MI_LOG_PFRAMES!==void 0,usePFrameRs:process.env.MI_USE_PFRAMES_RS!==void 0},process.env.MI_LOG_TREE_STAT&&(be.logTreeStats=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request"),be)}function Ee(s){return String(s.id)}const Pc=["Int","Long","Float","Double","String","Bytes"];function pt(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 Cc{constructor(e,t,r,o){w(this,"rustPFrame");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;const n=(a,c)=>{switch(a){default:case"info":return this.logger.info(c);case"warn":return this.logger.warn(c);case"error":return this.logger.error(c)}};for(const a of o)for(const c of wo(a.data))this.blobIdToResource.set(Ee(c),c);const i=[...new Map(o.map(a=>({...a,data:Po(a.data,Ee)})).map(a=>[re(a),a])).values()];this.rustPFrame=(()=>{try{const a=new ys.PFrame(Q().logPFrameRequests?n:void 0);a.setDataSource(this);for(const c of i)a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data);return a}catch(a){throw new Error(`Rust PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}})(),this.specPFrame=(()=>{try{const a=Q().logPFrameRequests?new Ae.PFrame(n):new Ae.PFrame;for(const c of i)try{a.addColumnSpec(c.id,c.spec)}catch(l){throw new Error(`Adding column ${c.id} to PFrame failed: ${l}; Spec: ${JSON.stringify(c.spec)}.`)}return a}catch(a){throw new Error(`Spec PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}})(),this.createDataPFrame=()=>{try{const a=Q().logPFrameRequests?new Ae.PFrame(n):new Ae.PFrame;a.setDataSource(this);for(const c of i)try{a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data)}catch(l){throw new Error(`Adding column ${c.id} to PFrame failed: ${l}; Spec: ${JSON.stringify(c.spec)}, DataInfo: ${JSON.stringify(c.data)}.`)}return a}catch(a){throw new Error(`Data PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}}}get disposableDataPFrame(){const e=this.createDataPFrame();return{dataPFrame:e,[Symbol.dispose]:()=>{e.dispose()}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.rustPFrame.dispose(),this.specPFrame.dispose()}}class Rc{constructor(e,t){w(this,"pFrames");w(this,"pTables");w(this,"blobContentCache");w(this,"concurrencyLimiter");this.blobDriver=e,this.logger=t;const r=new Ss.LRUCache({maxSize:1e9,fetchMethod:async n=>await Fr.readFile(n),sizeCalculation:n=>n.length});this.blobContentCache=r;const o=new k.ConcurrencyLimitingExecutor(1);this.concurrencyLimiter=o,this.pFrames=new class extends kr{constructor(n,i){super(),this.blobDriver=n,this.logger=i}createNewResource(n){return Q().logPFrameRequests&&t.info(`PFrame creation (pFrameHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,we)}`),new Cc(this.blobDriver,this.logger,r,n)}calculateParamsKey(n){return kc(n)}}(this.blobDriver,this.logger),this.pTables=new class extends kr{constructor(n){super(),this.pFrames=n}async createNewResource(n){const i=n.pFrameHandle,a=await o.run(async()=>{var l=[];try{Q().logPFrameRequests&&t.info(`PTable creation (pTableHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,we)}`);const c=Fe(l,this.pFrames.getByKey(i).disposableDataPFrame);return await c.dataPFrame.createTable({src:ke(n.def.src),filters:pt(n.def.filters)})}catch(u){var d=u,f=!0}finally{Ie(l,d,f)}});return n.def.sorting.length!==0?a.sort(n.def.sorting):a}calculateParamsKey(n){return Ec(n)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>Pc.find(i=>i===n.spec.valueType)).map(n=>B.mapPObjectData(n,i=>qe.isPlTreeNodeAccessor(i)?$o(i):To(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 Q().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:[...new Map(t.compatibleWith.map(n=>[re(n),n])).values()],qualifications:[]}]:[]};return{hits:(Q().usePFrameRs?await this.pFrames.getByKey(e).rustPFrame.findColumns(r):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(a=>a.length===0))).map(n=>n.hit)}}async getColumnSpec(e,t){return Q().usePFrameRs?await this.pFrames.getByKey(e).rustPFrame.getColumnSpec(t):await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).specPFrame.getColumnSpec(t))}async listColumns(e){return Q().usePFrameRs?await this.pFrames.getByKey(e).rustPFrame.listColumns():await this.concurrencyLimiter.run(async()=>await this.pFrames.getByKey(e).specPFrame.listColumns())}async calculateTableData(e,t){let r=await this.concurrencyLimiter.run(async()=>{var a=[];try{Q().logPFrameRequests&&this.logger.info(`Call calculateTableData, handle = ${e}, request = ${JSON.stringify(t,we)}`);const i=Fe(a,this.pFrames.getByKey(e).disposableDataPFrame);return await i.dataPFrame.createTable({src:ke(t.src),filters:pt(t.filters)})}catch(c){var l=c,u=!0}finally{Ie(a,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,a)=>({spec:i,data:n[a]}))}async getUniqueValues(e,t){return await this.concurrencyLimiter.run(async()=>{var o=[];try{Q().logPFrameRequests&&this.logger.info(`Call getUniqueValues, handle = ${e}, request = ${JSON.stringify(t,we)}`);const r=Fe(o,this.pFrames.getByKey(e).disposableDataPFrame);return await r.dataPFrame.getUniqueValues({...t,filters:pt(t.filters)})}catch(n){var i=n,a=!0}finally{Ie(o,i,a)}})}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 ke(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=>ke(e))};case"outer":return{type:"outer",primary:ke(s.primary),secondary:s.secondary.map(e=>ke(e))};default:k.assertNever(s)}}function Ec(s){const e=ae.createHash("sha256");return e.update(re(s)),e.digest().toString("hex")}function kc(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:Ee(c)}))};break;case"BinaryPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:[Ee(c.index),Ee(c.values)]}))};break;default:throw Error(`unsupported resource type: ${JSON.stringify(i)}`)}return n.payload.sort((a,c)=>a.key.localeCompare(c.key)),n}));e.sort((r,o)=>r.id.localeCompare(o.id));const t=ae.createHash("sha256");return t.update(re(e)),t.digest().toString("hex")}async function ls(s,e,t){const r={...It,...At(e),...t},o=new k.HmacSha256Signer(r.localSecret),n=ee.createDownloadClient(r.logger,s,r.localProjections),i=ee.createLogsClient(s,r.logger),a=ee.createUploadBlobClient(s,r.logger),c=ee.createUploadProgressClient(s,r.logger),l=new ee.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),u=new ee.DownloadBlobToURLDriver(r.logger,o,n,r.downloadBlobToURLPath,r.downloadBlobToURLDriverOps),d=new ee.UploadDriver(r.logger,o,a,c,r.uploadDriverOps),f=new ee.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),h=new ee.LogsDriver(r.logger,f,l),g=await ee.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),R=new Rc(l,r.logger);return{blobDriver:l,blobToURLDriver:u,logDriver:h,lsDriver:g,signer:o,uploadDriver:d,pFrameDriver:R}}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=ae.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await bo(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 te(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 Ye.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={...es,...ts(t),...r};o.defaultTreeOptions.logStat=Q().logTreeStats;const n=await e.withWriteTx("MLInitialization",async R=>{const A=m.field(R.clientRoot,_s);R.createField(A,"Dynamic");const x=await R.getField(A);if(m.isNullResourceId(x.value)){const H=R.createEphemeral(Nr);return R.lock(H),R.setField(A,H),await R.commit(),await H.globalId}else return x.value}),i=o.logger,a=await ls(e,t,o),c=new ce.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),l=new Ar(c),u=new ho(l,a.signer,c),d=new ee.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 wc(l,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await Ge.getQuickJS()},h=new j.WatchableValue([]),g=await qs(e,n,h,f);return new Jt(f,a,a.signer,n,h,g.tree,l,g.computable)}}const Oc=["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 $c(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=[];Oc.forEach(c=>{bs.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 me(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 me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,a)),o.blockGARegistryOverviewChecks=await me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,a)),o.blockRegistryUiChecks=await me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockUiPath,t.blockRegistryUrl),t,a)),o.blockGARegistryUiChecks=await me(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockUiPath,t.blockGARegistryUrl),t,a)),o.autoUpdateCdnChecks=await me(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await Pe(t.autoUpdateCdnUrl,t,a)),Tc(o,s,t,r)}async function me(s,e,t){const r=wt(),o=[];for(;Or(r)<s;){const n=wt();let i;try{i={ok:!0,value:await t()}}catch(l){i={ok:!1,error:l}}const a=Or(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await Tr.setTimeout(c)}return o}async function Pe(s,e,t){const{body:r,statusCode:o}=await ce.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function Tc(s,e,t,r){const o=s.plPings.filter(a=>a.response.ok),n=s.plPings.filter(a=>!a.response.ok),i=[...new Set(o.map(a=>JSON.stringify(a.response.value)))];return`
|
|
2
2
|
Network report:
|
|
3
3
|
pl endpoint: ${e};
|
|
4
4
|
options: ${JSON.stringify(t,null,2)}.
|