@milaboratories/pl-middle-layer 1.30.22 → 1.30.24

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