@platforma-sdk/model 1.8.0 → 1.8.19

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.
@@ -17,6 +17,9 @@ export type PlDataTableGridState = {
17
17
  sort: 'asc' | 'desc';
18
18
  }[];
19
19
  };
20
+ columnVisibility?: {
21
+ hiddenColIds: string[];
22
+ };
20
23
  /** current sheet selections */
21
24
  sheets?: Record<string, string | number>;
22
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PlDataTable.d.ts","sourceRoot":"","sources":["../../src/components/PlDataTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAET,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAExD,uBAAuB;AACvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,+BAA+B;IAC/B,WAAW,CAAC,EAAE;QACZ,0BAA0B;QAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,kDAAkD;IAClD,IAAI,CAAC,EAAE;QACL,6CAA6C;QAC7C,SAAS,EAAE;YACT,sCAAsC;YACtC,KAAK,EAAE,MAAM,CAAC;YACd,qBAAqB;YACrB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;SACtB,EAAE,CAAC;KACL,CAAC;IAEF,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,qFAAqF;IACrF,IAAI,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAE7B,SAAS,EAAE,oBAAoB,CAAC;IAGhC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EACpC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,EACpC,UAAU,CAAC,EAAE,gBAAgB,GAC5B,YAAY,CAuBd"}
1
+ {"version":3,"file":"PlDataTable.d.ts","sourceRoot":"","sources":["../../src/components/PlDataTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAET,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAExD,uBAAuB;AACvB,MAAM,MAAM,oBAAoB,GAAG;IACjC,+BAA+B;IAC/B,WAAW,CAAC,EAAE;QACZ,0BAA0B;QAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,kDAAkD;IAClD,IAAI,CAAC,EAAE;QACL,6CAA6C;QAC7C,SAAS,EAAE;YACT,sCAAsC;YACtC,KAAK,EAAE,MAAM,CAAC;YACd,qBAAqB;YACrB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;SACtB,EAAE,CAAC;KACL,CAAC;IACF,gBAAgB,CAAC,EAAE;QACjB,YAAY,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IAEF,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,qFAAqF;IACrF,IAAI,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAE7B,SAAS,EAAE,oBAAoB,CAAC;IAGhC,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EACpC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,EAAE,EACpC,UAAU,CAAC,EAAE,gBAAgB,GAC5B,YAAY,CAuBd"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var L=Object.defineProperty;var k=(e,t,n)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var d=(e,t,n)=>k(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("@milaboratories/pl-model-common");class S extends Error{constructor(t,n){super(`${t.length}${n?"+":""} errors, first error: `+t[0]),this.errors=t,this.moreErrors=n}}function R(e){if(!e.ok)throw new S(e.errors,e.moreErrors);return e.value}function J(e){return new Proxy(e,{get(t,n){return R(t[n])}})}function i(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?m(e):e}function h(e){return{type:"GetFromCtx",variable:e}}function H(e){return{type:"Isolate",cfg:e}}const M=h("$args"),N=h("$it"),G=h("$prod"),$=h("$staging"),K=h("$ui");function m(e){return{type:"Immediate",value:e}}function P(e){const t={};for(const[n,r]of Object.entries(e))t[n]=i(r);return{type:"MakeObject",template:t}}function W(...e){const t=[];for(const n of e)t.push(i(n));return{type:"MakeArray",template:t}}function b(e,t){return{type:"GetJsonField",source:i(e),field:i(t)}}function U(e,t,n="$it"){return{type:"MapRecordValues",source:e,mapping:t,itVar:n}}function z(e,t,n="$it"){return{type:"MapArrayValues",source:e,mapping:t,itVar:n}}function q(e){return{type:"Flatten",source:e}}function Q(e){return{type:"IsEmpty",arg:e}}function X(e){return{type:"Not",operand:e}}function Y(e,t){return{type:"And",operand1:e,operand2:t}}function Z(e,t){return{type:"Or",operand1:e,operand2:t}}function tt(e,t){return{type:"GetResourceField",source:i(e),field:i(t)}}function et(){return function(e){return{type:"GetResourceValueAsJson",source:i(e)}}}function nt(e,t,n="$it"){return{type:"MapResourceFields",source:e,mapping:t,itVar:n}}function rt(e){return{type:"GetBlobContent",source:i(e)}}function st(e){return{type:"GetBlobContentAsString",source:i(e)}}function ot(){return function(e){return{type:"GetBlobContentAsJson",source:i(e)}}}function it(e){return{type:"GetDownloadedBlobContent",source:i(e)}}function at(e){return{type:"GetOnDemandBlobContent",source:i(e)}}function ut(e){return{type:"GetImportProgress",source:i(e)}}function lt(e,t){return{type:"GetLastLogs",source:i(e),lines:t}}function ct(e,t){return{type:"GetProgressLog",source:i(e),patternToSearch:t}}function gt(e){return{type:"GetLogHandle",source:i(e)}}function dt(){return typeof globalThis.getPlatforma<"u"||typeof globalThis.platforma<"u"}function v(e){if(e&&typeof globalThis.getPlatforma=="function")return globalThis.getPlatforma(e);if(typeof globalThis.platforma<"u")return globalThis.platforma;throw new Error("Can't get platforma instance.")}function pt(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx}function s(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx;throw new Error("Not in config rendering context")}function w(e,t){const n=pt();if(n===void 0)return!1;if(e in n.callbackRegistry)throw new Error(`Callback with key ${e} already registered.`);return n.callbackRegistry[e]=t,!0}const A=new Map;function ft(e,t){e in s().callbackRegistry||(s().callbackRegistry[e]=n=>{for(const r of A.get(e))r(n)},A.set(e,[])),A.get(e).push(t)}class u{constructor(t,n=r=>r){d(this,"isResolved",!1);d(this,"resolvedValue");this.handle=t,this.postProcess=n,ft(t,r=>{this.resolvedValue=n(r),this.isResolved=!0})}map(t){return new u(this.handle,n=>t(this.postProcess(n)))}mapDefined(t){return new u(this.handle,n=>{const r=this.postProcess(n);return r?t(r):void 0})}toJSON(){return this.isResolved?this.resolvedValue:{__awaited_futures__:[this.handle]}}}function _(e){return e===void 0?void 0:new f(e)}class f{constructor(t){this.handle=t}resolve(...t){return this.resolveWithCommon({},...t)}resolveWithCommon(t,...n){return _(s().resolveWithCommon(this.handle,t,...n))}get resourceType(){return s().getResourceType(this.handle)}getInputsLocked(){return s().getInputsLocked(this.handle)}getOutputsLocked(){return s().getOutputsLocked(this.handle)}getIsReadyOrError(){return s().getIsReadyOrError(this.handle)}getIsFinal(){return s().getIsFinal(this.handle)}getError(){return _(s().getError(this.handle))}listInputFields(){return s().listInputFields(this.handle)}listOutputFields(){return s().listOutputFields(this.handle)}listDynamicFields(){return s().listDynamicFields(this.handle)}getKeyValueBase64(t){return s().getKeyValueBase64(this.handle,t)}getKeyValueAsString(t){return s().getKeyValueAsString(this.handle,t)}getKeyValueAsJson(t){const n=this.getKeyValueAsString(t);if(n==null)throw new Error("Resource has no content.");return JSON.parse(n)}getDataBase64(){return s().getDataBase64(this.handle)}getDataAsString(){return s().getDataAsString(this.handle)}getDataAsJson(){const t=this.getDataAsString();if(t==null)throw new Error("Resource has no content.");return JSON.parse(t)}getPColumns(t=!1,n=""){const r=this.parsePObjectCollection(t,n);return r===void 0?void 0:Object.entries(r).map(([,a])=>{if(!l.isPColumn(a))throw new Error(`not a PColumn (kind = ${a.spec.kind})`);return a})}parsePObjectCollection(t=!1,n=""){const r=s().parsePObjectCollection(this.handle,t,n);if(r===void 0)return;const o={};for(const[a,p]of Object.entries(r))o[a]=l.mapPObjectData(p,c=>new f(c));return o}getFileContentAsBase64(){return new u(s().getBlobContentAsBase64(this.handle))}getFileContentAsString(){return new u(s().getBlobContentAsString(this.handle))}getFileContentAsJson(){return new u(s().getBlobContentAsString(this.handle)).mapDefined(t=>JSON.parse(t))}getBlobContentAsBase64(){return this.getFileContentAsBase64()}getBlobContentAsString(){return this.getFileContentAsString()}getFileHandle(){return new u(s().getDownloadedBlobContentHandle(this.handle))}getDownloadedBlobHandle(){return this.getFileHandle()}getRemoteFileHandle(){return new u(s().getOnDemandBlobContentHandle(this.handle))}getOnDemandBlobHandle(){return this.getRemoteFileHandle()}getImportProgress(){return new u(s().getImportProgress(this.handle))}getLastLogs(t){return new u(s().getLastLogs(this.handle,t))}getProgressLog(t){return new u(s().getProgressLog(this.handle,t))}getLogHandle(){return new u(s().getLogHandle(this.handle))}}const O="staging",I="main";function V(e){return typeof e=="object"&&e!==null&&"__awaited_futures__"in e}function C(e,t,n){if(t.has(n))return;if(t.add(n),typeof n==="object")if(V(n))n.__awaited_futures__.forEach(o=>e.add(o));else if(Array.isArray(n))for(const o of n)C(e,t,o);else for(const[,o]of Object.entries(n))o!==n&&C(e,t,o)}function ht(e){const t=new Set;return C(t,new Set,e),t}const mt=Object.freeze(Object.defineProperty({__proto__:null,MainAccessorName:I,StagingAccessorName:O,getAllFutureAwaits:ht,isFutureAwait:V},Symbol.toStringTag,{value:"Module"}));class x{constructor(){d(this,"ctx",s());d(this,"defaultLabelFn",(t,n)=>{var r;return((r=t.annotations)==null?void 0:r["pl7.app/label"])??"Unlabelled"})}calculateOptions(t){return this.ctx.calculateOptions(t)}getOptions(t,n=this.defaultLabelFn){return this.getSpecs().entries.filter(r=>t(r.obj)).map(r=>({ref:r.ref,label:n(r.obj,r.ref)}))}getDataFromResultPool(){return this.getData()}getData(){const t=this.ctx.getDataFromResultPool();return{isComplete:t.isComplete,entries:t.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:new f(n.obj.data)}}))}}getDataWithErrorsFromResultPool(){return this.getDataWithErrors()}getDataWithErrors(){const t=this.ctx.getDataWithErrorsFromResultPool();return{isComplete:t.isComplete,entries:t.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:l.mapValueInVOE(n.obj.data,r=>new f(r))}}))}}getSpecsFromResultPool(){return this.getSpecs()}getSpecs(){return this.ctx.getSpecsFromResultPool()}getDataByRef(t){var n;return(n=this.getData().entries.find(r=>r.ref.blockId===t.blockId&&r.ref.name===t.name))==null?void 0:n.obj}getSpecByRef(t){var n;return(n=this.getSpecs().entries.find(r=>r.ref.blockId===t.blockId&&r.ref.name===t.name))==null?void 0:n.obj}findDataWithCompatibleSpec(t){const n=[];t:for(const r of this.getData().entries){if(!l.isPColumnSpec(r.obj.spec))continue;const o=r.obj.spec;if(t.name===o.name&&t.valueType===o.valueType&&t.axesSpec.length===o.axesSpec.length&&D(t.domain,o.domain)){for(let a=0;a<t.axesSpec.length;++a){const p=t.axesSpec[a],c=o.axesSpec[a];if(p.name!==c.name||p.type!==c.type||!D(p.domain,c.domain))continue t}n.push(r.obj)}}return n}}function D(e,t){if(e===void 0)return t===void 0;if(t===void 0)return!0;for(const n in t)if(e[n]!==t[n])return!1;return!0}class y{constructor(){d(this,"ctx");d(this,"args");d(this,"uiState");d(this,"resultPool",new x);this.ctx=s(),this.args=JSON.parse(this.ctx.args),this.uiState=this.ctx.uiState!==void 0?JSON.parse(this.ctx.uiState):void 0}getNamedAccessor(t){const n=this.ctx.getAccessorHandleByName(t);return n?new f(n):void 0}get prerun(){return this.getNamedAccessor(O)}get precalc(){return this.prerun}get stagingOutput(){return this.precalc}get outputs(){return this.getNamedAccessor(I)}get mainOutput(){return this.outputs}createPFrame(t){return this.ctx.createPFrame(t.map(n=>l.mapPObjectData(n,r=>r.handle)))}createPTable(t){var n;return"columns"in t?n={src:{type:"inner",entries:t.columns.map(r=>({type:"column",column:r}))},filters:t.filters??[],sorting:t.sorting??[]}:n=t,this.ctx.createPTable(l.mapPTableDef(n,r=>l.mapPObjectData(r,o=>o.handle)))}getBlockLabel(t){return this.ctx.getBlockLabel(t)}}const B="1.8.0";function bt(e){return typeof e=="string"}function yt(e){if(e.inputsValid!==void 0)return e;{if(e.canRun===void 0)throw new Error(`Malformed config, SDK version ${e.sdkVersion}`);const t={...e,inputsValid:e.canRun};return delete t.canRun,t}}class g{constructor(t,n,r,o,a){this._renderingMode=t,this._initialArgs=n,this._outputs=r,this._inputsValid=o,this._sections=a}static create(t="Heavy"){return new g(t,void 0,{},m(!0),m([]))}output(t,n){if(typeof n=="function"){const r=`output#${t}`;return w(r,()=>n(new y)),new g(this._renderingMode,this._initialArgs,{...this._outputs,[t]:r},this._inputsValid,this._sections)}else return new g(this._renderingMode,this._initialArgs,{...this._outputs,[t]:n},this._inputsValid,this._sections)}canRun(t){return this.inputsValid(t)}argsValid(t){return typeof t=="function"?(w("inputsValid",()=>t(new y)),new g(this._renderingMode,this._initialArgs,this._outputs,"inputsValid",this._sections)):new g(this._renderingMode,this._initialArgs,this._outputs,t,this._sections)}inputsValid(t){return this.argsValid(t)}sections(t){return Array.isArray(t)?this.sections(m(t)):typeof t=="function"?(w("sections",()=>t(new y)),new g(this._renderingMode,this._initialArgs,this._outputs,this._inputsValid,"sections")):new g(this._renderingMode,this._initialArgs,this._outputs,this._inputsValid,t)}initialArgs(t){return new g(this._renderingMode,t,this._outputs,this._inputsValid,this._sections)}done(){if(this._initialArgs===void 0)throw new Error("Initial arguments not set.");const t={sdkVersion:B,renderingMode:this._renderingMode,initialArgs:this._initialArgs,inputsValid:this._inputsValid,sections:this._sections,outputs:this._outputs};return dt()?v(t):{config:t}}}function wt(e,t,n){var a,p;const r=e.resultPool.getData().entries.map(c=>c.obj).filter(l.isPColumn).filter(c=>c.spec.name==="pl7.app/label"&&c.spec.axesSpec.length===1),o=[];for(const c of t)for(const T of c.spec.axesSpec){const E=l.getAxisId(T);for(const F of r)l.matchAxisId(E,l.getAxisId(F.spec.axesSpec[0]))&&o.push(F)}return e.createPTable({columns:[...t,...o],filters:(a=n==null?void 0:n.pTableParams)==null?void 0:a.filters,sorting:(p=n==null?void 0:n.pTableParams)==null?void 0:p.sorting})}class At{constructor(t){this.handle=t}async findColumns(t){return await platforma.pFrameDriver.findColumns(this.handle,t)}async getColumnSpec(t){return await platforma.pFrameDriver.getColumnSpec(this.handle,t)}async listColumns(){return await platforma.pFrameDriver.listColumns(this.handle)}async calculateTableData(t){return await platforma.pFrameDriver.calculateTableData(this.handle,t)}async getUniqueValues(t){return await platforma.pFrameDriver.getUniqueValues(this.handle,t)}}function j(e){return P({__isRef:!0,blockId:b(e,"blockId"),name:b(e,"name")})}function Ct(e){return P({ref:j(b(e,"ref")),label:b(e,"label")})}const Pt={sdkVersion:B};function Ft(){return v()}function _t(e){if(typeof globalThis.getEnvironmentValue=="function")return globalThis.getEnvironmentValue(e)}exports.Args=M;exports.BlockModel=g;exports.CurrentSdkInfo=Pt;exports.FutureRef=u;exports.It=N;exports.JsRenderInternal=mt;exports.MainOutputs=G;exports.OutputError=S;exports.PFrameImpl=At;exports.RenderCtx=y;exports.ResultPool=x;exports.StagingOutputs=$;exports.TreeNodeAccessor=f;exports.UiState=K;exports.and=Y;exports.createPlDataTable=wt;exports.flatten=q;exports.fromPlOption=Ct;exports.fromPlRef=j;exports.getBlobContent=rt;exports.getBlobContentAsJson=ot;exports.getBlobContentAsString=st;exports.getDownloadedBlobContent=it;exports.getEnvironmentValue=_t;exports.getFromCfg=h;exports.getImmediate=m;exports.getImportProgress=ut;exports.getJsonField=b;exports.getLastLogs=lt;exports.getLogHandle=gt;exports.getOnDemandBlobContent=at;exports.getProgressLog=ct;exports.getRawPlatformaInstance=Ft;exports.getResourceField=tt;exports.getResourceValueAsJson=et;exports.isEmpty=Q;exports.isFunctionHandle=bt;exports.isolate=H;exports.makeArray=W;exports.makeObject=P;exports.mapArrayValues=z;exports.mapRecordValues=U;exports.mapResourceFields=nt;exports.normalizeBlockConfig=yt;exports.not=X;exports.or=Z;exports.readOutput=R;exports.wrapOutputs=J;Object.keys(l).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>l[e]})});
1
+ "use strict";var L=Object.defineProperty;var k=(e,t,n)=>t in e?L(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var d=(e,t,n)=>k(e,typeof t!="symbol"?t+"":t,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("@milaboratories/pl-model-common");class S extends Error{constructor(t,n){super(`${t.length}${n?"+":""} errors, first error: `+t[0]),this.errors=t,this.moreErrors=n}}function R(e){if(!e.ok)throw new S(e.errors,e.moreErrors);return e.value}function J(e){return new Proxy(e,{get(t,n){return R(t[n])}})}function i(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||e===null?m(e):e}function h(e){return{type:"GetFromCtx",variable:e}}function H(e){return{type:"Isolate",cfg:e}}const M=h("$args"),N=h("$it"),G=h("$prod"),$=h("$staging"),K=h("$ui");function m(e){return{type:"Immediate",value:e}}function P(e){const t={};for(const[n,r]of Object.entries(e))t[n]=i(r);return{type:"MakeObject",template:t}}function W(...e){const t=[];for(const n of e)t.push(i(n));return{type:"MakeArray",template:t}}function b(e,t){return{type:"GetJsonField",source:i(e),field:i(t)}}function U(e,t,n="$it"){return{type:"MapRecordValues",source:e,mapping:t,itVar:n}}function z(e,t,n="$it"){return{type:"MapArrayValues",source:e,mapping:t,itVar:n}}function q(e){return{type:"Flatten",source:e}}function Q(e){return{type:"IsEmpty",arg:e}}function X(e){return{type:"Not",operand:e}}function Y(e,t){return{type:"And",operand1:e,operand2:t}}function Z(e,t){return{type:"Or",operand1:e,operand2:t}}function tt(e,t){return{type:"GetResourceField",source:i(e),field:i(t)}}function et(){return function(e){return{type:"GetResourceValueAsJson",source:i(e)}}}function nt(e,t,n="$it"){return{type:"MapResourceFields",source:e,mapping:t,itVar:n}}function rt(e){return{type:"GetBlobContent",source:i(e)}}function st(e){return{type:"GetBlobContentAsString",source:i(e)}}function ot(){return function(e){return{type:"GetBlobContentAsJson",source:i(e)}}}function it(e){return{type:"GetDownloadedBlobContent",source:i(e)}}function at(e){return{type:"GetOnDemandBlobContent",source:i(e)}}function ut(e){return{type:"GetImportProgress",source:i(e)}}function lt(e,t){return{type:"GetLastLogs",source:i(e),lines:t}}function ct(e,t){return{type:"GetProgressLog",source:i(e),patternToSearch:t}}function gt(e){return{type:"GetLogHandle",source:i(e)}}function dt(){return typeof globalThis.getPlatforma<"u"||typeof globalThis.platforma<"u"}function v(e){if(e&&typeof globalThis.getPlatforma=="function")return globalThis.getPlatforma(e);if(typeof globalThis.platforma<"u")return globalThis.platforma;throw new Error("Can't get platforma instance.")}function pt(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx}function s(){if(typeof globalThis.cfgRenderCtx<"u")return globalThis.cfgRenderCtx;throw new Error("Not in config rendering context")}function w(e,t){const n=pt();if(n===void 0)return!1;if(e in n.callbackRegistry)throw new Error(`Callback with key ${e} already registered.`);return n.callbackRegistry[e]=t,!0}const A=new Map;function ft(e,t){e in s().callbackRegistry||(s().callbackRegistry[e]=n=>{for(const r of A.get(e))r(n)},A.set(e,[])),A.get(e).push(t)}class u{constructor(t,n=r=>r){d(this,"isResolved",!1);d(this,"resolvedValue");this.handle=t,this.postProcess=n,ft(t,r=>{this.resolvedValue=n(r),this.isResolved=!0})}map(t){return new u(this.handle,n=>t(this.postProcess(n)))}mapDefined(t){return new u(this.handle,n=>{const r=this.postProcess(n);return r?t(r):void 0})}toJSON(){return this.isResolved?this.resolvedValue:{__awaited_futures__:[this.handle]}}}function _(e){return e===void 0?void 0:new f(e)}class f{constructor(t){this.handle=t}resolve(...t){return this.resolveWithCommon({},...t)}resolveWithCommon(t,...n){return _(s().resolveWithCommon(this.handle,t,...n))}get resourceType(){return s().getResourceType(this.handle)}getInputsLocked(){return s().getInputsLocked(this.handle)}getOutputsLocked(){return s().getOutputsLocked(this.handle)}getIsReadyOrError(){return s().getIsReadyOrError(this.handle)}getIsFinal(){return s().getIsFinal(this.handle)}getError(){return _(s().getError(this.handle))}listInputFields(){return s().listInputFields(this.handle)}listOutputFields(){return s().listOutputFields(this.handle)}listDynamicFields(){return s().listDynamicFields(this.handle)}getKeyValueBase64(t){return s().getKeyValueBase64(this.handle,t)}getKeyValueAsString(t){return s().getKeyValueAsString(this.handle,t)}getKeyValueAsJson(t){const n=this.getKeyValueAsString(t);if(n==null)throw new Error("Resource has no content.");return JSON.parse(n)}getDataBase64(){return s().getDataBase64(this.handle)}getDataAsString(){return s().getDataAsString(this.handle)}getDataAsJson(){const t=this.getDataAsString();if(t==null)throw new Error("Resource has no content.");return JSON.parse(t)}getPColumns(t=!1,n=""){const r=this.parsePObjectCollection(t,n);return r===void 0?void 0:Object.entries(r).map(([,a])=>{if(!l.isPColumn(a))throw new Error(`not a PColumn (kind = ${a.spec.kind})`);return a})}parsePObjectCollection(t=!1,n=""){const r=s().parsePObjectCollection(this.handle,t,n);if(r===void 0)return;const o={};for(const[a,p]of Object.entries(r))o[a]=l.mapPObjectData(p,c=>new f(c));return o}getFileContentAsBase64(){return new u(s().getBlobContentAsBase64(this.handle))}getFileContentAsString(){return new u(s().getBlobContentAsString(this.handle))}getFileContentAsJson(){return new u(s().getBlobContentAsString(this.handle)).mapDefined(t=>JSON.parse(t))}getBlobContentAsBase64(){return this.getFileContentAsBase64()}getBlobContentAsString(){return this.getFileContentAsString()}getFileHandle(){return new u(s().getDownloadedBlobContentHandle(this.handle))}getDownloadedBlobHandle(){return this.getFileHandle()}getRemoteFileHandle(){return new u(s().getOnDemandBlobContentHandle(this.handle))}getOnDemandBlobHandle(){return this.getRemoteFileHandle()}getImportProgress(){return new u(s().getImportProgress(this.handle))}getLastLogs(t){return new u(s().getLastLogs(this.handle,t))}getProgressLog(t){return new u(s().getProgressLog(this.handle,t))}getLogHandle(){return new u(s().getLogHandle(this.handle))}}const O="staging",I="main";function V(e){return typeof e=="object"&&e!==null&&"__awaited_futures__"in e}function C(e,t,n){if(t.has(n))return;if(t.add(n),typeof n==="object")if(V(n))n.__awaited_futures__.forEach(o=>e.add(o));else if(Array.isArray(n))for(const o of n)C(e,t,o);else for(const[,o]of Object.entries(n))o!==n&&C(e,t,o)}function ht(e){const t=new Set;return C(t,new Set,e),t}const mt=Object.freeze(Object.defineProperty({__proto__:null,MainAccessorName:I,StagingAccessorName:O,getAllFutureAwaits:ht,isFutureAwait:V},Symbol.toStringTag,{value:"Module"}));class x{constructor(){d(this,"ctx",s());d(this,"defaultLabelFn",(t,n)=>{var r;return((r=t.annotations)==null?void 0:r["pl7.app/label"])??"Unlabelled"})}calculateOptions(t){return this.ctx.calculateOptions(t)}getOptions(t,n=this.defaultLabelFn){return this.getSpecs().entries.filter(r=>t(r.obj)).map(r=>({ref:r.ref,label:n(r.obj,r.ref)}))}getDataFromResultPool(){return this.getData()}getData(){const t=this.ctx.getDataFromResultPool();return{isComplete:t.isComplete,entries:t.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:new f(n.obj.data)}}))}}getDataWithErrorsFromResultPool(){return this.getDataWithErrors()}getDataWithErrors(){const t=this.ctx.getDataWithErrorsFromResultPool();return{isComplete:t.isComplete,entries:t.entries.map(n=>({ref:n.ref,obj:{...n.obj,data:l.mapValueInVOE(n.obj.data,r=>new f(r))}}))}}getSpecsFromResultPool(){return this.getSpecs()}getSpecs(){return this.ctx.getSpecsFromResultPool()}getDataByRef(t){var n;return(n=this.getData().entries.find(r=>r.ref.blockId===t.blockId&&r.ref.name===t.name))==null?void 0:n.obj}getSpecByRef(t){var n;return(n=this.getSpecs().entries.find(r=>r.ref.blockId===t.blockId&&r.ref.name===t.name))==null?void 0:n.obj}findDataWithCompatibleSpec(t){const n=[];t:for(const r of this.getData().entries){if(!l.isPColumnSpec(r.obj.spec))continue;const o=r.obj.spec;if(t.name===o.name&&t.valueType===o.valueType&&t.axesSpec.length===o.axesSpec.length&&D(t.domain,o.domain)){for(let a=0;a<t.axesSpec.length;++a){const p=t.axesSpec[a],c=o.axesSpec[a];if(p.name!==c.name||p.type!==c.type||!D(p.domain,c.domain))continue t}n.push(r.obj)}}return n}}function D(e,t){if(e===void 0)return t===void 0;if(t===void 0)return!0;for(const n in t)if(e[n]!==t[n])return!1;return!0}class y{constructor(){d(this,"ctx");d(this,"args");d(this,"uiState");d(this,"resultPool",new x);this.ctx=s(),this.args=JSON.parse(this.ctx.args),this.uiState=this.ctx.uiState!==void 0?JSON.parse(this.ctx.uiState):void 0}getNamedAccessor(t){const n=this.ctx.getAccessorHandleByName(t);return n?new f(n):void 0}get prerun(){return this.getNamedAccessor(O)}get precalc(){return this.prerun}get stagingOutput(){return this.precalc}get outputs(){return this.getNamedAccessor(I)}get mainOutput(){return this.outputs}createPFrame(t){return this.ctx.createPFrame(t.map(n=>l.mapPObjectData(n,r=>r.handle)))}createPTable(t){var n;return"columns"in t?n={src:{type:"inner",entries:t.columns.map(r=>({type:"column",column:r}))},filters:t.filters??[],sorting:t.sorting??[]}:n=t,this.ctx.createPTable(l.mapPTableDef(n,r=>l.mapPObjectData(r,o=>o.handle)))}getBlockLabel(t){return this.ctx.getBlockLabel(t)}}const B="1.8.19";function bt(e){return typeof e=="string"}function yt(e){if(e.inputsValid!==void 0)return e;{if(e.canRun===void 0)throw new Error(`Malformed config, SDK version ${e.sdkVersion}`);const t={...e,inputsValid:e.canRun};return delete t.canRun,t}}class g{constructor(t,n,r,o,a){this._renderingMode=t,this._initialArgs=n,this._outputs=r,this._inputsValid=o,this._sections=a}static create(t="Heavy"){return new g(t,void 0,{},m(!0),m([]))}output(t,n){if(typeof n=="function"){const r=`output#${t}`;return w(r,()=>n(new y)),new g(this._renderingMode,this._initialArgs,{...this._outputs,[t]:r},this._inputsValid,this._sections)}else return new g(this._renderingMode,this._initialArgs,{...this._outputs,[t]:n},this._inputsValid,this._sections)}canRun(t){return this.inputsValid(t)}argsValid(t){return typeof t=="function"?(w("inputsValid",()=>t(new y)),new g(this._renderingMode,this._initialArgs,this._outputs,"inputsValid",this._sections)):new g(this._renderingMode,this._initialArgs,this._outputs,t,this._sections)}inputsValid(t){return this.argsValid(t)}sections(t){return Array.isArray(t)?this.sections(m(t)):typeof t=="function"?(w("sections",()=>t(new y)),new g(this._renderingMode,this._initialArgs,this._outputs,this._inputsValid,"sections")):new g(this._renderingMode,this._initialArgs,this._outputs,this._inputsValid,t)}initialArgs(t){return new g(this._renderingMode,t,this._outputs,this._inputsValid,this._sections)}done(){if(this._initialArgs===void 0)throw new Error("Initial arguments not set.");const t={sdkVersion:B,renderingMode:this._renderingMode,initialArgs:this._initialArgs,inputsValid:this._inputsValid,sections:this._sections,outputs:this._outputs};return dt()?v(t):{config:t}}}function wt(e,t,n){var a,p;const r=e.resultPool.getData().entries.map(c=>c.obj).filter(l.isPColumn).filter(c=>c.spec.name==="pl7.app/label"&&c.spec.axesSpec.length===1),o=[];for(const c of t)for(const T of c.spec.axesSpec){const E=l.getAxisId(T);for(const F of r)l.matchAxisId(E,l.getAxisId(F.spec.axesSpec[0]))&&o.push(F)}return e.createPTable({columns:[...t,...o],filters:(a=n==null?void 0:n.pTableParams)==null?void 0:a.filters,sorting:(p=n==null?void 0:n.pTableParams)==null?void 0:p.sorting})}class At{constructor(t){this.handle=t}async findColumns(t){return await platforma.pFrameDriver.findColumns(this.handle,t)}async getColumnSpec(t){return await platforma.pFrameDriver.getColumnSpec(this.handle,t)}async listColumns(){return await platforma.pFrameDriver.listColumns(this.handle)}async calculateTableData(t){return await platforma.pFrameDriver.calculateTableData(this.handle,t)}async getUniqueValues(t){return await platforma.pFrameDriver.getUniqueValues(this.handle,t)}}function j(e){return P({__isRef:!0,blockId:b(e,"blockId"),name:b(e,"name")})}function Ct(e){return P({ref:j(b(e,"ref")),label:b(e,"label")})}const Pt={sdkVersion:B};function Ft(){return v()}function _t(e){if(typeof globalThis.getEnvironmentValue=="function")return globalThis.getEnvironmentValue(e)}exports.Args=M;exports.BlockModel=g;exports.CurrentSdkInfo=Pt;exports.FutureRef=u;exports.It=N;exports.JsRenderInternal=mt;exports.MainOutputs=G;exports.OutputError=S;exports.PFrameImpl=At;exports.RenderCtx=y;exports.ResultPool=x;exports.StagingOutputs=$;exports.TreeNodeAccessor=f;exports.UiState=K;exports.and=Y;exports.createPlDataTable=wt;exports.flatten=q;exports.fromPlOption=Ct;exports.fromPlRef=j;exports.getBlobContent=rt;exports.getBlobContentAsJson=ot;exports.getBlobContentAsString=st;exports.getDownloadedBlobContent=it;exports.getEnvironmentValue=_t;exports.getFromCfg=h;exports.getImmediate=m;exports.getImportProgress=ut;exports.getJsonField=b;exports.getLastLogs=lt;exports.getLogHandle=gt;exports.getOnDemandBlobContent=at;exports.getProgressLog=ct;exports.getRawPlatformaInstance=Ft;exports.getResourceField=tt;exports.getResourceValueAsJson=et;exports.isEmpty=Q;exports.isFunctionHandle=bt;exports.isolate=H;exports.makeArray=W;exports.makeObject=P;exports.mapArrayValues=z;exports.mapRecordValues=U;exports.mapResourceFields=nt;exports.normalizeBlockConfig=yt;exports.not=X;exports.or=Z;exports.readOutput=R;exports.wrapOutputs=J;Object.keys(l).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>l[e]})});
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/block_state_util.ts","../src/config/actions.ts","../src/internal.ts","../src/render/future.ts","../src/render/accessor.ts","../src/render/internal.ts","../src/render/api.ts","../src/version.ts","../src/builder.ts","../src/components/PlDataTable.ts","../src/pframe.ts","../src/ref_util.ts","../src/sdk_info.ts","../src/raw_globals.ts","../src/env_value.ts"],"sourcesContent":["import { BlockOutputsBase, ValueOrErrors } from '@milaboratories/pl-model-common';\n\nexport class OutputError extends Error {\n constructor(\n public readonly errors: string[],\n public readonly moreErrors: boolean\n ) {\n super(`${errors.length}${moreErrors ? '+' : ''} errors, first error: ` + errors[0]);\n }\n}\n\nexport function readOutput<T>(outputValue: ValueOrErrors<T>): T {\n if (!outputValue.ok) throw new OutputError(outputValue.errors, outputValue.moreErrors);\n return outputValue.value;\n}\n\ntype ExtractValueType<V extends ValueOrErrors<unknown>> = Extract<V, { ok: true }>['value'];\ntype SimpleOutputs<Outputs extends BlockOutputsBase> = {\n [Key in keyof Outputs]: ExtractValueType<Outputs[Key]>;\n};\n\nexport function wrapOutputs<Outputs extends BlockOutputsBase>(\n outputs: Outputs\n): SimpleOutputs<Outputs> {\n return new Proxy(outputs, {\n get(target, key: string) {\n return readOutput(target[key]);\n }\n }) as SimpleOutputs<Outputs>;\n}\n","import {\n ActGetField,\n ActGetFromCtx,\n ActGetImmediate,\n ActGetResourceField,\n ActGetResourceValueAsJson,\n ActMakeObject,\n ActMapRecordValues,\n ActMapResourceFields,\n ActMapArrayValues,\n ActIsEmpty,\n ActNot,\n ActIsolate,\n ActGetBlobContentAsJson,\n ActGetBlobContentAsString,\n ActGetBlobContent,\n ActAnd,\n ActOr,\n ActMakeArray,\n ActFlatten,\n ActGetDownloadedBlobContent,\n ActGetOnDemandBlobContent,\n ActImportProgress,\n ActGetLastLogs,\n ActGetProgressLog,\n ActGetLogHandle\n} from './actions_kinds';\nimport { ExtractAction, POCExtractAction, PrimitiveOrConfig, TypedConfig } from './type_engine';\nimport { Cfg } from './model';\nimport { CheckedSyncConf } from './type_util';\n\n//\n// Helpers\n//\n\nfunction primitiveToConfig(value: PrimitiveOrConfig): TypedConfig {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n )\n return getImmediate(value);\n else return value as TypedConfig;\n}\n\n//\n// Context\n//\n\nexport function getFromCfg<const V extends string>(variable: V): TypedConfig<ActGetFromCtx<V>> {\n return { type: 'GetFromCtx', variable } as Cfg as any;\n}\n\n//\n// Isolate\n//\n\nexport function isolate<const Config extends TypedConfig>(\n cfg: Config\n): TypedConfig<ActIsolate<ExtractAction<Config>>> {\n return {\n type: 'Isolate',\n cfg\n } as Cfg as any;\n}\n\n//\n// Well-known Context Vars\n//\n\nexport const Args = getFromCfg('$args');\nexport const It = getFromCfg('$it');\nexport const MainOutputs = getFromCfg('$prod');\nexport const StagingOutputs = getFromCfg('$staging');\nexport const UiState = getFromCfg('$ui');\n\n//\n// Json\n//\n\nexport function getImmediate<const T>(value: T): TypedConfig<ActGetImmediate<T>> {\n return { type: 'Immediate', value } as Cfg as any;\n}\n\nexport function makeObject<const T extends Record<string, PrimitiveOrConfig>>(\n template: T\n): TypedConfig<ActMakeObject<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: Record<string, TypedConfig> = {};\n for (const [k, cfg] of Object.entries(template)) normalizedTemplate[k] = primitiveToConfig(cfg);\n return {\n type: 'MakeObject',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function makeArray<const T extends PrimitiveOrConfig[]>(\n ...template: T\n): TypedConfig<ActMakeArray<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: TypedConfig[] = [];\n for (const cfg of template) normalizedTemplate.push(primitiveToConfig(cfg));\n return {\n type: 'MakeArray',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function getJsonField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetJsonField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapRecordValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapArrayValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function flatten<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActFlatten<ExtractAction<Source>>> {\n return {\n type: 'Flatten',\n source\n } as Cfg as any;\n}\n\n//\n// Boolean\n//\n\nexport function isEmpty<const Arg extends TypedConfig>(\n arg: Arg\n): TypedConfig<ActIsEmpty<ExtractAction<Arg>>> {\n return {\n type: 'IsEmpty',\n arg\n } as Cfg as any;\n}\n\nexport function not<const Operand extends TypedConfig>(\n operand: Operand\n): TypedConfig<ActNot<ExtractAction<Operand>>> {\n return {\n type: 'Not',\n operand\n } as Cfg as any;\n}\n\nexport function and<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActAnd<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'And',\n operand1,\n operand2\n } as Cfg as any;\n}\n\nexport function or<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActOr<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'Or',\n operand1,\n operand2\n } as Cfg as any;\n}\n\n//\n// Resources\n//\n\nexport function getResourceField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetResourceField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetResourceField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function getResourceValueAsJson<T>() {\n return function <const Source extends PrimitiveOrConfig>(\n source: Source\n ): TypedConfig<ActGetResourceValueAsJson<POCExtractAction<Source>, T>> {\n return {\n type: 'GetResourceValueAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapResourceFields',\n source,\n mapping,\n itVar\n } as Cfg as TypedConfig<\n ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>\n >;\n}\n\n//\n// Download Blobs\n//\n\nexport function getBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsString<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContentAsString<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContentAsString',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsJson<T>() {\n return function <const Source extends TypedConfig>(\n source: Source\n ): TypedConfig<ActGetBlobContentAsJson<ExtractAction<Source>, T>> {\n return {\n type: 'GetBlobContentAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function getDownloadedBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetDownloadedBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetDownloadedBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getOnDemandBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetOnDemandBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetOnDemandBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Upload Blobs\n//\n\nexport function getImportProgress<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActImportProgress<ExtractAction<Source>>> {\n return {\n type: 'GetImportProgress',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Logs\n//\n\nexport function getLastLogs<const Source extends TypedConfig>(\n source: Source,\n lines: number\n): TypedConfig<ActGetLastLogs<ExtractAction<Source>>> {\n return {\n type: 'GetLastLogs',\n source: primitiveToConfig(source),\n lines\n } as Cfg as any;\n}\n\nexport function getProgressLog<const Source extends TypedConfig>(\n source: Source,\n patternToSearch: string\n): TypedConfig<ActGetProgressLog<ExtractAction<Source>>> {\n return {\n type: 'GetProgressLog',\n source: primitiveToConfig(source),\n patternToSearch\n } as Cfg as any;\n}\n\nexport function getLogHandle<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetLogHandle<ExtractAction<Source>>> {\n return {\n type: 'GetLogHandle',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n","import {} from './global';\nimport { Platforma, PlatformaFactory } from './platforma';\nimport { BlockConfig } from './builder';\nimport { FutureHandle, GlobalCfgRenderCtx } from './render/internal';\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== 'undefined' || typeof globalThis.platforma !== 'undefined'\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance(config?: BlockConfig): Platforma {\n if (config && typeof globalThis.getPlatforma === 'function')\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== 'undefined') return globalThis.platforma;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else throw new Error('Not in config rendering context');\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n","import { FutureAwait, FutureHandle } from './internal';\nimport { registerFutureAwait } from '../internal';\n\nexport class FutureRef<T = unknown> {\n private isResolved = false;\n private resolvedValue?: T;\n\n constructor(\n private readonly handle: FutureHandle,\n private readonly postProcess: (value: unknown) => T = (v) => v as T\n ) {\n registerFutureAwait(handle, (value) => {\n this.resolvedValue = postProcess(value);\n this.isResolved = true;\n });\n }\n\n public map<R>(mapping: (v: T) => R): FutureRef<R> {\n return new FutureRef<R>(this.handle, (v) => mapping(this.postProcess(v)));\n }\n\n public mapDefined<R>(mapping: (v: NonNullable<T>) => R): FutureRef<R | undefined> {\n return new FutureRef<R | undefined>(this.handle, (v) => {\n const vv = this.postProcess(v);\n return vv ? mapping(vv) : undefined;\n });\n }\n\n toJSON(): any {\n return this.isResolved\n ? this.resolvedValue\n : ({ __awaited_futures__: [this.handle] } as FutureAwait);\n }\n}\n\nexport type ExtractFutureRefType<Ref extends FutureRef> =\n Ref extends FutureRef<infer T> ? T : never;\n","import {\n AnyLogHandle,\n ImportProgress,\n LocalBlobHandleAndSize,\n PColumn,\n PObject,\n RemoteBlobHandleAndSize,\n isPColumn,\n mapPObjectData\n} from '@milaboratories/pl-model-common';\nimport { getCfgRenderCtx } from '../internal';\nimport { FutureRef } from './future';\nimport { AccessorHandle } from './internal';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\n\nfunction ifDef<T, R>(value: T | undefined, cb: (value: T) => R): R | undefined {\n return value === undefined ? undefined : cb(value);\n}\n\nfunction wrapBuffer(buf: ArrayBuffer | undefined): Uint8Array | undefined {\n return buf === undefined ? undefined : new Uint8Array(buf);\n}\n\nfunction wrapAccessor(handle: AccessorHandle | undefined): TreeNodeAccessor | undefined {\n return handle === undefined ? undefined : new TreeNodeAccessor(handle);\n}\n\n/** Represent resource tree node accessor */\nexport class TreeNodeAccessor {\n constructor(public readonly handle: AccessorHandle) {}\n\n public resolve(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotAssigned: true;\n }\n ]\n ): TreeNodeAccessor;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined {\n return this.resolveWithCommon({}, ...steps);\n }\n\n public resolveWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().resolveWithCommon(this.handle, commonOptions, ...steps));\n }\n\n public get resourceType(): ResourceType {\n return getCfgRenderCtx().getResourceType(this.handle);\n }\n\n public getInputsLocked(): boolean {\n return getCfgRenderCtx().getInputsLocked(this.handle);\n }\n\n public getOutputsLocked(): boolean {\n return getCfgRenderCtx().getOutputsLocked(this.handle);\n }\n\n public getIsReadyOrError(): boolean {\n return getCfgRenderCtx().getIsReadyOrError(this.handle);\n }\n\n public getIsFinal(): boolean {\n return getCfgRenderCtx().getIsFinal(this.handle);\n }\n\n public getError(): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().getError(this.handle));\n }\n\n public listInputFields(): string[] {\n return getCfgRenderCtx().listInputFields(this.handle);\n }\n\n public listOutputFields(): string[] {\n return getCfgRenderCtx().listOutputFields(this.handle);\n }\n\n public listDynamicFields(): string[] {\n return getCfgRenderCtx().listDynamicFields(this.handle);\n }\n\n public getKeyValueBase64(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueBase64(this.handle, key);\n }\n\n public getKeyValueAsString(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueAsString(this.handle, key);\n }\n\n public getKeyValueAsJson<T>(key: string): T {\n const content = this.getKeyValueAsString(key);\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n public getDataBase64(): string | undefined {\n return getCfgRenderCtx().getDataBase64(this.handle);\n }\n\n public getDataAsString(): string | undefined {\n return getCfgRenderCtx().getDataAsString(this.handle);\n }\n\n public getDataAsJson<T>(): T {\n const content = this.getDataAsString();\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n /**\n *\n */\n public getPColumns(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): PColumn<TreeNodeAccessor>[] | undefined {\n const result = this.parsePObjectCollection(errorOnUnknownField, prefix);\n if (result === undefined) return undefined;\n\n const pf = Object.entries(result).map(([, obj]) => {\n if (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n return obj;\n });\n\n return pf;\n }\n\n /**\n *\n */\n public parsePObjectCollection(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): Record<string, PObject<TreeNodeAccessor>> | undefined {\n const pObjects = getCfgRenderCtx().parsePObjectCollection(\n this.handle,\n errorOnUnknownField,\n prefix\n );\n if (pObjects === undefined) return undefined;\n const result: Record<string, PObject<TreeNodeAccessor>> = {};\n for (const [key, value] of Object.entries(pObjects))\n result[key] = mapPObjectData(value, (c) => new TreeNodeAccessor(c));\n return result;\n }\n\n public getFileContentAsBase64(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsBase64(this.handle));\n }\n\n public getFileContentAsString(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle));\n }\n\n public getFileContentAsJson<T>(): FutureRef<T | undefined> {\n return new FutureRef<string | undefined>(\n getCfgRenderCtx().getBlobContentAsString(this.handle)\n ).mapDefined((v) => JSON.parse(v) as T);\n }\n\n /**\n * @deprecated use getFileContentAsBase64\n */\n public getBlobContentAsBase64(): FutureRef<string | undefined> {\n return this.getFileContentAsBase64();\n }\n\n /**\n * @deprecated use getFileContentAsString\n */\n public getBlobContentAsString(): FutureRef<string | undefined> {\n return this.getFileContentAsString();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getFileHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getDownloadedBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getFileHandle\n */\n public getDownloadedBlobHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return this.getFileHandle();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getRemoteFileHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getOnDemandBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getRemoteFileHandle\n */\n public getOnDemandBlobHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return this.getRemoteFileHandle();\n }\n\n public getImportProgress(): FutureRef<ImportProgress> {\n return new FutureRef(getCfgRenderCtx().getImportProgress(this.handle));\n }\n\n public getLastLogs(nLines: number): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getLastLogs(this.handle, nLines));\n }\n\n public getProgressLog(patternToSearch: string): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getProgressLog(this.handle, patternToSearch));\n }\n\n public getLogHandle(): FutureRef<AnyLogHandle | undefined> {\n return new FutureRef(getCfgRenderCtx().getLogHandle(this.handle));\n }\n}\n","import { Optional } from 'utility-types';\nimport { Branded } from '../branding';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\nimport {\n Option,\n PColumn,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n ResultCollection,\n ValueOrError\n} from '@milaboratories/pl-model-common';\n\nexport const StagingAccessorName = 'staging';\nexport const MainAccessorName = 'main';\n\nexport type AccessorHandle = Branded<string, 'AccessorHandle'>;\nexport type FutureHandle = Branded<string, 'FutureHandle'>;\n\nexport interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = FutureHandle> {\n //\n // Root accessor creation\n //\n\n getAccessorHandleByName(name: string): AHandle | undefined;\n\n //\n // Basic resource accessor actions\n //\n\n resolveWithCommon(\n handle: AHandle,\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): AHandle | undefined;\n\n getResourceType(handle: AHandle): ResourceType;\n\n getInputsLocked(handle: AHandle): boolean;\n\n getOutputsLocked(handle: AHandle): boolean;\n\n getIsReadyOrError(handle: AHandle): boolean;\n\n getIsFinal(handle: AHandle): boolean;\n\n getError(handle: AHandle): AHandle | undefined;\n\n listInputFields(handle: AHandle): string[];\n\n listOutputFields(handle: AHandle): string[];\n\n listDynamicFields(handle: AHandle): string[];\n\n getKeyValueBase64(handle: AHandle, key: string): string | undefined;\n\n getKeyValueAsString(handle: AHandle, key: string): string | undefined;\n\n getDataBase64(handle: AHandle): string | undefined;\n\n getDataAsString(handle: AHandle): string | undefined;\n\n /** If not final returns undefined */\n parsePObjectCollection(\n handle: AHandle,\n errorOnUnknownField: boolean,\n prefix: string\n ): Record<string, PObject<AHandle>> | undefined;\n\n //\n // Blob\n //\n\n getBlobContentAsBase64(handle: AHandle): FHandle; // string | undefined\n\n getBlobContentAsString(handle: AHandle): FHandle; // string | undefined\n\n getDownloadedBlobContentHandle(handle: AHandle): FHandle; // LocalBlobHandleAndSize | undefined;\n\n getOnDemandBlobContentHandle(handle: AHandle): FHandle; // RemoteBlobHandleAndSize | undefined;\n\n //\n // Import progress\n //\n\n getImportProgress(handle: AHandle): FHandle; // ImportProgress;\n\n //\n // Logs\n //\n\n getLastLogs(handle: AHandle, nLines: number): FHandle; // string | undefined;\n\n getProgressLog(handle: AHandle, patternToSearch: string): FHandle; // string | undefined;\n\n getLogHandle(handle: AHandle): FHandle; // AnyLogHandle | undefined;\n\n //\n // Blocks\n //\n\n getBlockLabel(blockId: string): string;\n\n //\n // Result Pool\n //\n\n getDataFromResultPool(): ResultCollection<PObject<AHandle>>;\n\n getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<AHandle, string>>, 'id'>\n >;\n\n getSpecsFromResultPool(): ResultCollection<PObjectSpec>;\n\n calculateOptions(predicate: PSpecPredicate): Option[];\n\n //\n // PFrame / PTable\n //\n\n createPFrame(def: PFrameDef<AHandle>): PFrameHandle;\n\n createPTable(def: PTableDef<PColumn<AHandle>>): PTableHandle;\n}\n\nexport interface GlobalCfgRenderCtx extends GlobalCfgRenderCtxMethods {\n readonly args: string;\n readonly uiState?: string;\n readonly callbackRegistry: Record<string, Function>;\n}\n\nexport type FutureAwait = {\n __awaited_futures__: FutureHandle[];\n};\n\nexport function isFutureAwait(obj: unknown): obj is FutureAwait {\n return typeof obj === 'object' && obj !== null && '__awaited_futures__' in obj;\n}\n\nfunction addAllFutureAwaits(set: Set<string>, visited: Set<unknown>, node: unknown) {\n if (visited.has(node)) return;\n visited.add(node);\n\n const type = typeof node;\n if (type === 'object') {\n if (isFutureAwait(node)) node.__awaited_futures__.forEach((a) => set.add(a));\n else if (Array.isArray(node))\n for (const nested of node) addAllFutureAwaits(set, visited, nested);\n else\n for (const [, nested] of Object.entries(node as object))\n if (nested !== node) addAllFutureAwaits(set, visited, nested);\n }\n}\n\nexport function getAllFutureAwaits(obj: unknown): Set<string> {\n const set = new Set<string>();\n addAllFutureAwaits(set, new Set(), obj);\n return set;\n}\n","import {\n Option,\n PColumn,\n PColumnSpec,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting,\n Ref,\n ResultCollection,\n ValueOrError,\n isPColumnSpec,\n mapPObjectData,\n mapPTableDef,\n mapValueInVOE\n} from '@milaboratories/pl-model-common';\nimport { Optional } from 'utility-types';\nimport { getCfgRenderCtx } from '../internal';\nimport { TreeNodeAccessor } from './accessor';\nimport { FutureRef } from './future';\nimport { GlobalCfgRenderCtx, MainAccessorName, StagingAccessorName } from './internal';\n\nexport class ResultPool {\n private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();\n\n /**\n * @deprecated use getOptions()\n */\n public calculateOptions(predicate: PSpecPredicate): Option[] {\n return this.ctx.calculateOptions(predicate);\n }\n\n private defaultLabelFn = (spec: PObjectSpec, ref: Ref) =>\n spec.annotations?.['pl7.app/label'] ?? `Unlabelled`;\n\n public getOptions(\n predicate: (spec: PObjectSpec) => boolean,\n labelFn: (spec: PObjectSpec, ref: Ref) => string = this.defaultLabelFn\n ): Option[] {\n return this.getSpecs()\n .entries.filter((s) => predicate(s.obj))\n .map((s) => ({\n ref: s.ref,\n label: labelFn(s.obj, s.ref)\n }));\n }\n\n /**\n * @deprecated use getData()\n */\n public getDataFromResultPool(): ResultCollection<PObject<TreeNodeAccessor>> {\n return this.getData();\n }\n\n public getData(): ResultCollection<PObject<TreeNodeAccessor>> {\n const result = this.ctx.getDataFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: new TreeNodeAccessor(e.obj.data)\n }\n }))\n };\n }\n\n /**\n * @deprecated use getDataWithErrors()\n */\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n return this.getDataWithErrors();\n }\n\n public getDataWithErrors(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n const result = this.ctx.getDataWithErrorsFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: mapValueInVOE(e.obj.data, (handle) => new TreeNodeAccessor(handle))\n }\n }))\n };\n }\n\n /**\n * @deprecated use getSpecs()\n */\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n return this.getSpecs();\n }\n\n public getSpecs(): ResultCollection<PObjectSpec> {\n return this.ctx.getSpecsFromResultPool();\n }\n\n /**\n * @param ref a Ref\n * @returns data associated with the ref\n */\n public getDataByRef(ref: Ref): PObject<TreeNodeAccessor> | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getData().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param ref a Ref\n * @returns object spec associated with the ref\n */\n public getSpecByRef(ref: Ref): PObjectSpec | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getSpecs().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param spec object specification\n * @returns array of data objects with compatible specs\n */\n public findDataWithCompatibleSpec(spec: PColumnSpec): PObject<TreeNodeAccessor>[] {\n const result: PObject<TreeNodeAccessor>[] = [];\n\n out: for (const data of this.getData().entries) {\n if (!isPColumnSpec(data.obj.spec)) {\n continue;\n }\n\n const oth = data.obj.spec;\n\n if (spec.name !== oth.name) {\n continue;\n }\n\n if (spec.valueType !== oth.valueType) {\n continue;\n }\n\n if (spec.axesSpec.length !== oth.axesSpec.length) {\n continue;\n }\n\n if (!matchDomain(spec.domain, oth.domain)) {\n continue;\n }\n\n for (let i = 0; i < spec.axesSpec.length; ++i) {\n const qAx = spec.axesSpec[i];\n const tAx = oth.axesSpec[i];\n if (qAx.name !== tAx.name) {\n continue out;\n }\n if (qAx.type !== tAx.type) {\n continue out;\n }\n if (!matchDomain(qAx.domain, tAx.domain)) {\n continue out;\n }\n }\n\n result.push(data.obj);\n }\n return result;\n }\n}\n\nfunction matchDomain(query?: Record<string, string>, target?: Record<string, string>) {\n if (query === undefined) return target === undefined;\n if (target === undefined) return true;\n for (const k in target) {\n if (query[k] !== target[k]) return false;\n }\n return true;\n}\n\nexport class RenderCtx<Args, UiState> {\n private readonly ctx: GlobalCfgRenderCtx;\n\n public readonly args: Args;\n public readonly uiState: UiState | undefined;\n\n constructor() {\n this.ctx = getCfgRenderCtx();\n this.args = JSON.parse(this.ctx.args);\n this.uiState = this.ctx.uiState !== undefined ? JSON.parse(this.ctx.uiState) : undefined;\n }\n\n private getNamedAccessor(name: string): TreeNodeAccessor | undefined {\n const accessorId = this.ctx.getAccessorHandleByName(name);\n return accessorId ? new TreeNodeAccessor(accessorId) : undefined;\n }\n\n public get prerun(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(StagingAccessorName);\n }\n\n /**\n * @deprecated use prerun\n */\n public get precalc(): TreeNodeAccessor | undefined {\n return this.prerun;\n }\n\n /**\n * @deprecated use prerun\n */\n public get stagingOutput(): TreeNodeAccessor | undefined {\n return this.precalc;\n }\n\n public get outputs(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(MainAccessorName);\n }\n\n /**\n * @deprecated use outputs\n */\n public get mainOutput(): TreeNodeAccessor | undefined {\n return this.outputs;\n }\n\n public readonly resultPool = new ResultPool();\n\n public createPFrame(def: PFrameDef<TreeNodeAccessor>): PFrameHandle {\n return this.ctx.createPFrame(def.map((c) => mapPObjectData(c, (d) => d.handle)));\n }\n\n public createPTable(def: PTableDef<PColumn<TreeNodeAccessor>>): PTableHandle;\n public createPTable(def: {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }): PTableHandle;\n public createPTable(\n def:\n | PTableDef<PColumn<TreeNodeAccessor>>\n | {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }\n ): PTableHandle {\n var rawDef: PTableDef<PColumn<TreeNodeAccessor>>;\n if ('columns' in def) {\n rawDef = {\n src: {\n type: 'inner',\n entries: def.columns.map((c) => ({ type: 'column', column: c }))\n },\n filters: def.filters ?? [],\n sorting: def.sorting ?? []\n };\n } else {\n rawDef = def;\n }\n return this.ctx.createPTable(mapPTableDef(rawDef, (po) => mapPObjectData(po, (d) => d.handle)));\n }\n\n public getBlockLabel(blockId: string): string {\n return this.ctx.getBlockLabel(blockId);\n }\n}\n\nexport type RenderFunction<Args = unknown, UiState = unknown, Ret = unknown> = (\n rCtx: RenderCtx<Args, UiState>\n) => Ret;\n\nexport type UnwrapFutureRef<K> =\n K extends FutureRef<infer T>\n ? T\n : K extends bigint | boolean | null | number | string | symbol | undefined\n ? K\n : { [key in keyof K]: UnwrapFutureRef<K[key]> };\n\nexport type InferRenderFunctionReturn<RF extends Function> = RF extends (...args: any) => infer R\n ? UnwrapFutureRef<R>\n : never;\n","export const PlatformaSDKVersion = '1.8.0';\n","import { BlockRenderingMode, BlockSection, ValueOrErrors } from '@milaboratories/pl-model-common';\nimport { Checked, ConfigResult, getImmediate, PlResourceEntry, TypedConfig } from './config';\nimport { getPlatformaInstance, isInUI, tryRegisterCallback } from './internal';\nimport { Platforma } from './platforma';\nimport { InferRenderFunctionReturn, RenderCtx, RenderFunction } from './render';\nimport { PlatformaSDKVersion } from './version';\n\ntype StdCtxArgsOnly<Args, UiState = undefined> = {\n readonly $blockId: string;\n readonly $args: Args;\n readonly $ui: UiState;\n};\n\nexport type StdCtx<Args, UiState = undefined> = StdCtxArgsOnly<Args, UiState> & {\n readonly $prod: PlResourceEntry;\n readonly $staging: PlResourceEntry;\n};\n\nexport type ResolveCfgType<Cfg extends TypedConfig, Args, UiState = undefined> = ConfigResult<\n Cfg,\n StdCtx<Args, UiState>\n>;\n\ntype SectionsExpectedType = readonly BlockSection[];\n\ntype SectionsCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends SectionsExpectedType ? true : false\n>;\n\ntype SectionsRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends SectionsExpectedType ? true : false\n>;\n\ntype InputsValidExpectedType = boolean;\n\ntype InputsValidCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends InputsValidExpectedType ? true : false\n>;\n\ntype InputsValidRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends InputsValidExpectedType ? true : false\n>;\n\nexport type Code = {\n type: 'plain';\n content: string;\n};\n\n/** Field key to attach ConfAction information to a config type. */\ndeclare const __function_handle__: unique symbol;\n\n/** Creates branded Cfg type */\nexport type FunctionHandle<Return = unknown> = string & { [__function_handle__]: Return };\n\nexport type ExtractFunctionHandleReturn<Func extends FunctionHandle> =\n Func[typeof __function_handle__];\n\nexport type TypedConfigOrFunctionHandle = TypedConfig | FunctionHandle;\n\nexport function isFunctionHandle(cfgOrFh: TypedConfigOrFunctionHandle): cfgOrFh is FunctionHandle {\n return typeof cfgOrFh === 'string';\n}\n\ntype OnlyString<S> = S extends string ? S : '';\n\n// prettier-ignore\nexport type DeriveHref<S> = S extends readonly BlockSection[]\n ? OnlyString<Extract<S[number], { type: 'link' }>['href']>\n : never;\n\n/** This structure is rendered from the configuration, type can accommodate any\n * version of config structure. */\nexport type BlockConfigUniversal<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = {\n /** SDK version used by the block */\n readonly sdkVersion: string;\n\n /** Main rendering mode for the block */\n readonly renderingMode: BlockRenderingMode;\n\n /** Initial value for the args when block is added to the project */\n readonly initialArgs: Args;\n\n /** @deprecated */\n readonly canRun?: TypedConfigOrFunctionHandle;\n\n /**\n * Config to determine whether the block can be executed with current\n * arguments.\n *\n * Optional to support earlier SDK version configs.\n * */\n readonly inputsValid?: TypedConfigOrFunctionHandle;\n\n /** Configuration to derive list of section for the left overview panel */\n readonly sections: TypedConfigOrFunctionHandle;\n\n /** Configuration for the output cells */\n readonly outputs: Outputs;\n\n /** Config code bundle */\n readonly code?: Code;\n};\n\n/** This structure is rendered from the configuration */\nexport type BlockConfig<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = Required<Omit<BlockConfigUniversal<Args, Outputs>, 'canRun' | 'code'>> &\n Pick<BlockConfigUniversal<Args, Outputs>, 'code'>;\n\n/** Takes universal config, and converts it into latest structure */\nexport function normalizeBlockConfig<\n Args,\n Outputs extends Record<string, TypedConfigOrFunctionHandle>\n>(cfg: BlockConfigUniversal<Args, Outputs>): BlockConfig<Args, Outputs> {\n if (cfg.inputsValid !== undefined) return cfg as BlockConfig<Args, Outputs>;\n else {\n if (cfg.canRun === undefined)\n throw new Error(`Malformed config, SDK version ${cfg.sdkVersion}`);\n const latest = { ...cfg, inputsValid: cfg.canRun };\n delete latest['canRun'];\n return latest;\n }\n}\n\n/** Main entry point that each block should use in it's \"config\" module. Don't forget\n * to call {@link done()} at the end of configuration. Value returned by this builder must be\n * exported as constant with name \"platforma\" from the \"config\" module. */\nexport class BlockModel<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState,\n Href extends `/${string}` = '/'\n> {\n private constructor(\n private readonly _renderingMode: BlockRenderingMode,\n private readonly _initialArgs: Args | undefined,\n private readonly _outputs: OutputsCfg,\n private readonly _inputsValid: TypedConfigOrFunctionHandle,\n private readonly _sections: TypedConfigOrFunctionHandle\n ) { }\n\n /** Initiates configuration builder */\n public static create<Args, UiState = undefined>(\n renderingMode: BlockRenderingMode = 'Heavy'\n ): BlockModel<Args, {}, UiState> {\n return new BlockModel<Args, {}, UiState>(\n renderingMode,\n undefined,\n {},\n getImmediate(true),\n getImmediate([])\n );\n }\n\n /**\n * Add output cell to the configuration\n *\n * @param key cell name, that can be used to retrieve the rendered value\n * @param cfg configuration describing how to render cell value from the blocks\n * workflow outputs\n * */\n public output<const Key extends string, const Cfg extends TypedConfig>(\n key: Key,\n cfg: Cfg\n ): BlockModel<Args, OutputsCfg & { [K in Key]: Cfg }, UiState, Href>;\n public output<const Key extends string, const RF extends RenderFunction<Args, UiState>>(\n key: Key,\n rf: RF\n ): BlockModel<\n Args,\n OutputsCfg & { [K in Key]: FunctionHandle<InferRenderFunctionReturn<RF>> },\n UiState,\n Href\n >;\n public output(\n key: string,\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n if (typeof cfgOrRf === 'function') {\n const functionHandle = `output#${key}` as FunctionHandle;\n tryRegisterCallback(functionHandle, () => cfgOrRf(new RenderCtx()));\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: functionHandle\n },\n this._inputsValid,\n this._sections\n );\n } else\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: cfgOrRf\n },\n this._inputsValid,\n this._sections\n );\n }\n\n /** @deprecated */\n public canRun<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n return this.inputsValid(cfg as any);\n }\n\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public argsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (typeof cfgOrRf === 'function') {\n tryRegisterCallback('inputsValid', () => cfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n 'inputsValid' as FunctionHandle,\n this._sections\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n cfgOrRf,\n this._sections\n );\n }\n\n /** @deprecated use argsValid() */\n public inputsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** @deprecated use argsValid() */\n public inputsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public inputsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n return this.argsValid(cfgOrRf as any);\n }\n\n /** Sets the config to generate list of section in the left block overviews panel */\n public sections<const S extends SectionsExpectedType,>(rf: S): BlockModel<Args, OutputsCfg, UiState, DeriveHref<S>>;\n public sections<\n const Ret extends SectionsExpectedType,\n const RF extends RenderFunction<Args, UiState, Ret>\n >(rf: RF): BlockModel<Args, OutputsCfg, UiState, DeriveHref<ReturnType<RF>>>;\n public sections<const Cfg extends TypedConfig>(\n cfg: Cfg & SectionsCfgChecked<Cfg, Args, UiState>\n ): BlockModel<\n Args,\n OutputsCfg,\n UiState,\n DeriveHref<ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>>>\n >;\n public sections(\n arrOrCfgOrRf: SectionsExpectedType | TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (Array.isArray(arrOrCfgOrRf)){\n return this.sections(getImmediate(arrOrCfgOrRf))\n } else if (typeof arrOrCfgOrRf === 'function') {\n tryRegisterCallback('sections', () => arrOrCfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n 'sections' as FunctionHandle\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n arrOrCfgOrRf as TypedConfig\n );\n }\n\n\n /** Sets initial args for the block, this value must be specified. */\n public initialArgs(value: Args): BlockModel<Args, OutputsCfg, UiState, Href> {\n return new BlockModel<Args, OutputsCfg, UiState, Href>(\n this._renderingMode,\n value,\n this._outputs,\n this._inputsValid,\n this._sections\n );\n }\n\n /** Renders all provided block settings into a pre-configured platforma API\n * instance, that can be used in frontend to interact with block state, and\n * other features provided by the platforma to the block. */\n public done(): Platforma<\n Args,\n InferOutputsFromConfigs<Args, OutputsCfg, UiState>,\n UiState,\n Href\n > {\n if (this._initialArgs === undefined) throw new Error('Initial arguments not set.');\n\n const config: BlockConfig<Args, OutputsCfg> = {\n sdkVersion: PlatformaSDKVersion,\n renderingMode: this._renderingMode,\n initialArgs: this._initialArgs,\n inputsValid: this._inputsValid,\n sections: this._sections,\n outputs: this._outputs\n };\n\n if (!isInUI())\n // we are in the configuration rendering routine, not in actual UI\n return { config } as any;\n // normal operation inside the UI\n else return getPlatformaInstance(config) as any;\n }\n}\n\nexport type InferOutputType<CfgOrFH, Args, UiState> = CfgOrFH extends TypedConfig\n ? ResolveCfgType<CfgOrFH, Args, UiState>\n : CfgOrFH extends FunctionHandle\n ? ExtractFunctionHandleReturn<CfgOrFH>\n : never;\n\ntype InferOutputsFromConfigs<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState\n> = {\n [Key in keyof OutputsCfg]: ValueOrErrors<InferOutputType<OutputsCfg[Key], Args, UiState>>;\n};\n","import {\n getAxisId,\n isPColumn,\n JoinEntry,\n matchAxisId,\n PColumn,\n PColumnIdAndSpec,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting\n} from '@milaboratories/pl-model-common';\nimport { RenderCtx, TreeNodeAccessor } from '../render';\n\n/** Data table state */\nexport type PlDataTableGridState = {\n /** Includes column ordering */\n columnOrder?: {\n /** All colIds in order */\n orderedColIds: string[];\n };\n /** Includes current sort columns and direction */\n sort?: {\n /** Sorted columns and directions in order */\n sortModel: {\n /** Column Id to apply the sort to. */\n colId: string;\n /** Sort direction */\n sort: 'asc' | 'desc';\n }[];\n };\n\n /** current sheet selections */\n sheets?: Record<string, string | number>;\n};\n\n/**\n * Params used to get p-table handle from the driver\n */\nexport type PTableParams = {\n /** For sourceType: 'pframe' the join is original one, enriched with label columns */\n join?: JoinEntry<PColumnIdAndSpec>;\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n};\n\n/**\n * PlDataTable persisted state\n */\nexport type PlDataTableState = {\n // internal ag-grid state\n gridState: PlDataTableGridState;\n\n // mapping of gridState onto the p-table data structures\n pTableParams?: PTableParams;\n};\n\n/**\n * Create p-table handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns\n */\nexport function createPlDataTable<A, U>(\n ctx: RenderCtx<A, U>,\n columns: PColumn<TreeNodeAccessor>[],\n tableState?: PlDataTableState\n): PTableHandle {\n const allLabelCols = ctx.resultPool\n .getData()\n .entries.map((d) => d.obj)\n .filter(isPColumn)\n .filter((p) => p.spec.name === 'pl7.app/label' && p.spec.axesSpec.length === 1);\n\n const moreColumns = [];\n for (const col of columns) {\n for (const axis of col.spec.axesSpec) {\n const axisId = getAxisId(axis);\n for (const match of allLabelCols) {\n if (matchAxisId(axisId, getAxisId(match.spec.axesSpec[0]))) {\n moreColumns.push(match);\n }\n }\n }\n }\n return ctx.createPTable({\n columns: [...columns, ...moreColumns],\n filters: tableState?.pTableParams?.filters,\n sorting: tableState?.pTableParams?.sorting\n });\n}\n","import {\n CalculateTableDataRequest,\n CalculateTableDataResponse,\n FindColumnsRequest,\n FindColumnsResponse,\n PColumnIdAndSpec,\n PColumnSpec,\n PFrame,\n PFrameHandle,\n PObjectId,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\n\nexport class PFrameImpl implements PFrame {\n constructor(private readonly handle: PFrameHandle) {}\n\n public async findColumns(request: FindColumnsRequest): Promise<FindColumnsResponse> {\n return await platforma.pFrameDriver.findColumns(this.handle, request);\n }\n\n public async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n return await platforma.pFrameDriver.getColumnSpec(this.handle, columnId);\n }\n\n public async listColumns(): Promise<PColumnIdAndSpec[]> {\n return await platforma.pFrameDriver.listColumns(this.handle);\n }\n\n public async calculateTableData(\n request: CalculateTableDataRequest<PObjectId>\n ): Promise<CalculateTableDataResponse> {\n return await platforma.pFrameDriver.calculateTableData(this.handle, request);\n }\n\n public async getUniqueValues(request: UniqueValuesRequest): Promise<UniqueValuesResponse> {\n return await platforma.pFrameDriver.getUniqueValues(this.handle, request);\n }\n}\n","import { getJsonField, makeObject, TypedConfig } from './config';\n\nexport function fromPlRef<Source extends TypedConfig>(source: Source) {\n return makeObject({\n __isRef: true,\n blockId: getJsonField(source, 'blockId'),\n name: getJsonField(source, 'name')\n });\n}\n\nexport function fromPlOption<Source extends TypedConfig>(source: Source) {\n return makeObject({\n ref: fromPlRef(getJsonField(source, 'ref')),\n label: getJsonField(source, 'label')\n });\n}\n","import { PlatformaSDKVersion } from './version';\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion\n};\n","import {} from './global';\nimport { getPlatformaInstance } from './internal';\nimport { Platforma } from './platforma';\n\nexport function getRawPlatformaInstance(): Platforma {\n return getPlatformaInstance();\n}\n","import {} from './global';\n\nexport function getEnvironmentValue(name: string): string | undefined {\n if (typeof globalThis.getEnvironmentValue !== 'function') return undefined;\n else return globalThis.getEnvironmentValue(name);\n}\n"],"names":["OutputError","errors","moreErrors","readOutput","outputValue","wrapOutputs","outputs","target","key","primitiveToConfig","value","getImmediate","getFromCfg","variable","isolate","cfg","Args","It","MainOutputs","StagingOutputs","UiState","makeObject","template","normalizedTemplate","k","makeArray","getJsonField","source","field","mapRecordValues","mapping","itVar","mapArrayValues","flatten","isEmpty","arg","not","operand","and","operand1","operand2","or","getResourceField","getResourceValueAsJson","mapResourceFields","getBlobContent","getBlobContentAsString","getBlobContentAsJson","getDownloadedBlobContent","getOnDemandBlobContent","getImportProgress","getLastLogs","lines","getProgressLog","patternToSearch","getLogHandle","isInUI","getPlatformaInstance","config","tryGetCfgRenderCtx","getCfgRenderCtx","tryRegisterCallback","callback","ctx","futureResolves","registerFutureAwait","handle","onResolve","res","FutureRef","postProcess","v","__publicField","vv","wrapAccessor","TreeNodeAccessor","steps","commonOptions","content","errorOnUnknownField","prefix","result","obj","isPColumn","pObjects","mapPObjectData","nLines","StagingAccessorName","MainAccessorName","isFutureAwait","addAllFutureAwaits","set","visited","node","a","nested","getAllFutureAwaits","ResultPool","spec","ref","_a","predicate","labelFn","s","e","mapValueInVOE","f","out","data","isPColumnSpec","oth","matchDomain","i","qAx","tAx","query","RenderCtx","name","accessorId","def","c","d","rawDef","mapPTableDef","po","blockId","PlatformaSDKVersion","isFunctionHandle","cfgOrFh","normalizeBlockConfig","latest","BlockModel","_renderingMode","_initialArgs","_outputs","_inputsValid","_sections","renderingMode","cfgOrRf","functionHandle","arrOrCfgOrRf","createPlDataTable","columns","tableState","allLabelCols","p","moreColumns","col","axis","axisId","getAxisId","match","matchAxisId","_b","PFrameImpl","request","columnId","fromPlRef","fromPlOption","CurrentSdkInfo","getRawPlatformaInstance","getEnvironmentValue"],"mappings":"uSAEO,MAAMA,UAAoB,KAAM,CACrC,YACkBC,EACAC,EAChB,CACM,MAAA,GAAGD,EAAO,MAAM,GAAGC,EAAa,IAAM,EAAE,yBAA2BD,EAAO,CAAC,CAAC,EAHlE,KAAA,OAAAA,EACA,KAAA,WAAAC,CAGlB,CACF,CAEO,SAASC,EAAcC,EAAkC,CAC1D,GAAA,CAACA,EAAY,GAAI,MAAM,IAAIJ,EAAYI,EAAY,OAAQA,EAAY,UAAU,EACrF,OAAOA,EAAY,KACrB,CAOO,SAASC,EACdC,EACwB,CACjB,OAAA,IAAI,MAAMA,EAAS,CACxB,IAAIC,EAAQC,EAAa,CAChB,OAAAL,EAAWI,EAAOC,CAAG,CAAC,CAC/B,CAAA,CACD,CACH,CCMA,SAASC,EAAkBC,EAAuC,CAE9D,OAAA,OAAOA,GAAU,UACjB,OAAOA,GAAU,UACjB,OAAOA,GAAU,WACjBA,IAAU,KAEHC,EAAaD,CAAK,EACfA,CACd,CAMO,SAASE,EAAmCC,EAA4C,CACtF,MAAA,CAAE,KAAM,aAAc,SAAAA,EAC/B,CAMO,SAASC,EACdC,EACgD,CACzC,MAAA,CACL,KAAM,UACN,IAAAA,CAAA,CAEJ,CAMa,MAAAC,EAAOJ,EAAW,OAAO,EACzBK,EAAKL,EAAW,KAAK,EACrBM,EAAcN,EAAW,OAAO,EAChCO,EAAiBP,EAAW,UAAU,EACtCQ,EAAUR,EAAW,KAAK,EAMhC,SAASD,EAAsBD,EAA2C,CACxE,MAAA,CAAE,KAAM,YAAa,MAAAA,EAC9B,CAEO,SAASW,EACdC,EAC4E,CAC5E,MAAMC,EAAkD,CAAA,EACxD,SAAW,CAACC,EAAGT,CAAG,IAAK,OAAO,QAAQO,CAAQ,EAAsBC,EAAAC,CAAC,EAAIf,EAAkBM,CAAG,EACvF,MAAA,CACL,KAAM,aACN,SAAUQ,CAAA,CAEd,CAEO,SAASE,KACXH,EACwE,CAC3E,MAAMC,EAAoC,CAAA,EAC1C,UAAWR,KAAOO,EAAUC,EAAmB,KAAKd,EAAkBM,CAAG,CAAC,EACnE,MAAA,CACL,KAAM,YACN,SAAUQ,CAAA,CAEd,CAEgB,SAAAG,EAIdC,EACAC,EAC6E,CACtE,MAAA,CACL,KAAM,eACN,OAAQnB,EAAkBkB,CAAM,EAChC,MAAOlB,EAAkBmB,CAAK,CAAA,CAElC,CAkCO,SAASC,EAKdF,EACAG,EACAC,EAAe,MACwE,CAChF,MAAA,CACL,KAAM,kBACN,OAAAJ,EACA,QAAAG,EACA,MAAAC,CAAA,CAEJ,CA4BO,SAASC,EAKdL,EACAG,EACAC,EAAe,MACuE,CAC/E,MAAA,CACL,KAAM,iBACN,OAAAJ,EACA,QAAAG,EACA,MAAAC,CAAA,CAEJ,CAEO,SAASE,EACdN,EACgD,CACzC,MAAA,CACL,KAAM,UACN,OAAAA,CAAA,CAEJ,CAMO,SAASO,EACdC,EAC6C,CACtC,MAAA,CACL,KAAM,UACN,IAAAA,CAAA,CAEJ,CAEO,SAASC,EACdC,EAC6C,CACtC,MAAA,CACL,KAAM,MACN,QAAAA,CAAA,CAEJ,CAEgB,SAAAC,EACdC,EACAC,EACuE,CAChE,MAAA,CACL,KAAM,MACN,SAAAD,EACA,SAAAC,CAAA,CAEJ,CAEgB,SAAAC,EACdF,EACAC,EACsE,CAC/D,MAAA,CACL,KAAM,KACN,SAAAD,EACA,SAAAC,CAAA,CAEJ,CAMgB,SAAAE,GAIdf,EACAC,EACqF,CAC9E,MAAA,CACL,KAAM,mBACN,OAAQnB,EAAkBkB,CAAM,EAChC,MAAOlB,EAAkBmB,CAAK,CAAA,CAElC,CAEO,SAASe,IAA4B,CAC1C,OAAO,SACLhB,EACqE,CAC9D,MAAA,CACL,KAAM,yBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAClC,CAEJ,CAkBO,SAASiB,GAKdjB,EACAG,EACAC,EAAe,MAC0E,CAClF,MAAA,CACL,KAAM,oBACN,OAAAJ,EACA,QAAAG,EACA,MAAAC,CAAA,CAIJ,CAMO,SAASc,GACdlB,EACuD,CAChD,MAAA,CACL,KAAM,iBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAEO,SAASmB,GACdnB,EAC+D,CACxD,MAAA,CACL,KAAM,yBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAEO,SAASoB,IAA0B,CACxC,OAAO,SACLpB,EACgE,CACzD,MAAA,CACL,KAAM,uBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAClC,CAEJ,CAEO,SAASqB,GACdrB,EACiE,CAC1D,MAAA,CACL,KAAM,2BACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAEO,SAASsB,GACdtB,EAC+D,CACxD,MAAA,CACL,KAAM,yBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAMO,SAASuB,GACdvB,EACuD,CAChD,MAAA,CACL,KAAM,oBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAMgB,SAAAwB,GACdxB,EACAyB,EACoD,CAC7C,MAAA,CACL,KAAM,cACN,OAAQ3C,EAAkBkB,CAAM,EAChC,MAAAyB,CAAA,CAEJ,CAEgB,SAAAC,GACd1B,EACA2B,EACuD,CAChD,MAAA,CACL,KAAM,iBACN,OAAQ7C,EAAkBkB,CAAM,EAChC,gBAAA2B,CAAA,CAEJ,CAEO,SAASC,GACd5B,EACqD,CAC9C,MAAA,CACL,KAAM,eACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CCraO,SAAS6B,IAAS,CACvB,OACE,OAAO,WAAW,aAAiB,KAAe,OAAO,WAAW,UAAc,GAEtF,CAGO,SAASC,EAAqBC,EAAiC,CAChE,GAAAA,GAAU,OAAO,WAAW,cAAiB,WACxC,OAAA,WAAW,aAAaA,CAAM,EAAA,GAC9B,OAAO,WAAW,UAAc,WAAoB,WAAW,UACnE,MAAM,IAAI,MAAM,+BAA+B,CACtD,CAEO,SAASC,IAAqD,CACnE,GAAI,OAAO,WAAW,aAAiB,WAAoB,WAAW,YAExE,CAEO,SAASC,GAAsC,CACpD,GAAI,OAAO,WAAW,aAAiB,WAAoB,WAAW,aACjE,MAAM,IAAI,MAAM,iCAAiC,CACxD,CAEgB,SAAAC,EAAoBrD,EAAasD,EAA4C,CAC3F,MAAMC,EAAMJ,KACR,GAAAI,IAAQ,OAAkB,MAAA,GAC1B,GAAAvD,KAAOuD,EAAI,iBAAkB,MAAM,IAAI,MAAM,qBAAqBvD,CAAG,sBAAsB,EAC3F,OAAAuD,EAAA,iBAAiBvD,CAAG,EAAIsD,EACrB,EACT,CAEA,MAAME,MAAqB,IAEX,SAAAC,GAAoBC,EAAsBC,EAAqC,CACvFD,KAAUN,EAAgB,EAAE,mBAChCA,EAAkB,EAAA,iBAAiBM,CAAM,EAAKxD,GAAmB,CAC/D,UAAW0D,KAAOJ,EAAe,IAAIE,CAAM,EACzCE,EAAI1D,CAAK,CACX,EAEasD,EAAA,IAAIE,EAAQ,CAAA,CAAE,GAE/BF,EAAe,IAAIE,CAAM,EAAG,KAAKC,CAAS,CAC5C,CC/CO,MAAME,CAAuB,CAIlC,YACmBH,EACAI,EAAsCC,GAAMA,EAC7D,CANMC,EAAA,kBAAa,IACbA,EAAA,sBAGW,KAAA,OAAAN,EACA,KAAA,YAAAI,EAEGL,GAAAC,EAASxD,GAAU,CAChC,KAAA,cAAgB4D,EAAY5D,CAAK,EACtC,KAAK,WAAa,EAAA,CACnB,CACH,CAEO,IAAOoB,EAAoC,CACzC,OAAA,IAAIuC,EAAa,KAAK,OAASE,GAAMzC,EAAQ,KAAK,YAAYyC,CAAC,CAAC,CAAC,CAC1E,CAEO,WAAczC,EAA6D,CAChF,OAAO,IAAIuC,EAAyB,KAAK,OAASE,GAAM,CAChD,MAAAE,EAAK,KAAK,YAAYF,CAAC,EACtB,OAAAE,EAAK3C,EAAQ2C,CAAE,EAAI,MAAA,CAC3B,CACH,CAEA,QAAc,CACL,OAAA,KAAK,WACR,KAAK,cACJ,CAAE,oBAAqB,CAAC,KAAK,MAAM,EAC1C,CACF,CCVA,SAASC,EAAaR,EAAkE,CACtF,OAAOA,IAAW,OAAY,OAAY,IAAIS,EAAiBT,CAAM,CACvE,CAGO,MAAMS,CAAiB,CAC5B,YAA4BT,EAAwB,CAAxB,KAAA,OAAAA,CAAyB,CAU9C,WAAWU,EAAsE,CACtF,OAAO,KAAK,kBAAkB,GAAI,GAAGA,CAAK,CAC5C,CAEO,kBACLC,KACGD,EAC2B,CACvB,OAAAF,EAAad,EAAkB,EAAA,kBAAkB,KAAK,OAAQiB,EAAe,GAAGD,CAAK,CAAC,CAC/F,CAEA,IAAW,cAA6B,CACtC,OAAOhB,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,iBAA2B,CAChC,OAAOA,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,kBAA4B,CACjC,OAAOA,EAAgB,EAAE,iBAAiB,KAAK,MAAM,CACvD,CAEO,mBAA6B,CAClC,OAAOA,EAAgB,EAAE,kBAAkB,KAAK,MAAM,CACxD,CAEO,YAAsB,CAC3B,OAAOA,EAAgB,EAAE,WAAW,KAAK,MAAM,CACjD,CAEO,UAAyC,CAC9C,OAAOc,EAAad,EAAgB,EAAE,SAAS,KAAK,MAAM,CAAC,CAC7D,CAEO,iBAA4B,CACjC,OAAOA,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,kBAA6B,CAClC,OAAOA,EAAgB,EAAE,iBAAiB,KAAK,MAAM,CACvD,CAEO,mBAA8B,CACnC,OAAOA,EAAgB,EAAE,kBAAkB,KAAK,MAAM,CACxD,CAEO,kBAAkBpD,EAAiC,CACxD,OAAOoD,EAAgB,EAAE,kBAAkB,KAAK,OAAQpD,CAAG,CAC7D,CAEO,oBAAoBA,EAAiC,CAC1D,OAAOoD,EAAgB,EAAE,oBAAoB,KAAK,OAAQpD,CAAG,CAC/D,CAEO,kBAAqBA,EAAgB,CACpC,MAAAsE,EAAU,KAAK,oBAAoBtE,CAAG,EAC5C,GAAIsE,GAAW,KAAiB,MAAA,IAAI,MAAM,0BAA0B,EAC7D,OAAA,KAAK,MAAMA,CAAO,CAC3B,CAEO,eAAoC,CACzC,OAAOlB,EAAgB,EAAE,cAAc,KAAK,MAAM,CACpD,CAEO,iBAAsC,CAC3C,OAAOA,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,eAAsB,CACrB,MAAAkB,EAAU,KAAK,kBACrB,GAAIA,GAAW,KAAiB,MAAA,IAAI,MAAM,0BAA0B,EAC7D,OAAA,KAAK,MAAMA,CAAO,CAC3B,CAKO,YACLC,EAA+B,GAC/BC,EAAiB,GACwB,CACzC,MAAMC,EAAS,KAAK,uBAAuBF,EAAqBC,CAAM,EAClE,OAAAC,IAAW,OAAkB,OAEtB,OAAO,QAAQA,CAAM,EAAE,IAAI,CAAC,CAAG,CAAAC,CAAG,IAAM,CAC7C,GAAA,CAACC,EAAU,UAAAD,CAAG,EAAG,MAAM,IAAI,MAAM,yBAAyBA,EAAI,KAAK,IAAI,GAAG,EACvE,OAAAA,CAAA,CACR,CAGH,CAKO,uBACLH,EAA+B,GAC/BC,EAAiB,GACsC,CACjD,MAAAI,EAAWxB,IAAkB,uBACjC,KAAK,OACLmB,EACAC,CAAA,EAEE,GAAAI,IAAa,OAAkB,OACnC,MAAMH,EAAoD,CAAA,EAC1D,SAAW,CAACzE,EAAKE,CAAK,IAAK,OAAO,QAAQ0E,CAAQ,EACzCH,EAAAzE,CAAG,EAAI6E,EAAAA,eAAe3E,EAAQ,GAAM,IAAIiE,EAAiB,CAAC,CAAC,EAC7D,OAAAM,CACT,CAEO,wBAAwD,CAC7D,OAAO,IAAIZ,EAAUT,IAAkB,uBAAuB,KAAK,MAAM,CAAC,CAC5E,CAEO,wBAAwD,CAC7D,OAAO,IAAIS,EAAUT,IAAkB,uBAAuB,KAAK,MAAM,CAAC,CAC5E,CAEO,sBAAoD,CACzD,OAAO,IAAIS,EACTT,IAAkB,uBAAuB,KAAK,MAAM,CAAA,EACpD,WAAYW,GAAM,KAAK,MAAMA,CAAC,CAAM,CACxC,CAKO,wBAAwD,CAC7D,OAAO,KAAK,wBACd,CAKO,wBAAwD,CAC7D,OAAO,KAAK,wBACd,CAKO,eAA+D,CACpE,OAAO,IAAIF,EAAUT,IAAkB,+BAA+B,KAAK,MAAM,CAAC,CACpF,CAKO,yBAAyE,CAC9E,OAAO,KAAK,eACd,CAKO,qBAAsE,CAC3E,OAAO,IAAIS,EAAUT,IAAkB,6BAA6B,KAAK,MAAM,CAAC,CAClF,CAKO,uBAAwE,CAC7E,OAAO,KAAK,qBACd,CAEO,mBAA+C,CACpD,OAAO,IAAIS,EAAUT,IAAkB,kBAAkB,KAAK,MAAM,CAAC,CACvE,CAEO,YAAY0B,EAA+C,CACzD,OAAA,IAAIjB,EAAUT,IAAkB,YAAY,KAAK,OAAQ0B,CAAM,CAAC,CACzE,CAEO,eAAehC,EAAwD,CACrE,OAAA,IAAIe,EAAUT,IAAkB,eAAe,KAAK,OAAQN,CAAe,CAAC,CACrF,CAEO,cAAoD,CACzD,OAAO,IAAIe,EAAUT,IAAkB,aAAa,KAAK,MAAM,CAAC,CAClE,CACF,CC7MO,MAAM2B,EAAsB,UACtBC,EAAmB,OA0HzB,SAASC,EAAcP,EAAkC,CAC9D,OAAO,OAAOA,GAAQ,UAAYA,IAAQ,MAAQ,wBAAyBA,CAC7E,CAEA,SAASQ,EAAmBC,EAAkBC,EAAuBC,EAAe,CAC9E,GAAAD,EAAQ,IAAIC,CAAI,EAAG,OAIvB,GAHAD,EAAQ,IAAIC,CAAI,EAEH,OAAOA,IACP,SACP,GAAAJ,EAAcI,CAAI,EAAQA,EAAA,oBAAoB,QAASC,GAAMH,EAAI,IAAIG,CAAC,CAAC,UAClE,MAAM,QAAQD,CAAI,EACzB,UAAWE,KAAUF,EAAyBH,EAAAC,EAAKC,EAASG,CAAM,MAElE,UAAW,CAAA,CAAGA,CAAM,IAAK,OAAO,QAAQF,CAAc,EAChDE,IAAWF,GAAyBH,EAAAC,EAAKC,EAASG,CAAM,CAEpE,CAEO,SAASC,GAAmBd,EAA2B,CACtD,MAAAS,MAAU,IAChB,OAAAD,EAAmBC,EAAK,IAAI,IAAOT,CAAG,EAC/BS,CACT,oLCxIO,MAAMM,CAAW,CAAjB,cACYzB,EAAA,WAA0BZ,EAAgB,GASnDY,EAAA,sBAAiB,CAAC0B,EAAmBC,IAC3C,OAAA,QAAAC,EAAAF,EAAK,cAAL,YAAAE,EAAmB,mBAAoB,eALlC,iBAAiBC,EAAqC,CACpD,OAAA,KAAK,IAAI,iBAAiBA,CAAS,CAC5C,CAKO,WACLA,EACAC,EAAmD,KAAK,eAC9C,CACV,OAAO,KAAK,SAAA,EACT,QAAQ,OAAQC,GAAMF,EAAUE,EAAE,GAAG,CAAC,EACtC,IAAKA,IAAO,CACX,IAAKA,EAAE,IACP,MAAOD,EAAQC,EAAE,IAAKA,EAAE,GAAG,CAC3B,EAAA,CACN,CAKO,uBAAqE,CAC1E,OAAO,KAAK,SACd,CAEO,SAAuD,CACtD,MAAAtB,EAAS,KAAK,IAAI,sBAAsB,EACvC,MAAA,CACL,WAAYA,EAAO,WACnB,QAASA,EAAO,QAAQ,IAAKuB,IAAO,CAClC,IAAKA,EAAE,IACP,IAAK,CACH,GAAGA,EAAE,IACL,KAAM,IAAI7B,EAAiB6B,EAAE,IAAI,IAAI,CACvC,CAAA,EACA,CAAA,CAEN,CAKO,iCAEL,CACA,OAAO,KAAK,mBACd,CAEO,mBAEL,CACM,MAAAvB,EAAS,KAAK,IAAI,gCAAgC,EACjD,MAAA,CACL,WAAYA,EAAO,WACnB,QAASA,EAAO,QAAQ,IAAKuB,IAAO,CAClC,IAAKA,EAAE,IACP,IAAK,CACH,GAAGA,EAAE,IACL,KAAMC,EAAAA,cAAcD,EAAE,IAAI,KAAOtC,GAAW,IAAIS,EAAiBT,CAAM,CAAC,CAC1E,CAAA,EACA,CAAA,CAEN,CAKO,wBAAwD,CAC7D,OAAO,KAAK,UACd,CAEO,UAA0C,CACxC,OAAA,KAAK,IAAI,wBAClB,CAMO,aAAaiC,EAAiD,OAG5D,OAAAC,EAAA,KAAK,UAAU,QAAQ,KAC3BM,GAAMA,EAAE,IAAI,UAAYP,EAAI,SAAWO,EAAE,IAAI,OAASP,EAAI,IAC1D,IAFI,YAAAC,EAEJ,GACL,CAMO,aAAaD,EAAmC,OAG9C,OAAAC,EAAA,KAAK,WAAW,QAAQ,KAC5BM,GAAMA,EAAE,IAAI,UAAYP,EAAI,SAAWO,EAAE,IAAI,OAASP,EAAI,IAC1D,IAFI,YAAAC,EAEJ,GACL,CAMO,2BAA2BF,EAAgD,CAChF,MAAMjB,EAAsC,CAAA,EAE5C0B,EAAgB,UAAAC,KAAQ,KAAK,QAAA,EAAU,QAAS,CAC9C,GAAI,CAACC,EAAAA,cAAcD,EAAK,IAAI,IAAI,EAC9B,SAGI,MAAAE,EAAMF,EAAK,IAAI,KAEjB,GAAAV,EAAK,OAASY,EAAI,MAIlBZ,EAAK,YAAcY,EAAI,WAIvBZ,EAAK,SAAS,SAAWY,EAAI,SAAS,QAIrCC,EAAYb,EAAK,OAAQY,EAAI,MAAM,EAIxC,SAASE,EAAI,EAAGA,EAAId,EAAK,SAAS,OAAQ,EAAEc,EAAG,CACvC,MAAAC,EAAMf,EAAK,SAASc,CAAC,EACrBE,EAAMJ,EAAI,SAASE,CAAC,EAO1B,GANIC,EAAI,OAASC,EAAI,MAGjBD,EAAI,OAASC,EAAI,MAGjB,CAACH,EAAYE,EAAI,OAAQC,EAAI,MAAM,EAC5B,SAAAP,CAEb,CAEO1B,EAAA,KAAK2B,EAAK,GAAG,EACtB,CACO,OAAA3B,CACT,CACF,CAEA,SAAS8B,EAAYI,EAAgC5G,EAAiC,CAChF,GAAA4G,IAAU,OAAW,OAAO5G,IAAW,OACvC,GAAAA,IAAW,OAAkB,MAAA,GACjC,UAAWiB,KAAKjB,EACd,GAAI4G,EAAM3F,CAAC,IAAMjB,EAAOiB,CAAC,EAAU,MAAA,GAE9B,MAAA,EACT,CAEO,MAAM4F,CAAyB,CAMpC,aAAc,CALG5C,EAAA,YAEDA,EAAA,aACAA,EAAA,gBA0CAA,EAAA,kBAAa,IAAIyB,GAvC/B,KAAK,IAAMrC,IACX,KAAK,KAAO,KAAK,MAAM,KAAK,IAAI,IAAI,EAC/B,KAAA,QAAU,KAAK,IAAI,UAAY,OAAY,KAAK,MAAM,KAAK,IAAI,OAAO,EAAI,MACjF,CAEQ,iBAAiByD,EAA4C,CACnE,MAAMC,EAAa,KAAK,IAAI,wBAAwBD,CAAI,EACxD,OAAOC,EAAa,IAAI3C,EAAiB2C,CAAU,EAAI,MACzD,CAEA,IAAW,QAAuC,CACzC,OAAA,KAAK,iBAAiB/B,CAAmB,CAClD,CAKA,IAAW,SAAwC,CACjD,OAAO,KAAK,MACd,CAKA,IAAW,eAA8C,CACvD,OAAO,KAAK,OACd,CAEA,IAAW,SAAwC,CAC1C,OAAA,KAAK,iBAAiBC,CAAgB,CAC/C,CAKA,IAAW,YAA2C,CACpD,OAAO,KAAK,OACd,CAIO,aAAa+B,EAAgD,CAClE,OAAO,KAAK,IAAI,aAAaA,EAAI,IAAKC,GAAMnC,EAAAA,eAAemC,EAAIC,GAAMA,EAAE,MAAM,CAAC,CAAC,CACjF,CASO,aACLF,EAQc,CACV,IAAAG,EACJ,MAAI,YAAaH,EACNG,EAAA,CACP,IAAK,CACH,KAAM,QACN,QAASH,EAAI,QAAQ,IAAKC,IAAO,CAAE,KAAM,SAAU,OAAQA,CAAI,EAAA,CACjE,EACA,QAASD,EAAI,SAAW,CAAC,EACzB,QAASA,EAAI,SAAW,CAAC,CAAA,EAGlBG,EAAAH,EAEJ,KAAK,IAAI,aAAaI,EAAA,aAAaD,EAASE,GAAOvC,EAAAA,eAAeuC,EAAKH,GAAMA,EAAE,MAAM,CAAC,CAAC,CAChG,CAEO,cAAcI,EAAyB,CACrC,OAAA,KAAK,IAAI,cAAcA,CAAO,CACvC,CACF,CCxRO,MAAMC,EAAsB,QC+D5B,SAASC,GAAiBC,EAAiE,CAChG,OAAO,OAAOA,GAAY,QAC5B,CA2DO,SAASC,GAGdlH,EAAsE,CAClE,GAAAA,EAAI,cAAgB,OAAkB,OAAAA,EACrC,CACH,GAAIA,EAAI,SAAW,OACjB,MAAM,IAAI,MAAM,iCAAiCA,EAAI,UAAU,EAAE,EACnE,MAAMmH,EAAS,CAAE,GAAGnH,EAAK,YAAaA,EAAI,QAC1C,cAAOmH,EAAO,OACPA,CACT,CACF,CAKO,MAAMC,CAKX,CACQ,YACWC,EACAC,EACAC,EACAC,EACAC,EACjB,CALiB,KAAA,eAAAJ,EACA,KAAA,aAAAC,EACA,KAAA,SAAAC,EACA,KAAA,aAAAC,EACA,KAAA,UAAAC,CACf,CAGJ,OAAc,OACZC,EAAoC,QACL,CAC/B,OAAO,IAAIN,EACTM,EACA,OACA,CAAC,EACD9H,EAAa,EAAI,EACjBA,EAAa,CAAA,CAAE,CAAA,CAEnB,CAsBO,OACLH,EACAkI,EAC6C,CACzC,GAAA,OAAOA,GAAY,WAAY,CAC3B,MAAAC,EAAiB,UAAUnI,CAAG,GACpC,OAAAqD,EAAoB8E,EAAgB,IAAMD,EAAQ,IAAItB,CAAW,CAAC,EAC3D,IAAIe,EACT,KAAK,eACL,KAAK,aACL,CACE,GAAG,KAAK,SACR,CAAC3H,CAAG,EAAGmI,CACT,EACA,KAAK,aACL,KAAK,SAAA,CAET,KACE,QAAO,IAAIR,EACT,KAAK,eACL,KAAK,aACL,CACE,GAAG,KAAK,SACR,CAAC3H,CAAG,EAAGkI,CACT,EACA,KAAK,aACL,KAAK,SAAA,CAEX,CAGO,OACL3H,EAC6C,CACtC,OAAA,KAAK,YAAYA,CAAU,CACpC,CAUO,UACL2H,EACqD,CACjD,OAAA,OAAOA,GAAY,YACrB7E,EAAoB,cAAe,IAAM6E,EAAQ,IAAItB,CAAW,CAAC,EAC1D,IAAIe,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACL,cACA,KAAK,SAAA,GAGA,IAAIA,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACLO,EACA,KAAK,SAAA,CAEX,CAUO,YACLA,EACqD,CAC9C,OAAA,KAAK,UAAUA,CAAc,CACtC,CAgBO,SACLE,EACqD,CACjD,OAAA,MAAM,QAAQA,CAAY,EACrB,KAAK,SAASjI,EAAaiI,CAAY,CAAC,EACtC,OAAOA,GAAiB,YACjC/E,EAAoB,WAAY,IAAM+E,EAAa,IAAIxB,CAAW,CAAC,EAC5D,IAAIe,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACL,KAAK,aACL,UAAA,GAGK,IAAIA,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACL,KAAK,aACLS,CAAA,CAEN,CAIO,YAAYlI,EAA0D,CAC3E,OAAO,IAAIyH,EACT,KAAK,eACLzH,EACA,KAAK,SACL,KAAK,aACL,KAAK,SAAA,CAET,CAKO,MAKL,CACA,GAAI,KAAK,eAAiB,OAAiB,MAAA,IAAI,MAAM,4BAA4B,EAEjF,MAAMgD,EAAwC,CAC5C,WAAYoE,EACZ,cAAe,KAAK,eACpB,YAAa,KAAK,aAClB,YAAa,KAAK,aAClB,SAAU,KAAK,UACf,QAAS,KAAK,QAAA,EAGhB,OAAKtE,GAAO,EAIAC,EAAqBC,CAAM,EAF9B,CAAE,OAAAA,CAAO,CAGpB,CACF,CCzRgB,SAAAmF,GACd9E,EACA+E,EACAC,EACc,SACR,MAAAC,EAAejF,EAAI,WACtB,QAAQ,EACR,QAAQ,IAAK0D,GAAMA,EAAE,GAAG,EACxB,OAAOtC,EAAAA,SAAS,EAChB,OAAQ8D,GAAMA,EAAE,KAAK,OAAS,iBAAmBA,EAAE,KAAK,SAAS,SAAW,CAAC,EAE1EC,EAAc,CAAA,EACpB,UAAWC,KAAOL,EACL,UAAAM,KAAQD,EAAI,KAAK,SAAU,CAC9B,MAAAE,EAASC,YAAUF,CAAI,EAC7B,UAAWG,KAASP,EACdQ,EAAA,YAAYH,EAAQC,YAAUC,EAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GACvDL,EAAY,KAAKK,CAAK,CAG5B,CAEF,OAAOxF,EAAI,aAAa,CACtB,QAAS,CAAC,GAAG+E,EAAS,GAAGI,CAAW,EACpC,SAAS9C,EAAA2C,GAAA,YAAAA,EAAY,eAAZ,YAAA3C,EAA0B,QACnC,SAASqD,EAAAV,GAAA,YAAAA,EAAY,eAAZ,YAAAU,EAA0B,OAAA,CACpC,CACH,CC7EO,MAAMC,EAA6B,CACxC,YAA6BxF,EAAsB,CAAtB,KAAA,OAAAA,CAAuB,CAEpD,MAAa,YAAYyF,EAA2D,CAClF,OAAO,MAAM,UAAU,aAAa,YAAY,KAAK,OAAQA,CAAO,CACtE,CAEA,MAAa,cAAcC,EAA2C,CACpE,OAAO,MAAM,UAAU,aAAa,cAAc,KAAK,OAAQA,CAAQ,CACzE,CAEA,MAAa,aAA2C,CACtD,OAAO,MAAM,UAAU,aAAa,YAAY,KAAK,MAAM,CAC7D,CAEA,MAAa,mBACXD,EACqC,CACrC,OAAO,MAAM,UAAU,aAAa,mBAAmB,KAAK,OAAQA,CAAO,CAC7E,CAEA,MAAa,gBAAgBA,EAA6D,CACxF,OAAO,MAAM,UAAU,aAAa,gBAAgB,KAAK,OAAQA,CAAO,CAC1E,CACF,CCpCO,SAASE,EAAsClI,EAAgB,CACpE,OAAON,EAAW,CAChB,QAAS,GACT,QAASK,EAAaC,EAAQ,SAAS,EACvC,KAAMD,EAAaC,EAAQ,MAAM,CAAA,CAClC,CACH,CAEO,SAASmI,GAAyCnI,EAAgB,CACvE,OAAON,EAAW,CAChB,IAAKwI,EAAUnI,EAAaC,EAAQ,KAAK,CAAC,EAC1C,MAAOD,EAAaC,EAAQ,OAAO,CAAA,CACpC,CACH,CCTO,MAAMoI,GAA0B,CACrC,WAAYjC,CACd,ECJO,SAASkC,IAAqC,CACnD,OAAOvG,EAAqB,CAC9B,CCJO,SAASwG,GAAoB5C,EAAkC,CACpE,GAAI,OAAO,WAAW,qBAAwB,WACzC,OAAO,WAAW,oBAAoBA,CAAI,CACjD"}
1
+ {"version":3,"file":"index.js","sources":["../src/block_state_util.ts","../src/config/actions.ts","../src/internal.ts","../src/render/future.ts","../src/render/accessor.ts","../src/render/internal.ts","../src/render/api.ts","../src/version.ts","../src/builder.ts","../src/components/PlDataTable.ts","../src/pframe.ts","../src/ref_util.ts","../src/sdk_info.ts","../src/raw_globals.ts","../src/env_value.ts"],"sourcesContent":["import { BlockOutputsBase, ValueOrErrors } from '@milaboratories/pl-model-common';\n\nexport class OutputError extends Error {\n constructor(\n public readonly errors: string[],\n public readonly moreErrors: boolean\n ) {\n super(`${errors.length}${moreErrors ? '+' : ''} errors, first error: ` + errors[0]);\n }\n}\n\nexport function readOutput<T>(outputValue: ValueOrErrors<T>): T {\n if (!outputValue.ok) throw new OutputError(outputValue.errors, outputValue.moreErrors);\n return outputValue.value;\n}\n\ntype ExtractValueType<V extends ValueOrErrors<unknown>> = Extract<V, { ok: true }>['value'];\ntype SimpleOutputs<Outputs extends BlockOutputsBase> = {\n [Key in keyof Outputs]: ExtractValueType<Outputs[Key]>;\n};\n\nexport function wrapOutputs<Outputs extends BlockOutputsBase>(\n outputs: Outputs\n): SimpleOutputs<Outputs> {\n return new Proxy(outputs, {\n get(target, key: string) {\n return readOutput(target[key]);\n }\n }) as SimpleOutputs<Outputs>;\n}\n","import {\n ActGetField,\n ActGetFromCtx,\n ActGetImmediate,\n ActGetResourceField,\n ActGetResourceValueAsJson,\n ActMakeObject,\n ActMapRecordValues,\n ActMapResourceFields,\n ActMapArrayValues,\n ActIsEmpty,\n ActNot,\n ActIsolate,\n ActGetBlobContentAsJson,\n ActGetBlobContentAsString,\n ActGetBlobContent,\n ActAnd,\n ActOr,\n ActMakeArray,\n ActFlatten,\n ActGetDownloadedBlobContent,\n ActGetOnDemandBlobContent,\n ActImportProgress,\n ActGetLastLogs,\n ActGetProgressLog,\n ActGetLogHandle\n} from './actions_kinds';\nimport { ExtractAction, POCExtractAction, PrimitiveOrConfig, TypedConfig } from './type_engine';\nimport { Cfg } from './model';\nimport { CheckedSyncConf } from './type_util';\n\n//\n// Helpers\n//\n\nfunction primitiveToConfig(value: PrimitiveOrConfig): TypedConfig {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n )\n return getImmediate(value);\n else return value as TypedConfig;\n}\n\n//\n// Context\n//\n\nexport function getFromCfg<const V extends string>(variable: V): TypedConfig<ActGetFromCtx<V>> {\n return { type: 'GetFromCtx', variable } as Cfg as any;\n}\n\n//\n// Isolate\n//\n\nexport function isolate<const Config extends TypedConfig>(\n cfg: Config\n): TypedConfig<ActIsolate<ExtractAction<Config>>> {\n return {\n type: 'Isolate',\n cfg\n } as Cfg as any;\n}\n\n//\n// Well-known Context Vars\n//\n\nexport const Args = getFromCfg('$args');\nexport const It = getFromCfg('$it');\nexport const MainOutputs = getFromCfg('$prod');\nexport const StagingOutputs = getFromCfg('$staging');\nexport const UiState = getFromCfg('$ui');\n\n//\n// Json\n//\n\nexport function getImmediate<const T>(value: T): TypedConfig<ActGetImmediate<T>> {\n return { type: 'Immediate', value } as Cfg as any;\n}\n\nexport function makeObject<const T extends Record<string, PrimitiveOrConfig>>(\n template: T\n): TypedConfig<ActMakeObject<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: Record<string, TypedConfig> = {};\n for (const [k, cfg] of Object.entries(template)) normalizedTemplate[k] = primitiveToConfig(cfg);\n return {\n type: 'MakeObject',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function makeArray<const T extends PrimitiveOrConfig[]>(\n ...template: T\n): TypedConfig<ActMakeArray<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: TypedConfig[] = [];\n for (const cfg of template) normalizedTemplate.push(primitiveToConfig(cfg));\n return {\n type: 'MakeArray',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function getJsonField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetJsonField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapRecordValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapArrayValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function flatten<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActFlatten<ExtractAction<Source>>> {\n return {\n type: 'Flatten',\n source\n } as Cfg as any;\n}\n\n//\n// Boolean\n//\n\nexport function isEmpty<const Arg extends TypedConfig>(\n arg: Arg\n): TypedConfig<ActIsEmpty<ExtractAction<Arg>>> {\n return {\n type: 'IsEmpty',\n arg\n } as Cfg as any;\n}\n\nexport function not<const Operand extends TypedConfig>(\n operand: Operand\n): TypedConfig<ActNot<ExtractAction<Operand>>> {\n return {\n type: 'Not',\n operand\n } as Cfg as any;\n}\n\nexport function and<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActAnd<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'And',\n operand1,\n operand2\n } as Cfg as any;\n}\n\nexport function or<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActOr<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'Or',\n operand1,\n operand2\n } as Cfg as any;\n}\n\n//\n// Resources\n//\n\nexport function getResourceField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetResourceField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetResourceField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function getResourceValueAsJson<T>() {\n return function <const Source extends PrimitiveOrConfig>(\n source: Source\n ): TypedConfig<ActGetResourceValueAsJson<POCExtractAction<Source>, T>> {\n return {\n type: 'GetResourceValueAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapResourceFields',\n source,\n mapping,\n itVar\n } as Cfg as TypedConfig<\n ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>\n >;\n}\n\n//\n// Download Blobs\n//\n\nexport function getBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsString<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContentAsString<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContentAsString',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsJson<T>() {\n return function <const Source extends TypedConfig>(\n source: Source\n ): TypedConfig<ActGetBlobContentAsJson<ExtractAction<Source>, T>> {\n return {\n type: 'GetBlobContentAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function getDownloadedBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetDownloadedBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetDownloadedBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getOnDemandBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetOnDemandBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetOnDemandBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Upload Blobs\n//\n\nexport function getImportProgress<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActImportProgress<ExtractAction<Source>>> {\n return {\n type: 'GetImportProgress',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Logs\n//\n\nexport function getLastLogs<const Source extends TypedConfig>(\n source: Source,\n lines: number\n): TypedConfig<ActGetLastLogs<ExtractAction<Source>>> {\n return {\n type: 'GetLastLogs',\n source: primitiveToConfig(source),\n lines\n } as Cfg as any;\n}\n\nexport function getProgressLog<const Source extends TypedConfig>(\n source: Source,\n patternToSearch: string\n): TypedConfig<ActGetProgressLog<ExtractAction<Source>>> {\n return {\n type: 'GetProgressLog',\n source: primitiveToConfig(source),\n patternToSearch\n } as Cfg as any;\n}\n\nexport function getLogHandle<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetLogHandle<ExtractAction<Source>>> {\n return {\n type: 'GetLogHandle',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n","import {} from './global';\nimport { Platforma, PlatformaFactory } from './platforma';\nimport { BlockConfig } from './builder';\nimport { FutureHandle, GlobalCfgRenderCtx } from './render/internal';\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== 'undefined' || typeof globalThis.platforma !== 'undefined'\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance(config?: BlockConfig): Platforma {\n if (config && typeof globalThis.getPlatforma === 'function')\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== 'undefined') return globalThis.platforma;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else throw new Error('Not in config rendering context');\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n","import { FutureAwait, FutureHandle } from './internal';\nimport { registerFutureAwait } from '../internal';\n\nexport class FutureRef<T = unknown> {\n private isResolved = false;\n private resolvedValue?: T;\n\n constructor(\n private readonly handle: FutureHandle,\n private readonly postProcess: (value: unknown) => T = (v) => v as T\n ) {\n registerFutureAwait(handle, (value) => {\n this.resolvedValue = postProcess(value);\n this.isResolved = true;\n });\n }\n\n public map<R>(mapping: (v: T) => R): FutureRef<R> {\n return new FutureRef<R>(this.handle, (v) => mapping(this.postProcess(v)));\n }\n\n public mapDefined<R>(mapping: (v: NonNullable<T>) => R): FutureRef<R | undefined> {\n return new FutureRef<R | undefined>(this.handle, (v) => {\n const vv = this.postProcess(v);\n return vv ? mapping(vv) : undefined;\n });\n }\n\n toJSON(): any {\n return this.isResolved\n ? this.resolvedValue\n : ({ __awaited_futures__: [this.handle] } as FutureAwait);\n }\n}\n\nexport type ExtractFutureRefType<Ref extends FutureRef> =\n Ref extends FutureRef<infer T> ? T : never;\n","import {\n AnyLogHandle,\n ImportProgress,\n LocalBlobHandleAndSize,\n PColumn,\n PObject,\n RemoteBlobHandleAndSize,\n isPColumn,\n mapPObjectData\n} from '@milaboratories/pl-model-common';\nimport { getCfgRenderCtx } from '../internal';\nimport { FutureRef } from './future';\nimport { AccessorHandle } from './internal';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\n\nfunction ifDef<T, R>(value: T | undefined, cb: (value: T) => R): R | undefined {\n return value === undefined ? undefined : cb(value);\n}\n\nfunction wrapBuffer(buf: ArrayBuffer | undefined): Uint8Array | undefined {\n return buf === undefined ? undefined : new Uint8Array(buf);\n}\n\nfunction wrapAccessor(handle: AccessorHandle | undefined): TreeNodeAccessor | undefined {\n return handle === undefined ? undefined : new TreeNodeAccessor(handle);\n}\n\n/** Represent resource tree node accessor */\nexport class TreeNodeAccessor {\n constructor(public readonly handle: AccessorHandle) {}\n\n public resolve(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotAssigned: true;\n }\n ]\n ): TreeNodeAccessor;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined {\n return this.resolveWithCommon({}, ...steps);\n }\n\n public resolveWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().resolveWithCommon(this.handle, commonOptions, ...steps));\n }\n\n public get resourceType(): ResourceType {\n return getCfgRenderCtx().getResourceType(this.handle);\n }\n\n public getInputsLocked(): boolean {\n return getCfgRenderCtx().getInputsLocked(this.handle);\n }\n\n public getOutputsLocked(): boolean {\n return getCfgRenderCtx().getOutputsLocked(this.handle);\n }\n\n public getIsReadyOrError(): boolean {\n return getCfgRenderCtx().getIsReadyOrError(this.handle);\n }\n\n public getIsFinal(): boolean {\n return getCfgRenderCtx().getIsFinal(this.handle);\n }\n\n public getError(): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().getError(this.handle));\n }\n\n public listInputFields(): string[] {\n return getCfgRenderCtx().listInputFields(this.handle);\n }\n\n public listOutputFields(): string[] {\n return getCfgRenderCtx().listOutputFields(this.handle);\n }\n\n public listDynamicFields(): string[] {\n return getCfgRenderCtx().listDynamicFields(this.handle);\n }\n\n public getKeyValueBase64(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueBase64(this.handle, key);\n }\n\n public getKeyValueAsString(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueAsString(this.handle, key);\n }\n\n public getKeyValueAsJson<T>(key: string): T {\n const content = this.getKeyValueAsString(key);\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n public getDataBase64(): string | undefined {\n return getCfgRenderCtx().getDataBase64(this.handle);\n }\n\n public getDataAsString(): string | undefined {\n return getCfgRenderCtx().getDataAsString(this.handle);\n }\n\n public getDataAsJson<T>(): T {\n const content = this.getDataAsString();\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n /**\n *\n */\n public getPColumns(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): PColumn<TreeNodeAccessor>[] | undefined {\n const result = this.parsePObjectCollection(errorOnUnknownField, prefix);\n if (result === undefined) return undefined;\n\n const pf = Object.entries(result).map(([, obj]) => {\n if (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n return obj;\n });\n\n return pf;\n }\n\n /**\n *\n */\n public parsePObjectCollection(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): Record<string, PObject<TreeNodeAccessor>> | undefined {\n const pObjects = getCfgRenderCtx().parsePObjectCollection(\n this.handle,\n errorOnUnknownField,\n prefix\n );\n if (pObjects === undefined) return undefined;\n const result: Record<string, PObject<TreeNodeAccessor>> = {};\n for (const [key, value] of Object.entries(pObjects))\n result[key] = mapPObjectData(value, (c) => new TreeNodeAccessor(c));\n return result;\n }\n\n public getFileContentAsBase64(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsBase64(this.handle));\n }\n\n public getFileContentAsString(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle));\n }\n\n public getFileContentAsJson<T>(): FutureRef<T | undefined> {\n return new FutureRef<string | undefined>(\n getCfgRenderCtx().getBlobContentAsString(this.handle)\n ).mapDefined((v) => JSON.parse(v) as T);\n }\n\n /**\n * @deprecated use getFileContentAsBase64\n */\n public getBlobContentAsBase64(): FutureRef<string | undefined> {\n return this.getFileContentAsBase64();\n }\n\n /**\n * @deprecated use getFileContentAsString\n */\n public getBlobContentAsString(): FutureRef<string | undefined> {\n return this.getFileContentAsString();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getFileHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getDownloadedBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getFileHandle\n */\n public getDownloadedBlobHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return this.getFileHandle();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getRemoteFileHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getOnDemandBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getRemoteFileHandle\n */\n public getOnDemandBlobHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return this.getRemoteFileHandle();\n }\n\n public getImportProgress(): FutureRef<ImportProgress> {\n return new FutureRef(getCfgRenderCtx().getImportProgress(this.handle));\n }\n\n public getLastLogs(nLines: number): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getLastLogs(this.handle, nLines));\n }\n\n public getProgressLog(patternToSearch: string): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getProgressLog(this.handle, patternToSearch));\n }\n\n public getLogHandle(): FutureRef<AnyLogHandle | undefined> {\n return new FutureRef(getCfgRenderCtx().getLogHandle(this.handle));\n }\n}\n","import { Optional } from 'utility-types';\nimport { Branded } from '../branding';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\nimport {\n Option,\n PColumn,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n ResultCollection,\n ValueOrError\n} from '@milaboratories/pl-model-common';\n\nexport const StagingAccessorName = 'staging';\nexport const MainAccessorName = 'main';\n\nexport type AccessorHandle = Branded<string, 'AccessorHandle'>;\nexport type FutureHandle = Branded<string, 'FutureHandle'>;\n\nexport interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = FutureHandle> {\n //\n // Root accessor creation\n //\n\n getAccessorHandleByName(name: string): AHandle | undefined;\n\n //\n // Basic resource accessor actions\n //\n\n resolveWithCommon(\n handle: AHandle,\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): AHandle | undefined;\n\n getResourceType(handle: AHandle): ResourceType;\n\n getInputsLocked(handle: AHandle): boolean;\n\n getOutputsLocked(handle: AHandle): boolean;\n\n getIsReadyOrError(handle: AHandle): boolean;\n\n getIsFinal(handle: AHandle): boolean;\n\n getError(handle: AHandle): AHandle | undefined;\n\n listInputFields(handle: AHandle): string[];\n\n listOutputFields(handle: AHandle): string[];\n\n listDynamicFields(handle: AHandle): string[];\n\n getKeyValueBase64(handle: AHandle, key: string): string | undefined;\n\n getKeyValueAsString(handle: AHandle, key: string): string | undefined;\n\n getDataBase64(handle: AHandle): string | undefined;\n\n getDataAsString(handle: AHandle): string | undefined;\n\n /** If not final returns undefined */\n parsePObjectCollection(\n handle: AHandle,\n errorOnUnknownField: boolean,\n prefix: string\n ): Record<string, PObject<AHandle>> | undefined;\n\n //\n // Blob\n //\n\n getBlobContentAsBase64(handle: AHandle): FHandle; // string | undefined\n\n getBlobContentAsString(handle: AHandle): FHandle; // string | undefined\n\n getDownloadedBlobContentHandle(handle: AHandle): FHandle; // LocalBlobHandleAndSize | undefined;\n\n getOnDemandBlobContentHandle(handle: AHandle): FHandle; // RemoteBlobHandleAndSize | undefined;\n\n //\n // Import progress\n //\n\n getImportProgress(handle: AHandle): FHandle; // ImportProgress;\n\n //\n // Logs\n //\n\n getLastLogs(handle: AHandle, nLines: number): FHandle; // string | undefined;\n\n getProgressLog(handle: AHandle, patternToSearch: string): FHandle; // string | undefined;\n\n getLogHandle(handle: AHandle): FHandle; // AnyLogHandle | undefined;\n\n //\n // Blocks\n //\n\n getBlockLabel(blockId: string): string;\n\n //\n // Result Pool\n //\n\n getDataFromResultPool(): ResultCollection<PObject<AHandle>>;\n\n getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<AHandle, string>>, 'id'>\n >;\n\n getSpecsFromResultPool(): ResultCollection<PObjectSpec>;\n\n calculateOptions(predicate: PSpecPredicate): Option[];\n\n //\n // PFrame / PTable\n //\n\n createPFrame(def: PFrameDef<AHandle>): PFrameHandle;\n\n createPTable(def: PTableDef<PColumn<AHandle>>): PTableHandle;\n}\n\nexport interface GlobalCfgRenderCtx extends GlobalCfgRenderCtxMethods {\n readonly args: string;\n readonly uiState?: string;\n readonly callbackRegistry: Record<string, Function>;\n}\n\nexport type FutureAwait = {\n __awaited_futures__: FutureHandle[];\n};\n\nexport function isFutureAwait(obj: unknown): obj is FutureAwait {\n return typeof obj === 'object' && obj !== null && '__awaited_futures__' in obj;\n}\n\nfunction addAllFutureAwaits(set: Set<string>, visited: Set<unknown>, node: unknown) {\n if (visited.has(node)) return;\n visited.add(node);\n\n const type = typeof node;\n if (type === 'object') {\n if (isFutureAwait(node)) node.__awaited_futures__.forEach((a) => set.add(a));\n else if (Array.isArray(node))\n for (const nested of node) addAllFutureAwaits(set, visited, nested);\n else\n for (const [, nested] of Object.entries(node as object))\n if (nested !== node) addAllFutureAwaits(set, visited, nested);\n }\n}\n\nexport function getAllFutureAwaits(obj: unknown): Set<string> {\n const set = new Set<string>();\n addAllFutureAwaits(set, new Set(), obj);\n return set;\n}\n","import {\n Option,\n PColumn,\n PColumnSpec,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting,\n Ref,\n ResultCollection,\n ValueOrError,\n isPColumnSpec,\n mapPObjectData,\n mapPTableDef,\n mapValueInVOE\n} from '@milaboratories/pl-model-common';\nimport { Optional } from 'utility-types';\nimport { getCfgRenderCtx } from '../internal';\nimport { TreeNodeAccessor } from './accessor';\nimport { FutureRef } from './future';\nimport { GlobalCfgRenderCtx, MainAccessorName, StagingAccessorName } from './internal';\n\nexport class ResultPool {\n private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();\n\n /**\n * @deprecated use getOptions()\n */\n public calculateOptions(predicate: PSpecPredicate): Option[] {\n return this.ctx.calculateOptions(predicate);\n }\n\n private defaultLabelFn = (spec: PObjectSpec, ref: Ref) =>\n spec.annotations?.['pl7.app/label'] ?? `Unlabelled`;\n\n public getOptions(\n predicate: (spec: PObjectSpec) => boolean,\n labelFn: (spec: PObjectSpec, ref: Ref) => string = this.defaultLabelFn\n ): Option[] {\n return this.getSpecs()\n .entries.filter((s) => predicate(s.obj))\n .map((s) => ({\n ref: s.ref,\n label: labelFn(s.obj, s.ref)\n }));\n }\n\n /**\n * @deprecated use getData()\n */\n public getDataFromResultPool(): ResultCollection<PObject<TreeNodeAccessor>> {\n return this.getData();\n }\n\n public getData(): ResultCollection<PObject<TreeNodeAccessor>> {\n const result = this.ctx.getDataFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: new TreeNodeAccessor(e.obj.data)\n }\n }))\n };\n }\n\n /**\n * @deprecated use getDataWithErrors()\n */\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n return this.getDataWithErrors();\n }\n\n public getDataWithErrors(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n const result = this.ctx.getDataWithErrorsFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: mapValueInVOE(e.obj.data, (handle) => new TreeNodeAccessor(handle))\n }\n }))\n };\n }\n\n /**\n * @deprecated use getSpecs()\n */\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n return this.getSpecs();\n }\n\n public getSpecs(): ResultCollection<PObjectSpec> {\n return this.ctx.getSpecsFromResultPool();\n }\n\n /**\n * @param ref a Ref\n * @returns data associated with the ref\n */\n public getDataByRef(ref: Ref): PObject<TreeNodeAccessor> | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getData().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param ref a Ref\n * @returns object spec associated with the ref\n */\n public getSpecByRef(ref: Ref): PObjectSpec | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getSpecs().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param spec object specification\n * @returns array of data objects with compatible specs\n */\n public findDataWithCompatibleSpec(spec: PColumnSpec): PObject<TreeNodeAccessor>[] {\n const result: PObject<TreeNodeAccessor>[] = [];\n\n out: for (const data of this.getData().entries) {\n if (!isPColumnSpec(data.obj.spec)) {\n continue;\n }\n\n const oth = data.obj.spec;\n\n if (spec.name !== oth.name) {\n continue;\n }\n\n if (spec.valueType !== oth.valueType) {\n continue;\n }\n\n if (spec.axesSpec.length !== oth.axesSpec.length) {\n continue;\n }\n\n if (!matchDomain(spec.domain, oth.domain)) {\n continue;\n }\n\n for (let i = 0; i < spec.axesSpec.length; ++i) {\n const qAx = spec.axesSpec[i];\n const tAx = oth.axesSpec[i];\n if (qAx.name !== tAx.name) {\n continue out;\n }\n if (qAx.type !== tAx.type) {\n continue out;\n }\n if (!matchDomain(qAx.domain, tAx.domain)) {\n continue out;\n }\n }\n\n result.push(data.obj);\n }\n return result;\n }\n}\n\nfunction matchDomain(query?: Record<string, string>, target?: Record<string, string>) {\n if (query === undefined) return target === undefined;\n if (target === undefined) return true;\n for (const k in target) {\n if (query[k] !== target[k]) return false;\n }\n return true;\n}\n\nexport class RenderCtx<Args, UiState> {\n private readonly ctx: GlobalCfgRenderCtx;\n\n public readonly args: Args;\n public readonly uiState: UiState | undefined;\n\n constructor() {\n this.ctx = getCfgRenderCtx();\n this.args = JSON.parse(this.ctx.args);\n this.uiState = this.ctx.uiState !== undefined ? JSON.parse(this.ctx.uiState) : undefined;\n }\n\n private getNamedAccessor(name: string): TreeNodeAccessor | undefined {\n const accessorId = this.ctx.getAccessorHandleByName(name);\n return accessorId ? new TreeNodeAccessor(accessorId) : undefined;\n }\n\n public get prerun(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(StagingAccessorName);\n }\n\n /**\n * @deprecated use prerun\n */\n public get precalc(): TreeNodeAccessor | undefined {\n return this.prerun;\n }\n\n /**\n * @deprecated use prerun\n */\n public get stagingOutput(): TreeNodeAccessor | undefined {\n return this.precalc;\n }\n\n public get outputs(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(MainAccessorName);\n }\n\n /**\n * @deprecated use outputs\n */\n public get mainOutput(): TreeNodeAccessor | undefined {\n return this.outputs;\n }\n\n public readonly resultPool = new ResultPool();\n\n public createPFrame(def: PFrameDef<TreeNodeAccessor>): PFrameHandle {\n return this.ctx.createPFrame(def.map((c) => mapPObjectData(c, (d) => d.handle)));\n }\n\n public createPTable(def: PTableDef<PColumn<TreeNodeAccessor>>): PTableHandle;\n public createPTable(def: {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }): PTableHandle;\n public createPTable(\n def:\n | PTableDef<PColumn<TreeNodeAccessor>>\n | {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }\n ): PTableHandle {\n var rawDef: PTableDef<PColumn<TreeNodeAccessor>>;\n if ('columns' in def) {\n rawDef = {\n src: {\n type: 'inner',\n entries: def.columns.map((c) => ({ type: 'column', column: c }))\n },\n filters: def.filters ?? [],\n sorting: def.sorting ?? []\n };\n } else {\n rawDef = def;\n }\n return this.ctx.createPTable(mapPTableDef(rawDef, (po) => mapPObjectData(po, (d) => d.handle)));\n }\n\n public getBlockLabel(blockId: string): string {\n return this.ctx.getBlockLabel(blockId);\n }\n}\n\nexport type RenderFunction<Args = unknown, UiState = unknown, Ret = unknown> = (\n rCtx: RenderCtx<Args, UiState>\n) => Ret;\n\nexport type UnwrapFutureRef<K> =\n K extends FutureRef<infer T>\n ? T\n : K extends bigint | boolean | null | number | string | symbol | undefined\n ? K\n : { [key in keyof K]: UnwrapFutureRef<K[key]> };\n\nexport type InferRenderFunctionReturn<RF extends Function> = RF extends (...args: any) => infer R\n ? UnwrapFutureRef<R>\n : never;\n","export const PlatformaSDKVersion = '1.8.19';\n","import { BlockRenderingMode, BlockSection, ValueOrErrors } from '@milaboratories/pl-model-common';\nimport { Checked, ConfigResult, getImmediate, PlResourceEntry, TypedConfig } from './config';\nimport { getPlatformaInstance, isInUI, tryRegisterCallback } from './internal';\nimport { Platforma } from './platforma';\nimport { InferRenderFunctionReturn, RenderCtx, RenderFunction } from './render';\nimport { PlatformaSDKVersion } from './version';\n\ntype StdCtxArgsOnly<Args, UiState = undefined> = {\n readonly $blockId: string;\n readonly $args: Args;\n readonly $ui: UiState;\n};\n\nexport type StdCtx<Args, UiState = undefined> = StdCtxArgsOnly<Args, UiState> & {\n readonly $prod: PlResourceEntry;\n readonly $staging: PlResourceEntry;\n};\n\nexport type ResolveCfgType<Cfg extends TypedConfig, Args, UiState = undefined> = ConfigResult<\n Cfg,\n StdCtx<Args, UiState>\n>;\n\ntype SectionsExpectedType = readonly BlockSection[];\n\ntype SectionsCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends SectionsExpectedType ? true : false\n>;\n\ntype SectionsRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends SectionsExpectedType ? true : false\n>;\n\ntype InputsValidExpectedType = boolean;\n\ntype InputsValidCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends InputsValidExpectedType ? true : false\n>;\n\ntype InputsValidRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends InputsValidExpectedType ? true : false\n>;\n\nexport type Code = {\n type: 'plain';\n content: string;\n};\n\n/** Field key to attach ConfAction information to a config type. */\ndeclare const __function_handle__: unique symbol;\n\n/** Creates branded Cfg type */\nexport type FunctionHandle<Return = unknown> = string & { [__function_handle__]: Return };\n\nexport type ExtractFunctionHandleReturn<Func extends FunctionHandle> =\n Func[typeof __function_handle__];\n\nexport type TypedConfigOrFunctionHandle = TypedConfig | FunctionHandle;\n\nexport function isFunctionHandle(cfgOrFh: TypedConfigOrFunctionHandle): cfgOrFh is FunctionHandle {\n return typeof cfgOrFh === 'string';\n}\n\ntype OnlyString<S> = S extends string ? S : '';\n\n// prettier-ignore\nexport type DeriveHref<S> = S extends readonly BlockSection[]\n ? OnlyString<Extract<S[number], { type: 'link' }>['href']>\n : never;\n\n/** This structure is rendered from the configuration, type can accommodate any\n * version of config structure. */\nexport type BlockConfigUniversal<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = {\n /** SDK version used by the block */\n readonly sdkVersion: string;\n\n /** Main rendering mode for the block */\n readonly renderingMode: BlockRenderingMode;\n\n /** Initial value for the args when block is added to the project */\n readonly initialArgs: Args;\n\n /** @deprecated */\n readonly canRun?: TypedConfigOrFunctionHandle;\n\n /**\n * Config to determine whether the block can be executed with current\n * arguments.\n *\n * Optional to support earlier SDK version configs.\n * */\n readonly inputsValid?: TypedConfigOrFunctionHandle;\n\n /** Configuration to derive list of section for the left overview panel */\n readonly sections: TypedConfigOrFunctionHandle;\n\n /** Configuration for the output cells */\n readonly outputs: Outputs;\n\n /** Config code bundle */\n readonly code?: Code;\n};\n\n/** This structure is rendered from the configuration */\nexport type BlockConfig<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = Required<Omit<BlockConfigUniversal<Args, Outputs>, 'canRun' | 'code'>> &\n Pick<BlockConfigUniversal<Args, Outputs>, 'code'>;\n\n/** Takes universal config, and converts it into latest structure */\nexport function normalizeBlockConfig<\n Args,\n Outputs extends Record<string, TypedConfigOrFunctionHandle>\n>(cfg: BlockConfigUniversal<Args, Outputs>): BlockConfig<Args, Outputs> {\n if (cfg.inputsValid !== undefined) return cfg as BlockConfig<Args, Outputs>;\n else {\n if (cfg.canRun === undefined)\n throw new Error(`Malformed config, SDK version ${cfg.sdkVersion}`);\n const latest = { ...cfg, inputsValid: cfg.canRun };\n delete latest['canRun'];\n return latest;\n }\n}\n\n/** Main entry point that each block should use in it's \"config\" module. Don't forget\n * to call {@link done()} at the end of configuration. Value returned by this builder must be\n * exported as constant with name \"platforma\" from the \"config\" module. */\nexport class BlockModel<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState,\n Href extends `/${string}` = '/'\n> {\n private constructor(\n private readonly _renderingMode: BlockRenderingMode,\n private readonly _initialArgs: Args | undefined,\n private readonly _outputs: OutputsCfg,\n private readonly _inputsValid: TypedConfigOrFunctionHandle,\n private readonly _sections: TypedConfigOrFunctionHandle\n ) { }\n\n /** Initiates configuration builder */\n public static create<Args, UiState = undefined>(\n renderingMode: BlockRenderingMode = 'Heavy'\n ): BlockModel<Args, {}, UiState> {\n return new BlockModel<Args, {}, UiState>(\n renderingMode,\n undefined,\n {},\n getImmediate(true),\n getImmediate([])\n );\n }\n\n /**\n * Add output cell to the configuration\n *\n * @param key cell name, that can be used to retrieve the rendered value\n * @param cfg configuration describing how to render cell value from the blocks\n * workflow outputs\n * */\n public output<const Key extends string, const Cfg extends TypedConfig>(\n key: Key,\n cfg: Cfg\n ): BlockModel<Args, OutputsCfg & { [K in Key]: Cfg }, UiState, Href>;\n public output<const Key extends string, const RF extends RenderFunction<Args, UiState>>(\n key: Key,\n rf: RF\n ): BlockModel<\n Args,\n OutputsCfg & { [K in Key]: FunctionHandle<InferRenderFunctionReturn<RF>> },\n UiState,\n Href\n >;\n public output(\n key: string,\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n if (typeof cfgOrRf === 'function') {\n const functionHandle = `output#${key}` as FunctionHandle;\n tryRegisterCallback(functionHandle, () => cfgOrRf(new RenderCtx()));\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: functionHandle\n },\n this._inputsValid,\n this._sections\n );\n } else\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: cfgOrRf\n },\n this._inputsValid,\n this._sections\n );\n }\n\n /** @deprecated */\n public canRun<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n return this.inputsValid(cfg as any);\n }\n\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public argsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (typeof cfgOrRf === 'function') {\n tryRegisterCallback('inputsValid', () => cfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n 'inputsValid' as FunctionHandle,\n this._sections\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n cfgOrRf,\n this._sections\n );\n }\n\n /** @deprecated use argsValid() */\n public inputsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** @deprecated use argsValid() */\n public inputsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public inputsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n return this.argsValid(cfgOrRf as any);\n }\n\n /** Sets the config to generate list of section in the left block overviews panel */\n public sections<const S extends SectionsExpectedType,>(rf: S): BlockModel<Args, OutputsCfg, UiState, DeriveHref<S>>;\n public sections<\n const Ret extends SectionsExpectedType,\n const RF extends RenderFunction<Args, UiState, Ret>\n >(rf: RF): BlockModel<Args, OutputsCfg, UiState, DeriveHref<ReturnType<RF>>>;\n public sections<const Cfg extends TypedConfig>(\n cfg: Cfg & SectionsCfgChecked<Cfg, Args, UiState>\n ): BlockModel<\n Args,\n OutputsCfg,\n UiState,\n DeriveHref<ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>>>\n >;\n public sections(\n arrOrCfgOrRf: SectionsExpectedType | TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (Array.isArray(arrOrCfgOrRf)){\n return this.sections(getImmediate(arrOrCfgOrRf))\n } else if (typeof arrOrCfgOrRf === 'function') {\n tryRegisterCallback('sections', () => arrOrCfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n 'sections' as FunctionHandle\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n arrOrCfgOrRf as TypedConfig\n );\n }\n\n\n /** Sets initial args for the block, this value must be specified. */\n public initialArgs(value: Args): BlockModel<Args, OutputsCfg, UiState, Href> {\n return new BlockModel<Args, OutputsCfg, UiState, Href>(\n this._renderingMode,\n value,\n this._outputs,\n this._inputsValid,\n this._sections\n );\n }\n\n /** Renders all provided block settings into a pre-configured platforma API\n * instance, that can be used in frontend to interact with block state, and\n * other features provided by the platforma to the block. */\n public done(): Platforma<\n Args,\n InferOutputsFromConfigs<Args, OutputsCfg, UiState>,\n UiState,\n Href\n > {\n if (this._initialArgs === undefined) throw new Error('Initial arguments not set.');\n\n const config: BlockConfig<Args, OutputsCfg> = {\n sdkVersion: PlatformaSDKVersion,\n renderingMode: this._renderingMode,\n initialArgs: this._initialArgs,\n inputsValid: this._inputsValid,\n sections: this._sections,\n outputs: this._outputs\n };\n\n if (!isInUI())\n // we are in the configuration rendering routine, not in actual UI\n return { config } as any;\n // normal operation inside the UI\n else return getPlatformaInstance(config) as any;\n }\n}\n\nexport type InferOutputType<CfgOrFH, Args, UiState> = CfgOrFH extends TypedConfig\n ? ResolveCfgType<CfgOrFH, Args, UiState>\n : CfgOrFH extends FunctionHandle\n ? ExtractFunctionHandleReturn<CfgOrFH>\n : never;\n\ntype InferOutputsFromConfigs<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState\n> = {\n [Key in keyof OutputsCfg]: ValueOrErrors<InferOutputType<OutputsCfg[Key], Args, UiState>>;\n};\n","import {\n getAxisId,\n isPColumn,\n JoinEntry,\n matchAxisId,\n PColumn,\n PColumnIdAndSpec,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting\n} from '@milaboratories/pl-model-common';\nimport { RenderCtx, TreeNodeAccessor } from '../render';\n\n/** Data table state */\nexport type PlDataTableGridState = {\n /** Includes column ordering */\n columnOrder?: {\n /** All colIds in order */\n orderedColIds: string[];\n };\n /** Includes current sort columns and direction */\n sort?: {\n /** Sorted columns and directions in order */\n sortModel: {\n /** Column Id to apply the sort to. */\n colId: string;\n /** Sort direction */\n sort: 'asc' | 'desc';\n }[];\n };\n columnVisibility?: {\n hiddenColIds: string[];\n };\n\n /** current sheet selections */\n sheets?: Record<string, string | number>;\n};\n\n/**\n * Params used to get p-table handle from the driver\n */\nexport type PTableParams = {\n /** For sourceType: 'pframe' the join is original one, enriched with label columns */\n join?: JoinEntry<PColumnIdAndSpec>;\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n};\n\n/**\n * PlDataTable persisted state\n */\nexport type PlDataTableState = {\n // internal ag-grid state\n gridState: PlDataTableGridState;\n\n // mapping of gridState onto the p-table data structures\n pTableParams?: PTableParams;\n};\n\n/**\n * Create p-table handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns\n */\nexport function createPlDataTable<A, U>(\n ctx: RenderCtx<A, U>,\n columns: PColumn<TreeNodeAccessor>[],\n tableState?: PlDataTableState\n): PTableHandle {\n const allLabelCols = ctx.resultPool\n .getData()\n .entries.map((d) => d.obj)\n .filter(isPColumn)\n .filter((p) => p.spec.name === 'pl7.app/label' && p.spec.axesSpec.length === 1);\n\n const moreColumns = [];\n for (const col of columns) {\n for (const axis of col.spec.axesSpec) {\n const axisId = getAxisId(axis);\n for (const match of allLabelCols) {\n if (matchAxisId(axisId, getAxisId(match.spec.axesSpec[0]))) {\n moreColumns.push(match);\n }\n }\n }\n }\n return ctx.createPTable({\n columns: [...columns, ...moreColumns],\n filters: tableState?.pTableParams?.filters,\n sorting: tableState?.pTableParams?.sorting\n });\n}\n","import {\n CalculateTableDataRequest,\n CalculateTableDataResponse,\n FindColumnsRequest,\n FindColumnsResponse,\n PColumnIdAndSpec,\n PColumnSpec,\n PFrame,\n PFrameHandle,\n PObjectId,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\n\nexport class PFrameImpl implements PFrame {\n constructor(private readonly handle: PFrameHandle) {}\n\n public async findColumns(request: FindColumnsRequest): Promise<FindColumnsResponse> {\n return await platforma.pFrameDriver.findColumns(this.handle, request);\n }\n\n public async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n return await platforma.pFrameDriver.getColumnSpec(this.handle, columnId);\n }\n\n public async listColumns(): Promise<PColumnIdAndSpec[]> {\n return await platforma.pFrameDriver.listColumns(this.handle);\n }\n\n public async calculateTableData(\n request: CalculateTableDataRequest<PObjectId>\n ): Promise<CalculateTableDataResponse> {\n return await platforma.pFrameDriver.calculateTableData(this.handle, request);\n }\n\n public async getUniqueValues(request: UniqueValuesRequest): Promise<UniqueValuesResponse> {\n return await platforma.pFrameDriver.getUniqueValues(this.handle, request);\n }\n}\n","import { getJsonField, makeObject, TypedConfig } from './config';\n\nexport function fromPlRef<Source extends TypedConfig>(source: Source) {\n return makeObject({\n __isRef: true,\n blockId: getJsonField(source, 'blockId'),\n name: getJsonField(source, 'name')\n });\n}\n\nexport function fromPlOption<Source extends TypedConfig>(source: Source) {\n return makeObject({\n ref: fromPlRef(getJsonField(source, 'ref')),\n label: getJsonField(source, 'label')\n });\n}\n","import { PlatformaSDKVersion } from './version';\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion\n};\n","import {} from './global';\nimport { getPlatformaInstance } from './internal';\nimport { Platforma } from './platforma';\n\nexport function getRawPlatformaInstance(): Platforma {\n return getPlatformaInstance();\n}\n","import {} from './global';\n\nexport function getEnvironmentValue(name: string): string | undefined {\n if (typeof globalThis.getEnvironmentValue !== 'function') return undefined;\n else return globalThis.getEnvironmentValue(name);\n}\n"],"names":["OutputError","errors","moreErrors","readOutput","outputValue","wrapOutputs","outputs","target","key","primitiveToConfig","value","getImmediate","getFromCfg","variable","isolate","cfg","Args","It","MainOutputs","StagingOutputs","UiState","makeObject","template","normalizedTemplate","k","makeArray","getJsonField","source","field","mapRecordValues","mapping","itVar","mapArrayValues","flatten","isEmpty","arg","not","operand","and","operand1","operand2","or","getResourceField","getResourceValueAsJson","mapResourceFields","getBlobContent","getBlobContentAsString","getBlobContentAsJson","getDownloadedBlobContent","getOnDemandBlobContent","getImportProgress","getLastLogs","lines","getProgressLog","patternToSearch","getLogHandle","isInUI","getPlatformaInstance","config","tryGetCfgRenderCtx","getCfgRenderCtx","tryRegisterCallback","callback","ctx","futureResolves","registerFutureAwait","handle","onResolve","res","FutureRef","postProcess","v","__publicField","vv","wrapAccessor","TreeNodeAccessor","steps","commonOptions","content","errorOnUnknownField","prefix","result","obj","isPColumn","pObjects","mapPObjectData","nLines","StagingAccessorName","MainAccessorName","isFutureAwait","addAllFutureAwaits","set","visited","node","a","nested","getAllFutureAwaits","ResultPool","spec","ref","_a","predicate","labelFn","s","e","mapValueInVOE","f","out","data","isPColumnSpec","oth","matchDomain","i","qAx","tAx","query","RenderCtx","name","accessorId","def","c","d","rawDef","mapPTableDef","po","blockId","PlatformaSDKVersion","isFunctionHandle","cfgOrFh","normalizeBlockConfig","latest","BlockModel","_renderingMode","_initialArgs","_outputs","_inputsValid","_sections","renderingMode","cfgOrRf","functionHandle","arrOrCfgOrRf","createPlDataTable","columns","tableState","allLabelCols","p","moreColumns","col","axis","axisId","getAxisId","match","matchAxisId","_b","PFrameImpl","request","columnId","fromPlRef","fromPlOption","CurrentSdkInfo","getRawPlatformaInstance","getEnvironmentValue"],"mappings":"uSAEO,MAAMA,UAAoB,KAAM,CACrC,YACkBC,EACAC,EAChB,CACM,MAAA,GAAGD,EAAO,MAAM,GAAGC,EAAa,IAAM,EAAE,yBAA2BD,EAAO,CAAC,CAAC,EAHlE,KAAA,OAAAA,EACA,KAAA,WAAAC,CAGlB,CACF,CAEO,SAASC,EAAcC,EAAkC,CAC1D,GAAA,CAACA,EAAY,GAAI,MAAM,IAAIJ,EAAYI,EAAY,OAAQA,EAAY,UAAU,EACrF,OAAOA,EAAY,KACrB,CAOO,SAASC,EACdC,EACwB,CACjB,OAAA,IAAI,MAAMA,EAAS,CACxB,IAAIC,EAAQC,EAAa,CAChB,OAAAL,EAAWI,EAAOC,CAAG,CAAC,CAC/B,CAAA,CACD,CACH,CCMA,SAASC,EAAkBC,EAAuC,CAE9D,OAAA,OAAOA,GAAU,UACjB,OAAOA,GAAU,UACjB,OAAOA,GAAU,WACjBA,IAAU,KAEHC,EAAaD,CAAK,EACfA,CACd,CAMO,SAASE,EAAmCC,EAA4C,CACtF,MAAA,CAAE,KAAM,aAAc,SAAAA,EAC/B,CAMO,SAASC,EACdC,EACgD,CACzC,MAAA,CACL,KAAM,UACN,IAAAA,CAAA,CAEJ,CAMa,MAAAC,EAAOJ,EAAW,OAAO,EACzBK,EAAKL,EAAW,KAAK,EACrBM,EAAcN,EAAW,OAAO,EAChCO,EAAiBP,EAAW,UAAU,EACtCQ,EAAUR,EAAW,KAAK,EAMhC,SAASD,EAAsBD,EAA2C,CACxE,MAAA,CAAE,KAAM,YAAa,MAAAA,EAC9B,CAEO,SAASW,EACdC,EAC4E,CAC5E,MAAMC,EAAkD,CAAA,EACxD,SAAW,CAACC,EAAGT,CAAG,IAAK,OAAO,QAAQO,CAAQ,EAAsBC,EAAAC,CAAC,EAAIf,EAAkBM,CAAG,EACvF,MAAA,CACL,KAAM,aACN,SAAUQ,CAAA,CAEd,CAEO,SAASE,KACXH,EACwE,CAC3E,MAAMC,EAAoC,CAAA,EAC1C,UAAWR,KAAOO,EAAUC,EAAmB,KAAKd,EAAkBM,CAAG,CAAC,EACnE,MAAA,CACL,KAAM,YACN,SAAUQ,CAAA,CAEd,CAEgB,SAAAG,EAIdC,EACAC,EAC6E,CACtE,MAAA,CACL,KAAM,eACN,OAAQnB,EAAkBkB,CAAM,EAChC,MAAOlB,EAAkBmB,CAAK,CAAA,CAElC,CAkCO,SAASC,EAKdF,EACAG,EACAC,EAAe,MACwE,CAChF,MAAA,CACL,KAAM,kBACN,OAAAJ,EACA,QAAAG,EACA,MAAAC,CAAA,CAEJ,CA4BO,SAASC,EAKdL,EACAG,EACAC,EAAe,MACuE,CAC/E,MAAA,CACL,KAAM,iBACN,OAAAJ,EACA,QAAAG,EACA,MAAAC,CAAA,CAEJ,CAEO,SAASE,EACdN,EACgD,CACzC,MAAA,CACL,KAAM,UACN,OAAAA,CAAA,CAEJ,CAMO,SAASO,EACdC,EAC6C,CACtC,MAAA,CACL,KAAM,UACN,IAAAA,CAAA,CAEJ,CAEO,SAASC,EACdC,EAC6C,CACtC,MAAA,CACL,KAAM,MACN,QAAAA,CAAA,CAEJ,CAEgB,SAAAC,EACdC,EACAC,EACuE,CAChE,MAAA,CACL,KAAM,MACN,SAAAD,EACA,SAAAC,CAAA,CAEJ,CAEgB,SAAAC,EACdF,EACAC,EACsE,CAC/D,MAAA,CACL,KAAM,KACN,SAAAD,EACA,SAAAC,CAAA,CAEJ,CAMgB,SAAAE,GAIdf,EACAC,EACqF,CAC9E,MAAA,CACL,KAAM,mBACN,OAAQnB,EAAkBkB,CAAM,EAChC,MAAOlB,EAAkBmB,CAAK,CAAA,CAElC,CAEO,SAASe,IAA4B,CAC1C,OAAO,SACLhB,EACqE,CAC9D,MAAA,CACL,KAAM,yBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAClC,CAEJ,CAkBO,SAASiB,GAKdjB,EACAG,EACAC,EAAe,MAC0E,CAClF,MAAA,CACL,KAAM,oBACN,OAAAJ,EACA,QAAAG,EACA,MAAAC,CAAA,CAIJ,CAMO,SAASc,GACdlB,EACuD,CAChD,MAAA,CACL,KAAM,iBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAEO,SAASmB,GACdnB,EAC+D,CACxD,MAAA,CACL,KAAM,yBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAEO,SAASoB,IAA0B,CACxC,OAAO,SACLpB,EACgE,CACzD,MAAA,CACL,KAAM,uBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAClC,CAEJ,CAEO,SAASqB,GACdrB,EACiE,CAC1D,MAAA,CACL,KAAM,2BACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAEO,SAASsB,GACdtB,EAC+D,CACxD,MAAA,CACL,KAAM,yBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAMO,SAASuB,GACdvB,EACuD,CAChD,MAAA,CACL,KAAM,oBACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CAMgB,SAAAwB,GACdxB,EACAyB,EACoD,CAC7C,MAAA,CACL,KAAM,cACN,OAAQ3C,EAAkBkB,CAAM,EAChC,MAAAyB,CAAA,CAEJ,CAEgB,SAAAC,GACd1B,EACA2B,EACuD,CAChD,MAAA,CACL,KAAM,iBACN,OAAQ7C,EAAkBkB,CAAM,EAChC,gBAAA2B,CAAA,CAEJ,CAEO,SAASC,GACd5B,EACqD,CAC9C,MAAA,CACL,KAAM,eACN,OAAQlB,EAAkBkB,CAAM,CAAA,CAEpC,CCraO,SAAS6B,IAAS,CACvB,OACE,OAAO,WAAW,aAAiB,KAAe,OAAO,WAAW,UAAc,GAEtF,CAGO,SAASC,EAAqBC,EAAiC,CAChE,GAAAA,GAAU,OAAO,WAAW,cAAiB,WACxC,OAAA,WAAW,aAAaA,CAAM,EAAA,GAC9B,OAAO,WAAW,UAAc,WAAoB,WAAW,UACnE,MAAM,IAAI,MAAM,+BAA+B,CACtD,CAEO,SAASC,IAAqD,CACnE,GAAI,OAAO,WAAW,aAAiB,WAAoB,WAAW,YAExE,CAEO,SAASC,GAAsC,CACpD,GAAI,OAAO,WAAW,aAAiB,WAAoB,WAAW,aACjE,MAAM,IAAI,MAAM,iCAAiC,CACxD,CAEgB,SAAAC,EAAoBrD,EAAasD,EAA4C,CAC3F,MAAMC,EAAMJ,KACR,GAAAI,IAAQ,OAAkB,MAAA,GAC1B,GAAAvD,KAAOuD,EAAI,iBAAkB,MAAM,IAAI,MAAM,qBAAqBvD,CAAG,sBAAsB,EAC3F,OAAAuD,EAAA,iBAAiBvD,CAAG,EAAIsD,EACrB,EACT,CAEA,MAAME,MAAqB,IAEX,SAAAC,GAAoBC,EAAsBC,EAAqC,CACvFD,KAAUN,EAAgB,EAAE,mBAChCA,EAAkB,EAAA,iBAAiBM,CAAM,EAAKxD,GAAmB,CAC/D,UAAW0D,KAAOJ,EAAe,IAAIE,CAAM,EACzCE,EAAI1D,CAAK,CACX,EAEasD,EAAA,IAAIE,EAAQ,CAAA,CAAE,GAE/BF,EAAe,IAAIE,CAAM,EAAG,KAAKC,CAAS,CAC5C,CC/CO,MAAME,CAAuB,CAIlC,YACmBH,EACAI,EAAsCC,GAAMA,EAC7D,CANMC,EAAA,kBAAa,IACbA,EAAA,sBAGW,KAAA,OAAAN,EACA,KAAA,YAAAI,EAEGL,GAAAC,EAASxD,GAAU,CAChC,KAAA,cAAgB4D,EAAY5D,CAAK,EACtC,KAAK,WAAa,EAAA,CACnB,CACH,CAEO,IAAOoB,EAAoC,CACzC,OAAA,IAAIuC,EAAa,KAAK,OAASE,GAAMzC,EAAQ,KAAK,YAAYyC,CAAC,CAAC,CAAC,CAC1E,CAEO,WAAczC,EAA6D,CAChF,OAAO,IAAIuC,EAAyB,KAAK,OAASE,GAAM,CAChD,MAAAE,EAAK,KAAK,YAAYF,CAAC,EACtB,OAAAE,EAAK3C,EAAQ2C,CAAE,EAAI,MAAA,CAC3B,CACH,CAEA,QAAc,CACL,OAAA,KAAK,WACR,KAAK,cACJ,CAAE,oBAAqB,CAAC,KAAK,MAAM,EAC1C,CACF,CCVA,SAASC,EAAaR,EAAkE,CACtF,OAAOA,IAAW,OAAY,OAAY,IAAIS,EAAiBT,CAAM,CACvE,CAGO,MAAMS,CAAiB,CAC5B,YAA4BT,EAAwB,CAAxB,KAAA,OAAAA,CAAyB,CAU9C,WAAWU,EAAsE,CACtF,OAAO,KAAK,kBAAkB,GAAI,GAAGA,CAAK,CAC5C,CAEO,kBACLC,KACGD,EAC2B,CACvB,OAAAF,EAAad,EAAkB,EAAA,kBAAkB,KAAK,OAAQiB,EAAe,GAAGD,CAAK,CAAC,CAC/F,CAEA,IAAW,cAA6B,CACtC,OAAOhB,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,iBAA2B,CAChC,OAAOA,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,kBAA4B,CACjC,OAAOA,EAAgB,EAAE,iBAAiB,KAAK,MAAM,CACvD,CAEO,mBAA6B,CAClC,OAAOA,EAAgB,EAAE,kBAAkB,KAAK,MAAM,CACxD,CAEO,YAAsB,CAC3B,OAAOA,EAAgB,EAAE,WAAW,KAAK,MAAM,CACjD,CAEO,UAAyC,CAC9C,OAAOc,EAAad,EAAgB,EAAE,SAAS,KAAK,MAAM,CAAC,CAC7D,CAEO,iBAA4B,CACjC,OAAOA,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,kBAA6B,CAClC,OAAOA,EAAgB,EAAE,iBAAiB,KAAK,MAAM,CACvD,CAEO,mBAA8B,CACnC,OAAOA,EAAgB,EAAE,kBAAkB,KAAK,MAAM,CACxD,CAEO,kBAAkBpD,EAAiC,CACxD,OAAOoD,EAAgB,EAAE,kBAAkB,KAAK,OAAQpD,CAAG,CAC7D,CAEO,oBAAoBA,EAAiC,CAC1D,OAAOoD,EAAgB,EAAE,oBAAoB,KAAK,OAAQpD,CAAG,CAC/D,CAEO,kBAAqBA,EAAgB,CACpC,MAAAsE,EAAU,KAAK,oBAAoBtE,CAAG,EAC5C,GAAIsE,GAAW,KAAiB,MAAA,IAAI,MAAM,0BAA0B,EAC7D,OAAA,KAAK,MAAMA,CAAO,CAC3B,CAEO,eAAoC,CACzC,OAAOlB,EAAgB,EAAE,cAAc,KAAK,MAAM,CACpD,CAEO,iBAAsC,CAC3C,OAAOA,EAAgB,EAAE,gBAAgB,KAAK,MAAM,CACtD,CAEO,eAAsB,CACrB,MAAAkB,EAAU,KAAK,kBACrB,GAAIA,GAAW,KAAiB,MAAA,IAAI,MAAM,0BAA0B,EAC7D,OAAA,KAAK,MAAMA,CAAO,CAC3B,CAKO,YACLC,EAA+B,GAC/BC,EAAiB,GACwB,CACzC,MAAMC,EAAS,KAAK,uBAAuBF,EAAqBC,CAAM,EAClE,OAAAC,IAAW,OAAkB,OAEtB,OAAO,QAAQA,CAAM,EAAE,IAAI,CAAC,CAAG,CAAAC,CAAG,IAAM,CAC7C,GAAA,CAACC,EAAU,UAAAD,CAAG,EAAG,MAAM,IAAI,MAAM,yBAAyBA,EAAI,KAAK,IAAI,GAAG,EACvE,OAAAA,CAAA,CACR,CAGH,CAKO,uBACLH,EAA+B,GAC/BC,EAAiB,GACsC,CACjD,MAAAI,EAAWxB,IAAkB,uBACjC,KAAK,OACLmB,EACAC,CAAA,EAEE,GAAAI,IAAa,OAAkB,OACnC,MAAMH,EAAoD,CAAA,EAC1D,SAAW,CAACzE,EAAKE,CAAK,IAAK,OAAO,QAAQ0E,CAAQ,EACzCH,EAAAzE,CAAG,EAAI6E,EAAAA,eAAe3E,EAAQ,GAAM,IAAIiE,EAAiB,CAAC,CAAC,EAC7D,OAAAM,CACT,CAEO,wBAAwD,CAC7D,OAAO,IAAIZ,EAAUT,IAAkB,uBAAuB,KAAK,MAAM,CAAC,CAC5E,CAEO,wBAAwD,CAC7D,OAAO,IAAIS,EAAUT,IAAkB,uBAAuB,KAAK,MAAM,CAAC,CAC5E,CAEO,sBAAoD,CACzD,OAAO,IAAIS,EACTT,IAAkB,uBAAuB,KAAK,MAAM,CAAA,EACpD,WAAYW,GAAM,KAAK,MAAMA,CAAC,CAAM,CACxC,CAKO,wBAAwD,CAC7D,OAAO,KAAK,wBACd,CAKO,wBAAwD,CAC7D,OAAO,KAAK,wBACd,CAKO,eAA+D,CACpE,OAAO,IAAIF,EAAUT,IAAkB,+BAA+B,KAAK,MAAM,CAAC,CACpF,CAKO,yBAAyE,CAC9E,OAAO,KAAK,eACd,CAKO,qBAAsE,CAC3E,OAAO,IAAIS,EAAUT,IAAkB,6BAA6B,KAAK,MAAM,CAAC,CAClF,CAKO,uBAAwE,CAC7E,OAAO,KAAK,qBACd,CAEO,mBAA+C,CACpD,OAAO,IAAIS,EAAUT,IAAkB,kBAAkB,KAAK,MAAM,CAAC,CACvE,CAEO,YAAY0B,EAA+C,CACzD,OAAA,IAAIjB,EAAUT,IAAkB,YAAY,KAAK,OAAQ0B,CAAM,CAAC,CACzE,CAEO,eAAehC,EAAwD,CACrE,OAAA,IAAIe,EAAUT,IAAkB,eAAe,KAAK,OAAQN,CAAe,CAAC,CACrF,CAEO,cAAoD,CACzD,OAAO,IAAIe,EAAUT,IAAkB,aAAa,KAAK,MAAM,CAAC,CAClE,CACF,CC7MO,MAAM2B,EAAsB,UACtBC,EAAmB,OA0HzB,SAASC,EAAcP,EAAkC,CAC9D,OAAO,OAAOA,GAAQ,UAAYA,IAAQ,MAAQ,wBAAyBA,CAC7E,CAEA,SAASQ,EAAmBC,EAAkBC,EAAuBC,EAAe,CAC9E,GAAAD,EAAQ,IAAIC,CAAI,EAAG,OAIvB,GAHAD,EAAQ,IAAIC,CAAI,EAEH,OAAOA,IACP,SACP,GAAAJ,EAAcI,CAAI,EAAQA,EAAA,oBAAoB,QAASC,GAAMH,EAAI,IAAIG,CAAC,CAAC,UAClE,MAAM,QAAQD,CAAI,EACzB,UAAWE,KAAUF,EAAyBH,EAAAC,EAAKC,EAASG,CAAM,MAElE,UAAW,CAAA,CAAGA,CAAM,IAAK,OAAO,QAAQF,CAAc,EAChDE,IAAWF,GAAyBH,EAAAC,EAAKC,EAASG,CAAM,CAEpE,CAEO,SAASC,GAAmBd,EAA2B,CACtD,MAAAS,MAAU,IAChB,OAAAD,EAAmBC,EAAK,IAAI,IAAOT,CAAG,EAC/BS,CACT,oLCxIO,MAAMM,CAAW,CAAjB,cACYzB,EAAA,WAA0BZ,EAAgB,GASnDY,EAAA,sBAAiB,CAAC0B,EAAmBC,IAC3C,OAAA,QAAAC,EAAAF,EAAK,cAAL,YAAAE,EAAmB,mBAAoB,eALlC,iBAAiBC,EAAqC,CACpD,OAAA,KAAK,IAAI,iBAAiBA,CAAS,CAC5C,CAKO,WACLA,EACAC,EAAmD,KAAK,eAC9C,CACV,OAAO,KAAK,SAAA,EACT,QAAQ,OAAQC,GAAMF,EAAUE,EAAE,GAAG,CAAC,EACtC,IAAKA,IAAO,CACX,IAAKA,EAAE,IACP,MAAOD,EAAQC,EAAE,IAAKA,EAAE,GAAG,CAC3B,EAAA,CACN,CAKO,uBAAqE,CAC1E,OAAO,KAAK,SACd,CAEO,SAAuD,CACtD,MAAAtB,EAAS,KAAK,IAAI,sBAAsB,EACvC,MAAA,CACL,WAAYA,EAAO,WACnB,QAASA,EAAO,QAAQ,IAAKuB,IAAO,CAClC,IAAKA,EAAE,IACP,IAAK,CACH,GAAGA,EAAE,IACL,KAAM,IAAI7B,EAAiB6B,EAAE,IAAI,IAAI,CACvC,CAAA,EACA,CAAA,CAEN,CAKO,iCAEL,CACA,OAAO,KAAK,mBACd,CAEO,mBAEL,CACM,MAAAvB,EAAS,KAAK,IAAI,gCAAgC,EACjD,MAAA,CACL,WAAYA,EAAO,WACnB,QAASA,EAAO,QAAQ,IAAKuB,IAAO,CAClC,IAAKA,EAAE,IACP,IAAK,CACH,GAAGA,EAAE,IACL,KAAMC,EAAAA,cAAcD,EAAE,IAAI,KAAOtC,GAAW,IAAIS,EAAiBT,CAAM,CAAC,CAC1E,CAAA,EACA,CAAA,CAEN,CAKO,wBAAwD,CAC7D,OAAO,KAAK,UACd,CAEO,UAA0C,CACxC,OAAA,KAAK,IAAI,wBAClB,CAMO,aAAaiC,EAAiD,OAG5D,OAAAC,EAAA,KAAK,UAAU,QAAQ,KAC3BM,GAAMA,EAAE,IAAI,UAAYP,EAAI,SAAWO,EAAE,IAAI,OAASP,EAAI,IAC1D,IAFI,YAAAC,EAEJ,GACL,CAMO,aAAaD,EAAmC,OAG9C,OAAAC,EAAA,KAAK,WAAW,QAAQ,KAC5BM,GAAMA,EAAE,IAAI,UAAYP,EAAI,SAAWO,EAAE,IAAI,OAASP,EAAI,IAC1D,IAFI,YAAAC,EAEJ,GACL,CAMO,2BAA2BF,EAAgD,CAChF,MAAMjB,EAAsC,CAAA,EAE5C0B,EAAgB,UAAAC,KAAQ,KAAK,QAAA,EAAU,QAAS,CAC9C,GAAI,CAACC,EAAAA,cAAcD,EAAK,IAAI,IAAI,EAC9B,SAGI,MAAAE,EAAMF,EAAK,IAAI,KAEjB,GAAAV,EAAK,OAASY,EAAI,MAIlBZ,EAAK,YAAcY,EAAI,WAIvBZ,EAAK,SAAS,SAAWY,EAAI,SAAS,QAIrCC,EAAYb,EAAK,OAAQY,EAAI,MAAM,EAIxC,SAASE,EAAI,EAAGA,EAAId,EAAK,SAAS,OAAQ,EAAEc,EAAG,CACvC,MAAAC,EAAMf,EAAK,SAASc,CAAC,EACrBE,EAAMJ,EAAI,SAASE,CAAC,EAO1B,GANIC,EAAI,OAASC,EAAI,MAGjBD,EAAI,OAASC,EAAI,MAGjB,CAACH,EAAYE,EAAI,OAAQC,EAAI,MAAM,EAC5B,SAAAP,CAEb,CAEO1B,EAAA,KAAK2B,EAAK,GAAG,EACtB,CACO,OAAA3B,CACT,CACF,CAEA,SAAS8B,EAAYI,EAAgC5G,EAAiC,CAChF,GAAA4G,IAAU,OAAW,OAAO5G,IAAW,OACvC,GAAAA,IAAW,OAAkB,MAAA,GACjC,UAAWiB,KAAKjB,EACd,GAAI4G,EAAM3F,CAAC,IAAMjB,EAAOiB,CAAC,EAAU,MAAA,GAE9B,MAAA,EACT,CAEO,MAAM4F,CAAyB,CAMpC,aAAc,CALG5C,EAAA,YAEDA,EAAA,aACAA,EAAA,gBA0CAA,EAAA,kBAAa,IAAIyB,GAvC/B,KAAK,IAAMrC,IACX,KAAK,KAAO,KAAK,MAAM,KAAK,IAAI,IAAI,EAC/B,KAAA,QAAU,KAAK,IAAI,UAAY,OAAY,KAAK,MAAM,KAAK,IAAI,OAAO,EAAI,MACjF,CAEQ,iBAAiByD,EAA4C,CACnE,MAAMC,EAAa,KAAK,IAAI,wBAAwBD,CAAI,EACxD,OAAOC,EAAa,IAAI3C,EAAiB2C,CAAU,EAAI,MACzD,CAEA,IAAW,QAAuC,CACzC,OAAA,KAAK,iBAAiB/B,CAAmB,CAClD,CAKA,IAAW,SAAwC,CACjD,OAAO,KAAK,MACd,CAKA,IAAW,eAA8C,CACvD,OAAO,KAAK,OACd,CAEA,IAAW,SAAwC,CAC1C,OAAA,KAAK,iBAAiBC,CAAgB,CAC/C,CAKA,IAAW,YAA2C,CACpD,OAAO,KAAK,OACd,CAIO,aAAa+B,EAAgD,CAClE,OAAO,KAAK,IAAI,aAAaA,EAAI,IAAKC,GAAMnC,EAAAA,eAAemC,EAAIC,GAAMA,EAAE,MAAM,CAAC,CAAC,CACjF,CASO,aACLF,EAQc,CACV,IAAAG,EACJ,MAAI,YAAaH,EACNG,EAAA,CACP,IAAK,CACH,KAAM,QACN,QAASH,EAAI,QAAQ,IAAKC,IAAO,CAAE,KAAM,SAAU,OAAQA,CAAI,EAAA,CACjE,EACA,QAASD,EAAI,SAAW,CAAC,EACzB,QAASA,EAAI,SAAW,CAAC,CAAA,EAGlBG,EAAAH,EAEJ,KAAK,IAAI,aAAaI,EAAA,aAAaD,EAASE,GAAOvC,EAAAA,eAAeuC,EAAKH,GAAMA,EAAE,MAAM,CAAC,CAAC,CAChG,CAEO,cAAcI,EAAyB,CACrC,OAAA,KAAK,IAAI,cAAcA,CAAO,CACvC,CACF,CCxRO,MAAMC,EAAsB,SC+D5B,SAASC,GAAiBC,EAAiE,CAChG,OAAO,OAAOA,GAAY,QAC5B,CA2DO,SAASC,GAGdlH,EAAsE,CAClE,GAAAA,EAAI,cAAgB,OAAkB,OAAAA,EACrC,CACH,GAAIA,EAAI,SAAW,OACjB,MAAM,IAAI,MAAM,iCAAiCA,EAAI,UAAU,EAAE,EACnE,MAAMmH,EAAS,CAAE,GAAGnH,EAAK,YAAaA,EAAI,QAC1C,cAAOmH,EAAO,OACPA,CACT,CACF,CAKO,MAAMC,CAKX,CACQ,YACWC,EACAC,EACAC,EACAC,EACAC,EACjB,CALiB,KAAA,eAAAJ,EACA,KAAA,aAAAC,EACA,KAAA,SAAAC,EACA,KAAA,aAAAC,EACA,KAAA,UAAAC,CACf,CAGJ,OAAc,OACZC,EAAoC,QACL,CAC/B,OAAO,IAAIN,EACTM,EACA,OACA,CAAC,EACD9H,EAAa,EAAI,EACjBA,EAAa,CAAA,CAAE,CAAA,CAEnB,CAsBO,OACLH,EACAkI,EAC6C,CACzC,GAAA,OAAOA,GAAY,WAAY,CAC3B,MAAAC,EAAiB,UAAUnI,CAAG,GACpC,OAAAqD,EAAoB8E,EAAgB,IAAMD,EAAQ,IAAItB,CAAW,CAAC,EAC3D,IAAIe,EACT,KAAK,eACL,KAAK,aACL,CACE,GAAG,KAAK,SACR,CAAC3H,CAAG,EAAGmI,CACT,EACA,KAAK,aACL,KAAK,SAAA,CAET,KACE,QAAO,IAAIR,EACT,KAAK,eACL,KAAK,aACL,CACE,GAAG,KAAK,SACR,CAAC3H,CAAG,EAAGkI,CACT,EACA,KAAK,aACL,KAAK,SAAA,CAEX,CAGO,OACL3H,EAC6C,CACtC,OAAA,KAAK,YAAYA,CAAU,CACpC,CAUO,UACL2H,EACqD,CACjD,OAAA,OAAOA,GAAY,YACrB7E,EAAoB,cAAe,IAAM6E,EAAQ,IAAItB,CAAW,CAAC,EAC1D,IAAIe,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACL,cACA,KAAK,SAAA,GAGA,IAAIA,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACLO,EACA,KAAK,SAAA,CAEX,CAUO,YACLA,EACqD,CAC9C,OAAA,KAAK,UAAUA,CAAc,CACtC,CAgBO,SACLE,EACqD,CACjD,OAAA,MAAM,QAAQA,CAAY,EACrB,KAAK,SAASjI,EAAaiI,CAAY,CAAC,EACtC,OAAOA,GAAiB,YACjC/E,EAAoB,WAAY,IAAM+E,EAAa,IAAIxB,CAAW,CAAC,EAC5D,IAAIe,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACL,KAAK,aACL,UAAA,GAGK,IAAIA,EACT,KAAK,eACL,KAAK,aACL,KAAK,SACL,KAAK,aACLS,CAAA,CAEN,CAIO,YAAYlI,EAA0D,CAC3E,OAAO,IAAIyH,EACT,KAAK,eACLzH,EACA,KAAK,SACL,KAAK,aACL,KAAK,SAAA,CAET,CAKO,MAKL,CACA,GAAI,KAAK,eAAiB,OAAiB,MAAA,IAAI,MAAM,4BAA4B,EAEjF,MAAMgD,EAAwC,CAC5C,WAAYoE,EACZ,cAAe,KAAK,eACpB,YAAa,KAAK,aAClB,YAAa,KAAK,aAClB,SAAU,KAAK,UACf,QAAS,KAAK,QAAA,EAGhB,OAAKtE,GAAO,EAIAC,EAAqBC,CAAM,EAF9B,CAAE,OAAAA,CAAO,CAGpB,CACF,CCtRgB,SAAAmF,GACd9E,EACA+E,EACAC,EACc,SACR,MAAAC,EAAejF,EAAI,WACtB,QAAQ,EACR,QAAQ,IAAK0D,GAAMA,EAAE,GAAG,EACxB,OAAOtC,EAAAA,SAAS,EAChB,OAAQ8D,GAAMA,EAAE,KAAK,OAAS,iBAAmBA,EAAE,KAAK,SAAS,SAAW,CAAC,EAE1EC,EAAc,CAAA,EACpB,UAAWC,KAAOL,EACL,UAAAM,KAAQD,EAAI,KAAK,SAAU,CAC9B,MAAAE,EAASC,YAAUF,CAAI,EAC7B,UAAWG,KAASP,EACdQ,EAAA,YAAYH,EAAQC,YAAUC,EAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GACvDL,EAAY,KAAKK,CAAK,CAG5B,CAEF,OAAOxF,EAAI,aAAa,CACtB,QAAS,CAAC,GAAG+E,EAAS,GAAGI,CAAW,EACpC,SAAS9C,EAAA2C,GAAA,YAAAA,EAAY,eAAZ,YAAA3C,EAA0B,QACnC,SAASqD,EAAAV,GAAA,YAAAA,EAAY,eAAZ,YAAAU,EAA0B,OAAA,CACpC,CACH,CChFO,MAAMC,EAA6B,CACxC,YAA6BxF,EAAsB,CAAtB,KAAA,OAAAA,CAAuB,CAEpD,MAAa,YAAYyF,EAA2D,CAClF,OAAO,MAAM,UAAU,aAAa,YAAY,KAAK,OAAQA,CAAO,CACtE,CAEA,MAAa,cAAcC,EAA2C,CACpE,OAAO,MAAM,UAAU,aAAa,cAAc,KAAK,OAAQA,CAAQ,CACzE,CAEA,MAAa,aAA2C,CACtD,OAAO,MAAM,UAAU,aAAa,YAAY,KAAK,MAAM,CAC7D,CAEA,MAAa,mBACXD,EACqC,CACrC,OAAO,MAAM,UAAU,aAAa,mBAAmB,KAAK,OAAQA,CAAO,CAC7E,CAEA,MAAa,gBAAgBA,EAA6D,CACxF,OAAO,MAAM,UAAU,aAAa,gBAAgB,KAAK,OAAQA,CAAO,CAC1E,CACF,CCpCO,SAASE,EAAsClI,EAAgB,CACpE,OAAON,EAAW,CAChB,QAAS,GACT,QAASK,EAAaC,EAAQ,SAAS,EACvC,KAAMD,EAAaC,EAAQ,MAAM,CAAA,CAClC,CACH,CAEO,SAASmI,GAAyCnI,EAAgB,CACvE,OAAON,EAAW,CAChB,IAAKwI,EAAUnI,EAAaC,EAAQ,KAAK,CAAC,EAC1C,MAAOD,EAAaC,EAAQ,OAAO,CAAA,CACpC,CACH,CCTO,MAAMoI,GAA0B,CACrC,WAAYjC,CACd,ECJO,SAASkC,IAAqC,CACnD,OAAOvG,EAAqB,CAC9B,CCJO,SAASwG,GAAoB5C,EAAkC,CACpE,GAAI,OAAO,WAAW,qBAAwB,WACzC,OAAO,WAAW,oBAAoBA,CAAI,CACjD"}
package/dist/index.mjs CHANGED
@@ -579,7 +579,7 @@ class w {
579
579
  return this.ctx.getBlockLabel(t);
580
580
  }
581
581
  }
582
- const O = "1.8.0";
582
+ const O = "1.8.19";
583
583
  function Dt(e) {
584
584
  return typeof e == "string";
585
585
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/block_state_util.ts","../src/config/actions.ts","../src/internal.ts","../src/render/future.ts","../src/render/accessor.ts","../src/render/internal.ts","../src/render/api.ts","../src/version.ts","../src/builder.ts","../src/components/PlDataTable.ts","../src/pframe.ts","../src/ref_util.ts","../src/sdk_info.ts","../src/raw_globals.ts","../src/env_value.ts"],"sourcesContent":["import { BlockOutputsBase, ValueOrErrors } from '@milaboratories/pl-model-common';\n\nexport class OutputError extends Error {\n constructor(\n public readonly errors: string[],\n public readonly moreErrors: boolean\n ) {\n super(`${errors.length}${moreErrors ? '+' : ''} errors, first error: ` + errors[0]);\n }\n}\n\nexport function readOutput<T>(outputValue: ValueOrErrors<T>): T {\n if (!outputValue.ok) throw new OutputError(outputValue.errors, outputValue.moreErrors);\n return outputValue.value;\n}\n\ntype ExtractValueType<V extends ValueOrErrors<unknown>> = Extract<V, { ok: true }>['value'];\ntype SimpleOutputs<Outputs extends BlockOutputsBase> = {\n [Key in keyof Outputs]: ExtractValueType<Outputs[Key]>;\n};\n\nexport function wrapOutputs<Outputs extends BlockOutputsBase>(\n outputs: Outputs\n): SimpleOutputs<Outputs> {\n return new Proxy(outputs, {\n get(target, key: string) {\n return readOutput(target[key]);\n }\n }) as SimpleOutputs<Outputs>;\n}\n","import {\n ActGetField,\n ActGetFromCtx,\n ActGetImmediate,\n ActGetResourceField,\n ActGetResourceValueAsJson,\n ActMakeObject,\n ActMapRecordValues,\n ActMapResourceFields,\n ActMapArrayValues,\n ActIsEmpty,\n ActNot,\n ActIsolate,\n ActGetBlobContentAsJson,\n ActGetBlobContentAsString,\n ActGetBlobContent,\n ActAnd,\n ActOr,\n ActMakeArray,\n ActFlatten,\n ActGetDownloadedBlobContent,\n ActGetOnDemandBlobContent,\n ActImportProgress,\n ActGetLastLogs,\n ActGetProgressLog,\n ActGetLogHandle\n} from './actions_kinds';\nimport { ExtractAction, POCExtractAction, PrimitiveOrConfig, TypedConfig } from './type_engine';\nimport { Cfg } from './model';\nimport { CheckedSyncConf } from './type_util';\n\n//\n// Helpers\n//\n\nfunction primitiveToConfig(value: PrimitiveOrConfig): TypedConfig {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n )\n return getImmediate(value);\n else return value as TypedConfig;\n}\n\n//\n// Context\n//\n\nexport function getFromCfg<const V extends string>(variable: V): TypedConfig<ActGetFromCtx<V>> {\n return { type: 'GetFromCtx', variable } as Cfg as any;\n}\n\n//\n// Isolate\n//\n\nexport function isolate<const Config extends TypedConfig>(\n cfg: Config\n): TypedConfig<ActIsolate<ExtractAction<Config>>> {\n return {\n type: 'Isolate',\n cfg\n } as Cfg as any;\n}\n\n//\n// Well-known Context Vars\n//\n\nexport const Args = getFromCfg('$args');\nexport const It = getFromCfg('$it');\nexport const MainOutputs = getFromCfg('$prod');\nexport const StagingOutputs = getFromCfg('$staging');\nexport const UiState = getFromCfg('$ui');\n\n//\n// Json\n//\n\nexport function getImmediate<const T>(value: T): TypedConfig<ActGetImmediate<T>> {\n return { type: 'Immediate', value } as Cfg as any;\n}\n\nexport function makeObject<const T extends Record<string, PrimitiveOrConfig>>(\n template: T\n): TypedConfig<ActMakeObject<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: Record<string, TypedConfig> = {};\n for (const [k, cfg] of Object.entries(template)) normalizedTemplate[k] = primitiveToConfig(cfg);\n return {\n type: 'MakeObject',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function makeArray<const T extends PrimitiveOrConfig[]>(\n ...template: T\n): TypedConfig<ActMakeArray<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: TypedConfig[] = [];\n for (const cfg of template) normalizedTemplate.push(primitiveToConfig(cfg));\n return {\n type: 'MakeArray',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function getJsonField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetJsonField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapRecordValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapArrayValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function flatten<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActFlatten<ExtractAction<Source>>> {\n return {\n type: 'Flatten',\n source\n } as Cfg as any;\n}\n\n//\n// Boolean\n//\n\nexport function isEmpty<const Arg extends TypedConfig>(\n arg: Arg\n): TypedConfig<ActIsEmpty<ExtractAction<Arg>>> {\n return {\n type: 'IsEmpty',\n arg\n } as Cfg as any;\n}\n\nexport function not<const Operand extends TypedConfig>(\n operand: Operand\n): TypedConfig<ActNot<ExtractAction<Operand>>> {\n return {\n type: 'Not',\n operand\n } as Cfg as any;\n}\n\nexport function and<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActAnd<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'And',\n operand1,\n operand2\n } as Cfg as any;\n}\n\nexport function or<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActOr<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'Or',\n operand1,\n operand2\n } as Cfg as any;\n}\n\n//\n// Resources\n//\n\nexport function getResourceField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetResourceField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetResourceField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function getResourceValueAsJson<T>() {\n return function <const Source extends PrimitiveOrConfig>(\n source: Source\n ): TypedConfig<ActGetResourceValueAsJson<POCExtractAction<Source>, T>> {\n return {\n type: 'GetResourceValueAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapResourceFields',\n source,\n mapping,\n itVar\n } as Cfg as TypedConfig<\n ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>\n >;\n}\n\n//\n// Download Blobs\n//\n\nexport function getBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsString<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContentAsString<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContentAsString',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsJson<T>() {\n return function <const Source extends TypedConfig>(\n source: Source\n ): TypedConfig<ActGetBlobContentAsJson<ExtractAction<Source>, T>> {\n return {\n type: 'GetBlobContentAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function getDownloadedBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetDownloadedBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetDownloadedBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getOnDemandBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetOnDemandBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetOnDemandBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Upload Blobs\n//\n\nexport function getImportProgress<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActImportProgress<ExtractAction<Source>>> {\n return {\n type: 'GetImportProgress',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Logs\n//\n\nexport function getLastLogs<const Source extends TypedConfig>(\n source: Source,\n lines: number\n): TypedConfig<ActGetLastLogs<ExtractAction<Source>>> {\n return {\n type: 'GetLastLogs',\n source: primitiveToConfig(source),\n lines\n } as Cfg as any;\n}\n\nexport function getProgressLog<const Source extends TypedConfig>(\n source: Source,\n patternToSearch: string\n): TypedConfig<ActGetProgressLog<ExtractAction<Source>>> {\n return {\n type: 'GetProgressLog',\n source: primitiveToConfig(source),\n patternToSearch\n } as Cfg as any;\n}\n\nexport function getLogHandle<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetLogHandle<ExtractAction<Source>>> {\n return {\n type: 'GetLogHandle',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n","import {} from './global';\nimport { Platforma, PlatformaFactory } from './platforma';\nimport { BlockConfig } from './builder';\nimport { FutureHandle, GlobalCfgRenderCtx } from './render/internal';\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== 'undefined' || typeof globalThis.platforma !== 'undefined'\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance(config?: BlockConfig): Platforma {\n if (config && typeof globalThis.getPlatforma === 'function')\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== 'undefined') return globalThis.platforma;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else throw new Error('Not in config rendering context');\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n","import { FutureAwait, FutureHandle } from './internal';\nimport { registerFutureAwait } from '../internal';\n\nexport class FutureRef<T = unknown> {\n private isResolved = false;\n private resolvedValue?: T;\n\n constructor(\n private readonly handle: FutureHandle,\n private readonly postProcess: (value: unknown) => T = (v) => v as T\n ) {\n registerFutureAwait(handle, (value) => {\n this.resolvedValue = postProcess(value);\n this.isResolved = true;\n });\n }\n\n public map<R>(mapping: (v: T) => R): FutureRef<R> {\n return new FutureRef<R>(this.handle, (v) => mapping(this.postProcess(v)));\n }\n\n public mapDefined<R>(mapping: (v: NonNullable<T>) => R): FutureRef<R | undefined> {\n return new FutureRef<R | undefined>(this.handle, (v) => {\n const vv = this.postProcess(v);\n return vv ? mapping(vv) : undefined;\n });\n }\n\n toJSON(): any {\n return this.isResolved\n ? this.resolvedValue\n : ({ __awaited_futures__: [this.handle] } as FutureAwait);\n }\n}\n\nexport type ExtractFutureRefType<Ref extends FutureRef> =\n Ref extends FutureRef<infer T> ? T : never;\n","import {\n AnyLogHandle,\n ImportProgress,\n LocalBlobHandleAndSize,\n PColumn,\n PObject,\n RemoteBlobHandleAndSize,\n isPColumn,\n mapPObjectData\n} from '@milaboratories/pl-model-common';\nimport { getCfgRenderCtx } from '../internal';\nimport { FutureRef } from './future';\nimport { AccessorHandle } from './internal';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\n\nfunction ifDef<T, R>(value: T | undefined, cb: (value: T) => R): R | undefined {\n return value === undefined ? undefined : cb(value);\n}\n\nfunction wrapBuffer(buf: ArrayBuffer | undefined): Uint8Array | undefined {\n return buf === undefined ? undefined : new Uint8Array(buf);\n}\n\nfunction wrapAccessor(handle: AccessorHandle | undefined): TreeNodeAccessor | undefined {\n return handle === undefined ? undefined : new TreeNodeAccessor(handle);\n}\n\n/** Represent resource tree node accessor */\nexport class TreeNodeAccessor {\n constructor(public readonly handle: AccessorHandle) {}\n\n public resolve(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotAssigned: true;\n }\n ]\n ): TreeNodeAccessor;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined {\n return this.resolveWithCommon({}, ...steps);\n }\n\n public resolveWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().resolveWithCommon(this.handle, commonOptions, ...steps));\n }\n\n public get resourceType(): ResourceType {\n return getCfgRenderCtx().getResourceType(this.handle);\n }\n\n public getInputsLocked(): boolean {\n return getCfgRenderCtx().getInputsLocked(this.handle);\n }\n\n public getOutputsLocked(): boolean {\n return getCfgRenderCtx().getOutputsLocked(this.handle);\n }\n\n public getIsReadyOrError(): boolean {\n return getCfgRenderCtx().getIsReadyOrError(this.handle);\n }\n\n public getIsFinal(): boolean {\n return getCfgRenderCtx().getIsFinal(this.handle);\n }\n\n public getError(): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().getError(this.handle));\n }\n\n public listInputFields(): string[] {\n return getCfgRenderCtx().listInputFields(this.handle);\n }\n\n public listOutputFields(): string[] {\n return getCfgRenderCtx().listOutputFields(this.handle);\n }\n\n public listDynamicFields(): string[] {\n return getCfgRenderCtx().listDynamicFields(this.handle);\n }\n\n public getKeyValueBase64(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueBase64(this.handle, key);\n }\n\n public getKeyValueAsString(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueAsString(this.handle, key);\n }\n\n public getKeyValueAsJson<T>(key: string): T {\n const content = this.getKeyValueAsString(key);\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n public getDataBase64(): string | undefined {\n return getCfgRenderCtx().getDataBase64(this.handle);\n }\n\n public getDataAsString(): string | undefined {\n return getCfgRenderCtx().getDataAsString(this.handle);\n }\n\n public getDataAsJson<T>(): T {\n const content = this.getDataAsString();\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n /**\n *\n */\n public getPColumns(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): PColumn<TreeNodeAccessor>[] | undefined {\n const result = this.parsePObjectCollection(errorOnUnknownField, prefix);\n if (result === undefined) return undefined;\n\n const pf = Object.entries(result).map(([, obj]) => {\n if (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n return obj;\n });\n\n return pf;\n }\n\n /**\n *\n */\n public parsePObjectCollection(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): Record<string, PObject<TreeNodeAccessor>> | undefined {\n const pObjects = getCfgRenderCtx().parsePObjectCollection(\n this.handle,\n errorOnUnknownField,\n prefix\n );\n if (pObjects === undefined) return undefined;\n const result: Record<string, PObject<TreeNodeAccessor>> = {};\n for (const [key, value] of Object.entries(pObjects))\n result[key] = mapPObjectData(value, (c) => new TreeNodeAccessor(c));\n return result;\n }\n\n public getFileContentAsBase64(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsBase64(this.handle));\n }\n\n public getFileContentAsString(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle));\n }\n\n public getFileContentAsJson<T>(): FutureRef<T | undefined> {\n return new FutureRef<string | undefined>(\n getCfgRenderCtx().getBlobContentAsString(this.handle)\n ).mapDefined((v) => JSON.parse(v) as T);\n }\n\n /**\n * @deprecated use getFileContentAsBase64\n */\n public getBlobContentAsBase64(): FutureRef<string | undefined> {\n return this.getFileContentAsBase64();\n }\n\n /**\n * @deprecated use getFileContentAsString\n */\n public getBlobContentAsString(): FutureRef<string | undefined> {\n return this.getFileContentAsString();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getFileHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getDownloadedBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getFileHandle\n */\n public getDownloadedBlobHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return this.getFileHandle();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getRemoteFileHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getOnDemandBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getRemoteFileHandle\n */\n public getOnDemandBlobHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return this.getRemoteFileHandle();\n }\n\n public getImportProgress(): FutureRef<ImportProgress> {\n return new FutureRef(getCfgRenderCtx().getImportProgress(this.handle));\n }\n\n public getLastLogs(nLines: number): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getLastLogs(this.handle, nLines));\n }\n\n public getProgressLog(patternToSearch: string): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getProgressLog(this.handle, patternToSearch));\n }\n\n public getLogHandle(): FutureRef<AnyLogHandle | undefined> {\n return new FutureRef(getCfgRenderCtx().getLogHandle(this.handle));\n }\n}\n","import { Optional } from 'utility-types';\nimport { Branded } from '../branding';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\nimport {\n Option,\n PColumn,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n ResultCollection,\n ValueOrError\n} from '@milaboratories/pl-model-common';\n\nexport const StagingAccessorName = 'staging';\nexport const MainAccessorName = 'main';\n\nexport type AccessorHandle = Branded<string, 'AccessorHandle'>;\nexport type FutureHandle = Branded<string, 'FutureHandle'>;\n\nexport interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = FutureHandle> {\n //\n // Root accessor creation\n //\n\n getAccessorHandleByName(name: string): AHandle | undefined;\n\n //\n // Basic resource accessor actions\n //\n\n resolveWithCommon(\n handle: AHandle,\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): AHandle | undefined;\n\n getResourceType(handle: AHandle): ResourceType;\n\n getInputsLocked(handle: AHandle): boolean;\n\n getOutputsLocked(handle: AHandle): boolean;\n\n getIsReadyOrError(handle: AHandle): boolean;\n\n getIsFinal(handle: AHandle): boolean;\n\n getError(handle: AHandle): AHandle | undefined;\n\n listInputFields(handle: AHandle): string[];\n\n listOutputFields(handle: AHandle): string[];\n\n listDynamicFields(handle: AHandle): string[];\n\n getKeyValueBase64(handle: AHandle, key: string): string | undefined;\n\n getKeyValueAsString(handle: AHandle, key: string): string | undefined;\n\n getDataBase64(handle: AHandle): string | undefined;\n\n getDataAsString(handle: AHandle): string | undefined;\n\n /** If not final returns undefined */\n parsePObjectCollection(\n handle: AHandle,\n errorOnUnknownField: boolean,\n prefix: string\n ): Record<string, PObject<AHandle>> | undefined;\n\n //\n // Blob\n //\n\n getBlobContentAsBase64(handle: AHandle): FHandle; // string | undefined\n\n getBlobContentAsString(handle: AHandle): FHandle; // string | undefined\n\n getDownloadedBlobContentHandle(handle: AHandle): FHandle; // LocalBlobHandleAndSize | undefined;\n\n getOnDemandBlobContentHandle(handle: AHandle): FHandle; // RemoteBlobHandleAndSize | undefined;\n\n //\n // Import progress\n //\n\n getImportProgress(handle: AHandle): FHandle; // ImportProgress;\n\n //\n // Logs\n //\n\n getLastLogs(handle: AHandle, nLines: number): FHandle; // string | undefined;\n\n getProgressLog(handle: AHandle, patternToSearch: string): FHandle; // string | undefined;\n\n getLogHandle(handle: AHandle): FHandle; // AnyLogHandle | undefined;\n\n //\n // Blocks\n //\n\n getBlockLabel(blockId: string): string;\n\n //\n // Result Pool\n //\n\n getDataFromResultPool(): ResultCollection<PObject<AHandle>>;\n\n getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<AHandle, string>>, 'id'>\n >;\n\n getSpecsFromResultPool(): ResultCollection<PObjectSpec>;\n\n calculateOptions(predicate: PSpecPredicate): Option[];\n\n //\n // PFrame / PTable\n //\n\n createPFrame(def: PFrameDef<AHandle>): PFrameHandle;\n\n createPTable(def: PTableDef<PColumn<AHandle>>): PTableHandle;\n}\n\nexport interface GlobalCfgRenderCtx extends GlobalCfgRenderCtxMethods {\n readonly args: string;\n readonly uiState?: string;\n readonly callbackRegistry: Record<string, Function>;\n}\n\nexport type FutureAwait = {\n __awaited_futures__: FutureHandle[];\n};\n\nexport function isFutureAwait(obj: unknown): obj is FutureAwait {\n return typeof obj === 'object' && obj !== null && '__awaited_futures__' in obj;\n}\n\nfunction addAllFutureAwaits(set: Set<string>, visited: Set<unknown>, node: unknown) {\n if (visited.has(node)) return;\n visited.add(node);\n\n const type = typeof node;\n if (type === 'object') {\n if (isFutureAwait(node)) node.__awaited_futures__.forEach((a) => set.add(a));\n else if (Array.isArray(node))\n for (const nested of node) addAllFutureAwaits(set, visited, nested);\n else\n for (const [, nested] of Object.entries(node as object))\n if (nested !== node) addAllFutureAwaits(set, visited, nested);\n }\n}\n\nexport function getAllFutureAwaits(obj: unknown): Set<string> {\n const set = new Set<string>();\n addAllFutureAwaits(set, new Set(), obj);\n return set;\n}\n","import {\n Option,\n PColumn,\n PColumnSpec,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting,\n Ref,\n ResultCollection,\n ValueOrError,\n isPColumnSpec,\n mapPObjectData,\n mapPTableDef,\n mapValueInVOE\n} from '@milaboratories/pl-model-common';\nimport { Optional } from 'utility-types';\nimport { getCfgRenderCtx } from '../internal';\nimport { TreeNodeAccessor } from './accessor';\nimport { FutureRef } from './future';\nimport { GlobalCfgRenderCtx, MainAccessorName, StagingAccessorName } from './internal';\n\nexport class ResultPool {\n private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();\n\n /**\n * @deprecated use getOptions()\n */\n public calculateOptions(predicate: PSpecPredicate): Option[] {\n return this.ctx.calculateOptions(predicate);\n }\n\n private defaultLabelFn = (spec: PObjectSpec, ref: Ref) =>\n spec.annotations?.['pl7.app/label'] ?? `Unlabelled`;\n\n public getOptions(\n predicate: (spec: PObjectSpec) => boolean,\n labelFn: (spec: PObjectSpec, ref: Ref) => string = this.defaultLabelFn\n ): Option[] {\n return this.getSpecs()\n .entries.filter((s) => predicate(s.obj))\n .map((s) => ({\n ref: s.ref,\n label: labelFn(s.obj, s.ref)\n }));\n }\n\n /**\n * @deprecated use getData()\n */\n public getDataFromResultPool(): ResultCollection<PObject<TreeNodeAccessor>> {\n return this.getData();\n }\n\n public getData(): ResultCollection<PObject<TreeNodeAccessor>> {\n const result = this.ctx.getDataFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: new TreeNodeAccessor(e.obj.data)\n }\n }))\n };\n }\n\n /**\n * @deprecated use getDataWithErrors()\n */\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n return this.getDataWithErrors();\n }\n\n public getDataWithErrors(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n const result = this.ctx.getDataWithErrorsFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: mapValueInVOE(e.obj.data, (handle) => new TreeNodeAccessor(handle))\n }\n }))\n };\n }\n\n /**\n * @deprecated use getSpecs()\n */\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n return this.getSpecs();\n }\n\n public getSpecs(): ResultCollection<PObjectSpec> {\n return this.ctx.getSpecsFromResultPool();\n }\n\n /**\n * @param ref a Ref\n * @returns data associated with the ref\n */\n public getDataByRef(ref: Ref): PObject<TreeNodeAccessor> | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getData().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param ref a Ref\n * @returns object spec associated with the ref\n */\n public getSpecByRef(ref: Ref): PObjectSpec | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getSpecs().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param spec object specification\n * @returns array of data objects with compatible specs\n */\n public findDataWithCompatibleSpec(spec: PColumnSpec): PObject<TreeNodeAccessor>[] {\n const result: PObject<TreeNodeAccessor>[] = [];\n\n out: for (const data of this.getData().entries) {\n if (!isPColumnSpec(data.obj.spec)) {\n continue;\n }\n\n const oth = data.obj.spec;\n\n if (spec.name !== oth.name) {\n continue;\n }\n\n if (spec.valueType !== oth.valueType) {\n continue;\n }\n\n if (spec.axesSpec.length !== oth.axesSpec.length) {\n continue;\n }\n\n if (!matchDomain(spec.domain, oth.domain)) {\n continue;\n }\n\n for (let i = 0; i < spec.axesSpec.length; ++i) {\n const qAx = spec.axesSpec[i];\n const tAx = oth.axesSpec[i];\n if (qAx.name !== tAx.name) {\n continue out;\n }\n if (qAx.type !== tAx.type) {\n continue out;\n }\n if (!matchDomain(qAx.domain, tAx.domain)) {\n continue out;\n }\n }\n\n result.push(data.obj);\n }\n return result;\n }\n}\n\nfunction matchDomain(query?: Record<string, string>, target?: Record<string, string>) {\n if (query === undefined) return target === undefined;\n if (target === undefined) return true;\n for (const k in target) {\n if (query[k] !== target[k]) return false;\n }\n return true;\n}\n\nexport class RenderCtx<Args, UiState> {\n private readonly ctx: GlobalCfgRenderCtx;\n\n public readonly args: Args;\n public readonly uiState: UiState | undefined;\n\n constructor() {\n this.ctx = getCfgRenderCtx();\n this.args = JSON.parse(this.ctx.args);\n this.uiState = this.ctx.uiState !== undefined ? JSON.parse(this.ctx.uiState) : undefined;\n }\n\n private getNamedAccessor(name: string): TreeNodeAccessor | undefined {\n const accessorId = this.ctx.getAccessorHandleByName(name);\n return accessorId ? new TreeNodeAccessor(accessorId) : undefined;\n }\n\n public get prerun(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(StagingAccessorName);\n }\n\n /**\n * @deprecated use prerun\n */\n public get precalc(): TreeNodeAccessor | undefined {\n return this.prerun;\n }\n\n /**\n * @deprecated use prerun\n */\n public get stagingOutput(): TreeNodeAccessor | undefined {\n return this.precalc;\n }\n\n public get outputs(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(MainAccessorName);\n }\n\n /**\n * @deprecated use outputs\n */\n public get mainOutput(): TreeNodeAccessor | undefined {\n return this.outputs;\n }\n\n public readonly resultPool = new ResultPool();\n\n public createPFrame(def: PFrameDef<TreeNodeAccessor>): PFrameHandle {\n return this.ctx.createPFrame(def.map((c) => mapPObjectData(c, (d) => d.handle)));\n }\n\n public createPTable(def: PTableDef<PColumn<TreeNodeAccessor>>): PTableHandle;\n public createPTable(def: {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }): PTableHandle;\n public createPTable(\n def:\n | PTableDef<PColumn<TreeNodeAccessor>>\n | {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }\n ): PTableHandle {\n var rawDef: PTableDef<PColumn<TreeNodeAccessor>>;\n if ('columns' in def) {\n rawDef = {\n src: {\n type: 'inner',\n entries: def.columns.map((c) => ({ type: 'column', column: c }))\n },\n filters: def.filters ?? [],\n sorting: def.sorting ?? []\n };\n } else {\n rawDef = def;\n }\n return this.ctx.createPTable(mapPTableDef(rawDef, (po) => mapPObjectData(po, (d) => d.handle)));\n }\n\n public getBlockLabel(blockId: string): string {\n return this.ctx.getBlockLabel(blockId);\n }\n}\n\nexport type RenderFunction<Args = unknown, UiState = unknown, Ret = unknown> = (\n rCtx: RenderCtx<Args, UiState>\n) => Ret;\n\nexport type UnwrapFutureRef<K> =\n K extends FutureRef<infer T>\n ? T\n : K extends bigint | boolean | null | number | string | symbol | undefined\n ? K\n : { [key in keyof K]: UnwrapFutureRef<K[key]> };\n\nexport type InferRenderFunctionReturn<RF extends Function> = RF extends (...args: any) => infer R\n ? UnwrapFutureRef<R>\n : never;\n","export const PlatformaSDKVersion = '1.8.0';\n","import { BlockRenderingMode, BlockSection, ValueOrErrors } from '@milaboratories/pl-model-common';\nimport { Checked, ConfigResult, getImmediate, PlResourceEntry, TypedConfig } from './config';\nimport { getPlatformaInstance, isInUI, tryRegisterCallback } from './internal';\nimport { Platforma } from './platforma';\nimport { InferRenderFunctionReturn, RenderCtx, RenderFunction } from './render';\nimport { PlatformaSDKVersion } from './version';\n\ntype StdCtxArgsOnly<Args, UiState = undefined> = {\n readonly $blockId: string;\n readonly $args: Args;\n readonly $ui: UiState;\n};\n\nexport type StdCtx<Args, UiState = undefined> = StdCtxArgsOnly<Args, UiState> & {\n readonly $prod: PlResourceEntry;\n readonly $staging: PlResourceEntry;\n};\n\nexport type ResolveCfgType<Cfg extends TypedConfig, Args, UiState = undefined> = ConfigResult<\n Cfg,\n StdCtx<Args, UiState>\n>;\n\ntype SectionsExpectedType = readonly BlockSection[];\n\ntype SectionsCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends SectionsExpectedType ? true : false\n>;\n\ntype SectionsRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends SectionsExpectedType ? true : false\n>;\n\ntype InputsValidExpectedType = boolean;\n\ntype InputsValidCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends InputsValidExpectedType ? true : false\n>;\n\ntype InputsValidRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends InputsValidExpectedType ? true : false\n>;\n\nexport type Code = {\n type: 'plain';\n content: string;\n};\n\n/** Field key to attach ConfAction information to a config type. */\ndeclare const __function_handle__: unique symbol;\n\n/** Creates branded Cfg type */\nexport type FunctionHandle<Return = unknown> = string & { [__function_handle__]: Return };\n\nexport type ExtractFunctionHandleReturn<Func extends FunctionHandle> =\n Func[typeof __function_handle__];\n\nexport type TypedConfigOrFunctionHandle = TypedConfig | FunctionHandle;\n\nexport function isFunctionHandle(cfgOrFh: TypedConfigOrFunctionHandle): cfgOrFh is FunctionHandle {\n return typeof cfgOrFh === 'string';\n}\n\ntype OnlyString<S> = S extends string ? S : '';\n\n// prettier-ignore\nexport type DeriveHref<S> = S extends readonly BlockSection[]\n ? OnlyString<Extract<S[number], { type: 'link' }>['href']>\n : never;\n\n/** This structure is rendered from the configuration, type can accommodate any\n * version of config structure. */\nexport type BlockConfigUniversal<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = {\n /** SDK version used by the block */\n readonly sdkVersion: string;\n\n /** Main rendering mode for the block */\n readonly renderingMode: BlockRenderingMode;\n\n /** Initial value for the args when block is added to the project */\n readonly initialArgs: Args;\n\n /** @deprecated */\n readonly canRun?: TypedConfigOrFunctionHandle;\n\n /**\n * Config to determine whether the block can be executed with current\n * arguments.\n *\n * Optional to support earlier SDK version configs.\n * */\n readonly inputsValid?: TypedConfigOrFunctionHandle;\n\n /** Configuration to derive list of section for the left overview panel */\n readonly sections: TypedConfigOrFunctionHandle;\n\n /** Configuration for the output cells */\n readonly outputs: Outputs;\n\n /** Config code bundle */\n readonly code?: Code;\n};\n\n/** This structure is rendered from the configuration */\nexport type BlockConfig<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = Required<Omit<BlockConfigUniversal<Args, Outputs>, 'canRun' | 'code'>> &\n Pick<BlockConfigUniversal<Args, Outputs>, 'code'>;\n\n/** Takes universal config, and converts it into latest structure */\nexport function normalizeBlockConfig<\n Args,\n Outputs extends Record<string, TypedConfigOrFunctionHandle>\n>(cfg: BlockConfigUniversal<Args, Outputs>): BlockConfig<Args, Outputs> {\n if (cfg.inputsValid !== undefined) return cfg as BlockConfig<Args, Outputs>;\n else {\n if (cfg.canRun === undefined)\n throw new Error(`Malformed config, SDK version ${cfg.sdkVersion}`);\n const latest = { ...cfg, inputsValid: cfg.canRun };\n delete latest['canRun'];\n return latest;\n }\n}\n\n/** Main entry point that each block should use in it's \"config\" module. Don't forget\n * to call {@link done()} at the end of configuration. Value returned by this builder must be\n * exported as constant with name \"platforma\" from the \"config\" module. */\nexport class BlockModel<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState,\n Href extends `/${string}` = '/'\n> {\n private constructor(\n private readonly _renderingMode: BlockRenderingMode,\n private readonly _initialArgs: Args | undefined,\n private readonly _outputs: OutputsCfg,\n private readonly _inputsValid: TypedConfigOrFunctionHandle,\n private readonly _sections: TypedConfigOrFunctionHandle\n ) { }\n\n /** Initiates configuration builder */\n public static create<Args, UiState = undefined>(\n renderingMode: BlockRenderingMode = 'Heavy'\n ): BlockModel<Args, {}, UiState> {\n return new BlockModel<Args, {}, UiState>(\n renderingMode,\n undefined,\n {},\n getImmediate(true),\n getImmediate([])\n );\n }\n\n /**\n * Add output cell to the configuration\n *\n * @param key cell name, that can be used to retrieve the rendered value\n * @param cfg configuration describing how to render cell value from the blocks\n * workflow outputs\n * */\n public output<const Key extends string, const Cfg extends TypedConfig>(\n key: Key,\n cfg: Cfg\n ): BlockModel<Args, OutputsCfg & { [K in Key]: Cfg }, UiState, Href>;\n public output<const Key extends string, const RF extends RenderFunction<Args, UiState>>(\n key: Key,\n rf: RF\n ): BlockModel<\n Args,\n OutputsCfg & { [K in Key]: FunctionHandle<InferRenderFunctionReturn<RF>> },\n UiState,\n Href\n >;\n public output(\n key: string,\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n if (typeof cfgOrRf === 'function') {\n const functionHandle = `output#${key}` as FunctionHandle;\n tryRegisterCallback(functionHandle, () => cfgOrRf(new RenderCtx()));\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: functionHandle\n },\n this._inputsValid,\n this._sections\n );\n } else\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: cfgOrRf\n },\n this._inputsValid,\n this._sections\n );\n }\n\n /** @deprecated */\n public canRun<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n return this.inputsValid(cfg as any);\n }\n\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public argsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (typeof cfgOrRf === 'function') {\n tryRegisterCallback('inputsValid', () => cfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n 'inputsValid' as FunctionHandle,\n this._sections\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n cfgOrRf,\n this._sections\n );\n }\n\n /** @deprecated use argsValid() */\n public inputsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** @deprecated use argsValid() */\n public inputsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public inputsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n return this.argsValid(cfgOrRf as any);\n }\n\n /** Sets the config to generate list of section in the left block overviews panel */\n public sections<const S extends SectionsExpectedType,>(rf: S): BlockModel<Args, OutputsCfg, UiState, DeriveHref<S>>;\n public sections<\n const Ret extends SectionsExpectedType,\n const RF extends RenderFunction<Args, UiState, Ret>\n >(rf: RF): BlockModel<Args, OutputsCfg, UiState, DeriveHref<ReturnType<RF>>>;\n public sections<const Cfg extends TypedConfig>(\n cfg: Cfg & SectionsCfgChecked<Cfg, Args, UiState>\n ): BlockModel<\n Args,\n OutputsCfg,\n UiState,\n DeriveHref<ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>>>\n >;\n public sections(\n arrOrCfgOrRf: SectionsExpectedType | TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (Array.isArray(arrOrCfgOrRf)){\n return this.sections(getImmediate(arrOrCfgOrRf))\n } else if (typeof arrOrCfgOrRf === 'function') {\n tryRegisterCallback('sections', () => arrOrCfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n 'sections' as FunctionHandle\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n arrOrCfgOrRf as TypedConfig\n );\n }\n\n\n /** Sets initial args for the block, this value must be specified. */\n public initialArgs(value: Args): BlockModel<Args, OutputsCfg, UiState, Href> {\n return new BlockModel<Args, OutputsCfg, UiState, Href>(\n this._renderingMode,\n value,\n this._outputs,\n this._inputsValid,\n this._sections\n );\n }\n\n /** Renders all provided block settings into a pre-configured platforma API\n * instance, that can be used in frontend to interact with block state, and\n * other features provided by the platforma to the block. */\n public done(): Platforma<\n Args,\n InferOutputsFromConfigs<Args, OutputsCfg, UiState>,\n UiState,\n Href\n > {\n if (this._initialArgs === undefined) throw new Error('Initial arguments not set.');\n\n const config: BlockConfig<Args, OutputsCfg> = {\n sdkVersion: PlatformaSDKVersion,\n renderingMode: this._renderingMode,\n initialArgs: this._initialArgs,\n inputsValid: this._inputsValid,\n sections: this._sections,\n outputs: this._outputs\n };\n\n if (!isInUI())\n // we are in the configuration rendering routine, not in actual UI\n return { config } as any;\n // normal operation inside the UI\n else return getPlatformaInstance(config) as any;\n }\n}\n\nexport type InferOutputType<CfgOrFH, Args, UiState> = CfgOrFH extends TypedConfig\n ? ResolveCfgType<CfgOrFH, Args, UiState>\n : CfgOrFH extends FunctionHandle\n ? ExtractFunctionHandleReturn<CfgOrFH>\n : never;\n\ntype InferOutputsFromConfigs<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState\n> = {\n [Key in keyof OutputsCfg]: ValueOrErrors<InferOutputType<OutputsCfg[Key], Args, UiState>>;\n};\n","import {\n getAxisId,\n isPColumn,\n JoinEntry,\n matchAxisId,\n PColumn,\n PColumnIdAndSpec,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting\n} from '@milaboratories/pl-model-common';\nimport { RenderCtx, TreeNodeAccessor } from '../render';\n\n/** Data table state */\nexport type PlDataTableGridState = {\n /** Includes column ordering */\n columnOrder?: {\n /** All colIds in order */\n orderedColIds: string[];\n };\n /** Includes current sort columns and direction */\n sort?: {\n /** Sorted columns and directions in order */\n sortModel: {\n /** Column Id to apply the sort to. */\n colId: string;\n /** Sort direction */\n sort: 'asc' | 'desc';\n }[];\n };\n\n /** current sheet selections */\n sheets?: Record<string, string | number>;\n};\n\n/**\n * Params used to get p-table handle from the driver\n */\nexport type PTableParams = {\n /** For sourceType: 'pframe' the join is original one, enriched with label columns */\n join?: JoinEntry<PColumnIdAndSpec>;\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n};\n\n/**\n * PlDataTable persisted state\n */\nexport type PlDataTableState = {\n // internal ag-grid state\n gridState: PlDataTableGridState;\n\n // mapping of gridState onto the p-table data structures\n pTableParams?: PTableParams;\n};\n\n/**\n * Create p-table handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns\n */\nexport function createPlDataTable<A, U>(\n ctx: RenderCtx<A, U>,\n columns: PColumn<TreeNodeAccessor>[],\n tableState?: PlDataTableState\n): PTableHandle {\n const allLabelCols = ctx.resultPool\n .getData()\n .entries.map((d) => d.obj)\n .filter(isPColumn)\n .filter((p) => p.spec.name === 'pl7.app/label' && p.spec.axesSpec.length === 1);\n\n const moreColumns = [];\n for (const col of columns) {\n for (const axis of col.spec.axesSpec) {\n const axisId = getAxisId(axis);\n for (const match of allLabelCols) {\n if (matchAxisId(axisId, getAxisId(match.spec.axesSpec[0]))) {\n moreColumns.push(match);\n }\n }\n }\n }\n return ctx.createPTable({\n columns: [...columns, ...moreColumns],\n filters: tableState?.pTableParams?.filters,\n sorting: tableState?.pTableParams?.sorting\n });\n}\n","import {\n CalculateTableDataRequest,\n CalculateTableDataResponse,\n FindColumnsRequest,\n FindColumnsResponse,\n PColumnIdAndSpec,\n PColumnSpec,\n PFrame,\n PFrameHandle,\n PObjectId,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\n\nexport class PFrameImpl implements PFrame {\n constructor(private readonly handle: PFrameHandle) {}\n\n public async findColumns(request: FindColumnsRequest): Promise<FindColumnsResponse> {\n return await platforma.pFrameDriver.findColumns(this.handle, request);\n }\n\n public async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n return await platforma.pFrameDriver.getColumnSpec(this.handle, columnId);\n }\n\n public async listColumns(): Promise<PColumnIdAndSpec[]> {\n return await platforma.pFrameDriver.listColumns(this.handle);\n }\n\n public async calculateTableData(\n request: CalculateTableDataRequest<PObjectId>\n ): Promise<CalculateTableDataResponse> {\n return await platforma.pFrameDriver.calculateTableData(this.handle, request);\n }\n\n public async getUniqueValues(request: UniqueValuesRequest): Promise<UniqueValuesResponse> {\n return await platforma.pFrameDriver.getUniqueValues(this.handle, request);\n }\n}\n","import { getJsonField, makeObject, TypedConfig } from './config';\n\nexport function fromPlRef<Source extends TypedConfig>(source: Source) {\n return makeObject({\n __isRef: true,\n blockId: getJsonField(source, 'blockId'),\n name: getJsonField(source, 'name')\n });\n}\n\nexport function fromPlOption<Source extends TypedConfig>(source: Source) {\n return makeObject({\n ref: fromPlRef(getJsonField(source, 'ref')),\n label: getJsonField(source, 'label')\n });\n}\n","import { PlatformaSDKVersion } from './version';\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion\n};\n","import {} from './global';\nimport { getPlatformaInstance } from './internal';\nimport { Platforma } from './platforma';\n\nexport function getRawPlatformaInstance(): Platforma {\n return getPlatformaInstance();\n}\n","import {} from './global';\n\nexport function getEnvironmentValue(name: string): string | undefined {\n if (typeof globalThis.getEnvironmentValue !== 'function') return undefined;\n else return globalThis.getEnvironmentValue(name);\n}\n"],"names":["OutputError","errors","moreErrors","readOutput","outputValue","wrapOutputs","outputs","target","key","primitiveToConfig","value","getImmediate","getFromCfg","variable","isolate","cfg","Args","It","MainOutputs","StagingOutputs","UiState","makeObject","template","normalizedTemplate","k","makeArray","getJsonField","source","field","mapRecordValues","mapping","itVar","mapArrayValues","flatten","isEmpty","arg","not","operand","and","operand1","operand2","or","getResourceField","getResourceValueAsJson","mapResourceFields","getBlobContent","getBlobContentAsString","getBlobContentAsJson","getDownloadedBlobContent","getOnDemandBlobContent","getImportProgress","getLastLogs","lines","getProgressLog","patternToSearch","getLogHandle","isInUI","getPlatformaInstance","config","tryGetCfgRenderCtx","getCfgRenderCtx","tryRegisterCallback","callback","ctx","futureResolves","registerFutureAwait","handle","onResolve","res","FutureRef","postProcess","v","__publicField","vv","wrapAccessor","TreeNodeAccessor","steps","commonOptions","content","errorOnUnknownField","prefix","result","obj","isPColumn","pObjects","mapPObjectData","c","nLines","StagingAccessorName","MainAccessorName","isFutureAwait","addAllFutureAwaits","set","visited","node","a","nested","getAllFutureAwaits","ResultPool","spec","ref","_a","predicate","labelFn","s","e","mapValueInVOE","f","out","data","isPColumnSpec","oth","matchDomain","i","qAx","tAx","query","RenderCtx","name","accessorId","def","d","rawDef","mapPTableDef","po","blockId","PlatformaSDKVersion","isFunctionHandle","cfgOrFh","normalizeBlockConfig","latest","BlockModel","_renderingMode","_initialArgs","_outputs","_inputsValid","_sections","renderingMode","cfgOrRf","functionHandle","arrOrCfgOrRf","createPlDataTable","columns","tableState","allLabelCols","p","moreColumns","col","axis","axisId","getAxisId","match","matchAxisId","_b","PFrameImpl","request","columnId","fromPlRef","fromPlOption","CurrentSdkInfo","getRawPlatformaInstance","getEnvironmentValue"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/block_state_util.ts","../src/config/actions.ts","../src/internal.ts","../src/render/future.ts","../src/render/accessor.ts","../src/render/internal.ts","../src/render/api.ts","../src/version.ts","../src/builder.ts","../src/components/PlDataTable.ts","../src/pframe.ts","../src/ref_util.ts","../src/sdk_info.ts","../src/raw_globals.ts","../src/env_value.ts"],"sourcesContent":["import { BlockOutputsBase, ValueOrErrors } from '@milaboratories/pl-model-common';\n\nexport class OutputError extends Error {\n constructor(\n public readonly errors: string[],\n public readonly moreErrors: boolean\n ) {\n super(`${errors.length}${moreErrors ? '+' : ''} errors, first error: ` + errors[0]);\n }\n}\n\nexport function readOutput<T>(outputValue: ValueOrErrors<T>): T {\n if (!outputValue.ok) throw new OutputError(outputValue.errors, outputValue.moreErrors);\n return outputValue.value;\n}\n\ntype ExtractValueType<V extends ValueOrErrors<unknown>> = Extract<V, { ok: true }>['value'];\ntype SimpleOutputs<Outputs extends BlockOutputsBase> = {\n [Key in keyof Outputs]: ExtractValueType<Outputs[Key]>;\n};\n\nexport function wrapOutputs<Outputs extends BlockOutputsBase>(\n outputs: Outputs\n): SimpleOutputs<Outputs> {\n return new Proxy(outputs, {\n get(target, key: string) {\n return readOutput(target[key]);\n }\n }) as SimpleOutputs<Outputs>;\n}\n","import {\n ActGetField,\n ActGetFromCtx,\n ActGetImmediate,\n ActGetResourceField,\n ActGetResourceValueAsJson,\n ActMakeObject,\n ActMapRecordValues,\n ActMapResourceFields,\n ActMapArrayValues,\n ActIsEmpty,\n ActNot,\n ActIsolate,\n ActGetBlobContentAsJson,\n ActGetBlobContentAsString,\n ActGetBlobContent,\n ActAnd,\n ActOr,\n ActMakeArray,\n ActFlatten,\n ActGetDownloadedBlobContent,\n ActGetOnDemandBlobContent,\n ActImportProgress,\n ActGetLastLogs,\n ActGetProgressLog,\n ActGetLogHandle\n} from './actions_kinds';\nimport { ExtractAction, POCExtractAction, PrimitiveOrConfig, TypedConfig } from './type_engine';\nimport { Cfg } from './model';\nimport { CheckedSyncConf } from './type_util';\n\n//\n// Helpers\n//\n\nfunction primitiveToConfig(value: PrimitiveOrConfig): TypedConfig {\n if (\n typeof value === 'string' ||\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n )\n return getImmediate(value);\n else return value as TypedConfig;\n}\n\n//\n// Context\n//\n\nexport function getFromCfg<const V extends string>(variable: V): TypedConfig<ActGetFromCtx<V>> {\n return { type: 'GetFromCtx', variable } as Cfg as any;\n}\n\n//\n// Isolate\n//\n\nexport function isolate<const Config extends TypedConfig>(\n cfg: Config\n): TypedConfig<ActIsolate<ExtractAction<Config>>> {\n return {\n type: 'Isolate',\n cfg\n } as Cfg as any;\n}\n\n//\n// Well-known Context Vars\n//\n\nexport const Args = getFromCfg('$args');\nexport const It = getFromCfg('$it');\nexport const MainOutputs = getFromCfg('$prod');\nexport const StagingOutputs = getFromCfg('$staging');\nexport const UiState = getFromCfg('$ui');\n\n//\n// Json\n//\n\nexport function getImmediate<const T>(value: T): TypedConfig<ActGetImmediate<T>> {\n return { type: 'Immediate', value } as Cfg as any;\n}\n\nexport function makeObject<const T extends Record<string, PrimitiveOrConfig>>(\n template: T\n): TypedConfig<ActMakeObject<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: Record<string, TypedConfig> = {};\n for (const [k, cfg] of Object.entries(template)) normalizedTemplate[k] = primitiveToConfig(cfg);\n return {\n type: 'MakeObject',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function makeArray<const T extends PrimitiveOrConfig[]>(\n ...template: T\n): TypedConfig<ActMakeArray<{ [Key in keyof T]: POCExtractAction<T[Key]> }>> {\n const normalizedTemplate: TypedConfig[] = [];\n for (const cfg of template) normalizedTemplate.push(primitiveToConfig(cfg));\n return {\n type: 'MakeArray',\n template: normalizedTemplate\n } as Cfg as any;\n}\n\nexport function getJsonField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetJsonField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapRecordValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapRecordValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapRecordValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<const Source extends TypedConfig, const Mapping extends TypedConfig>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source & CheckedSyncConf<Source>,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping & CheckedSyncConf<Mapping>,\n itVar: ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapArrayValues<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapArrayValues<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapArrayValues',\n source,\n mapping,\n itVar\n } as Cfg as any;\n}\n\nexport function flatten<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActFlatten<ExtractAction<Source>>> {\n return {\n type: 'Flatten',\n source\n } as Cfg as any;\n}\n\n//\n// Boolean\n//\n\nexport function isEmpty<const Arg extends TypedConfig>(\n arg: Arg\n): TypedConfig<ActIsEmpty<ExtractAction<Arg>>> {\n return {\n type: 'IsEmpty',\n arg\n } as Cfg as any;\n}\n\nexport function not<const Operand extends TypedConfig>(\n operand: Operand\n): TypedConfig<ActNot<ExtractAction<Operand>>> {\n return {\n type: 'Not',\n operand\n } as Cfg as any;\n}\n\nexport function and<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActAnd<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'And',\n operand1,\n operand2\n } as Cfg as any;\n}\n\nexport function or<const Operand1 extends TypedConfig, const Operand2 extends TypedConfig>(\n operand1: Operand1,\n operand2: Operand2\n): TypedConfig<ActOr<ExtractAction<Operand1>, ExtractAction<Operand2>>> {\n return {\n type: 'Or',\n operand1,\n operand2\n } as Cfg as any;\n}\n\n//\n// Resources\n//\n\nexport function getResourceField<\n const Source extends PrimitiveOrConfig,\n const Field extends PrimitiveOrConfig\n>(\n source: Source,\n field: Field\n): TypedConfig<ActGetResourceField<POCExtractAction<Source>, POCExtractAction<Field>>> {\n return {\n type: 'GetResourceField',\n source: primitiveToConfig(source),\n field: primitiveToConfig(field)\n } as Cfg as any;\n}\n\nexport function getResourceValueAsJson<T>() {\n return function <const Source extends PrimitiveOrConfig>(\n source: Source\n ): TypedConfig<ActGetResourceValueAsJson<POCExtractAction<Source>, T>> {\n return {\n type: 'GetResourceValueAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig\n>(\n source: Source,\n mapping: Mapping\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, '$it'>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>>;\nexport function mapResourceFields<\n const Source extends TypedConfig,\n const Mapping extends TypedConfig,\n const ItVar extends string\n>(\n source: Source,\n mapping: Mapping,\n itVar: ItVar = '$it' as ItVar\n): TypedConfig<ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>> {\n return {\n type: 'MapResourceFields',\n source,\n mapping,\n itVar\n } as Cfg as TypedConfig<\n ActMapResourceFields<ExtractAction<Source>, ExtractAction<Mapping>, ItVar>\n >;\n}\n\n//\n// Download Blobs\n//\n\nexport function getBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsString<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetBlobContentAsString<ExtractAction<Source>>> {\n return {\n type: 'GetBlobContentAsString',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getBlobContentAsJson<T>() {\n return function <const Source extends TypedConfig>(\n source: Source\n ): TypedConfig<ActGetBlobContentAsJson<ExtractAction<Source>, T>> {\n return {\n type: 'GetBlobContentAsJson',\n source: primitiveToConfig(source)\n } as Cfg as any;\n };\n}\n\nexport function getDownloadedBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetDownloadedBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetDownloadedBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\nexport function getOnDemandBlobContent<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetOnDemandBlobContent<ExtractAction<Source>>> {\n return {\n type: 'GetOnDemandBlobContent',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Upload Blobs\n//\n\nexport function getImportProgress<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActImportProgress<ExtractAction<Source>>> {\n return {\n type: 'GetImportProgress',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n\n//\n// Logs\n//\n\nexport function getLastLogs<const Source extends TypedConfig>(\n source: Source,\n lines: number\n): TypedConfig<ActGetLastLogs<ExtractAction<Source>>> {\n return {\n type: 'GetLastLogs',\n source: primitiveToConfig(source),\n lines\n } as Cfg as any;\n}\n\nexport function getProgressLog<const Source extends TypedConfig>(\n source: Source,\n patternToSearch: string\n): TypedConfig<ActGetProgressLog<ExtractAction<Source>>> {\n return {\n type: 'GetProgressLog',\n source: primitiveToConfig(source),\n patternToSearch\n } as Cfg as any;\n}\n\nexport function getLogHandle<const Source extends TypedConfig>(\n source: Source\n): TypedConfig<ActGetLogHandle<ExtractAction<Source>>> {\n return {\n type: 'GetLogHandle',\n source: primitiveToConfig(source)\n } as Cfg as any;\n}\n","import {} from './global';\nimport { Platforma, PlatformaFactory } from './platforma';\nimport { BlockConfig } from './builder';\nimport { FutureHandle, GlobalCfgRenderCtx } from './render/internal';\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== 'undefined' || typeof globalThis.platforma !== 'undefined'\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance(config?: BlockConfig): Platforma {\n if (config && typeof globalThis.getPlatforma === 'function')\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== 'undefined') return globalThis.platforma;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== 'undefined') return globalThis.cfgRenderCtx;\n else throw new Error('Not in config rendering context');\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n","import { FutureAwait, FutureHandle } from './internal';\nimport { registerFutureAwait } from '../internal';\n\nexport class FutureRef<T = unknown> {\n private isResolved = false;\n private resolvedValue?: T;\n\n constructor(\n private readonly handle: FutureHandle,\n private readonly postProcess: (value: unknown) => T = (v) => v as T\n ) {\n registerFutureAwait(handle, (value) => {\n this.resolvedValue = postProcess(value);\n this.isResolved = true;\n });\n }\n\n public map<R>(mapping: (v: T) => R): FutureRef<R> {\n return new FutureRef<R>(this.handle, (v) => mapping(this.postProcess(v)));\n }\n\n public mapDefined<R>(mapping: (v: NonNullable<T>) => R): FutureRef<R | undefined> {\n return new FutureRef<R | undefined>(this.handle, (v) => {\n const vv = this.postProcess(v);\n return vv ? mapping(vv) : undefined;\n });\n }\n\n toJSON(): any {\n return this.isResolved\n ? this.resolvedValue\n : ({ __awaited_futures__: [this.handle] } as FutureAwait);\n }\n}\n\nexport type ExtractFutureRefType<Ref extends FutureRef> =\n Ref extends FutureRef<infer T> ? T : never;\n","import {\n AnyLogHandle,\n ImportProgress,\n LocalBlobHandleAndSize,\n PColumn,\n PObject,\n RemoteBlobHandleAndSize,\n isPColumn,\n mapPObjectData\n} from '@milaboratories/pl-model-common';\nimport { getCfgRenderCtx } from '../internal';\nimport { FutureRef } from './future';\nimport { AccessorHandle } from './internal';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\n\nfunction ifDef<T, R>(value: T | undefined, cb: (value: T) => R): R | undefined {\n return value === undefined ? undefined : cb(value);\n}\n\nfunction wrapBuffer(buf: ArrayBuffer | undefined): Uint8Array | undefined {\n return buf === undefined ? undefined : new Uint8Array(buf);\n}\n\nfunction wrapAccessor(handle: AccessorHandle | undefined): TreeNodeAccessor | undefined {\n return handle === undefined ? undefined : new TreeNodeAccessor(handle);\n}\n\n/** Represent resource tree node accessor */\nexport class TreeNodeAccessor {\n constructor(public readonly handle: AccessorHandle) {}\n\n public resolve(\n ...steps: [\n Omit<FieldTraversalStep, 'errorIfFieldNotSet'> & {\n errorIfFieldNotAssigned: true;\n }\n ]\n ): TreeNodeAccessor;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined;\n public resolve(...steps: (FieldTraversalStep | string)[]): TreeNodeAccessor | undefined {\n return this.resolveWithCommon({}, ...steps);\n }\n\n public resolveWithCommon(\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().resolveWithCommon(this.handle, commonOptions, ...steps));\n }\n\n public get resourceType(): ResourceType {\n return getCfgRenderCtx().getResourceType(this.handle);\n }\n\n public getInputsLocked(): boolean {\n return getCfgRenderCtx().getInputsLocked(this.handle);\n }\n\n public getOutputsLocked(): boolean {\n return getCfgRenderCtx().getOutputsLocked(this.handle);\n }\n\n public getIsReadyOrError(): boolean {\n return getCfgRenderCtx().getIsReadyOrError(this.handle);\n }\n\n public getIsFinal(): boolean {\n return getCfgRenderCtx().getIsFinal(this.handle);\n }\n\n public getError(): TreeNodeAccessor | undefined {\n return wrapAccessor(getCfgRenderCtx().getError(this.handle));\n }\n\n public listInputFields(): string[] {\n return getCfgRenderCtx().listInputFields(this.handle);\n }\n\n public listOutputFields(): string[] {\n return getCfgRenderCtx().listOutputFields(this.handle);\n }\n\n public listDynamicFields(): string[] {\n return getCfgRenderCtx().listDynamicFields(this.handle);\n }\n\n public getKeyValueBase64(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueBase64(this.handle, key);\n }\n\n public getKeyValueAsString(key: string): string | undefined {\n return getCfgRenderCtx().getKeyValueAsString(this.handle, key);\n }\n\n public getKeyValueAsJson<T>(key: string): T {\n const content = this.getKeyValueAsString(key);\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n public getDataBase64(): string | undefined {\n return getCfgRenderCtx().getDataBase64(this.handle);\n }\n\n public getDataAsString(): string | undefined {\n return getCfgRenderCtx().getDataAsString(this.handle);\n }\n\n public getDataAsJson<T>(): T {\n const content = this.getDataAsString();\n if (content == undefined) throw new Error('Resource has no content.');\n return JSON.parse(content);\n }\n\n /**\n *\n */\n public getPColumns(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): PColumn<TreeNodeAccessor>[] | undefined {\n const result = this.parsePObjectCollection(errorOnUnknownField, prefix);\n if (result === undefined) return undefined;\n\n const pf = Object.entries(result).map(([, obj]) => {\n if (!isPColumn(obj)) throw new Error(`not a PColumn (kind = ${obj.spec.kind})`);\n return obj;\n });\n\n return pf;\n }\n\n /**\n *\n */\n public parsePObjectCollection(\n errorOnUnknownField: boolean = false,\n prefix: string = ''\n ): Record<string, PObject<TreeNodeAccessor>> | undefined {\n const pObjects = getCfgRenderCtx().parsePObjectCollection(\n this.handle,\n errorOnUnknownField,\n prefix\n );\n if (pObjects === undefined) return undefined;\n const result: Record<string, PObject<TreeNodeAccessor>> = {};\n for (const [key, value] of Object.entries(pObjects))\n result[key] = mapPObjectData(value, (c) => new TreeNodeAccessor(c));\n return result;\n }\n\n public getFileContentAsBase64(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsBase64(this.handle));\n }\n\n public getFileContentAsString(): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getBlobContentAsString(this.handle));\n }\n\n public getFileContentAsJson<T>(): FutureRef<T | undefined> {\n return new FutureRef<string | undefined>(\n getCfgRenderCtx().getBlobContentAsString(this.handle)\n ).mapDefined((v) => JSON.parse(v) as T);\n }\n\n /**\n * @deprecated use getFileContentAsBase64\n */\n public getBlobContentAsBase64(): FutureRef<string | undefined> {\n return this.getFileContentAsBase64();\n }\n\n /**\n * @deprecated use getFileContentAsString\n */\n public getBlobContentAsString(): FutureRef<string | undefined> {\n return this.getFileContentAsString();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getFileHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getDownloadedBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getFileHandle\n */\n public getDownloadedBlobHandle(): FutureRef<LocalBlobHandleAndSize | undefined> {\n return this.getFileHandle();\n }\n\n /**\n * @returns downloaded file handle\n */\n public getRemoteFileHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return new FutureRef(getCfgRenderCtx().getOnDemandBlobContentHandle(this.handle));\n }\n\n /**\n * @deprecated use getRemoteFileHandle\n */\n public getOnDemandBlobHandle(): FutureRef<RemoteBlobHandleAndSize | undefined> {\n return this.getRemoteFileHandle();\n }\n\n public getImportProgress(): FutureRef<ImportProgress> {\n return new FutureRef(getCfgRenderCtx().getImportProgress(this.handle));\n }\n\n public getLastLogs(nLines: number): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getLastLogs(this.handle, nLines));\n }\n\n public getProgressLog(patternToSearch: string): FutureRef<string | undefined> {\n return new FutureRef(getCfgRenderCtx().getProgressLog(this.handle, patternToSearch));\n }\n\n public getLogHandle(): FutureRef<AnyLogHandle | undefined> {\n return new FutureRef(getCfgRenderCtx().getLogHandle(this.handle));\n }\n}\n","import { Optional } from 'utility-types';\nimport { Branded } from '../branding';\nimport { CommonFieldTraverseOps, FieldTraversalStep, ResourceType } from './traversal_ops';\nimport {\n Option,\n PColumn,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n ResultCollection,\n ValueOrError\n} from '@milaboratories/pl-model-common';\n\nexport const StagingAccessorName = 'staging';\nexport const MainAccessorName = 'main';\n\nexport type AccessorHandle = Branded<string, 'AccessorHandle'>;\nexport type FutureHandle = Branded<string, 'FutureHandle'>;\n\nexport interface GlobalCfgRenderCtxMethods<AHandle = AccessorHandle, FHandle = FutureHandle> {\n //\n // Root accessor creation\n //\n\n getAccessorHandleByName(name: string): AHandle | undefined;\n\n //\n // Basic resource accessor actions\n //\n\n resolveWithCommon(\n handle: AHandle,\n commonOptions: CommonFieldTraverseOps,\n ...steps: (FieldTraversalStep | string)[]\n ): AHandle | undefined;\n\n getResourceType(handle: AHandle): ResourceType;\n\n getInputsLocked(handle: AHandle): boolean;\n\n getOutputsLocked(handle: AHandle): boolean;\n\n getIsReadyOrError(handle: AHandle): boolean;\n\n getIsFinal(handle: AHandle): boolean;\n\n getError(handle: AHandle): AHandle | undefined;\n\n listInputFields(handle: AHandle): string[];\n\n listOutputFields(handle: AHandle): string[];\n\n listDynamicFields(handle: AHandle): string[];\n\n getKeyValueBase64(handle: AHandle, key: string): string | undefined;\n\n getKeyValueAsString(handle: AHandle, key: string): string | undefined;\n\n getDataBase64(handle: AHandle): string | undefined;\n\n getDataAsString(handle: AHandle): string | undefined;\n\n /** If not final returns undefined */\n parsePObjectCollection(\n handle: AHandle,\n errorOnUnknownField: boolean,\n prefix: string\n ): Record<string, PObject<AHandle>> | undefined;\n\n //\n // Blob\n //\n\n getBlobContentAsBase64(handle: AHandle): FHandle; // string | undefined\n\n getBlobContentAsString(handle: AHandle): FHandle; // string | undefined\n\n getDownloadedBlobContentHandle(handle: AHandle): FHandle; // LocalBlobHandleAndSize | undefined;\n\n getOnDemandBlobContentHandle(handle: AHandle): FHandle; // RemoteBlobHandleAndSize | undefined;\n\n //\n // Import progress\n //\n\n getImportProgress(handle: AHandle): FHandle; // ImportProgress;\n\n //\n // Logs\n //\n\n getLastLogs(handle: AHandle, nLines: number): FHandle; // string | undefined;\n\n getProgressLog(handle: AHandle, patternToSearch: string): FHandle; // string | undefined;\n\n getLogHandle(handle: AHandle): FHandle; // AnyLogHandle | undefined;\n\n //\n // Blocks\n //\n\n getBlockLabel(blockId: string): string;\n\n //\n // Result Pool\n //\n\n getDataFromResultPool(): ResultCollection<PObject<AHandle>>;\n\n getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<AHandle, string>>, 'id'>\n >;\n\n getSpecsFromResultPool(): ResultCollection<PObjectSpec>;\n\n calculateOptions(predicate: PSpecPredicate): Option[];\n\n //\n // PFrame / PTable\n //\n\n createPFrame(def: PFrameDef<AHandle>): PFrameHandle;\n\n createPTable(def: PTableDef<PColumn<AHandle>>): PTableHandle;\n}\n\nexport interface GlobalCfgRenderCtx extends GlobalCfgRenderCtxMethods {\n readonly args: string;\n readonly uiState?: string;\n readonly callbackRegistry: Record<string, Function>;\n}\n\nexport type FutureAwait = {\n __awaited_futures__: FutureHandle[];\n};\n\nexport function isFutureAwait(obj: unknown): obj is FutureAwait {\n return typeof obj === 'object' && obj !== null && '__awaited_futures__' in obj;\n}\n\nfunction addAllFutureAwaits(set: Set<string>, visited: Set<unknown>, node: unknown) {\n if (visited.has(node)) return;\n visited.add(node);\n\n const type = typeof node;\n if (type === 'object') {\n if (isFutureAwait(node)) node.__awaited_futures__.forEach((a) => set.add(a));\n else if (Array.isArray(node))\n for (const nested of node) addAllFutureAwaits(set, visited, nested);\n else\n for (const [, nested] of Object.entries(node as object))\n if (nested !== node) addAllFutureAwaits(set, visited, nested);\n }\n}\n\nexport function getAllFutureAwaits(obj: unknown): Set<string> {\n const set = new Set<string>();\n addAllFutureAwaits(set, new Set(), obj);\n return set;\n}\n","import {\n Option,\n PColumn,\n PColumnSpec,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting,\n Ref,\n ResultCollection,\n ValueOrError,\n isPColumnSpec,\n mapPObjectData,\n mapPTableDef,\n mapValueInVOE\n} from '@milaboratories/pl-model-common';\nimport { Optional } from 'utility-types';\nimport { getCfgRenderCtx } from '../internal';\nimport { TreeNodeAccessor } from './accessor';\nimport { FutureRef } from './future';\nimport { GlobalCfgRenderCtx, MainAccessorName, StagingAccessorName } from './internal';\n\nexport class ResultPool {\n private readonly ctx: GlobalCfgRenderCtx = getCfgRenderCtx();\n\n /**\n * @deprecated use getOptions()\n */\n public calculateOptions(predicate: PSpecPredicate): Option[] {\n return this.ctx.calculateOptions(predicate);\n }\n\n private defaultLabelFn = (spec: PObjectSpec, ref: Ref) =>\n spec.annotations?.['pl7.app/label'] ?? `Unlabelled`;\n\n public getOptions(\n predicate: (spec: PObjectSpec) => boolean,\n labelFn: (spec: PObjectSpec, ref: Ref) => string = this.defaultLabelFn\n ): Option[] {\n return this.getSpecs()\n .entries.filter((s) => predicate(s.obj))\n .map((s) => ({\n ref: s.ref,\n label: labelFn(s.obj, s.ref)\n }));\n }\n\n /**\n * @deprecated use getData()\n */\n public getDataFromResultPool(): ResultCollection<PObject<TreeNodeAccessor>> {\n return this.getData();\n }\n\n public getData(): ResultCollection<PObject<TreeNodeAccessor>> {\n const result = this.ctx.getDataFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: new TreeNodeAccessor(e.obj.data)\n }\n }))\n };\n }\n\n /**\n * @deprecated use getDataWithErrors()\n */\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n return this.getDataWithErrors();\n }\n\n public getDataWithErrors(): ResultCollection<\n Optional<PObject<ValueOrError<TreeNodeAccessor, string>>, 'id'>\n > {\n const result = this.ctx.getDataWithErrorsFromResultPool();\n return {\n isComplete: result.isComplete,\n entries: result.entries.map((e) => ({\n ref: e.ref,\n obj: {\n ...e.obj,\n data: mapValueInVOE(e.obj.data, (handle) => new TreeNodeAccessor(handle))\n }\n }))\n };\n }\n\n /**\n * @deprecated use getSpecs()\n */\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n return this.getSpecs();\n }\n\n public getSpecs(): ResultCollection<PObjectSpec> {\n return this.ctx.getSpecsFromResultPool();\n }\n\n /**\n * @param ref a Ref\n * @returns data associated with the ref\n */\n public getDataByRef(ref: Ref): PObject<TreeNodeAccessor> | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getData().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param ref a Ref\n * @returns object spec associated with the ref\n */\n public getSpecByRef(ref: Ref): PObjectSpec | undefined {\n // https://github.com/milaboratory/platforma/issues/100\n // @TODO use native pool method when available\n return this.getSpecs().entries.find(\n (f) => f.ref.blockId === ref.blockId && f.ref.name === ref.name\n )?.obj;\n }\n\n /**\n * @param spec object specification\n * @returns array of data objects with compatible specs\n */\n public findDataWithCompatibleSpec(spec: PColumnSpec): PObject<TreeNodeAccessor>[] {\n const result: PObject<TreeNodeAccessor>[] = [];\n\n out: for (const data of this.getData().entries) {\n if (!isPColumnSpec(data.obj.spec)) {\n continue;\n }\n\n const oth = data.obj.spec;\n\n if (spec.name !== oth.name) {\n continue;\n }\n\n if (spec.valueType !== oth.valueType) {\n continue;\n }\n\n if (spec.axesSpec.length !== oth.axesSpec.length) {\n continue;\n }\n\n if (!matchDomain(spec.domain, oth.domain)) {\n continue;\n }\n\n for (let i = 0; i < spec.axesSpec.length; ++i) {\n const qAx = spec.axesSpec[i];\n const tAx = oth.axesSpec[i];\n if (qAx.name !== tAx.name) {\n continue out;\n }\n if (qAx.type !== tAx.type) {\n continue out;\n }\n if (!matchDomain(qAx.domain, tAx.domain)) {\n continue out;\n }\n }\n\n result.push(data.obj);\n }\n return result;\n }\n}\n\nfunction matchDomain(query?: Record<string, string>, target?: Record<string, string>) {\n if (query === undefined) return target === undefined;\n if (target === undefined) return true;\n for (const k in target) {\n if (query[k] !== target[k]) return false;\n }\n return true;\n}\n\nexport class RenderCtx<Args, UiState> {\n private readonly ctx: GlobalCfgRenderCtx;\n\n public readonly args: Args;\n public readonly uiState: UiState | undefined;\n\n constructor() {\n this.ctx = getCfgRenderCtx();\n this.args = JSON.parse(this.ctx.args);\n this.uiState = this.ctx.uiState !== undefined ? JSON.parse(this.ctx.uiState) : undefined;\n }\n\n private getNamedAccessor(name: string): TreeNodeAccessor | undefined {\n const accessorId = this.ctx.getAccessorHandleByName(name);\n return accessorId ? new TreeNodeAccessor(accessorId) : undefined;\n }\n\n public get prerun(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(StagingAccessorName);\n }\n\n /**\n * @deprecated use prerun\n */\n public get precalc(): TreeNodeAccessor | undefined {\n return this.prerun;\n }\n\n /**\n * @deprecated use prerun\n */\n public get stagingOutput(): TreeNodeAccessor | undefined {\n return this.precalc;\n }\n\n public get outputs(): TreeNodeAccessor | undefined {\n return this.getNamedAccessor(MainAccessorName);\n }\n\n /**\n * @deprecated use outputs\n */\n public get mainOutput(): TreeNodeAccessor | undefined {\n return this.outputs;\n }\n\n public readonly resultPool = new ResultPool();\n\n public createPFrame(def: PFrameDef<TreeNodeAccessor>): PFrameHandle {\n return this.ctx.createPFrame(def.map((c) => mapPObjectData(c, (d) => d.handle)));\n }\n\n public createPTable(def: PTableDef<PColumn<TreeNodeAccessor>>): PTableHandle;\n public createPTable(def: {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }): PTableHandle;\n public createPTable(\n def:\n | PTableDef<PColumn<TreeNodeAccessor>>\n | {\n columns: PColumn<TreeNodeAccessor>[];\n filters?: PTableRecordFilter[];\n /** Table sorting */\n sorting?: PTableSorting[];\n }\n ): PTableHandle {\n var rawDef: PTableDef<PColumn<TreeNodeAccessor>>;\n if ('columns' in def) {\n rawDef = {\n src: {\n type: 'inner',\n entries: def.columns.map((c) => ({ type: 'column', column: c }))\n },\n filters: def.filters ?? [],\n sorting: def.sorting ?? []\n };\n } else {\n rawDef = def;\n }\n return this.ctx.createPTable(mapPTableDef(rawDef, (po) => mapPObjectData(po, (d) => d.handle)));\n }\n\n public getBlockLabel(blockId: string): string {\n return this.ctx.getBlockLabel(blockId);\n }\n}\n\nexport type RenderFunction<Args = unknown, UiState = unknown, Ret = unknown> = (\n rCtx: RenderCtx<Args, UiState>\n) => Ret;\n\nexport type UnwrapFutureRef<K> =\n K extends FutureRef<infer T>\n ? T\n : K extends bigint | boolean | null | number | string | symbol | undefined\n ? K\n : { [key in keyof K]: UnwrapFutureRef<K[key]> };\n\nexport type InferRenderFunctionReturn<RF extends Function> = RF extends (...args: any) => infer R\n ? UnwrapFutureRef<R>\n : never;\n","export const PlatformaSDKVersion = '1.8.19';\n","import { BlockRenderingMode, BlockSection, ValueOrErrors } from '@milaboratories/pl-model-common';\nimport { Checked, ConfigResult, getImmediate, PlResourceEntry, TypedConfig } from './config';\nimport { getPlatformaInstance, isInUI, tryRegisterCallback } from './internal';\nimport { Platforma } from './platforma';\nimport { InferRenderFunctionReturn, RenderCtx, RenderFunction } from './render';\nimport { PlatformaSDKVersion } from './version';\n\ntype StdCtxArgsOnly<Args, UiState = undefined> = {\n readonly $blockId: string;\n readonly $args: Args;\n readonly $ui: UiState;\n};\n\nexport type StdCtx<Args, UiState = undefined> = StdCtxArgsOnly<Args, UiState> & {\n readonly $prod: PlResourceEntry;\n readonly $staging: PlResourceEntry;\n};\n\nexport type ResolveCfgType<Cfg extends TypedConfig, Args, UiState = undefined> = ConfigResult<\n Cfg,\n StdCtx<Args, UiState>\n>;\n\ntype SectionsExpectedType = readonly BlockSection[];\n\ntype SectionsCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends SectionsExpectedType ? true : false\n>;\n\ntype SectionsRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends SectionsExpectedType ? true : false\n>;\n\ntype InputsValidExpectedType = boolean;\n\ntype InputsValidCfgChecked<Cfg extends TypedConfig, Args, UiState> = Checked<\n Cfg,\n ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>> extends InputsValidExpectedType ? true : false\n>;\n\ntype InputsValidRFChecked<RF extends Function> = Checked<\n RF,\n InferRenderFunctionReturn<RF> extends InputsValidExpectedType ? true : false\n>;\n\nexport type Code = {\n type: 'plain';\n content: string;\n};\n\n/** Field key to attach ConfAction information to a config type. */\ndeclare const __function_handle__: unique symbol;\n\n/** Creates branded Cfg type */\nexport type FunctionHandle<Return = unknown> = string & { [__function_handle__]: Return };\n\nexport type ExtractFunctionHandleReturn<Func extends FunctionHandle> =\n Func[typeof __function_handle__];\n\nexport type TypedConfigOrFunctionHandle = TypedConfig | FunctionHandle;\n\nexport function isFunctionHandle(cfgOrFh: TypedConfigOrFunctionHandle): cfgOrFh is FunctionHandle {\n return typeof cfgOrFh === 'string';\n}\n\ntype OnlyString<S> = S extends string ? S : '';\n\n// prettier-ignore\nexport type DeriveHref<S> = S extends readonly BlockSection[]\n ? OnlyString<Extract<S[number], { type: 'link' }>['href']>\n : never;\n\n/** This structure is rendered from the configuration, type can accommodate any\n * version of config structure. */\nexport type BlockConfigUniversal<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = {\n /** SDK version used by the block */\n readonly sdkVersion: string;\n\n /** Main rendering mode for the block */\n readonly renderingMode: BlockRenderingMode;\n\n /** Initial value for the args when block is added to the project */\n readonly initialArgs: Args;\n\n /** @deprecated */\n readonly canRun?: TypedConfigOrFunctionHandle;\n\n /**\n * Config to determine whether the block can be executed with current\n * arguments.\n *\n * Optional to support earlier SDK version configs.\n * */\n readonly inputsValid?: TypedConfigOrFunctionHandle;\n\n /** Configuration to derive list of section for the left overview panel */\n readonly sections: TypedConfigOrFunctionHandle;\n\n /** Configuration for the output cells */\n readonly outputs: Outputs;\n\n /** Config code bundle */\n readonly code?: Code;\n};\n\n/** This structure is rendered from the configuration */\nexport type BlockConfig<\n Args = unknown,\n Outputs extends Record<string, TypedConfigOrFunctionHandle> = Record<\n string,\n TypedConfigOrFunctionHandle\n >\n> = Required<Omit<BlockConfigUniversal<Args, Outputs>, 'canRun' | 'code'>> &\n Pick<BlockConfigUniversal<Args, Outputs>, 'code'>;\n\n/** Takes universal config, and converts it into latest structure */\nexport function normalizeBlockConfig<\n Args,\n Outputs extends Record<string, TypedConfigOrFunctionHandle>\n>(cfg: BlockConfigUniversal<Args, Outputs>): BlockConfig<Args, Outputs> {\n if (cfg.inputsValid !== undefined) return cfg as BlockConfig<Args, Outputs>;\n else {\n if (cfg.canRun === undefined)\n throw new Error(`Malformed config, SDK version ${cfg.sdkVersion}`);\n const latest = { ...cfg, inputsValid: cfg.canRun };\n delete latest['canRun'];\n return latest;\n }\n}\n\n/** Main entry point that each block should use in it's \"config\" module. Don't forget\n * to call {@link done()} at the end of configuration. Value returned by this builder must be\n * exported as constant with name \"platforma\" from the \"config\" module. */\nexport class BlockModel<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState,\n Href extends `/${string}` = '/'\n> {\n private constructor(\n private readonly _renderingMode: BlockRenderingMode,\n private readonly _initialArgs: Args | undefined,\n private readonly _outputs: OutputsCfg,\n private readonly _inputsValid: TypedConfigOrFunctionHandle,\n private readonly _sections: TypedConfigOrFunctionHandle\n ) { }\n\n /** Initiates configuration builder */\n public static create<Args, UiState = undefined>(\n renderingMode: BlockRenderingMode = 'Heavy'\n ): BlockModel<Args, {}, UiState> {\n return new BlockModel<Args, {}, UiState>(\n renderingMode,\n undefined,\n {},\n getImmediate(true),\n getImmediate([])\n );\n }\n\n /**\n * Add output cell to the configuration\n *\n * @param key cell name, that can be used to retrieve the rendered value\n * @param cfg configuration describing how to render cell value from the blocks\n * workflow outputs\n * */\n public output<const Key extends string, const Cfg extends TypedConfig>(\n key: Key,\n cfg: Cfg\n ): BlockModel<Args, OutputsCfg & { [K in Key]: Cfg }, UiState, Href>;\n public output<const Key extends string, const RF extends RenderFunction<Args, UiState>>(\n key: Key,\n rf: RF\n ): BlockModel<\n Args,\n OutputsCfg & { [K in Key]: FunctionHandle<InferRenderFunctionReturn<RF>> },\n UiState,\n Href\n >;\n public output(\n key: string,\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n if (typeof cfgOrRf === 'function') {\n const functionHandle = `output#${key}` as FunctionHandle;\n tryRegisterCallback(functionHandle, () => cfgOrRf(new RenderCtx()));\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: functionHandle\n },\n this._inputsValid,\n this._sections\n );\n } else\n return new BlockModel(\n this._renderingMode,\n this._initialArgs,\n {\n ...this._outputs,\n [key]: cfgOrRf\n },\n this._inputsValid,\n this._sections\n );\n }\n\n /** @deprecated */\n public canRun<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href> {\n return this.inputsValid(cfg as any);\n }\n\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** Sets custom configuration predicate on the block args at which block can be executed */\n public argsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public argsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (typeof cfgOrRf === 'function') {\n tryRegisterCallback('inputsValid', () => cfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n 'inputsValid' as FunctionHandle,\n this._sections\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n cfgOrRf,\n this._sections\n );\n }\n\n /** @deprecated use argsValid() */\n public inputsValid<Cfg extends TypedConfig>(\n cfg: Cfg & InputsValidCfgChecked<Cfg, Args, UiState>\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n /** @deprecated use argsValid() */\n public inputsValid<RF extends RenderFunction<Args, UiState, boolean>>(\n rf: RF\n ): BlockModel<Args, OutputsCfg, UiState, Href>;\n public inputsValid(\n cfgOrRf: TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n return this.argsValid(cfgOrRf as any);\n }\n\n /** Sets the config to generate list of section in the left block overviews panel */\n public sections<const S extends SectionsExpectedType,>(rf: S): BlockModel<Args, OutputsCfg, UiState, DeriveHref<S>>;\n public sections<\n const Ret extends SectionsExpectedType,\n const RF extends RenderFunction<Args, UiState, Ret>\n >(rf: RF): BlockModel<Args, OutputsCfg, UiState, DeriveHref<ReturnType<RF>>>;\n public sections<const Cfg extends TypedConfig>(\n cfg: Cfg & SectionsCfgChecked<Cfg, Args, UiState>\n ): BlockModel<\n Args,\n OutputsCfg,\n UiState,\n DeriveHref<ConfigResult<Cfg, StdCtxArgsOnly<Args, UiState>>>\n >;\n public sections(\n arrOrCfgOrRf: SectionsExpectedType | TypedConfig | Function\n ): BlockModel<Args, OutputsCfg, UiState, `/${string}`> {\n if (Array.isArray(arrOrCfgOrRf)){\n return this.sections(getImmediate(arrOrCfgOrRf))\n } else if (typeof arrOrCfgOrRf === 'function') {\n tryRegisterCallback('sections', () => arrOrCfgOrRf(new RenderCtx()));\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n 'sections' as FunctionHandle\n );\n } else\n return new BlockModel<Args, OutputsCfg, UiState>(\n this._renderingMode,\n this._initialArgs,\n this._outputs,\n this._inputsValid,\n arrOrCfgOrRf as TypedConfig\n );\n }\n\n\n /** Sets initial args for the block, this value must be specified. */\n public initialArgs(value: Args): BlockModel<Args, OutputsCfg, UiState, Href> {\n return new BlockModel<Args, OutputsCfg, UiState, Href>(\n this._renderingMode,\n value,\n this._outputs,\n this._inputsValid,\n this._sections\n );\n }\n\n /** Renders all provided block settings into a pre-configured platforma API\n * instance, that can be used in frontend to interact with block state, and\n * other features provided by the platforma to the block. */\n public done(): Platforma<\n Args,\n InferOutputsFromConfigs<Args, OutputsCfg, UiState>,\n UiState,\n Href\n > {\n if (this._initialArgs === undefined) throw new Error('Initial arguments not set.');\n\n const config: BlockConfig<Args, OutputsCfg> = {\n sdkVersion: PlatformaSDKVersion,\n renderingMode: this._renderingMode,\n initialArgs: this._initialArgs,\n inputsValid: this._inputsValid,\n sections: this._sections,\n outputs: this._outputs\n };\n\n if (!isInUI())\n // we are in the configuration rendering routine, not in actual UI\n return { config } as any;\n // normal operation inside the UI\n else return getPlatformaInstance(config) as any;\n }\n}\n\nexport type InferOutputType<CfgOrFH, Args, UiState> = CfgOrFH extends TypedConfig\n ? ResolveCfgType<CfgOrFH, Args, UiState>\n : CfgOrFH extends FunctionHandle\n ? ExtractFunctionHandleReturn<CfgOrFH>\n : never;\n\ntype InferOutputsFromConfigs<\n Args,\n OutputsCfg extends Record<string, TypedConfigOrFunctionHandle>,\n UiState\n> = {\n [Key in keyof OutputsCfg]: ValueOrErrors<InferOutputType<OutputsCfg[Key], Args, UiState>>;\n};\n","import {\n getAxisId,\n isPColumn,\n JoinEntry,\n matchAxisId,\n PColumn,\n PColumnIdAndSpec,\n PTableHandle,\n PTableRecordFilter,\n PTableSorting\n} from '@milaboratories/pl-model-common';\nimport { RenderCtx, TreeNodeAccessor } from '../render';\n\n/** Data table state */\nexport type PlDataTableGridState = {\n /** Includes column ordering */\n columnOrder?: {\n /** All colIds in order */\n orderedColIds: string[];\n };\n /** Includes current sort columns and direction */\n sort?: {\n /** Sorted columns and directions in order */\n sortModel: {\n /** Column Id to apply the sort to. */\n colId: string;\n /** Sort direction */\n sort: 'asc' | 'desc';\n }[];\n };\n columnVisibility?: {\n hiddenColIds: string[];\n };\n\n /** current sheet selections */\n sheets?: Record<string, string | number>;\n};\n\n/**\n * Params used to get p-table handle from the driver\n */\nexport type PTableParams = {\n /** For sourceType: 'pframe' the join is original one, enriched with label columns */\n join?: JoinEntry<PColumnIdAndSpec>;\n sorting?: PTableSorting[];\n filters?: PTableRecordFilter[];\n};\n\n/**\n * PlDataTable persisted state\n */\nexport type PlDataTableState = {\n // internal ag-grid state\n gridState: PlDataTableGridState;\n\n // mapping of gridState onto the p-table data structures\n pTableParams?: PTableParams;\n};\n\n/**\n * Create p-table handle given ui table state\n *\n * @param ctx context\n * @param columns column list\n * @param tableState table ui state\n * @returns\n */\nexport function createPlDataTable<A, U>(\n ctx: RenderCtx<A, U>,\n columns: PColumn<TreeNodeAccessor>[],\n tableState?: PlDataTableState\n): PTableHandle {\n const allLabelCols = ctx.resultPool\n .getData()\n .entries.map((d) => d.obj)\n .filter(isPColumn)\n .filter((p) => p.spec.name === 'pl7.app/label' && p.spec.axesSpec.length === 1);\n\n const moreColumns = [];\n for (const col of columns) {\n for (const axis of col.spec.axesSpec) {\n const axisId = getAxisId(axis);\n for (const match of allLabelCols) {\n if (matchAxisId(axisId, getAxisId(match.spec.axesSpec[0]))) {\n moreColumns.push(match);\n }\n }\n }\n }\n return ctx.createPTable({\n columns: [...columns, ...moreColumns],\n filters: tableState?.pTableParams?.filters,\n sorting: tableState?.pTableParams?.sorting\n });\n}\n","import {\n CalculateTableDataRequest,\n CalculateTableDataResponse,\n FindColumnsRequest,\n FindColumnsResponse,\n PColumnIdAndSpec,\n PColumnSpec,\n PFrame,\n PFrameHandle,\n PObjectId,\n UniqueValuesRequest,\n UniqueValuesResponse\n} from '@milaboratories/pl-model-common';\n\nexport class PFrameImpl implements PFrame {\n constructor(private readonly handle: PFrameHandle) {}\n\n public async findColumns(request: FindColumnsRequest): Promise<FindColumnsResponse> {\n return await platforma.pFrameDriver.findColumns(this.handle, request);\n }\n\n public async getColumnSpec(columnId: PObjectId): Promise<PColumnSpec> {\n return await platforma.pFrameDriver.getColumnSpec(this.handle, columnId);\n }\n\n public async listColumns(): Promise<PColumnIdAndSpec[]> {\n return await platforma.pFrameDriver.listColumns(this.handle);\n }\n\n public async calculateTableData(\n request: CalculateTableDataRequest<PObjectId>\n ): Promise<CalculateTableDataResponse> {\n return await platforma.pFrameDriver.calculateTableData(this.handle, request);\n }\n\n public async getUniqueValues(request: UniqueValuesRequest): Promise<UniqueValuesResponse> {\n return await platforma.pFrameDriver.getUniqueValues(this.handle, request);\n }\n}\n","import { getJsonField, makeObject, TypedConfig } from './config';\n\nexport function fromPlRef<Source extends TypedConfig>(source: Source) {\n return makeObject({\n __isRef: true,\n blockId: getJsonField(source, 'blockId'),\n name: getJsonField(source, 'name')\n });\n}\n\nexport function fromPlOption<Source extends TypedConfig>(source: Source) {\n return makeObject({\n ref: fromPlRef(getJsonField(source, 'ref')),\n label: getJsonField(source, 'label')\n });\n}\n","import { PlatformaSDKVersion } from './version';\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion\n};\n","import {} from './global';\nimport { getPlatformaInstance } from './internal';\nimport { Platforma } from './platforma';\n\nexport function getRawPlatformaInstance(): Platforma {\n return getPlatformaInstance();\n}\n","import {} from './global';\n\nexport function getEnvironmentValue(name: string): string | undefined {\n if (typeof globalThis.getEnvironmentValue !== 'function') return undefined;\n else return globalThis.getEnvironmentValue(name);\n}\n"],"names":["OutputError","errors","moreErrors","readOutput","outputValue","wrapOutputs","outputs","target","key","primitiveToConfig","value","getImmediate","getFromCfg","variable","isolate","cfg","Args","It","MainOutputs","StagingOutputs","UiState","makeObject","template","normalizedTemplate","k","makeArray","getJsonField","source","field","mapRecordValues","mapping","itVar","mapArrayValues","flatten","isEmpty","arg","not","operand","and","operand1","operand2","or","getResourceField","getResourceValueAsJson","mapResourceFields","getBlobContent","getBlobContentAsString","getBlobContentAsJson","getDownloadedBlobContent","getOnDemandBlobContent","getImportProgress","getLastLogs","lines","getProgressLog","patternToSearch","getLogHandle","isInUI","getPlatformaInstance","config","tryGetCfgRenderCtx","getCfgRenderCtx","tryRegisterCallback","callback","ctx","futureResolves","registerFutureAwait","handle","onResolve","res","FutureRef","postProcess","v","__publicField","vv","wrapAccessor","TreeNodeAccessor","steps","commonOptions","content","errorOnUnknownField","prefix","result","obj","isPColumn","pObjects","mapPObjectData","c","nLines","StagingAccessorName","MainAccessorName","isFutureAwait","addAllFutureAwaits","set","visited","node","a","nested","getAllFutureAwaits","ResultPool","spec","ref","_a","predicate","labelFn","s","e","mapValueInVOE","f","out","data","isPColumnSpec","oth","matchDomain","i","qAx","tAx","query","RenderCtx","name","accessorId","def","d","rawDef","mapPTableDef","po","blockId","PlatformaSDKVersion","isFunctionHandle","cfgOrFh","normalizeBlockConfig","latest","BlockModel","_renderingMode","_initialArgs","_outputs","_inputsValid","_sections","renderingMode","cfgOrRf","functionHandle","arrOrCfgOrRf","createPlDataTable","columns","tableState","allLabelCols","p","moreColumns","col","axis","axisId","getAxisId","match","matchAxisId","_b","PFrameImpl","request","columnId","fromPlRef","fromPlOption","CurrentSdkInfo","getRawPlatformaInstance","getEnvironmentValue"],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PlatformaSDKVersion = "1.8.0";
1
+ export declare const PlatformaSDKVersion = "1.8.19";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/model",
3
- "version": "1.8.0",
3
+ "version": "1.8.19",
4
4
  "description": "Platforma.bio SDK / Block Model",
5
5
  "types": "./dist/index.d.ts",
6
6
  "main": "./dist/index.js",
@@ -28,6 +28,9 @@ export type PlDataTableGridState = {
28
28
  sort: 'asc' | 'desc';
29
29
  }[];
30
30
  };
31
+ columnVisibility?: {
32
+ hiddenColIds: string[];
33
+ };
31
34
 
32
35
  /** current sheet selections */
33
36
  sheets?: Record<string, string | number>;