@milaboratories/pl-middle-layer 1.32.5 → 1.32.6
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/debug/index.d.ts +0 -1
- package/dist/debug/index.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1071 -1220
- package/dist/index.mjs.map +1 -1
- package/dist/pool/driver.d.ts +0 -2
- package/dist/pool/driver.d.ts.map +1 -1
- package/package.json +11 -12
- package/src/debug/index.ts +0 -2
- package/src/pool/driver.ts +57 -195
package/dist/index.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";var ys=Object.defineProperty;var Kt=(s,e)=>(e=Symbol[s])?e:Symbol.for("Symbol."+s),Ht=s=>{throw TypeError(s)};var Ss=(s,e,t)=>e in s?ys(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var w=(s,e,t)=>Ss(s,typeof e!="symbol"?e+"":e,t);var Ae=(s,e,t)=>{if(e!=null){typeof e!="object"&&typeof e!="function"&&Ht("Object expected");var r;t&&(r=e[Kt("asyncDispose")]),r===void 0&&(r=e[Kt("dispose")]),typeof r!="function"&&Ht("Object not disposable"),s.push([t,r,e])}else t&&s.push([t]);return e},De=(s,e,t)=>{var r=typeof SuppressedError=="function"?SuppressedError:function(i,a,c,u){return u=Error(c),u.name="SuppressedError",u.error=i,u.suppressed=a,u},o=i=>e=t?new r(i,e,"An error was suppressed during disposal"):(t=!0,i),n=i=>{for(;i=s.pop();)try{var a=i[1]&&i[1].call(i[2]);if(i[0])return Promise.resolve(a).then(n,c=>(o(c),n()))}catch(c){o(c)}if(t)throw e};return n()};Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const D=require("@platforma-sdk/model"),K=require("@milaboratories/pl-model-middle-layer"),qt=require("@milaboratories/pl-deployments"),ze=require("undici"),H=require("@platforma-sdk/block-tools"),Z=require("node:fs"),q=require("node:path"),ws=require("yaml"),k=require("@milaboratories/ts-helpers"),gt=require("node:fs/promises"),bs=require("@milaboratories/resolve-helper"),h=require("@milaboratories/pl-client"),Ke=require("@milaboratories/pl-tree"),B=require("@milaboratories/computable"),se=require("node:crypto"),j=require("@milaboratories/pl-model-backend"),Lr=require("lru-cache"),Nr=require("denque"),Ps=require("@platforma-sdk/workflow-tengo"),re=require("canonicalize"),Cs=require("@milaboratories/pl-errors"),Es=require("node:assert"),$e=require("quickjs-emscripten"),Br=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),Wt=require("@milaboratories/pframes-node"),Rs=require("@milaboratories/pframes-rs-node"),ks=require("node:diagnostics_channel");function Os(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const jr=Os(gt);async function zt(s){try{return await jr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const $s=[H.RegistryV1.PlPackageYamlConfigFile],Ts=[H.RegistryV1.PlPackageJsonConfigFile],Rt=["backend","dist","tengo","tpl","main.plj.gz"],kt=["config","dist","config.json"],xr=["frontend","dist"],Xt="block-model/dist/config.json",Is="block-ui/package.json",Fs=[Rt,kt,$s,Ts,xr];async function As(s){return await zt(q.join(s,...kt))!==void 0||await zt(q.join(s,...Rt))!==void 0}function it(s,e){const t=bs.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Yt(s,e){if(q.isAbsolute(s)||(s=q.resolve(s)),await As(s))return{workflow:q.join(s,...Rt),config:q.join(s,...kt),ui:q.join(s,...xr)};{const t=it(s,Xt),r=it(s,Xt),o=it(s,Is);return{workflow:t,config:r,ui:q.resolve(o,"..","dist")}}}async function Ds(s){try{return await Z.promises.readFile(s,"utf8")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function Ls(s){try{return await Z.promises.stat(s,{bigint:!0})}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function Ot(s){let e=0n;for(const t of Fs){const r=q.join(s,...t),o=await Ls(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function Xe(s){const e=await Z.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await Z.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class Ns{constructor(e,t,r){this.v2Provider=e,this.registries=t,this.http=r}async getPackagesForRoot(e){const t=[],r=e.spec;switch(r.type){case"remote-v1":{const o=this.http!==void 0?{dispatcher:this.http}:{},i=await(await ze.request(`${r.url}/${H.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const a of i){const{organization:c,package:u,latestMeta:l,latestVersion:d}=a,g={organization:c,name:u,version:d},f={id:g,meta:{title:l.title??"No title",description:l.description??"No Description",organization:{name:c,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:g,registryUrl:r.url}};t.push({registryId:e.id,id:g,latestByChannel:{[K.AnyChannel]:f,[K.StableChannel]:f},allVersions:a.allVersions.map(E=>({version:E,channels:[]}))})}return t}case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(o=>({...o,registryId:e.id}));case"local-dev":for(const o of await Z.promises.readdir(r.path,{withFileTypes:!0})){if(!o.isDirectory())continue;const n=q.join(r.path,o.name),i=await Ds(q.join(n,H.RegistryV1.PlPackageYamlConfigFile));if(i!==void 0){const a=H.RegistryV1.PlPackageConfigData.parse(ws.parse(i)),c=await Ot(n),u={organization:a.organization,name:a.package,version:"DEV"},l={id:u,meta:{title:a.meta.title??"No title",description:a.meta.description??"No Description",organization:{name:a.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:n,mtime:c}};t.push({registryId:e.id,id:u,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}else{let a=n,c=await H.tryLoadPackDescription(a);if(c===void 0){for(const u of["block","meta"])if(a=q.join(n,u),c=await H.tryLoadPackDescription(a),c!==void 0)break}if(c!==void 0){const u=await Xe(c),l={id:c.id,meta:await H.BlockPackMetaEmbedAbsoluteBytes.parseAsync(c.meta),spec:{type:"dev-v2",folder:a,mtime:u}};t.push({registryId:e.id,id:c.id,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}}}return t;default:return k.assertNever(r)}}async listBlockPacks(){const e=[],t=[];for(const r of this.registries)t.push({...r,status:"online"}),e.push(...await this.getPackagesForRoot(r));return{registries:t,blockPacks:e}}async getOverview(e,t,r){var i;const o=(i=this.registries.find(a=>a.id===e))==null?void 0:i.spec;if(!o)throw new Error(`Registry with id "${e}" not found`);if(o.type!=="remote-v2")throw new Error('Only "remote-v2" registries support specific package version overview retrieval.');return await this.v2Provider.getRegistry(o.url).getSpecificOverview(t,r)}}class Vr{constructor(e){w(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new H.RegistryV2Reader(H.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const Bs={type:"remote-v2",url:"https://blocks.pl-open.science/"},js={type:"remote-v1",url:"https://block.registry.platforma.bio/releases"},xs={type:"remote-v1",url:"https://block.registry.platforma.bio/dev"},Vs={groups:[{id:"default",label:"Default",blocks:[]}]},Us={stagingRefreshTimestamp:0,blocksInLimbo:[]},Js={label:"New Project"},Gs={name:"UserProject",version:"2"},Ur="SchemaVersion",Jr="1",$t="ProjectCreated",Te="ProjectLastModified",Ie="ProjectMeta",pe="ProjectStructure",He="BlockRenderingState",Ms="BlockFrontendState/",_s=/^BlockFrontendState\/(?<blockid>.*)$/;function mt(s){return`${Ms}${s}`}const Ks="BlockArgsAuthor/";function vt(s){return`${Ks}${s}`}const yt="ProjectStructureAuthor";function Hs(s){const e=s.match(_s);if(e!==null)return e.groups.blockid}const qs="__serviceTemplate_";function St(s){return`${qs}${s}`}function G(s,e){return`${s}-${e}`}const Ws=/^(?<blockId>.*)-(?<fieldName>blockPack|blockSettings|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function zs(s){const e=s.match(Ws);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const Xs="projects",Gr={name:"Projects",version:"1"},Ys=s=>h.resourceTypesEqual(s.type,Gr)?s.fields:[];async function Qs(s,e,t,r){const o=await Ke.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Ys},r.logger);return{computable:B.Computable.make(i=>{const a=i.accessor(o.entry()).node(),c=t.getValue(i);if(a===void 0)return;const u=[];for(const l of a.listDynamicFields()){const d=a.traverse(l);if(d===void 0)continue;const g=k.notEmpty(d.getKeyValueAsJson(Ie)),f=k.notEmpty(d.getKeyValueAsJson($t)),E=k.notEmpty(d.getKeyValueAsJson(Te));u.push({id:l,rid:d.id,created:new Date(f),lastModified:new Date(E),opened:c.indexOf(d.id)>=0,meta:g})}return u.sort(l=>-l.lastModified.valueOf()),u}).withStableType(),tree:o}}const Zs={name:"EphRenderTemplate",version:"1"},eo={name:"RenderTemplate",version:"1"};function Tt(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(Zs):s.createStruct(eo),i=h.field(n,"template"),a=h.field(n,"inputs");return s.createField(i,"Input",e),s.createField(a,"Input",h.Pl.createPlMap(s,r,t)),s.lockInputs(n),h.Pl.futureRecord(s,n,o,"Output","outputs/")}const to={name:"BContextEnd",version:"1"},ro={name:"BContext",version:"1"},so="id",oo="parent/",no=["context","result"];function Qt(s,e,t){return Tt(s,e,!0,t,no)}function io(s){const e=s.createEphemeral(to);return s.lock(e),e}function Zt(s,e){if(e.length===0)return io(s);if(e.length===1)return e[0];const t=s.createEphemeral(ro);s.createField(h.field(t,so),"Input",h.Pl.createPlString(s,se.randomUUID()));for(let r=0;r<e.length;r++)s.createField(h.field(t,`${oo}${r}`),"Input",e[r]);return s.lock(t),t}function ao(s,e){const t=j.parseTemplate(e.content),r=t.type;switch(r){case"pl.tengo-template.v2":return co(s,t);default:k.assertNever(r)}}const er={hash(s,e){e.update(j.PlTemplateLibV1.type.name).update(j.PlTemplateLibV1.type.version).update(s.name).update(s.version).update(s.src)},render(s,e,t){return e.createValue(j.PlTemplateLibV1.type,JSON.stringify(j.PlTemplateLibV1.fromV2Data(s).data))}},Le={hash(s,e){e.update(j.PlTemplateSoftwareV1.type.name).update(j.PlTemplateSoftwareV1.type.version).update(s.name).update(s.version).update(s.src)},render(s,e,t){const r=j.PlTemplateSoftwareV1.fromV2Data(s),o=e.createStruct(j.PlTemplateSoftwareV1.type,r.data);return e.setKValue(o,j.PlTemplateSoftwareV1.metaNameKey,JSON.stringify(r.name)),e.lock(o),o}},Mr={hash(s,e){e.update(j.PlTemplateV1.type.name).update(j.PlTemplateV1.type.version).update(s.hashOverride??"no-override").update(s.name).update(s.version).update(s.src);const t=r=>(r.sort((o,n)=>o[0]===n[0]?0:o[0]<n[0]?-1:1),r);for(const[r,o]of t(Object.entries(s.libs??{})))e.update("lib:"+r),er.hash(o,e);for(const[r,o]of t(Object.entries(s.software??{})))e.update("soft:"+r),Le.hash(o,e);for(const[r,o]of t(Object.entries(s.assets??{})))e.update("asset:"+r),Le.hash(o,e);for(const[r,o]of t(Object.entries(s.templates??{})))e.update("tpl:"+r),this.hash(o,e)},render(s,e,t){const r=e.createStruct(j.PlTemplateV1.type,JSON.stringify(j.PlTemplateV1.fromV2Data(s).data));for(const[i,a]of Object.entries(s.libs??{})){const c=j.PlTemplateV1.libField(r,i);e.createField(c,"Input"),e.setField(c,t(a,er))}for(const[i,a]of Object.entries(s.software??{})){const c=j.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(s.assets??{})){const c=j.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Le))}for(const[i,a]of Object.entries(s.templates??{})){const c=j.PlTemplateV1.tplField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Mr))}if(e.lock(r),!s.hashOverride)return r;const o=e.createStruct(j.PlTemplateOverrideV1.type,JSON.stringify(j.PlTemplateOverrideV1.fromV2Data(s))),n=j.PlTemplateOverrideV1.tplField(o);return e.createField(n,"Service"),e.setField(n,r),e.lock(o),o}};function co(s,e){const t=new Map,r=(o,n)=>{const i=se.createHash("sha256");n.hash(o,i);const a=i.digest("hex");if(!t.has(a)){const c=n.render(o,s,r);t.set(a,c)}return t.get(a)};return r(e,Mr)}const _r={name:"TengoTemplateGet",version:"1"},Kr="registry",Hr="templateURI",qr="template",lo={name:"TengoTemplatePack",version:"1"},uo={name:"TengoTemplatePackConvert",version:"1"},po="templatePack",ho="template";async function Wr(s){switch(s.type){case"from-file":return{type:"explicit",content:await Z.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return k.assertNever(s)}}function fo(s,e){const t=s.createStruct(_r),r=h.field(t,Kr),o=h.field(t,Hr),n=h.field(t,qr);return s.setField(r,s.createValue(h.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(h.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function Ye(s,e){switch(e.type){case"from-registry":return fo(s,e);case"explicit":return ao(s,e);default:return k.assertNever(e)}}const It={name:"Frontend/FromUrl",version:"1"},Ft={name:"Frontend/FromFolder",version:"1"};function go(s,e){switch(e.type){case"url":return s.createValue(It,JSON.stringify({url:e.url}));case"local":return s.createValue(Ft,JSON.stringify({path:e.path,signature:e.signature}));default:return k.assertNever(e)}}const mo={name:"BlockPackCustom",version:"1"},zr="template",Xr="frontend";function tr(s){return s.endsWith("/")?s:`${s}/`}function vo(s){return Buffer.from(s).toString("utf8")}function Ne(s){return JSON.parse(vo(s))}class yo{constructor(e,t,r){w(this,"remoteContentCache",new Lr.LRUCache({max:500,maxSize:128*1024*1024,fetchMethod:async e=>{const t=this.http!==void 0?{dispatcher:this.http}:{};return await(await ze.request(e,t)).body.arrayBuffer()},sizeCalculation:e=>e.byteLength}));this.v2RegistryProvider=e,this.signer=t,this.http=r}async getBlockConfigContainer(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Yt(e.folder),r=await Z.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await H.loadPackDescription(e.folder),r=await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=`${tr(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,r=await this.remoteContentCache.forceFetch(`${t}/config.json`);return Ne(r)}case"from-registry-v2":{const r=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=await this.remoteContentCache.forceFetch(r.model.url);return Ne(o)}default:return k.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Yt(e.folder),r=await Z.promises.readFile(t.workflow),o=JSON.parse(await Z.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:r},config:o,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:e}}case"dev-v2":{const t=await H.loadPackDescription(e.folder),r=JSON.parse(await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Z.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await Xe(t)),{type:"explicit",template:{type:"explicit",content:o},config:r,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=`${tr(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,r=`${t}/template.plj.gz`,o=await this.remoteContentCache.forceFetch(r),n=new Uint8Array(o),i=await this.remoteContentCache.forceFetch(`${t}/config.json`),a=Ne(i);return{type:"explicit",template:{type:"explicit",content:n},config:a,frontend:{type:"url",url:`${t}/frontend.tgz`},source:e}}case"from-registry-v2":{const r=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=async()=>Ne(await this.remoteContentCache.forceFetch(r.model.url)),n=async()=>await this.remoteContentCache.forceFetch(r.workflow.main.url),[i,a]=await Promise.all([o(),n()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(a)},config:i,frontend:{type:"url",url:r.ui.url},source:e}}default:return k.assertNever(e)}}}function So(s,e){const t={config:e.config,source:e.source},r=s.createStruct(mo,JSON.stringify(t));return s.createField(h.field(r,zr),"Input",Ye(s,e.template)),s.createField(h.field(r,Xr),"Input",go(s,e.frontend)),s.lock(r),r}function rr(s,e){switch(e.type){case"explicit":return So(s,e);default:return k.assertNever(e.type)}}function Be(s,e){return{__isRef:!0,blockId:s,name:e}}function wo(s){return typeof s=="object"&&s!==null&&"__isRef"in s&&s.__isRef===!0&&"blockId"in s&&"name"in s}function wt(s,e,t){const r=typeof e;switch(r){case"function":case"bigint":case"number":case"string":case"boolean":case"symbol":case"undefined":return;case"object":if(e===null)return;if(wo(e))t===void 0||t.has(e.blockId)?s.upstreams.add(e.blockId):s.missingReferences=!0;else if(Array.isArray(e))for(const o of e)wt(s,o,t);else for(const[,o]of Object.entries(e))wt(s,o,t);return;default:k.assertNever(r)}}function bo(s,e){const t={upstreams:new Set,missingReferences:!1};return wt(t,s,e),t}function ce(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class Yr{constructor(e){w(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,o=>r.add(o.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const o of t)r.delete(o);return r}traverse(e,t,r){let o=[...t];const n=new Set(o);for(;o.length>0;){const i=[];for(const a of o){const c=this.nodes.get(a);r(c),c[e].forEach(u=>{n.has(u)||(n.add(u),i.push(u))})}o=i}}}function bt(s){const e=new Map;let t;for(const{id:r}of ce(s)){const o={id:r,missingReferences:!1};e.set(r,o),t===void 0?o.upstream=new Set:(o.upstream=new Set([t.id]),t.downstream=new Set([o.id])),t=o}return t!==void 0&&(t.downstream=new Set),new Yr(e)}function _e(s,e){const t=new Map,r=new Set;for(const{id:o}of ce(s)){const n=e(o);if(n===void 0)continue;const i=bo(n,r),a={id:o,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(o,a),i.upstreams.forEach(c=>t.get(c).downstream.add(o)),r.add(o)}return new Yr(t)}function Po(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function Pt(s,e){if(s.size>e.size)return Pt(e,s);for(const t of s)if(e.has(t))return!0;return!1}function sr(s,e){const t=new Set,r=new Set,o=new Set;return s.nodes.forEach(n=>{const i=e.nodes.get(n.id);i===void 0?t.add(n.id):(!Po(n.upstream,i.upstream)||Pt(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?Pt(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let at;async function Qr(){if(at===void 0){const s=await Wr(Ps.Templates["pframes.export-pframe-for-ui"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=se.createHash("sha256").update(s.content).digest("hex");at={spec:s,hash:e}}return at}function Co(s,e,t){return Tt(s,e,!0,{pf:t},["result"]).result}function ct(s,e){let t=!1,r,o;return()=>{if(!t)return t=!0,r=s(),o=e(),o;const n=s();return r!==n&&(r=n,o=e()),e()}}class or{constructor(e,t){w(this,"currentInputsC",ct(()=>this.fields.currentArgs.modCount,()=>JSON.parse(Buffer.from(this.fields.currentArgs.value).toString())));w(this,"actualProductionInputsC",ct(()=>{var e;return(e=this.fields.prodArgs)==null?void 0:e.modCount},()=>{var t;const e=(t=this.fields.prodArgs)==null?void 0:t.value;if(e!==void 0)return JSON.parse(Buffer.from(e).toString())}));w(this,"productionStaleC",ct(()=>{var e;return`${this.fields.currentArgs.modCount}_${(e=this.fields.prodArgs)==null?void 0:e.modCount}`},()=>this.fields.prodArgs===void 0||Buffer.compare(this.fields.currentArgs.value,this.fields.prodArgs.value)!==0));this.id=e,this.fields=t}check(){if(this.fields.prodOutput===void 0!=(this.fields.prodCtx===void 0))throw new Error("inconsistent prod fields");if(this.fields.stagingOutput===void 0!=(this.fields.stagingCtx===void 0))throw new Error("inconsistent stage fields");if(this.fields.prodOutputPrevious===void 0!=(this.fields.prodCtxPrevious===void 0))throw new Error("inconsistent prod cache fields");if(this.fields.stagingOutputPrevious===void 0!=(this.fields.stagingCtxPrevious===void 0))throw new Error("inconsistent stage cache fields");if(this.fields.blockPack===void 0)throw new Error("no block pack field");if(this.fields.currentArgs===void 0)throw new Error("no current args field")}get currentInputs(){return this.currentInputsC()}get stagingRendered(){return this.fields.stagingCtx!==void 0}get productionRendered(){return this.fields.prodCtx!==void 0}get productionHasErrors(){var e;return((e=this.fields.prodUiCtx)==null?void 0:e.status)==="Error"}get requireProductionRendering(){return!this.productionRendered||this.productionStaleC()||this.productionHasErrors}get actualProductionInputs(){return this.actualProductionInputsC()}getTemplate(e){return e.getFutureFieldValue(h.Pl.unwrapHolder(e,this.fields.blockPack.ref),zr,"Input")}}const Eo=s=>{throw new Error(`No new block info for ${s}`)};class qe{constructor(e,t,r,o,n,i,a,c,u,l,d,g){w(this,"globalModCount",0);w(this,"fieldsChanged",!1);w(this,"lastModifiedChanged",!1);w(this,"structureChanged",!1);w(this,"metaChanged",!1);w(this,"renderingStateChanged",!1);w(this,"changedBlockFrontendStates",new Set);w(this,"blocksWithChangedInputs",new Set);w(this,"stagingGraph");w(this,"pendingProductionGraph");w(this,"actualProductionGraph");this.rid=e,this.tx=t,this.author=r,this.schema=o,this.lastModified=n,this.meta=i,this.struct=a,this.renderingState=c,this.blocksInLimbo=u,this.blockInfos=l,this.blockFrontendStates=d,this.ctxExportTplHolder=g}fixProblemsAndMigrate(){this.blockInfos.forEach(t=>{(t.fields.prodArgs===void 0||t.fields.prodOutput===void 0||t.fields.prodCtx===void 0)&&this.deleteBlockFields(t.id,"prodArgs","prodOutput","prodCtx")});let e;this.blockInfos.forEach(t=>{t.fields.blockSettings===void 0&&(e===void 0&&(e=this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(t.id,"blockSettings",e))})}get wasModified(){return this.lastModifiedChanged||this.structureChanged||this.fieldsChanged||this.metaChanged||this.renderingStateChanged||this.changedBlockFrontendStates.size>0}get structure(){return JSON.parse(JSON.stringify(this.struct))}getStagingGraph(){return this.stagingGraph===void 0&&(this.stagingGraph=bt(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=_e(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=_e(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(h.Pl.JsonObject,t),value:t,status:"Ready"}}createJsonFieldValue(e){return this.createJsonFieldValueByContent(JSON.stringify(e))}getBlock(e){for(const t of ce(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=h.field(this.rid,G(e,t));if(r.ref===void 0)throw new Error("Can't set value with empty ref");this.getBlockInfo(e).fields[t]===void 0?this.tx.createField(o,"Dynamic",r.ref):this.tx.setField(o,r.ref),this.getBlockInfo(e).fields[t]={modCount:this.globalModCount++,...r},this.fieldsChanged=!0}setBlockField(e,t,r,o,n){this.setBlockFieldObj(e,t,{ref:r,status:o,value:n})}deleteBlockFields(e,...t){let r=!1;const o=this.getBlockInfo(e);for(const n of t){const i=o.fields;n in i&&(this.tx.removeField(h.field(this.rid,G(e,n))),delete i[n],this.fieldsChanged=!0,r=!0)}return r}updateLastModified(){this.lastModified=Date.now(),this.lastModifiedChanged=!0}resetStagingRefreshTimestamp(){this.renderingState.stagingRefreshTimestamp=Date.now(),this.renderingStateChanged=!0}resetStaging(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.stagingOutput)==null?void 0:r.status)==="Ready"&&((o=t.stagingCtx)==null?void 0:o.status)==="Ready"&&((n=t.stagingUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"stagingOutputPrevious",t.stagingOutput),this.setBlockFieldObj(e,"stagingCtxPrevious",t.stagingCtx),this.setBlockFieldObj(e,"stagingUiCtxPrevious",t.stagingUiCtx)),this.deleteBlockFields(e,"stagingOutput","stagingCtx","stagingUiCtx")&&this.resetStagingRefreshTimestamp()}resetProduction(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"&&((n=t.prodUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"prodOutputPrevious",t.prodOutput),this.setBlockFieldObj(e,"prodCtxPrevious",t.prodCtx),this.setBlockFieldObj(e,"prodUiCtxPrevious",t.prodUiCtx)),this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}resetOrLimboProduction(e){var r,o;const t=this.getBlockInfo(e).fields;return((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"?this.blocksInLimbo.has(e)?!1:(this.blocksInLimbo.add(e),this.renderingStateChanged=!0,this.deleteBlockFields(e,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),!0):this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}setArgs(e){const t=[];for(const{blockId:r,args:o}of e){const n=this.getBlockInfo(r);JSON.parse(o);const i=Buffer.from(o);if(Buffer.compare(n.fields.currentArgs.value,i)===0)continue;const a=this.tx.createValue(h.Pl.JsonObject,i);this.setBlockField(r,"currentArgs",a,"Ready",i),this.blocksWithChangedInputs.add(r),t.push(r)}this.getStagingGraph().traverse("downstream",t,({id:r})=>this.resetStaging(r)),t.length>0&&this.updateLastModified()}setUiState(e,t){if(this.blockInfos.get(e)===void 0)throw new Error("no such block");this.blockFrontendStates.get(e)!==t&&(t===void 0?this.blockFrontendStates.delete(e):this.blockFrontendStates.set(e,t),this.changedBlockFrontendStates.add(e),this.blocksWithChangedInputs.add(e),this.updateLastModified())}setBlockSettings(e,t){this.setBlockFieldObj(e,"blockSettings",this.createJsonFieldValue(t)),this.updateLastModified()}createProdCtx(e){const t=[];return e.forEach(r=>{var n;const o=this.getBlockInfo(r);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(h.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),Zt(this.tx,t)}createStagingCtx(e){const t=[];return e.forEach(r=>{var n,i;const o=this.getBlockInfo(r);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(h.Pl.unwrapHolder(this.tx,o.fields.stagingCtx.ref)),((i=o.fields.prodCtx)==null?void 0:i.ref)!==void 0&&t.push(h.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),Zt(this.tx,t)}exportCtx(e){return Co(this.tx,h.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=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(h.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(h.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",h.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"stagingUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"stagingOutput",n.result,"NotReady")}renderProductionFor(e){this.resetProduction(e);const t=this.getBlockInfo(e),r=this.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(h.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(h.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",h.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=Eo){const r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=bt(e),i=_e(e,u=>{var l;return(l=this.blockInfos.get(u))==null?void 0:l.actualProductionInputs}),a=sr(r,n),c=sr(o,i);for(const u of a.onlyInA){const{fields:l}=this.getBlockInfo(u);this.deleteBlockFields(u,...Object.keys(l)),this.blockInfos.delete(u),this.blocksInLimbo.delete(u)&&(this.renderingStateChanged=!0),this.blockFrontendStates.delete(u)&&this.changedBlockFrontendStates.add(u)}for(const u of a.onlyInB){const l=new or(u,{});this.blockInfos.set(u,l);const d=t(u),g=rr(this.tx,d.blockPack);this.setBlockField(u,"blockPack",h.Pl.wrapInHolder(this.tx,g),"NotReady"),this.setBlockFieldObj(u,"blockSettings",this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(u,"currentArgs",this.createJsonFieldValueByContent(d.args)),d.uiState&&(this.blockFrontendStates.set(u,d.uiState),this.changedBlockFrontendStates.add(u)),l.check()}for(const u of a.different)this.resetStaging(u);o.traverse("downstream",[...c.different],u=>{this.resetOrLimboProduction(u.id)}),(a.onlyInB.size>0||a.onlyInA.size>0||a.different.size>0)&&this.resetStagingRefreshTimestamp(),this.struct=e,this.structureChanged=!0,this.stagingGraph=void 0,this.pendingProductionGraph=void 0,this.actualProductionGraph=void 0,this.updateLastModified()}addBlock(e,t,r){const o=this.structure;if(r===void 0)o.groups[o.groups.length-1].blocks.push(e);else{let n=!1;for(const i of o.groups){const a=i.blocks.findIndex(c=>c.id===r);if(!(a<0)){i.blocks.splice(a,0,e),n=!0;break}}if(!n)throw new Error(`Can't find element with id: ${r}`)}this.updateStructure(o,n=>{if(n!==e.id)throw new Error("Unexpected");return t})}deleteBlock(e){const t=this.structure;let r=!1;for(const o of t.groups){const n=o.blocks.findIndex(i=>i.id===e);if(!(n<0)){o.blocks.splice(n,1),r=!0;break}}if(!r)throw new Error(`Can't find element with id: ${e}`);this.updateStructure(t)}migrateBlockPack(e,t,r){const o=this.getBlockInfo(e);this.setBlockField(e,"blockPack",h.Pl.wrapInHolder(this.tx,rr(this.tx,t)),"NotReady"),r!==void 0?(this.setArgs([{blockId:e,args:r}]),this.setUiState(e,void 0)):this.getStagingGraph().traverse("downstream",[e],({id:n})=>this.resetStaging(n)),o.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,a=>{r.add(a.id)});else for(const a of r){const c=o.nodes.get(a);if(c===void 0)throw new Error(`Can't find block with id: ${a}`);for(const u of c.upstream)if(!r.has(u))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const a of ce(this.structure)){if(!r.has(a.id))continue;let c=this.getBlockInfo(a.id).requireProductionRendering||this.blocksInLimbo.has(a.id);if(!c){for(const u of o.nodes.get(a.id).upstream)if(n.has(u)){c=!0;break}}c&&(this.renderProductionFor(a.id),n.add(a.id))}const i=[...n];return o.traverse("downstream",i,a=>{n.has(a.id)||this.resetOrLimboProduction(a.id)}),this.getStagingGraph().traverse("downstream",i,({id:a})=>{i[0]!==a&&this.resetStaging(a)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,a;const t=this.getActualProductionGraph(),r=new Nr(e),o=new Set(e),n=[];for(;!r.isEmpty();){const c=r.shift(),u=this.getBlockInfo(c).fields;if(!(((i=u.prodOutput)==null?void 0:i.status)==="Ready"&&((a=u.prodCtx)==null?void 0:a.status)==="Ready")&&this.deleteBlockFields(c,"prodOutput","prodCtx","prodUiCtx","prodArgs")){n.push(c);for(const l of t.traverseIdsExcludingRoots("downstream",c))o.has(l)||(r.push(l),o.add(l))}}for(const c of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(c)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(o=>{let i=this.getBlockInfo(o.id).stagingRendered?0:1;o.upstream.forEach(a=>{const c=t.get(a);c!==0&&(i=Math.max(c+1,i))}),e(o.id,i),t.set(o.id,i)})}refreshStagings(e){const t=Date.now()-this.renderingState.stagingRefreshTimestamp,r=e===void 0?void 0:1+Math.max(0,t*e/1e3);let o=0;this.traverseWithStagingLag((n,i)=>{i!==0&&(r===void 0||i<=r)&&(this.renderStagingFor(n),o++)}),o>0&&this.resetStagingRefreshTimestamp()}setMeta(e){this.meta=e,this.metaChanged=!0,this.updateLastModified()}doRefresh(e){this.refreshStagings(e),this.blockInfos.forEach(t=>{var r,o,n,i;((r=t.fields.prodCtx)==null?void 0:r.status)==="Ready"&&((o=t.fields.prodOutput)==null?void 0:o.status)==="Ready"&&this.deleteBlockFields(t.id,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),((n=t.fields.stagingCtx)==null?void 0:n.status)==="Ready"&&((i=t.fields.stagingOutput)==null?void 0:i.status)==="Ready"&&this.deleteBlockFields(t.id,"stagingOutputPrevious","stagingCtxPrevious","stagingUiCtxPrevious")})}assignAuthorMarkers(){const e=this.author?JSON.stringify(this.author):void 0;for(const t of this.blocksWithChangedInputs)e===void 0?this.tx.deleteKValue(this.rid,vt(t)):this.tx.setKValue(this.rid,vt(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,yt):this.tx.setKValue(this.rid,yt,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,Te,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,pe,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,He,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,Ie,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,mt(e)):this.tx.setKValue(this.rid,mt(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,Ur),i=e.getKValueJson(t,Te),a=e.getKValueJson(t,Ie),c=e.getKValueJson(t,pe),u=e.getKValueJson(t,He),l=e.listKeyValuesString(t),[d,g,f,E,m,{stagingRefreshTimestamp:x,blocksInLimbo:L},U]=await Promise.all([o,n,i,a,c,u,l]);if(g!==Jr)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${g}`);const I=new Map;for(const p of d.fields){const v=zs(p.name);if(v===void 0)continue;let S=I.get(v.blockId);S===void 0&&(S={id:v.blockId,fields:{}},I.set(v.blockId,S)),S.fields[v.fieldName]=h.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const M=await Qr(),he=St(M.hash),N=d.fields.find(p=>p.name===he);let Y;N!==void 0?Y=h.ensureResourceIdNotNull(N.value):(Y=h.Pl.wrapInHolder(e,Ye(e,M.spec)),e.createField(h.field(t,St(M.hash)),"Dynamic",Y));const ue={stagingRefreshTimestamp:x},z=new Set(L),_=new Map;for(const p of U){const v=Hs(p.key);v!==void 0&&_.set(v,p.value)}const J=[];I.forEach(({fields:p})=>{for(const[,v]of Object.entries(p))if(v.ref!==void 0){if(!h.isResource(v.ref)||h.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,h.isNotNullResourceId(S.error)?p.status="Error":S.resourceReady||h.isNotNullResourceId(S.originalResourceId)?p.status="Ready":p.status="NotReady"}const Q=new Map;I.forEach(({id:p,fields:v})=>Q.set(p,new or(p,v)));const fe=new Set;for(const p of ce(m)){if(!Q.has(p.id))throw new Error(`Inconsistent project structure: no inputs for ${p.id}`);fe.add(p.id)}Q.forEach(p=>{if(!fe.has(p.id))throw new Error(`Inconsistent project structure: no structure entry for ${p.id}`);p.check()});const y=new qe(t,e,r,g,f,E,m,ue,z,Q,_,Y);return y.fixProblemsAndMigrate(),y}}async function Ro(s,e=Js){const t=s.createEphemeral(Gs);s.lock(t);const r=String(Date.now());s.setKValue(t,Ur,JSON.stringify(Jr)),s.setKValue(t,$t,r),s.setKValue(t,Te,r),s.setKValue(t,Ie,JSON.stringify(e)),s.setKValue(t,pe,JSON.stringify(Vs)),s.setKValue(t,He,JSON.stringify(Us));const o=await Qr();return s.createField(h.field(t,St(o.hash)),"Dynamic",h.Pl.wrapInHolder(s,Ye(s,o.spec))),t}async function je(s,e,t){return te(s,e,void 0,t)}async function te(s,e,t,r){if(s instanceof h.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await qe.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await qe.load(s,e,t),n=await r(o);return o.save(),n}}function*ko(s){switch(s.type){case"Json":return;case"JsonPartitioned":for(const[,e]of Object.entries(s.parts))yield e;return;case"BinaryPartitioned":for(const[,{index:e,values:t}]of Object.entries(s.parts))yield e,yield t;return;default:k.assertNever(s)}}function nr(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function Oo(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:nr(s.parts,e)};case"BinaryPartitioned":return{...s,parts:nr(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:k.assertNever(s)}}const $o=h.resourceType("PColumnData/JsonPartitioned","1"),To=h.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),Io=h.resourceType("PColumnData/BinaryPartitioned","1"),Fo=h.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),Ao=h.resourceType("PColumnData/Json","1");function Do(s){if(!s.getIsReadyOrError())throw new Error("Data not ready.");const e=s.getDataAsJson();if(e===void 0)throw new Error("unexpected data info structure, no resource data");if(h.resourceTypesEqual(s.resourceType,Ao)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(h.resourceTypesEqual(s.resourceType,$o)){const t=e,r=Object.fromEntries(s.listInputFields().map(o=>[o,s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo]));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,To)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const a of i){const c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);r[c]=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}}return{type:"JsonPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,Io)){const t=e,r={};for(const o of s.listInputFields())if(o.endsWith(".index")){const n=o.slice(0,o.length-6);let i=r[n];i===void 0&&(i={},r[n]=i),i.index=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else if(o.endsWith(".values")){const n=o.slice(0,o.length-7);let i=r[n];i===void 0&&(i={},r[n]=i),i.values=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${o}`);for(const[o,n]of Object.entries(r)){if(n.index===void 0)throw new Error(`no index for part ${o}`);if(n.values===void 0)throw new Error(`no values for part ${o}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,Fo)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const a of i)if(a.endsWith(".index")){const c=a.slice(0,a.length-6),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=r[u];l===void 0&&(l={},r[u]=l),r[u].index=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else if(a.endsWith(".values")){const c=a.slice(0,a.length-7),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=r[u];l===void 0&&(l={},r[u]=l),r[u].values=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${a}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}throw new Error(`unsupported resource type: ${h.resourceTypeToString(s.resourceType)}`)}function Lo(s,e){const t=s.axesSpec.length,r={};for(const{key:o,val:n}of e){if(o.length!==t)throw new Error(`inline column key length ${o.length} differs from axes count ${t}`);r[JSON.stringify(o)]=n}return{type:"Json",keyLength:t,data:r}}function No(s,e){const t=se.createHash("sha256");return t.update(re(s)),t.update(String(h.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function ir(s,e){return re({__isRef:!0,blockId:s,name:e})}function Bo(s,e){return re({resolvePath:s,name:e})}function Zr(s,e=!0,t=!1,r=""){var a,c,u;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const l of s.listInputFields()){const d=l.match(o);if(!d){if(e)throw new Error(`unexpected field name ${l}`);continue}let g=k.notEmpty((a=d.groups)==null?void 0:a.name);if(!g.startsWith(r)){if(e)throw new Error(`unexpected field name ${l}`);continue}g=g.slice(r.length);const f=k.notEmpty((c=d.groups)==null?void 0:c.type);let E=n.get(g);switch(E===void 0&&(E={},n.set(g,E)),f){case"spec":E.spec=(u=s.traverse({field:l,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":E.hasData=!0,E.data=()=>s.traverseOrError({field:l,ignoreError:t});break}}const i=s.getInputsLocked();if(i)for(const[,l]of n)l.data===void 0&&(l.hasData=!1);return{locked:i,results:n}}function jo(s,e=!0,t="",r){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const o=Zr(s,e,!1,t);Es(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 Cs.parsePlError(c.error);n[i]={id:r.length===0?No(a.spec,c.value):Bo(r,i),spec:a.spec,data:c.value}}return n}class At{constructor(e,t){w(this,"allSpecsAvailable");this.ctx=e,this.blocks=t;let r=!0;e:for(const o of t.values())for(const n of[o.prod,o.staging])if(n!==void 0){if(!n.locked){r=!1;break e}for(const i of n.results.values())if(i.spec===void 0){r=!1;break e}}this.allSpecsAvailable=r}getSpecByRef(e,t){var n,i,a,c,u,l;const r=this.blocks.get(e);if(r===void 0)return;let o=(a=(i=(n=r.prod)==null?void 0:n.results)==null?void 0:i.get(t))==null?void 0:a.spec;if(o!==void 0||(o=(l=(u=(c=r.staging)==null?void 0:c.results)==null?void 0:u.get(t))==null?void 0:l.spec,o!==void 0))return o;r.staging===void 0?this.ctx.markUnstable(`staging_not_rendered:${e}`):r.staging.locked?r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`):this.ctx.markUnstable(`staging_not_locked:${e}`)}getDataOrErrorByRef(e,t){var i,a,c;const r=this.blocks.get(e);if(r===void 0)return;const o=(a=(i=r.prod)==null?void 0:i.results)==null?void 0:a.get(t),n=(c=o==null?void 0:o.data)==null?void 0:c.call(o);if(o!==void 0&&o.spec!==void 0&&n!==void 0)return D.mapValueInVOE(n,u=>({id:ir(e,t),spec:o.spec,data:u}));o!==void 0&&this.ctx.markUnstable(`no_data:${e}:${t}`),r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`)}getDataByRef(e,t){const r=this.getDataOrErrorByRef(e,t);if(!(r===void 0||!r.ok))return r.value}getData(){const e=this.getDataWithErrors(),t=[];for(const r of e.entries)r.obj.id!==void 0&&r.obj.data.ok&&t.push({ref:r.ref,obj:{id:r.obj.id,spec:r.obj.spec,data:r.obj.data.value}});return{entries:t,isComplete:e.isComplete,instabilityMarker:e.instabilityMarker}}getDataWithErrors(){const e=[];let t=!0,r;const o=i=>{r===void 0&&(r=i),t=!1},n=(i,a,c)=>{if(c.spec!==void 0&&c.hasData===!0&&c.data!==void 0){const u=c.data();u!==void 0?e.push({ref:Be(i,a),obj:{id:u.ok?ir(i,a):void 0,spec:c.spec,data:u}}):o(`no_data:${i}:${a}`)}};for(const[i,a]of this.blocks){const c=new Set;if(a.prod!==void 0){a.prod.locked||o(`prod_not_locked:${i}`);for(const[u,l]of a.prod.results)c.add(u),n(i,u,l)}if(a.staging!==void 0){a.staging.locked||o(`staging_not_locked:${i}`);for(const[u,l]of a.staging.results)c.has(u)||n(i,u,l)}}return{entries:e,isComplete:t,instabilityMarker:r}}getSpecs(){const e=[];let t=!0,r;const o=n=>{r===void 0&&(r=n),t=!1};for(const[n,i]of this.blocks){const a=new Set;if(i.staging!==void 0){i.staging.locked||o(`staging_not_locked:${n}`);for(const[c,u]of i.staging.results)u.spec!==void 0&&(e.push({ref:Be(n,c),obj:u.spec}),a.add(c))}else o(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||o(`prod_not_locked:${n}`);for(const[c,u]of i.prod.results)a.has(c)||u.spec!==void 0&&e.push({ref:Be(n,c),obj:u.spec})}}return{entries:e,isComplete:t,instabilityMarker:r}}calculateOptions(e){const t=[];for(const r of this.blocks.values()){const o=new Set,n=i=>{for(const[a,c]of i.results)o.has(a)||c.spec===void 0||(o.add(a),D.executePSpecPredicate(e,c.spec)&&t.push({label:r.info.label+" / "+a,ref:Be(r.info.id,a),spec:c.spec}))};r.staging!==void 0&&n(r.staging),r.prod!==void 0&&n(r.prod)}return t}static create(e,t,r){const o=e.accessor(t).node(),n=k.notEmpty(o.getKeyValueAsJson(pe)),a=bt(n).traverseIds("upstream",r),c=new Map;for(const u of ce(n)){if(!a.has(u.id))continue;const l=ar(o.traverse({field:G(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:G(u.id,"prodUiCtx"),stableIfNotFound:!0})),d=ar(o.traverse({field:G(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:G(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:l,staging:d})}return new At(e,c)}}function ar(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return Zr(e.value,!1,!0)}function Dt(s,e){return{blockId:e,args:n=>k.notEmpty(n.accessor(s).node().traverse({field:G(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),activeArgs:n=>{var i;return(i=n.accessor(s).node().traverse({field:G(e,"prodArgs"),stableIfNotFound:!0}))==null?void 0:i.getDataAsString()},uiState:n=>n.accessor(s).node().getKeyValueAsString(mt(e)),blockMeta:n=>{const i=n.accessor(s).node(),a=k.notEmpty(i.getKeyValueAsJson(pe)),c=new Map;for(const u of ce(a))c.set(u.id,u);return c}}}function es(s,e){return{...Dt(s,e),prod:t=>{var r;return(r=t.accessor(s).node({ignoreError:!0}).traverse({field:G(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:r.persist()},staging:t=>{var o;const r=(o=t.accessor(s).node({ignoreError:!0}).traverse({field:G(e,"stagingOutput"),ignoreError:!0}))==null?void 0:o.persist();return r===void 0&&t.markUnstable("staging_not_rendered"),r},getResultsPool:t=>At.create(t,s,e)}}function*X(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*X(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*X(t);return;case"MakeArray":for(const t of s.template)yield*X(t);return;case"GetJsonField":case"GetResourceField":yield*X(s.source),yield*X(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*X(s.source),yield*X(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"ExtractArchiveAndGetURL":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetProgressLogWithInfo":case"GetLogHandle":yield*X(s.source);return;case"IsEmpty":yield*X(s.arg);return;case"Not":yield*X(s.operand);return;case"And":case"Or":yield*X(s.operand1),yield*X(s.operand2);return;default:k.assertNever(s)}}function xo(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function Re(s,e){return s===void 0?void 0:e(s)}function Vo(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function Uo(s){for(const e of X(s))if(Vo(e))return!0;return!1}function Qe(s){return{type:"ReturnResult",result:s}}function O(s){return()=>Qe(s)}const Jo=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return O(e)},Go=s=>{const e=s.source;if(e===void 0)return O(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return O(t)},Mo=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?O(void 0):({cCtx:r})=>{var o;return Qe((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function ts(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function _o(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):()=>({type:"ScheduleSubroutine",subroutine:rs(r.length),args:ts(r,o=>$({...s,[e.itVar]:o},e.mapping))})}}function rs(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return O(t)}}function Ko(s,e){return t=>{const r=t.source;if(r===void 0)return O(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=$(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Ho,args:o})}}const Ho=s=>O(s),qo=s=>{const e=s.arg;return O(e===void 0?void 0:e.length===0)},Wo=s=>{const e=s.operand;return O(e===void 0?void 0:!e)},zo=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e&&t)},Xo=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e||t)},Yo=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t})=>{var r;return Qe((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},Qo=s=>{const e=s.source,t=s.field;return O(e===void 0||t===void 0?void 0:e[t])};function Zo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):({cCtx:o})=>{const n=o.accessor(r).node(),i={};for(const a of n.listInputFields()){const c=n.traverse(a);if(c===void 0)i[a]=O(void 0);else{const u={...s,[e.itVar]:c.persist()};i[a]=$(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:en,args:i}}}}const en=s=>O(s),tn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r!==void 0)return await t.blobDriver.getContent(r.handle)}})})},rn=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:B.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},sn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r==null)return;const o=await t.blobDriver.getContent(r.handle);if(o!=null)return JSON.parse(Buffer.from(o).toString())}})})},on=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},nn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},an=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.blobToURLDriver.extractArchiveAndGetURL(t,s)})},cn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},ln=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},un=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},dn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLogWithInfo(t,s)})},pn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function $(s,e){switch(e.type){case"GetFromCtx":{const t=s[e.variable];return typeof t=="function"?r=>Qe(t(r.cCtx)):O(t)}case"Isolate":return({drivers:t})=>({type:"ScheduleComputable",computable:ns(t,s,e.cfg)});case"Immediate":return O(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:Qo,args:{source:$(s,e.source),field:$(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:_o(s,e),args:{source:$(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Ko(s,e),args:{source:$(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:Jo,args:xo(e.template,t=>$(s,t))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:rs(e.template.length),args:ts(e.template,t=>$(s,t))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:Go,args:{source:$(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:qo,args:{arg:$(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Wo,args:{operand:$(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:zo,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:Xo,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:Zo(s,e),args:{source:$(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:Mo,args:{source:$(s,e.source),field:$(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Yo,args:{source:$(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:tn,args:{source:$(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:rn,args:{source:$(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:sn,args:{source:$(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:on,args:{source:$(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:nn,args:{source:$(s,e.source)}});case"ExtractArchiveAndGetURL":return()=>({type:"ScheduleSubroutine",subroutine:an(e.format),args:{source:$(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:cn,args:{source:$(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:ln(e.lines),args:{source:$(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:un(e.patternToSearch),args:{source:$(s,e.source)}});case"GetProgressLogWithInfo":return()=>({type:"ScheduleSubroutine",subroutine:dn(e.patternToSearch),args:{source:$(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:pn,args:{source:$(s,e.source)}});default:return k.assertNever(e)}}const hn=["$prod","$staging"];function fn(s){return{$blockId:s.blockId,$args:e=>JSON.parse(s.args(e)),$ui:e=>{const t=s.uiState(e);return t!==void 0?JSON.parse(t):void 0},$prod:s.prod,$staging:s.staging}}const ss=Symbol(),os="return",gn={op:ss,arg:os};function mn(s){return s.op==ss&&s.arg==os}function vn(){return{pendingSubroutines:new Map}}function cr(s,e,t,r){const o=new Nr(t),n=(a,c)=>{if(mn(a))return e.result=c,!1;const u=k.notEmpty(e.pendingSubroutines.get(a.op));if(a.arg in u.args)throw new Error("argument already set");return u.args[a.arg]=c,u.argCounter--,u.argCounter===0&&(e.pendingSubroutines.delete(a.op),o.push({destination:u.destination,operation:u.subroutine(u.args)})),!0},i=[];e:for(;o.length>0;){const a=o.shift(),c=a.operation(s);switch(c.type){case"ReturnResult":if(!n(a.destination,c.result))break e;break;case"ScheduleSubroutine":{const u=Symbol(),l=Object.entries(c.args),d=l.length;if(d===0)o.push({destination:a.destination,operation:c.subroutine({})});else{for(const[g,f]of l)o.push({destination:{op:u,arg:g},operation:f});e.pendingSubroutines.set(u,{argCounter:d,args:{},subroutine:c.subroutine,destination:a.destination})}}break;case"ScheduleComputable":if(!r)throw new Error("asynchronous operations are forbidden in this context");i.push({destination:a.destination,computable:c.computable});break;default:k.assertNever(c)}}return i}function yn(s,e,t,r={}){return ns(s,fn(e),t,r)}function ns(s,e,t,r={}){const o=`${e.blockId}#`+re({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>hn.indexOf(n)===-1)),cfg:t});return B.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=vn();return{ir:cr(i,a,[{destination:gn,operation:$(e,t)}],!0),postprocessValue(u){const l=[];for(const E of u)l.push({destination:E.destination,operation:O(E.computable)});const d={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},g=new Map;for(const[E,m]of a.pendingSubroutines)g.set(E,{...m,args:{...m.args}});const f={result:a.result,pendingSubroutines:g};if(cr(d,f,l,!1),!("result"in f))throw new Error("illegal cfg rendering stack state, no result");return f.result}}},{...r,key:o})}function Sn(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function lr(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class We{constructor(e,t,r,o,n){w(this,"callbackRegistry");w(this,"fnJSONStringify");w(this,"fnJSONParse");w(this,"computablesToResolve",{});w(this,"computableCtx");w(this,"accessors",new Map);w(this,"meta");w(this,"errorRepo",new wn);w(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=r,this.env=o,this.computableCtx=n,this.callbackRegistry=this.scope.manage(this.vm.newObject()),this.fnJSONStringify=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"stringify"))),t.typeof(this.fnJSONStringify)!=="function")throw new Error("JSON.stringify() not found.");if(this.fnJSONParse=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"parse"))),t.typeof(this.fnJSONParse)!=="function")throw new Error("JSON.parse() not found.");this.meta=r.blockMeta(n),this.injectCtx()}resetComputableCtx(){this.computableCtx=void 0,this.accessors.clear()}static cleanErrorContext(e){typeof e=="object"&&e!==null&&"context"in e&&delete e.context}evaluateBundle(e){try{this.vm.unwrapResult(this.vm.evalCode(e,"bundle.js",{type:"global"})).dispose()}catch(t){throw We.cleanErrorContext(t),t}}runCallback(e,...t){try{return $e.Scope.withScope(r=>{const o=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(o)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(o,this.vm.undefined,...t.map(n=>this.exportObjectUniversal(n,r)))))})}catch(r){throw We.cleanErrorContext(r),this.errorRepo.getOriginal(r)}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(r,o)=>{if(!this.accessors.has(r)){const n=this.blockCtx[o];if(n===void 0)throw new Error("Staging context not available");const i=n(this.computableCtx);i?this.accessors.set(r,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(r,void 0)}return this.accessors.get(r)?r:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...r){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...r))}getResourceType(e){return this.getAccessor(e).resourceType}getInputsLocked(e){return this.getAccessor(e).getInputsLocked()}getOutputsLocked(e){return this.getAccessor(e).getOutputsLocked()}getIsReadyOrError(e){return this.getAccessor(e).getIsReadyOrError()}getIsFinal(e){return this.getAccessor(e).getIsFinal()}getError(e){return this.wrapAccessor(this.getAccessor(e).getError())}listInputFields(e){return this.getAccessor(e).listInputFields()}listOutputFields(e){return this.getAccessor(e).listOutputFields()}listDynamicFields(e){return this.getAccessor(e).listDynamicFields()}getKeyValueBase64(e,t){return lr(this.getAccessor(e).getKeyValue(t))}getKeyValueAsString(e,t){return this.getAccessor(e).getKeyValueAsString(t)}getDataBase64(e){return lr(this.getAccessor(e).getData())}getDataAsString(e){return this.getAccessor(e).getDataAsString()}parsePObjectCollection(e,t,r,...o){const n=this.getAccessor(e);if(!n.getIsReadyOrError())return;const i=jo(n,t,r,o),a={};for(const[c,u]of Object.entries(i))a[c]=D.mapPObjectData(u,l=>this.wrapAccessor(l));return a}registerComputable(e,t){const r=`${e}_${se.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",B.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("utf-8")}}))}getBlobContentAsBase64(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsBase64",B.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("base64")}}))}getDownloadedBlobContentHandle(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getDownloadedBlobContentHandle",this.env.driverKit.blobDriver.getDownloadedBlob(t))}getOnDemandBlobContentHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getOnDemandBlobContentHandle",this.env.driverKit.blobDriver.getOnDemandBlob(t))}extractArchiveAndGetURL(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("extractArchiveAndGetURL",this.env.driverKit.blobToURLDriver.extractArchiveAndGetURL(r,t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(r,t))}getProgressLog(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(r,t))}getProgressLogWithInfo(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLogWithInfo",this.env.driverKit.logDriver.getProgressLogWithInfo(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=k.notEmpty(this.blockCtx.getResultsPool,"getResultsPool")(this.computableCtx)}return this._resultPool}calculateOptions(e){return this.resultPool.calculateOptions(e)}getDataFromResultPool(){const e=this.resultPool.getData();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:D.mapPObjectData(t.obj,r=>this.wrapAccessor(r))}))}}getDataWithErrorsFromResultPool(){const e=this.resultPool.getDataWithErrors();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:{id:t.obj.id,spec:t.obj.spec,data:D.mapValueInVOE(t.obj.data,r=>this.wrapAccessor(r))}}))}}getSpecsFromResultPool(){const e=this.resultPool.getSpecs();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`specs_from_pool_incomplete:${e.instabilityMarker}`),e}getSpecFromResultPoolByRef(e,t){return this.resultPool.getSpecByRef(e,t)}getDataFromResultPoolByRef(e,t){return D.mapPObjectData(this.resultPool.getDataByRef(e,t),r=>this.wrapAccessor(r))}createPFrame(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PFrames from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPFrame(e.map(t=>D.mapPObjectData(t,r=>this.transformInputPData(r))),this.computableCtx)}createPTable(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PTable from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPTable(D.mapPTableDef(e,t=>D.mapPObjectData(t,r=>this.transformInputPData(r))),this.computableCtx)}transformInputPData(e){return typeof e=="string"?this.getAccessor(e):D.isDataInfo(e)?D.mapDataInfo(e,t=>this.getAccessor(t)):e}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=se.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const r=this.tryExportSingleValue(e,t);if(r===void 0)throw new Error(`Can't export value: ${e===void 0?"undefined":JSON.stringify(e)}`);return r}tryExportSingleValue(e,t){let r,o=!1;switch(typeof e){case"string":r=this.vm.newString(e),o=!0;break;case"number":r=this.vm.newNumber(e),o=!0;break;case"undefined":r=this.vm.undefined;break;case"boolean":r=e?this.vm.true:this.vm.false;break;default:if(e===null){r=this.vm.null;break}if(Sn(e)){r=this.vm.newArrayBuffer(e),o=!0;break}return}return o&&t!=null?t.manage(r):r}exportObjectUniversal(e,t){const r=this.tryExportSingleValue(e,t);return r!==void 0?r:this.exportObjectViaJson(e,t)}exportObjectViaJson(e,t){const r=this.vm.newString(JSON.stringify(e)).consume(o=>this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse,this.vm.undefined,o)));return t!==void 0?t.manage(r):r}importObjectUniversal(e){switch(this.vm.typeof(e)){case"undefined":return;case"boolean":case"number":case"string":return this.vm.dump(e);default:return this.importObjectViaJson(e)}}importObjectViaJson(e){const t=this.vm.unwrapResult(this.vm.callFunction(this.fnJSONStringify,this.vm.undefined,e)).consume(r=>this.vm.getString(r));if(t!=="undefined")return JSON.parse(t)}injectCtx(){$e.Scope.withScope(e=>{const t=e.manage(this.vm.newObject()),r=this.blockCtx.args(this.computableCtx),o=this.blockCtx.activeArgs(this.computableCtx),n=this.blockCtx.uiState(this.computableCtx);this.vm.setProp(t,"args",e.manage(this.vm.newString(r))),n!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(n))),o!==void 0&&this.vm.setProp(t,"activeArgs",e.manage(this.vm.newString(o))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry),this.vm.setProp(t,"featureFlags",this.exportObjectUniversal(D.JsRenderInternal.GlobalCfgRenderCtxFeatureFlags,e));const i=(a,c)=>{const u=(...l)=>{try{return c(...l)}catch(d){const g=this.errorRepo.setAndRecreateForQuickJS(d);throw this.vm.newError(g)}};this.vm.newFunction(a,u).consume(l=>this.vm.setProp(t,a,l)),this.vm.newFunction(a,c).consume(l=>this.vm.setProp(t,a+"__internal__",l))};i("getAccessorHandleByName",a=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(a)),void 0)),i("resolveWithCommon",(a,c,...u)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(a),this.importObjectViaJson(c),...u.map(l=>this.importObjectViaJson(l))),void 0)),i("getResourceType",a=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(a)),void 0)),i("getInputsLocked",a=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(a)),void 0)),i("getOutputsLocked",a=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(a)),void 0)),i("getIsReadyOrError",a=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(a)),void 0)),i("getIsFinal",a=>this.exportSingleValue(this.getIsFinal(this.vm.getString(a)),void 0)),i("getError",a=>this.exportSingleValue(this.getError(this.vm.getString(a)),void 0)),i("listInputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listOutputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listDynamicFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("getKeyValueBase64",(a,c)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getKeyValueAsString",(a,c)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataBase64",a=>this.exportSingleValue(this.getDataBase64(this.vm.getString(a)),void 0)),i("getDataAsString",a=>this.exportSingleValue(this.getDataAsString(this.vm.getString(a)),void 0)),i("parsePObjectCollection",(a,c,u,...l)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(a),this.vm.dump(c),this.vm.getString(u),...l.map(d=>this.vm.getString(d))),void 0)),i("getBlobContentAsBase64",a=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(a)),void 0)),i("getBlobContentAsString",a=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(a)),void 0)),i("getDownloadedBlobContentHandle",a=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(a)),void 0)),i("getOnDemandBlobContentHandle",a=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(a)),void 0)),i("extractArchiveAndGetURL",(a,c)=>this.exportSingleValue(this.extractArchiveAndGetURL(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getImportProgress",a=>this.exportSingleValue(this.getImportProgress(this.vm.getString(a)),void 0)),i("getLastLogs",(a,c)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(a),this.vm.getNumber(c)),void 0)),i("getProgressLog",(a,c)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getProgressLogWithInfo",(a,c)=>this.exportSingleValue(this.getProgressLogWithInfo(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getLogHandle",a=>this.exportSingleValue(this.getLogHandle(this.vm.getString(a)),void 0)),i("getBlockLabel",a=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(a)),void 0)),i("getDataFromResultPool",()=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),i("getDataWithErrorsFromResultPool",()=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),i("getSpecsFromResultPool",()=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),i("calculateOptions",a=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(a)),void 0)),i("getSpecFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getSpecFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getDataFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("createPFrame",a=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(a)),void 0)),i("createPTable",a=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(a)),void 0)),i("getCurrentUnstableMarker",()=>this.exportSingleValue(this.getCurrentUnstableMarker(),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}class wn{constructor(){w(this,"errorIdToError",new Map)}setAndRecreateForQuickJS(e){const t=se.randomUUID();return this.errorIdToError.set(t,e),e instanceof Error?{name:`${e.name}/uuid:${t}`,message:e.message}:{name:`UnknownErrorQuickJS/uuid:${t}`,message:`${e}`}}getOriginal(e){if(!(e instanceof $e.errors.QuickJSUnwrapError))return console.warn("ErrorRepo: quickJSError is not a QuickJSUnwrapError",h.stringifyWithResourceId(e)),e;if(!("name"in e.cause))return console.warn("ErrorRepo: quickJSError.cause is not an Error",h.stringifyWithResourceId(e)),e;const t=e.cause.name,r=t.slice(t.indexOf("/uuid:")+6);if(!r)throw new Error(`ErrorRepo: quickJSError.cause.name does not contain errorId: ${t}, ${h.stringifyWithResourceId(e)}`);const o=this.errorIdToError.get(r);if(o===void 0)throw new Error(`ErrorRepo: errorId not found: ${r}, ${h.stringifyWithResourceId(e)}`);return new bn(e,o)}}class bn extends Error{constructor(t,r){var o;super("",{cause:r});w(this,"stack");this.name="ModelError",this.stack=((o=t.stack)==null?void 0:o.replace(t.message,""))??"",this.stack=this.stack.replace(r.message,""),this.message=this.toString()}toString(){var r;return`ModelError: ${(r=this.cause)==null?void 0:r.message}
|
|
1
|
+
"use strict";var ps=Object.defineProperty;var hs=(s,e,t)=>e in s?ps(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var w=(s,e,t)=>hs(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("@platforma-sdk/model"),K=require("@milaboratories/pl-model-middle-layer"),Jt=require("@milaboratories/pl-deployments"),He=require("undici"),H=require("@platforma-sdk/block-tools"),Z=require("node:fs"),q=require("node:path"),fs=require("yaml"),k=require("@milaboratories/ts-helpers"),pt=require("node:fs/promises"),gs=require("@milaboratories/resolve-helper"),h=require("@milaboratories/pl-client"),Je=require("@milaboratories/pl-tree"),B=require("@milaboratories/computable"),se=require("node:crypto"),j=require("@milaboratories/pl-model-backend"),$r=require("lru-cache"),Tr=require("denque"),ms=require("@platforma-sdk/workflow-tengo"),re=require("canonicalize"),vs=require("@milaboratories/pl-errors"),ys=require("node:assert"),Oe=require("quickjs-emscripten"),Ir=require("node:timers/promises"),ee=require("@milaboratories/pl-drivers"),Ss=require("@milaboratories/pframes-rs-node"),bs=require("node:diagnostics_channel");function ws(s){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:()=>s[t]})}}return e.default=s,Object.freeze(e)}const Fr=ws(pt);async function Mt(s){try{return await Fr.stat(s,{bigint:!0})}catch(e){if(e.code==="ENOENT")return;throw e}}const Ps=[H.RegistryV1.PlPackageYamlConfigFile],Es=[H.RegistryV1.PlPackageJsonConfigFile],Pt=["backend","dist","tengo","tpl","main.plj.gz"],Et=["config","dist","config.json"],Ar=["frontend","dist"],_t="block-model/dist/config.json",Cs="block-ui/package.json",Rs=[Pt,Et,Ps,Es,Ar];async function ks(s){return await Mt(q.join(s,...Et))!==void 0||await Mt(q.join(s,...Pt))!==void 0}function st(s,e){const t=gs.tryResolve(s,e);if(t===void 0)throw new Error(`Can't resolve ${e} against ${s}`);return t}async function Kt(s,e){if(q.isAbsolute(s)||(s=q.resolve(s)),await ks(s))return{workflow:q.join(s,...Pt),config:q.join(s,...Et),ui:q.join(s,...Ar)};{const t=st(s,_t),r=st(s,_t),o=st(s,Cs);return{workflow:t,config:r,ui:q.resolve(o,"..","dist")}}}async function Os(s){try{return await Z.promises.readFile(s,"utf8")}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function $s(s){try{return await Z.promises.stat(s,{bigint:!0})}catch(e){if(e instanceof Error&&"code"in e&&e.code==="ENOENT")return;throw e}}async function Ct(s){let e=0n;for(const t of Rs){const r=q.join(s,...t),o=await $s(r);o!==void 0&&e<o.mtimeNs&&(e=o.mtimeNs)}return e.toString()}async function qe(s){const e=await Z.promises.stat(s.components.workflow.main.file,{bigint:!0}),t=await Z.promises.stat(s.components.model.file,{bigint:!0});return(e.mtimeNs>t.mtimeNs?e.mtimeNs:t.mtimeNs).toString()}class Ts{constructor(e,t,r){this.v2Provider=e,this.registries=t,this.http=r}async getPackagesForRoot(e){const t=[],r=e.spec;switch(r.type){case"remote-v1":{const o=this.http!==void 0?{dispatcher:this.http}:{},i=await(await He.request(`${r.url}/${H.RegistryV1.GlobalOverviewPath}`,o)).body.json();for(const a of i){const{organization:c,package:u,latestMeta:l,latestVersion:d}=a,g={organization:c,name:u,version:d},f={id:g,meta:{title:l.title??"No title",description:l.description??"No Description",organization:{name:c,url:"https://unknown.com"}},spec:{type:"from-registry-v1",id:g,registryUrl:r.url}};t.push({registryId:e.id,id:g,latestByChannel:{[K.AnyChannel]:f,[K.StableChannel]:f},allVersions:a.allVersions.map(C=>({version:C,channels:[]}))})}return t}case"remote-v2":return(await this.v2Provider.getRegistry(r.url).listBlockPacks()).map(o=>({...o,registryId:e.id}));case"local-dev":for(const o of await Z.promises.readdir(r.path,{withFileTypes:!0})){if(!o.isDirectory())continue;const n=q.join(r.path,o.name),i=await Os(q.join(n,H.RegistryV1.PlPackageYamlConfigFile));if(i!==void 0){const a=H.RegistryV1.PlPackageConfigData.parse(fs.parse(i)),c=await Ct(n),u={organization:a.organization,name:a.package,version:"DEV"},l={id:u,meta:{title:a.meta.title??"No title",description:a.meta.description??"No Description",organization:{name:a.organization,url:"https://unknown.com"}},spec:{type:"dev-v2",folder:n,mtime:c}};t.push({registryId:e.id,id:u,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}else{let a=n,c=await H.tryLoadPackDescription(a);if(c===void 0){for(const u of["block","meta"])if(a=q.join(n,u),c=await H.tryLoadPackDescription(a),c!==void 0)break}if(c!==void 0){const u=await qe(c),l={id:c.id,meta:await H.BlockPackMetaEmbedAbsoluteBytes.parseAsync(c.meta),spec:{type:"dev-v2",folder:a,mtime:u}};t.push({registryId:e.id,id:c.id,latestByChannel:{[K.AnyChannel]:l,[K.StableChannel]:l},allVersions:[]})}}}return t;default:return k.assertNever(r)}}async listBlockPacks(){const e=[],t=[];for(const r of this.registries)t.push({...r,status:"online"}),e.push(...await this.getPackagesForRoot(r));return{registries:t,blockPacks:e}}async getOverview(e,t,r){var i;const o=(i=this.registries.find(a=>a.id===e))==null?void 0:i.spec;if(!o)throw new Error(`Registry with id "${e}" not found`);if(o.type!=="remote-v2")throw new Error('Only "remote-v2" registries support specific package version overview retrieval.');return await this.v2Provider.getRegistry(o.url).getSpecificOverview(t,r)}}class Lr{constructor(e){w(this,"registries",new Map);this.http=e}getRegistry(e){const t=this.registries.get(e);if(t)return t;const r=new H.RegistryV2Reader(H.folderReaderByUrl(e,this.http));return this.registries.set(e,r),r}}const Is={type:"remote-v2",url:"https://blocks.pl-open.science/"},Fs={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"},Dr="SchemaVersion",Nr="1",Rt="ProjectCreated",$e="ProjectLastModified",Te="ProjectMeta",de="ProjectStructure",Me="BlockRenderingState",js="BlockFrontendState/",xs=/^BlockFrontendState\/(?<blockid>.*)$/;function ht(s){return`${js}${s}`}const Vs="BlockArgsAuthor/";function ft(s){return`${Vs}${s}`}const gt="ProjectStructureAuthor";function Us(s){const e=s.match(xs);if(e!==null)return e.groups.blockid}const Gs="__serviceTemplate_";function mt(s){return`${Gs}${s}`}function J(s,e){return`${s}-${e}`}const Js=/^(?<blockId>.*)-(?<fieldName>blockPack|blockSettings|prodArgs|currentArgs|prodCtx|prodUiCtx|prodOutput|prodCtxPrevious|prodUiCtxPrevious|prodOutputPrevious|stagingCtx|stagingUiCtx|stagingOutput|stagingCtxPrevious|stagingUiCtxPrevious|stagingOutputPrevious)$/;function Ms(s){const e=s.match(Js);if(e===null)return;const{blockId:t,fieldName:r}=e.groups;return{blockId:t,fieldName:r}}const _s="projects",Br={name:"Projects",version:"1"},Ks=s=>h.resourceTypesEqual(s.type,Br)?s.fields:[];async function Hs(s,e,t,r){const o=await Je.SynchronizedTreeState.init(s,e,{...r.ops.defaultTreeOptions,pruning:Ks},r.logger);return{computable:B.Computable.make(i=>{const a=i.accessor(o.entry()).node(),c=t.getValue(i);if(a===void 0)return;const u=[];for(const l of a.listDynamicFields()){const d=a.traverse(l);if(d===void 0)continue;const g=k.notEmpty(d.getKeyValueAsJson(Te)),f=k.notEmpty(d.getKeyValueAsJson(Rt)),C=k.notEmpty(d.getKeyValueAsJson($e));u.push({id:l,rid:d.id,created:new Date(f),lastModified:new Date(C),opened:c.indexOf(d.id)>=0,meta:g})}return u.sort(l=>-l.lastModified.valueOf()),u}).withStableType(),tree:o}}const qs={name:"EphRenderTemplate",version:"1"},Ws={name:"RenderTemplate",version:"1"};function kt(s,e,t,r,o){if(o.length===0)throw new Error("Zero output names provided");const n=t?s.createEphemeral(qs):s.createStruct(Ws),i=h.field(n,"template"),a=h.field(n,"inputs");return s.createField(i,"Input",e),s.createField(a,"Input",h.Pl.createPlMap(s,r,t)),s.lockInputs(n),h.Pl.futureRecord(s,n,o,"Output","outputs/")}const zs={name:"BContextEnd",version:"1"},Xs={name:"BContext",version:"1"},Ys="id",Qs="parent/",Zs=["context","result"];function Ht(s,e,t){return kt(s,e,!0,t,Zs)}function eo(s){const e=s.createEphemeral(zs);return s.lock(e),e}function qt(s,e){if(e.length===0)return eo(s);if(e.length===1)return e[0];const t=s.createEphemeral(Xs);s.createField(h.field(t,Ys),"Input",h.Pl.createPlString(s,se.randomUUID()));for(let r=0;r<e.length;r++)s.createField(h.field(t,`${Qs}${r}`),"Input",e[r]);return s.lock(t),t}function to(s,e){const t=j.parseTemplate(e.content),r=t.type;switch(r){case"pl.tengo-template.v2":return ro(s,t);default:k.assertNever(r)}}const Wt={hash(s,e){e.update(j.PlTemplateLibV1.type.name).update(j.PlTemplateLibV1.type.version).update(s.name).update(s.version).update(s.src)},render(s,e,t){return e.createValue(j.PlTemplateLibV1.type,JSON.stringify(j.PlTemplateLibV1.fromV2Data(s).data))}},Fe={hash(s,e){e.update(j.PlTemplateSoftwareV1.type.name).update(j.PlTemplateSoftwareV1.type.version).update(s.name).update(s.version).update(s.src)},render(s,e,t){const r=j.PlTemplateSoftwareV1.fromV2Data(s),o=e.createStruct(j.PlTemplateSoftwareV1.type,r.data);return e.setKValue(o,j.PlTemplateSoftwareV1.metaNameKey,JSON.stringify(r.name)),e.lock(o),o}},jr={hash(s,e){e.update(j.PlTemplateV1.type.name).update(j.PlTemplateV1.type.version).update(s.hashOverride??"no-override").update(s.name).update(s.version).update(s.src);const t=r=>(r.sort((o,n)=>o[0]===n[0]?0:o[0]<n[0]?-1:1),r);for(const[r,o]of t(Object.entries(s.libs??{})))e.update("lib:"+r),Wt.hash(o,e);for(const[r,o]of t(Object.entries(s.software??{})))e.update("soft:"+r),Fe.hash(o,e);for(const[r,o]of t(Object.entries(s.assets??{})))e.update("asset:"+r),Fe.hash(o,e);for(const[r,o]of t(Object.entries(s.templates??{})))e.update("tpl:"+r),this.hash(o,e)},render(s,e,t){const r=e.createStruct(j.PlTemplateV1.type,JSON.stringify(j.PlTemplateV1.fromV2Data(s).data));for(const[i,a]of Object.entries(s.libs??{})){const c=j.PlTemplateV1.libField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Wt))}for(const[i,a]of Object.entries(s.software??{})){const c=j.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Fe))}for(const[i,a]of Object.entries(s.assets??{})){const c=j.PlTemplateV1.swField(r,i);e.createField(c,"Input"),e.setField(c,t(a,Fe))}for(const[i,a]of Object.entries(s.templates??{})){const c=j.PlTemplateV1.tplField(r,i);e.createField(c,"Input"),e.setField(c,t(a,jr))}if(e.lock(r),!s.hashOverride)return r;const o=e.createStruct(j.PlTemplateOverrideV1.type,JSON.stringify(j.PlTemplateOverrideV1.fromV2Data(s))),n=j.PlTemplateOverrideV1.tplField(o);return e.createField(n,"Service"),e.setField(n,r),e.lock(o),o}};function ro(s,e){const t=new Map,r=(o,n)=>{const i=se.createHash("sha256");n.hash(o,i);const a=i.digest("hex");if(!t.has(a)){const c=n.render(o,s,r);t.set(a,c)}return t.get(a)};return r(e,jr)}const xr={name:"TengoTemplateGet",version:"1"},Vr="registry",Ur="templateURI",Gr="template",so={name:"TengoTemplatePack",version:"1"},oo={name:"TengoTemplatePackConvert",version:"1"},no="templatePack",io="template";async function Jr(s){switch(s.type){case"from-file":return{type:"explicit",content:await Z.promises.readFile(s.path)};case"from-registry":case"explicit":return s;default:return k.assertNever(s)}}function ao(s,e){const t=s.createStruct(xr),r=h.field(t,Vr),o=h.field(t,Ur),n=h.field(t,Gr);return s.setField(r,s.createValue(h.Pl.JsonString,Buffer.from(JSON.stringify(e.registry)))),s.setField(o,s.createValue(h.Pl.JsonString,Buffer.from(JSON.stringify(e.path)))),n}function We(s,e){switch(e.type){case"from-registry":return ao(s,e);case"explicit":return to(s,e);default:return k.assertNever(e)}}const Ot={name:"Frontend/FromUrl",version:"1"},$t={name:"Frontend/FromFolder",version:"1"};function co(s,e){switch(e.type){case"url":return s.createValue(Ot,JSON.stringify({url:e.url}));case"local":return s.createValue($t,JSON.stringify({path:e.path,signature:e.signature}));default:return k.assertNever(e)}}const lo={name:"BlockPackCustom",version:"1"},Mr="template",_r="frontend";function zt(s){return s.endsWith("/")?s:`${s}/`}function uo(s){return Buffer.from(s).toString("utf8")}function Ae(s){return JSON.parse(uo(s))}class po{constructor(e,t,r){w(this,"remoteContentCache",new $r.LRUCache({max:500,maxSize:128*1024*1024,fetchMethod:async e=>{const t=this.http!==void 0?{dispatcher:this.http}:{};return await(await He.request(e,t)).body.arrayBuffer()},sizeCalculation:e=>e.byteLength}));this.v2RegistryProvider=e,this.signer=t,this.http=r}async getBlockConfigContainer(e){switch(e.type){case"explicit":return e.config;case"dev-v1":{const t=await Kt(e.folder),r=await Z.promises.readFile(t.config,{encoding:"utf-8"});return JSON.parse(r)}case"dev-v2":{const t=await H.loadPackDescription(e.folder),r=await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"});return JSON.parse(r)}case"from-registry-v1":{const t=`${zt(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,r=await this.remoteContentCache.forceFetch(`${t}/config.json`);return Ae(r)}case"from-registry-v2":{const r=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=await this.remoteContentCache.forceFetch(r.model.url);return Ae(o)}default:return k.assertNever(e)}}async prepare(e){switch(e.type){case"explicit":return e;case"dev-v1":{const t=await Kt(e.folder),r=await Z.promises.readFile(t.workflow),o=JSON.parse(await Z.promises.readFile(t.config,"utf-8")),n=t.ui;return{type:"explicit",template:{type:"explicit",content:r},config:o,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:e}}case"dev-v2":{const t=await H.loadPackDescription(e.folder),r=JSON.parse(await Z.promises.readFile(t.components.model.file,{encoding:"utf-8"})),o=await Z.promises.readFile(t.components.workflow.main.file),n=t.components.ui.folder,i={...e};return e.mtime===void 0&&(i.mtime=await qe(t)),{type:"explicit",template:{type:"explicit",content:o},config:r,frontend:{type:"local",path:n,signature:this.signer.sign(n)},source:i}}case"from-registry-v1":{const t=`${zt(e.registryUrl)}${H.RegistryV1.packageContentPrefix({organization:e.id.organization,package:e.id.name,version:e.id.version})}`,r=`${t}/template.plj.gz`,o=await this.remoteContentCache.forceFetch(r),n=new Uint8Array(o),i=await this.remoteContentCache.forceFetch(`${t}/config.json`),a=Ae(i);return{type:"explicit",template:{type:"explicit",content:n},config:a,frontend:{type:"url",url:`${t}/frontend.tgz`},source:e}}case"from-registry-v2":{const r=await this.v2RegistryProvider.getRegistry(e.registryUrl).getComponents(e.id),o=async()=>Ae(await this.remoteContentCache.forceFetch(r.model.url)),n=async()=>await this.remoteContentCache.forceFetch(r.workflow.main.url),[i,a]=await Promise.all([o(),n()]);return{type:"explicit",template:{type:"explicit",content:Buffer.from(a)},config:i,frontend:{type:"url",url:r.ui.url},source:e}}default:return k.assertNever(e)}}}function ho(s,e){const t={config:e.config,source:e.source},r=s.createStruct(lo,JSON.stringify(t));return s.createField(h.field(r,Mr),"Input",We(s,e.template)),s.createField(h.field(r,_r),"Input",co(s,e.frontend)),s.lock(r),r}function Xt(s,e){switch(e.type){case"explicit":return ho(s,e);default:return k.assertNever(e.type)}}function Le(s,e){return{__isRef:!0,blockId:s,name:e}}function fo(s){return typeof s=="object"&&s!==null&&"__isRef"in s&&s.__isRef===!0&&"blockId"in s&&"name"in s}function vt(s,e,t){const r=typeof e;switch(r){case"function":case"bigint":case"number":case"string":case"boolean":case"symbol":case"undefined":return;case"object":if(e===null)return;if(fo(e))t===void 0||t.has(e.blockId)?s.upstreams.add(e.blockId):s.missingReferences=!0;else if(Array.isArray(e))for(const o of e)vt(s,o,t);else for(const[,o]of Object.entries(e))vt(s,o,t);return;default:k.assertNever(r)}}function go(s,e){const t={upstreams:new Set,missingReferences:!1};return vt(t,s,e),t}function ae(s){return{*[Symbol.iterator](){for(const e of s.groups)for(const t of e.blocks)yield t}}}class Kr{constructor(e){w(this,"nodes");this.nodes=e}traverseIds(e,...t){const r=new Set;return this.traverse(e,t,o=>r.add(o.id)),r}traverseIdsExcludingRoots(e,...t){const r=this.traverseIds(e,...t);for(const o of t)r.delete(o);return r}traverse(e,t,r){let o=[...t];const n=new Set(o);for(;o.length>0;){const i=[];for(const a of o){const c=this.nodes.get(a);r(c),c[e].forEach(u=>{n.has(u)||(n.add(u),i.push(u))})}o=i}}}function yt(s){const e=new Map;let t;for(const{id:r}of ae(s)){const o={id:r,missingReferences:!1};e.set(r,o),t===void 0?o.upstream=new Set:(o.upstream=new Set([t.id]),t.downstream=new Set([o.id])),t=o}return t!==void 0&&(t.downstream=new Set),new Kr(e)}function Ge(s,e){const t=new Map,r=new Set;for(const{id:o}of ae(s)){const n=e(o);if(n===void 0)continue;const i=go(n,r),a={id:o,missingReferences:i.missingReferences,upstream:i.upstreams,downstream:new Set};t.set(o,a),i.upstreams.forEach(c=>t.get(c).downstream.add(o)),r.add(o)}return new Kr(t)}function mo(s,e){if(s.size!==e.size)return!1;for(const t of s)if(!e.has(t))return!1;return!0}function St(s,e){if(s.size>e.size)return St(e,s);for(const t of s)if(e.has(t))return!0;return!1}function Yt(s,e){const t=new Set,r=new Set,o=new Set;return s.nodes.forEach(n=>{const i=e.nodes.get(n.id);i===void 0?t.add(n.id):(!mo(n.upstream,i.upstream)||St(n.upstream,o))&&o.add(n.id)}),e.nodes.forEach(n=>{s.nodes.has(n.id)?St(n.upstream,o)&&o.add(n.id):r.add(n.id)}),{onlyInA:t,onlyInB:r,different:o}}let ot;async function Hr(){if(ot===void 0){const s=await Jr(ms.Templates["pframes.export-pframe-for-ui"]);if(s.type!=="explicit")throw new Error("Unexpected prepared template type.");const e=se.createHash("sha256").update(s.content).digest("hex");ot={spec:s,hash:e}}return ot}function vo(s,e,t){return kt(s,e,!0,{pf:t},["result"]).result}function nt(s,e){let t=!1,r,o;return()=>{if(!t)return t=!0,r=s(),o=e(),o;const n=s();return r!==n&&(r=n,o=e()),e()}}class 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(h.Pl.unwrapHolder(e,this.fields.blockPack.ref),Mr,"Input")}}const yo=s=>{throw new Error(`No new block info for ${s}`)};class _e{constructor(e,t,r,o,n,i,a,c,u,l,d,g){w(this,"globalModCount",0);w(this,"fieldsChanged",!1);w(this,"lastModifiedChanged",!1);w(this,"structureChanged",!1);w(this,"metaChanged",!1);w(this,"renderingStateChanged",!1);w(this,"changedBlockFrontendStates",new Set);w(this,"blocksWithChangedInputs",new Set);w(this,"stagingGraph");w(this,"pendingProductionGraph");w(this,"actualProductionGraph");this.rid=e,this.tx=t,this.author=r,this.schema=o,this.lastModified=n,this.meta=i,this.struct=a,this.renderingState=c,this.blocksInLimbo=u,this.blockInfos=l,this.blockFrontendStates=d,this.ctxExportTplHolder=g}fixProblemsAndMigrate(){this.blockInfos.forEach(t=>{(t.fields.prodArgs===void 0||t.fields.prodOutput===void 0||t.fields.prodCtx===void 0)&&this.deleteBlockFields(t.id,"prodArgs","prodOutput","prodCtx")});let e;this.blockInfos.forEach(t=>{t.fields.blockSettings===void 0&&(e===void 0&&(e=this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(t.id,"blockSettings",e))})}get wasModified(){return this.lastModifiedChanged||this.structureChanged||this.fieldsChanged||this.metaChanged||this.renderingStateChanged||this.changedBlockFrontendStates.size>0}get structure(){return JSON.parse(JSON.stringify(this.struct))}getStagingGraph(){return this.stagingGraph===void 0&&(this.stagingGraph=yt(this.struct)),this.stagingGraph}getPendingProductionGraph(){return this.pendingProductionGraph===void 0&&(this.pendingProductionGraph=Ge(this.struct,e=>this.getBlockInfo(e).currentInputs)),this.pendingProductionGraph}getActualProductionGraph(){return this.actualProductionGraph===void 0&&(this.actualProductionGraph=Ge(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(h.Pl.JsonObject,t),value:t,status:"Ready"}}createJsonFieldValue(e){return this.createJsonFieldValueByContent(JSON.stringify(e))}getBlock(e){for(const t of ae(this.struct))if(t.id===e)return t;throw new Error("block not found")}setBlockFieldObj(e,t,r){const o=h.field(this.rid,J(e,t));if(r.ref===void 0)throw new Error("Can't set value with empty ref");this.getBlockInfo(e).fields[t]===void 0?this.tx.createField(o,"Dynamic",r.ref):this.tx.setField(o,r.ref),this.getBlockInfo(e).fields[t]={modCount:this.globalModCount++,...r},this.fieldsChanged=!0}setBlockField(e,t,r,o,n){this.setBlockFieldObj(e,t,{ref:r,status:o,value:n})}deleteBlockFields(e,...t){let r=!1;const o=this.getBlockInfo(e);for(const n of t){const i=o.fields;n in i&&(this.tx.removeField(h.field(this.rid,J(e,n))),delete i[n],this.fieldsChanged=!0,r=!0)}return r}updateLastModified(){this.lastModified=Date.now(),this.lastModifiedChanged=!0}resetStagingRefreshTimestamp(){this.renderingState.stagingRefreshTimestamp=Date.now(),this.renderingStateChanged=!0}resetStaging(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.stagingOutput)==null?void 0:r.status)==="Ready"&&((o=t.stagingCtx)==null?void 0:o.status)==="Ready"&&((n=t.stagingUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"stagingOutputPrevious",t.stagingOutput),this.setBlockFieldObj(e,"stagingCtxPrevious",t.stagingCtx),this.setBlockFieldObj(e,"stagingUiCtxPrevious",t.stagingUiCtx)),this.deleteBlockFields(e,"stagingOutput","stagingCtx","stagingUiCtx")&&this.resetStagingRefreshTimestamp()}resetProduction(e){var r,o,n;const t=this.getBlockInfo(e).fields;((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"&&((n=t.prodUiCtx)==null?void 0:n.status)==="Ready"&&(this.setBlockFieldObj(e,"prodOutputPrevious",t.prodOutput),this.setBlockFieldObj(e,"prodCtxPrevious",t.prodCtx),this.setBlockFieldObj(e,"prodUiCtxPrevious",t.prodUiCtx)),this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}resetOrLimboProduction(e){var r,o;const t=this.getBlockInfo(e).fields;return((r=t.prodOutput)==null?void 0:r.status)==="Ready"&&((o=t.prodCtx)==null?void 0:o.status)==="Ready"?this.blocksInLimbo.has(e)?!1:(this.blocksInLimbo.add(e),this.renderingStateChanged=!0,this.deleteBlockFields(e,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),!0):this.deleteBlockFields(e,"prodOutput","prodCtx","prodUiCtx","prodArgs")}setArgs(e){const t=[];for(const{blockId:r,args:o}of e){const n=this.getBlockInfo(r);JSON.parse(o);const i=Buffer.from(o);if(Buffer.compare(n.fields.currentArgs.value,i)===0)continue;const a=this.tx.createValue(h.Pl.JsonObject,i);this.setBlockField(r,"currentArgs",a,"Ready",i),this.blocksWithChangedInputs.add(r),t.push(r)}this.getStagingGraph().traverse("downstream",t,({id:r})=>this.resetStaging(r)),t.length>0&&this.updateLastModified()}setUiState(e,t){if(this.blockInfos.get(e)===void 0)throw new Error("no such block");this.blockFrontendStates.get(e)!==t&&(t===void 0?this.blockFrontendStates.delete(e):this.blockFrontendStates.set(e,t),this.changedBlockFrontendStates.add(e),this.blocksWithChangedInputs.add(e),this.updateLastModified())}setBlockSettings(e,t){this.setBlockFieldObj(e,"blockSettings",this.createJsonFieldValue(t)),this.updateLastModified()}createProdCtx(e){const t=[];return e.forEach(r=>{var n;const o=this.getBlockInfo(r);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(h.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),qt(this.tx,t)}createStagingCtx(e){const t=[];return e.forEach(r=>{var n,i;const o=this.getBlockInfo(r);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(h.Pl.unwrapHolder(this.tx,o.fields.stagingCtx.ref)),((i=o.fields.prodCtx)==null?void 0:i.ref)!==void 0&&t.push(h.Pl.unwrapHolder(this.tx,o.fields.prodCtx.ref))}),qt(this.tx,t)}exportCtx(e){return vo(this.tx,h.Pl.unwrapHolder(this.tx,this.ctxExportTplHolder),e)}renderStagingFor(e){this.resetStaging(e);const t=this.getBlockInfo(e),r=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=Ht(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(h.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(h.Pl.JsonBool,JSON.stringify(!1)),context:r});this.setBlockField(e,"stagingCtx",h.Pl.wrapInEphHolder(this.tx,n.context),"NotReady"),this.setBlockField(e,"stagingUiCtx",this.exportCtx(n.context),"NotReady"),this.setBlockField(e,"stagingOutput",n.result,"NotReady")}renderProductionFor(e){this.resetProduction(e);const t=this.getBlockInfo(e),r=this.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=Ht(this.tx,o,{args:t.fields.currentArgs.ref,blockId:this.tx.createValue(h.Pl.JsonString,JSON.stringify(e)),isProduction:this.tx.createValue(h.Pl.JsonBool,JSON.stringify(!0)),context:r});this.setBlockField(e,"prodCtx",h.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 r=this.getStagingGraph(),o=this.getActualProductionGraph(),n=yt(e),i=Ge(e,u=>{var l;return(l=this.blockInfos.get(u))==null?void 0:l.actualProductionInputs}),a=Yt(r,n),c=Yt(o,i);for(const u of a.onlyInA){const{fields:l}=this.getBlockInfo(u);this.deleteBlockFields(u,...Object.keys(l)),this.blockInfos.delete(u),this.blocksInLimbo.delete(u)&&(this.renderingStateChanged=!0),this.blockFrontendStates.delete(u)&&this.changedBlockFrontendStates.add(u)}for(const u of a.onlyInB){const l=new Qt(u,{});this.blockInfos.set(u,l);const d=t(u),g=Xt(this.tx,d.blockPack);this.setBlockField(u,"blockPack",h.Pl.wrapInHolder(this.tx,g),"NotReady"),this.setBlockFieldObj(u,"blockSettings",this.createJsonFieldValue(K.InitialBlockSettings)),this.setBlockFieldObj(u,"currentArgs",this.createJsonFieldValueByContent(d.args)),d.uiState&&(this.blockFrontendStates.set(u,d.uiState),this.changedBlockFrontendStates.add(u)),l.check()}for(const u of a.different)this.resetStaging(u);o.traverse("downstream",[...c.different],u=>{this.resetOrLimboProduction(u.id)}),(a.onlyInB.size>0||a.onlyInA.size>0||a.different.size>0)&&this.resetStagingRefreshTimestamp(),this.struct=e,this.structureChanged=!0,this.stagingGraph=void 0,this.pendingProductionGraph=void 0,this.actualProductionGraph=void 0,this.updateLastModified()}addBlock(e,t,r){const o=this.structure;if(r===void 0)o.groups[o.groups.length-1].blocks.push(e);else{let n=!1;for(const i of o.groups){const a=i.blocks.findIndex(c=>c.id===r);if(!(a<0)){i.blocks.splice(a,0,e),n=!0;break}}if(!n)throw new Error(`Can't find element with id: ${r}`)}this.updateStructure(o,n=>{if(n!==e.id)throw new Error("Unexpected");return t})}deleteBlock(e){const t=this.structure;let r=!1;for(const o of t.groups){const n=o.blocks.findIndex(i=>i.id===e);if(!(n<0)){o.blocks.splice(n,1),r=!0;break}}if(!r)throw new Error(`Can't find element with id: ${e}`);this.updateStructure(t)}migrateBlockPack(e,t,r){const o=this.getBlockInfo(e);this.setBlockField(e,"blockPack",h.Pl.wrapInHolder(this.tx,Xt(this.tx,t)),"NotReady"),r!==void 0?(this.setArgs([{blockId:e,args:r}]),this.setUiState(e,void 0)):this.getStagingGraph().traverse("downstream",[e],({id:n})=>this.resetStaging(n)),o.productionRendered&&this.getActualProductionGraph().traverse("downstream",[e],({id:n})=>this.resetOrLimboProduction(n)),this.updateLastModified()}renderProduction(e,t=!1){const r=new Set(e),o=this.getPendingProductionGraph();if(t)o.traverse("upstream",e,a=>{r.add(a.id)});else for(const a of r){const c=o.nodes.get(a);if(c===void 0)throw new Error(`Can't find block with id: ${a}`);for(const u of c.upstream)if(!r.has(u))throw new Error("Can't render blocks not including all upstreams.")}const n=new Set;for(const a of ae(this.structure)){if(!r.has(a.id))continue;let c=this.getBlockInfo(a.id).requireProductionRendering||this.blocksInLimbo.has(a.id);if(!c){for(const u of o.nodes.get(a.id).upstream)if(n.has(u)){c=!0;break}}c&&(this.renderProductionFor(a.id),n.add(a.id))}const i=[...n];return o.traverse("downstream",i,a=>{n.has(a.id)||this.resetOrLimboProduction(a.id)}),this.getStagingGraph().traverse("downstream",i,({id:a})=>{i[0]!==a&&this.resetStaging(a)}),n.size>0&&this.updateLastModified(),n}stopProduction(...e){var i,a;const t=this.getActualProductionGraph(),r=new Tr(e),o=new Set(e),n=[];for(;!r.isEmpty();){const c=r.shift(),u=this.getBlockInfo(c).fields;if(!(((i=u.prodOutput)==null?void 0:i.status)==="Ready"&&((a=u.prodCtx)==null?void 0:a.status)==="Ready")&&this.deleteBlockFields(c,"prodOutput","prodCtx","prodUiCtx","prodArgs")){n.push(c);for(const l of t.traverseIdsExcludingRoots("downstream",c))o.has(l)||(r.push(l),o.add(l))}}for(const c of t.traverseIdsExcludingRoots("downstream",...n))this.resetOrLimboProduction(c)}traverseWithStagingLag(e){const t=new Map;this.getStagingGraph().nodes.forEach(o=>{let i=this.getBlockInfo(o.id).stagingRendered?0:1;o.upstream.forEach(a=>{const c=t.get(a);c!==0&&(i=Math.max(c+1,i))}),e(o.id,i),t.set(o.id,i)})}refreshStagings(e){const t=Date.now()-this.renderingState.stagingRefreshTimestamp,r=e===void 0?void 0:1+Math.max(0,t*e/1e3);let o=0;this.traverseWithStagingLag((n,i)=>{i!==0&&(r===void 0||i<=r)&&(this.renderStagingFor(n),o++)}),o>0&&this.resetStagingRefreshTimestamp()}setMeta(e){this.meta=e,this.metaChanged=!0,this.updateLastModified()}doRefresh(e){this.refreshStagings(e),this.blockInfos.forEach(t=>{var r,o,n,i;((r=t.fields.prodCtx)==null?void 0:r.status)==="Ready"&&((o=t.fields.prodOutput)==null?void 0:o.status)==="Ready"&&this.deleteBlockFields(t.id,"prodOutputPrevious","prodCtxPrevious","prodUiCtxPrevious"),((n=t.fields.stagingCtx)==null?void 0:n.status)==="Ready"&&((i=t.fields.stagingOutput)==null?void 0:i.status)==="Ready"&&this.deleteBlockFields(t.id,"stagingOutputPrevious","stagingCtxPrevious","stagingUiCtxPrevious")})}assignAuthorMarkers(){const e=this.author?JSON.stringify(this.author):void 0;for(const t of this.blocksWithChangedInputs)e===void 0?this.tx.deleteKValue(this.rid,ft(t)):this.tx.setKValue(this.rid,ft(t),e);(this.metaChanged||this.structureChanged)&&(e===void 0?this.tx.deleteKValue(this.rid,gt):this.tx.setKValue(this.rid,gt,e))}save(){if(this.wasModified){this.lastModifiedChanged&&this.tx.setKValue(this.rid,$e,JSON.stringify(this.lastModified)),this.structureChanged&&this.tx.setKValue(this.rid,de,JSON.stringify(this.struct)),this.renderingStateChanged&&this.tx.setKValue(this.rid,Me,JSON.stringify({...this.renderingState,blocksInLimbo:[...this.blocksInLimbo]})),this.metaChanged&&this.tx.setKValue(this.rid,Te,JSON.stringify(this.meta));for(const e of this.changedBlockFrontendStates){const t=this.blockFrontendStates.get(e);t===void 0?this.tx.deleteKValue(this.rid,ht(e)):this.tx.setKValue(this.rid,ht(e),t)}this.assignAuthorMarkers()}}static async load(e,t,r){const o=e.getResourceData(t,!0),n=e.getKValueJson(t,Dr),i=e.getKValueJson(t,$e),a=e.getKValueJson(t,Te),c=e.getKValueJson(t,de),u=e.getKValueJson(t,Me),l=e.listKeyValuesString(t),[d,g,f,C,m,{stagingRefreshTimestamp:x,blocksInLimbo:D},U]=await Promise.all([o,n,i,a,c,u,l]);if(g!==Nr)throw new Error(`Can't act on this project resource because it has a wrong schema version: ${g}`);const I=new Map;for(const p of d.fields){const v=Ms(p.name);if(v===void 0)continue;let S=I.get(v.blockId);S===void 0&&(S={id:v.blockId,fields:{}},I.set(v.blockId,S)),S.fields[v.fieldName]=h.isNullResourceId(p.value)?{modCount:0}:{modCount:0,ref:p.value}}const M=await Hr(),pe=mt(M.hash),N=d.fields.find(p=>p.name===pe);let Y;N!==void 0?Y=h.ensureResourceIdNotNull(N.value):(Y=h.Pl.wrapInHolder(e,We(e,M.spec)),e.createField(h.field(t,mt(M.hash)),"Dynamic",Y));const le={stagingRefreshTimestamp:x},z=new Set(D),_=new Map;for(const p of U){const v=Us(p.key);v!==void 0&&_.set(v,p.value)}const G=[];I.forEach(({fields:p})=>{for(const[,v]of Object.entries(p))if(v.ref!==void 0){if(!h.isResource(v.ref)||h.isResourceRef(v.ref))throw new Error("unexpected behaviour");G.push([v,e.getResourceData(v.ref,!1)])}});for(const[p,v]of G){const S=await v;p.value=S.data,h.isNotNullResourceId(S.error)?p.status="Error":S.resourceReady||h.isNotNullResourceId(S.originalResourceId)?p.status="Ready":p.status="NotReady"}const Q=new Map;I.forEach(({id:p,fields:v})=>Q.set(p,new Qt(p,v)));const he=new Set;for(const p of ae(m)){if(!Q.has(p.id))throw new Error(`Inconsistent project structure: no inputs for ${p.id}`);he.add(p.id)}Q.forEach(p=>{if(!he.has(p.id))throw new Error(`Inconsistent project structure: no structure entry for ${p.id}`);p.check()});const y=new _e(t,e,r,g,f,C,m,le,z,Q,_,Y);return y.fixProblemsAndMigrate(),y}}async function So(s,e=Ns){const t=s.createEphemeral(Bs);s.lock(t);const r=String(Date.now());s.setKValue(t,Dr,JSON.stringify(Nr)),s.setKValue(t,Rt,r),s.setKValue(t,$e,r),s.setKValue(t,Te,JSON.stringify(e)),s.setKValue(t,de,JSON.stringify(Ls)),s.setKValue(t,Me,JSON.stringify(Ds));const o=await Hr();return s.createField(h.field(t,mt(o.hash)),"Dynamic",h.Pl.wrapInHolder(s,We(s,o.spec))),t}async function De(s,e,t){return te(s,e,void 0,t)}async function te(s,e,t,r){if(s instanceof h.PlClient)return await s.withWriteTx("ProjectAction",async o=>{const n=await _e.load(o,e,t),i=await r(n);return n.wasModified&&(n.save(),await o.commit()),i});{const o=await _e.load(s,e,t),n=await r(o);return o.save(),n}}function*bo(s){switch(s.type){case"Json":return;case"JsonPartitioned":for(const[,e]of Object.entries(s.parts))yield e;return;case"BinaryPartitioned":for(const[,{index:e,values:t}]of Object.entries(s.parts))yield e,yield t;return;default:k.assertNever(s)}}function Zt(s,e){return Object.fromEntries(Object.entries(s).map(([t,r])=>[t,e(r,t)]))}function wo(s,e){switch(s.type){case"Json":return{...s};case"JsonPartitioned":return{...s,parts:Zt(s.parts,e)};case"BinaryPartitioned":return{...s,parts:Zt(s.parts,t=>({index:e(t.index),values:e(t.values)}))};default:k.assertNever(s)}}const Po=h.resourceType("PColumnData/JsonPartitioned","1"),Eo=h.resourceType("PColumnData/Partitioned/JsonPartitioned","1"),Co=h.resourceType("PColumnData/BinaryPartitioned","1"),Ro=h.resourceType("PColumnData/Partitioned/BinaryPartitioned","1"),ko=h.resourceType("PColumnData/Json","1");function Oo(s){if(!s.getIsReadyOrError())throw new Error("Data not ready.");const e=s.getDataAsJson();if(e===void 0)throw new Error("unexpected data info structure, no resource data");if(h.resourceTypesEqual(s.resourceType,ko)){const t=e;return{type:"Json",keyLength:t.keyLength,data:t.data}}else if(h.resourceTypesEqual(s.resourceType,Po)){const t=e,r=Object.fromEntries(s.listInputFields().map(o=>[o,s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo]));return{type:"JsonPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,Eo)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const a of i){const c=JSON.stringify([...JSON.parse(o),...JSON.parse(a)]);r[c]=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}}return{type:"JsonPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,Co)){const t=e,r={};for(const o of s.listInputFields())if(o.endsWith(".index")){const n=o.slice(0,o.length-6);let i=r[n];i===void 0&&(i={},r[n]=i),i.index=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else if(o.endsWith(".values")){const n=o.slice(0,o.length-7);let i=r[n];i===void 0&&(i={},r[n]=i),i.values=s.traverse({field:o,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${o}`);for(const[o,n]of Object.entries(r)){if(n.index===void 0)throw new Error(`no index for part ${o}`);if(n.values===void 0)throw new Error(`no values for part ${o}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.partitionKeyLength,parts:r}}else if(h.resourceTypesEqual(s.resourceType,Ro)){const t=e,r={};for(const o of s.listInputFields()){const n=s.traverse({field:o,errorIfFieldNotSet:!0}),i=n.listInputFields();if(i===void 0)throw new Error(`no partition keys for super key ${o}`);for(const a of i)if(a.endsWith(".index")){const c=a.slice(0,a.length-6),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=r[u];l===void 0&&(l={},r[u]=l),r[u].index=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else if(a.endsWith(".values")){const c=a.slice(0,a.length-7),u=JSON.stringify([...JSON.parse(o),...JSON.parse(c)]);let l=r[u];l===void 0&&(l={},r[u]=l),r[u].values=n.traverse({field:a,errorIfFieldNotSet:!0}).resourceInfo}else throw new Error(`unrecognized part field name: ${a}`)}return{type:"BinaryPartitioned",partitionKeyLength:t.superPartitionKeyLength+t.partitionKeyLength,parts:r}}throw new Error(`unsupported resource type: ${h.resourceTypeToString(s.resourceType)}`)}function $o(s,e){const t=s.axesSpec.length,r={};for(const{key:o,val:n}of e){if(o.length!==t)throw new Error(`inline column key length ${o.length} differs from axes count ${t}`);r[JSON.stringify(o)]=n}return{type:"Json",keyLength:t,data:r}}function To(s,e){const t=se.createHash("sha256");return t.update(re(s)),t.update(String(h.isNullResourceId(e.originalId)?e.id:e.originalId)),t.digest().toString("hex")}function er(s,e){return re({__isRef:!0,blockId:s,name:e})}function Io(s,e){return re({resolvePath:s,name:e})}function qr(s,e=!0,t=!1,r=""){var a,c,u;const o=/^(?<name>.*)\.(?<type>spec|data)$/,n=new Map;for(const l of s.listInputFields()){const d=l.match(o);if(!d){if(e)throw new Error(`unexpected field name ${l}`);continue}let g=k.notEmpty((a=d.groups)==null?void 0:a.name);if(!g.startsWith(r)){if(e)throw new Error(`unexpected field name ${l}`);continue}g=g.slice(r.length);const f=k.notEmpty((c=d.groups)==null?void 0:c.type);let C=n.get(g);switch(C===void 0&&(C={},n.set(g,C)),f){case"spec":C.spec=(u=s.traverse({field:l,ignoreError:t,pureFieldErrorToUndefined:t}))==null?void 0:u.getDataAsJson();break;case"data":C.hasData=!0,C.data=()=>s.traverseOrError({field:l,ignoreError:t});break}}const i=s.getInputsLocked();if(i)for(const[,l]of n)l.data===void 0&&(l.hasData=!1);return{locked:i,results:n}}function Fo(s,e=!0,t="",r){if(!s.getIsReadyOrError())throw new Error("resource is not ready");const o=qr(s,e,!1,t);ys(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 vs.parsePlError(c.error);n[i]={id:r.length===0?To(a.spec,c.value):Io(r,i),spec:a.spec,data:c.value}}return n}class Tt{constructor(e,t){w(this,"allSpecsAvailable");this.ctx=e,this.blocks=t;let r=!0;e:for(const o of t.values())for(const n of[o.prod,o.staging])if(n!==void 0){if(!n.locked){r=!1;break e}for(const i of n.results.values())if(i.spec===void 0){r=!1;break e}}this.allSpecsAvailable=r}getSpecByRef(e,t){var n,i,a,c,u,l;const r=this.blocks.get(e);if(r===void 0)return;let o=(a=(i=(n=r.prod)==null?void 0:n.results)==null?void 0:i.get(t))==null?void 0:a.spec;if(o!==void 0||(o=(l=(u=(c=r.staging)==null?void 0:c.results)==null?void 0:u.get(t))==null?void 0:l.spec,o!==void 0))return o;r.staging===void 0?this.ctx.markUnstable(`staging_not_rendered:${e}`):r.staging.locked?r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`):this.ctx.markUnstable(`staging_not_locked:${e}`)}getDataOrErrorByRef(e,t){var i,a,c;const r=this.blocks.get(e);if(r===void 0)return;const o=(a=(i=r.prod)==null?void 0:i.results)==null?void 0:a.get(t),n=(c=o==null?void 0:o.data)==null?void 0:c.call(o);if(o!==void 0&&o.spec!==void 0&&n!==void 0)return L.mapValueInVOE(n,u=>({id:er(e,t),spec:o.spec,data:u}));o!==void 0&&this.ctx.markUnstable(`no_data:${e}:${t}`),r.prod!==void 0&&!r.prod.locked&&this.ctx.markUnstable(`prod_not_locked:${e}`)}getDataByRef(e,t){const r=this.getDataOrErrorByRef(e,t);if(!(r===void 0||!r.ok))return r.value}getData(){const e=this.getDataWithErrors(),t=[];for(const r of e.entries)r.obj.id!==void 0&&r.obj.data.ok&&t.push({ref:r.ref,obj:{id:r.obj.id,spec:r.obj.spec,data:r.obj.data.value}});return{entries:t,isComplete:e.isComplete,instabilityMarker:e.instabilityMarker}}getDataWithErrors(){const e=[];let t=!0,r;const o=i=>{r===void 0&&(r=i),t=!1},n=(i,a,c)=>{if(c.spec!==void 0&&c.hasData===!0&&c.data!==void 0){const u=c.data();u!==void 0?e.push({ref:Le(i,a),obj:{id:u.ok?er(i,a):void 0,spec:c.spec,data:u}}):o(`no_data:${i}:${a}`)}};for(const[i,a]of this.blocks){const c=new Set;if(a.prod!==void 0){a.prod.locked||o(`prod_not_locked:${i}`);for(const[u,l]of a.prod.results)c.add(u),n(i,u,l)}if(a.staging!==void 0){a.staging.locked||o(`staging_not_locked:${i}`);for(const[u,l]of a.staging.results)c.has(u)||n(i,u,l)}}return{entries:e,isComplete:t,instabilityMarker:r}}getSpecs(){const e=[];let t=!0,r;const o=n=>{r===void 0&&(r=n),t=!1};for(const[n,i]of this.blocks){const a=new Set;if(i.staging!==void 0){i.staging.locked||o(`staging_not_locked:${n}`);for(const[c,u]of i.staging.results)u.spec!==void 0&&(e.push({ref:Le(n,c),obj:u.spec}),a.add(c))}else o(`staging_not_rendered:${n}`);if(i.prod!==void 0){i.prod.locked||o(`prod_not_locked:${n}`);for(const[c,u]of i.prod.results)a.has(c)||u.spec!==void 0&&e.push({ref:Le(n,c),obj:u.spec})}}return{entries:e,isComplete:t,instabilityMarker:r}}calculateOptions(e){const t=[];for(const r of this.blocks.values()){const o=new Set,n=i=>{for(const[a,c]of i.results)o.has(a)||c.spec===void 0||(o.add(a),L.executePSpecPredicate(e,c.spec)&&t.push({label:r.info.label+" / "+a,ref:Le(r.info.id,a),spec:c.spec}))};r.staging!==void 0&&n(r.staging),r.prod!==void 0&&n(r.prod)}return t}static create(e,t,r){const o=e.accessor(t).node(),n=k.notEmpty(o.getKeyValueAsJson(de)),a=yt(n).traverseIds("upstream",r),c=new Map;for(const u of ae(n)){if(!a.has(u.id))continue;const l=tr(o.traverse({field:J(u.id,"prodCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0,stableIfNotFound:!0})!==void 0,o.traverseOrError({field:J(u.id,"prodUiCtx"),stableIfNotFound:!0})),d=tr(o.traverse({field:J(u.id,"stagingCtx"),ignoreError:!0,pureFieldErrorToUndefined:!0})!==void 0,o.traverseOrError({field:J(u.id,"stagingUiCtx")}));c.set(u.id,{info:u,prod:l,staging:d})}return new Tt(e,c)}}function tr(s,e){if(e===void 0)return s?{locked:!1,results:new Map}:void 0;if(e.ok)return qr(e.value,!1,!0)}function It(s,e){return{blockId:e,args:n=>k.notEmpty(n.accessor(s).node().traverse({field:J(e,"currentArgs"),errorIfFieldNotSet:!0}).getDataAsString()),activeArgs:n=>{var i;return(i=n.accessor(s).node().traverse({field:J(e,"prodArgs"),stableIfNotFound:!0}))==null?void 0:i.getDataAsString()},uiState:n=>n.accessor(s).node().getKeyValueAsString(ht(e)),blockMeta:n=>{const i=n.accessor(s).node(),a=k.notEmpty(i.getKeyValueAsJson(de)),c=new Map;for(const u of ae(a))c.set(u.id,u);return c}}}function Wr(s,e){return{...It(s,e),prod:t=>{var r;return(r=t.accessor(s).node({ignoreError:!0}).traverse({field:J(e,"prodOutput"),stableIfNotFound:!0,ignoreError:!0}))==null?void 0:r.persist()},staging:t=>{var o;const r=(o=t.accessor(s).node({ignoreError:!0}).traverse({field:J(e,"stagingOutput"),ignoreError:!0}))==null?void 0:o.persist();return r===void 0&&t.markUnstable("staging_not_rendered"),r},getResultsPool:t=>Tt.create(t,s,e)}}function*X(s,e){switch(yield s,s.type){case"GetFromCtx":case"Immediate":return;case"Isolate":yield*X(s.cfg);return;case"MakeObject":for(const[,t]of Object.entries(s.template))yield*X(t);return;case"MakeArray":for(const t of s.template)yield*X(t);return;case"GetJsonField":case"GetResourceField":yield*X(s.source),yield*X(s.field);return;case"MapRecordValues":case"MapArrayValues":case"MapResourceFields":yield*X(s.source),yield*X(s.mapping);return;case"Flatten":case"GetResourceValueAsJson":case"GetBlobContent":case"ExtractArchiveAndGetURL":case"GetBlobContentAsString":case"GetBlobContentAsJson":case"GetDownloadedBlobContent":case"GetOnDemandBlobContent":case"GetImportProgress":case"GetLastLogs":case"GetProgressLog":case"GetProgressLogWithInfo":case"GetLogHandle":yield*X(s.source);return;case"IsEmpty":yield*X(s.arg);return;case"Not":yield*X(s.operand);return;case"And":case"Or":yield*X(s.operand1),yield*X(s.operand2);return;default:k.assertNever(s)}}function Ao(s,e){const t={};for(const[r,o]of Object.entries(s))t[r]=e(o);return t}function Ee(s,e){return s===void 0?void 0:e(s)}function Lo(s){switch(s.type){case"GetImportProgress":return!0;default:return!1}}function Do(s){for(const e of X(s))if(Lo(e))return!0;return!1}function ze(s){return{type:"ReturnResult",result:s}}function O(s){return()=>ze(s)}const No=s=>{const e={};for(const[t,r]of Object.entries(s))e[t]=r;return O(e)},Bo=s=>{const e=s.source;if(e===void 0)return O(void 0);const t=[];for(const r of e)r instanceof Array?t.push(...r):t.push(r);return O(t)},jo=s=>{const e=s.source,t=s.field;return e===void 0||t===void 0?O(void 0):({cCtx:r})=>{var o;return ze((o=r.accessor(e).node().traverse(t))==null?void 0:o.persist())}};function zr(s,e){const t={},r=s.length;for(let o=0;o<r;o++)t[String(o)]=e(s[o]);return t}function xo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):()=>({type:"ScheduleSubroutine",subroutine:Xr(r.length),args:zr(r,o=>$({...s,[e.itVar]:o},e.mapping))})}}function Xr(s){return e=>{const t=[];for(let r=0;r<s;r++)t.push(e[String(r)]);return O(t)}}function Vo(s,e){return t=>{const r=t.source;if(r===void 0)return O(void 0);const o={};for(const[n,i]of Object.entries(r)){const a={...s,[e.itVar]:i};o[n]=$(a,e.mapping)}return()=>({type:"ScheduleSubroutine",subroutine:Uo,args:o})}}const Uo=s=>O(s),Go=s=>{const e=s.arg;return O(e===void 0?void 0:e.length===0)},Jo=s=>{const e=s.operand;return O(e===void 0?void 0:!e)},Mo=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e&&t)},_o=s=>{const e=s.operand1,t=s.operand2;return O(e===void 0||t===void 0?void 0:e||t)},Ko=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t})=>{var r;return ze((r=t.accessor(e).node())==null?void 0:r.getDataAsJson())}},Ho=s=>{const e=s.source,t=s.field;return O(e===void 0||t===void 0?void 0:e[t])};function qo(s,e){return t=>{const r=t.source;return r===void 0?O(void 0):({cCtx:o})=>{const n=o.accessor(r).node(),i={};for(const a of n.listInputFields()){const c=n.traverse(a);if(c===void 0)i[a]=O(void 0);else{const u={...s,[e.itVar]:c.persist()};i[a]=$(u,e.mapping)}}return{type:"ScheduleSubroutine",subroutine:Wo,args:i}}}}const Wo=s=>O(s),zo=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r!==void 0)return await t.blobDriver.getContent(r.handle)}})})},Xo=s=>{const e=s.source;return e===void 0?O(void 0):({cCtx:t,drivers:r})=>{const o=t.accessor(e).node().resourceInfo;return{type:"ScheduleComputable",computable:B.Computable.make(()=>r.blobDriver.getDownloadedBlob(o),{postprocessValue:async n=>n===void 0?void 0:(await r.blobDriver.getContent(n.handle)).toString()})}}},Yo=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:B.Computable.make(r=>t.blobDriver.getDownloadedBlob(r.accessor(e).node().resourceInfo),{postprocessValue:async r=>{if(r==null)return;const o=await t.blobDriver.getContent(r.handle);if(o!=null)return JSON.parse(Buffer.from(o).toString())}})})},Qo=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getDownloadedBlob(e)})},Zo=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.blobDriver.getOnDemandBlob(e)})},en=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.blobToURLDriver.extractArchiveAndGetURL(t,s)})},tn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.uploadDriver.getProgressId(e)})},rn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getLastLogs(t,s)})},sn=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLog(t,s)})},on=s=>e=>{const t=e.source;return t===void 0?O(void 0):({drivers:r})=>({type:"ScheduleComputable",computable:r.logDriver.getProgressLogWithInfo(t,s)})},nn=s=>{const e=s.source;return e===void 0?O(void 0):({drivers:t})=>({type:"ScheduleComputable",computable:t.logDriver.getLogHandle(e)})};function $(s,e){switch(e.type){case"GetFromCtx":{const t=s[e.variable];return typeof t=="function"?r=>ze(t(r.cCtx)):O(t)}case"Isolate":return({drivers:t})=>({type:"ScheduleComputable",computable:Zr(t,s,e.cfg)});case"Immediate":return O(e.value);case"GetJsonField":return()=>({type:"ScheduleSubroutine",subroutine:Ho,args:{source:$(s,e.source),field:$(s,e.field)}});case"MapArrayValues":return()=>({type:"ScheduleSubroutine",subroutine:xo(s,e),args:{source:$(s,e.source)}});case"MapRecordValues":return()=>({type:"ScheduleSubroutine",subroutine:Vo(s,e),args:{source:$(s,e.source)}});case"MakeObject":return()=>({type:"ScheduleSubroutine",subroutine:No,args:Ao(e.template,t=>$(s,t))});case"MakeArray":return()=>({type:"ScheduleSubroutine",subroutine:Xr(e.template.length),args:zr(e.template,t=>$(s,t))});case"Flatten":return()=>({type:"ScheduleSubroutine",subroutine:Bo,args:{source:$(s,e.source)}});case"IsEmpty":return()=>({type:"ScheduleSubroutine",subroutine:Go,args:{arg:$(s,e.arg)}});case"Not":return()=>({type:"ScheduleSubroutine",subroutine:Jo,args:{operand:$(s,e.operand)}});case"And":return()=>({type:"ScheduleSubroutine",subroutine:Mo,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"Or":return()=>({type:"ScheduleSubroutine",subroutine:_o,args:{operand1:$(s,e.operand1),operand2:$(s,e.operand2)}});case"MapResourceFields":return()=>({type:"ScheduleSubroutine",subroutine:qo(s,e),args:{source:$(s,e.source)}});case"GetResourceField":return()=>({type:"ScheduleSubroutine",subroutine:jo,args:{source:$(s,e.source),field:$(s,e.field)}});case"GetResourceValueAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Ko,args:{source:$(s,e.source)}});case"GetBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:zo,args:{source:$(s,e.source)}});case"GetBlobContentAsString":return()=>({type:"ScheduleSubroutine",subroutine:Xo,args:{source:$(s,e.source)}});case"GetBlobContentAsJson":return()=>({type:"ScheduleSubroutine",subroutine:Yo,args:{source:$(s,e.source)}});case"GetDownloadedBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Qo,args:{source:$(s,e.source)}});case"GetOnDemandBlobContent":return()=>({type:"ScheduleSubroutine",subroutine:Zo,args:{source:$(s,e.source)}});case"ExtractArchiveAndGetURL":return()=>({type:"ScheduleSubroutine",subroutine:en(e.format),args:{source:$(s,e.source)}});case"GetImportProgress":return()=>({type:"ScheduleSubroutine",subroutine:tn,args:{source:$(s,e.source)}});case"GetLastLogs":return()=>({type:"ScheduleSubroutine",subroutine:rn(e.lines),args:{source:$(s,e.source)}});case"GetProgressLog":return()=>({type:"ScheduleSubroutine",subroutine:sn(e.patternToSearch),args:{source:$(s,e.source)}});case"GetProgressLogWithInfo":return()=>({type:"ScheduleSubroutine",subroutine:on(e.patternToSearch),args:{source:$(s,e.source)}});case"GetLogHandle":return()=>({type:"ScheduleSubroutine",subroutine:nn,args:{source:$(s,e.source)}});default:return k.assertNever(e)}}const an=["$prod","$staging"];function cn(s){return{$blockId:s.blockId,$args:e=>JSON.parse(s.args(e)),$ui:e=>{const t=s.uiState(e);return t!==void 0?JSON.parse(t):void 0},$prod:s.prod,$staging:s.staging}}const Yr=Symbol(),Qr="return",ln={op:Yr,arg:Qr};function un(s){return s.op==Yr&&s.arg==Qr}function dn(){return{pendingSubroutines:new Map}}function rr(s,e,t,r){const o=new Tr(t),n=(a,c)=>{if(un(a))return e.result=c,!1;const u=k.notEmpty(e.pendingSubroutines.get(a.op));if(a.arg in u.args)throw new Error("argument already set");return u.args[a.arg]=c,u.argCounter--,u.argCounter===0&&(e.pendingSubroutines.delete(a.op),o.push({destination:u.destination,operation:u.subroutine(u.args)})),!0},i=[];e:for(;o.length>0;){const a=o.shift(),c=a.operation(s);switch(c.type){case"ReturnResult":if(!n(a.destination,c.result))break e;break;case"ScheduleSubroutine":{const u=Symbol(),l=Object.entries(c.args),d=l.length;if(d===0)o.push({destination:a.destination,operation:c.subroutine({})});else{for(const[g,f]of l)o.push({destination:{op:u,arg:g},operation:f});e.pendingSubroutines.set(u,{argCounter:d,args:{},subroutine:c.subroutine,destination:a.destination})}}break;case"ScheduleComputable":if(!r)throw new Error("asynchronous operations are forbidden in this context");i.push({destination:a.destination,computable:c.computable});break;default:k.assertNever(c)}}return i}function pn(s,e,t,r={}){return Zr(s,cn(e),t,r)}function Zr(s,e,t,r={}){const o=`${e.blockId}#`+re({ctx:Object.fromEntries(Object.entries(e).filter(([n])=>an.indexOf(n)===-1)),cfg:t});return B.Computable.makeRaw(n=>{const i={drivers:s,cCtx:n},a=dn();return{ir:rr(i,a,[{destination:ln,operation:$(e,t)}],!0),postprocessValue(u){const l=[];for(const C of u)l.push({destination:C.destination,operation:O(C.computable)});const d={drivers:s,get cCtx(){throw new Error("asynchronous operations are forbidden in this context")}},g=new Map;for(const[C,m]of a.pendingSubroutines)g.set(C,{...m,args:{...m.args}});const f={result:a.result,pendingSubroutines:g};if(rr(d,f,l,!1),!("result"in f))throw new Error("illegal cfg rendering stack state, no result");return f.result}}},{...r,key:o})}function hn(s){return s instanceof ArrayBuffer||ArrayBuffer.isView(s)}function sr(s){return s!==void 0?Buffer.from(s).toString("base64"):void 0}class Ke{constructor(e,t,r,o,n){w(this,"callbackRegistry");w(this,"fnJSONStringify");w(this,"fnJSONParse");w(this,"computablesToResolve",{});w(this,"computableCtx");w(this,"accessors",new Map);w(this,"meta");w(this,"errorRepo",new fn);w(this,"_resultPool");if(this.scope=e,this.vm=t,this.blockCtx=r,this.env=o,this.computableCtx=n,this.callbackRegistry=this.scope.manage(this.vm.newObject()),this.fnJSONStringify=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"stringify"))),t.typeof(this.fnJSONStringify)!=="function")throw new Error("JSON.stringify() not found.");if(this.fnJSONParse=e.manage(t.getProp(t.global,"JSON").consume(i=>t.getProp(i,"parse"))),t.typeof(this.fnJSONParse)!=="function")throw new Error("JSON.parse() not found.");this.meta=r.blockMeta(n),this.injectCtx()}resetComputableCtx(){this.computableCtx=void 0,this.accessors.clear()}static cleanErrorContext(e){typeof e=="object"&&e!==null&&"context"in e&&delete e.context}evaluateBundle(e){try{this.vm.unwrapResult(this.vm.evalCode(e,"bundle.js",{type:"global"})).dispose()}catch(t){throw Ke.cleanErrorContext(t),t}}runCallback(e,...t){try{return Oe.Scope.withScope(r=>{const o=r.manage(this.vm.getProp(this.callbackRegistry,e));if(this.vm.typeof(o)!=="function")throw new Error(`No such callback: ${e}`);return this.scope.manage(this.vm.unwrapResult(this.vm.callFunction(o,this.vm.undefined,...t.map(n=>this.exportObjectUniversal(n,r)))))})}catch(r){throw Ke.cleanErrorContext(r),this.errorRepo.getOriginal(r)}}getAccessorHandleByName(e){if(this.computableCtx===void 0)throw new Error("Accessors can't be used in this context");const t=(r,o)=>{if(!this.accessors.has(r)){const n=this.blockCtx[o];if(n===void 0)throw new Error("Staging context not available");const i=n(this.computableCtx);i?this.accessors.set(r,this.computableCtx.accessor(i).node({ignoreError:!0})):this.accessors.set(r,void 0)}return this.accessors.get(r)?r:void 0};if(e==="staging")return t("staging","staging");if(e==="main")return t("main","prod")}resolveWithCommon(e,t,...r){return this.wrapAccessor(this.getAccessor(e).traverseWithCommon(t,...r))}getResourceType(e){return this.getAccessor(e).resourceType}getInputsLocked(e){return this.getAccessor(e).getInputsLocked()}getOutputsLocked(e){return this.getAccessor(e).getOutputsLocked()}getIsReadyOrError(e){return this.getAccessor(e).getIsReadyOrError()}getIsFinal(e){return this.getAccessor(e).getIsFinal()}getError(e){return this.wrapAccessor(this.getAccessor(e).getError())}listInputFields(e){return this.getAccessor(e).listInputFields()}listOutputFields(e){return this.getAccessor(e).listOutputFields()}listDynamicFields(e){return this.getAccessor(e).listDynamicFields()}getKeyValueBase64(e,t){return 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,r,...o){const n=this.getAccessor(e);if(!n.getIsReadyOrError())return;const i=Fo(n,t,r,o),a={};for(const[c,u]of Object.entries(i))a[c]=L.mapPObjectData(u,l=>this.wrapAccessor(l));return a}registerComputable(e,t){const r=`${e}_${se.randomUUID()}`;return this.computablesToResolve[r]=t,r}getBlobContentAsString(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsString",B.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("utf-8")}}))}getBlobContentAsBase64(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getBlobContentAsBase64",B.Computable.make(r=>this.env.driverKit.blobDriver.getDownloadedBlob(t,r),{postprocessValue:async r=>{if(r!==void 0)return Buffer.from(await this.env.driverKit.blobDriver.getContent(r.handle)).toString("base64")}}))}getDownloadedBlobContentHandle(e){const t=this.getAccessor(e).resourceInfo;return this.registerComputable("getDownloadedBlobContentHandle",this.env.driverKit.blobDriver.getDownloadedBlob(t))}getOnDemandBlobContentHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getOnDemandBlobContentHandle",this.env.driverKit.blobDriver.getOnDemandBlob(t))}extractArchiveAndGetURL(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("extractArchiveAndGetURL",this.env.driverKit.blobToURLDriver.extractArchiveAndGetURL(r,t))}getImportProgress(e){const t=this.getAccessor(e).persist();return this.registerComputable("getImportProgress",this.env.driverKit.uploadDriver.getProgressId(t))}getLastLogs(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getLastLogs",this.env.driverKit.logDriver.getLastLogs(r,t))}getProgressLog(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLog",this.env.driverKit.logDriver.getProgressLog(r,t))}getProgressLogWithInfo(e,t){const r=this.getAccessor(e).persist();return this.registerComputable("getProgressLogWithInfo",this.env.driverKit.logDriver.getProgressLogWithInfo(r,t))}getLogHandle(e){const t=this.getAccessor(e).persist();return this.registerComputable("getLogHandle",this.env.driverKit.logDriver.getLogHandle(t))}getBlockLabel(e){const t=this.meta.get(e);if(t===void 0)throw new Error(`Block ${e} not found.`);return t.label}get resultPool(){if(this._resultPool===void 0){if(this.computableCtx===void 0)throw new Error("can't use result pool in this context (most porbably called from the future mapper)");this._resultPool=k.notEmpty(this.blockCtx.getResultsPool,"getResultsPool")(this.computableCtx)}return this._resultPool}calculateOptions(e){return this.resultPool.calculateOptions(e)}getDataFromResultPool(){const e=this.resultPool.getData();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:L.mapPObjectData(t.obj,r=>this.wrapAccessor(r))}))}}getDataWithErrorsFromResultPool(){const e=this.resultPool.getDataWithErrors();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`incomplete_result_pool:${e.instabilityMarker}`),{isComplete:e.isComplete,entries:e.entries.map(t=>({ref:t.ref,obj:{id:t.obj.id,spec:t.obj.spec,data:L.mapValueInVOE(t.obj.data,r=>this.wrapAccessor(r))}}))}}getSpecsFromResultPool(){const e=this.resultPool.getSpecs();return e.instabilityMarker!==void 0&&this.computableCtx.markUnstable(`specs_from_pool_incomplete:${e.instabilityMarker}`),e}getSpecFromResultPoolByRef(e,t){return this.resultPool.getSpecByRef(e,t)}getDataFromResultPoolByRef(e,t){return L.mapPObjectData(this.resultPool.getDataByRef(e,t),r=>this.wrapAccessor(r))}createPFrame(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PFrames from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPFrame(e.map(t=>L.mapPObjectData(t,r=>this.transformInputPData(r))),this.computableCtx)}createPTable(e){if(this.computableCtx===void 0)throw new Error("can't instantiate PTable from this context (most porbably called from the future mapper)");return this.env.driverKit.pFrameDriver.createPTable(L.mapPTableDef(e,t=>L.mapPObjectData(t,r=>this.transformInputPData(r))),this.computableCtx)}transformInputPData(e){return typeof e=="string"?this.getAccessor(e):L.isDataInfo(e)?L.mapDataInfo(e,t=>this.getAccessor(t)):e}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=se.randomUUID();return this.accessors.set(t,e),t}}exportSingleValue(e,t){const r=this.tryExportSingleValue(e,t);if(r===void 0)throw new Error(`Can't export value: ${e===void 0?"undefined":JSON.stringify(e)}`);return r}tryExportSingleValue(e,t){let r,o=!1;switch(typeof e){case"string":r=this.vm.newString(e),o=!0;break;case"number":r=this.vm.newNumber(e),o=!0;break;case"undefined":r=this.vm.undefined;break;case"boolean":r=e?this.vm.true:this.vm.false;break;default:if(e===null){r=this.vm.null;break}if(hn(e)){r=this.vm.newArrayBuffer(e),o=!0;break}return}return o&&t!=null?t.manage(r):r}exportObjectUniversal(e,t){const r=this.tryExportSingleValue(e,t);return r!==void 0?r:this.exportObjectViaJson(e,t)}exportObjectViaJson(e,t){const r=this.vm.newString(JSON.stringify(e)).consume(o=>this.vm.unwrapResult(this.vm.callFunction(this.fnJSONParse,this.vm.undefined,o)));return t!==void 0?t.manage(r):r}importObjectUniversal(e){switch(this.vm.typeof(e)){case"undefined":return;case"boolean":case"number":case"string":return this.vm.dump(e);default:return this.importObjectViaJson(e)}}importObjectViaJson(e){const t=this.vm.unwrapResult(this.vm.callFunction(this.fnJSONStringify,this.vm.undefined,e)).consume(r=>this.vm.getString(r));if(t!=="undefined")return JSON.parse(t)}injectCtx(){Oe.Scope.withScope(e=>{const t=e.manage(this.vm.newObject()),r=this.blockCtx.args(this.computableCtx),o=this.blockCtx.activeArgs(this.computableCtx),n=this.blockCtx.uiState(this.computableCtx);this.vm.setProp(t,"args",e.manage(this.vm.newString(r))),n!==void 0&&this.vm.setProp(t,"uiState",e.manage(this.vm.newString(n))),o!==void 0&&this.vm.setProp(t,"activeArgs",e.manage(this.vm.newString(o))),this.vm.setProp(t,"callbackRegistry",this.callbackRegistry),this.vm.setProp(t,"featureFlags",this.exportObjectUniversal(L.JsRenderInternal.GlobalCfgRenderCtxFeatureFlags,e));const i=(a,c)=>{const u=(...l)=>{try{return c(...l)}catch(d){const g=this.errorRepo.setAndRecreateForQuickJS(d);throw this.vm.newError(g)}};this.vm.newFunction(a,u).consume(l=>this.vm.setProp(t,a,l)),this.vm.newFunction(a,c).consume(l=>this.vm.setProp(t,a+"__internal__",l))};i("getAccessorHandleByName",a=>this.exportSingleValue(this.getAccessorHandleByName(this.vm.getString(a)),void 0)),i("resolveWithCommon",(a,c,...u)=>this.exportSingleValue(this.resolveWithCommon(this.vm.getString(a),this.importObjectViaJson(c),...u.map(l=>this.importObjectViaJson(l))),void 0)),i("getResourceType",a=>this.exportObjectViaJson(this.getResourceType(this.vm.getString(a)),void 0)),i("getInputsLocked",a=>this.exportSingleValue(this.getInputsLocked(this.vm.getString(a)),void 0)),i("getOutputsLocked",a=>this.exportSingleValue(this.getOutputsLocked(this.vm.getString(a)),void 0)),i("getIsReadyOrError",a=>this.exportSingleValue(this.getIsReadyOrError(this.vm.getString(a)),void 0)),i("getIsFinal",a=>this.exportSingleValue(this.getIsFinal(this.vm.getString(a)),void 0)),i("getError",a=>this.exportSingleValue(this.getError(this.vm.getString(a)),void 0)),i("listInputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listOutputFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("listDynamicFields",a=>this.exportObjectViaJson(this.listInputFields(this.vm.getString(a)),void 0)),i("getKeyValueBase64",(a,c)=>this.exportSingleValue(this.getKeyValueBase64(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getKeyValueAsString",(a,c)=>this.exportSingleValue(this.getKeyValueAsString(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataBase64",a=>this.exportSingleValue(this.getDataBase64(this.vm.getString(a)),void 0)),i("getDataAsString",a=>this.exportSingleValue(this.getDataAsString(this.vm.getString(a)),void 0)),i("parsePObjectCollection",(a,c,u,...l)=>this.exportObjectUniversal(this.parsePObjectCollection(this.vm.getString(a),this.vm.dump(c),this.vm.getString(u),...l.map(d=>this.vm.getString(d))),void 0)),i("getBlobContentAsBase64",a=>this.exportSingleValue(this.getBlobContentAsBase64(this.vm.getString(a)),void 0)),i("getBlobContentAsString",a=>this.exportSingleValue(this.getBlobContentAsString(this.vm.getString(a)),void 0)),i("getDownloadedBlobContentHandle",a=>this.exportSingleValue(this.getDownloadedBlobContentHandle(this.vm.getString(a)),void 0)),i("getOnDemandBlobContentHandle",a=>this.exportSingleValue(this.getOnDemandBlobContentHandle(this.vm.getString(a)),void 0)),i("extractArchiveAndGetURL",(a,c)=>this.exportSingleValue(this.extractArchiveAndGetURL(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getImportProgress",a=>this.exportSingleValue(this.getImportProgress(this.vm.getString(a)),void 0)),i("getLastLogs",(a,c)=>this.exportSingleValue(this.getLastLogs(this.vm.getString(a),this.vm.getNumber(c)),void 0)),i("getProgressLog",(a,c)=>this.exportSingleValue(this.getProgressLog(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getProgressLogWithInfo",(a,c)=>this.exportSingleValue(this.getProgressLogWithInfo(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getLogHandle",a=>this.exportSingleValue(this.getLogHandle(this.vm.getString(a)),void 0)),i("getBlockLabel",a=>this.exportSingleValue(this.getBlockLabel(this.vm.getString(a)),void 0)),i("getDataFromResultPool",()=>this.exportObjectUniversal(this.getDataFromResultPool(),void 0)),i("getDataWithErrorsFromResultPool",()=>this.exportObjectUniversal(this.getDataWithErrorsFromResultPool(),void 0)),i("getSpecsFromResultPool",()=>this.exportObjectUniversal(this.getSpecsFromResultPool(),void 0)),i("calculateOptions",a=>this.exportObjectUniversal(this.calculateOptions(this.importObjectViaJson(a)),void 0)),i("getSpecFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getSpecFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("getDataFromResultPoolByRef",(a,c)=>this.exportObjectUniversal(this.getDataFromResultPoolByRef(this.vm.getString(a),this.vm.getString(c)),void 0)),i("createPFrame",a=>this.exportSingleValue(this.createPFrame(this.importObjectViaJson(a)),void 0)),i("createPTable",a=>this.exportSingleValue(this.createPTable(this.importObjectViaJson(a)),void 0)),i("getCurrentUnstableMarker",()=>this.exportSingleValue(this.getCurrentUnstableMarker(),void 0)),this.vm.setProp(this.vm.global,"cfgRenderCtx",t)})}}class fn{constructor(){w(this,"errorIdToError",new Map)}setAndRecreateForQuickJS(e){const t=se.randomUUID();return this.errorIdToError.set(t,e),e instanceof Error?{name:`${e.name}/uuid:${t}`,message:e.message}:{name:`UnknownErrorQuickJS/uuid:${t}`,message:`${e}`}}getOriginal(e){if(!(e instanceof Oe.errors.QuickJSUnwrapError))return console.warn("ErrorRepo: quickJSError is not a QuickJSUnwrapError",h.stringifyWithResourceId(e)),e;if(!("name"in e.cause))return console.warn("ErrorRepo: quickJSError.cause is not an Error",h.stringifyWithResourceId(e)),e;const t=e.cause.name,r=t.slice(t.indexOf("/uuid:")+6);if(!r)throw new Error(`ErrorRepo: quickJSError.cause.name does not contain errorId: ${t}, ${h.stringifyWithResourceId(e)}`);const o=this.errorIdToError.get(r);if(o===void 0)throw new Error(`ErrorRepo: errorId not found: ${r}, ${h.stringifyWithResourceId(e)}`);return new gn(e,o)}}class gn extends Error{constructor(t,r){var o;super("",{cause:r});w(this,"stack");this.name="ModelError",this.stack=((o=t.stack)==null?void 0:o.replace(t.message,""))??"",this.stack=this.stack.replace(r.message,""),this.message=this.toString()}toString(){var r;return`ModelError: ${(r=this.cause)==null?void 0:r.message}
|
|
2
2
|
QuickJS stacktrace:
|
|
3
3
|
${this.stack}
|
|
4
|
-
`}}function Ze(s,e){return Re(s.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:h.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),t=>{const r=t.getDataAsJson(),o=D.extractConfig(r.config);return{bpId:t.resourceInfo.id.toString(),info:r,cfg:o}})}const xe=process.env.MI_LOG_OUTPUT_STATUS;function Pn(s,e,t,r,o,n={}){const i=`${e.blockId}#lambda#${o}#${t.handle}`;return n={...n,key:i},n.mode===void 0&&t.retentive===!0&&(n.mode="StableOnlyRetentive"),B.Computable.makeRaw(a=>{const c=new $e.Scope;a.addOnDestroy(()=>c.dispose());const u=c.manage(s.quickJs.newRuntime());u.setMemoryLimit(1024*1024*8),u.setMaxStackSize(1024*320);const l=c.manage(u.newContext()),d=new We(c,l,e,s,a);d.evaluateBundle(r.content);const g=d.runCallback(t.handle);d.resetComputableCtx();let f=0;return xe&&xe!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:(E,{unstableMarker:m,stable:x})=>{for(const[U,I]of Object.entries(E))d.runCallback(U,I);const L=d.importObjectUniversal(g);return f++,xe&&(xe!=="unstable-only"||!x)&&console.log(x?`Stable output ${t.handle} calculated ${L!==void 0?"defined":"undefined"}; (#${f})`:`Unstable output ${t.handle}; marker = ${m}; ${L!==void 0?"defined":"undefined"} (#${f})`),L}}},n)}function Cn(s){return D.isConfigLambda(s)?s.isActive===!0:Uo(s)}function ke(s,e,t,r,o,n={}){if(D.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return Pn(s,e,t,r,o,n)}else return yn(s.driverKit,e,t,n)}function En(s,e,t){return B.Computable.make(r=>{var E,m,x,L,U,I,M,he;const o=r.accessor(s).node(),n=k.notEmpty(o.getKeyValueAsJson($t)),i=k.notEmpty(o.getKeyValueAsJson(Te)),a=k.notEmpty(o.getKeyValueAsJson(Ie)),c=k.notEmpty(o.getKeyValueAsJson(pe)),u=k.notEmpty(o.getKeyValueAsJson(He)),l=new Map;for(const{id:N}of ce(c)){const Y=o.traverse({field:G(N,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let ue;const z=o.traverse({field:G(N,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(z!==void 0){const _=o.getField({field:G(N,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),J=o.getField({field:G(N,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});ue={arguments:z.getDataAsJson(),stale:Y.id!==z.id,outputError:_.error!==void 0||J.error!==void 0||((E=_.value)==null?void 0:E.getError())!==void 0||((m=J.value)==null?void 0:m.getError())!==void 0,outputsError:((x=_.error)==null?void 0:x.getDataAsString())??((U=(L=_.value)==null?void 0:L.getError())==null?void 0:U.getDataAsString()),exportsError:((I=J.error)==null?void 0:I.getDataAsString())??((he=(M=J.value)==null?void 0:M.getError())==null?void 0:he.getDataAsString()),finished:(_.value!==void 0&&_.value.getIsReadyOrError()||_.error!==void 0&&_.error.getIsReadyOrError())&&(J.value!==void 0&&J.value.getIsReadyOrError()||J.error!==void 0&&J.error.getIsReadyOrError())}}l.set(N,{currentArguments:Y.getDataAsJson(),prod:ue})}const d=_e(c,N=>l.get(N).currentArguments),g=new Set(u.blocksInLimbo),f=[...ce(c)].map(({id:N,label:Y,renderingMode:ue})=>{var b,C,T,R,A;const z=k.notEmpty(l.get(N)),_=k.notEmpty(d.nodes.get(N));let J="NotCalculated";z.prod!==void 0&&(g.has(N)?J="Limbo":J=z.prod.finished?"Done":"Running");const Q=Ze(o,N),{sections:fe,title:y,inputsValid:p,sdkVersion:v}=Re(Q,({bpId:V,cfg:F})=>{const le=Dt(s,N);return{sections:ke(t,le,F.sections,F.code,V).wrap({recover:we=>(t.logger.error("Error in block model sections"),t.logger.error(we),[])}),title:Re(F.title,we=>ke(t,le,we,F.code,V).wrap({recover:vs=>(t.logger.error("Error in block model title"),t.logger.error(vs),"Invalid title")})),inputsValid:ke(t,le,F.inputsValid,F.code,V).wrap({recover:we=>(t.logger.error("Error in block model argsValid"),t.logger.error(we),!1)}),sdkVersion:F.sdkVersion}})||{},S=o.traverse({field:G(N,"blockSettings"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0}).getDataAsJson(),P=Re(Q,({info:V})=>t.blockUpdateWatcher.get({currentSpec:V.source,settings:S}));return{projectResourceId:h.resourceIdToString(s.rid),id:N,label:y??Y,title:y??Y,renderingMode:ue,stale:((b=z.prod)==null?void 0:b.stale)!==!1||J==="Limbo",missingReference:_.missingReferences,upstreams:[...d.traverseIdsExcludingRoots("upstream",N)],downstreams:[...d.traverseIdsExcludingRoots("downstream",N)],calculationStatus:J,outputErrors:((C=z.prod)==null?void 0:C.outputError)===!0,outputsError:(T=z.prod)==null?void 0:T.outputsError,exportsError:(R=z.prod)==null?void 0:R.exportsError,settings:S,sections:fe,inputsValid:p,updateInfo:{},currentBlockPack:(A=Q==null?void 0:Q.info)==null?void 0:A.source,updates:P,sdkVersion:v,navigationState:e.getState(N)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(yt),blocks:f}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{var l,d;i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const a=i.stale||i.upstreams.findIndex(g=>n.has(g))!==-1,c=(a||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(g=>o.has(g))===-1,u={...i,canRun:c,stale:a,updateSuggestions:((l=i.updates)==null?void 0:l.suggestions)??[],updatedBlockPack:(d=i.updates)==null?void 0:d.mainSuggestion};return delete u.updates,u})}}}).withStableType()}function Rn(s,e){const t=s.node();if(h.resourceTypesEqual(t.resourceType,It)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.frontendDownloadDriver.getPath(new URL(r.url)).withStableType()}else if(h.resourceTypesEqual(t.resourceType,Ft)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.signer.verify(r.path,r.signature,`Frontend path signature mismatch for: ${r.path}`),r.path}else throw new Error(`Unsupported resource type: ${JSON.stringify(t.resourceType)}`)}function kn(s,e){if(s!==void 0)return B.Computable.make(t=>Rn(t.accessor(s),e),{postprocessValue:t=>{if(t!==void 0){if(typeof t=="string")return t;if(t.error!==void 0)throw new Error(t.error);return t.path}}}).withStableType()}function On(s,e,t){return B.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Ze(o,e),i=(a=o.traverse({field:G(e,"blockPack"),assertFieldType:"Dynamic"},{field:h.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:Xr,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:kn(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function is(s,e,t){if(t===void 0)return B.Computable.make(i=>is(s,e,i),{key:`inputs#${h.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=Dt(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(vt(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function $n(s,e,t){return B.Computable.make(r=>{const o=r.accessor(s).node(),n=es(s,e);return Re(Ze(o,e),({cfg:i,bpId:a})=>{const c={};for(const[u,l]of Object.entries(i.outputs)){const d=ke(t,n,l,i.code,a);c[u]=B.Computable.wrapError(d)}return c})},{key:"outputs#"+h.resourceIdToString(s.rid)+"#"+e}).withStableType()}function Tn(s,e){return B.Computable.make(t=>{const r=t.accessor(s).node(),o=k.notEmpty(r.getKeyValueAsJson(pe)),n=[];for(const{id:i}of ce(o)){const a=Ze(r,i);if(a===void 0)continue;const c=Object.entries(a.cfg.outputs).map(([,l])=>l).filter(l=>Cn(l)).map(l=>l);if(c.length===0)continue;const u=es(r.persist(),i);for(const l of c)n.push(B.Computable.wrapError(ke(e,u,l,a.cfg.code,a.bpId)))}return n})}class In{constructor(){w(this,"states",new Map)}setState(e,t){const r=this.states.get(e);if(r===void 0){this.states.set(e,{state:t,change:new B.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...D.DefaultNavigationState},change:new B.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return B.Computable.make(t=>this.readState(t,e),{key:`navigationState#${e}`})}deleteBlock(e){const t=this.states.get(e);t!==void 0&&(this.states.delete(e),t.change.markChanged())}}function ur(s){return JSON.stringify(s,(e,t)=>typeof t=="bigint"?h.resourceIdToString(t):ArrayBuffer.isView(t)||t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array||t instanceof BigInt64Array||t instanceof BigUint64Array?Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64"):Buffer.isBuffer(t)?t.toString("base64"):t)}class et{constructor(e,t,r){w(this,"rid");w(this,"overview");w(this,"navigationStates",new In);w(this,"blockComputables",new Map);w(this,"blockFrontends",new Map);w(this,"activeConfigs");w(this,"refreshLoopResult");w(this,"abortController",new AbortController);w(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=En(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=Tn(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await je(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await Br.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(h.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!h.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=se.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfigContainer(t),c=D.extractConfig(a);return await te(this.env.pl,this.rid,o,u=>u.addBlock({id:n,label:e,renderingMode:c.renderingMode},{args:JSON.stringify(c.initialArgs),uiState:JSON.stringify(c.initialUiState),blockPack:i},r)),await this.projectTree.refreshState(),n}async updateBlockPack(e,t,r=!1,o){const n=await this.env.bpPreparer.prepare(t),i=await this.env.bpPreparer.getBlockConfigContainer(t);await te(this.env.pl,this.rid,o,a=>a.migrateBlockPack(e,n,r?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await te(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await te(this.env.pl,this.rid,t,r=>{const o=r.structure;if(o.groups.length!==1)throw new Error("Unexpected project structure, non-sinular block group");const n=o.groups[0];if(n.blocks.length!==e.length)throw new Error(`Lengh mismatch: ${n.blocks.length} !== ${e.length}`);if(new Set(e).size!==e.length)throw new Error("Repeated block ids");const i={groups:[{id:n.id,label:n.label,blocks:e.map(a=>{const c=n.blocks.find(u=>u.id===a);if(c===void 0)throw new Error(`Can't find block: ${a}`);return c})}]};r.updateStructure(i)}),await this.projectTree.refreshState()}async runBlock(e){await je(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await je(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await te(this.env.pl,this.rid,r,o=>o.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,r){await te(this.env.pl,this.rid,r,o=>o.setUiState(e,t===void 0?void 0:JSON.stringify(t))),await this.projectTree.refreshState()}async setNavigationState(e,t){this.navigationStates.setState(e,t)}async setBlockArgsAndUiState(e,t,r,o){await te(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async setBlockSettings(e,t){await te(this.env.pl,this.rid,void 0,r=>{r.setBlockSettings(e,t)}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=h.ensureResourceIdNotNull((await r.getField(h.field(this.rid,G(e,"blockPack")))).value),n=h.ensureResourceIdNotNull((await r.getField(h.field(o,h.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),a=JSON.parse(Buffer.from(k.notEmpty(i.data)).toString("utf-8"));await te(r,this.rid,t,c=>{c.setArgs([{blockId:e,args:JSON.stringify(a.config.initialArgs)}]),c.setUiState(e,void 0)}),await r.commit()}),await this.projectTree.refreshState()}getBlockComputables(e){const t=this.blockComputables.get(e);if(t===void 0){const r=$n(this.projectTree.entry(),e,this.env),n={fullState:B.Computable.make(i=>({argsAndUiState:is(this.projectTree.entry(),e,i),outputs:r,navigationState:this.navigationStates.getState(e)}),{postprocessValue:i=>({...i.argsAndUiState,outputs:i.outputs,navigationState:i.navigationState})}).withPreCalculatedValueTree()};return this.blockComputables.set(e,n),n}return t}getBlockState(e){return this.getBlockComputables(e).fullState}getBlockFrontend(e){const t=this.blockFrontends.get(e);if(t===void 0){const r=On(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,r),r}return t}async destroy(){this.destroyed=!0,this.abortController.abort(),await this.refreshLoopResult,await this.projectTree.terminate(),this.overview.resetState(),this.blockFrontends.forEach(e=>e.resetState()),this.blockComputables.forEach(e=>{e.fullState.resetState()}),this.activeConfigs.resetState()}async destroyAndAwaitTermination(){await this.destroy()}static async init(e,t){await je(e.pl,t,o=>{});const r=await Ke.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:Fn},e.logger);if(e.ops.debugOps.dumpInitialTreeState){const o=r.dumpState();o.sort((i,a)=>{var c,u;return(((c=a.data)==null?void 0:c.byteLength)??0)-(((u=i.data)==null?void 0:u.byteLength)??0)});const n=Ke.treeDumpStats(o);await gt.writeFile(`${h.resourceIdToString(t)}.json`,ur(o)),await gt.writeFile(`${h.resourceIdToString(t)}.stats.json`,ur(n))}return new et(e,t,r)}}function Fn(s){switch(s.type.name){case"BlockPackCustom":return s.fields.filter(e=>e.name!=="template");case"UserProject":return s.fields.filter(e=>!e.name.startsWith("__serviceTemplate"));case"Blob":return[];default:return s.fields}}const Lt={logger:new k.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:8*1024*1024*1024,nConcurrentDownloads:10},downloadBlobToURLDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function Nt(s){return{blobDownloadPath:q.join(s,"download"),downloadBlobToURLPath:q.join(s,"downloadToURL")}}const as={...Lt,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500,initialTreeLoadingTimeout:100*60*60*1e3},debugOps:{dumpInitialTreeState:!1},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function cs(s){return{...Nt(s),frontendDownloadPath:q.join(s,"frontend")}}function An(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var Ct={exports:{}};const Dn="2.0.0",ls=256,Ln=Number.MAX_SAFE_INTEGER||9007199254740991,Nn=16,Bn=ls-6,jn=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var tt={MAX_LENGTH:ls,MAX_SAFE_COMPONENT_LENGTH:Nn,MAX_SAFE_BUILD_LENGTH:Bn,MAX_SAFE_INTEGER:Ln,RELEASE_TYPES:jn,SEMVER_SPEC_VERSION:Dn,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const xn=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var rt=xn;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=tt,n=rt;e=s.exports={};const i=e.re=[],a=e.safeRe=[],c=e.src=[],u=e.safeSrc=[],l=e.t={};let d=0;const g="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",o],[g,r]],E=x=>{for(const[L,U]of f)x=x.split(`${L}*`).join(`${L}{0,${U}}`).split(`${L}+`).join(`${L}{1,${U}}`);return x},m=(x,L,U)=>{const I=E(L),M=d++;n(x,M,L),l[x]=M,c[M]=L,u[M]=I,i[M]=new RegExp(L,U?"g":void 0),a[M]=new RegExp(I,U?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${g}*`),m("MAINVERSION",`(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${c[l.NUMERICIDENTIFIER]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${c[l.NUMERICIDENTIFIERLOOSE]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${c[l.PRERELEASEIDENTIFIER]}(?:\\.${c[l.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${c[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[l.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${g}+`),m("BUILD",`(?:\\+(${c[l.BUILDIDENTIFIER]}(?:\\.${c[l.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${c[l.MAINVERSION]}${c[l.PRERELEASE]}?${c[l.BUILD]}?`),m("FULL",`^${c[l.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${c[l.MAINVERSIONLOOSE]}${c[l.PRERELEASELOOSE]}?${c[l.BUILD]}?`),m("LOOSE",`^${c[l.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${c[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${c[l.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:${c[l.PRERELEASE]})?${c[l.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:${c[l.PRERELEASELOOSE]})?${c[l.BUILD]}?)?)?`),m("XRANGE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),m("COERCE",`${c[l.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",c[l.COERCEPLAIN]+`(?:${c[l.PRERELEASE]})?(?:${c[l.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",c[l.COERCE],!0),m("COERCERTLFULL",c[l.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${c[l.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",m("TILDE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${c[l.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",m("CARET",`^${c[l.LONECARET]}${c[l.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${c[l.LONECARET]}${c[l.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${c[l.GTLT]}\\s*(${c[l.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]}|${c[l.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${c[l.XRANGEPLAIN]})\\s+-\\s+(${c[l.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${c[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[l.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(Ct,Ct.exports);var Fe=Ct.exports;const Vn=Object.freeze({loose:!0}),Un=Object.freeze({}),Jn=s=>s?typeof s!="object"?Vn:s:Un;var Bt=Jn;const dr=/^[0-9]+$/,us=(s,e)=>{const t=dr.test(s),r=dr.test(e);return t&&r&&(s=+s,e=+e),s===e?0:t&&!r?-1:r&&!t?1:s<e?-1:1},Gn=(s,e)=>us(e,s);var ds={compareIdentifiers:us,rcompareIdentifiers:Gn};const Ve=rt,{MAX_LENGTH:pr,MAX_SAFE_INTEGER:Ue}=tt,{safeRe:hr,safeSrc:fr,t:Je}=Fe,Mn=Bt,{compareIdentifiers:ge}=ds;let _n=class ie{constructor(e,t){if(t=Mn(t),e instanceof ie){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>pr)throw new TypeError(`version is longer than ${pr} characters`);Ve("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?hr[Je.LOOSE]:hr[Je.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>Ue||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Ue||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Ue||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const n=+o;if(n>=0&&n<Ue)return n}return o}):this.prerelease=[],this.build=r[5]?r[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(Ve("SemVer.compare",this.version,this.options,e),!(e instanceof ie)){if(typeof e=="string"&&e===this.version)return 0;e=new ie(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof ie||(e=new ie(e,this.options)),ge(this.major,e.major)||ge(this.minor,e.minor)||ge(this.patch,e.patch)}comparePre(e){if(e instanceof ie||(e=new ie(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const r=this.prerelease[t],o=e.prerelease[t];if(Ve("prerelease compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return ge(r,o)}while(++t)}compareBuild(e){e instanceof ie||(e=new ie(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(Ve("build compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return ge(r,o)}while(++t)}inc(e,t,r){if(e.startsWith("pre")){if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(t){const o=new RegExp(`^${this.options.loose?fr[Je.PRERELEASELOOSE]:fr[Je.PRERELEASE]}$`),n=`-${t}`.match(o);if(!n||n[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const o=Number(r)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let n=[t,o];r===!1&&(n=[t]),ge(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var W=_n;const gr=W,Kn=(s,e,t=!1)=>{if(s instanceof gr)return s;try{return new gr(s,e)}catch(r){if(!t)return null;throw r}};var Se=Kn;const Hn=Se,qn=(s,e)=>{const t=Hn(s,e);return t?t.version:null};var Wn=qn;const zn=Se,Xn=(s,e)=>{const t=zn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Yn=Xn;const mr=W,Qn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new mr(s instanceof mr?s.version:s,t).inc(e,r,o).version}catch{return null}};var Zn=Qn;const vr=Se,ei=(s,e)=>{const t=vr(s,null,!0),r=vr(e,null,!0),o=t.compare(r);if(o===0)return null;const n=o>0,i=n?t:r,a=n?r:t,c=!!i.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}const l=c?"pre":"";return t.major!==r.major?l+"major":t.minor!==r.minor?l+"minor":t.patch!==r.patch?l+"patch":"prerelease"};var ti=ei;const ri=W,si=(s,e)=>new ri(s,e).major;var oi=si;const ni=W,ii=(s,e)=>new ni(s,e).minor;var ai=ii;const ci=W,li=(s,e)=>new ci(s,e).patch;var ui=li;const di=Se,pi=(s,e)=>{const t=di(s,e);return t&&t.prerelease.length?t.prerelease:null};var hi=pi;const yr=W,fi=(s,e,t)=>new yr(s,t).compare(new yr(e,t));var oe=fi;const gi=oe,mi=(s,e,t)=>gi(e,s,t);var vi=mi;const yi=oe,Si=(s,e)=>yi(s,e,!0);var wi=Si;const Sr=W,bi=(s,e,t)=>{const r=new Sr(s,t),o=new Sr(e,t);return r.compare(o)||r.compareBuild(o)};var jt=bi;const Pi=jt,Ci=(s,e)=>s.sort((t,r)=>Pi(t,r,e));var Ei=Ci;const Ri=jt,ki=(s,e)=>s.sort((t,r)=>Ri(r,t,e));var Oi=ki;const $i=oe,Ti=(s,e,t)=>$i(s,e,t)>0;var st=Ti;const Ii=oe,Fi=(s,e,t)=>Ii(s,e,t)<0;var xt=Fi;const Ai=oe,Di=(s,e,t)=>Ai(s,e,t)===0;var ps=Di;const Li=oe,Ni=(s,e,t)=>Li(s,e,t)!==0;var hs=Ni;const Bi=oe,ji=(s,e,t)=>Bi(s,e,t)>=0;var Vt=ji;const xi=oe,Vi=(s,e,t)=>xi(s,e,t)<=0;var Ut=Vi;const Ui=ps,Ji=hs,Gi=st,Mi=Vt,_i=xt,Ki=Ut,Hi=(s,e,t,r)=>{switch(e){case"===":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s===t;case"!==":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s!==t;case"":case"=":case"==":return Ui(s,t,r);case"!=":return Ji(s,t,r);case">":return Gi(s,t,r);case">=":return Mi(s,t,r);case"<":return _i(s,t,r);case"<=":return Ki(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var fs=Hi;const qi=W,Wi=Se,{safeRe:Ge,t:Me}=Fe,zi=(s,e)=>{if(s instanceof qi)return s;if(typeof s=="number"&&(s=String(s)),typeof s!="string")return null;e=e||{};let t=null;if(!e.rtl)t=s.match(e.includePrerelease?Ge[Me.COERCEFULL]:Ge[Me.COERCE]);else{const c=e.includePrerelease?Ge[Me.COERCERTLFULL]:Ge[Me.COERCERTL];let u;for(;(u=c.exec(s))&&(!t||t.index+t[0].length!==s.length);)(!t||u.index+u[0].length!==t.index+t[0].length)&&(t=u),c.lastIndex=u.index+u[1].length+u[2].length;c.lastIndex=-1}if(t===null)return null;const r=t[2],o=t[3]||"0",n=t[4]||"0",i=e.includePrerelease&&t[5]?`-${t[5]}`:"",a=e.includePrerelease&&t[6]?`+${t[6]}`:"";return Wi(`${r}.${o}.${n}${i}${a}`,e)};var Xi=zi;class Yi{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 Qi=Yi,lt,wr;function ne(){if(wr)return lt;wr=1;const s=/\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(s," "),this.set=this.raw.split("||").map(S=>this.parseRange(S.trim())).filter(S=>S.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const S=this.set[0];if(this.set=this.set.filter(P=>!m(P[0])),this.set.length===0)this.set=[S];else if(this.set.length>1){for(const P of this.set)if(P.length===1&&x(P[0])){this.set=[P];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let p=0;p<this.set.length;p++){p>0&&(this.formatted+="||");const v=this.set[p];for(let S=0;S<v.length;S++)S>0&&(this.formatted+=" "),this.formatted+=v[S].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const S=((this.options.includePrerelease&&f)|(this.options.loose&&E))+":"+p,P=r.get(S);if(P)return P;const b=this.options.loose,C=b?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];p=p.replace(C,Q(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(c[u.COMPARATORTRIM],l),i("comparator trim",p),p=p.replace(c[u.TILDETRIM],d),i("tilde trim",p),p=p.replace(c[u.CARETTRIM],g),i("caret trim",p);let T=p.split(" ").map(F=>U(F,this.options)).join(" ").split(/\s+/).map(F=>J(F,this.options));b&&(T=T.filter(F=>(i("loose invalid filter",F,this.options),!!F.match(c[u.COMPARATORLOOSE])))),i("range list",T);const R=new Map,A=T.map(F=>new n(F,this.options));for(const F of A){if(m(F))return[F];R.set(F.value,F)}R.size>1&&R.has("")&&R.delete("");const V=[...R.values()];return r.set(S,V),V}intersects(p,v){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(S=>L(S,v)&&p.set.some(P=>L(P,v)&&S.every(b=>P.every(C=>b.intersects(C,v)))))}test(p){if(!p)return!1;if(typeof p=="string")try{p=new a(p,this.options)}catch{return!1}for(let v=0;v<this.set.length;v++)if(fe(this.set[v],p,this.options))return!0;return!1}}lt=e;const t=Qi,r=new t,o=Bt,n=ot(),i=rt,a=W,{safeRe:c,t:u,comparatorTrimReplace:l,tildeTrimReplace:d,caretTrimReplace:g}=Fe,{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:E}=tt,m=y=>y.value==="<0.0.0-0",x=y=>y.value==="",L=(y,p)=>{let v=!0;const S=y.slice();let P=S.pop();for(;v&&S.length;)v=S.every(b=>P.intersects(b,p)),P=S.pop();return v},U=(y,p)=>(i("comp",y,p),y=N(y,p),i("caret",y),y=M(y,p),i("tildes",y),y=ue(y,p),i("xrange",y),y=_(y,p),i("stars",y),y),I=y=>!y||y.toLowerCase()==="x"||y==="*",M=(y,p)=>y.trim().split(/\s+/).map(v=>he(v,p)).join(" "),he=(y,p)=>{const v=p.loose?c[u.TILDELOOSE]:c[u.TILDE];return y.replace(v,(S,P,b,C,T)=>{i("tilde",y,S,P,b,C,T);let R;return I(P)?R="":I(b)?R=`>=${P}.0.0 <${+P+1}.0.0-0`:I(C)?R=`>=${P}.${b}.0 <${P}.${+b+1}.0-0`:T?(i("replaceTilde pr",T),R=`>=${P}.${b}.${C}-${T} <${P}.${+b+1}.0-0`):R=`>=${P}.${b}.${C} <${P}.${+b+1}.0-0`,i("tilde return",R),R})},N=(y,p)=>y.trim().split(/\s+/).map(v=>Y(v,p)).join(" "),Y=(y,p)=>{i("caret",y,p);const v=p.loose?c[u.CARETLOOSE]:c[u.CARET],S=p.includePrerelease?"-0":"";return y.replace(v,(P,b,C,T,R)=>{i("caret",y,P,b,C,T,R);let A;return I(b)?A="":I(C)?A=`>=${b}.0.0${S} <${+b+1}.0.0-0`:I(T)?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}.${T}-${R} <${b}.${C}.${+T+1}-0`:A=`>=${b}.${C}.${T}-${R} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.${T}-${R} <${+b+1}.0.0-0`):(i("no pr"),b==="0"?C==="0"?A=`>=${b}.${C}.${T}${S} <${b}.${C}.${+T+1}-0`:A=`>=${b}.${C}.${T}${S} <${b}.${+C+1}.0-0`:A=`>=${b}.${C}.${T} <${+b+1}.0.0-0`),i("caret return",A),A})},ue=(y,p)=>(i("replaceXRanges",y,p),y.split(/\s+/).map(v=>z(v,p)).join(" ")),z=(y,p)=>{y=y.trim();const v=p.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return y.replace(v,(S,P,b,C,T,R)=>{i("xRange",y,S,P,b,C,T,R);const A=I(b),V=A||I(C),F=V||I(T),le=F;return P==="="&&le&&(P=""),R=p.includePrerelease?"-0":"",A?P===">"||P==="<"?S="<0.0.0-0":S="*":P&&le?(V&&(C=0),T=0,P===">"?(P=">=",V?(b=+b+1,C=0,T=0):(C=+C+1,T=0)):P==="<="&&(P="<",V?b=+b+1:C=+C+1),P==="<"&&(R="-0"),S=`${P+b}.${C}.${T}${R}`):V?S=`>=${b}.0.0${R} <${+b+1}.0.0-0`:F&&(S=`>=${b}.${C}.0${R} <${b}.${+C+1}.0-0`),i("xRange return",S),S})},_=(y,p)=>(i("replaceStars",y,p),y.trim().replace(c[u.STAR],"")),J=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(c[p.includePrerelease?u.GTE0PRE:u.GTE0],"")),Q=y=>(p,v,S,P,b,C,T,R,A,V,F,le)=>(I(S)?v="":I(P)?v=`>=${S}.0.0${y?"-0":""}`:I(b)?v=`>=${S}.${P}.0${y?"-0":""}`:C?v=`>=${v}`:v=`>=${v}${y?"-0":""}`,I(A)?R="":I(V)?R=`<${+A+1}.0.0-0`:I(F)?R=`<${A}.${+V+1}.0-0`:le?R=`<=${A}.${V}.${F}-${le}`:y?R=`<${A}.${V}.${+F+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 lt}var ut,br;function ot(){if(br)return ut;br=1;const s=Symbol("SemVer ANY");class e{static get ANY(){return s}constructor(l,d){if(d=t(d),l instanceof e){if(l.loose===!!d.loose)return l;l=l.value}l=l.trim().split(/\s+/).join(" "),i("comparator",l,d),this.options=d,this.loose=!!d.loose,this.parse(l),this.semver===s?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}parse(l){const d=this.options.loose?r[o.COMPARATORLOOSE]:r[o.COMPARATOR],g=l.match(d);if(!g)throw new TypeError(`Invalid comparator: ${l}`);this.operator=g[1]!==void 0?g[1]:"",this.operator==="="&&(this.operator=""),g[2]?this.semver=new a(g[2],this.options.loose):this.semver=s}toString(){return this.value}test(l){if(i("Comparator.test",l,this.options.loose),this.semver===s||l===s)return!0;if(typeof l=="string")try{l=new a(l,this.options)}catch{return!1}return n(l,this.operator,this.semver,this.options)}intersects(l,d){if(!(l instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new c(l.value,d).test(this.value):l.operator===""?l.value===""?!0:new c(this.value,d).test(l.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||l.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||l.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&l.operator.startsWith(">")||this.operator.startsWith("<")&&l.operator.startsWith("<")||this.semver.version===l.semver.version&&this.operator.includes("=")&&l.operator.includes("=")||n(this.semver,"<",l.semver,d)&&this.operator.startsWith(">")&&l.operator.startsWith("<")||n(this.semver,">",l.semver,d)&&this.operator.startsWith("<")&&l.operator.startsWith(">")))}}ut=e;const t=Bt,{safeRe:r,t:o}=Fe,n=fs,i=rt,a=W,c=ne();return ut}const Zi=ne(),ea=(s,e,t)=>{try{e=new Zi(e,t)}catch{return!1}return e.test(s)};var nt=ea;const ta=ne(),ra=(s,e)=>new ta(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var sa=ra;const oa=W,na=ne(),ia=(s,e,t)=>{let r=null,o=null,n=null;try{n=new na(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new oa(r,t))}),r};var aa=ia;const ca=W,la=ne(),ua=(s,e,t)=>{let r=null,o=null,n=null;try{n=new la(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new ca(r,t))}),r};var da=ua;const dt=W,pa=ne(),Pr=st,ha=(s,e)=>{s=new pa(s,e);let t=new dt("0.0.0");if(s.test(t)||(t=new dt("0.0.0-0"),s.test(t)))return t;t=null;for(let r=0;r<s.set.length;++r){const o=s.set[r];let n=null;o.forEach(i=>{const a=new dt(i.semver.version);switch(i.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!n||Pr(a,n))&&(n=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${i.operator}`)}}),n&&(!t||Pr(t,n))&&(t=n)}return t&&s.test(t)?t:null};var fa=ha;const ga=ne(),ma=(s,e)=>{try{return new ga(s,e).range||"*"}catch{return null}};var va=ma;const ya=W,gs=ot(),{ANY:Sa}=gs,wa=ne(),ba=nt,Cr=st,Er=xt,Pa=Ut,Ca=Vt,Ea=(s,e,t,r)=>{s=new ya(s,r),e=new wa(e,r);let o,n,i,a,c;switch(t){case">":o=Cr,n=Pa,i=Er,a=">",c=">=";break;case"<":o=Er,n=Ca,i=Cr,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ba(s,e,r))return!1;for(let u=0;u<e.set.length;++u){const l=e.set[u];let d=null,g=null;if(l.forEach(f=>{f.semver===Sa&&(f=new gs(">=0.0.0")),d=d||f,g=g||f,o(f.semver,d.semver,r)?d=f:i(f.semver,g.semver,r)&&(g=f)}),d.operator===a||d.operator===c||(!g.operator||g.operator===a)&&n(s,g.semver))return!1;if(g.operator===c&&i(s,g.semver))return!1}return!0};var Jt=Ea;const Ra=Jt,ka=(s,e,t)=>Ra(s,e,">",t);var Oa=ka;const $a=Jt,Ta=(s,e,t)=>$a(s,e,"<",t);var Ia=Ta;const Rr=ne(),Fa=(s,e,t)=>(s=new Rr(s,t),e=new Rr(e,t),s.intersects(e,t));var Aa=Fa;const Da=nt,La=oe;var Na=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((l,d)=>La(l,d,t));for(const l of i)Da(l,e,t)?(n=l,o||(o=l)):(n&&r.push([o,n]),n=null,o=null);o&&r.push([o,null]);const a=[];for(const[l,d]of r)l===d?a.push(l):!d&&l===i[0]?a.push("*"):d?l===i[0]?a.push(`<=${d}`):a.push(`${l} - ${d}`):a.push(`>=${l}`);const c=a.join(" || "),u=typeof e.raw=="string"?e.raw:String(e);return c.length<u.length?c:e};const kr=ne(),Gt=ot(),{ANY:pt}=Gt,be=nt,Mt=oe,Ba=(s,e,t={})=>{if(s===e)return!0;s=new kr(s,t),e=new kr(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=xa(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},ja=[new Gt(">=0.0.0-0")],Or=[new Gt(">=0.0.0")],xa=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===pt){if(e.length===1&&e[0].semver===pt)return!0;t.includePrerelease?s=ja:s=Or}if(e.length===1&&e[0].semver===pt){if(t.includePrerelease)return!0;e=Or}const r=new Set;let o,n;for(const f of s)f.operator===">"||f.operator===">="?o=$r(o,f,t):f.operator==="<"||f.operator==="<="?n=Tr(n,f,t):r.add(f.semver);if(r.size>1)return null;let i;if(o&&n){if(i=Mt(o.semver,n.semver,t),i>0)return null;if(i===0&&(o.operator!==">="||n.operator!=="<="))return null}for(const f of r){if(o&&!be(f,String(o),t)||n&&!be(f,String(n),t))return null;for(const E of e)if(!be(f,String(E),t))return!1;return!0}let a,c,u,l,d=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,g=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&n.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(const f of e){if(l=l||f.operator===">"||f.operator===">=",u=u||f.operator==="<"||f.operator==="<=",o){if(g&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===g.major&&f.semver.minor===g.minor&&f.semver.patch===g.patch&&(g=!1),f.operator===">"||f.operator===">="){if(a=$r(o,f,t),a===f&&a!==o)return!1}else if(o.operator===">="&&!be(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=Tr(n,f,t),c===f&&c!==n)return!1}else if(n.operator==="<="&&!be(n.semver,String(f),t))return!1}if(!f.operator&&(n||o)&&i!==0)return!1}return!(o&&u&&!n&&i!==0||n&&l&&!o&&i!==0||g||d)},$r=(s,e,t)=>{if(!s)return e;const r=Mt(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},Tr=(s,e,t)=>{if(!s)return e;const r=Mt(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var Va=Ba;const ht=Fe,Ir=tt,Ua=W,Fr=ds,Ja=Se,Ga=Wn,Ma=Yn,_a=Zn,Ka=ti,Ha=oi,qa=ai,Wa=ui,za=hi,Xa=oe,Ya=vi,Qa=wi,Za=jt,ec=Ei,tc=Oi,rc=st,sc=xt,oc=ps,nc=hs,ic=Vt,ac=Ut,cc=fs,lc=Xi,uc=ot(),dc=ne(),pc=nt,hc=sa,fc=aa,gc=da,mc=fa,vc=va,yc=Jt,Sc=Oa,wc=Ia,bc=Aa,Pc=Na,Cc=Va;var Ec={parse:Ja,valid:Ga,clean:Ma,inc:_a,diff:Ka,major:Ha,minor:qa,patch:Wa,prerelease:za,compare:Xa,rcompare:Ya,compareLoose:Qa,compareBuild:Za,sort:ec,rsort:tc,gt:rc,lt:sc,eq:oc,neq:nc,gte:ic,lte:ac,cmp:cc,coerce:lc,Comparator:uc,Range:dc,satisfies:pc,toComparators:hc,maxSatisfying:fc,minSatisfying:gc,minVersion:mc,validRange:vc,outside:yc,gtr:Sc,ltr:wc,intersects:bc,simplifyRange:Pc,subset:Cc,SemVer:Ua,re:ht.re,src:ht.src,tokens:ht.t,SEMVER_SPEC_VERSION:Ir.SEMVER_SPEC_VERSION,RELEASE_TYPES:Ir.RELEASE_TYPES,compareIdentifiers:Fr.compareIdentifiers,rcompareIdentifiers:Fr.rcompareIdentifiers};const Rc=An(Ec),kc={minDelay:1500},Oc="__no_updates__";class $c extends B.PollComputablePool{constructor(t,r,o={}){super({...o,...kc},r);w(this,"http");w(this,"preferredUpdateChannel");this.registryProvider=t,this.http=o.http,this.preferredUpdateChannel=o.preferredUpdateChannel}getKey(t){switch(t.currentSpec.type){case"dev-v1":return`dev_1_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"dev-v2":return`dev_2_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"from-registry-v2":return`from_registry_v2_${re(t)}`;default:return Oc}}async readValue(t){var r,o;try{const n=t.currentSpec;switch(n.type){case"dev-v1":try{const i=await Ot(n.folder);return i===n.mtime?{suggestions:[]}:{mainSuggestion:{...n,mtime:i},suggestions:[]}}catch(i){return this.logger.warn(i),{suggestions:[]}}case"dev-v2":try{const i=await H.tryLoadPackDescription(n.folder,this.logger);if(i===void 0)return{suggestions:[]};const a=await Xe(i);return a===n.mtime?{suggestions:[]}:{mainSuggestion:{...n,mtime:a},suggestions:[]}}catch(i){return this.logger.warn(i),{suggestions:[]}}case"from-registry-v2":try{const{versionLock:i,skipVersion:a}=t.settings;if(i==="patch")return{suggestions:[]};const c=this.registryProvider.getRegistry(n.registryUrl);let u=this.preferredUpdateChannel;if(u===void 0)if(n.channel===void 0)if(await c.getLatestOverview(n.id,K.StableChannel))u=K.StableChannel;else{if(await c.getLatestOverview(n.id,K.AnyChannel)===void 0)return this.logger.error(`No "any" channel record for ${K.blockPackIdToString(n.id)}`),{suggestions:[]};u=K.AnyChannel}else u=n.channel;const l=await c.getUpdateSuggestions(n.id,u);if(l===void 0||l.length===0)return{suggestions:[]};l.reverse();let d;switch(i){case void 0:d=l[0].update;break;case"major":d=(r=l.find(E=>E.type!=="major"))==null?void 0:r.update;break;case"minor":d=(o=l.find(E=>E.type==="patch"))==null?void 0:o.update;break}const g=l.map(({type:E,update:m})=>({type:E,update:{...n,id:{...n.id,version:m}}}));if(d===void 0)return{suggestions:g};if(a!==void 0&&Rc.lte(d,a))return{suggestions:g};const f={...n,id:{...n.id,version:d}};return(async()=>{try{await c.getComponents(f.id)}catch(E){this.logger.warn(E)}})(),{suggestions:g,mainSuggestion:f}}catch(i){return this.logger.warn(i),{suggestions:[]}}default:return{suggestions:[]}}}catch(n){return this.logger.warn(n),{suggestions:[]}}}resultsEqual(t,r){return re(t)===re(r)}}class Ar{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 r=this.resources.get(t);r===void 0&&(r={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,r)),r.refCount++;let o=!1;return{resource:r.resource,key:t,unref:()=>{o||(r.refCount--,o=!0,this.check(t))}}}getByKey(e){if(!this.resources.has(e))throw new Error(`resource not found, key = ${e}`);return this.resources.get(e).resource}tryGetByKey(e){var t;return(t=this.resources.get(e))==null?void 0:t.resource}}let Pe;function ae(){return Pe||(Pe={logPFrameRequests:process.env.MI_LOG_PFRAMES!==void 0,usePFrameRs:process.env.MI_USE_PFRAMES_RS!==void 0,dumpInitialTreeState:process.env.MI_DUMP_INITIAL_TREE_STATE!==void 0},process.env.MI_LOG_TREE_STAT&&(Pe.logTreeStats=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request"),Pe)}function Oe(s){return String(s.id)}const Tc=["Int","Long","Float","Double","String","Bytes"];function me(s){const e=[],t=[];for(const r of s)r.type==="bySingleColumn"?(e.push(r),t.push({...r,type:"bySingleColumnV2"})):t.push(r);if(e.length>0){const r=JSON.stringify(e);console.warn(`type overriten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${r}`)}return t}function ft(s){return ae().usePFrameRs?s.rustCallback():s.rustCallback().catch(e=>{var t;if(((t=s.signal)==null?void 0:t.aborted)===!1)return e instanceof Error&&s.logger.warn(`PFrames Rust failed, error: ${e.message}`),s.cppCallback();throw e})}const Ce=(s,e)=>typeof e=="bigint"?e.toString():e;class Ic{constructor(e,t,r,o){w(this,"rustPFrame");w(this,"blobIdToResource",new Map);w(this,"blobHandleComputables",new Map);w(this,"createDataPFrame");w(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});w(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});w(this,"resolveBlobContent",async e=>{try{const t=this.getOrCreateComputableForBlob(e),r=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(r)}catch(t){const r=JSON.stringify(t);throw console.log(`resolveBlobContent catched error: ${r}`),t}});this.blobDriver=e,this.logger=t,this.blobContentCache=r;const n=(a,c)=>{switch(a){default:case"info":return this.logger.info(c);case"warn":return this.logger.warn(c);case"error":return this.logger.error(c)}};for(const a of o)for(const c of ko(a.data))this.blobIdToResource.set(Oe(c),c);const i=[...new Map(o.map(a=>({...a,data:Oo(a.data,Oe)})).map(a=>[re(a),a])).values()];this.rustPFrame=(()=>{try{const a=new Rs.PFrame(ae().logPFrameRequests?n:void 0);a.setDataSource(this);for(const c of i)a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data);return a}catch(a){throw new Error(`Rust PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}})(),this.createDataPFrame=()=>{try{const a=ae().logPFrameRequests?new Wt.PFrame(n):new Wt.PFrame;a.setDataSource(this);for(const c of i)try{a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data)}catch(u){throw new Error(`Adding column ${c.id} to PFrame failed: ${u}; Spec: ${JSON.stringify(c.spec)}, DataInfo: ${JSON.stringify(c.data)}.`)}return a}catch(a){throw new Error(`Data PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}}}get disposableDataPFrame(){const e=this.createDataPFrame();return{dataPFrame:e,[Symbol.dispose]:()=>{e.dispose()}}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.rustPFrame.dispose()}}class Fc{constructor(e){this.table=e}[Symbol.dispose](){this.table.then(e=>e.dispose())}}class Ac{constructor(e,t){w(this,"pFrames");w(this,"pTables");w(this,"blobContentCache");w(this,"concurrencyLimiter");this.blobDriver=e,this.logger=t;const r=new Lr.LRUCache({maxSize:1e9,fetchMethod:async n=>await jr.readFile(n),sizeCalculation:n=>n.length});this.blobContentCache=r;const o=new k.ConcurrencyLimitingExecutor(1);this.concurrencyLimiter=o,this.pFrames=new class extends Ar{constructor(n,i){super(),this.blobDriver=n,this.logger=i}createNewResource(n){return ae().logPFrameRequests&&t.info(`PFrame creation (pFrameHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,Ce)}`),new Ic(this.blobDriver,this.logger,r,n)}calculateParamsKey(n){return Lc(n)}}(this.blobDriver,this.logger),this.pTables=new class extends Ar{constructor(n){super(),this.pFrames=n}createNewResource(n){const i=n.pFrameHandle;ae().logPFrameRequests&&t.info(`PTable creation (pTableHandle = ${this.calculateParamsKey(n)}): ${JSON.stringify(n,Ce)}`);const a=ft({cppCallback:()=>o.run(async()=>{var u=[];try{const c=Ae(u,this.pFrames.getByKey(i).disposableDataPFrame);return await c.dataPFrame.createTable({src:de(n.def.src),filters:me(n.def.filters)},n.signal)}catch(l){var d=l,g=!0}finally{De(u,d,g)}}).then(async c=>{if(n.def.sorting.length===0)return c;try{return await o.run(async()=>await c.sort(n.def.sorting,n.signal))}finally{c.dispose()}}),rustCallback:()=>this.pFrames.getByKey(i).rustPFrame.createTable({src:de(n.def.src),filters:me(n.def.filters)},n.signal).then(async c=>{if(n.def.sorting.length===0)return c;try{return await c.sort(n.def.sorting,n.signal)}finally{c.dispose()}}),logger:t,filters:n.def.filters,signal:n.signal});return new Fc(a)}calculateParamsKey(n){return Dc(n)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>Tc.find(i=>i===n.spec.valueType)).map(n=>D.mapPObjectData(n,i=>Ke.isPlTreeNodeAccessor(i)?Do(i):D.isDataInfo(i)?D.mapDataInfo(i,a=>a.resourceInfo):Lo(n.spec,i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t,r){const o=this.createPFrame(D.extractAllColumns(e.src),t),n=D.mapPTableDef(e,a=>a.id),i=this.pTables.acquire({def:n,pFrameHandle:o,signal:r});return ae().logPFrameRequests&&this.logger.info(`Create PTable call (pFrameHandle = ${o}; pTableHandle = ${JSON.stringify(i)}): ${JSON.stringify(D.mapPTableDef(e,a=>a.spec),Ce)}`),t.addOnDestroy(i.unref),i.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:[...new Map(t.compatibleWith.map(n=>[re(n),n])).values()],qualifications:[]}]:[]};return{hits:(await this.pFrames.getByKey(e).rustPFrame.findColumns(r)).hits.filter(n=>n.mappingVariants.length===0||n.mappingVariants.some(i=>i.qualifications.forHit.length===0&&i.qualifications.forQueries.every(a=>a.length===0))).map(n=>n.hit)}}async getColumnSpec(e,t){return await this.pFrames.getByKey(e).rustPFrame.getColumnSpec(t)}async listColumns(e){return await this.pFrames.getByKey(e).rustPFrame.listColumns()}async calculateTableData(e,t,r){return ae().logPFrameRequests&&this.logger.info(`Call calculateTableData, handle = ${e}, request = ${JSON.stringify(t,Ce)}`),await ft({cppCallback:async()=>await this.concurrencyLimiter.run(async()=>{var n=[];try{const o=Ae(n,this.pFrames.getByKey(e).disposableDataPFrame);return await o.dataPFrame.createTable({src:de(t.src),filters:me(t.filters)},r)}catch(i){var a=i,c=!0}finally{De(n,a,c)}}).then(async o=>{if(t.sorting.length===0)return o;try{return await this.concurrencyLimiter.run(async()=>await o.sort(t.sorting,r))}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await this.concurrencyLimiter.run(async()=>await o.getData([...n.keys()]));return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}}),rustCallback:async()=>await this.pFrames.getByKey(e).rustPFrame.createTable({src:de(t.src),filters:me(t.filters)},r).then(async o=>{if(t.sorting.length===0)return o;try{return await o.sort(t.sorting,r)}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await o.getData([...n.keys()]);return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}}),logger:this.logger,filters:t.filters,signal:r})}async getUniqueValues(e,t,r){return ae().logPFrameRequests&&this.logger.info(`Call getUniqueValues, handle = ${e}, request = ${JSON.stringify(t,Ce)}`),await ft({cppCallback:async()=>await this.concurrencyLimiter.run(async()=>{var n=[];try{const o=Ae(n,this.pFrames.getByKey(e).disposableDataPFrame);return await o.dataPFrame.getUniqueValues({...t,filters:me(t.filters)},r)}catch(i){var a=i,c=!0}finally{De(n,a,c)}}),rustCallback:async()=>await this.pFrames.getByKey(e).rustPFrame.getUniqueValues({...t,filters:me(t.filters)},r),logger:this.logger,filters:t.filters,signal:r})}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,r){const o=await this.pTables.getByKey(e).table;return await this.concurrencyLimiter.run(async()=>await o.getData(t,r))}}function de(s){switch(s.type){case"column":return{type:"column",columnId:s.column,qualifications:[]};case"inner":case"full":return{type:s.type,entries:s.entries.map(e=>de(e))};case"outer":return{type:"outer",primary:de(s.primary),secondary:s.secondary.map(e=>de(e))};default:k.assertNever(s)}}function Dc(s){const e=se.createHash("sha256");return e.update(re(s)),e.digest().toString("hex")}function Lc(s){const e=[...s].map(r=>D.mapPObjectData(r,o=>{let n;const i=o.type;switch(i){case"Json":n={type:o.type,keyLength:o.keyLength,payload:Object.entries(o.data).map(([a,c])=>({key:a,value:c}))};break;case"JsonPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:Oe(c)}))};break;case"BinaryPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:[Oe(c.index),Oe(c.values)]}))};break;default:throw Error(`unsupported resource type: ${JSON.stringify(i)}`)}return n.payload.sort((a,c)=>a.key.localeCompare(c.key)),n}));e.sort((r,o)=>r.id.localeCompare(o.id));const t=se.createHash("sha256");return t.update(re(e)),t.digest().toString("hex")}async function ms(s,e,t){const r={...Lt,...Nt(e),...t},o=new k.HmacSha256Signer(r.localSecret),n=ee.createDownloadClient(r.logger,s,r.localProjections),i=ee.createLogsClient(s,r.logger),a=ee.createUploadBlobClient(s,r.logger),c=ee.createUploadProgressClient(s,r.logger),u=new ee.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),l=new ee.DownloadBlobToURLDriver(r.logger,o,n,r.downloadBlobToURLPath,r.downloadBlobToURLDriverOps),d=new ee.UploadDriver(r.logger,o,a,c,r.uploadDriverOps),g=new ee.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),f=new ee.LogsDriver(r.logger,g,u),E=await ee.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),m=new Ac(u,r.logger);return{blobDriver:u,blobToURLDriver:l,logDriver:f,lsDriver:E,signer:o,uploadDriver:d,pFrameDriver:m}}class _t{constructor(e,t,r,o,n,i,a,c){w(this,"pl");w(this,"projectList");w(this,"openedProjectsByRid",new Map);this.env=e,this.driverKit=t,this.signer=r,this.projectListResourceId=o,this.openedProjectsList=n,this.projectListTree=i,this.blockRegistryProvider=a,this.projectList=c,this.pl=this.env.pl}get internalDriverKit(){return this.env.driverKit}async createProject(e,t=se.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await Ro(o,e);return o.createField(h.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await h.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await te(this.pl,e,r,o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(h.field(this.projectListResourceId,e)),await t.commit()}),await this.projectListTree.refreshState()}async projectIdToResourceId(e){return await this.pl.withReadTx("Project id to resource id",async t=>{const r=(await t.getField(h.field(this.projectListResourceId,e))).value;if(h.isNullResourceId(r))throw new Error("Unexpected project list structure.");return r})}async ensureProjectRid(e){return typeof e=="string"?await this.projectIdToResourceId(e):e}async openProject(e){const t=await this.ensureProjectRid(e);if(this.openedProjectsByRid.has(t))throw new Error(`Project ${t} already opened`);this.openedProjectsByRid.set(t,await et.init(this.env,t)),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}async closeProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);this.openedProjectsByRid.delete(e),await t.destroy(),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}getOpenedProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);return t}async close(){await Promise.all([...this.openedProjectsByRid.values()].map(e=>e.destroy())),await this.projectListTree.terminate(),await this.env.retryHttpDispatcher.destroy(),await this.pl.close()}async closeAndAwaitTermination(){await this.close()}static generateLocalSecret(){return k.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={...as,...cs(t),...r};o.defaultTreeOptions.logStat=ae().logTreeStats,o.debugOps.dumpInitialTreeState=ae().dumpInitialTreeState;const n=await e.withWriteTx("MLInitialization",async m=>{const x=h.field(m.clientRoot,Xs);m.createField(x,"Dynamic");const L=await m.getField(x);if(h.isNullResourceId(L.value)){const U=m.createEphemeral(Gr);return m.lock(U),m.setField(x,U),await m.commit(),await U.globalId}else return L.value}),i=o.logger,a=await ms(e,t,o),c=new ze.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new Vr(c),l=new yo(u,a.signer,c),d=new ee.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),g={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:o,bpPreparer:l,frontendDownloadDriver:d,driverKit:a,blockUpdateWatcher:new $c(u,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await $e.getQuickJS()},f=new B.WatchableValue([]),E=await Qs(e,n,f,g);return new _t(g,a,a.signer,n,f,E.tree,u,E.computable)}}const Nc=["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 Bc(s,e={}){const t={pingCheckDurationMs:1e4,pingTimeoutMs:3e3,maxPingsPerSecond:50,httpTimeoutMs:3e3,blockRegistryDurationMs:3e3,maxRegistryChecksPerSecond:1,blockRegistryUrl:"https://blocks.pl-open.science",blockGARegistryUrl:"https://blocks-ga.pl-open.science",blockOverviewPath:"v2/overview.json",blockUiPath:"v2/milaboratories/samples-and-data/1.7.0/ui.tgz",autoUpdateCdnDurationMs:5e3,maxAutoUpdateCdnChecksPerSecond:1,autoUpdateCdnUrl:"https://cdn.platforma.bio/software/platforma-desktop-v2/windows/amd64/latest.yml",bodyLimit:300,...e},r=[];Nc.forEach(c=>{ks.channel(c).subscribe(l=>{var g;const d=new Date().toISOString();(g=l==null?void 0:l.response)!=null&&g.headers&&(l.response.headers=l.response.headers.map(f=>f.toString())),r.push(JSON.stringify({timestamp:d,event:c,data:l}))})});const o={plPings:[],blockRegistryOverviewChecks:[],blockGARegistryOverviewChecks:[],blockRegistryUiChecks:[],blockGARegistryUiChecks:[],autoUpdateCdnChecks:[]},n=h.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});o.plPings=await ve(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const u=await new h.UnauthenticatedPlClient(n).ping();return JSON.stringify(u).slice(0,t.bodyLimit)+"..."});const a=new h.UnauthenticatedPlClient(n).ll.httpDispatcher;return o.blockRegistryOverviewChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Ee(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,a)),o.blockGARegistryOverviewChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Ee(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,a)),o.blockRegistryUiChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Ee(new URL(t.blockUiPath,t.blockRegistryUrl),t,a)),o.blockGARegistryUiChecks=await ve(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Ee(new URL(t.blockUiPath,t.blockGARegistryUrl),t,a)),o.autoUpdateCdnChecks=await ve(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await Ee(t.autoUpdateCdnUrl,t,a)),jc(o,s,t,r)}async function ve(s,e,t){const r=Et(),o=[];for(;Dr(r)<s;){const n=Et();let i;try{i={ok:!0,value:await t()}}catch(u){i={ok:!1,error:u}}const a=Dr(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await Br.setTimeout(c)}return o}async function Ee(s,e,t){const{body:r,statusCode:o}=await ze.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function jc(s,e,t,r){const o=s.plPings.filter(a=>a.response.ok),n=s.plPings.filter(a=>!a.response.ok),i=[...new Set(o.map(a=>JSON.stringify(a.response.value)))];return`
|
|
4
|
+
`}}function Xe(s,e){return Ee(s.traverse({field:J(e,"blockPack"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0},{field:h.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0}),t=>{const r=t.getDataAsJson(),o=L.extractConfig(r.config);return{bpId:t.resourceInfo.id.toString(),info:r,cfg:o}})}const Ne=process.env.MI_LOG_OUTPUT_STATUS;function mn(s,e,t,r,o,n={}){const i=`${e.blockId}#lambda#${o}#${t.handle}`;return n={...n,key:i},n.mode===void 0&&t.retentive===!0&&(n.mode="StableOnlyRetentive"),B.Computable.makeRaw(a=>{const c=new Oe.Scope;a.addOnDestroy(()=>c.dispose());const u=c.manage(s.quickJs.newRuntime());u.setMemoryLimit(1024*1024*8),u.setMaxStackSize(1024*320);const l=c.manage(u.newContext()),d=new Ke(c,l,e,s,a);d.evaluateBundle(r.content);const g=d.runCallback(t.handle);d.resetComputableCtx();let f=0;return Ne&&Ne!=="unstable-only"&&console.log(`Output ${t.handle} scaffold calculated.`),{ir:d.computablesToResolve,postprocessValue:(C,{unstableMarker:m,stable:x})=>{for(const[U,I]of Object.entries(C))d.runCallback(U,I);const D=d.importObjectUniversal(g);return f++,Ne&&(Ne!=="unstable-only"||!x)&&console.log(x?`Stable output ${t.handle} calculated ${D!==void 0?"defined":"undefined"}; (#${f})`:`Unstable output ${t.handle}; marker = ${m}; ${D!==void 0?"defined":"undefined"} (#${f})`),D}}},n)}function vn(s){return L.isConfigLambda(s)?s.isActive===!0:Do(s)}function Ce(s,e,t,r,o,n={}){if(L.isConfigLambda(t)){if(r===void 0)throw new Error("No code bundle.");return mn(s,e,t,r,o,n)}else return pn(s.driverKit,e,t,n)}function yn(s,e,t){return B.Computable.make(r=>{var C,m,x,D,U,I,M,pe;const o=r.accessor(s).node(),n=k.notEmpty(o.getKeyValueAsJson(Rt)),i=k.notEmpty(o.getKeyValueAsJson($e)),a=k.notEmpty(o.getKeyValueAsJson(Te)),c=k.notEmpty(o.getKeyValueAsJson(de)),u=k.notEmpty(o.getKeyValueAsJson(Me)),l=new Map;for(const{id:N}of ae(c)){const Y=o.traverse({field:J(N,"currentArgs"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0});let le;const z=o.traverse({field:J(N,"prodArgs"),assertFieldType:"Dynamic",stableIfNotFound:!0});if(z!==void 0){const _=o.getField({field:J(N,"prodOutput"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0}),G=o.getField({field:J(N,"prodUiCtx"),assertFieldType:"Dynamic",errorIfFieldNotFound:!0});le={arguments:z.getDataAsJson(),stale:Y.id!==z.id,outputError:_.error!==void 0||G.error!==void 0||((C=_.value)==null?void 0:C.getError())!==void 0||((m=G.value)==null?void 0:m.getError())!==void 0,outputsError:((x=_.error)==null?void 0:x.getDataAsString())??((U=(D=_.value)==null?void 0:D.getError())==null?void 0:U.getDataAsString()),exportsError:((I=G.error)==null?void 0:I.getDataAsString())??((pe=(M=G.value)==null?void 0:M.getError())==null?void 0:pe.getDataAsString()),finished:(_.value!==void 0&&_.value.getIsReadyOrError()||_.error!==void 0&&_.error.getIsReadyOrError())&&(G.value!==void 0&&G.value.getIsReadyOrError()||G.error!==void 0&&G.error.getIsReadyOrError())}}l.set(N,{currentArguments:Y.getDataAsJson(),prod:le})}const d=Ge(c,N=>l.get(N).currentArguments),g=new Set(u.blocksInLimbo),f=[...ae(c)].map(({id:N,label:Y,renderingMode:le})=>{var b,E,T,R,A;const z=k.notEmpty(l.get(N)),_=k.notEmpty(d.nodes.get(N));let G="NotCalculated";z.prod!==void 0&&(g.has(N)?G="Limbo":G=z.prod.finished?"Done":"Running");const Q=Xe(o,N),{sections:he,title:y,inputsValid:p,sdkVersion:v}=Ee(Q,({bpId:V,cfg:F})=>{const ce=It(s,N);return{sections:Ce(t,ce,F.sections,F.code,V).wrap({recover:ye=>(t.logger.error("Error in block model sections"),t.logger.error(ye),[])}),title:Ee(F.title,ye=>Ce(t,ce,ye,F.code,V).wrap({recover:ds=>(t.logger.error("Error in block model title"),t.logger.error(ds),"Invalid title")})),inputsValid:Ce(t,ce,F.inputsValid,F.code,V).wrap({recover:ye=>(t.logger.error("Error in block model argsValid"),t.logger.error(ye),!1)}),sdkVersion:F.sdkVersion}})||{},S=o.traverse({field:J(N,"blockSettings"),assertFieldType:"Dynamic",errorIfFieldNotSet:!0}).getDataAsJson(),P=Ee(Q,({info:V})=>t.blockUpdateWatcher.get({currentSpec:V.source,settings:S}));return{projectResourceId:h.resourceIdToString(s.rid),id:N,label:y??Y,title:y??Y,renderingMode:le,stale:((b=z.prod)==null?void 0:b.stale)!==!1||G==="Limbo",missingReference:_.missingReferences,upstreams:[...d.traverseIdsExcludingRoots("upstream",N)],downstreams:[...d.traverseIdsExcludingRoots("downstream",N)],calculationStatus:G,outputErrors:((E=z.prod)==null?void 0:E.outputError)===!0,outputsError:(T=z.prod)==null?void 0:T.outputsError,exportsError:(R=z.prod)==null?void 0:R.exportsError,settings:S,sections:he,inputsValid:p,updateInfo:{},currentBlockPack:(A=Q==null?void 0:Q.info)==null?void 0:A.source,updates:P,sdkVersion:v,navigationState:e.getState(N)}});return{meta:a,created:new Date(n),lastModified:new Date(i),authorMarker:o.getKeyValueAsJson(gt),blocks:f}},{postprocessValue:r=>{const o=new Set,n=new Set;return{...r,blocks:r.blocks.map(i=>{var l,d;i.inputsValid||o.add(i.id),i.stale&&n.add(i.id);const a=i.stale||i.upstreams.findIndex(g=>n.has(g))!==-1,c=(a||i.outputErrors)&&!!i.inputsValid&&!i.missingReference&&i.upstreams.findIndex(g=>o.has(g))===-1,u={...i,canRun:c,stale:a,updateSuggestions:((l=i.updates)==null?void 0:l.suggestions)??[],updatedBlockPack:(d=i.updates)==null?void 0:d.mainSuggestion};return delete u.updates,u})}}}).withStableType()}function Sn(s,e){const t=s.node();if(h.resourceTypesEqual(t.resourceType,Ot)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.frontendDownloadDriver.getPath(new URL(r.url)).withStableType()}else if(h.resourceTypesEqual(t.resourceType,$t)){const r=t.getDataAsJson();if(r===void 0)throw new Error("No resource data.");return e.signer.verify(r.path,r.signature,`Frontend path signature mismatch for: ${r.path}`),r.path}else throw new Error(`Unsupported resource type: ${JSON.stringify(t.resourceType)}`)}function bn(s,e){if(s!==void 0)return B.Computable.make(t=>Sn(t.accessor(s),e),{postprocessValue:t=>{if(t!==void 0){if(typeof t=="string")return t;if(t.error!==void 0)throw new Error(t.error);return t.path}}}).withStableType()}function wn(s,e,t){return B.Computable.make(r=>{var a;const o=r.accessor(s).node(),n=Xe(o,e),i=(a=o.traverse({field:J(e,"blockPack"),assertFieldType:"Dynamic"},{field:h.Pl.HolderRefField,assertFieldType:"Input",errorIfFieldNotFound:!0},{field:_r,assertFieldType:"Input"}))==null?void 0:a.persist();return{path:bn(i,t),sdkVersion:n==null?void 0:n.cfg.sdkVersion}},{mode:"StableOnlyLive"})}function es(s,e,t){if(t===void 0)return B.Computable.make(i=>es(s,e,i),{key:`inputs#${h.resourceIdToString(s.rid)}#${e}`});const r=t.accessor(s).node(),o=It(s,e),n=o.uiState(t);return{author:r.getKeyValueAsJson(ft(e)),args:JSON.parse(o.args(t)),ui:n!==void 0?JSON.parse(n):void 0}}function Pn(s,e,t){return B.Computable.make(r=>{const o=r.accessor(s).node(),n=Wr(s,e);return Ee(Xe(o,e),({cfg:i,bpId:a})=>{const c={};for(const[u,l]of Object.entries(i.outputs)){const d=Ce(t,n,l,i.code,a);c[u]=B.Computable.wrapError(d)}return c})},{key:"outputs#"+h.resourceIdToString(s.rid)+"#"+e}).withStableType()}function En(s,e){return B.Computable.make(t=>{const r=t.accessor(s).node(),o=k.notEmpty(r.getKeyValueAsJson(de)),n=[];for(const{id:i}of ae(o)){const a=Xe(r,i);if(a===void 0)continue;const c=Object.entries(a.cfg.outputs).map(([,l])=>l).filter(l=>vn(l)).map(l=>l);if(c.length===0)continue;const u=Wr(r.persist(),i);for(const l of c)n.push(B.Computable.wrapError(Ce(e,u,l,a.cfg.code,a.bpId)))}return n})}class Cn{constructor(){w(this,"states",new Map)}setState(e,t){const r=this.states.get(e);if(r===void 0){this.states.set(e,{state:t,change:new B.ChangeSource});return}r.state={...t},r.change.markChanged()}readState(e,t){let r=this.states.get(t);return r===void 0&&(r={state:{...L.DefaultNavigationState},change:new B.ChangeSource},this.states.set(t,r)),r.change.attachWatcher(e.watcher),r.state}getState(e){return B.Computable.make(t=>this.readState(t,e),{key:`navigationState#${e}`})}deleteBlock(e){const t=this.states.get(e);t!==void 0&&(this.states.delete(e),t.change.markChanged())}}function or(s){return JSON.stringify(s,(e,t)=>typeof t=="bigint"?h.resourceIdToString(t):ArrayBuffer.isView(t)||t instanceof Int8Array||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int16Array||t instanceof Uint16Array||t instanceof Int32Array||t instanceof Uint32Array||t instanceof Float32Array||t instanceof Float64Array||t instanceof BigInt64Array||t instanceof BigUint64Array?Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString("base64"):Buffer.isBuffer(t)?t.toString("base64"):t)}class Ye{constructor(e,t,r){w(this,"rid");w(this,"overview");w(this,"navigationStates",new Cn);w(this,"blockComputables",new Map);w(this,"blockFrontends",new Map);w(this,"activeConfigs");w(this,"refreshLoopResult");w(this,"abortController",new AbortController);w(this,"destroyed",!1);this.env=e,this.projectTree=r,this.overview=yn(r.entry(),this.navigationStates,e).withPreCalculatedValueTree(),this.rid=t,this.refreshLoopResult=this.refreshLoop(),this.activeConfigs=En(r.entry(),e)}async refreshLoop(){for(;!this.destroyed;)try{await De(this.env.pl,this.rid,e=>{e.doRefresh(this.env.ops.stagingRenderingRate)}),await this.activeConfigs.getValue(),await Ir.setTimeout(this.env.ops.projectRefreshInterval,this.abortController.signal)}catch(e){if(h.isNotFoundError(e)){console.warn("project refresh routine terminated, because project was externally deleted");break}else if(!h.isTimeoutOrCancelError(e))throw new Error("Unexpected exception",{cause:e})}}async addBlock(e,t,r,o=void 0,n=se.randomUUID()){const i=await this.env.bpPreparer.prepare(t),a=await this.env.bpPreparer.getBlockConfigContainer(t),c=L.extractConfig(a);return await te(this.env.pl,this.rid,o,u=>u.addBlock({id:n,label:e,renderingMode:c.renderingMode},{args:JSON.stringify(c.initialArgs),uiState:JSON.stringify(c.initialUiState),blockPack:i},r)),await this.projectTree.refreshState(),n}async updateBlockPack(e,t,r=!1,o){const n=await this.env.bpPreparer.prepare(t),i=await this.env.bpPreparer.getBlockConfigContainer(t);await te(this.env.pl,this.rid,o,a=>a.migrateBlockPack(e,n,r?JSON.stringify(i.initialArgs):void 0)),await this.projectTree.refreshState()}async deleteBlock(e,t){await te(this.env.pl,this.rid,t,r=>r.deleteBlock(e)),this.navigationStates.deleteBlock(e),await this.projectTree.refreshState()}async reorderBlocks(e,t){await te(this.env.pl,this.rid,t,r=>{const o=r.structure;if(o.groups.length!==1)throw new Error("Unexpected project structure, non-sinular block group");const n=o.groups[0];if(n.blocks.length!==e.length)throw new Error(`Lengh mismatch: ${n.blocks.length} !== ${e.length}`);if(new Set(e).size!==e.length)throw new Error("Repeated block ids");const i={groups:[{id:n.id,label:n.label,blocks:e.map(a=>{const c=n.blocks.find(u=>u.id===a);if(c===void 0)throw new Error(`Can't find block: ${a}`);return c})}]};r.updateStructure(i)}),await this.projectTree.refreshState()}async runBlock(e){await De(this.env.pl,this.rid,t=>t.renderProduction([e],!0)),await this.projectTree.refreshState()}async stopBlock(e){await De(this.env.pl,this.rid,t=>t.stopProduction(e)),await this.projectTree.refreshState()}async setBlockArgs(e,t,r){await te(this.env.pl,this.rid,r,o=>o.setArgs([{blockId:e,args:JSON.stringify(t)}])),await this.projectTree.refreshState()}async setUiState(e,t,r){await te(this.env.pl,this.rid,r,o=>o.setUiState(e,t===void 0?void 0:JSON.stringify(t))),await this.projectTree.refreshState()}async setNavigationState(e,t){this.navigationStates.setState(e,t)}async setBlockArgsAndUiState(e,t,r,o){await te(this.env.pl,this.rid,o,n=>{n.setArgs([{blockId:e,args:JSON.stringify(t)}]),n.setUiState(e,JSON.stringify(r))}),await this.projectTree.refreshState()}async setBlockSettings(e,t){await te(this.env.pl,this.rid,void 0,r=>{r.setBlockSettings(e,t)}),await this.projectTree.refreshState()}async resetBlockArgsAndUiState(e,t){await this.env.pl.withWriteTx("BlockInputsReset",async r=>{const o=h.ensureResourceIdNotNull((await r.getField(h.field(this.rid,J(e,"blockPack")))).value),n=h.ensureResourceIdNotNull((await r.getField(h.field(o,h.Pl.HolderRefField))).value),i=await r.getResourceData(n,!1),a=JSON.parse(Buffer.from(k.notEmpty(i.data)).toString("utf-8"));await te(r,this.rid,t,c=>{c.setArgs([{blockId:e,args:JSON.stringify(a.config.initialArgs)}]),c.setUiState(e,void 0)}),await r.commit()}),await this.projectTree.refreshState()}getBlockComputables(e){const t=this.blockComputables.get(e);if(t===void 0){const r=Pn(this.projectTree.entry(),e,this.env),n={fullState:B.Computable.make(i=>({argsAndUiState:es(this.projectTree.entry(),e,i),outputs:r,navigationState:this.navigationStates.getState(e)}),{postprocessValue:i=>({...i.argsAndUiState,outputs:i.outputs,navigationState:i.navigationState})}).withPreCalculatedValueTree()};return this.blockComputables.set(e,n),n}return t}getBlockState(e){return this.getBlockComputables(e).fullState}getBlockFrontend(e){const t=this.blockFrontends.get(e);if(t===void 0){const r=wn(this.projectTree.entry(),e,this.env).withPreCalculatedValueTree();return this.blockFrontends.set(e,r),r}return t}async destroy(){this.destroyed=!0,this.abortController.abort(),await this.refreshLoopResult,await this.projectTree.terminate(),this.overview.resetState(),this.blockFrontends.forEach(e=>e.resetState()),this.blockComputables.forEach(e=>{e.fullState.resetState()}),this.activeConfigs.resetState()}async destroyAndAwaitTermination(){await this.destroy()}static async init(e,t){await De(e.pl,t,o=>{});const r=await Je.SynchronizedTreeState.init(e.pl,t,{...e.ops.defaultTreeOptions,pruning:Rn},e.logger);if(e.ops.debugOps.dumpInitialTreeState){const o=r.dumpState();o.sort((i,a)=>{var c,u;return(((c=a.data)==null?void 0:c.byteLength)??0)-(((u=i.data)==null?void 0:u.byteLength)??0)});const n=Je.treeDumpStats(o);await pt.writeFile(`${h.resourceIdToString(t)}.json`,or(o)),await pt.writeFile(`${h.resourceIdToString(t)}.stats.json`,or(n))}return new Ye(e,t,r)}}function Rn(s){switch(s.type.name){case"BlockPackCustom":return s.fields.filter(e=>e.name!=="template");case"UserProject":return s.fields.filter(e=>!e.name.startsWith("__serviceTemplate"));case"Blob":return[];default:return s.fields}}const Ft={logger:new k.ConsoleLoggerAdapter,blobDriverOps:{cacheSoftSizeBytes:8*1024*1024*1024,nConcurrentDownloads:10},downloadBlobToURLDriverOps:{cacheSoftSizeBytes:100*1024*1024,nConcurrentDownloads:10},uploadDriverOps:{nConcurrentPartUploads:10,nConcurrentGetProgresses:10,pollingInterval:1e3,stopPollingDelay:1e3},logStreamDriverOps:{nConcurrentGetLogs:10,pollingInterval:1e3,stopPollingDelay:1e3}};function At(s){return{blobDownloadPath:q.join(s,"download"),downloadBlobToURLPath:q.join(s,"downloadToURL")}}const ts={...Ft,defaultTreeOptions:{pollingInterval:350,stopPollingDelay:2500,initialTreeLoadingTimeout:100*60*60*1e3},debugOps:{dumpInitialTreeState:!1},devBlockUpdateRecheckInterval:1e3,projectRefreshInterval:700,stagingRenderingRate:5};function rs(s){return{...At(s),frontendDownloadPath:q.join(s,"frontend")}}function kn(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var bt={exports:{}};const On="2.0.0",ss=256,$n=Number.MAX_SAFE_INTEGER||9007199254740991,Tn=16,In=ss-6,Fn=["major","premajor","minor","preminor","patch","prepatch","prerelease"];var Qe={MAX_LENGTH:ss,MAX_SAFE_COMPONENT_LENGTH:Tn,MAX_SAFE_BUILD_LENGTH:In,MAX_SAFE_INTEGER:$n,RELEASE_TYPES:Fn,SEMVER_SPEC_VERSION:On,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2};const An=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};var Ze=An;(function(s,e){const{MAX_SAFE_COMPONENT_LENGTH:t,MAX_SAFE_BUILD_LENGTH:r,MAX_LENGTH:o}=Qe,n=Ze;e=s.exports={};const i=e.re=[],a=e.safeRe=[],c=e.src=[],u=e.safeSrc=[],l=e.t={};let d=0;const g="[a-zA-Z0-9-]",f=[["\\s",1],["\\d",o],[g,r]],C=x=>{for(const[D,U]of f)x=x.split(`${D}*`).join(`${D}{0,${U}}`).split(`${D}+`).join(`${D}{1,${U}}`);return x},m=(x,D,U)=>{const I=C(D),M=d++;n(x,M,D),l[x]=M,c[M]=D,u[M]=I,i[M]=new RegExp(D,U?"g":void 0),a[M]=new RegExp(I,U?"g":void 0)};m("NUMERICIDENTIFIER","0|[1-9]\\d*"),m("NUMERICIDENTIFIERLOOSE","\\d+"),m("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${g}*`),m("MAINVERSION",`(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})\\.(${c[l.NUMERICIDENTIFIER]})`),m("MAINVERSIONLOOSE",`(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})\\.(${c[l.NUMERICIDENTIFIERLOOSE]})`),m("PRERELEASEIDENTIFIER",`(?:${c[l.NUMERICIDENTIFIER]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASEIDENTIFIERLOOSE",`(?:${c[l.NUMERICIDENTIFIERLOOSE]}|${c[l.NONNUMERICIDENTIFIER]})`),m("PRERELEASE",`(?:-(${c[l.PRERELEASEIDENTIFIER]}(?:\\.${c[l.PRERELEASEIDENTIFIER]})*))`),m("PRERELEASELOOSE",`(?:-?(${c[l.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${c[l.PRERELEASEIDENTIFIERLOOSE]})*))`),m("BUILDIDENTIFIER",`${g}+`),m("BUILD",`(?:\\+(${c[l.BUILDIDENTIFIER]}(?:\\.${c[l.BUILDIDENTIFIER]})*))`),m("FULLPLAIN",`v?${c[l.MAINVERSION]}${c[l.PRERELEASE]}?${c[l.BUILD]}?`),m("FULL",`^${c[l.FULLPLAIN]}$`),m("LOOSEPLAIN",`[v=\\s]*${c[l.MAINVERSIONLOOSE]}${c[l.PRERELEASELOOSE]}?${c[l.BUILD]}?`),m("LOOSE",`^${c[l.LOOSEPLAIN]}$`),m("GTLT","((?:<|>)?=?)"),m("XRANGEIDENTIFIERLOOSE",`${c[l.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),m("XRANGEIDENTIFIER",`${c[l.NUMERICIDENTIFIER]}|x|X|\\*`),m("XRANGEPLAIN",`[v=\\s]*(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:\\.(${c[l.XRANGEIDENTIFIER]})(?:${c[l.PRERELEASE]})?${c[l.BUILD]}?)?)?`),m("XRANGEPLAINLOOSE",`[v=\\s]*(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:\\.(${c[l.XRANGEIDENTIFIERLOOSE]})(?:${c[l.PRERELEASELOOSE]})?${c[l.BUILD]}?)?)?`),m("XRANGE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAIN]}$`),m("XRANGELOOSE",`^${c[l.GTLT]}\\s*${c[l.XRANGEPLAINLOOSE]}$`),m("COERCEPLAIN",`(^|[^\\d])(\\d{1,${t}})(?:\\.(\\d{1,${t}}))?(?:\\.(\\d{1,${t}}))?`),m("COERCE",`${c[l.COERCEPLAIN]}(?:$|[^\\d])`),m("COERCEFULL",c[l.COERCEPLAIN]+`(?:${c[l.PRERELEASE]})?(?:${c[l.BUILD]})?(?:$|[^\\d])`),m("COERCERTL",c[l.COERCE],!0),m("COERCERTLFULL",c[l.COERCEFULL],!0),m("LONETILDE","(?:~>?)"),m("TILDETRIM",`(\\s*)${c[l.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",m("TILDE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAIN]}$`),m("TILDELOOSE",`^${c[l.LONETILDE]}${c[l.XRANGEPLAINLOOSE]}$`),m("LONECARET","(?:\\^)"),m("CARETTRIM",`(\\s*)${c[l.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",m("CARET",`^${c[l.LONECARET]}${c[l.XRANGEPLAIN]}$`),m("CARETLOOSE",`^${c[l.LONECARET]}${c[l.XRANGEPLAINLOOSE]}$`),m("COMPARATORLOOSE",`^${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]})$|^$`),m("COMPARATOR",`^${c[l.GTLT]}\\s*(${c[l.FULLPLAIN]})$|^$`),m("COMPARATORTRIM",`(\\s*)${c[l.GTLT]}\\s*(${c[l.LOOSEPLAIN]}|${c[l.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",m("HYPHENRANGE",`^\\s*(${c[l.XRANGEPLAIN]})\\s+-\\s+(${c[l.XRANGEPLAIN]})\\s*$`),m("HYPHENRANGELOOSE",`^\\s*(${c[l.XRANGEPLAINLOOSE]})\\s+-\\s+(${c[l.XRANGEPLAINLOOSE]})\\s*$`),m("STAR","(<|>)?=?\\s*\\*"),m("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),m("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")})(bt,bt.exports);var Ie=bt.exports;const Ln=Object.freeze({loose:!0}),Dn=Object.freeze({}),Nn=s=>s?typeof s!="object"?Ln:s:Dn;var Lt=Nn;const nr=/^[0-9]+$/,os=(s,e)=>{const t=nr.test(s),r=nr.test(e);return t&&r&&(s=+s,e=+e),s===e?0:t&&!r?-1:r&&!t?1:s<e?-1:1},Bn=(s,e)=>os(e,s);var ns={compareIdentifiers:os,rcompareIdentifiers:Bn};const Be=Ze,{MAX_LENGTH:ir,MAX_SAFE_INTEGER:je}=Qe,{safeRe:ar,safeSrc:cr,t:xe}=Ie,jn=Lt,{compareIdentifiers:fe}=ns;let xn=class ie{constructor(e,t){if(t=jn(t),e instanceof ie){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`);Be("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?ar[xe.LOOSE]:ar[xe.FULL]);if(!r)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>je||this.major<0)throw new TypeError("Invalid major version");if(this.minor>je||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>je||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(o=>{if(/^[0-9]+$/.test(o)){const n=+o;if(n>=0&&n<je)return n}return o}):this.prerelease=[],this.build=r[5]?r[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(Be("SemVer.compare",this.version,this.options,e),!(e instanceof ie)){if(typeof e=="string"&&e===this.version)return 0;e=new ie(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof ie||(e=new ie(e,this.options)),fe(this.major,e.major)||fe(this.minor,e.minor)||fe(this.patch,e.patch)}comparePre(e){if(e instanceof ie||(e=new ie(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{const r=this.prerelease[t],o=e.prerelease[t];if(Be("prerelease compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return fe(r,o)}while(++t)}compareBuild(e){e instanceof ie||(e=new ie(e,this.options));let t=0;do{const r=this.build[t],o=e.build[t];if(Be("build compare",t,r,o),r===void 0&&o===void 0)return 0;if(o===void 0)return 1;if(r===void 0)return-1;if(r===o)continue;return fe(r,o)}while(++t)}inc(e,t,r){if(e.startsWith("pre")){if(!t&&r===!1)throw new Error("invalid increment argument: identifier is empty");if(t){const o=new RegExp(`^${this.options.loose?cr[xe.PRERELEASELOOSE]:cr[xe.PRERELEASE]}$`),n=`-${t}`.match(o);if(!n||n[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,r),this.inc("pre",t,r);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,r),this.inc("pre",t,r);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{const o=Number(r)?1:0;if(this.prerelease.length===0)this.prerelease=[o];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]=="number"&&(this.prerelease[n]++,n=-2);if(n===-1){if(t===this.prerelease.join(".")&&r===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(o)}}if(t){let n=[t,o];r===!1&&(n=[t]),fe(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};var W=xn;const lr=W,Vn=(s,e,t=!1)=>{if(s instanceof lr)return s;try{return new lr(s,e)}catch(r){if(!t)return null;throw r}};var ve=Vn;const Un=ve,Gn=(s,e)=>{const t=Un(s,e);return t?t.version:null};var Jn=Gn;const Mn=ve,_n=(s,e)=>{const t=Mn(s.trim().replace(/^[=v]+/,""),e);return t?t.version:null};var Kn=_n;const ur=W,Hn=(s,e,t,r,o)=>{typeof t=="string"&&(o=r,r=t,t=void 0);try{return new ur(s instanceof ur?s.version:s,t).inc(e,r,o).version}catch{return null}};var qn=Hn;const dr=ve,Wn=(s,e)=>{const t=dr(s,null,!0),r=dr(e,null,!0),o=t.compare(r);if(o===0)return null;const n=o>0,i=n?t:r,a=n?r:t,c=!!i.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(i)===0)return a.minor&&!a.patch?"minor":"patch"}const l=c?"pre":"";return t.major!==r.major?l+"major":t.minor!==r.minor?l+"minor":t.patch!==r.patch?l+"patch":"prerelease"};var zn=Wn;const Xn=W,Yn=(s,e)=>new Xn(s,e).major;var Qn=Yn;const Zn=W,ei=(s,e)=>new Zn(s,e).minor;var ti=ei;const ri=W,si=(s,e)=>new ri(s,e).patch;var oi=si;const ni=ve,ii=(s,e)=>{const t=ni(s,e);return t&&t.prerelease.length?t.prerelease:null};var ai=ii;const pr=W,ci=(s,e,t)=>new pr(s,t).compare(new pr(e,t));var oe=ci;const li=oe,ui=(s,e,t)=>li(e,s,t);var di=ui;const pi=oe,hi=(s,e)=>pi(s,e,!0);var fi=hi;const hr=W,gi=(s,e,t)=>{const r=new hr(s,t),o=new hr(e,t);return r.compare(o)||r.compareBuild(o)};var Dt=gi;const mi=Dt,vi=(s,e)=>s.sort((t,r)=>mi(t,r,e));var yi=vi;const Si=Dt,bi=(s,e)=>s.sort((t,r)=>Si(r,t,e));var wi=bi;const Pi=oe,Ei=(s,e,t)=>Pi(s,e,t)>0;var et=Ei;const Ci=oe,Ri=(s,e,t)=>Ci(s,e,t)<0;var Nt=Ri;const ki=oe,Oi=(s,e,t)=>ki(s,e,t)===0;var is=Oi;const $i=oe,Ti=(s,e,t)=>$i(s,e,t)!==0;var as=Ti;const Ii=oe,Fi=(s,e,t)=>Ii(s,e,t)>=0;var Bt=Fi;const Ai=oe,Li=(s,e,t)=>Ai(s,e,t)<=0;var jt=Li;const Di=is,Ni=as,Bi=et,ji=Bt,xi=Nt,Vi=jt,Ui=(s,e,t,r)=>{switch(e){case"===":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s===t;case"!==":return typeof s=="object"&&(s=s.version),typeof t=="object"&&(t=t.version),s!==t;case"":case"=":case"==":return Di(s,t,r);case"!=":return Ni(s,t,r);case">":return Bi(s,t,r);case">=":return ji(s,t,r);case"<":return xi(s,t,r);case"<=":return Vi(s,t,r);default:throw new TypeError(`Invalid operator: ${e}`)}};var cs=Ui;const Gi=W,Ji=ve,{safeRe:Ve,t:Ue}=Ie,Mi=(s,e)=>{if(s instanceof Gi)return s;if(typeof s=="number"&&(s=String(s)),typeof s!="string")return null;e=e||{};let t=null;if(!e.rtl)t=s.match(e.includePrerelease?Ve[Ue.COERCEFULL]:Ve[Ue.COERCE]);else{const c=e.includePrerelease?Ve[Ue.COERCERTLFULL]:Ve[Ue.COERCERTL];let u;for(;(u=c.exec(s))&&(!t||t.index+t[0].length!==s.length);)(!t||u.index+u[0].length!==t.index+t[0].length)&&(t=u),c.lastIndex=u.index+u[1].length+u[2].length;c.lastIndex=-1}if(t===null)return null;const r=t[2],o=t[3]||"0",n=t[4]||"0",i=e.includePrerelease&&t[5]?`-${t[5]}`:"",a=e.includePrerelease&&t[6]?`+${t[6]}`:"";return Ji(`${r}.${o}.${n}${i}${a}`,e)};var _i=Mi;class Ki{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 Hi=Ki,it,fr;function ne(){if(fr)return it;fr=1;const s=/\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(s," "),this.set=this.raw.split("||").map(S=>this.parseRange(S.trim())).filter(S=>S.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){const S=this.set[0];if(this.set=this.set.filter(P=>!m(P[0])),this.set.length===0)this.set=[S];else if(this.set.length>1){for(const P of this.set)if(P.length===1&&x(P[0])){this.set=[P];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let p=0;p<this.set.length;p++){p>0&&(this.formatted+="||");const v=this.set[p];for(let S=0;S<v.length;S++)S>0&&(this.formatted+=" "),this.formatted+=v[S].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(p){const S=((this.options.includePrerelease&&f)|(this.options.loose&&C))+":"+p,P=r.get(S);if(P)return P;const b=this.options.loose,E=b?c[u.HYPHENRANGELOOSE]:c[u.HYPHENRANGE];p=p.replace(E,Q(this.options.includePrerelease)),i("hyphen replace",p),p=p.replace(c[u.COMPARATORTRIM],l),i("comparator trim",p),p=p.replace(c[u.TILDETRIM],d),i("tilde trim",p),p=p.replace(c[u.CARETTRIM],g),i("caret trim",p);let T=p.split(" ").map(F=>U(F,this.options)).join(" ").split(/\s+/).map(F=>G(F,this.options));b&&(T=T.filter(F=>(i("loose invalid filter",F,this.options),!!F.match(c[u.COMPARATORLOOSE])))),i("range list",T);const R=new Map,A=T.map(F=>new n(F,this.options));for(const F of A){if(m(F))return[F];R.set(F.value,F)}R.size>1&&R.has("")&&R.delete("");const V=[...R.values()];return r.set(S,V),V}intersects(p,v){if(!(p instanceof e))throw new TypeError("a Range is required");return this.set.some(S=>D(S,v)&&p.set.some(P=>D(P,v)&&S.every(b=>P.every(E=>b.intersects(E,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(he(this.set[v],p,this.options))return!0;return!1}}it=e;const t=Hi,r=new t,o=Lt,n=tt(),i=Ze,a=W,{safeRe:c,t:u,comparatorTrimReplace:l,tildeTrimReplace:d,caretTrimReplace:g}=Ie,{FLAG_INCLUDE_PRERELEASE:f,FLAG_LOOSE:C}=Qe,m=y=>y.value==="<0.0.0-0",x=y=>y.value==="",D=(y,p)=>{let v=!0;const S=y.slice();let P=S.pop();for(;v&&S.length;)v=S.every(b=>P.intersects(b,p)),P=S.pop();return v},U=(y,p)=>(i("comp",y,p),y=N(y,p),i("caret",y),y=M(y,p),i("tildes",y),y=le(y,p),i("xrange",y),y=_(y,p),i("stars",y),y),I=y=>!y||y.toLowerCase()==="x"||y==="*",M=(y,p)=>y.trim().split(/\s+/).map(v=>pe(v,p)).join(" "),pe=(y,p)=>{const v=p.loose?c[u.TILDELOOSE]:c[u.TILDE];return y.replace(v,(S,P,b,E,T)=>{i("tilde",y,S,P,b,E,T);let R;return I(P)?R="":I(b)?R=`>=${P}.0.0 <${+P+1}.0.0-0`:I(E)?R=`>=${P}.${b}.0 <${P}.${+b+1}.0-0`:T?(i("replaceTilde pr",T),R=`>=${P}.${b}.${E}-${T} <${P}.${+b+1}.0-0`):R=`>=${P}.${b}.${E} <${P}.${+b+1}.0-0`,i("tilde return",R),R})},N=(y,p)=>y.trim().split(/\s+/).map(v=>Y(v,p)).join(" "),Y=(y,p)=>{i("caret",y,p);const v=p.loose?c[u.CARETLOOSE]:c[u.CARET],S=p.includePrerelease?"-0":"";return y.replace(v,(P,b,E,T,R)=>{i("caret",y,P,b,E,T,R);let A;return I(b)?A="":I(E)?A=`>=${b}.0.0${S} <${+b+1}.0.0-0`:I(T)?b==="0"?A=`>=${b}.${E}.0${S} <${b}.${+E+1}.0-0`:A=`>=${b}.${E}.0${S} <${+b+1}.0.0-0`:R?(i("replaceCaret pr",R),b==="0"?E==="0"?A=`>=${b}.${E}.${T}-${R} <${b}.${E}.${+T+1}-0`:A=`>=${b}.${E}.${T}-${R} <${b}.${+E+1}.0-0`:A=`>=${b}.${E}.${T}-${R} <${+b+1}.0.0-0`):(i("no pr"),b==="0"?E==="0"?A=`>=${b}.${E}.${T}${S} <${b}.${E}.${+T+1}-0`:A=`>=${b}.${E}.${T}${S} <${b}.${+E+1}.0-0`:A=`>=${b}.${E}.${T} <${+b+1}.0.0-0`),i("caret return",A),A})},le=(y,p)=>(i("replaceXRanges",y,p),y.split(/\s+/).map(v=>z(v,p)).join(" ")),z=(y,p)=>{y=y.trim();const v=p.loose?c[u.XRANGELOOSE]:c[u.XRANGE];return y.replace(v,(S,P,b,E,T,R)=>{i("xRange",y,S,P,b,E,T,R);const A=I(b),V=A||I(E),F=V||I(T),ce=F;return P==="="&&ce&&(P=""),R=p.includePrerelease?"-0":"",A?P===">"||P==="<"?S="<0.0.0-0":S="*":P&&ce?(V&&(E=0),T=0,P===">"?(P=">=",V?(b=+b+1,E=0,T=0):(E=+E+1,T=0)):P==="<="&&(P="<",V?b=+b+1:E=+E+1),P==="<"&&(R="-0"),S=`${P+b}.${E}.${T}${R}`):V?S=`>=${b}.0.0${R} <${+b+1}.0.0-0`:F&&(S=`>=${b}.${E}.0${R} <${b}.${+E+1}.0-0`),i("xRange return",S),S})},_=(y,p)=>(i("replaceStars",y,p),y.trim().replace(c[u.STAR],"")),G=(y,p)=>(i("replaceGTE0",y,p),y.trim().replace(c[p.includePrerelease?u.GTE0PRE:u.GTE0],"")),Q=y=>(p,v,S,P,b,E,T,R,A,V,F,ce)=>(I(S)?v="":I(P)?v=`>=${S}.0.0${y?"-0":""}`:I(b)?v=`>=${S}.${P}.0${y?"-0":""}`:E?v=`>=${v}`:v=`>=${v}${y?"-0":""}`,I(A)?R="":I(V)?R=`<${+A+1}.0.0-0`:I(F)?R=`<${A}.${+V+1}.0-0`:ce?R=`<=${A}.${V}.${F}-${ce}`:y?R=`<${A}.${V}.${+F+1}-0`:R=`<=${R}`,`${v} ${R}`.trim()),he=(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 s=Symbol("SemVer ANY");class e{static get ANY(){return s}constructor(l,d){if(d=t(d),l instanceof e){if(l.loose===!!d.loose)return l;l=l.value}l=l.trim().split(/\s+/).join(" "),i("comparator",l,d),this.options=d,this.loose=!!d.loose,this.parse(l),this.semver===s?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}parse(l){const d=this.options.loose?r[o.COMPARATORLOOSE]:r[o.COMPARATOR],g=l.match(d);if(!g)throw new TypeError(`Invalid comparator: ${l}`);this.operator=g[1]!==void 0?g[1]:"",this.operator==="="&&(this.operator=""),g[2]?this.semver=new a(g[2],this.options.loose):this.semver=s}toString(){return this.value}test(l){if(i("Comparator.test",l,this.options.loose),this.semver===s||l===s)return!0;if(typeof l=="string")try{l=new a(l,this.options)}catch{return!1}return n(l,this.operator,this.semver,this.options)}intersects(l,d){if(!(l instanceof e))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new c(l.value,d).test(this.value):l.operator===""?l.value===""?!0:new c(this.value,d).test(l.semver):(d=t(d),d.includePrerelease&&(this.value==="<0.0.0-0"||l.value==="<0.0.0-0")||!d.includePrerelease&&(this.value.startsWith("<0.0.0")||l.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&l.operator.startsWith(">")||this.operator.startsWith("<")&&l.operator.startsWith("<")||this.semver.version===l.semver.version&&this.operator.includes("=")&&l.operator.includes("=")||n(this.semver,"<",l.semver,d)&&this.operator.startsWith(">")&&l.operator.startsWith("<")||n(this.semver,">",l.semver,d)&&this.operator.startsWith("<")&&l.operator.startsWith(">")))}}at=e;const t=Lt,{safeRe:r,t:o}=Ie,n=cs,i=Ze,a=W,c=ne();return at}const qi=ne(),Wi=(s,e,t)=>{try{e=new qi(e,t)}catch{return!1}return e.test(s)};var rt=Wi;const zi=ne(),Xi=(s,e)=>new zi(s,e).set.map(t=>t.map(r=>r.value).join(" ").trim().split(" "));var Yi=Xi;const Qi=W,Zi=ne(),ea=(s,e,t)=>{let r=null,o=null,n=null;try{n=new Zi(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===-1)&&(r=i,o=new Qi(r,t))}),r};var ta=ea;const ra=W,sa=ne(),oa=(s,e,t)=>{let r=null,o=null,n=null;try{n=new sa(e,t)}catch{return null}return s.forEach(i=>{n.test(i)&&(!r||o.compare(i)===1)&&(r=i,o=new ra(r,t))}),r};var na=oa;const ct=W,ia=ne(),mr=et,aa=(s,e)=>{s=new ia(s,e);let t=new ct("0.0.0");if(s.test(t)||(t=new ct("0.0.0-0"),s.test(t)))return t;t=null;for(let r=0;r<s.set.length;++r){const o=s.set[r];let n=null;o.forEach(i=>{const a=new 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&&s.test(t)?t:null};var ca=aa;const la=ne(),ua=(s,e)=>{try{return new la(s,e).range||"*"}catch{return null}};var da=ua;const pa=W,ls=tt(),{ANY:ha}=ls,fa=ne(),ga=rt,vr=et,yr=Nt,ma=jt,va=Bt,ya=(s,e,t,r)=>{s=new pa(s,r),e=new fa(e,r);let o,n,i,a,c;switch(t){case">":o=vr,n=ma,i=yr,a=">",c=">=";break;case"<":o=yr,n=va,i=vr,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(ga(s,e,r))return!1;for(let u=0;u<e.set.length;++u){const l=e.set[u];let d=null,g=null;if(l.forEach(f=>{f.semver===ha&&(f=new ls(">=0.0.0")),d=d||f,g=g||f,o(f.semver,d.semver,r)?d=f:i(f.semver,g.semver,r)&&(g=f)}),d.operator===a||d.operator===c||(!g.operator||g.operator===a)&&n(s,g.semver))return!1;if(g.operator===c&&i(s,g.semver))return!1}return!0};var xt=ya;const Sa=xt,ba=(s,e,t)=>Sa(s,e,">",t);var wa=ba;const Pa=xt,Ea=(s,e,t)=>Pa(s,e,"<",t);var Ca=Ea;const Sr=ne(),Ra=(s,e,t)=>(s=new Sr(s,t),e=new Sr(e,t),s.intersects(e,t));var ka=Ra;const Oa=rt,$a=oe;var Ta=(s,e,t)=>{const r=[];let o=null,n=null;const i=s.sort((l,d)=>$a(l,d,t));for(const l of i)Oa(l,e,t)?(n=l,o||(o=l)):(n&&r.push([o,n]),n=null,o=null);o&&r.push([o,null]);const a=[];for(const[l,d]of r)l===d?a.push(l):!d&&l===i[0]?a.push("*"):d?l===i[0]?a.push(`<=${d}`):a.push(`${l} - ${d}`):a.push(`>=${l}`);const c=a.join(" || "),u=typeof e.raw=="string"?e.raw:String(e);return c.length<u.length?c:e};const br=ne(),Vt=tt(),{ANY:lt}=Vt,Se=rt,Ut=oe,Ia=(s,e,t={})=>{if(s===e)return!0;s=new br(s,t),e=new br(e,t);let r=!1;e:for(const o of s.set){for(const n of e.set){const i=Aa(o,n,t);if(r=r||i!==null,i)continue e}if(r)return!1}return!0},Fa=[new Vt(">=0.0.0-0")],wr=[new Vt(">=0.0.0")],Aa=(s,e,t)=>{if(s===e)return!0;if(s.length===1&&s[0].semver===lt){if(e.length===1&&e[0].semver===lt)return!0;t.includePrerelease?s=Fa:s=wr}if(e.length===1&&e[0].semver===lt){if(t.includePrerelease)return!0;e=wr}const r=new Set;let o,n;for(const f of s)f.operator===">"||f.operator===">="?o=Pr(o,f,t):f.operator==="<"||f.operator==="<="?n=Er(n,f,t):r.add(f.semver);if(r.size>1)return null;let i;if(o&&n){if(i=Ut(o.semver,n.semver,t),i>0)return null;if(i===0&&(o.operator!==">="||n.operator!=="<="))return null}for(const f of r){if(o&&!Se(f,String(o),t)||n&&!Se(f,String(n),t))return null;for(const C of e)if(!Se(f,String(C),t))return!1;return!0}let a,c,u,l,d=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1,g=o&&!t.includePrerelease&&o.semver.prerelease.length?o.semver:!1;d&&d.prerelease.length===1&&n.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(const f of e){if(l=l||f.operator===">"||f.operator===">=",u=u||f.operator==="<"||f.operator==="<=",o){if(g&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===g.major&&f.semver.minor===g.minor&&f.semver.patch===g.patch&&(g=!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=Er(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&&u&&!n&&i!==0||n&&l&&!o&&i!==0||g||d)},Pr=(s,e,t)=>{if(!s)return e;const r=Ut(s.semver,e.semver,t);return r>0?s:r<0||e.operator===">"&&s.operator===">="?e:s},Er=(s,e,t)=>{if(!s)return e;const r=Ut(s.semver,e.semver,t);return r<0?s:r>0||e.operator==="<"&&s.operator==="<="?e:s};var La=Ia;const ut=Ie,Cr=Qe,Da=W,Rr=ns,Na=ve,Ba=Jn,ja=Kn,xa=qn,Va=zn,Ua=Qn,Ga=ti,Ja=oi,Ma=ai,_a=oe,Ka=di,Ha=fi,qa=Dt,Wa=yi,za=wi,Xa=et,Ya=Nt,Qa=is,Za=as,ec=Bt,tc=jt,rc=cs,sc=_i,oc=tt(),nc=ne(),ic=rt,ac=Yi,cc=ta,lc=na,uc=ca,dc=da,pc=xt,hc=wa,fc=Ca,gc=ka,mc=Ta,vc=La;var yc={parse:Na,valid:Ba,clean:ja,inc:xa,diff:Va,major:Ua,minor:Ga,patch:Ja,prerelease:Ma,compare:_a,rcompare:Ka,compareLoose:Ha,compareBuild:qa,sort:Wa,rsort:za,gt:Xa,lt:Ya,eq:Qa,neq:Za,gte:ec,lte:tc,cmp:rc,coerce:sc,Comparator:oc,Range:nc,satisfies:ic,toComparators:ac,maxSatisfying:cc,minSatisfying:lc,minVersion:uc,validRange:dc,outside:pc,gtr:hc,ltr:fc,intersects:gc,simplifyRange:mc,subset:vc,SemVer:Da,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 Sc=kn(yc),bc={minDelay:1500},wc="__no_updates__";class Pc extends B.PollComputablePool{constructor(t,r,o={}){super({...o,...bc},r);w(this,"http");w(this,"preferredUpdateChannel");this.registryProvider=t,this.http=o.http,this.preferredUpdateChannel=o.preferredUpdateChannel}getKey(t){switch(t.currentSpec.type){case"dev-v1":return`dev_1_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"dev-v2":return`dev_2_${t.currentSpec.folder}_${t.currentSpec.mtime}`;case"from-registry-v2":return`from_registry_v2_${re(t)}`;default:return wc}}async readValue(t){var r,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 H.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 u=this.preferredUpdateChannel;if(u===void 0)if(n.channel===void 0)if(await c.getLatestOverview(n.id,K.StableChannel))u=K.StableChannel;else{if(await c.getLatestOverview(n.id,K.AnyChannel)===void 0)return this.logger.error(`No "any" channel record for ${K.blockPackIdToString(n.id)}`),{suggestions:[]};u=K.AnyChannel}else u=n.channel;const l=await c.getUpdateSuggestions(n.id,u);if(l===void 0||l.length===0)return{suggestions:[]};l.reverse();let d;switch(i){case void 0:d=l[0].update;break;case"major":d=(r=l.find(C=>C.type!=="major"))==null?void 0:r.update;break;case"minor":d=(o=l.find(C=>C.type==="patch"))==null?void 0:o.update;break}const g=l.map(({type:C,update:m})=>({type:C,update:{...n,id:{...n.id,version:m}}}));if(d===void 0)return{suggestions:g};if(a!==void 0&&Sc.lte(d,a))return{suggestions:g};const f={...n,id:{...n.id,version:d}};return(async()=>{try{await c.getComponents(f.id)}catch(C){this.logger.warn(C)}})(),{suggestions:g,mainSuggestion:f}}catch(i){return this.logger.warn(i),{suggestions:[]}}default:return{suggestions:[]}}}catch(n){return this.logger.warn(n),{suggestions:[]}}}resultsEqual(t,r){return re(t)===re(r)}}class kr{constructor(){w(this,"resources",new Map)}check(e){const t=this.resources.get(e);if(t===void 0)throw new Error("Unexpected state.");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 r=this.resources.get(t);r===void 0&&(r={refCount:0,resource:this.createNewResource(e)},this.resources.set(t,r)),r.refCount++;let o=!1;return{resource:r.resource,key:t,unref:()=>{o||(r.refCount--,o=!0,this.check(t))}}}getByKey(e){if(!this.resources.has(e))throw new Error(`resource not found, key = ${e}`);return this.resources.get(e).resource}tryGetByKey(e){var t;return(t=this.resources.get(e))==null?void 0:t.resource}}let be;function ue(){return be||(be={logPFrameRequests:process.env.MI_LOG_PFRAMES!==void 0,dumpInitialTreeState:process.env.MI_DUMP_INITIAL_TREE_STATE!==void 0},process.env.MI_LOG_TREE_STAT&&(be.logTreeStats=process.env.MI_LOG_TREE_STAT==="cumulative"?"cumulative":"per-request"),be)}function Re(s){return String(s.id)}const Ec=["Int","Long","Float","Double","String","Bytes"];function dt(s){const e=[],t=[];for(const r of s)r.type==="bySingleColumn"?(e.push(r),t.push({...r,type:"bySingleColumnV2"})):t.push(r);if(e.length>0){const r=JSON.stringify(e);console.warn(`type overriten from 'bySingleColumn' to 'bySingleColumnV2' for filters: ${r}`)}return t}const we=(s,e)=>typeof e=="bigint"?e.toString():e;class Cc{constructor(e,t,r,o){w(this,"rustPFrame");w(this,"blobIdToResource",new Map);w(this,"blobHandleComputables",new Map);w(this,"preloadBlob",async e=>{const t=e.map(r=>this.getOrCreateComputableForBlob(r));for(const r of t)await r.awaitStableFullValue()});w(this,"resolveBlob",async e=>{const t=this.getOrCreateComputableForBlob(e);return this.blobDriver.getLocalPath((await t.awaitStableValue()).handle)});w(this,"resolveBlobContent",async e=>{try{const t=this.getOrCreateComputableForBlob(e),r=this.blobDriver.getLocalPath((await t.awaitStableValue()).handle);return await this.blobContentCache.forceFetch(r)}catch(t){const r=JSON.stringify(t);throw console.log(`resolveBlobContent catched error: ${r}`),t}});this.blobDriver=e,this.logger=t,this.blobContentCache=r;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(Re(c),c);const i=[...new Map(o.map(a=>({...a,data:wo(a.data,Re)})).map(a=>[re(a),a])).values()];try{const a=new Ss.PFrame(ue().logPFrameRequests?n:void 0);a.setDataSource(this);for(const c of i)a.addColumnSpec(c.id,c.spec),a.setColumnData(c.id,c.data);this.rustPFrame=a}catch(a){throw new Error(`Rust PFrame creation failed, columns: ${JSON.stringify(i)}, error: ${a}`)}}getOrCreateComputableForBlob(e){let t=this.blobHandleComputables.get(e);if(t!==void 0)return t;const r=this.blobIdToResource.get(e);if(r===void 0)throw new Error(`Blob with id ${e} not found.`);return t=this.blobDriver.getDownloadedBlob(r).withPreCalculatedValueTree(),this.blobHandleComputables.set(e,t),t}[Symbol.dispose](){for(const e of this.blobHandleComputables.values())e.resetState();this.rustPFrame.dispose()}}class Rc{constructor(e){this.table=e}[Symbol.dispose](){this.table.then(e=>e.dispose())}}class kc{constructor(e,t){w(this,"pFrames");w(this,"pTables");w(this,"blobContentCache");this.blobDriver=e,this.logger=t;const r=new $r.LRUCache({maxSize:1e9,fetchMethod:async o=>await Fr.readFile(o),sizeCalculation:o=>o.length});this.blobContentCache=r,this.pFrames=new class extends kr{constructor(o,n){super(),this.blobDriver=o,this.logger=n}createNewResource(o){return ue().logPFrameRequests&&t.info(`PFrame creation (pFrameHandle = ${this.calculateParamsKey(o)}): ${JSON.stringify(o,we)}`),new Cc(this.blobDriver,this.logger,r,o)}calculateParamsKey(o){return $c(o)}}(this.blobDriver,this.logger),this.pTables=new class extends kr{constructor(o){super(),this.pFrames=o}createNewResource(o){const n=o.pFrameHandle;ue().logPFrameRequests&&t.info(`PTable creation (pTableHandle = ${this.calculateParamsKey(o)}): ${JSON.stringify(o,we)}`);const i=this.pFrames.getByKey(n).rustPFrame.createTable({src:ke(o.def.src),filters:dt(o.def.filters)},o.signal).then(async a=>{if(o.def.sorting.length===0)return a;try{return await a.sort(o.def.sorting,o.signal)}finally{a.dispose()}});return new Rc(i)}calculateParamsKey(o){return Oc(o)}}(this.pFrames)}createPFrame(e,t){const r=e.filter(n=>Ec.find(i=>i===n.spec.valueType)).map(n=>L.mapPObjectData(n,i=>Je.isPlTreeNodeAccessor(i)?Oo(i):L.isDataInfo(i)?L.mapDataInfo(i,a=>a.resourceInfo):$o(n.spec,i))),o=this.pFrames.acquire(r);return t.addOnDestroy(o.unref),o.key}createPTable(e,t,r){const o=this.createPFrame(L.extractAllColumns(e.src),t),n=L.mapPTableDef(e,a=>a.id),i=this.pTables.acquire({def:n,pFrameHandle:o,signal:r});return ue().logPFrameRequests&&this.logger.info(`Create PTable call (pFrameHandle = ${o}; pTableHandle = ${JSON.stringify(i)}): ${JSON.stringify(L.mapPTableDef(e,a=>a.spec),we)}`),t.addOnDestroy(i.unref),i.key}async findColumns(e,t){const r={...t,compatibleWith:t.compatibleWith.length!==0?[{axesSpec:[...new Map(t.compatibleWith.map(n=>[re(n),n])).values()],qualifications:[]}]:[]};return{hits:(await this.pFrames.getByKey(e).rustPFrame.findColumns(r)).hits.filter(n=>n.mappingVariants.length===0||n.mappingVariants.some(i=>i.qualifications.forHit.length===0&&i.qualifications.forQueries.every(a=>a.length===0))).map(n=>n.hit)}}async getColumnSpec(e,t){return await this.pFrames.getByKey(e).rustPFrame.getColumnSpec(t)}async listColumns(e){return await this.pFrames.getByKey(e).rustPFrame.listColumns()}async calculateTableData(e,t,r){return ue().logPFrameRequests&&this.logger.info(`Call calculateTableData, handle = ${e}, request = ${JSON.stringify(t,we)}`),await this.pFrames.getByKey(e).rustPFrame.createTable({src:ke(t.src),filters:dt(t.filters)},r).then(async o=>{if(t.sorting.length===0)return o;try{return await o.sort(t.sorting,r)}finally{o.dispose()}}).then(async o=>{try{const n=o.getSpec(),i=await o.getData([...n.keys()]);return n.map((a,c)=>({spec:a,data:i[c]}))}finally{o.dispose()}})}async getUniqueValues(e,t,r){return ue().logPFrameRequests&&this.logger.info(`Call getUniqueValues, handle = ${e}, request = ${JSON.stringify(t,we)}`),await this.pFrames.getByKey(e).rustPFrame.getUniqueValues({...t,filters:dt(t.filters)},r)}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,r){return await(await this.pTables.getByKey(e).table).getData(t,r)}}function ke(s){switch(s.type){case"column":return{type:"column",columnId:s.column};case"slicedColumn":return{type:"slicedColumn",columnId:s.column,newId:s.newId,axisFilters:s.axisFilters};case"inner":case"full":return{type:s.type,entries:s.entries.map(e=>ke(e))};case"outer":return{type:"outer",primary:ke(s.primary),secondary:s.secondary.map(e=>ke(e))};default:k.assertNever(s)}}function Oc(s){const e=se.createHash("sha256");return e.update(re(s)),e.digest().toString("hex")}function $c(s){const e=[...s].map(r=>L.mapPObjectData(r,o=>{let n;const i=o.type;switch(i){case"Json":n={type:o.type,keyLength:o.keyLength,payload:Object.entries(o.data).map(([a,c])=>({key:a,value:c}))};break;case"JsonPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:Re(c)}))};break;case"BinaryPartitioned":n={type:o.type,keyLength:o.partitionKeyLength,payload:Object.entries(o.parts).map(([a,c])=>({key:a,value:[Re(c.index),Re(c.values)]}))};break;default:throw Error(`unsupported resource type: ${JSON.stringify(i)}`)}return n.payload.sort((a,c)=>a.key.localeCompare(c.key)),n}));e.sort((r,o)=>r.id.localeCompare(o.id));const t=se.createHash("sha256");return t.update(re(e)),t.digest().toString("hex")}async function us(s,e,t){const r={...Ft,...At(e),...t},o=new k.HmacSha256Signer(r.localSecret),n=ee.createDownloadClient(r.logger,s,r.localProjections),i=ee.createLogsClient(s,r.logger),a=ee.createUploadBlobClient(s,r.logger),c=ee.createUploadProgressClient(s,r.logger),u=new ee.DownloadDriver(r.logger,n,i,r.blobDownloadPath,o,r.blobDriverOps),l=new ee.DownloadBlobToURLDriver(r.logger,o,n,r.downloadBlobToURLPath,r.downloadBlobToURLDriverOps),d=new ee.UploadDriver(r.logger,o,a,c,r.uploadDriverOps),g=new ee.LogsStreamDriver(r.logger,i,r.logStreamDriverOps),f=new ee.LogsDriver(r.logger,g,u),C=await ee.LsDriver.init(r.logger,s,o,r.localProjections,r.openFileDialogCallback,r.virtualLocalStoragesOverride),m=new kc(u,r.logger);return{blobDriver:u,blobToURLDriver:l,logDriver:f,lsDriver:C,signer:o,uploadDriver:d,pFrameDriver:m}}class Gt{constructor(e,t,r,o,n,i,a,c){w(this,"pl");w(this,"projectList");w(this,"openedProjectsByRid",new Map);this.env=e,this.driverKit=t,this.signer=r,this.projectListResourceId=o,this.openedProjectsList=n,this.projectListTree=i,this.blockRegistryProvider=a,this.projectList=c,this.pl=this.env.pl}get internalDriverKit(){return this.env.driverKit}async createProject(e,t=se.randomUUID()){const r=await this.pl.withWriteTx("MLCreateProject",async o=>{const n=await So(o,e);return o.createField(h.field(this.projectListResourceId,t),"Dynamic",n),await o.commit(),await h.toGlobalResourceId(n)});return await this.projectListTree.refreshState(),r}async setProjectMeta(e,t,r){await te(this.pl,e,r,o=>{o.setMeta(t)}),await this.projectListTree.refreshState()}async deleteProject(e){await this.pl.withWriteTx("MLRemoveProject",async t=>{t.removeField(h.field(this.projectListResourceId,e)),await t.commit()}),await this.projectListTree.refreshState()}async projectIdToResourceId(e){return await this.pl.withReadTx("Project id to resource id",async t=>{const r=(await t.getField(h.field(this.projectListResourceId,e))).value;if(h.isNullResourceId(r))throw new Error("Unexpected project list structure.");return r})}async ensureProjectRid(e){return typeof e=="string"?await this.projectIdToResourceId(e):e}async openProject(e){const t=await this.ensureProjectRid(e);if(this.openedProjectsByRid.has(t))throw new Error(`Project ${t} already opened`);this.openedProjectsByRid.set(t,await Ye.init(this.env,t)),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}async closeProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);this.openedProjectsByRid.delete(e),await t.destroy(),this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()])}getOpenedProject(e){const t=this.openedProjectsByRid.get(e);if(t===void 0)throw new Error(`Project ${e} not found among opened projects`);return t}async close(){await Promise.all([...this.openedProjectsByRid.values()].map(e=>e.destroy())),await this.projectListTree.terminate(),await this.env.retryHttpDispatcher.destroy(),await this.pl.close()}async closeAndAwaitTermination(){await this.close()}static generateLocalSecret(){return k.HmacSha256Signer.generateSecret()}static async init(e,t,r){const o={...ts,...rs(t),...r};o.defaultTreeOptions.logStat=ue().logTreeStats,o.debugOps.dumpInitialTreeState=ue().dumpInitialTreeState;const n=await e.withWriteTx("MLInitialization",async m=>{const x=h.field(m.clientRoot,_s);m.createField(x,"Dynamic");const D=await m.getField(x);if(h.isNullResourceId(D.value)){const U=m.createEphemeral(Br);return m.lock(U),m.setField(x,U),await m.commit(),await U.globalId}else return D.value}),i=o.logger,a=await us(e,t,o),c=new He.RetryAgent(e.httpDispatcher,{minTimeout:250,maxRetries:4}),u=new Lr(c),l=new po(u,a.signer,c),d=new ee.DownloadUrlDriver(i,e.httpDispatcher,o.frontendDownloadPath),g={pl:e,signer:a.signer,logger:i,httpDispatcher:e.httpDispatcher,retryHttpDispatcher:c,ops:o,bpPreparer:l,frontendDownloadDriver:d,driverKit:a,blockUpdateWatcher:new Pc(u,i,{minDelay:o.devBlockUpdateRecheckInterval,http:c,preferredUpdateChannel:o.preferredUpdateChannel}),quickJs:await Oe.getQuickJS()},f=new B.WatchableValue([]),C=await Hs(e,n,f,g);return new Gt(g,a,a.signer,n,f,C.tree,u,C.computable)}}const Tc=["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 Ic(s,e={}){const t={pingCheckDurationMs:1e4,pingTimeoutMs:3e3,maxPingsPerSecond:50,httpTimeoutMs:3e3,blockRegistryDurationMs:3e3,maxRegistryChecksPerSecond:1,blockRegistryUrl:"https://blocks.pl-open.science",blockGARegistryUrl:"https://blocks-ga.pl-open.science",blockOverviewPath:"v2/overview.json",blockUiPath:"v2/milaboratories/samples-and-data/1.7.0/ui.tgz",autoUpdateCdnDurationMs:5e3,maxAutoUpdateCdnChecksPerSecond:1,autoUpdateCdnUrl:"https://cdn.platforma.bio/software/platforma-desktop-v2/windows/amd64/latest.yml",bodyLimit:300,...e},r=[];Tc.forEach(c=>{bs.channel(c).subscribe(l=>{var g;const d=new Date().toISOString();(g=l==null?void 0:l.response)!=null&&g.headers&&(l.response.headers=l.response.headers.map(f=>f.toString())),r.push(JSON.stringify({timestamp:d,event:c,data:l}))})});const o={plPings:[],blockRegistryOverviewChecks:[],blockGARegistryOverviewChecks:[],blockRegistryUiChecks:[],blockGARegistryUiChecks:[],autoUpdateCdnChecks:[]},n=h.plAddressToConfig(s,{defaultRequestTimeout:t.pingTimeoutMs});o.plPings=await ge(t.pingCheckDurationMs,t.maxPingsPerSecond,async()=>{const u=await new h.UnauthenticatedPlClient(n).ping();return JSON.stringify(u).slice(0,t.bodyLimit)+"..."});const a=new h.UnauthenticatedPlClient(n).ll.httpDispatcher;return o.blockRegistryOverviewChecks=await ge(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockOverviewPath,t.blockRegistryUrl),t,a)),o.blockGARegistryOverviewChecks=await ge(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockOverviewPath,t.blockGARegistryUrl),t,a)),o.blockRegistryUiChecks=await ge(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockUiPath,t.blockRegistryUrl),t,a)),o.blockGARegistryUiChecks=await ge(t.blockRegistryDurationMs,t.maxRegistryChecksPerSecond,async()=>await Pe(new URL(t.blockUiPath,t.blockGARegistryUrl),t,a)),o.autoUpdateCdnChecks=await ge(t.autoUpdateCdnDurationMs,t.maxAutoUpdateCdnChecksPerSecond,async()=>await Pe(t.autoUpdateCdnUrl,t,a)),Fc(o,s,t,r)}async function ge(s,e,t){const r=wt(),o=[];for(;Or(r)<s;){const n=wt();let i;try{i={ok:!0,value:await t()}}catch(u){i={ok:!1,error:u}}const a=Or(n);o.push({elapsedMs:a,response:i});const c=1e3/e-a;c>0&&await Ir.setTimeout(c)}return o}async function Pe(s,e,t){const{body:r,statusCode:o}=await He.request(s,{dispatcher:t,headersTimeout:e.httpTimeoutMs,bodyTimeout:e.httpTimeoutMs}),n=await r.text();return{statusCode:o,beginningOfBody:n.slice(0,e.bodyLimit)+"..."}}function Fc(s,e,t,r){const o=s.plPings.filter(a=>a.response.ok),n=s.plPings.filter(a=>!a.response.ok),i=[...new Set(o.map(a=>JSON.stringify(a.response.value)))];return`
|
|
5
5
|
Network report:
|
|
6
6
|
pl endpoint: ${e};
|
|
7
7
|
options: ${JSON.stringify(t,null,2)}.
|
|
8
8
|
|
|
9
|
-
Platforma pings: ${
|
|
9
|
+
Platforma pings: ${me(s.plPings)}
|
|
10
10
|
|
|
11
|
-
Block registry overview responses: ${
|
|
11
|
+
Block registry overview responses: ${me(s.blockRegistryOverviewChecks)}
|
|
12
12
|
|
|
13
|
-
Block ga registry overview responses: ${
|
|
13
|
+
Block ga registry overview responses: ${me(s.blockGARegistryOverviewChecks)}
|
|
14
14
|
|
|
15
|
-
Block registry ui responses: ${
|
|
15
|
+
Block registry ui responses: ${me(s.blockRegistryUiChecks)}
|
|
16
16
|
|
|
17
|
-
Block ga registry ui responses: ${
|
|
17
|
+
Block ga registry ui responses: ${me(s.blockGARegistryUiChecks)}
|
|
18
18
|
|
|
19
|
-
Auto-update CDN responses: ${
|
|
19
|
+
Auto-update CDN responses: ${me(s.autoUpdateCdnChecks)}
|
|
20
20
|
|
|
21
21
|
Block registry overview dumps:
|
|
22
22
|
${JSON.stringify(s.blockRegistryOverviewChecks,null,2)}
|
|
@@ -42,11 +42,11 @@ ${JSON.stringify(i,null,2)}
|
|
|
42
42
|
Undici logs:
|
|
43
43
|
${r.join(`
|
|
44
44
|
`)}
|
|
45
|
-
`}function
|
|
45
|
+
`}function me(s){const e=s.filter(o=>o.response.ok),{mean:t,median:r}=Ac(s);return`
|
|
46
46
|
total: ${s.length};
|
|
47
47
|
successes: ${e.length};
|
|
48
48
|
errors: ${s.length-e.length};
|
|
49
49
|
mean in ms: ${t};
|
|
50
50
|
median in ms: ${r};
|
|
51
|
-
`}function
|
|
51
|
+
`}function Ac(s){const e=s.map(o=>o.elapsedMs),t=e.reduce((o,n)=>o+n)/e.length;let r;if(e.length>0){const o=Math.floor(e.length/2);r=e.length%2?e[o]:(e[o-1]+e[o])/2}return{mean:t,median:r}}function wt(){return Date.now()}function Or(s){return wt()-s}exports.BlockPackRegistry=Ts;exports.CentralBlockRegistry=Is;exports.DefaultDriverKitOpsPaths=At;exports.DefaultDriverKitOpsSettings=Ft;exports.DefaultMiddleLayerOpsPaths=rs;exports.DefaultMiddleLayerOpsSettings=ts;exports.FrontendFromFolderResourceType=$t;exports.FrontendFromUrlResourceType=Ot;exports.MiddleLayer=Gt;exports.Project=Ye;exports.TengoTemplateGet=xr;exports.TengoTemplateGetRegistry=Vr;exports.TengoTemplateGetTemplate=Gr;exports.TengoTemplateGetTemplateURI=Ur;exports.TengoTemplatePack=so;exports.TengoTemplatePackConvert=oo;exports.TengoTemplatePackConvertTemplate=io;exports.TengoTemplatePackConvertTemplatePack=no;exports.V1CentralDevSnapshotRegistry=As;exports.V1CentralRegistry=Fs;exports.V2RegistryProvider=Lr;exports.checkNetwork=Ic;exports.createRenderTemplate=kt;exports.getDevV1PacketMtime=Ct;exports.getDevV2PacketMtime=qe;exports.initDriverKit=us;exports.loadTemplate=We;exports.prepareTemplateSpec=Jr;Object.keys(L).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>L[s]})});Object.keys(K).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>K[s]})});Object.keys(Jt).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>Jt[s]})});Object.keys(h).forEach(s=>{s!=="default"&&!Object.prototype.hasOwnProperty.call(exports,s)&&Object.defineProperty(exports,s,{enumerable:!0,get:()=>h[s]})});
|
|
52
52
|
//# sourceMappingURL=index.js.map
|