@milaboratories/pl-middle-layer 1.46.33 → 1.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.cjs +0 -58
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +0 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/js_render/computable_context.cjs +0 -1
  6. package/dist/js_render/computable_context.cjs.map +1 -1
  7. package/dist/js_render/computable_context.d.ts.map +1 -1
  8. package/dist/js_render/computable_context.js +0 -1
  9. package/dist/js_render/computable_context.js.map +1 -1
  10. package/dist/middle_layer/frontend_path.cjs +0 -1
  11. package/dist/middle_layer/frontend_path.cjs.map +1 -1
  12. package/dist/middle_layer/frontend_path.js +0 -1
  13. package/dist/middle_layer/frontend_path.js.map +1 -1
  14. package/dist/middle_layer/middle_layer.cjs +5 -1
  15. package/dist/middle_layer/middle_layer.cjs.map +1 -1
  16. package/dist/middle_layer/middle_layer.d.ts +3 -1
  17. package/dist/middle_layer/middle_layer.d.ts.map +1 -1
  18. package/dist/middle_layer/middle_layer.js +5 -1
  19. package/dist/middle_layer/middle_layer.js.map +1 -1
  20. package/dist/middle_layer/project.cjs +8 -6
  21. package/dist/middle_layer/project.cjs.map +1 -1
  22. package/dist/middle_layer/project.d.ts.map +1 -1
  23. package/dist/middle_layer/project.js +9 -7
  24. package/dist/middle_layer/project.js.map +1 -1
  25. package/dist/middle_layer/project_overview.cjs +2 -2
  26. package/dist/middle_layer/project_overview.cjs.map +1 -1
  27. package/dist/middle_layer/project_overview.js +3 -3
  28. package/dist/middle_layer/project_overview.js.map +1 -1
  29. package/dist/model/index.d.ts +0 -1
  30. package/dist/model/index.d.ts.map +1 -1
  31. package/dist/model/project_helper.cjs +20 -32
  32. package/dist/model/project_helper.cjs.map +1 -1
  33. package/dist/model/project_helper.d.ts +3 -4
  34. package/dist/model/project_helper.d.ts.map +1 -1
  35. package/dist/model/project_helper.js +21 -33
  36. package/dist/model/project_helper.js.map +1 -1
  37. package/dist/mutator/block-pack/frontend.cjs +0 -1
  38. package/dist/mutator/block-pack/frontend.cjs.map +1 -1
  39. package/dist/mutator/block-pack/frontend.js +0 -1
  40. package/dist/mutator/block-pack/frontend.js.map +1 -1
  41. package/dist/mutator/project.cjs +28 -35
  42. package/dist/mutator/project.cjs.map +1 -1
  43. package/dist/mutator/project.d.ts.map +1 -1
  44. package/dist/mutator/project.js +29 -36
  45. package/dist/mutator/project.js.map +1 -1
  46. package/package.json +17 -17
  47. package/src/js_render/computable_context.ts +0 -2
  48. package/src/middle_layer/middle_layer.ts +7 -2
  49. package/src/middle_layer/project.ts +12 -7
  50. package/src/middle_layer/project_overview.ts +3 -3
  51. package/src/model/index.ts +0 -1
  52. package/src/model/project_helper.ts +33 -37
  53. package/src/mutator/project-v3.test.ts +9 -9
  54. package/src/mutator/project.ts +50 -74
  55. package/dist/model/block_storage_helper.cjs +0 -210
  56. package/dist/model/block_storage_helper.cjs.map +0 -1
  57. package/dist/model/block_storage_helper.d.ts +0 -98
  58. package/dist/model/block_storage_helper.d.ts.map +0 -1
  59. package/dist/model/block_storage_helper.js +0 -153
  60. package/dist/model/block_storage_helper.js.map +0 -1
  61. package/src/model/block_storage_helper.ts +0 -213
@@ -1 +1 @@
1
- {"version":3,"file":"computable_context.js","sources":["../../src/js_render/computable_context.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport type { PlTreeNodeAccessor } from \"@milaboratories/pl-tree\";\nimport { checkBlockFlag } from \"@platforma-sdk/model\";\nimport type {\n ArchiveFormat,\n CommonFieldTraverseOps as CommonFieldTraverseOpsFromSDK,\n DataInfo,\n FieldTraversalStep as FieldTraversalStepFromSDK,\n Option,\n PColumn,\n PColumnValues,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableDefV2,\n PTableHandle,\n ResourceType as ResourceTypeFromSDK,\n ResultCollection,\n ValueOrError,\n RangeBytes,\n BlockCodeKnownFeatureFlags,\n JsRenderInternal,\n} from \"@platforma-sdk/model\";\nimport {\n isDataInfo,\n mapDataInfo,\n mapPObjectData,\n mapPTableDef,\n mapPTableDefV2,\n mapValueInVOE,\n} from \"@platforma-sdk/model\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\nimport { randomUUID } from \"node:crypto\";\nimport type { Optional } from \"utility-types\";\nimport type { BlockContextAny } from \"../middle_layer/block_ctx\";\nimport type { MiddleLayerEnvironment } from \"../middle_layer/middle_layer\";\nimport type { Block } from \"../model/project_model\";\nimport { parseFinalPObjectCollection } from \"../pool/p_object_collection\";\nimport type { ResultPool } from \"../pool/result_pool\";\nimport type { JsExecutionContext } from \"./context\";\nimport type { VmFunctionImplementation } from \"quickjs-emscripten\";\nimport { Scope, type QuickJSHandle } from \"quickjs-emscripten\";\n\nfunction bytesToBase64(data: Uint8Array | undefined): string | undefined {\n return data !== undefined ? Buffer.from(data).toString(\"base64\") : undefined;\n}\n\nexport class ComputableContextHelper implements JsRenderInternal.GlobalCfgRenderCtxMethods<\n string,\n string\n> {\n public readonly computablesToResolve: Record<string, Computable<unknown>> = {};\n\n private computableCtx: ComputableCtx | undefined;\n private readonly accessors = new Map<string, PlTreeNodeAccessor | undefined>();\n\n private readonly meta: Map<string, Block>;\n\n constructor(\n private readonly parent: JsExecutionContext,\n private readonly blockCtx: BlockContextAny,\n private readonly env: MiddleLayerEnvironment,\n private readonly featureFlags: BlockCodeKnownFeatureFlags | undefined,\n computableCtx: ComputableCtx,\n ) {\n this.computableCtx = computableCtx;\n this.meta = blockCtx.blockMeta(computableCtx);\n }\n\n public resetComputableCtx() {\n this.computableCtx = undefined;\n this.accessors.clear();\n }\n\n //\n // Methods for injected ctx object\n //\n\n getAccessorHandleByName(name: string): string | undefined {\n if (this.computableCtx === undefined)\n throw new Error(\"Accessors can't be used in this context\");\n const wellKnownAccessor = (name: string, ctxKey: \"staging\" | \"prod\"): string | undefined => {\n if (!this.accessors.has(name)) {\n const lambda = this.blockCtx[ctxKey];\n if (lambda === undefined) throw new Error(\"Staging context not available\");\n const entry = lambda(this.computableCtx!);\n if (!entry) this.accessors.set(name, undefined);\n else\n this.accessors.set(name, this.computableCtx!.accessor(entry).node({ ignoreError: true }));\n }\n return this.accessors.get(name) ? name : undefined;\n };\n if (name === \"staging\") return wellKnownAccessor(\"staging\", \"staging\");\n else if (name === \"main\") return wellKnownAccessor(\"main\", \"prod\");\n return undefined;\n }\n\n //\n // Accessors\n //\n\n resolveWithCommon(\n handle: string,\n commonOptions: CommonFieldTraverseOpsFromSDK,\n ...steps: (FieldTraversalStepFromSDK | string)[]\n ): string | undefined {\n return this.wrapAccessor(this.getAccessor(handle).traverseWithCommon(commonOptions, ...steps));\n }\n\n getResourceType(handle: string): ResourceTypeFromSDK {\n return this.getAccessor(handle).resourceType;\n }\n\n getInputsLocked(handle: string): boolean {\n return this.getAccessor(handle).getInputsLocked();\n }\n\n getOutputsLocked(handle: string): boolean {\n return this.getAccessor(handle).getOutputsLocked();\n }\n\n getIsReadyOrError(handle: string): boolean {\n return this.getAccessor(handle).getIsReadyOrError();\n }\n\n getIsFinal(handle: string): boolean {\n return this.getAccessor(handle).getIsFinal();\n }\n\n getError(handle: string): string | undefined {\n return this.wrapAccessor(this.getAccessor(handle).getError());\n }\n\n listInputFields(handle: string): string[] {\n return this.getAccessor(handle).listInputFields();\n }\n\n listOutputFields(handle: string): string[] {\n return this.getAccessor(handle).listOutputFields();\n }\n\n listDynamicFields(handle: string): string[] {\n return this.getAccessor(handle).listDynamicFields();\n }\n\n getKeyValueBase64(handle: string, key: string): string | undefined {\n return bytesToBase64(this.getAccessor(handle).getKeyValue(key));\n }\n\n getKeyValueAsString(handle: string, key: string): string | undefined {\n return this.getAccessor(handle).getKeyValueAsString(key);\n }\n\n getDataBase64(handle: string): string | undefined {\n return bytesToBase64(this.getAccessor(handle).getData());\n }\n\n getDataAsString(handle: string): string | undefined {\n return this.getAccessor(handle).getDataAsString();\n }\n\n //\n // Accessor helpers\n //\n\n parsePObjectCollection(\n handle: string,\n errorOnUnknownField: boolean,\n prefix: string,\n ...resolveSteps: string[]\n ): Record<string, PObject<string>> | undefined {\n const acc = this.getAccessor(handle);\n if (!acc.getIsReadyOrError()) return undefined;\n const accResult = parseFinalPObjectCollection(acc, errorOnUnknownField, prefix, resolveSteps);\n const result: Record<string, PObject<string>> = {};\n for (const [key, obj] of Object.entries(accResult)) {\n result[key] = mapPObjectData(obj, (d) => this.wrapAccessor(d));\n }\n return result;\n }\n\n //\n // Blobs\n //\n\n private registerComputable(hPrefix: string, computable: Computable<unknown>): string {\n const fHandle = `${hPrefix}_${randomUUID()}`;\n this.computablesToResolve[fHandle] = computable;\n return fHandle;\n }\n\n public getBlobContentAsString(handle: string, range?: RangeBytes): string {\n const resourceInfo = this.getAccessor(handle).resourceInfo;\n return this.registerComputable(\n \"getBlobContentAsString\",\n Computable.make((ctx) => this.env.driverKit.blobDriver.getDownloadedBlob(resourceInfo, ctx), {\n postprocessValue: async (value) => {\n if (value === undefined) return undefined;\n return Buffer.from(\n await this.env.driverKit.blobDriver.getContent(value.handle, range),\n ).toString(\"utf-8\");\n },\n }),\n );\n }\n\n public getBlobContentAsBase64(handle: string, range?: RangeBytes): string {\n const resourceInfo = this.getAccessor(handle).resourceInfo;\n return this.registerComputable(\n \"getBlobContentAsBase64\",\n Computable.make((ctx) => this.env.driverKit.blobDriver.getDownloadedBlob(resourceInfo, ctx), {\n postprocessValue: async (value) => {\n if (value === undefined) return undefined;\n return Buffer.from(\n await this.env.driverKit.blobDriver.getContent(value.handle, range),\n ).toString(\"base64\");\n },\n }),\n );\n }\n\n public getDownloadedBlobContentHandle(handle: string): string {\n const resourceInfo = this.getAccessor(handle).resourceInfo;\n return this.registerComputable(\n \"getDownloadedBlobContentHandle\",\n this.env.driverKit.blobDriver.getDownloadedBlob(resourceInfo),\n );\n }\n\n public getOnDemandBlobContentHandle(handle: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getOnDemandBlobContentHandle\",\n this.env.driverKit.blobDriver.getOnDemandBlob(resource),\n );\n }\n\n //\n // Blobs to URLs\n //\n\n public extractArchiveAndGetURL(handle: string, format: ArchiveFormat): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"extractArchiveAndGetURL\",\n this.env.driverKit.blobToURLDriver.extractArchiveAndGetURL(resource, format),\n );\n }\n\n //\n // Import progress\n //\n\n getImportProgress(handle: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getImportProgress\",\n this.env.driverKit.uploadDriver.getProgressId(resource),\n );\n }\n\n //\n // Logs\n //\n\n getLastLogs(handle: string, nLines: number): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getLastLogs\",\n this.env.driverKit.logDriver.getLastLogs(resource, nLines),\n );\n }\n\n getProgressLog(handle: string, patternToSearch: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getProgressLog\",\n this.env.driverKit.logDriver.getProgressLog(resource, patternToSearch),\n );\n }\n\n getProgressLogWithInfo(handle: string, patternToSearch: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getProgressLogWithInfo\",\n this.env.driverKit.logDriver.getProgressLogWithInfo(resource, patternToSearch),\n );\n }\n\n getLogHandle(handle: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getLogHandle\",\n this.env.driverKit.logDriver.getLogHandle(resource),\n );\n }\n\n //\n // Blocks\n //\n\n public getBlockLabel(blockId: string): string {\n const b = this.meta.get(blockId);\n if (b === undefined) throw new Error(`Block ${blockId} not found.`);\n return b.label;\n }\n\n //\n // Result Pool\n //\n\n private _resultPool: ResultPool | undefined = undefined;\n private get resultPool(): ResultPool {\n if (this._resultPool === undefined) {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't use result pool in this context (most porbably called from the future mapper)\",\n );\n this._resultPool = notEmpty(\n this.blockCtx.getResultsPool,\n \"getResultsPool\",\n )(this.computableCtx);\n }\n return this._resultPool;\n }\n\n public calculateOptions(predicate: PSpecPredicate): Option[] {\n return this.resultPool.calculateOptions(predicate);\n }\n\n public getDataFromResultPool(): ResultCollection<PObject<string>> {\n const collection = this.resultPool.getData();\n if (collection.instabilityMarker !== undefined)\n this.computableCtx!.markUnstable(`incomplete_result_pool:${collection.instabilityMarker}`);\n return {\n isComplete: collection.isComplete,\n entries: collection.entries.map((e) => ({\n ref: e.ref,\n obj: mapPObjectData(e.obj, (d) => this.wrapAccessor(d)),\n })),\n };\n }\n\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<string, Error>>, \"id\">\n > {\n const collection = this.resultPool.getDataWithErrors();\n if (collection.instabilityMarker !== undefined)\n this.computableCtx!.markUnstable(`incomplete_result_pool:${collection.instabilityMarker}`);\n return {\n isComplete: collection.isComplete,\n entries: collection.entries.map((e) => ({\n ref: e.ref,\n obj: {\n id: e.obj.id,\n spec: e.obj.spec,\n data: mapValueInVOE(e.obj.data, (d) => this.wrapAccessor(d)),\n },\n })),\n };\n }\n\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n const specs = this.resultPool.getSpecs();\n if (specs.instabilityMarker !== undefined)\n this.computableCtx!.markUnstable(`specs_from_pool_incomplete:${specs.instabilityMarker}`);\n return specs;\n }\n\n getSpecFromResultPoolByRef(blockId: string, exportName: string): PObjectSpec | undefined {\n return this.resultPool.getSpecByRef(blockId, exportName);\n }\n\n getDataFromResultPoolByRef(blockId: string, exportName: string): PObject<string> | undefined {\n return mapPObjectData(this.resultPool.getDataByRef(blockId, exportName), (acc) =>\n this.wrapAccessor(acc),\n );\n }\n\n //\n // PFrames / PTables\n //\n\n public createPFrame(\n def: PFrameDef<PColumn<string | PColumnValues | DataInfo<string>>>,\n ): PFrameHandle {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't instantiate PFrames from this context (most porbably called from the future mapper)\",\n );\n const { key, unref } = this.env.driverKit.pFrameDriver.createPFrame(\n def.map((c) => mapPObjectData(c, (d) => this.transformInputPData(d))),\n );\n this.computableCtx.addOnDestroy(unref);\n return key;\n }\n\n public createPTable(\n def: PTableDef<PColumn<string | PColumnValues | DataInfo<string>>>,\n ): PTableHandle {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't instantiate PTable from this context (most porbably called from the future mapper)\",\n );\n const { key, unref } = this.env.driverKit.pFrameDriver.createPTable(\n mapPTableDef(def, (c) => mapPObjectData(c, (d) => this.transformInputPData(d))),\n );\n this.computableCtx.addOnDestroy(unref);\n return key;\n }\n public createPTableV2(\n def: PTableDefV2<PColumn<string | PColumnValues | DataInfo<string>>>,\n ): PTableHandle {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't instantiate PTable from this context (most porbably called from the future mapper)\",\n );\n const { key, unref } = this.env.driverKit.pFrameDriver.createPTableV2(\n mapPTableDefV2(def, (c) => mapPObjectData(c, (d) => this.transformInputPData(d))),\n );\n this.computableCtx.addOnDestroy(unref);\n return key;\n }\n\n /**\n * Transforms input data for PFrame/PTable creation\n * - Converts string handles to accessors\n * - Maps accessors in DataInfo objects\n * - Passes through other values\n */\n private transformInputPData(\n d: string | PColumnValues | DataInfo<string>,\n ): PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor> {\n if (typeof d === \"string\") {\n return this.getAccessor(d);\n } else if (isDataInfo(d)) {\n return mapDataInfo(d, (a) => this.getAccessor(a));\n } else {\n return d;\n }\n }\n\n //\n // Computable\n //\n\n public getCurrentUnstableMarker(): string | undefined {\n return this.computableCtx?.unstableMarker;\n }\n\n //\n // Logging\n //\n\n public logInfo(message: string): void {\n this.env.blockEventDispatcher.logInfo(this.blockCtx.blockId, message);\n }\n\n public logWarn(message: string): void {\n this.env.blockEventDispatcher.logWarn(this.blockCtx.blockId, message);\n }\n\n public logError(message: string): void {\n this.env.blockEventDispatcher.logError(this.blockCtx.blockId, message);\n }\n\n //\n // Helpers\n //\n\n private getAccessor(handle: string): PlTreeNodeAccessor {\n const accessor = this.accessors.get(handle);\n if (accessor === undefined) throw new Error(\"No such accessor\");\n return accessor;\n }\n\n private wrapAccessor(accessor: PlTreeNodeAccessor): string;\n private wrapAccessor(accessor: PlTreeNodeAccessor | undefined): string | undefined;\n private wrapAccessor(accessor: PlTreeNodeAccessor | undefined): string | undefined {\n if (accessor === undefined) return undefined;\n else {\n const nextHandle = randomUUID();\n this.accessors.set(nextHandle, accessor);\n return nextHandle;\n }\n }\n\n public injectCtx(configCtx: QuickJSHandle): void {\n const parent = this.parent;\n const vm = parent.vm;\n\n Scope.withScope((localScope) => {\n // Exporting methods\n\n const exportCtxFunction = (\n name: string,\n fn: VmFunctionImplementation<QuickJSHandle>,\n ): void => {\n const withCachedError: VmFunctionImplementation<QuickJSHandle> = (...args) => {\n // QuickJS strips all fields from errors apart from 'name' and 'message'.\n // That's why here we need to store them, and rethrow them when we exit\n // from QuickJS code.\n try {\n return (fn as any)(...args);\n } catch (e: unknown) {\n const newErr = parent.errorRepo.setAndRecreateForQuickJS(e);\n\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw vm.newError(newErr);\n }\n };\n\n vm.newFunction(name, withCachedError).consume((fnh) => vm.setProp(configCtx, name, fnh));\n vm.newFunction(name, fn).consume((fnh) =>\n vm.setProp(configCtx, name + \"__internal__\", fnh),\n );\n };\n\n // Check if this is a v1/v2 block (requiresModelAPIVersion !== 2)\n // For v1/v2 blocks, state is {args, uiState} and we need to inject uiState separately\n const isLegacyBlock = !checkBlockFlag(this.featureFlags, \"requiresModelAPIVersion\", 2);\n\n // Helper to extract uiState from legacy state format {args, uiState}\n const extractUiState = (stateJson: string | undefined): string => {\n if (!stateJson) return \"{}\";\n try {\n const parsed = JSON.parse(stateJson);\n return JSON.stringify(parsed?.uiState ?? {});\n } catch {\n return \"{}\";\n }\n };\n\n if (checkBlockFlag(this.featureFlags, \"supportsLazyState\")) {\n // injecting lazy state functions\n exportCtxFunction(\"args\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.args outside the future lambda. Can't be directly used in this context.`,\n );\n const args = this.blockCtx.args(this.computableCtx);\n return args === undefined ? vm.undefined : vm.newString(args);\n });\n exportCtxFunction(\"data\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.state outside the future lambda. Can't be directly used in this context.`,\n );\n return vm.newString(this.blockCtx.data(this.computableCtx) ?? \"{}\");\n });\n exportCtxFunction(\"activeArgs\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.activeArgs outside the future lambda. Can't be directly used in this context.`,\n );\n const res = this.blockCtx.activeArgs(this.computableCtx);\n return res === undefined ? vm.undefined : vm.newString(res);\n });\n // For v1/v2 blocks, also inject uiState (extracted from state.uiState)\n if (isLegacyBlock) {\n exportCtxFunction(\"uiState\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.uiState outside the future lambda. Can't be directly used in this context.`,\n );\n return vm.newString(extractUiState(this.blockCtx.data(this.computableCtx)));\n });\n }\n } else {\n const args = this.blockCtx.args(this.computableCtx!);\n const activeArgs = this.blockCtx.activeArgs(this.computableCtx!);\n const data = this.blockCtx.data(this.computableCtx!);\n if (args !== undefined) {\n vm.setProp(configCtx, \"args\", localScope.manage(vm.newString(args)));\n }\n vm.setProp(configCtx, \"data\", localScope.manage(vm.newString(data ?? \"{}\")));\n if (activeArgs !== undefined)\n vm.setProp(configCtx, \"activeArgs\", localScope.manage(vm.newString(activeArgs)));\n // For v1/v2 blocks, also inject uiState (extracted from state.uiState)\n if (isLegacyBlock) {\n vm.setProp(configCtx, \"uiState\", localScope.manage(vm.newString(extractUiState(data))));\n }\n }\n\n //\n // Methods for injected ctx object\n //\n\n exportCtxFunction(\"getAccessorHandleByName\", (name) => {\n return parent.exportSingleValue(\n this.getAccessorHandleByName(vm.getString(name)),\n undefined,\n );\n });\n\n //\n // Accessors\n //\n\n exportCtxFunction(\"resolveWithCommon\", (handle, commonOptions, ...steps) => {\n return parent.exportSingleValue(\n this.resolveWithCommon(\n vm.getString(handle),\n parent.importObjectViaJson(commonOptions) as CommonFieldTraverseOpsFromSDK,\n ...steps.map(\n (step) => parent.importObjectViaJson(step) as FieldTraversalStepFromSDK | string,\n ),\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"getResourceType\", (handle) => {\n return parent.exportObjectViaJson(this.getResourceType(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getInputsLocked\", (handle) => {\n return parent.exportSingleValue(this.getInputsLocked(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getOutputsLocked\", (handle) => {\n return parent.exportSingleValue(this.getOutputsLocked(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getIsReadyOrError\", (handle) => {\n return parent.exportSingleValue(this.getIsReadyOrError(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getIsFinal\", (handle) => {\n return parent.exportSingleValue(this.getIsFinal(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getError\", (handle) => {\n return parent.exportSingleValue(this.getError(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"listInputFields\", (handle) => {\n return parent.exportObjectViaJson(this.listInputFields(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"listOutputFields\", (handle) => {\n return parent.exportObjectViaJson(this.listInputFields(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"listDynamicFields\", (handle) => {\n return parent.exportObjectViaJson(this.listInputFields(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getKeyValueBase64\", (handle, key) => {\n return parent.exportSingleValue(\n this.getKeyValueBase64(vm.getString(handle), vm.getString(key)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getKeyValueAsString\", (handle, key) => {\n return parent.exportSingleValue(\n this.getKeyValueAsString(vm.getString(handle), vm.getString(key)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getDataBase64\", (handle) => {\n return parent.exportSingleValue(this.getDataBase64(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getDataAsString\", (handle) => {\n return parent.exportSingleValue(this.getDataAsString(vm.getString(handle)), undefined);\n });\n\n //\n // Accessor helpers\n //\n\n exportCtxFunction(\n \"parsePObjectCollection\",\n (handle, errorOnUnknownField, prefix, ...resolveSteps) => {\n return parent.exportObjectUniversal(\n this.parsePObjectCollection(\n vm.getString(handle),\n vm.dump(errorOnUnknownField) as boolean,\n vm.getString(prefix),\n ...resolveSteps.map((stepHandle) => vm.getString(stepHandle)),\n ),\n undefined,\n );\n },\n );\n\n //\n // Blobs\n //\n\n exportCtxFunction(\"getBlobContentAsBase64\", (handle, range) => {\n return parent.exportSingleValue(\n this.getBlobContentAsBase64(\n vm.getString(handle),\n parent.importObjectUniversal(range) as RangeBytes | undefined,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"getBlobContentAsString\", (handle, range) => {\n return parent.exportSingleValue(\n this.getBlobContentAsString(\n vm.getString(handle),\n parent.importObjectUniversal(range) as RangeBytes | undefined,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"getDownloadedBlobContentHandle\", (handle) => {\n return parent.exportSingleValue(\n this.getDownloadedBlobContentHandle(vm.getString(handle)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getOnDemandBlobContentHandle\", (handle) => {\n return parent.exportSingleValue(\n this.getOnDemandBlobContentHandle(vm.getString(handle)),\n undefined,\n );\n });\n\n //\n // Blobs to URLs\n //\n\n exportCtxFunction(\"extractArchiveAndGetURL\", (handle, format) => {\n return parent.exportSingleValue(\n this.extractArchiveAndGetURL(vm.getString(handle), vm.getString(format) as ArchiveFormat),\n undefined,\n );\n });\n\n //\n // ImportProgress\n //\n\n exportCtxFunction(\"getImportProgress\", (handle) => {\n return parent.exportSingleValue(this.getImportProgress(vm.getString(handle)), undefined);\n });\n\n //\n // Logs\n //\n\n exportCtxFunction(\"getLastLogs\", (handle, nLines) => {\n return parent.exportSingleValue(\n this.getLastLogs(vm.getString(handle), vm.getNumber(nLines)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getProgressLog\", (handle, patternToSearch) => {\n return parent.exportSingleValue(\n this.getProgressLog(vm.getString(handle), vm.getString(patternToSearch)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getProgressLogWithInfo\", (handle, patternToSearch) => {\n return parent.exportSingleValue(\n this.getProgressLogWithInfo(vm.getString(handle), vm.getString(patternToSearch)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getLogHandle\", (handle) => {\n return parent.exportSingleValue(this.getLogHandle(vm.getString(handle)), undefined);\n });\n\n //\n // Blocks\n //\n\n exportCtxFunction(\"getBlockLabel\", (blockId) => {\n return parent.exportSingleValue(this.getBlockLabel(vm.getString(blockId)), undefined);\n });\n\n //\n // Result pool\n //\n\n exportCtxFunction(\"getDataFromResultPool\", () => {\n return parent.exportObjectUniversal(this.getDataFromResultPool(), undefined);\n });\n\n exportCtxFunction(\"getDataWithErrorsFromResultPool\", () => {\n return parent.exportObjectUniversal(this.getDataWithErrorsFromResultPool(), undefined);\n });\n\n exportCtxFunction(\"getSpecsFromResultPool\", () => {\n return parent.exportObjectUniversal(this.getSpecsFromResultPool(), undefined);\n });\n\n exportCtxFunction(\"calculateOptions\", (predicate) => {\n return parent.exportObjectUniversal(\n this.calculateOptions(parent.importObjectViaJson(predicate) as PSpecPredicate),\n undefined,\n );\n });\n\n exportCtxFunction(\"getSpecFromResultPoolByRef\", (blockId, exportName) => {\n return parent.exportObjectUniversal(\n this.getSpecFromResultPoolByRef(vm.getString(blockId), vm.getString(exportName)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getDataFromResultPoolByRef\", (blockId, exportName) => {\n return parent.exportObjectUniversal(\n this.getDataFromResultPoolByRef(vm.getString(blockId), vm.getString(exportName)),\n undefined,\n );\n });\n\n //\n // PFrames / PTables\n //\n\n exportCtxFunction(\"createPFrame\", (def) => {\n return parent.exportSingleValue(\n this.createPFrame(\n parent.importObjectViaJson(def) as PFrameDef<PColumn<string | PColumnValues>>,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"createPTable\", (def) => {\n return parent.exportSingleValue(\n this.createPTable(\n parent.importObjectViaJson(def) as PTableDef<PColumn<string | PColumnValues>>,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"createPTableV2\", (def) => {\n return parent.exportSingleValue(\n this.createPTableV2(\n parent.importObjectViaJson(def) as PTableDefV2<PColumn<string | PColumnValues>>,\n ),\n undefined,\n );\n });\n\n //\n // Computable\n //\n\n exportCtxFunction(\"getCurrentUnstableMarker\", () => {\n return parent.exportSingleValue(this.getCurrentUnstableMarker(), undefined);\n });\n\n //\n // Logging\n //\n\n exportCtxFunction(\"logInfo\", (message) => {\n this.logInfo(vm.getString(message));\n });\n\n exportCtxFunction(\"logWarn\", (message) => {\n this.logWarn(vm.getString(message));\n });\n\n exportCtxFunction(\"logError\", (message) => {\n this.logError(vm.getString(message));\n });\n });\n }\n}\n"],"names":[],"mappings":";;;;;;;AA+CA,SAAS,aAAa,CAAC,IAA4B,EAAA;IACjD,OAAO,IAAI,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,SAAS;AAC9E;MAEa,uBAAuB,CAAA;AAYf,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,GAAA;AACA,IAAA,YAAA;IAXH,oBAAoB,GAAwC,EAAE;AAEtE,IAAA,aAAa;AACJ,IAAA,SAAS,GAAG,IAAI,GAAG,EAA0C;AAE7D,IAAA,IAAI;IAErB,WAAA,CACmB,MAA0B,EAC1B,QAAyB,EACzB,GAA2B,EAC3B,YAAoD,EACrE,aAA4B,EAAA;QAJX,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,YAAY,GAAZ,YAAY;AAG7B,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa;QAClC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;IAC/C;IAEO,kBAAkB,GAAA;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS;AAC9B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;;;;AAMA,IAAA,uBAAuB,CAAC,IAAY,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;AAC5D,QAAA,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,MAA0B,KAAwB;YACzF,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACpC,IAAI,MAAM,KAAK,SAAS;AAAE,oBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC;gBAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAc,CAAC;AACzC,gBAAA,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;;oBAE7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,aAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7F;AACA,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS;AACpD,QAAA,CAAC;QACD,IAAI,IAAI,KAAK,SAAS;AAAE,YAAA,OAAO,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;aACjE,IAAI,IAAI,KAAK,MAAM;AAAE,YAAA,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;AAClE,QAAA,OAAO,SAAS;IAClB;;;;AAMA,IAAA,iBAAiB,CACf,MAAc,EACd,aAA4C,EAC5C,GAAG,KAA6C,EAAA;AAEhD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,aAAa,EAAE,GAAG,KAAK,CAAC,CAAC;IAChG;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY;IAC9C;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE;IACnD;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE;IACpD;AAEA,IAAA,iBAAiB,CAAC,MAAc,EAAA;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;IACrD;AAEA,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE;IAC9C;AAEA,IAAA,QAAQ,CAAC,MAAc,EAAA;AACrB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE;IACnD;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE;IACpD;AAEA,IAAA,iBAAiB,CAAC,MAAc,EAAA;QAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,iBAAiB,EAAE;IACrD;IAEA,iBAAiB,CAAC,MAAc,EAAE,GAAW,EAAA;AAC3C,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACjE;IAEA,mBAAmB,CAAC,MAAc,EAAE,GAAW,EAAA;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC;IAC1D;AAEA,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC1D;AAEA,IAAA,eAAe,CAAC,MAAc,EAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,eAAe,EAAE;IACnD;;;;IAMA,sBAAsB,CACpB,MAAc,EACd,mBAA4B,EAC5B,MAAc,EACd,GAAG,YAAsB,EAAA;QAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;AACpC,QAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAAE,YAAA,OAAO,SAAS;AAC9C,QAAA,MAAM,SAAS,GAAG,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,YAAY,CAAC;QAC7F,MAAM,MAAM,GAAoC,EAAE;AAClD,QAAA,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAClD,MAAM,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChE;AACA,QAAA,OAAO,MAAM;IACf;;;;IAMQ,kBAAkB,CAAC,OAAe,EAAE,UAA+B,EAAA;QACzE,MAAM,OAAO,GAAG,CAAA,EAAG,OAAO,IAAI,UAAU,EAAE,EAAE;AAC5C,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,UAAU;AAC/C,QAAA,OAAO,OAAO;IAChB;IAEO,sBAAsB,CAAC,MAAc,EAAE,KAAkB,EAAA;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY;AAC1D,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,wBAAwB,EACxB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AAC3F,YAAA,gBAAgB,EAAE,OAAO,KAAK,KAAI;gBAChC,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;gBACzC,OAAO,MAAM,CAAC,IAAI,CAChB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CACpE,CAAC,QAAQ,CAAC,OAAO,CAAC;YACrB,CAAC;AACF,SAAA,CAAC,CACH;IACH;IAEO,sBAAsB,CAAC,MAAc,EAAE,KAAkB,EAAA;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY;AAC1D,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,wBAAwB,EACxB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE;AAC3F,YAAA,gBAAgB,EAAE,OAAO,KAAK,KAAI;gBAChC,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;gBACzC,OAAO,MAAM,CAAC,IAAI,CAChB,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CACpE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACtB,CAAC;AACF,SAAA,CAAC,CACH;IACH;AAEO,IAAA,8BAA8B,CAAC,MAAc,EAAA;QAClD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,YAAY;AAC1D,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,gCAAgC,EAChC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAC9D;IACH;AAEO,IAAA,4BAA4B,CAAC,MAAc,EAAA;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AACnD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,8BAA8B,EAC9B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CACxD;IACH;;;;IAMO,uBAAuB,CAAC,MAAc,EAAE,MAAqB,EAAA;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAC5B,yBAAyB,EACzB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC7E;IACH;;;;AAMA,IAAA,iBAAiB,CAAC,MAAc,EAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AACnD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CACxD;IACH;;;;IAMA,WAAW,CAAC,MAAc,EAAE,MAAc,EAAA;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAC5B,aAAa,EACb,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAC3D;IACH;IAEA,cAAc,CAAC,MAAc,EAAE,eAAuB,EAAA;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAC5B,gBAAgB,EAChB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,CACvE;IACH;IAEA,sBAAsB,CAAC,MAAc,EAAE,eAAuB,EAAA;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;QACnD,OAAO,IAAI,CAAC,kBAAkB,CAC5B,wBAAwB,EACxB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAC/E;IACH;AAEA,IAAA,YAAY,CAAC,MAAc,EAAA;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;AACnD,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAC5B,cAAc,EACd,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CACpD;IACH;;;;AAMO,IAAA,aAAa,CAAC,OAAe,EAAA;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,CAAA,WAAA,CAAa,CAAC;QACnE,OAAO,CAAC,CAAC,KAAK;IAChB;;;;IAMQ,WAAW,GAA2B,SAAS;AACvD,IAAA,IAAY,UAAU,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;AAClC,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,gBAAA,MAAM,IAAI,KAAK,CACb,qFAAqF,CACtF;AACH,YAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CACzB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAC5B,gBAAgB,CACjB,CAAC,IAAI,CAAC,aAAa,CAAC;QACvB;QACA,OAAO,IAAI,CAAC,WAAW;IACzB;AAEO,IAAA,gBAAgB,CAAC,SAAyB,EAAA;QAC/C,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,SAAS,CAAC;IACpD;IAEO,qBAAqB,GAAA;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC5C,QAAA,IAAI,UAAU,CAAC,iBAAiB,KAAK,SAAS;YAC5C,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,CAAA,uBAAA,EAA0B,UAAU,CAAC,iBAAiB,CAAA,CAAE,CAAC;QAC5F,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,UAAU;AACjC,YAAA,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBACtC,GAAG,EAAE,CAAC,CAAC,GAAG;AACV,gBAAA,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACxD,aAAA,CAAC,CAAC;SACJ;IACH;IAEO,+BAA+B,GAAA;QAGpC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;AACtD,QAAA,IAAI,UAAU,CAAC,iBAAiB,KAAK,SAAS;YAC5C,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,CAAA,uBAAA,EAA0B,UAAU,CAAC,iBAAiB,CAAA,CAAE,CAAC;QAC5F,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,UAAU;AACjC,YAAA,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;gBACtC,GAAG,EAAE,CAAC,CAAC,GAAG;AACV,gBAAA,GAAG,EAAE;AACH,oBAAA,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;AACZ,oBAAA,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;oBAChB,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC7D,iBAAA;AACF,aAAA,CAAC,CAAC;SACJ;IACH;IAEO,sBAAsB,GAAA;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AACxC,QAAA,IAAI,KAAK,CAAC,iBAAiB,KAAK,SAAS;YACvC,IAAI,CAAC,aAAc,CAAC,YAAY,CAAC,CAAA,2BAAA,EAA8B,KAAK,CAAC,iBAAiB,CAAA,CAAE,CAAC;AAC3F,QAAA,OAAO,KAAK;IACd;IAEA,0BAA0B,CAAC,OAAe,EAAE,UAAkB,EAAA;QAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC;IAC1D;IAEA,0BAA0B,CAAC,OAAe,EAAE,UAAkB,EAAA;QAC5D,OAAO,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,KAC3E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CACvB;IACH;;;;AAMO,IAAA,YAAY,CACjB,GAAkE,EAAA;AAElE,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,YAAA,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F;AACH,QAAA,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CACjE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CACtE;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;AACtC,QAAA,OAAO,GAAG;IACZ;AAEO,IAAA,YAAY,CACjB,GAAkE,EAAA;AAElE,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,YAAA,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F;AACH,QAAA,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CACjE,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAChF;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;AACtC,QAAA,OAAO,GAAG;IACZ;AACO,IAAA,cAAc,CACnB,GAAoE,EAAA;AAEpE,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,YAAA,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F;AACH,QAAA,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,CACnE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAClF;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC;AACtC,QAAA,OAAO,GAAG;IACZ;AAEA;;;;;AAKG;AACK,IAAA,mBAAmB,CACzB,CAA4C,EAAA;AAE5C,QAAA,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5B;AAAO,aAAA,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;AACxB,YAAA,OAAO,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACnD;aAAO;AACL,YAAA,OAAO,CAAC;QACV;IACF;;;;IAMO,wBAAwB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,cAAc;IAC3C;;;;AAMO,IAAA,OAAO,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACvE;AAEO,IAAA,OAAO,CAAC,OAAe,EAAA;AAC5B,QAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACvE;AAEO,IAAA,QAAQ,CAAC,OAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IACxE;;;;AAMQ,IAAA,WAAW,CAAC,MAAc,EAAA;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;QAC3C,IAAI,QAAQ,KAAK,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC;AAC/D,QAAA,OAAO,QAAQ;IACjB;AAIQ,IAAA,YAAY,CAAC,QAAwC,EAAA;QAC3D,IAAI,QAAQ,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;aACvC;AACH,YAAA,MAAM,UAAU,GAAG,UAAU,EAAE;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;AACxC,YAAA,OAAO,UAAU;QACnB;IACF;AAEO,IAAA,SAAS,CAAC,SAAwB,EAAA;AACvC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAC1B,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE;AAEpB,QAAA,KAAK,CAAC,SAAS,CAAC,CAAC,UAAU,KAAI;;AAG7B,YAAA,MAAM,iBAAiB,GAAG,CACxB,IAAY,EACZ,EAA2C,KACnC;AACR,gBAAA,MAAM,eAAe,GAA4C,CAAC,GAAG,IAAI,KAAI;;;;AAI3E,oBAAA,IAAI;AACF,wBAAA,OAAQ,EAAU,CAAC,GAAG,IAAI,CAAC;oBAC7B;oBAAE,OAAO,CAAU,EAAE;wBACnB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAAC;;AAG3D,wBAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC3B;AACF,gBAAA,CAAC;gBAED,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACxF,gBAAA,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KACnC,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,GAAG,cAAc,EAAE,GAAG,CAAC,CAClD;AACH,YAAA,CAAC;;;AAID,YAAA,MAAM,aAAa,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,EAAE,CAAC,CAAC;;AAGtF,YAAA,MAAM,cAAc,GAAG,CAAC,SAA6B,KAAY;AAC/D,gBAAA,IAAI,CAAC,SAAS;AAAE,oBAAA,OAAO,IAAI;AAC3B,gBAAA,IAAI;oBACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;oBACpC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC9C;AAAE,gBAAA,MAAM;AACN,oBAAA,OAAO,IAAI;gBACb;AACF,YAAA,CAAC;YAED,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAAE;;AAE1D,gBAAA,iBAAiB,CAAC,MAAM,EAAE,MAAK;AAC7B,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,6FAAA,CAA+F,CAChG;AACH,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACnD,oBAAA,OAAO,IAAI,KAAK,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/D,gBAAA,CAAC,CAAC;AACF,gBAAA,iBAAiB,CAAC,MAAM,EAAE,MAAK;AAC7B,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,8FAAA,CAAgG,CACjG;AACH,oBAAA,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;AACrE,gBAAA,CAAC,CAAC;AACF,gBAAA,iBAAiB,CAAC,YAAY,EAAE,MAAK;AACnC,oBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,wBAAA,MAAM,IAAI,KAAK,CACb,CAAA,mGAAA,CAAqG,CACtG;AACH,oBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;AACxD,oBAAA,OAAO,GAAG,KAAK,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;AAC7D,gBAAA,CAAC,CAAC;;gBAEF,IAAI,aAAa,EAAE;AACjB,oBAAA,iBAAiB,CAAC,SAAS,EAAE,MAAK;AAChC,wBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AAClC,4BAAA,MAAM,IAAI,KAAK,CACb,CAAA,gGAAA,CAAkG,CACnG;AACH,wBAAA,OAAO,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAC7E,oBAAA,CAAC,CAAC;gBACJ;YACF;iBAAO;AACL,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAc,CAAC;AACpD,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,aAAc,CAAC;AAChE,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAc,CAAC;AACpD,gBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,oBAAA,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtE;gBACA,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;gBAC5E,IAAI,UAAU,KAAK,SAAS;AAC1B,oBAAA,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;;gBAElF,IAAI,aAAa,EAAE;oBACjB,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACzF;YACF;;;;AAMA,YAAA,iBAAiB,CAAC,yBAAyB,EAAE,CAAC,IAAI,KAAI;AACpD,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAChD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;;;;YAMF,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,KAAI;AACzE,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,iBAAiB,CACpB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EACpB,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAkC,EAC1E,GAAG,KAAK,CAAC,GAAG,CACV,CAAC,IAAI,KAAK,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAuC,CACjF,CACF,EACD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,MAAM,KAAI;AAC9C,gBAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1F,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,MAAM,KAAI;AAC9C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACxF,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,MAAM,KAAI;AAC/C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACzF,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAI;AAChD,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1F,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,YAAY,EAAE,CAAC,MAAM,KAAI;AACzC,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACnF,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,UAAU,EAAE,CAAC,MAAM,KAAI;AACvC,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACjF,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,MAAM,KAAI;AAC9C,gBAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1F,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,MAAM,KAAI;AAC/C,gBAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1F,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAI;AAChD,gBAAA,OAAO,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1F,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAI;gBACrD,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAC/D,SAAS,CACV;AACH,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAI;gBACvD,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EACjE,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,eAAe,EAAE,CAAC,MAAM,KAAI;AAC5C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACtF,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,iBAAiB,EAAE,CAAC,MAAM,KAAI;AAC9C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACxF,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CACf,wBAAwB,EACxB,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,YAAY,KAAI;gBACvD,OAAO,MAAM,CAAC,qBAAqB,CACjC,IAAI,CAAC,sBAAsB,CACzB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EACpB,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAY,EACvC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EACpB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC9D,EACD,SAAS,CACV;AACH,YAAA,CAAC,CACF;;;;YAMD,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,MAAM,EAAE,KAAK,KAAI;gBAC5D,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,sBAAsB,CACzB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EACpB,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAA2B,CAC9D,EACD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,MAAM,EAAE,KAAK,KAAI;gBAC5D,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,sBAAsB,CACzB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EACpB,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAA2B,CAC9D,EACD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,gCAAgC,EAAE,CAAC,MAAM,KAAI;AAC7D,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EACzD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,8BAA8B,EAAE,CAAC,MAAM,KAAI;AAC3D,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EACvD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;;;;YAMF,iBAAiB,CAAC,yBAAyB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAI;gBAC9D,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAkB,CAAC,EACzF,SAAS,CACV;AACH,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAI;AAChD,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AAC1F,YAAA,CAAC,CAAC;;;;YAMF,iBAAiB,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAI;gBAClD,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAC5D,SAAS,CACV;AACH,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAI;gBAC9D,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,EACxE,SAAS,CACV;AACH,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,wBAAwB,EAAE,CAAC,MAAM,EAAE,eAAe,KAAI;gBACtE,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,EAChF,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,cAAc,EAAE,CAAC,MAAM,KAAI;AAC3C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC;AACrF,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAO,KAAI;AAC7C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;AACvF,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CAAC,uBAAuB,EAAE,MAAK;gBAC9C,OAAO,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,SAAS,CAAC;AAC9E,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,iCAAiC,EAAE,MAAK;gBACxD,OAAO,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,CAAC;AACxF,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,wBAAwB,EAAE,MAAK;gBAC/C,OAAO,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,CAAC;AAC/E,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,SAAS,KAAI;AAClD,gBAAA,OAAO,MAAM,CAAC,qBAAqB,CACjC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAmB,CAAC,EAC9E,SAAS,CACV;AACH,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,UAAU,KAAI;gBACtE,OAAO,MAAM,CAAC,qBAAqB,CACjC,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAChF,SAAS,CACV;AACH,YAAA,CAAC,CAAC;YAEF,iBAAiB,CAAC,4BAA4B,EAAE,CAAC,OAAO,EAAE,UAAU,KAAI;gBACtE,OAAO,MAAM,CAAC,qBAAqB,CACjC,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,EAChF,SAAS,CACV;AACH,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CAAC,cAAc,EAAE,CAAC,GAAG,KAAI;AACxC,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,YAAY,CACf,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAA+C,CAC9E,EACD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,cAAc,EAAE,CAAC,GAAG,KAAI;AACxC,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,YAAY,CACf,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAA+C,CAC9E,EACD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,GAAG,KAAI;AAC1C,gBAAA,OAAO,MAAM,CAAC,iBAAiB,CAC7B,IAAI,CAAC,cAAc,CACjB,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAiD,CAChF,EACD,SAAS,CACV;AACH,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CAAC,0BAA0B,EAAE,MAAK;gBACjD,OAAO,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,SAAS,CAAC;AAC7E,YAAA,CAAC,CAAC;;;;AAMF,YAAA,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,KAAI;gBACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACrC,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,SAAS,EAAE,CAAC,OAAO,KAAI;gBACvC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACrC,YAAA,CAAC,CAAC;AAEF,YAAA,iBAAiB,CAAC,UAAU,EAAE,CAAC,OAAO,KAAI;gBACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AACD;;;;"}
1
+ {"version":3,"file":"computable_context.js","sources":["../../src/js_render/computable_context.ts"],"sourcesContent":["import type { ComputableCtx } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport type { PlTreeNodeAccessor } from \"@milaboratories/pl-tree\";\nimport { checkBlockFlag } from \"@platforma-sdk/model\";\nimport type {\n ArchiveFormat,\n CommonFieldTraverseOps as CommonFieldTraverseOpsFromSDK,\n DataInfo,\n FieldTraversalStep as FieldTraversalStepFromSDK,\n Option,\n PColumn,\n PColumnValues,\n PFrameDef,\n PFrameHandle,\n PObject,\n PObjectSpec,\n PSpecPredicate,\n PTableDef,\n PTableDefV2,\n PTableHandle,\n ResourceType as ResourceTypeFromSDK,\n ResultCollection,\n ValueOrError,\n RangeBytes,\n BlockCodeKnownFeatureFlags,\n JsRenderInternal,\n} from \"@platforma-sdk/model\";\nimport {\n isDataInfo,\n mapDataInfo,\n mapPObjectData,\n mapPTableDef,\n mapPTableDefV2,\n mapValueInVOE,\n} from \"@platforma-sdk/model\";\nimport { notEmpty } from \"@milaboratories/ts-helpers\";\nimport { randomUUID } from \"node:crypto\";\nimport type { Optional } from \"utility-types\";\nimport type { BlockContextAny } from \"../middle_layer/block_ctx\";\nimport type { MiddleLayerEnvironment } from \"../middle_layer/middle_layer\";\nimport type { Block } from \"../model/project_model\";\nimport { parseFinalPObjectCollection } from \"../pool/p_object_collection\";\nimport type { ResultPool } from \"../pool/result_pool\";\nimport type { JsExecutionContext } from \"./context\";\nimport type { VmFunctionImplementation } from \"quickjs-emscripten\";\nimport { Scope, type QuickJSHandle } from \"quickjs-emscripten\";\n\nfunction bytesToBase64(data: Uint8Array | undefined): string | undefined {\n return data !== undefined ? Buffer.from(data).toString(\"base64\") : undefined;\n}\n\nexport class ComputableContextHelper implements JsRenderInternal.GlobalCfgRenderCtxMethods<\n string,\n string\n> {\n public readonly computablesToResolve: Record<string, Computable<unknown>> = {};\n\n private computableCtx: ComputableCtx | undefined;\n private readonly accessors = new Map<string, PlTreeNodeAccessor | undefined>();\n\n private readonly meta: Map<string, Block>;\n\n constructor(\n private readonly parent: JsExecutionContext,\n private readonly blockCtx: BlockContextAny,\n private readonly env: MiddleLayerEnvironment,\n private readonly featureFlags: BlockCodeKnownFeatureFlags | undefined,\n computableCtx: ComputableCtx,\n ) {\n this.computableCtx = computableCtx;\n this.meta = blockCtx.blockMeta(computableCtx);\n }\n\n public resetComputableCtx() {\n this.computableCtx = undefined;\n this.accessors.clear();\n }\n\n //\n // Methods for injected ctx object\n //\n\n getAccessorHandleByName(name: string): string | undefined {\n if (this.computableCtx === undefined)\n throw new Error(\"Accessors can't be used in this context\");\n const wellKnownAccessor = (name: string, ctxKey: \"staging\" | \"prod\"): string | undefined => {\n if (!this.accessors.has(name)) {\n const lambda = this.blockCtx[ctxKey];\n if (lambda === undefined) throw new Error(\"Staging context not available\");\n const entry = lambda(this.computableCtx!);\n if (!entry) this.accessors.set(name, undefined);\n else\n this.accessors.set(name, this.computableCtx!.accessor(entry).node({ ignoreError: true }));\n }\n return this.accessors.get(name) ? name : undefined;\n };\n if (name === \"staging\") return wellKnownAccessor(\"staging\", \"staging\");\n else if (name === \"main\") return wellKnownAccessor(\"main\", \"prod\");\n return undefined;\n }\n\n //\n // Accessors\n //\n\n resolveWithCommon(\n handle: string,\n commonOptions: CommonFieldTraverseOpsFromSDK,\n ...steps: (FieldTraversalStepFromSDK | string)[]\n ): string | undefined {\n return this.wrapAccessor(this.getAccessor(handle).traverseWithCommon(commonOptions, ...steps));\n }\n\n getResourceType(handle: string): ResourceTypeFromSDK {\n return this.getAccessor(handle).resourceType;\n }\n\n getInputsLocked(handle: string): boolean {\n return this.getAccessor(handle).getInputsLocked();\n }\n\n getOutputsLocked(handle: string): boolean {\n return this.getAccessor(handle).getOutputsLocked();\n }\n\n getIsReadyOrError(handle: string): boolean {\n return this.getAccessor(handle).getIsReadyOrError();\n }\n\n getIsFinal(handle: string): boolean {\n return this.getAccessor(handle).getIsFinal();\n }\n\n getError(handle: string): string | undefined {\n return this.wrapAccessor(this.getAccessor(handle).getError());\n }\n\n listInputFields(handle: string): string[] {\n return this.getAccessor(handle).listInputFields();\n }\n\n listOutputFields(handle: string): string[] {\n return this.getAccessor(handle).listOutputFields();\n }\n\n listDynamicFields(handle: string): string[] {\n return this.getAccessor(handle).listDynamicFields();\n }\n\n getKeyValueBase64(handle: string, key: string): string | undefined {\n return bytesToBase64(this.getAccessor(handle).getKeyValue(key));\n }\n\n getKeyValueAsString(handle: string, key: string): string | undefined {\n return this.getAccessor(handle).getKeyValueAsString(key);\n }\n\n getDataBase64(handle: string): string | undefined {\n return bytesToBase64(this.getAccessor(handle).getData());\n }\n\n getDataAsString(handle: string): string | undefined {\n return this.getAccessor(handle).getDataAsString();\n }\n\n //\n // Accessor helpers\n //\n\n parsePObjectCollection(\n handle: string,\n errorOnUnknownField: boolean,\n prefix: string,\n ...resolveSteps: string[]\n ): Record<string, PObject<string>> | undefined {\n const acc = this.getAccessor(handle);\n if (!acc.getIsReadyOrError()) return undefined;\n const accResult = parseFinalPObjectCollection(acc, errorOnUnknownField, prefix, resolveSteps);\n const result: Record<string, PObject<string>> = {};\n for (const [key, obj] of Object.entries(accResult)) {\n result[key] = mapPObjectData(obj, (d) => this.wrapAccessor(d));\n }\n return result;\n }\n\n //\n // Blobs\n //\n\n private registerComputable(hPrefix: string, computable: Computable<unknown>): string {\n const fHandle = `${hPrefix}_${randomUUID()}`;\n this.computablesToResolve[fHandle] = computable;\n return fHandle;\n }\n\n public getBlobContentAsString(handle: string, range?: RangeBytes): string {\n const resourceInfo = this.getAccessor(handle).resourceInfo;\n return this.registerComputable(\n \"getBlobContentAsString\",\n Computable.make((ctx) => this.env.driverKit.blobDriver.getDownloadedBlob(resourceInfo, ctx), {\n postprocessValue: async (value) => {\n if (value === undefined) return undefined;\n return Buffer.from(\n await this.env.driverKit.blobDriver.getContent(value.handle, range),\n ).toString(\"utf-8\");\n },\n }),\n );\n }\n\n public getBlobContentAsBase64(handle: string, range?: RangeBytes): string {\n const resourceInfo = this.getAccessor(handle).resourceInfo;\n return this.registerComputable(\n \"getBlobContentAsBase64\",\n Computable.make((ctx) => this.env.driverKit.blobDriver.getDownloadedBlob(resourceInfo, ctx), {\n postprocessValue: async (value) => {\n if (value === undefined) return undefined;\n return Buffer.from(\n await this.env.driverKit.blobDriver.getContent(value.handle, range),\n ).toString(\"base64\");\n },\n }),\n );\n }\n\n public getDownloadedBlobContentHandle(handle: string): string {\n const resourceInfo = this.getAccessor(handle).resourceInfo;\n return this.registerComputable(\n \"getDownloadedBlobContentHandle\",\n this.env.driverKit.blobDriver.getDownloadedBlob(resourceInfo),\n );\n }\n\n public getOnDemandBlobContentHandle(handle: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getOnDemandBlobContentHandle\",\n this.env.driverKit.blobDriver.getOnDemandBlob(resource),\n );\n }\n\n //\n // Blobs to URLs\n //\n\n public extractArchiveAndGetURL(handle: string, format: ArchiveFormat): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"extractArchiveAndGetURL\",\n this.env.driverKit.blobToURLDriver.extractArchiveAndGetURL(resource, format),\n );\n }\n\n //\n // Import progress\n //\n\n getImportProgress(handle: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getImportProgress\",\n this.env.driverKit.uploadDriver.getProgressId(resource),\n );\n }\n\n //\n // Logs\n //\n\n getLastLogs(handle: string, nLines: number): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getLastLogs\",\n this.env.driverKit.logDriver.getLastLogs(resource, nLines),\n );\n }\n\n getProgressLog(handle: string, patternToSearch: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getProgressLog\",\n this.env.driverKit.logDriver.getProgressLog(resource, patternToSearch),\n );\n }\n\n getProgressLogWithInfo(handle: string, patternToSearch: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getProgressLogWithInfo\",\n this.env.driverKit.logDriver.getProgressLogWithInfo(resource, patternToSearch),\n );\n }\n\n getLogHandle(handle: string): string {\n const resource = this.getAccessor(handle).persist();\n return this.registerComputable(\n \"getLogHandle\",\n this.env.driverKit.logDriver.getLogHandle(resource),\n );\n }\n\n //\n // Blocks\n //\n\n public getBlockLabel(blockId: string): string {\n const b = this.meta.get(blockId);\n if (b === undefined) throw new Error(`Block ${blockId} not found.`);\n return b.label;\n }\n\n //\n // Result Pool\n //\n\n private _resultPool: ResultPool | undefined = undefined;\n private get resultPool(): ResultPool {\n if (this._resultPool === undefined) {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't use result pool in this context (most porbably called from the future mapper)\",\n );\n this._resultPool = notEmpty(\n this.blockCtx.getResultsPool,\n \"getResultsPool\",\n )(this.computableCtx);\n }\n return this._resultPool;\n }\n\n public calculateOptions(predicate: PSpecPredicate): Option[] {\n return this.resultPool.calculateOptions(predicate);\n }\n\n public getDataFromResultPool(): ResultCollection<PObject<string>> {\n const collection = this.resultPool.getData();\n if (collection.instabilityMarker !== undefined)\n this.computableCtx!.markUnstable(`incomplete_result_pool:${collection.instabilityMarker}`);\n return {\n isComplete: collection.isComplete,\n entries: collection.entries.map((e) => ({\n ref: e.ref,\n obj: mapPObjectData(e.obj, (d) => this.wrapAccessor(d)),\n })),\n };\n }\n\n public getDataWithErrorsFromResultPool(): ResultCollection<\n Optional<PObject<ValueOrError<string, Error>>, \"id\">\n > {\n const collection = this.resultPool.getDataWithErrors();\n if (collection.instabilityMarker !== undefined)\n this.computableCtx!.markUnstable(`incomplete_result_pool:${collection.instabilityMarker}`);\n return {\n isComplete: collection.isComplete,\n entries: collection.entries.map((e) => ({\n ref: e.ref,\n obj: {\n id: e.obj.id,\n spec: e.obj.spec,\n data: mapValueInVOE(e.obj.data, (d) => this.wrapAccessor(d)),\n },\n })),\n };\n }\n\n public getSpecsFromResultPool(): ResultCollection<PObjectSpec> {\n const specs = this.resultPool.getSpecs();\n if (specs.instabilityMarker !== undefined)\n this.computableCtx!.markUnstable(`specs_from_pool_incomplete:${specs.instabilityMarker}`);\n return specs;\n }\n\n getSpecFromResultPoolByRef(blockId: string, exportName: string): PObjectSpec | undefined {\n return this.resultPool.getSpecByRef(blockId, exportName);\n }\n\n getDataFromResultPoolByRef(blockId: string, exportName: string): PObject<string> | undefined {\n return mapPObjectData(this.resultPool.getDataByRef(blockId, exportName), (acc) =>\n this.wrapAccessor(acc),\n );\n }\n\n //\n // PFrames / PTables\n //\n\n public createPFrame(\n def: PFrameDef<PColumn<string | PColumnValues | DataInfo<string>>>,\n ): PFrameHandle {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't instantiate PFrames from this context (most porbably called from the future mapper)\",\n );\n const { key, unref } = this.env.driverKit.pFrameDriver.createPFrame(\n def.map((c) => mapPObjectData(c, (d) => this.transformInputPData(d))),\n );\n this.computableCtx.addOnDestroy(unref);\n return key;\n }\n\n public createPTable(\n def: PTableDef<PColumn<string | PColumnValues | DataInfo<string>>>,\n ): PTableHandle {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't instantiate PTable from this context (most porbably called from the future mapper)\",\n );\n const { key, unref } = this.env.driverKit.pFrameDriver.createPTable(\n mapPTableDef(def, (c) => mapPObjectData(c, (d) => this.transformInputPData(d))),\n );\n this.computableCtx.addOnDestroy(unref);\n return key;\n }\n public createPTableV2(\n def: PTableDefV2<PColumn<string | PColumnValues | DataInfo<string>>>,\n ): PTableHandle {\n if (this.computableCtx === undefined)\n throw new Error(\n \"can't instantiate PTable from this context (most porbably called from the future mapper)\",\n );\n const { key, unref } = this.env.driverKit.pFrameDriver.createPTableV2(\n mapPTableDefV2(def, (c) => mapPObjectData(c, (d) => this.transformInputPData(d))),\n );\n this.computableCtx.addOnDestroy(unref);\n return key;\n }\n\n /**\n * Transforms input data for PFrame/PTable creation\n * - Converts string handles to accessors\n * - Maps accessors in DataInfo objects\n * - Passes through other values\n */\n private transformInputPData(\n d: string | PColumnValues | DataInfo<string>,\n ): PlTreeNodeAccessor | PColumnValues | DataInfo<PlTreeNodeAccessor> {\n if (typeof d === \"string\") {\n return this.getAccessor(d);\n } else if (isDataInfo(d)) {\n return mapDataInfo(d, (a) => this.getAccessor(a));\n } else {\n return d;\n }\n }\n\n //\n // Computable\n //\n\n public getCurrentUnstableMarker(): string | undefined {\n return this.computableCtx?.unstableMarker;\n }\n\n //\n // Logging\n //\n\n public logInfo(message: string): void {\n this.env.blockEventDispatcher.logInfo(this.blockCtx.blockId, message);\n }\n\n public logWarn(message: string): void {\n this.env.blockEventDispatcher.logWarn(this.blockCtx.blockId, message);\n }\n\n public logError(message: string): void {\n this.env.blockEventDispatcher.logError(this.blockCtx.blockId, message);\n }\n\n //\n // Helpers\n //\n\n private getAccessor(handle: string): PlTreeNodeAccessor {\n const accessor = this.accessors.get(handle);\n if (accessor === undefined) throw new Error(\"No such accessor\");\n return accessor;\n }\n\n private wrapAccessor(accessor: PlTreeNodeAccessor): string;\n private wrapAccessor(accessor: PlTreeNodeAccessor | undefined): string | undefined;\n private wrapAccessor(accessor: PlTreeNodeAccessor | undefined): string | undefined {\n if (accessor === undefined) return undefined;\n else {\n const nextHandle = randomUUID();\n this.accessors.set(nextHandle, accessor);\n return nextHandle;\n }\n }\n\n public injectCtx(configCtx: QuickJSHandle): void {\n const parent = this.parent;\n const vm = parent.vm;\n\n Scope.withScope((localScope) => {\n // Exporting methods\n\n const exportCtxFunction = (\n name: string,\n fn: VmFunctionImplementation<QuickJSHandle>,\n ): void => {\n const withCachedError: VmFunctionImplementation<QuickJSHandle> = (...args) => {\n // QuickJS strips all fields from errors apart from 'name' and 'message'.\n // That's why here we need to store them, and rethrow them when we exit\n // from QuickJS code.\n try {\n return (fn as any)(...args);\n } catch (e: unknown) {\n const newErr = parent.errorRepo.setAndRecreateForQuickJS(e);\n throw vm.newError(newErr);\n }\n };\n\n vm.newFunction(name, withCachedError).consume((fnh) => vm.setProp(configCtx, name, fnh));\n vm.newFunction(name, fn).consume((fnh) =>\n vm.setProp(configCtx, name + \"__internal__\", fnh),\n );\n };\n\n // Check if this is a v1/v2 block (requiresModelAPIVersion !== 2)\n // For v1/v2 blocks, state is {args, uiState} and we need to inject uiState separately\n const isLegacyBlock = !checkBlockFlag(this.featureFlags, \"requiresModelAPIVersion\", 2);\n\n // Helper to extract uiState from legacy state format {args, uiState}\n const extractUiState = (stateJson: string | undefined): string => {\n if (!stateJson) return \"{}\";\n try {\n const parsed = JSON.parse(stateJson);\n return JSON.stringify(parsed?.uiState ?? {});\n } catch {\n return \"{}\";\n }\n };\n\n if (checkBlockFlag(this.featureFlags, \"supportsLazyState\")) {\n // injecting lazy state functions\n exportCtxFunction(\"args\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.args outside the future lambda. Can't be directly used in this context.`,\n );\n const args = this.blockCtx.args(this.computableCtx);\n return args === undefined ? vm.undefined : vm.newString(args);\n });\n exportCtxFunction(\"data\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.state outside the future lambda. Can't be directly used in this context.`,\n );\n return vm.newString(this.blockCtx.data(this.computableCtx) ?? \"{}\");\n });\n exportCtxFunction(\"activeArgs\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.activeArgs outside the future lambda. Can't be directly used in this context.`,\n );\n const res = this.blockCtx.activeArgs(this.computableCtx);\n return res === undefined ? vm.undefined : vm.newString(res);\n });\n // For v1/v2 blocks, also inject uiState (extracted from state.uiState)\n if (isLegacyBlock) {\n exportCtxFunction(\"uiState\", () => {\n if (this.computableCtx === undefined)\n throw new Error(\n `Add dummy call to ctx.uiState outside the future lambda. Can't be directly used in this context.`,\n );\n return vm.newString(extractUiState(this.blockCtx.data(this.computableCtx)));\n });\n }\n } else {\n const args = this.blockCtx.args(this.computableCtx!);\n const activeArgs = this.blockCtx.activeArgs(this.computableCtx!);\n const data = this.blockCtx.data(this.computableCtx!);\n if (args !== undefined) {\n vm.setProp(configCtx, \"args\", localScope.manage(vm.newString(args)));\n }\n vm.setProp(configCtx, \"data\", localScope.manage(vm.newString(data ?? \"{}\")));\n if (activeArgs !== undefined)\n vm.setProp(configCtx, \"activeArgs\", localScope.manage(vm.newString(activeArgs)));\n // For v1/v2 blocks, also inject uiState (extracted from state.uiState)\n if (isLegacyBlock) {\n vm.setProp(configCtx, \"uiState\", localScope.manage(vm.newString(extractUiState(data))));\n }\n }\n\n //\n // Methods for injected ctx object\n //\n\n exportCtxFunction(\"getAccessorHandleByName\", (name) => {\n return parent.exportSingleValue(\n this.getAccessorHandleByName(vm.getString(name)),\n undefined,\n );\n });\n\n //\n // Accessors\n //\n\n exportCtxFunction(\"resolveWithCommon\", (handle, commonOptions, ...steps) => {\n return parent.exportSingleValue(\n this.resolveWithCommon(\n vm.getString(handle),\n parent.importObjectViaJson(commonOptions) as CommonFieldTraverseOpsFromSDK,\n ...steps.map(\n (step) => parent.importObjectViaJson(step) as FieldTraversalStepFromSDK | string,\n ),\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"getResourceType\", (handle) => {\n return parent.exportObjectViaJson(this.getResourceType(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getInputsLocked\", (handle) => {\n return parent.exportSingleValue(this.getInputsLocked(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getOutputsLocked\", (handle) => {\n return parent.exportSingleValue(this.getOutputsLocked(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getIsReadyOrError\", (handle) => {\n return parent.exportSingleValue(this.getIsReadyOrError(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getIsFinal\", (handle) => {\n return parent.exportSingleValue(this.getIsFinal(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getError\", (handle) => {\n return parent.exportSingleValue(this.getError(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"listInputFields\", (handle) => {\n return parent.exportObjectViaJson(this.listInputFields(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"listOutputFields\", (handle) => {\n return parent.exportObjectViaJson(this.listInputFields(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"listDynamicFields\", (handle) => {\n return parent.exportObjectViaJson(this.listInputFields(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getKeyValueBase64\", (handle, key) => {\n return parent.exportSingleValue(\n this.getKeyValueBase64(vm.getString(handle), vm.getString(key)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getKeyValueAsString\", (handle, key) => {\n return parent.exportSingleValue(\n this.getKeyValueAsString(vm.getString(handle), vm.getString(key)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getDataBase64\", (handle) => {\n return parent.exportSingleValue(this.getDataBase64(vm.getString(handle)), undefined);\n });\n\n exportCtxFunction(\"getDataAsString\", (handle) => {\n return parent.exportSingleValue(this.getDataAsString(vm.getString(handle)), undefined);\n });\n\n //\n // Accessor helpers\n //\n\n exportCtxFunction(\n \"parsePObjectCollection\",\n (handle, errorOnUnknownField, prefix, ...resolveSteps) => {\n return parent.exportObjectUniversal(\n this.parsePObjectCollection(\n vm.getString(handle),\n vm.dump(errorOnUnknownField) as boolean,\n vm.getString(prefix),\n ...resolveSteps.map((stepHandle) => vm.getString(stepHandle)),\n ),\n undefined,\n );\n },\n );\n\n //\n // Blobs\n //\n\n exportCtxFunction(\"getBlobContentAsBase64\", (handle, range) => {\n return parent.exportSingleValue(\n this.getBlobContentAsBase64(\n vm.getString(handle),\n parent.importObjectUniversal(range) as RangeBytes | undefined,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"getBlobContentAsString\", (handle, range) => {\n return parent.exportSingleValue(\n this.getBlobContentAsString(\n vm.getString(handle),\n parent.importObjectUniversal(range) as RangeBytes | undefined,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"getDownloadedBlobContentHandle\", (handle) => {\n return parent.exportSingleValue(\n this.getDownloadedBlobContentHandle(vm.getString(handle)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getOnDemandBlobContentHandle\", (handle) => {\n return parent.exportSingleValue(\n this.getOnDemandBlobContentHandle(vm.getString(handle)),\n undefined,\n );\n });\n\n //\n // Blobs to URLs\n //\n\n exportCtxFunction(\"extractArchiveAndGetURL\", (handle, format) => {\n return parent.exportSingleValue(\n this.extractArchiveAndGetURL(vm.getString(handle), vm.getString(format) as ArchiveFormat),\n undefined,\n );\n });\n\n //\n // ImportProgress\n //\n\n exportCtxFunction(\"getImportProgress\", (handle) => {\n return parent.exportSingleValue(this.getImportProgress(vm.getString(handle)), undefined);\n });\n\n //\n // Logs\n //\n\n exportCtxFunction(\"getLastLogs\", (handle, nLines) => {\n return parent.exportSingleValue(\n this.getLastLogs(vm.getString(handle), vm.getNumber(nLines)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getProgressLog\", (handle, patternToSearch) => {\n return parent.exportSingleValue(\n this.getProgressLog(vm.getString(handle), vm.getString(patternToSearch)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getProgressLogWithInfo\", (handle, patternToSearch) => {\n return parent.exportSingleValue(\n this.getProgressLogWithInfo(vm.getString(handle), vm.getString(patternToSearch)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getLogHandle\", (handle) => {\n return parent.exportSingleValue(this.getLogHandle(vm.getString(handle)), undefined);\n });\n\n //\n // Blocks\n //\n\n exportCtxFunction(\"getBlockLabel\", (blockId) => {\n return parent.exportSingleValue(this.getBlockLabel(vm.getString(blockId)), undefined);\n });\n\n //\n // Result pool\n //\n\n exportCtxFunction(\"getDataFromResultPool\", () => {\n return parent.exportObjectUniversal(this.getDataFromResultPool(), undefined);\n });\n\n exportCtxFunction(\"getDataWithErrorsFromResultPool\", () => {\n return parent.exportObjectUniversal(this.getDataWithErrorsFromResultPool(), undefined);\n });\n\n exportCtxFunction(\"getSpecsFromResultPool\", () => {\n return parent.exportObjectUniversal(this.getSpecsFromResultPool(), undefined);\n });\n\n exportCtxFunction(\"calculateOptions\", (predicate) => {\n return parent.exportObjectUniversal(\n this.calculateOptions(parent.importObjectViaJson(predicate) as PSpecPredicate),\n undefined,\n );\n });\n\n exportCtxFunction(\"getSpecFromResultPoolByRef\", (blockId, exportName) => {\n return parent.exportObjectUniversal(\n this.getSpecFromResultPoolByRef(vm.getString(blockId), vm.getString(exportName)),\n undefined,\n );\n });\n\n exportCtxFunction(\"getDataFromResultPoolByRef\", (blockId, exportName) => {\n return parent.exportObjectUniversal(\n this.getDataFromResultPoolByRef(vm.getString(blockId), vm.getString(exportName)),\n undefined,\n );\n });\n\n //\n // PFrames / PTables\n //\n\n exportCtxFunction(\"createPFrame\", (def) => {\n return parent.exportSingleValue(\n this.createPFrame(\n parent.importObjectViaJson(def) as PFrameDef<PColumn<string | PColumnValues>>,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"createPTable\", (def) => {\n return parent.exportSingleValue(\n this.createPTable(\n parent.importObjectViaJson(def) as PTableDef<PColumn<string | PColumnValues>>,\n ),\n undefined,\n );\n });\n\n exportCtxFunction(\"createPTableV2\", (def) => {\n return parent.exportSingleValue(\n this.createPTableV2(\n parent.importObjectViaJson(def) as PTableDefV2<PColumn<string | PColumnValues>>,\n ),\n undefined,\n );\n });\n\n //\n // Computable\n //\n\n exportCtxFunction(\"getCurrentUnstableMarker\", () => {\n return parent.exportSingleValue(this.getCurrentUnstableMarker(), undefined);\n });\n\n //\n // Logging\n //\n\n exportCtxFunction(\"logInfo\", (message) => {\n this.logInfo(vm.getString(message));\n });\n\n exportCtxFunction(\"logWarn\", (message) => {\n this.logWarn(vm.getString(message));\n });\n\n exportCtxFunction(\"logError\", (message) => {\n this.logError(vm.getString(message));\n });\n });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@
3
3
  var computable = require('@milaboratories/computable');
4
4
  var plClient = require('@milaboratories/pl-client');
5
5
  var block_pack_spec = require('../model/block_pack_spec.cjs');
6
- require('@platforma-sdk/model');
7
6
  var project_model = require('../model/project_model.cjs');
8
7
  var block_pack = require('../mutator/block-pack/block_pack.cjs');
9
8
  var util = require('./util.cjs');
@@ -1 +1 @@
1
- {"version":3,"file":"frontend_path.cjs","sources":["../../src/middle_layer/frontend_path.ts"],"sourcesContent":["import type { PlTreeEntry, PlTreeEntryAccessor } from \"@milaboratories/pl-tree\";\nimport type { MiddleLayerEnvironment } from \"./middle_layer\";\nimport type { ComputableStableDefined } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport { Pl, resourceTypesEqual } from \"@milaboratories/pl-client\";\nimport type { FrontendFromFolderData, FrontendFromUrlData } from \"../model\";\nimport { FrontendFromFolderResourceType, FrontendFromUrlResourceType } from \"../model\";\nimport type { UrlResult } from \"@milaboratories/pl-drivers\";\nimport { projectFieldName } from \"../model/project_model\";\nimport { BlockPackFrontendField } from \"../mutator/block-pack/block_pack\";\nimport { getBlockPackInfo } from \"./util\";\nimport type { FrontendData } from \"../model/frontend\";\n\nfunction kernel(\n frontendRes: PlTreeEntryAccessor,\n env: MiddleLayerEnvironment,\n): undefined | string | ComputableStableDefined<UrlResult> {\n const node = frontendRes.node();\n if (resourceTypesEqual(node.resourceType, FrontendFromUrlResourceType)) {\n const data = node.getDataAsJson<FrontendFromUrlData>();\n if (data === undefined) throw new Error(`No resource data.`);\n return env.frontendDownloadDriver.getUrl(new URL(data.url)).withStableType();\n } else if (resourceTypesEqual(node.resourceType, FrontendFromFolderResourceType)) {\n const data = node.getDataAsJson<FrontendFromFolderData>();\n if (data === undefined) throw new Error(`No resource data.`);\n env.signer.verify(\n data.path,\n data.signature,\n `Frontend path signature mismatch for: ${data.path}`,\n );\n return data.path;\n } else {\n throw new Error(`Unsupported resource type: ${JSON.stringify(node.resourceType)}`);\n }\n}\n\nfunction frontendUrlComputable(\n entry: PlTreeEntry | undefined,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<string> | undefined {\n if (entry === undefined) return undefined;\n return Computable.make(\n (c) => {\n return kernel(c.accessor(entry), env);\n },\n {\n postprocessValue: (v) => {\n if (v === undefined) return undefined;\n if (typeof v === \"string\") return v;\n if (v.error !== undefined) throw new Error(v.error);\n return v.url;\n },\n },\n ).withStableType();\n}\n\nexport function frontendData(\n projectEntry: PlTreeEntry,\n id: string,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<FrontendData> {\n return Computable.make(\n (ctx) => {\n const prj = ctx.accessor(projectEntry).node();\n const bp = getBlockPackInfo(prj, id);\n const frontendEntry = prj\n .traverse(\n {\n field: projectFieldName(id, \"blockPack\"),\n assertFieldType: \"Dynamic\",\n },\n { field: Pl.HolderRefField, assertFieldType: \"Input\", errorIfFieldNotFound: true },\n { field: BlockPackFrontendField, assertFieldType: \"Input\" },\n )\n ?.persist();\n return {\n url: frontendUrlComputable(frontendEntry, env),\n sdkVersion: bp?.cfg.sdkVersion,\n };\n },\n { mode: \"StableOnlyLive\" },\n ) as ComputableStableDefined<FrontendData>;\n}\n"],"names":["resourceTypesEqual","FrontendFromUrlResourceType","FrontendFromFolderResourceType","Computable","getBlockPackInfo","projectFieldName","Pl","BlockPackFrontendField"],"mappings":"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"}
1
+ {"version":3,"file":"frontend_path.cjs","sources":["../../src/middle_layer/frontend_path.ts"],"sourcesContent":["import type { PlTreeEntry, PlTreeEntryAccessor } from \"@milaboratories/pl-tree\";\nimport type { MiddleLayerEnvironment } from \"./middle_layer\";\nimport type { ComputableStableDefined } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport { Pl, resourceTypesEqual } from \"@milaboratories/pl-client\";\nimport type { FrontendFromFolderData, FrontendFromUrlData } from \"../model\";\nimport { FrontendFromFolderResourceType, FrontendFromUrlResourceType } from \"../model\";\nimport type { UrlResult } from \"@milaboratories/pl-drivers\";\nimport { projectFieldName } from \"../model/project_model\";\nimport { BlockPackFrontendField } from \"../mutator/block-pack/block_pack\";\nimport { getBlockPackInfo } from \"./util\";\nimport type { FrontendData } from \"../model/frontend\";\n\nfunction kernel(\n frontendRes: PlTreeEntryAccessor,\n env: MiddleLayerEnvironment,\n): undefined | string | ComputableStableDefined<UrlResult> {\n const node = frontendRes.node();\n if (resourceTypesEqual(node.resourceType, FrontendFromUrlResourceType)) {\n const data = node.getDataAsJson<FrontendFromUrlData>();\n if (data === undefined) throw new Error(`No resource data.`);\n return env.frontendDownloadDriver.getUrl(new URL(data.url)).withStableType();\n } else if (resourceTypesEqual(node.resourceType, FrontendFromFolderResourceType)) {\n const data = node.getDataAsJson<FrontendFromFolderData>();\n if (data === undefined) throw new Error(`No resource data.`);\n env.signer.verify(\n data.path,\n data.signature,\n `Frontend path signature mismatch for: ${data.path}`,\n );\n return data.path;\n } else {\n throw new Error(`Unsupported resource type: ${JSON.stringify(node.resourceType)}`);\n }\n}\n\nfunction frontendUrlComputable(\n entry: PlTreeEntry | undefined,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<string> | undefined {\n if (entry === undefined) return undefined;\n return Computable.make(\n (c) => {\n return kernel(c.accessor(entry), env);\n },\n {\n postprocessValue: (v) => {\n if (v === undefined) return undefined;\n if (typeof v === \"string\") return v;\n if (v.error !== undefined) throw new Error(v.error);\n return v.url;\n },\n },\n ).withStableType();\n}\n\nexport function frontendData(\n projectEntry: PlTreeEntry,\n id: string,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<FrontendData> {\n return Computable.make(\n (ctx) => {\n const prj = ctx.accessor(projectEntry).node();\n const bp = getBlockPackInfo(prj, id);\n const frontendEntry = prj\n .traverse(\n {\n field: projectFieldName(id, \"blockPack\"),\n assertFieldType: \"Dynamic\",\n },\n { field: Pl.HolderRefField, assertFieldType: \"Input\", errorIfFieldNotFound: true },\n { field: BlockPackFrontendField, assertFieldType: \"Input\" },\n )\n ?.persist();\n return {\n url: frontendUrlComputable(frontendEntry, env),\n sdkVersion: bp?.cfg.sdkVersion,\n };\n },\n { mode: \"StableOnlyLive\" },\n ) as ComputableStableDefined<FrontendData>;\n}\n"],"names":["resourceTypesEqual","FrontendFromUrlResourceType","FrontendFromFolderResourceType","Computable","getBlockPackInfo","projectFieldName","Pl","BlockPackFrontendField"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { Computable } from '@milaboratories/computable';
2
2
  import { Pl, resourceTypesEqual } from '@milaboratories/pl-client';
3
3
  import { FrontendFromUrlResourceType, FrontendFromFolderResourceType } from '../model/block_pack_spec.js';
4
- import '@platforma-sdk/model';
5
4
  import { projectFieldName } from '../model/project_model.js';
6
5
  import { BlockPackFrontendField } from '../mutator/block-pack/block_pack.js';
7
6
  import { getBlockPackInfo } from './util.js';
@@ -1 +1 @@
1
- {"version":3,"file":"frontend_path.js","sources":["../../src/middle_layer/frontend_path.ts"],"sourcesContent":["import type { PlTreeEntry, PlTreeEntryAccessor } from \"@milaboratories/pl-tree\";\nimport type { MiddleLayerEnvironment } from \"./middle_layer\";\nimport type { ComputableStableDefined } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport { Pl, resourceTypesEqual } from \"@milaboratories/pl-client\";\nimport type { FrontendFromFolderData, FrontendFromUrlData } from \"../model\";\nimport { FrontendFromFolderResourceType, FrontendFromUrlResourceType } from \"../model\";\nimport type { UrlResult } from \"@milaboratories/pl-drivers\";\nimport { projectFieldName } from \"../model/project_model\";\nimport { BlockPackFrontendField } from \"../mutator/block-pack/block_pack\";\nimport { getBlockPackInfo } from \"./util\";\nimport type { FrontendData } from \"../model/frontend\";\n\nfunction kernel(\n frontendRes: PlTreeEntryAccessor,\n env: MiddleLayerEnvironment,\n): undefined | string | ComputableStableDefined<UrlResult> {\n const node = frontendRes.node();\n if (resourceTypesEqual(node.resourceType, FrontendFromUrlResourceType)) {\n const data = node.getDataAsJson<FrontendFromUrlData>();\n if (data === undefined) throw new Error(`No resource data.`);\n return env.frontendDownloadDriver.getUrl(new URL(data.url)).withStableType();\n } else if (resourceTypesEqual(node.resourceType, FrontendFromFolderResourceType)) {\n const data = node.getDataAsJson<FrontendFromFolderData>();\n if (data === undefined) throw new Error(`No resource data.`);\n env.signer.verify(\n data.path,\n data.signature,\n `Frontend path signature mismatch for: ${data.path}`,\n );\n return data.path;\n } else {\n throw new Error(`Unsupported resource type: ${JSON.stringify(node.resourceType)}`);\n }\n}\n\nfunction frontendUrlComputable(\n entry: PlTreeEntry | undefined,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<string> | undefined {\n if (entry === undefined) return undefined;\n return Computable.make(\n (c) => {\n return kernel(c.accessor(entry), env);\n },\n {\n postprocessValue: (v) => {\n if (v === undefined) return undefined;\n if (typeof v === \"string\") return v;\n if (v.error !== undefined) throw new Error(v.error);\n return v.url;\n },\n },\n ).withStableType();\n}\n\nexport function frontendData(\n projectEntry: PlTreeEntry,\n id: string,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<FrontendData> {\n return Computable.make(\n (ctx) => {\n const prj = ctx.accessor(projectEntry).node();\n const bp = getBlockPackInfo(prj, id);\n const frontendEntry = prj\n .traverse(\n {\n field: projectFieldName(id, \"blockPack\"),\n assertFieldType: \"Dynamic\",\n },\n { field: Pl.HolderRefField, assertFieldType: \"Input\", errorIfFieldNotFound: true },\n { field: BlockPackFrontendField, assertFieldType: \"Input\" },\n )\n ?.persist();\n return {\n url: frontendUrlComputable(frontendEntry, env),\n sdkVersion: bp?.cfg.sdkVersion,\n };\n },\n { mode: \"StableOnlyLive\" },\n ) as ComputableStableDefined<FrontendData>;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frontend_path.js","sources":["../../src/middle_layer/frontend_path.ts"],"sourcesContent":["import type { PlTreeEntry, PlTreeEntryAccessor } from \"@milaboratories/pl-tree\";\nimport type { MiddleLayerEnvironment } from \"./middle_layer\";\nimport type { ComputableStableDefined } from \"@milaboratories/computable\";\nimport { Computable } from \"@milaboratories/computable\";\nimport { Pl, resourceTypesEqual } from \"@milaboratories/pl-client\";\nimport type { FrontendFromFolderData, FrontendFromUrlData } from \"../model\";\nimport { FrontendFromFolderResourceType, FrontendFromUrlResourceType } from \"../model\";\nimport type { UrlResult } from \"@milaboratories/pl-drivers\";\nimport { projectFieldName } from \"../model/project_model\";\nimport { BlockPackFrontendField } from \"../mutator/block-pack/block_pack\";\nimport { getBlockPackInfo } from \"./util\";\nimport type { FrontendData } from \"../model/frontend\";\n\nfunction kernel(\n frontendRes: PlTreeEntryAccessor,\n env: MiddleLayerEnvironment,\n): undefined | string | ComputableStableDefined<UrlResult> {\n const node = frontendRes.node();\n if (resourceTypesEqual(node.resourceType, FrontendFromUrlResourceType)) {\n const data = node.getDataAsJson<FrontendFromUrlData>();\n if (data === undefined) throw new Error(`No resource data.`);\n return env.frontendDownloadDriver.getUrl(new URL(data.url)).withStableType();\n } else if (resourceTypesEqual(node.resourceType, FrontendFromFolderResourceType)) {\n const data = node.getDataAsJson<FrontendFromFolderData>();\n if (data === undefined) throw new Error(`No resource data.`);\n env.signer.verify(\n data.path,\n data.signature,\n `Frontend path signature mismatch for: ${data.path}`,\n );\n return data.path;\n } else {\n throw new Error(`Unsupported resource type: ${JSON.stringify(node.resourceType)}`);\n }\n}\n\nfunction frontendUrlComputable(\n entry: PlTreeEntry | undefined,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<string> | undefined {\n if (entry === undefined) return undefined;\n return Computable.make(\n (c) => {\n return kernel(c.accessor(entry), env);\n },\n {\n postprocessValue: (v) => {\n if (v === undefined) return undefined;\n if (typeof v === \"string\") return v;\n if (v.error !== undefined) throw new Error(v.error);\n return v.url;\n },\n },\n ).withStableType();\n}\n\nexport function frontendData(\n projectEntry: PlTreeEntry,\n id: string,\n env: MiddleLayerEnvironment,\n): ComputableStableDefined<FrontendData> {\n return Computable.make(\n (ctx) => {\n const prj = ctx.accessor(projectEntry).node();\n const bp = getBlockPackInfo(prj, id);\n const frontendEntry = prj\n .traverse(\n {\n field: projectFieldName(id, \"blockPack\"),\n assertFieldType: \"Dynamic\",\n },\n { field: Pl.HolderRefField, assertFieldType: \"Input\", errorIfFieldNotFound: true },\n { field: BlockPackFrontendField, assertFieldType: \"Input\" },\n )\n ?.persist();\n return {\n url: frontendUrlComputable(frontendEntry, env),\n sdkVersion: bp?.cfg.sdkVersion,\n };\n },\n { mode: \"StableOnlyLive\" },\n ) as ComputableStableDefined<FrontendData>;\n}\n"],"names":[],"mappings":"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"}
@@ -67,6 +67,10 @@ class MiddleLayer {
67
67
  addRuntimeCapability(requirement, value = true) {
68
68
  this.env.runtimeCapabilities.addSupportedRequirement(requirement, value);
69
69
  }
70
+ /** Checks if the given block feature flags are compatible with the runtime capabilities. */
71
+ checkBlockCompatibility(featureFlags) {
72
+ return this.env.runtimeCapabilities.checkCompatibility(featureFlags);
73
+ }
70
74
  /** Returns extended API driver kit used internally by middle layer. */
71
75
  get internalDriverKit() {
72
76
  return this.env.driverKit;
@@ -209,7 +213,7 @@ class MiddleLayer {
209
213
  // add runtime capabilities of model here
210
214
  runtimeCapabilities.addSupportedRequirement("requiresModelAPIVersion", 1);
211
215
  runtimeCapabilities.addSupportedRequirement("requiresModelAPIVersion", 2);
212
- runtimeCapabilities.addSupportedRequirement("requiresCreatePTableV2", true);
216
+ runtimeCapabilities.addSupportedRequirement("requiresCreatePTable", 2);
213
217
  // runtime capabilities of the desktop are to be added by the desktop app / test framework
214
218
  const env = {
215
219
  pl,
@@ -1 +1 @@
1
- {"version":3,"file":"middle_layer.cjs","sources":["../../src/middle_layer/middle_layer.ts"],"sourcesContent":["import type { PlClient, ResourceId } from \"@milaboratories/pl-client\";\nimport { field, isNullResourceId, toGlobalResourceId } from \"@milaboratories/pl-client\";\nimport { createProjectList, ProjectsField, ProjectsResourceType } from \"./project_list\";\nimport { createProject, withProjectAuthored } from \"../mutator/project\";\nimport type { SynchronizedTreeState } from \"@milaboratories/pl-tree\";\nimport { BlockPackPreparer } from \"../mutator/block-pack/block_pack\";\nimport type { MiLogger, Signer } from \"@milaboratories/ts-helpers\";\nimport { BlockEventDispatcher } from \"@milaboratories/ts-helpers\";\nimport { HmacSha256Signer } from \"@milaboratories/ts-helpers\";\nimport type { ComputableStableDefined } from \"@milaboratories/computable\";\nimport { WatchableValue } from \"@milaboratories/computable\";\nimport { Project } from \"./project\";\nimport type { MiddleLayerOps, MiddleLayerOpsConstructor } from \"./ops\";\nimport { DefaultMiddleLayerOpsPaths, DefaultMiddleLayerOpsSettings } from \"./ops\";\nimport { randomUUID } from \"node:crypto\";\nimport type { ProjectListEntry } from \"../model\";\nimport type {\n AuthorMarker,\n ProjectMeta,\n BlockPlatform,\n} from \"@milaboratories/pl-model-middle-layer\";\nimport { BlockUpdateWatcher } from \"../block_registry/watcher\";\nimport type { QuickJSWASMModule } from \"quickjs-emscripten\";\nimport { getQuickJS } from \"quickjs-emscripten\";\nimport type { MiddleLayerDriverKit } from \"./driver_kit\";\nimport { initDriverKit } from \"./driver_kit\";\nimport type { DriverKit, SupportedRequirement } from \"@platforma-sdk/model\";\nimport { RuntimeCapabilities } from \"@platforma-sdk/model\";\nimport type { DownloadUrlDriver } from \"@milaboratories/pl-drivers\";\nimport { V2RegistryProvider } from \"../block_registry\";\nimport type { Dispatcher } from \"undici\";\nimport { RetryAgent } from \"undici\";\nimport { getDebugFlags } from \"../debug\";\nimport { ProjectHelper } from \"../model/project_helper\";\n\nexport interface MiddleLayerEnvironment {\n dispose(): Promise<void>;\n readonly pl: PlClient;\n readonly runtimeCapabilities: RuntimeCapabilities;\n readonly logger: MiLogger;\n readonly blockEventDispatcher: BlockEventDispatcher;\n readonly httpDispatcher: Dispatcher;\n readonly retryHttpDispatcher: Dispatcher;\n readonly signer: Signer;\n readonly ops: MiddleLayerOps;\n readonly bpPreparer: BlockPackPreparer;\n readonly frontendDownloadDriver: DownloadUrlDriver;\n readonly blockUpdateWatcher: BlockUpdateWatcher;\n readonly quickJs: QuickJSWASMModule;\n readonly driverKit: MiddleLayerDriverKit;\n readonly projectHelper: ProjectHelper;\n}\n\n/**\n * Main access object to work with pl from UI.\n *\n * It implements an abstraction layer of projects and blocks.\n *\n * As a main entry point inside the pl, this object uses a resource attached\n * via the {@link ProjectsField} to the pl client's root, this resource\n * contains project list.\n *\n * Read about alternative roots, if isolated project lists (working environments)\n * are required.\n * */\nexport class MiddleLayer {\n public readonly pl: PlClient;\n\n /** Contains a reactive list of projects along with their meta information. */\n public readonly projectList: ComputableStableDefined<ProjectListEntry[]>;\n\n private constructor(\n private readonly env: MiddleLayerEnvironment,\n public readonly driverKit: DriverKit,\n public readonly signer: Signer,\n private readonly projectListResourceId: ResourceId,\n private readonly openedProjectsList: WatchableValue<ResourceId[]>,\n private readonly projectListTree: SynchronizedTreeState,\n public readonly blockRegistryProvider: V2RegistryProvider,\n projectList: ComputableStableDefined<ProjectListEntry[]>,\n ) {\n this.projectList = projectList;\n this.pl = this.env.pl;\n }\n\n /**\n * Get the OS where backend is running.\n * For old backend versions returns undefined.\n */\n public get serverPlatform(): BlockPlatform | undefined {\n return this.pl.serverInfo.platform as BlockPlatform | undefined;\n }\n\n /** Adds a runtime capability to the middle layer. */\n public addRuntimeCapability(\n requirement: SupportedRequirement,\n value: number | boolean = true,\n ): void {\n this.env.runtimeCapabilities.addSupportedRequirement(requirement, value);\n }\n\n /** Returns extended API driver kit used internally by middle layer. */\n public get internalDriverKit(): MiddleLayerDriverKit {\n return this.env.driverKit;\n }\n\n //\n // Project List Manipulation\n //\n\n /** Creates a project with initial state and adds it to project list. */\n public async createProject(meta: ProjectMeta, id: string = randomUUID()): Promise<ResourceId> {\n const resource = await this.pl.withWriteTx(\"MLCreateProject\", async (tx) => {\n const prj = await createProject(tx, meta);\n tx.createField(field(this.projectListResourceId, id), \"Dynamic\", prj);\n await tx.commit();\n return await toGlobalResourceId(prj);\n });\n await this.projectListTree.refreshState();\n return resource;\n }\n\n /** Updates project metadata */\n public async setProjectMeta(\n rid: ResourceId,\n meta: ProjectMeta,\n author?: AuthorMarker,\n ): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.pl,\n rid,\n author,\n (prj) => {\n prj.setMeta(meta);\n },\n { name: \"setProjectMeta\" },\n );\n await this.projectListTree.refreshState();\n }\n\n /** Permanently deletes project from the project list, this will result in\n * destruction of all attached objects, like files, analysis results etc. */\n public async deleteProject(id: string): Promise<void> {\n await this.pl.withWriteTx(\"MLRemoveProject\", async (tx) => {\n tx.removeField(field(this.projectListResourceId, id));\n await tx.commit();\n });\n await this.projectListTree.refreshState();\n }\n\n //\n // Projects\n //\n\n private readonly openedProjectsByRid = new Map<ResourceId, Project>();\n\n private async projectIdToResourceId(id: string): Promise<ResourceId> {\n return await this.pl.withReadTx(\"Project id to resource id\", async (tx) => {\n const rid = (await tx.getField(field(this.projectListResourceId, id))).value;\n if (isNullResourceId(rid)) throw new Error(\"Unexpected project list structure.\");\n return rid;\n });\n }\n\n private async ensureProjectRid(id: ResourceId | string): Promise<ResourceId> {\n if (typeof id === \"string\") return await this.projectIdToResourceId(id);\n else return id;\n }\n\n /** Opens a project, and starts corresponding project maintenance loop. */\n public async openProject(id: ResourceId | string) {\n const rid = await this.ensureProjectRid(id);\n if (this.openedProjectsByRid.has(rid)) throw new Error(`Project ${rid} already opened`);\n this.openedProjectsByRid.set(rid, await Project.init(this.env, rid));\n this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()]);\n }\n\n /** Closes the project, and deallocate all corresponding resources. */\n public async closeProject(rid: ResourceId): Promise<void> {\n const prj = this.openedProjectsByRid.get(rid);\n if (prj === undefined) throw new Error(`Project ${rid} not found among opened projects`);\n this.openedProjectsByRid.delete(rid);\n await prj.destroy();\n this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()]);\n }\n\n /** Returns a project access object for opened project, for the given project\n * resource id. */\n public getOpenedProject(rid: ResourceId): Project {\n const prj = this.openedProjectsByRid.get(rid);\n if (prj === undefined) throw new Error(`Project ${rid} not found among opened projects`);\n return prj;\n }\n\n /** Returns true if project with given resource id is currently opened. */\n public isProjectOpened(rid: ResourceId): boolean {\n return this.openedProjectsByRid.has(rid);\n }\n\n /**\n * Deallocates all runtime resources consumed by this object and awaits\n * actual termination of event loops and other processes associated with\n * them.\n */\n public async close() {\n await Promise.all([...this.openedProjectsByRid.values()].map((prj) => prj.destroy()));\n // this.env.quickJs;\n await this.projectListTree.terminate();\n await this.env.dispose();\n await this.pl.close();\n }\n\n /** @deprecated */\n public async closeAndAwaitTermination() {\n await this.close();\n }\n\n /** Generates sufficiently random string to be used as local secret for the\n * middle layer */\n public static generateLocalSecret(): string {\n return HmacSha256Signer.generateSecret();\n }\n\n /** Returns a block event dispatcher, which can be used to listen to block events. */\n public get blockEventDispatcher(): BlockEventDispatcher {\n return this.env.blockEventDispatcher;\n }\n\n /** Initialize middle layer */\n public static async init(\n pl: PlClient,\n workdir: string,\n _ops: MiddleLayerOpsConstructor,\n ): Promise<MiddleLayer> {\n const ops: MiddleLayerOps = {\n ...DefaultMiddleLayerOpsSettings,\n ...DefaultMiddleLayerOpsPaths(workdir),\n ..._ops,\n };\n\n // overriding debug options from environment variables\n ops.defaultTreeOptions.logStat = getDebugFlags().logTreeStats;\n ops.debugOps.dumpInitialTreeState = getDebugFlags().dumpInitialTreeState;\n\n const projects = await pl.withWriteTx(\"MLInitialization\", async (tx) => {\n const projectsField = field(tx.clientRoot, ProjectsField);\n tx.createField(projectsField, \"Dynamic\");\n const projectsFieldData = await tx.getField(projectsField);\n if (isNullResourceId(projectsFieldData.value)) {\n const projects = tx.createEphemeral(ProjectsResourceType);\n tx.lock(projects);\n\n tx.setField(projectsField, projects);\n\n await tx.commit();\n\n return await projects.globalId;\n } else {\n return projectsFieldData.value;\n }\n });\n\n const logger = ops.logger;\n\n const driverKit = await initDriverKit(pl, workdir, ops.frontendDownloadPath, ops);\n\n // passed to components having no own retry logic\n const retryHttpDispatcher = new RetryAgent(pl.httpDispatcher);\n\n const v2RegistryProvider = new V2RegistryProvider(retryHttpDispatcher);\n\n const bpPreparer = new BlockPackPreparer(\n v2RegistryProvider,\n driverKit.signer,\n retryHttpDispatcher,\n );\n\n const quickJs = await getQuickJS();\n\n const runtimeCapabilities = new RuntimeCapabilities();\n // add runtime capabilities of model here\n runtimeCapabilities.addSupportedRequirement(\"requiresModelAPIVersion\", 1);\n runtimeCapabilities.addSupportedRequirement(\"requiresModelAPIVersion\", 2);\n runtimeCapabilities.addSupportedRequirement(\"requiresCreatePTableV2\", true);\n // runtime capabilities of the desktop are to be added by the desktop app / test framework\n\n const env: MiddleLayerEnvironment = {\n pl,\n blockEventDispatcher: new BlockEventDispatcher(),\n signer: driverKit.signer,\n logger,\n httpDispatcher: pl.httpDispatcher,\n retryHttpDispatcher,\n ops,\n bpPreparer,\n frontendDownloadDriver: driverKit.frontendDriver,\n driverKit,\n blockUpdateWatcher: new BlockUpdateWatcher(v2RegistryProvider, logger, {\n minDelay: ops.devBlockUpdateRecheckInterval,\n http: retryHttpDispatcher,\n preferredUpdateChannel: ops.preferredUpdateChannel,\n }),\n runtimeCapabilities,\n quickJs,\n projectHelper: new ProjectHelper(quickJs),\n dispose: async () => {\n await retryHttpDispatcher.destroy();\n await driverKit.dispose();\n },\n };\n\n const openedProjects = new WatchableValue<ResourceId[]>([]);\n const projectListTC = await createProjectList(pl, projects, openedProjects, env);\n\n return new MiddleLayer(\n env,\n driverKit,\n driverKit.signer,\n projects,\n openedProjects,\n projectListTC.tree,\n v2RegistryProvider,\n projectListTC.computable,\n );\n }\n}\n"],"names":["randomUUID","createProject","field","toGlobalResourceId","withProjectAuthored","isNullResourceId","Project","HmacSha256Signer","ops","DefaultMiddleLayerOpsSettings","DefaultMiddleLayerOpsPaths","getDebugFlags","ProjectsField","ProjectsResourceType","initDriverKit","RetryAgent","V2RegistryProvider","BlockPackPreparer","getQuickJS","RuntimeCapabilities","BlockEventDispatcher","BlockUpdateWatcher","ProjectHelper","WatchableValue","createProjectList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqDA;;;;;;;;;;;AAWK;MACQ,WAAW,CAAA;AAOH,IAAA,GAAA;AACD,IAAA,SAAA;AACA,IAAA,MAAA;AACC,IAAA,qBAAA;AACA,IAAA,kBAAA;AACA,IAAA,eAAA;AACD,IAAA,qBAAA;AAZF,IAAA,EAAE;;AAGF,IAAA,WAAW;AAE3B,IAAA,WAAA,CACmB,GAA2B,EAC5B,SAAoB,EACpB,MAAc,EACb,qBAAiC,EACjC,kBAAgD,EAChD,eAAsC,EACvC,qBAAyC,EACzD,WAAwD,EAAA;QAPvC,IAAA,CAAA,GAAG,GAAH,GAAG;QACJ,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;QACL,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,eAAe,GAAf,eAAe;QAChB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;AAGrC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;IACvB;AAEA;;;AAGG;AACH,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAqC;IACjE;;AAGO,IAAA,oBAAoB,CACzB,WAAiC,EACjC,KAAA,GAA0B,IAAI,EAAA;QAE9B,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC;IAC1E;;AAGA,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS;IAC3B;;;;;AAOO,IAAA,MAAM,aAAa,CAAC,IAAiB,EAAE,EAAA,GAAaA,sBAAU,EAAE,EAAA;AACrE,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAI;YACzE,MAAM,GAAG,GAAG,MAAMC,qBAAa,CAAC,EAAE,EAAE,IAAI,CAAC;AACzC,YAAA,EAAE,CAAC,WAAW,CAACC,cAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC;AACrE,YAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,MAAMC,2BAAkB,CAAC,GAAG,CAAC;AACtC,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACzC,QAAA,OAAO,QAAQ;IACjB;;AAGO,IAAA,MAAM,cAAc,CACzB,GAAe,EACf,IAAiB,EACjB,MAAqB,EAAA;AAErB,QAAA,MAAMC,2BAAmB,CACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EACtB,IAAI,CAAC,EAAE,EACP,GAAG,EACH,MAAM,EACN,CAAC,GAAG,KAAI;AACN,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,EACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAC3B;AACD,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC3C;AAEA;AAC4E;IACrE,MAAM,aAAa,CAAC,EAAU,EAAA;AACnC,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAI;AACxD,YAAA,EAAE,CAAC,WAAW,CAACF,cAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACrD,YAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC3C;;;;AAMiB,IAAA,mBAAmB,GAAG,IAAI,GAAG,EAAuB;IAE7D,MAAM,qBAAqB,CAAC,EAAU,EAAA;AAC5C,QAAA,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAI;YACxE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACA,cAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK;YAC5E,IAAIG,yBAAgB,CAAC,GAAG,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AAChF,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,gBAAgB,CAAC,EAAuB,EAAA;QACpD,IAAI,OAAO,EAAE,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;;AAClE,YAAA,OAAO,EAAE;IAChB;;IAGO,MAAM,WAAW,CAAC,EAAuB,EAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAA,eAAA,CAAiB,CAAC;AACvF,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAMC,iBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE;;IAGO,MAAM,YAAY,CAAC,GAAe,EAAA;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7C,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAA,gCAAA,CAAkC,CAAC;AACxF,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,QAAA,MAAM,GAAG,CAAC,OAAO,EAAE;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE;AAEA;AACkB;AACX,IAAA,gBAAgB,CAAC,GAAe,EAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7C,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAA,gCAAA,CAAkC,CAAC;AACxF,QAAA,OAAO,GAAG;IACZ;;AAGO,IAAA,eAAe,CAAC,GAAe,EAAA;QACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1C;AAEA;;;;AAIG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;;AAErF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;AACtC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;IACvB;;AAGO,IAAA,MAAM,wBAAwB,GAAA;AACnC,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE;IACpB;AAEA;AACkB;AACX,IAAA,OAAO,mBAAmB,GAAA;AAC/B,QAAA,OAAOC,0BAAgB,CAAC,cAAc,EAAE;IAC1C;;AAGA,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB;IACtC;;IAGO,aAAa,IAAI,CACtB,EAAY,EACZ,OAAe,EACf,IAA+B,EAAA;AAE/B,QAAA,MAAMC,KAAG,GAAmB;AAC1B,YAAA,GAAGC,iCAA6B;YAChC,GAAGC,8BAA0B,CAAC,OAAO,CAAC;AACtC,YAAA,GAAG,IAAI;SACR;;QAGDF,KAAG,CAAC,kBAAkB,CAAC,OAAO,GAAGG,mBAAa,EAAE,CAAC,YAAY;QAC7DH,KAAG,CAAC,QAAQ,CAAC,oBAAoB,GAAGG,mBAAa,EAAE,CAAC,oBAAoB;AAExE,QAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAI;YACrE,MAAM,aAAa,GAAGT,cAAK,CAAC,EAAE,CAAC,UAAU,EAAEU,0BAAa,CAAC;AACzD,YAAA,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC;YACxC,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC1D,YAAA,IAAIP,yBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;gBAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,eAAe,CAACQ,iCAAoB,CAAC;AACzD,gBAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEjB,gBAAA,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;AAEpC,gBAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AAEjB,gBAAA,OAAO,MAAM,QAAQ,CAAC,QAAQ;YAChC;iBAAO;gBACL,OAAO,iBAAiB,CAAC,KAAK;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,MAAM,GAAGL,KAAG,CAAC,MAAM;AAEzB,QAAA,MAAM,SAAS,GAAG,MAAMM,wBAAa,CAAC,EAAE,EAAE,OAAO,EAAEN,KAAG,CAAC,oBAAoB,EAAEA,KAAG,CAAC;;QAGjF,MAAM,mBAAmB,GAAG,IAAIO,iBAAU,CAAC,EAAE,CAAC,cAAc,CAAC;AAE7D,QAAA,MAAM,kBAAkB,GAAG,IAAIC,qCAAkB,CAAC,mBAAmB,CAAC;AAEtE,QAAA,MAAM,UAAU,GAAG,IAAIC,4BAAiB,CACtC,kBAAkB,EAClB,SAAS,CAAC,MAAM,EAChB,mBAAmB,CACpB;AAED,QAAA,MAAM,OAAO,GAAG,MAAMC,4BAAU,EAAE;AAElC,QAAA,MAAM,mBAAmB,GAAG,IAAIC,yBAAmB,EAAE;;AAErD,QAAA,mBAAmB,CAAC,uBAAuB,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACzE,QAAA,mBAAmB,CAAC,uBAAuB,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACzE,QAAA,mBAAmB,CAAC,uBAAuB,CAAC,wBAAwB,EAAE,IAAI,CAAC;;AAG3E,QAAA,MAAM,GAAG,GAA2B;YAClC,EAAE;YACF,oBAAoB,EAAE,IAAIC,8BAAoB,EAAE;YAChD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,MAAM;YACN,cAAc,EAAE,EAAE,CAAC,cAAc;YACjC,mBAAmB;iBACnBZ,KAAG;YACH,UAAU;YACV,sBAAsB,EAAE,SAAS,CAAC,cAAc;YAChD,SAAS;AACT,YAAA,kBAAkB,EAAE,IAAIa,0BAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE;gBACrE,QAAQ,EAAEb,KAAG,CAAC,6BAA6B;AAC3C,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,sBAAsB,EAAEA,KAAG,CAAC,sBAAsB;aACnD,CAAC;YACF,mBAAmB;YACnB,OAAO;AACP,YAAA,aAAa,EAAE,IAAIc,4BAAa,CAAC,OAAO,CAAC;YACzC,OAAO,EAAE,YAAW;AAClB,gBAAA,MAAM,mBAAmB,CAAC,OAAO,EAAE;AACnC,gBAAA,MAAM,SAAS,CAAC,OAAO,EAAE;YAC3B,CAAC;SACF;AAED,QAAA,MAAM,cAAc,GAAG,IAAIC,yBAAc,CAAe,EAAE,CAAC;AAC3D,QAAA,MAAM,aAAa,GAAG,MAAMC,8BAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC;QAEhF,OAAO,IAAI,WAAW,CACpB,GAAG,EACH,SAAS,EACT,SAAS,CAAC,MAAM,EAChB,QAAQ,EACR,cAAc,EACd,aAAa,CAAC,IAAI,EAClB,kBAAkB,EAClB,aAAa,CAAC,UAAU,CACzB;IACH;AACD;;;;"}
1
+ {"version":3,"file":"middle_layer.cjs","sources":["../../src/middle_layer/middle_layer.ts"],"sourcesContent":["import type { PlClient, ResourceId } from \"@milaboratories/pl-client\";\nimport { field, isNullResourceId, toGlobalResourceId } from \"@milaboratories/pl-client\";\nimport { createProjectList, ProjectsField, ProjectsResourceType } from \"./project_list\";\nimport { createProject, withProjectAuthored } from \"../mutator/project\";\nimport type { SynchronizedTreeState } from \"@milaboratories/pl-tree\";\nimport { BlockPackPreparer } from \"../mutator/block-pack/block_pack\";\nimport type { MiLogger, Signer } from \"@milaboratories/ts-helpers\";\nimport { BlockEventDispatcher } from \"@milaboratories/ts-helpers\";\nimport { HmacSha256Signer } from \"@milaboratories/ts-helpers\";\nimport type { ComputableStableDefined } from \"@milaboratories/computable\";\nimport { WatchableValue } from \"@milaboratories/computable\";\nimport { Project } from \"./project\";\nimport type { MiddleLayerOps, MiddleLayerOpsConstructor } from \"./ops\";\nimport { DefaultMiddleLayerOpsPaths, DefaultMiddleLayerOpsSettings } from \"./ops\";\nimport { randomUUID } from \"node:crypto\";\nimport type { ProjectListEntry } from \"../model\";\nimport type {\n AuthorMarker,\n ProjectMeta,\n BlockPlatform,\n} from \"@milaboratories/pl-model-middle-layer\";\nimport { BlockUpdateWatcher } from \"../block_registry/watcher\";\nimport type { QuickJSWASMModule } from \"quickjs-emscripten\";\nimport { getQuickJS } from \"quickjs-emscripten\";\nimport type { MiddleLayerDriverKit } from \"./driver_kit\";\nimport { initDriverKit } from \"./driver_kit\";\nimport type { BlockCodeFeatureFlags, DriverKit, SupportedRequirement } from \"@platforma-sdk/model\";\nimport { RuntimeCapabilities } from \"@platforma-sdk/model\";\nimport type { DownloadUrlDriver } from \"@milaboratories/pl-drivers\";\nimport { V2RegistryProvider } from \"../block_registry\";\nimport type { Dispatcher } from \"undici\";\nimport { RetryAgent } from \"undici\";\nimport { getDebugFlags } from \"../debug\";\nimport { ProjectHelper } from \"../model/project_helper\";\n\nexport interface MiddleLayerEnvironment {\n dispose(): Promise<void>;\n readonly pl: PlClient;\n readonly runtimeCapabilities: RuntimeCapabilities;\n readonly logger: MiLogger;\n readonly blockEventDispatcher: BlockEventDispatcher;\n readonly httpDispatcher: Dispatcher;\n readonly retryHttpDispatcher: Dispatcher;\n readonly signer: Signer;\n readonly ops: MiddleLayerOps;\n readonly bpPreparer: BlockPackPreparer;\n readonly frontendDownloadDriver: DownloadUrlDriver;\n readonly blockUpdateWatcher: BlockUpdateWatcher;\n readonly quickJs: QuickJSWASMModule;\n readonly driverKit: MiddleLayerDriverKit;\n readonly projectHelper: ProjectHelper;\n}\n\n/**\n * Main access object to work with pl from UI.\n *\n * It implements an abstraction layer of projects and blocks.\n *\n * As a main entry point inside the pl, this object uses a resource attached\n * via the {@link ProjectsField} to the pl client's root, this resource\n * contains project list.\n *\n * Read about alternative roots, if isolated project lists (working environments)\n * are required.\n * */\nexport class MiddleLayer {\n public readonly pl: PlClient;\n\n /** Contains a reactive list of projects along with their meta information. */\n public readonly projectList: ComputableStableDefined<ProjectListEntry[]>;\n\n private constructor(\n private readonly env: MiddleLayerEnvironment,\n public readonly driverKit: DriverKit,\n public readonly signer: Signer,\n private readonly projectListResourceId: ResourceId,\n private readonly openedProjectsList: WatchableValue<ResourceId[]>,\n private readonly projectListTree: SynchronizedTreeState,\n public readonly blockRegistryProvider: V2RegistryProvider,\n projectList: ComputableStableDefined<ProjectListEntry[]>,\n ) {\n this.projectList = projectList;\n this.pl = this.env.pl;\n }\n\n /**\n * Get the OS where backend is running.\n * For old backend versions returns undefined.\n */\n public get serverPlatform(): BlockPlatform | undefined {\n return this.pl.serverInfo.platform as BlockPlatform | undefined;\n }\n\n /** Adds a runtime capability to the middle layer. */\n public addRuntimeCapability(\n requirement: SupportedRequirement,\n value: number | boolean = true,\n ): void {\n this.env.runtimeCapabilities.addSupportedRequirement(requirement, value);\n }\n\n /** Checks if the given block feature flags are compatible with the runtime capabilities. */\n public checkBlockCompatibility(featureFlags: BlockCodeFeatureFlags | undefined): boolean {\n return this.env.runtimeCapabilities.checkCompatibility(featureFlags);\n }\n\n /** Returns extended API driver kit used internally by middle layer. */\n public get internalDriverKit(): MiddleLayerDriverKit {\n return this.env.driverKit;\n }\n\n //\n // Project List Manipulation\n //\n\n /** Creates a project with initial state and adds it to project list. */\n public async createProject(meta: ProjectMeta, id: string = randomUUID()): Promise<ResourceId> {\n const resource = await this.pl.withWriteTx(\"MLCreateProject\", async (tx) => {\n const prj = await createProject(tx, meta);\n tx.createField(field(this.projectListResourceId, id), \"Dynamic\", prj);\n await tx.commit();\n return await toGlobalResourceId(prj);\n });\n await this.projectListTree.refreshState();\n return resource;\n }\n\n /** Updates project metadata */\n public async setProjectMeta(\n rid: ResourceId,\n meta: ProjectMeta,\n author?: AuthorMarker,\n ): Promise<void> {\n await withProjectAuthored(\n this.env.projectHelper,\n this.pl,\n rid,\n author,\n (prj) => {\n prj.setMeta(meta);\n },\n { name: \"setProjectMeta\" },\n );\n await this.projectListTree.refreshState();\n }\n\n /** Permanently deletes project from the project list, this will result in\n * destruction of all attached objects, like files, analysis results etc. */\n public async deleteProject(id: string): Promise<void> {\n await this.pl.withWriteTx(\"MLRemoveProject\", async (tx) => {\n tx.removeField(field(this.projectListResourceId, id));\n await tx.commit();\n });\n await this.projectListTree.refreshState();\n }\n\n //\n // Projects\n //\n\n private readonly openedProjectsByRid = new Map<ResourceId, Project>();\n\n private async projectIdToResourceId(id: string): Promise<ResourceId> {\n return await this.pl.withReadTx(\"Project id to resource id\", async (tx) => {\n const rid = (await tx.getField(field(this.projectListResourceId, id))).value;\n if (isNullResourceId(rid)) throw new Error(\"Unexpected project list structure.\");\n return rid;\n });\n }\n\n private async ensureProjectRid(id: ResourceId | string): Promise<ResourceId> {\n if (typeof id === \"string\") return await this.projectIdToResourceId(id);\n else return id;\n }\n\n /** Opens a project, and starts corresponding project maintenance loop. */\n public async openProject(id: ResourceId | string) {\n const rid = await this.ensureProjectRid(id);\n if (this.openedProjectsByRid.has(rid)) throw new Error(`Project ${rid} already opened`);\n this.openedProjectsByRid.set(rid, await Project.init(this.env, rid));\n this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()]);\n }\n\n /** Closes the project, and deallocate all corresponding resources. */\n public async closeProject(rid: ResourceId): Promise<void> {\n const prj = this.openedProjectsByRid.get(rid);\n if (prj === undefined) throw new Error(`Project ${rid} not found among opened projects`);\n this.openedProjectsByRid.delete(rid);\n await prj.destroy();\n this.openedProjectsList.setValue([...this.openedProjectsByRid.keys()]);\n }\n\n /** Returns a project access object for opened project, for the given project\n * resource id. */\n public getOpenedProject(rid: ResourceId): Project {\n const prj = this.openedProjectsByRid.get(rid);\n if (prj === undefined) throw new Error(`Project ${rid} not found among opened projects`);\n return prj;\n }\n\n /** Returns true if project with given resource id is currently opened. */\n public isProjectOpened(rid: ResourceId): boolean {\n return this.openedProjectsByRid.has(rid);\n }\n\n /**\n * Deallocates all runtime resources consumed by this object and awaits\n * actual termination of event loops and other processes associated with\n * them.\n */\n public async close() {\n await Promise.all([...this.openedProjectsByRid.values()].map((prj) => prj.destroy()));\n // this.env.quickJs;\n await this.projectListTree.terminate();\n await this.env.dispose();\n await this.pl.close();\n }\n\n /** @deprecated */\n public async closeAndAwaitTermination() {\n await this.close();\n }\n\n /** Generates sufficiently random string to be used as local secret for the\n * middle layer */\n public static generateLocalSecret(): string {\n return HmacSha256Signer.generateSecret();\n }\n\n /** Returns a block event dispatcher, which can be used to listen to block events. */\n public get blockEventDispatcher(): BlockEventDispatcher {\n return this.env.blockEventDispatcher;\n }\n\n /** Initialize middle layer */\n public static async init(\n pl: PlClient,\n workdir: string,\n _ops: MiddleLayerOpsConstructor,\n ): Promise<MiddleLayer> {\n const ops: MiddleLayerOps = {\n ...DefaultMiddleLayerOpsSettings,\n ...DefaultMiddleLayerOpsPaths(workdir),\n ..._ops,\n };\n\n // overriding debug options from environment variables\n ops.defaultTreeOptions.logStat = getDebugFlags().logTreeStats;\n ops.debugOps.dumpInitialTreeState = getDebugFlags().dumpInitialTreeState;\n\n const projects = await pl.withWriteTx(\"MLInitialization\", async (tx) => {\n const projectsField = field(tx.clientRoot, ProjectsField);\n tx.createField(projectsField, \"Dynamic\");\n const projectsFieldData = await tx.getField(projectsField);\n if (isNullResourceId(projectsFieldData.value)) {\n const projects = tx.createEphemeral(ProjectsResourceType);\n tx.lock(projects);\n\n tx.setField(projectsField, projects);\n\n await tx.commit();\n\n return await projects.globalId;\n } else {\n return projectsFieldData.value;\n }\n });\n\n const logger = ops.logger;\n\n const driverKit = await initDriverKit(pl, workdir, ops.frontendDownloadPath, ops);\n\n // passed to components having no own retry logic\n const retryHttpDispatcher = new RetryAgent(pl.httpDispatcher);\n\n const v2RegistryProvider = new V2RegistryProvider(retryHttpDispatcher);\n\n const bpPreparer = new BlockPackPreparer(\n v2RegistryProvider,\n driverKit.signer,\n retryHttpDispatcher,\n );\n\n const quickJs = await getQuickJS();\n\n const runtimeCapabilities = new RuntimeCapabilities();\n // add runtime capabilities of model here\n runtimeCapabilities.addSupportedRequirement(\"requiresModelAPIVersion\", 1);\n runtimeCapabilities.addSupportedRequirement(\"requiresModelAPIVersion\", 2);\n runtimeCapabilities.addSupportedRequirement(\"requiresCreatePTable\", 2);\n // runtime capabilities of the desktop are to be added by the desktop app / test framework\n\n const env: MiddleLayerEnvironment = {\n pl,\n blockEventDispatcher: new BlockEventDispatcher(),\n signer: driverKit.signer,\n logger,\n httpDispatcher: pl.httpDispatcher,\n retryHttpDispatcher,\n ops,\n bpPreparer,\n frontendDownloadDriver: driverKit.frontendDriver,\n driverKit,\n blockUpdateWatcher: new BlockUpdateWatcher(v2RegistryProvider, logger, {\n minDelay: ops.devBlockUpdateRecheckInterval,\n http: retryHttpDispatcher,\n preferredUpdateChannel: ops.preferredUpdateChannel,\n }),\n runtimeCapabilities,\n quickJs,\n projectHelper: new ProjectHelper(quickJs),\n dispose: async () => {\n await retryHttpDispatcher.destroy();\n await driverKit.dispose();\n },\n };\n\n const openedProjects = new WatchableValue<ResourceId[]>([]);\n const projectListTC = await createProjectList(pl, projects, openedProjects, env);\n\n return new MiddleLayer(\n env,\n driverKit,\n driverKit.signer,\n projects,\n openedProjects,\n projectListTC.tree,\n v2RegistryProvider,\n projectListTC.computable,\n );\n }\n}\n"],"names":["randomUUID","createProject","field","toGlobalResourceId","withProjectAuthored","isNullResourceId","Project","HmacSha256Signer","ops","DefaultMiddleLayerOpsSettings","DefaultMiddleLayerOpsPaths","getDebugFlags","ProjectsField","ProjectsResourceType","initDriverKit","RetryAgent","V2RegistryProvider","BlockPackPreparer","getQuickJS","RuntimeCapabilities","BlockEventDispatcher","BlockUpdateWatcher","ProjectHelper","WatchableValue","createProjectList"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqDA;;;;;;;;;;;AAWK;MACQ,WAAW,CAAA;AAOH,IAAA,GAAA;AACD,IAAA,SAAA;AACA,IAAA,MAAA;AACC,IAAA,qBAAA;AACA,IAAA,kBAAA;AACA,IAAA,eAAA;AACD,IAAA,qBAAA;AAZF,IAAA,EAAE;;AAGF,IAAA,WAAW;AAE3B,IAAA,WAAA,CACmB,GAA2B,EAC5B,SAAoB,EACpB,MAAc,EACb,qBAAiC,EACjC,kBAAgD,EAChD,eAAsC,EACvC,qBAAyC,EACzD,WAAwD,EAAA;QAPvC,IAAA,CAAA,GAAG,GAAH,GAAG;QACJ,IAAA,CAAA,SAAS,GAAT,SAAS;QACT,IAAA,CAAA,MAAM,GAAN,MAAM;QACL,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,eAAe,GAAf,eAAe;QAChB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;AAGrC,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE;IACvB;AAEA;;;AAGG;AACH,IAAA,IAAW,cAAc,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAqC;IACjE;;AAGO,IAAA,oBAAoB,CACzB,WAAiC,EACjC,KAAA,GAA0B,IAAI,EAAA;QAE9B,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC;IAC1E;;AAGO,IAAA,uBAAuB,CAAC,YAA+C,EAAA;QAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,YAAY,CAAC;IACtE;;AAGA,IAAA,IAAW,iBAAiB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS;IAC3B;;;;;AAOO,IAAA,MAAM,aAAa,CAAC,IAAiB,EAAE,EAAA,GAAaA,sBAAU,EAAE,EAAA;AACrE,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAI;YACzE,MAAM,GAAG,GAAG,MAAMC,qBAAa,CAAC,EAAE,EAAE,IAAI,CAAC;AACzC,YAAA,EAAE,CAAC,WAAW,CAACC,cAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC;AACrE,YAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AACjB,YAAA,OAAO,MAAMC,2BAAkB,CAAC,GAAG,CAAC;AACtC,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;AACzC,QAAA,OAAO,QAAQ;IACjB;;AAGO,IAAA,MAAM,cAAc,CACzB,GAAe,EACf,IAAiB,EACjB,MAAqB,EAAA;AAErB,QAAA,MAAMC,2BAAmB,CACvB,IAAI,CAAC,GAAG,CAAC,aAAa,EACtB,IAAI,CAAC,EAAE,EACP,GAAG,EACH,MAAM,EACN,CAAC,GAAG,KAAI;AACN,YAAA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,EACD,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAC3B;AACD,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC3C;AAEA;AAC4E;IACrE,MAAM,aAAa,CAAC,EAAU,EAAA;AACnC,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,iBAAiB,EAAE,OAAO,EAAE,KAAI;AACxD,YAAA,EAAE,CAAC,WAAW,CAACF,cAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;AACrD,YAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE;IAC3C;;;;AAMiB,IAAA,mBAAmB,GAAG,IAAI,GAAG,EAAuB;IAE7D,MAAM,qBAAqB,CAAC,EAAU,EAAA;AAC5C,QAAA,OAAO,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,2BAA2B,EAAE,OAAO,EAAE,KAAI;YACxE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAACA,cAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK;YAC5E,IAAIG,yBAAgB,CAAC,GAAG,CAAC;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AAChF,YAAA,OAAO,GAAG;AACZ,QAAA,CAAC,CAAC;IACJ;IAEQ,MAAM,gBAAgB,CAAC,EAAuB,EAAA;QACpD,IAAI,OAAO,EAAE,KAAK,QAAQ;AAAE,YAAA,OAAO,MAAM,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC;;AAClE,YAAA,OAAO,EAAE;IAChB;;IAGO,MAAM,WAAW,CAAC,EAAuB,EAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAC3C,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAA,eAAA,CAAiB,CAAC;AACvF,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAMC,iBAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE;;IAGO,MAAM,YAAY,CAAC,GAAe,EAAA;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7C,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAA,gCAAA,CAAkC,CAAC;AACxF,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC;AACpC,QAAA,MAAM,GAAG,CAAC,OAAO,EAAE;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IACxE;AAEA;AACkB;AACX,IAAA,gBAAgB,CAAC,GAAe,EAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7C,IAAI,GAAG,KAAK,SAAS;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAA,gCAAA,CAAkC,CAAC;AACxF,QAAA,OAAO,GAAG;IACZ;;AAGO,IAAA,eAAe,CAAC,GAAe,EAAA;QACpC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;IAC1C;AAEA;;;;AAIG;AACI,IAAA,MAAM,KAAK,GAAA;QAChB,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;;AAErF,QAAA,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;AACtC,QAAA,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;AACxB,QAAA,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;IACvB;;AAGO,IAAA,MAAM,wBAAwB,GAAA;AACnC,QAAA,MAAM,IAAI,CAAC,KAAK,EAAE;IACpB;AAEA;AACkB;AACX,IAAA,OAAO,mBAAmB,GAAA;AAC/B,QAAA,OAAOC,0BAAgB,CAAC,cAAc,EAAE;IAC1C;;AAGA,IAAA,IAAW,oBAAoB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,oBAAoB;IACtC;;IAGO,aAAa,IAAI,CACtB,EAAY,EACZ,OAAe,EACf,IAA+B,EAAA;AAE/B,QAAA,MAAMC,KAAG,GAAmB;AAC1B,YAAA,GAAGC,iCAA6B;YAChC,GAAGC,8BAA0B,CAAC,OAAO,CAAC;AACtC,YAAA,GAAG,IAAI;SACR;;QAGDF,KAAG,CAAC,kBAAkB,CAAC,OAAO,GAAGG,mBAAa,EAAE,CAAC,YAAY;QAC7DH,KAAG,CAAC,QAAQ,CAAC,oBAAoB,GAAGG,mBAAa,EAAE,CAAC,oBAAoB;AAExE,QAAA,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAI;YACrE,MAAM,aAAa,GAAGT,cAAK,CAAC,EAAE,CAAC,UAAU,EAAEU,0BAAa,CAAC;AACzD,YAAA,EAAE,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC;YACxC,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC1D,YAAA,IAAIP,yBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;gBAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,eAAe,CAACQ,iCAAoB,CAAC;AACzD,gBAAA,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEjB,gBAAA,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC;AAEpC,gBAAA,MAAM,EAAE,CAAC,MAAM,EAAE;AAEjB,gBAAA,OAAO,MAAM,QAAQ,CAAC,QAAQ;YAChC;iBAAO;gBACL,OAAO,iBAAiB,CAAC,KAAK;YAChC;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,MAAM,GAAGL,KAAG,CAAC,MAAM;AAEzB,QAAA,MAAM,SAAS,GAAG,MAAMM,wBAAa,CAAC,EAAE,EAAE,OAAO,EAAEN,KAAG,CAAC,oBAAoB,EAAEA,KAAG,CAAC;;QAGjF,MAAM,mBAAmB,GAAG,IAAIO,iBAAU,CAAC,EAAE,CAAC,cAAc,CAAC;AAE7D,QAAA,MAAM,kBAAkB,GAAG,IAAIC,qCAAkB,CAAC,mBAAmB,CAAC;AAEtE,QAAA,MAAM,UAAU,GAAG,IAAIC,4BAAiB,CACtC,kBAAkB,EAClB,SAAS,CAAC,MAAM,EAChB,mBAAmB,CACpB;AAED,QAAA,MAAM,OAAO,GAAG,MAAMC,4BAAU,EAAE;AAElC,QAAA,MAAM,mBAAmB,GAAG,IAAIC,yBAAmB,EAAE;;AAErD,QAAA,mBAAmB,CAAC,uBAAuB,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACzE,QAAA,mBAAmB,CAAC,uBAAuB,CAAC,yBAAyB,EAAE,CAAC,CAAC;AACzE,QAAA,mBAAmB,CAAC,uBAAuB,CAAC,sBAAsB,EAAE,CAAC,CAAC;;AAGtE,QAAA,MAAM,GAAG,GAA2B;YAClC,EAAE;YACF,oBAAoB,EAAE,IAAIC,8BAAoB,EAAE;YAChD,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,MAAM;YACN,cAAc,EAAE,EAAE,CAAC,cAAc;YACjC,mBAAmB;iBACnBZ,KAAG;YACH,UAAU;YACV,sBAAsB,EAAE,SAAS,CAAC,cAAc;YAChD,SAAS;AACT,YAAA,kBAAkB,EAAE,IAAIa,0BAAkB,CAAC,kBAAkB,EAAE,MAAM,EAAE;gBACrE,QAAQ,EAAEb,KAAG,CAAC,6BAA6B;AAC3C,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,sBAAsB,EAAEA,KAAG,CAAC,sBAAsB;aACnD,CAAC;YACF,mBAAmB;YACnB,OAAO;AACP,YAAA,aAAa,EAAE,IAAIc,4BAAa,CAAC,OAAO,CAAC;YACzC,OAAO,EAAE,YAAW;AAClB,gBAAA,MAAM,mBAAmB,CAAC,OAAO,EAAE;AACnC,gBAAA,MAAM,SAAS,CAAC,OAAO,EAAE;YAC3B,CAAC;SACF;AAED,QAAA,MAAM,cAAc,GAAG,IAAIC,yBAAc,CAAe,EAAE,CAAC;AAC3D,QAAA,MAAM,aAAa,GAAG,MAAMC,8BAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC;QAEhF,OAAO,IAAI,WAAW,CACpB,GAAG,EACH,SAAS,EACT,SAAS,CAAC,MAAM,EAChB,QAAQ,EACR,cAAc,EACd,aAAa,CAAC,IAAI,EAClB,kBAAkB,EAClB,aAAa,CAAC,UAAU,CACzB;IACH;AACD;;;;"}
@@ -10,7 +10,7 @@ import type { AuthorMarker, ProjectMeta, BlockPlatform } from "@milaboratories/p
10
10
  import { BlockUpdateWatcher } from "../block_registry/watcher";
11
11
  import type { QuickJSWASMModule } from "quickjs-emscripten";
12
12
  import type { MiddleLayerDriverKit } from "./driver_kit";
13
- import type { DriverKit, SupportedRequirement } from "@platforma-sdk/model";
13
+ import type { BlockCodeFeatureFlags, DriverKit, SupportedRequirement } from "@platforma-sdk/model";
14
14
  import { RuntimeCapabilities } from "@platforma-sdk/model";
15
15
  import type { DownloadUrlDriver } from "@milaboratories/pl-drivers";
16
16
  import { V2RegistryProvider } from "../block_registry";
@@ -64,6 +64,8 @@ export declare class MiddleLayer {
64
64
  get serverPlatform(): BlockPlatform | undefined;
65
65
  /** Adds a runtime capability to the middle layer. */
66
66
  addRuntimeCapability(requirement: SupportedRequirement, value?: number | boolean): void;
67
+ /** Checks if the given block feature flags are compatible with the runtime capabilities. */
68
+ checkBlockCompatibility(featureFlags: BlockCodeFeatureFlags | undefined): boolean;
67
69
  /** Returns extended API driver kit used internally by middle layer. */
68
70
  get internalDriverKit(): MiddleLayerDriverKit;
69
71
  /** Creates a project with initial state and adds it to project list. */
@@ -1 +1 @@
1
- {"version":3,"file":"middle_layer.d.ts","sourceRoot":"","sources":["../../src/middle_layer/middle_layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middle_layer.d.ts","sourceRoot":"","sources":["../../src/middle_layer/middle_layer.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,10 @@ class MiddleLayer {
65
65
  addRuntimeCapability(requirement, value = true) {
66
66
  this.env.runtimeCapabilities.addSupportedRequirement(requirement, value);
67
67
  }
68
+ /** Checks if the given block feature flags are compatible with the runtime capabilities. */
69
+ checkBlockCompatibility(featureFlags) {
70
+ return this.env.runtimeCapabilities.checkCompatibility(featureFlags);
71
+ }
68
72
  /** Returns extended API driver kit used internally by middle layer. */
69
73
  get internalDriverKit() {
70
74
  return this.env.driverKit;
@@ -207,7 +211,7 @@ class MiddleLayer {
207
211
  // add runtime capabilities of model here
208
212
  runtimeCapabilities.addSupportedRequirement("requiresModelAPIVersion", 1);
209
213
  runtimeCapabilities.addSupportedRequirement("requiresModelAPIVersion", 2);
210
- runtimeCapabilities.addSupportedRequirement("requiresCreatePTableV2", true);
214
+ runtimeCapabilities.addSupportedRequirement("requiresCreatePTable", 2);
211
215
  // runtime capabilities of the desktop are to be added by the desktop app / test framework
212
216
  const env = {
213
217
  pl,