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