@milaboratories/pl-middle-layer 1.42.1 → 1.42.3

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 (410) hide show
  1. package/dist/block_registry/index.d.ts +0 -1
  2. package/dist/block_registry/registry-v2-provider.cjs +22 -0
  3. package/dist/block_registry/registry-v2-provider.cjs.map +1 -0
  4. package/dist/block_registry/registry-v2-provider.d.ts +0 -1
  5. package/dist/block_registry/registry-v2-provider.js +20 -0
  6. package/dist/block_registry/registry-v2-provider.js.map +1 -0
  7. package/dist/block_registry/registry.cjs +231 -0
  8. package/dist/block_registry/registry.cjs.map +1 -0
  9. package/dist/block_registry/registry.d.ts +0 -1
  10. package/dist/block_registry/registry.js +227 -0
  11. package/dist/block_registry/registry.js.map +1 -0
  12. package/dist/block_registry/registry.test.d.ts +0 -1
  13. package/dist/block_registry/watcher.cjs +174 -0
  14. package/dist/block_registry/watcher.cjs.map +1 -0
  15. package/dist/block_registry/watcher.d.ts +0 -1
  16. package/dist/block_registry/watcher.js +171 -0
  17. package/dist/block_registry/watcher.js.map +1 -0
  18. package/dist/block_registry/well_known_registries.cjs +19 -0
  19. package/dist/block_registry/well_known_registries.cjs.map +1 -0
  20. package/dist/block_registry/well_known_registries.d.ts +0 -1
  21. package/dist/block_registry/well_known_registries.js +15 -0
  22. package/dist/block_registry/well_known_registries.js.map +1 -0
  23. package/dist/cfg_render/executor.cjs +159 -0
  24. package/dist/cfg_render/executor.cjs.map +1 -0
  25. package/dist/cfg_render/executor.d.ts +0 -1
  26. package/dist/cfg_render/executor.js +156 -0
  27. package/dist/cfg_render/executor.js.map +1 -0
  28. package/dist/cfg_render/executor.test.d.ts +0 -1
  29. package/dist/cfg_render/operation.d.ts +0 -1
  30. package/dist/cfg_render/renderer.cjs +528 -0
  31. package/dist/cfg_render/renderer.cjs.map +1 -0
  32. package/dist/cfg_render/renderer.d.ts +0 -1
  33. package/dist/cfg_render/renderer.js +525 -0
  34. package/dist/cfg_render/renderer.js.map +1 -0
  35. package/dist/cfg_render/traverse.cjs +65 -0
  36. package/dist/cfg_render/traverse.cjs.map +1 -0
  37. package/dist/cfg_render/traverse.d.ts +0 -1
  38. package/dist/cfg_render/traverse.js +63 -0
  39. package/dist/cfg_render/traverse.js.map +1 -0
  40. package/dist/cfg_render/util.cjs +32 -0
  41. package/dist/cfg_render/util.cjs.map +1 -0
  42. package/dist/cfg_render/util.d.ts +0 -1
  43. package/dist/cfg_render/util.js +28 -0
  44. package/dist/cfg_render/util.js.map +1 -0
  45. package/dist/debug/index.cjs +21 -0
  46. package/dist/debug/index.cjs.map +1 -0
  47. package/dist/debug/index.d.ts +0 -1
  48. package/dist/debug/index.js +19 -0
  49. package/dist/debug/index.js.map +1 -0
  50. package/dist/dev_env/index.cjs +59 -0
  51. package/dist/dev_env/index.cjs.map +1 -0
  52. package/dist/dev_env/index.d.ts +0 -1
  53. package/dist/dev_env/index.js +48 -0
  54. package/dist/dev_env/index.js.map +1 -0
  55. package/dist/dev_env/util.cjs +37 -0
  56. package/dist/dev_env/util.cjs.map +1 -0
  57. package/dist/dev_env/util.d.ts +0 -1
  58. package/dist/dev_env/util.js +16 -0
  59. package/dist/dev_env/util.js.map +1 -0
  60. package/dist/index.cjs +74 -0
  61. package/dist/index.cjs.map +1 -0
  62. package/dist/index.d.ts +0 -1
  63. package/dist/index.js +15 -75
  64. package/dist/index.js.map +1 -1
  65. package/dist/js_render/computable_context.cjs +525 -0
  66. package/dist/js_render/computable_context.cjs.map +1 -0
  67. package/dist/js_render/computable_context.d.ts +0 -1
  68. package/dist/js_render/computable_context.js +523 -0
  69. package/dist/js_render/computable_context.js.map +1 -0
  70. package/dist/js_render/context.cjs +229 -0
  71. package/dist/js_render/context.cjs.map +1 -0
  72. package/dist/js_render/context.d.ts +0 -1
  73. package/dist/js_render/context.js +226 -0
  74. package/dist/js_render/context.js.map +1 -0
  75. package/dist/js_render/index.cjs +163 -0
  76. package/dist/js_render/index.cjs.map +1 -0
  77. package/dist/js_render/index.d.ts +0 -1
  78. package/dist/js_render/index.js +160 -0
  79. package/dist/js_render/index.js.map +1 -0
  80. package/dist/middle_layer/active_cfg.cjs +37 -0
  81. package/dist/middle_layer/active_cfg.cjs.map +1 -0
  82. package/dist/middle_layer/active_cfg.d.ts +0 -1
  83. package/dist/middle_layer/active_cfg.js +35 -0
  84. package/dist/middle_layer/active_cfg.js.map +1 -0
  85. package/dist/middle_layer/block.cjs +51 -0
  86. package/dist/middle_layer/block.cjs.map +1 -0
  87. package/dist/middle_layer/block.d.ts +0 -1
  88. package/dist/middle_layer/block.js +48 -0
  89. package/dist/middle_layer/block.js.map +1 -0
  90. package/dist/middle_layer/block_ctx.cjs +87 -0
  91. package/dist/middle_layer/block_ctx.cjs.map +1 -0
  92. package/dist/middle_layer/block_ctx.d.ts +0 -1
  93. package/dist/middle_layer/block_ctx.js +84 -0
  94. package/dist/middle_layer/block_ctx.js.map +1 -0
  95. package/dist/middle_layer/block_ctx_unsafe.cjs +19 -0
  96. package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -0
  97. package/dist/middle_layer/block_ctx_unsafe.d.ts +0 -1
  98. package/dist/middle_layer/block_ctx_unsafe.js +16 -0
  99. package/dist/middle_layer/block_ctx_unsafe.js.map +1 -0
  100. package/dist/middle_layer/driver_kit.cjs +42 -0
  101. package/dist/middle_layer/driver_kit.cjs.map +1 -0
  102. package/dist/middle_layer/driver_kit.d.ts +0 -1
  103. package/dist/middle_layer/driver_kit.js +40 -0
  104. package/dist/middle_layer/driver_kit.js.map +1 -0
  105. package/dist/middle_layer/frontend_path.cjs +64 -0
  106. package/dist/middle_layer/frontend_path.cjs.map +1 -0
  107. package/dist/middle_layer/frontend_path.d.ts +0 -1
  108. package/dist/middle_layer/frontend_path.js +62 -0
  109. package/dist/middle_layer/frontend_path.js.map +1 -0
  110. package/dist/middle_layer/index.d.ts +0 -1
  111. package/dist/middle_layer/middle_layer.cjs +226 -0
  112. package/dist/middle_layer/middle_layer.cjs.map +1 -0
  113. package/dist/middle_layer/middle_layer.d.ts +0 -1
  114. package/dist/middle_layer/middle_layer.js +224 -0
  115. package/dist/middle_layer/middle_layer.js.map +1 -0
  116. package/dist/middle_layer/navigation_states.cjs +41 -0
  117. package/dist/middle_layer/navigation_states.cjs.map +1 -0
  118. package/dist/middle_layer/navigation_states.d.ts +0 -1
  119. package/dist/middle_layer/navigation_states.js +39 -0
  120. package/dist/middle_layer/navigation_states.js.map +1 -0
  121. package/dist/middle_layer/ops.cjs +75 -0
  122. package/dist/middle_layer/ops.cjs.map +1 -0
  123. package/dist/middle_layer/ops.d.ts +0 -1
  124. package/dist/middle_layer/ops.js +70 -0
  125. package/dist/middle_layer/ops.js.map +1 -0
  126. package/dist/middle_layer/project.cjs +446 -0
  127. package/dist/middle_layer/project.cjs.map +1 -0
  128. package/dist/middle_layer/project.d.ts +0 -1
  129. package/dist/middle_layer/project.js +444 -0
  130. package/dist/middle_layer/project.js.map +1 -0
  131. package/dist/middle_layer/project_list.cjs +53 -0
  132. package/dist/middle_layer/project_list.cjs.map +1 -0
  133. package/dist/middle_layer/project_list.d.ts +0 -1
  134. package/dist/middle_layer/project_list.js +48 -0
  135. package/dist/middle_layer/project_list.js.map +1 -0
  136. package/dist/middle_layer/project_overview.cjs +225 -0
  137. package/dist/middle_layer/project_overview.cjs.map +1 -0
  138. package/dist/middle_layer/project_overview.d.ts +0 -1
  139. package/dist/middle_layer/project_overview.js +204 -0
  140. package/dist/middle_layer/project_overview.js.map +1 -0
  141. package/dist/middle_layer/project_overview_light.cjs +20 -0
  142. package/dist/middle_layer/project_overview_light.cjs.map +1 -0
  143. package/dist/middle_layer/project_overview_light.d.ts +0 -1
  144. package/dist/middle_layer/project_overview_light.js +18 -0
  145. package/dist/middle_layer/project_overview_light.js.map +1 -0
  146. package/dist/middle_layer/render.cjs +26 -0
  147. package/dist/middle_layer/render.cjs.map +1 -0
  148. package/dist/middle_layer/render.d.ts +0 -1
  149. package/dist/middle_layer/render.js +23 -0
  150. package/dist/middle_layer/render.js.map +1 -0
  151. package/dist/middle_layer/render.test.d.ts +0 -1
  152. package/dist/middle_layer/types.d.ts +0 -1
  153. package/dist/middle_layer/util.cjs +22 -0
  154. package/dist/middle_layer/util.cjs.map +1 -0
  155. package/dist/middle_layer/util.d.ts +0 -1
  156. package/dist/middle_layer/util.js +20 -0
  157. package/dist/middle_layer/util.js.map +1 -0
  158. package/dist/model/args.cjs +62 -0
  159. package/dist/model/args.cjs.map +1 -0
  160. package/dist/model/args.d.ts +0 -1
  161. package/dist/model/args.js +58 -0
  162. package/dist/model/args.js.map +1 -0
  163. package/dist/model/block_pack.d.ts +0 -1
  164. package/dist/model/block_pack_spec.cjs +11 -0
  165. package/dist/model/block_pack_spec.cjs.map +1 -0
  166. package/dist/model/block_pack_spec.d.ts +0 -1
  167. package/dist/model/block_pack_spec.js +8 -0
  168. package/dist/model/block_pack_spec.js.map +1 -0
  169. package/dist/model/frontend.d.ts +0 -1
  170. package/dist/model/index.d.ts +0 -1
  171. package/dist/model/project_helper.cjs +36 -0
  172. package/dist/model/project_helper.cjs.map +1 -0
  173. package/dist/model/project_helper.d.ts +0 -1
  174. package/dist/model/project_helper.js +34 -0
  175. package/dist/model/project_helper.js.map +1 -0
  176. package/dist/model/project_model.cjs +74 -0
  177. package/dist/model/project_model.cjs.map +1 -0
  178. package/dist/model/project_model.d.ts +0 -1
  179. package/dist/model/project_model.js +54 -0
  180. package/dist/model/project_model.js.map +1 -0
  181. package/dist/model/project_model.test.d.ts +0 -1
  182. package/dist/model/project_model_util.cjs +176 -0
  183. package/dist/model/project_model_util.cjs.map +1 -0
  184. package/dist/model/project_model_util.d.ts +0 -1
  185. package/dist/model/project_model_util.js +170 -0
  186. package/dist/model/project_model_util.js.map +1 -0
  187. package/dist/model/project_model_util.test.d.ts +0 -1
  188. package/dist/model/project_model_v1.cjs +9 -0
  189. package/dist/model/project_model_v1.cjs.map +1 -0
  190. package/dist/model/project_model_v1.d.ts +0 -1
  191. package/dist/model/project_model_v1.js +6 -0
  192. package/dist/model/project_model_v1.js.map +1 -0
  193. package/dist/model/template_spec.d.ts +0 -1
  194. package/dist/mutator/block-pack/block_pack.cjs +233 -0
  195. package/dist/mutator/block-pack/block_pack.cjs.map +1 -0
  196. package/dist/mutator/block-pack/block_pack.d.ts +0 -1
  197. package/dist/mutator/block-pack/block_pack.js +227 -0
  198. package/dist/mutator/block-pack/block_pack.js.map +1 -0
  199. package/dist/mutator/block-pack/block_pack.test.d.ts +0 -1
  200. package/dist/mutator/block-pack/frontend.cjs +21 -0
  201. package/dist/mutator/block-pack/frontend.cjs.map +1 -0
  202. package/dist/mutator/block-pack/frontend.d.ts +0 -1
  203. package/dist/mutator/block-pack/frontend.js +19 -0
  204. package/dist/mutator/block-pack/frontend.js.map +1 -0
  205. package/dist/mutator/context_export.cjs +26 -0
  206. package/dist/mutator/context_export.cjs.map +1 -0
  207. package/dist/mutator/context_export.d.ts +2 -3
  208. package/dist/mutator/context_export.js +23 -0
  209. package/dist/mutator/context_export.js.map +1 -0
  210. package/dist/mutator/migration.cjs +57 -0
  211. package/dist/mutator/migration.cjs.map +1 -0
  212. package/dist/mutator/migration.d.ts +0 -1
  213. package/dist/mutator/migration.js +55 -0
  214. package/dist/mutator/migration.js.map +1 -0
  215. package/dist/mutator/project.cjs +997 -0
  216. package/dist/mutator/project.cjs.map +1 -0
  217. package/dist/mutator/project.d.ts +0 -1
  218. package/dist/mutator/project.js +992 -0
  219. package/dist/mutator/project.js.map +1 -0
  220. package/dist/mutator/project.test.d.ts +0 -1
  221. package/dist/mutator/template/direct_template_loader.cjs +146 -0
  222. package/dist/mutator/template/direct_template_loader.cjs.map +1 -0
  223. package/dist/mutator/template/direct_template_loader.d.ts +0 -1
  224. package/dist/mutator/template/direct_template_loader.js +143 -0
  225. package/dist/mutator/template/direct_template_loader.js.map +1 -0
  226. package/dist/mutator/template/direct_template_loader_v3.cjs +139 -0
  227. package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -0
  228. package/dist/mutator/template/direct_template_loader_v3.d.ts +0 -1
  229. package/dist/mutator/template/direct_template_loader_v3.js +137 -0
  230. package/dist/mutator/template/direct_template_loader_v3.js.map +1 -0
  231. package/dist/mutator/template/render_block.cjs +43 -0
  232. package/dist/mutator/template/render_block.cjs.map +1 -0
  233. package/dist/mutator/template/render_block.d.ts +0 -1
  234. package/dist/mutator/template/render_block.js +34 -0
  235. package/dist/mutator/template/render_block.js.map +1 -0
  236. package/dist/mutator/template/render_template.cjs +35 -0
  237. package/dist/mutator/template/render_template.cjs.map +1 -0
  238. package/dist/mutator/template/render_template.d.ts +0 -1
  239. package/dist/mutator/template/render_template.js +33 -0
  240. package/dist/mutator/template/render_template.js.map +1 -0
  241. package/dist/mutator/template/template_loading.cjs +71 -0
  242. package/dist/mutator/template/template_loading.cjs.map +1 -0
  243. package/dist/mutator/template/template_loading.d.ts +0 -1
  244. package/dist/mutator/template/template_loading.js +60 -0
  245. package/dist/mutator/template/template_loading.js.map +1 -0
  246. package/dist/mutator/template/template_render.test.d.ts +0 -1
  247. package/dist/network_check/network_check.cjs +267 -0
  248. package/dist/network_check/network_check.cjs.map +1 -0
  249. package/dist/network_check/network_check.d.ts +0 -1
  250. package/dist/network_check/network_check.js +264 -0
  251. package/dist/network_check/network_check.js.map +1 -0
  252. package/dist/network_check/network_check.test.d.ts +0 -1
  253. package/dist/network_check/pings.cjs +107 -0
  254. package/dist/network_check/pings.cjs.map +1 -0
  255. package/dist/network_check/pings.d.ts +0 -1
  256. package/dist/network_check/pings.js +96 -0
  257. package/dist/network_check/pings.js.map +1 -0
  258. package/dist/network_check/template.cjs +318 -0
  259. package/dist/network_check/template.cjs.map +1 -0
  260. package/dist/network_check/template.d.ts +0 -1
  261. package/dist/network_check/template.js +302 -0
  262. package/dist/network_check/template.js.map +1 -0
  263. package/dist/network_check/template.test.d.ts +0 -1
  264. package/dist/network_check/test_utils.d.ts +0 -1
  265. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.cjs +77 -0
  266. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.cjs.map +1 -0
  267. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.js +74 -0
  268. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.js.map +1 -0
  269. package/dist/pool/data.cjs +298 -0
  270. package/dist/pool/data.cjs.map +1 -0
  271. package/dist/pool/data.d.ts +7 -9
  272. package/dist/pool/data.js +282 -0
  273. package/dist/pool/data.js.map +1 -0
  274. package/dist/pool/driver.cjs +620 -0
  275. package/dist/pool/driver.cjs.map +1 -0
  276. package/dist/pool/driver.d.ts +0 -1
  277. package/dist/pool/driver.js +598 -0
  278. package/dist/pool/driver.js.map +1 -0
  279. package/dist/pool/index.d.ts +0 -1
  280. package/dist/pool/p_object_collection.cjs +87 -0
  281. package/dist/pool/p_object_collection.cjs.map +1 -0
  282. package/dist/pool/p_object_collection.d.ts +0 -1
  283. package/dist/pool/p_object_collection.js +84 -0
  284. package/dist/pool/p_object_collection.js.map +1 -0
  285. package/dist/pool/ref_count_pool.cjs +58 -0
  286. package/dist/pool/ref_count_pool.cjs.map +1 -0
  287. package/dist/pool/ref_count_pool.d.ts +0 -1
  288. package/dist/pool/ref_count_pool.js +56 -0
  289. package/dist/pool/ref_count_pool.js.map +1 -0
  290. package/dist/pool/result_pool.cjs +265 -0
  291. package/dist/pool/result_pool.cjs.map +1 -0
  292. package/dist/pool/result_pool.d.ts +0 -1
  293. package/dist/pool/result_pool.js +263 -0
  294. package/dist/pool/result_pool.js.map +1 -0
  295. package/dist/test/block_packs.d.ts +0 -1
  296. package/dist/test/explicit_templates.d.ts +0 -1
  297. package/dist/test/known_templates.d.ts +0 -1
  298. package/dist/test_env.d.ts +0 -1
  299. package/dist/worker/WorkerManager.cjs +53 -0
  300. package/dist/worker/WorkerManager.cjs.map +1 -0
  301. package/dist/worker/WorkerManager.d.ts +0 -1
  302. package/dist/worker/WorkerManager.js +51 -0
  303. package/dist/worker/WorkerManager.js.map +1 -0
  304. package/dist/worker/worker.cjs +16 -0
  305. package/dist/worker/worker.cjs.map +1 -0
  306. package/dist/worker/worker.d.ts +0 -1
  307. package/dist/worker/worker.js +14 -0
  308. package/dist/worker/worker.js.map +1 -0
  309. package/dist/worker/workerApi.cjs +20 -0
  310. package/dist/worker/workerApi.cjs.map +1 -0
  311. package/dist/worker/workerApi.d.ts +1 -3
  312. package/dist/worker/workerApi.js +18 -0
  313. package/dist/worker/workerApi.js.map +1 -0
  314. package/package.json +26 -34
  315. package/src/cfg_render/executor.test.ts +5 -4
  316. package/src/model/project_model.test.ts +3 -3
  317. package/src/model/project_model_util.test.ts +3 -2
  318. package/src/mutator/block-pack/block_pack.test.ts +5 -4
  319. package/src/mutator/project.test.ts +4 -4
  320. package/src/mutator/template/template_render.test.ts +7 -6
  321. package/src/network_check/network_check.test.ts +1 -0
  322. package/src/network_check/test_utils.ts +2 -0
  323. package/src/worker/WorkerManager.ts +6 -8
  324. package/dist/block_registry/index.d.ts.map +0 -1
  325. package/dist/block_registry/registry-v2-provider.d.ts.map +0 -1
  326. package/dist/block_registry/registry.d.ts.map +0 -1
  327. package/dist/block_registry/registry.test.d.ts.map +0 -1
  328. package/dist/block_registry/watcher.d.ts.map +0 -1
  329. package/dist/block_registry/well_known_registries.d.ts.map +0 -1
  330. package/dist/cfg_render/executor.d.ts.map +0 -1
  331. package/dist/cfg_render/executor.test.d.ts.map +0 -1
  332. package/dist/cfg_render/operation.d.ts.map +0 -1
  333. package/dist/cfg_render/renderer.d.ts.map +0 -1
  334. package/dist/cfg_render/traverse.d.ts.map +0 -1
  335. package/dist/cfg_render/util.d.ts.map +0 -1
  336. package/dist/debug/index.d.ts.map +0 -1
  337. package/dist/dev_env/index.d.ts.map +0 -1
  338. package/dist/dev_env/util.d.ts.map +0 -1
  339. package/dist/index.d.ts.map +0 -1
  340. package/dist/index.mjs +0 -6742
  341. package/dist/index.mjs.map +0 -1
  342. package/dist/js_render/computable_context.d.ts.map +0 -1
  343. package/dist/js_render/context.d.ts.map +0 -1
  344. package/dist/js_render/index.d.ts.map +0 -1
  345. package/dist/middle_layer/active_cfg.d.ts.map +0 -1
  346. package/dist/middle_layer/block.d.ts.map +0 -1
  347. package/dist/middle_layer/block_ctx.d.ts.map +0 -1
  348. package/dist/middle_layer/block_ctx_unsafe.d.ts.map +0 -1
  349. package/dist/middle_layer/driver_kit.d.ts.map +0 -1
  350. package/dist/middle_layer/frontend_path.d.ts.map +0 -1
  351. package/dist/middle_layer/index.d.ts.map +0 -1
  352. package/dist/middle_layer/middle_layer.d.ts.map +0 -1
  353. package/dist/middle_layer/navigation_states.d.ts.map +0 -1
  354. package/dist/middle_layer/ops.d.ts.map +0 -1
  355. package/dist/middle_layer/project.d.ts.map +0 -1
  356. package/dist/middle_layer/project_list.d.ts.map +0 -1
  357. package/dist/middle_layer/project_overview.d.ts.map +0 -1
  358. package/dist/middle_layer/project_overview_light.d.ts.map +0 -1
  359. package/dist/middle_layer/render.d.ts.map +0 -1
  360. package/dist/middle_layer/render.test.d.ts.map +0 -1
  361. package/dist/middle_layer/types.d.ts.map +0 -1
  362. package/dist/middle_layer/util.d.ts.map +0 -1
  363. package/dist/model/args.d.ts.map +0 -1
  364. package/dist/model/block_pack.d.ts.map +0 -1
  365. package/dist/model/block_pack_spec.d.ts.map +0 -1
  366. package/dist/model/frontend.d.ts.map +0 -1
  367. package/dist/model/index.d.ts.map +0 -1
  368. package/dist/model/project_helper.d.ts.map +0 -1
  369. package/dist/model/project_model.d.ts.map +0 -1
  370. package/dist/model/project_model.test.d.ts.map +0 -1
  371. package/dist/model/project_model_util.d.ts.map +0 -1
  372. package/dist/model/project_model_util.test.d.ts.map +0 -1
  373. package/dist/model/project_model_v1.d.ts.map +0 -1
  374. package/dist/model/template_spec.d.ts.map +0 -1
  375. package/dist/mutator/block-pack/block_pack.d.ts.map +0 -1
  376. package/dist/mutator/block-pack/block_pack.test.d.ts.map +0 -1
  377. package/dist/mutator/block-pack/frontend.d.ts.map +0 -1
  378. package/dist/mutator/context_export.d.ts.map +0 -1
  379. package/dist/mutator/migration.d.ts.map +0 -1
  380. package/dist/mutator/project.d.ts.map +0 -1
  381. package/dist/mutator/project.test.d.ts.map +0 -1
  382. package/dist/mutator/template/direct_template_loader.d.ts.map +0 -1
  383. package/dist/mutator/template/direct_template_loader_v3.d.ts.map +0 -1
  384. package/dist/mutator/template/render_block.d.ts.map +0 -1
  385. package/dist/mutator/template/render_template.d.ts.map +0 -1
  386. package/dist/mutator/template/template_loading.d.ts.map +0 -1
  387. package/dist/mutator/template/template_render.test.d.ts.map +0 -1
  388. package/dist/network_check/network_check.d.ts.map +0 -1
  389. package/dist/network_check/network_check.test.d.ts.map +0 -1
  390. package/dist/network_check/pings.d.ts.map +0 -1
  391. package/dist/network_check/template.d.ts.map +0 -1
  392. package/dist/network_check/template.test.d.ts.map +0 -1
  393. package/dist/network_check/test_utils.d.ts.map +0 -1
  394. package/dist/pool/data.d.ts.map +0 -1
  395. package/dist/pool/driver.d.ts.map +0 -1
  396. package/dist/pool/index.d.ts.map +0 -1
  397. package/dist/pool/p_object_collection.d.ts.map +0 -1
  398. package/dist/pool/ref_count_pool.d.ts.map +0 -1
  399. package/dist/pool/result_pool.d.ts.map +0 -1
  400. package/dist/test/block_packs.d.ts.map +0 -1
  401. package/dist/test/explicit_templates.d.ts.map +0 -1
  402. package/dist/test/known_templates.d.ts.map +0 -1
  403. package/dist/test_env.d.ts.map +0 -1
  404. package/dist/worker/WorkerManager.d.ts.map +0 -1
  405. package/dist/worker/worker.d.ts.map +0 -1
  406. package/dist/worker/workerApi.d.ts.map +0 -1
  407. package/dist/worker.js +0 -2
  408. package/dist/worker.js.map +0 -1
  409. package/dist/worker.mjs +0 -20
  410. package/dist/worker.mjs.map +0 -1
@@ -0,0 +1,233 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.cjs');
4
+ var plClient = require('@milaboratories/pl-client');
5
+ var template_loading = require('../template/template_loading.cjs');
6
+ var tsHelpers = require('@milaboratories/ts-helpers');
7
+ var fs = require('node:fs');
8
+ var undici = require('undici');
9
+ var frontend = require('./frontend.cjs');
10
+ var blockTools = require('@platforma-sdk/block-tools');
11
+ var index = require('../../dev_env/index.cjs');
12
+ var registry = require('../../block_registry/registry.cjs');
13
+ var lruCache = require('lru-cache');
14
+ var WorkerManager = require('../../worker/WorkerManager.cjs');
15
+
16
+ const BlockPackCustomType = { name: 'BlockPackCustom', version: '1' };
17
+ const BlockPackTemplateField = 'template';
18
+ const BlockPackFrontendField = 'frontend';
19
+ /** Ensure trailing slash */
20
+ function tSlash(str) {
21
+ if (str.endsWith('/'))
22
+ return str;
23
+ else
24
+ return `${str}/`;
25
+ }
26
+ function bufferToString(buffer) {
27
+ return Buffer.from(buffer).toString('utf8');
28
+ }
29
+ function bufferToJson(buffer) {
30
+ return JSON.parse(bufferToString(buffer));
31
+ }
32
+ class BlockPackPreparer {
33
+ v2RegistryProvider;
34
+ signer;
35
+ http;
36
+ constructor(v2RegistryProvider, signer, http) {
37
+ this.v2RegistryProvider = v2RegistryProvider;
38
+ this.signer = signer;
39
+ this.http = http;
40
+ }
41
+ remoteContentCache = new lruCache.LRUCache({
42
+ max: 500,
43
+ maxSize: 128 * 1024 * 1024,
44
+ fetchMethod: async (key) => {
45
+ const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};
46
+ return await (await undici.request(key, httpOptions)).body.arrayBuffer();
47
+ },
48
+ sizeCalculation: (value) => value.byteLength,
49
+ });
50
+ async getBlockConfigContainer(spec) {
51
+ switch (spec.type) {
52
+ case 'explicit':
53
+ return spec.config;
54
+ case 'prepared':
55
+ return spec.config;
56
+ case 'dev-v1': {
57
+ const devPaths = await index.resolveDevPacket(spec.folder);
58
+ const configContent = await fs.promises.readFile(devPaths.config, { encoding: 'utf-8' });
59
+ return JSON.parse(configContent);
60
+ }
61
+ case 'dev-v2': {
62
+ const description = await blockTools.loadPackDescription(spec.folder);
63
+ const configContent = await fs.promises.readFile(description.components.model.file, {
64
+ encoding: 'utf-8',
65
+ });
66
+ return JSON.parse(configContent);
67
+ }
68
+ case 'from-registry-v1': {
69
+ const urlPrefix = `${tSlash(spec.registryUrl)}${blockTools.RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;
70
+ const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);
71
+ return bufferToJson(configResponse);
72
+ }
73
+ case 'from-registry-v2': {
74
+ const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);
75
+ const components = await registry.getComponents(spec.id);
76
+ const configResponse = await this.remoteContentCache.forceFetch(components.model.url);
77
+ return bufferToJson(configResponse);
78
+ }
79
+ default:
80
+ return tsHelpers.assertNever(spec);
81
+ }
82
+ }
83
+ async prepare(spec) {
84
+ const env_1 = { stack: [], error: void 0, hasError: false };
85
+ try {
86
+ if (spec.type === 'prepared') {
87
+ return spec;
88
+ }
89
+ const explicit = await this.prepareWithoutUnpacking(spec);
90
+ const workerManager = tslib_es6.__addDisposableResource(env_1, new WorkerManager.WorkerManager(), true);
91
+ return {
92
+ ...explicit,
93
+ type: 'prepared',
94
+ template: {
95
+ type: 'prepared',
96
+ data: await workerManager.process('parseTemplate', explicit.template.content),
97
+ },
98
+ };
99
+ }
100
+ catch (e_1) {
101
+ env_1.error = e_1;
102
+ env_1.hasError = true;
103
+ }
104
+ finally {
105
+ const result_1 = tslib_es6.__disposeResources(env_1);
106
+ if (result_1)
107
+ await result_1;
108
+ }
109
+ }
110
+ async prepareWithoutUnpacking(spec) {
111
+ switch (spec.type) {
112
+ case 'explicit':
113
+ return spec;
114
+ case 'dev-v1': {
115
+ const devPaths = await index.resolveDevPacket(spec.folder);
116
+ // template
117
+ const templateContent = await fs.promises.readFile(devPaths.workflow);
118
+ // config
119
+ const config = JSON.parse(await fs.promises.readFile(devPaths.config, 'utf-8'));
120
+ // frontend
121
+ const frontendPath = devPaths.ui;
122
+ return {
123
+ type: 'explicit',
124
+ template: {
125
+ type: 'explicit',
126
+ content: templateContent,
127
+ },
128
+ config,
129
+ frontend: {
130
+ type: 'local',
131
+ path: frontendPath,
132
+ signature: this.signer.sign(frontendPath),
133
+ },
134
+ source: spec,
135
+ };
136
+ }
137
+ case 'dev-v2': {
138
+ const description = await blockTools.loadPackDescription(spec.folder);
139
+ const config = JSON.parse(await fs.promises.readFile(description.components.model.file, {
140
+ encoding: 'utf-8',
141
+ }));
142
+ const workflowContent = await fs.promises.readFile(description.components.workflow.main.file);
143
+ const frontendPath = description.components.ui.folder;
144
+ const source = { ...spec };
145
+ if (spec.mtime === undefined)
146
+ // if absent, calculating the mtime here, so the block will correctly show whether it can be updated
147
+ source.mtime = await registry.getDevV2PacketMtime(description);
148
+ return {
149
+ type: 'explicit',
150
+ template: {
151
+ type: 'explicit',
152
+ content: workflowContent,
153
+ },
154
+ config,
155
+ frontend: {
156
+ type: 'local',
157
+ path: frontendPath,
158
+ signature: this.signer.sign(frontendPath),
159
+ },
160
+ source,
161
+ };
162
+ }
163
+ case 'from-registry-v1': {
164
+ const urlPrefix = `${tSlash(spec.registryUrl)}${blockTools.RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;
165
+ const templateUrl = `${urlPrefix}/template.plj.gz`;
166
+ // template
167
+ const templateResponse = await this.remoteContentCache.forceFetch(templateUrl);
168
+ const templateContent = new Uint8Array(templateResponse);
169
+ // config
170
+ const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);
171
+ const config = bufferToJson(configResponse);
172
+ return {
173
+ type: 'explicit',
174
+ template: {
175
+ type: 'explicit',
176
+ content: templateContent,
177
+ },
178
+ config,
179
+ frontend: {
180
+ type: 'url',
181
+ url: `${urlPrefix}/frontend.tgz`,
182
+ },
183
+ source: spec,
184
+ };
185
+ }
186
+ case 'from-registry-v2': {
187
+ const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);
188
+ const components = await registry.getComponents(spec.id);
189
+ const getModel = async () => bufferToJson(await this.remoteContentCache.forceFetch(components.model.url));
190
+ const getWorkflow = async () => await this.remoteContentCache.forceFetch(components.workflow.main.url);
191
+ const [model, workflow] = await Promise.all([getModel(), getWorkflow()]);
192
+ return {
193
+ type: 'explicit',
194
+ template: {
195
+ type: 'explicit',
196
+ content: Buffer.from(workflow),
197
+ },
198
+ config: model,
199
+ frontend: {
200
+ type: 'url',
201
+ url: components.ui.url,
202
+ },
203
+ source: spec,
204
+ };
205
+ }
206
+ default:
207
+ return tsHelpers.assertNever(spec);
208
+ }
209
+ }
210
+ }
211
+ function createCustomBlockPack(tx, spec) {
212
+ const blockPackInfo = { config: spec.config, source: spec.source };
213
+ const bp = tx.createStruct(BlockPackCustomType, JSON.stringify(blockPackInfo));
214
+ tx.createField(plClient.field(bp, BlockPackTemplateField), 'Input', template_loading.loadTemplate(tx, spec.template));
215
+ tx.createField(plClient.field(bp, BlockPackFrontendField), 'Input', frontend.createFrontend(tx, spec.frontend));
216
+ tx.lock(bp);
217
+ return bp;
218
+ }
219
+ function createBlockPack(tx, spec) {
220
+ switch (spec.type) {
221
+ case 'prepared':
222
+ return createCustomBlockPack(tx, spec);
223
+ default:
224
+ return tsHelpers.assertNever(spec.type);
225
+ }
226
+ }
227
+
228
+ exports.BlockPackCustomType = BlockPackCustomType;
229
+ exports.BlockPackFrontendField = BlockPackFrontendField;
230
+ exports.BlockPackPreparer = BlockPackPreparer;
231
+ exports.BlockPackTemplateField = BlockPackTemplateField;
232
+ exports.createBlockPack = createBlockPack;
233
+ //# sourceMappingURL=block_pack.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block_pack.cjs","sources":["../../../src/mutator/block-pack/block_pack.ts"],"sourcesContent":["import type { AnyResourceRef, PlTransaction, ResourceType } from '@milaboratories/pl-client';\nimport { field } from '@milaboratories/pl-client';\nimport { loadTemplate } from '../template/template_loading';\nimport type { BlockPackExplicit, BlockPackSpecAny, BlockPackSpecPrepared } from '../../model';\nimport type { Signer } from '@milaboratories/ts-helpers';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport fs from 'node:fs';\nimport type { Dispatcher } from 'undici';\nimport { request } from 'undici';\nimport { createFrontend } from './frontend';\nimport type { BlockConfigContainer } from '@platforma-sdk/model';\nimport { loadPackDescription, RegistryV1 } from '@platforma-sdk/block-tools';\nimport type { BlockPackInfo } from '../../model/block_pack';\nimport { resolveDevPacket } from '../../dev_env';\nimport { getDevV2PacketMtime } from '../../block_registry';\nimport type { V2RegistryProvider } from '../../block_registry/registry-v2-provider';\nimport { LRUCache } from 'lru-cache';\nimport type { BlockPackSpec } from '@milaboratories/pl-model-middle-layer';\nimport { WorkerManager } from '../../worker/WorkerManager';\n\nexport const BlockPackCustomType: ResourceType = { name: 'BlockPackCustom', version: '1' };\nexport const BlockPackTemplateField = 'template';\nexport const BlockPackFrontendField = 'frontend';\n\n/** Ensure trailing slash */\nfunction tSlash(str: string): string {\n if (str.endsWith('/')) return str;\n else return `${str}/`;\n}\n\nfunction bufferToString(buffer: ArrayBuffer): string {\n return Buffer.from(buffer).toString('utf8');\n}\n\nfunction bufferToJson(buffer: ArrayBuffer): unknown {\n return JSON.parse(bufferToString(buffer));\n}\n\nexport class BlockPackPreparer {\n constructor(\n private readonly v2RegistryProvider: V2RegistryProvider,\n private readonly signer: Signer,\n private readonly http?: Dispatcher,\n ) {}\n\n private readonly remoteContentCache = new LRUCache<string, ArrayBuffer>({\n max: 500,\n maxSize: 128 * 1024 * 1024,\n fetchMethod: async (key) => {\n const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};\n return await (await request(key, httpOptions)).body.arrayBuffer();\n },\n sizeCalculation: (value) => value.byteLength,\n });\n\n public async getBlockConfigContainer(spec: BlockPackSpecAny): Promise<BlockConfigContainer> {\n switch (spec.type) {\n case 'explicit':\n return spec.config;\n\n case 'prepared':\n return spec.config;\n\n case 'dev-v1': {\n const devPaths = await resolveDevPacket(spec.folder, false);\n const configContent = await fs.promises.readFile(devPaths.config, { encoding: 'utf-8' });\n return JSON.parse(configContent) as BlockConfigContainer;\n }\n\n case 'dev-v2': {\n const description = await loadPackDescription(spec.folder);\n const configContent = await fs.promises.readFile(description.components.model.file, {\n encoding: 'utf-8',\n });\n return JSON.parse(configContent) as BlockConfigContainer;\n }\n\n case 'from-registry-v1': {\n const urlPrefix = `${tSlash(spec.registryUrl)}${RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;\n\n const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);\n return bufferToJson(configResponse) as BlockConfigContainer;\n }\n\n case 'from-registry-v2': {\n const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);\n const components = await registry.getComponents(spec.id);\n const configResponse = await this.remoteContentCache.forceFetch(components.model.url);\n return bufferToJson(configResponse) as BlockConfigContainer;\n }\n\n default:\n return assertNever(spec);\n }\n }\n\n public async prepare(spec: BlockPackSpecAny): Promise<BlockPackSpecPrepared> {\n if (spec.type === 'prepared') {\n return spec;\n }\n\n const explicit = await this.prepareWithoutUnpacking(spec);\n\n await using workerManager = new WorkerManager();\n\n return {\n ...explicit,\n type: 'prepared',\n template: {\n type: 'prepared',\n data: await workerManager.process('parseTemplate', explicit.template.content),\n },\n };\n }\n\n private async prepareWithoutUnpacking(spec: BlockPackExplicit | BlockPackSpec): Promise<BlockPackExplicit> {\n switch (spec.type) {\n case 'explicit':\n return spec;\n\n case 'dev-v1': {\n const devPaths = await resolveDevPacket(spec.folder, false);\n\n // template\n const templateContent = await fs.promises.readFile(devPaths.workflow);\n\n // config\n const config = JSON.parse(\n await fs.promises.readFile(devPaths.config, 'utf-8'),\n ) as BlockConfigContainer;\n\n // frontend\n const frontendPath = devPaths.ui;\n\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: templateContent,\n },\n config,\n frontend: {\n type: 'local',\n path: frontendPath,\n signature: this.signer.sign(frontendPath),\n },\n source: spec,\n };\n }\n\n case 'dev-v2': {\n const description = await loadPackDescription(spec.folder);\n const config = JSON.parse(\n await fs.promises.readFile(description.components.model.file, {\n encoding: 'utf-8',\n }),\n ) as BlockConfigContainer;\n const workflowContent = await fs.promises.readFile(\n description.components.workflow.main.file,\n );\n const frontendPath = description.components.ui.folder;\n const source = { ...spec };\n if (spec.mtime === undefined)\n // if absent, calculating the mtime here, so the block will correctly show whether it can be updated\n source.mtime = await getDevV2PacketMtime(description);\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: workflowContent,\n },\n config,\n frontend: {\n type: 'local',\n path: frontendPath,\n signature: this.signer.sign(frontendPath),\n },\n source,\n };\n }\n\n case 'from-registry-v1': {\n const urlPrefix = `${tSlash(spec.registryUrl)}${RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;\n\n const templateUrl = `${urlPrefix}/template.plj.gz`;\n // template\n const templateResponse = await this.remoteContentCache.forceFetch(templateUrl);\n const templateContent = new Uint8Array(templateResponse);\n\n // config\n const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);\n const config = bufferToJson(configResponse) as BlockConfigContainer;\n\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: templateContent,\n },\n config,\n frontend: {\n type: 'url',\n url: `${urlPrefix}/frontend.tgz`,\n },\n source: spec,\n };\n }\n\n case 'from-registry-v2': {\n const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);\n const components = await registry.getComponents(spec.id);\n const getModel = async () =>\n bufferToJson(await this.remoteContentCache.forceFetch(components.model.url)) as BlockConfigContainer;\n const getWorkflow = async () =>\n await this.remoteContentCache.forceFetch(components.workflow.main.url);\n\n const [model, workflow] = await Promise.all([getModel(), getWorkflow()]);\n\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: Buffer.from(workflow),\n },\n config: model,\n frontend: {\n type: 'url',\n url: components.ui.url,\n },\n source: spec,\n };\n }\n\n default:\n return assertNever(spec);\n }\n }\n}\n\nfunction createCustomBlockPack(tx: PlTransaction, spec: BlockPackSpecPrepared): AnyResourceRef {\n const blockPackInfo: BlockPackInfo = { config: spec.config, source: spec.source };\n const bp = tx.createStruct(BlockPackCustomType, JSON.stringify(blockPackInfo));\n tx.createField(field(bp, BlockPackTemplateField), 'Input', loadTemplate(tx, spec.template));\n tx.createField(field(bp, BlockPackFrontendField), 'Input', createFrontend(tx, spec.frontend));\n tx.lock(bp);\n\n return bp;\n}\n\nexport function createBlockPack(tx: PlTransaction, spec: BlockPackSpecPrepared): AnyResourceRef {\n switch (spec.type) {\n case 'prepared':\n return createCustomBlockPack(tx, spec);\n default:\n return assertNever(spec.type);\n }\n}\n"],"names":["LRUCache","request","resolveDevPacket","loadPackDescription","RegistryV1","assertNever","__addDisposableResource","WorkerManager","getDevV2PacketMtime","field","loadTemplate","createFrontend"],"mappings":"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"}
@@ -18,4 +18,3 @@ export declare class BlockPackPreparer {
18
18
  private prepareWithoutUnpacking;
19
19
  }
20
20
  export declare function createBlockPack(tx: PlTransaction, spec: BlockPackSpecPrepared): AnyResourceRef;
21
- //# sourceMappingURL=block_pack.d.ts.map
@@ -0,0 +1,227 @@
1
+ import { __addDisposableResource, __disposeResources } from '../../node_modules/.pnpm/@rollup_plugin-typescript@12.1.4_rollup@4.45.1_tslib@2.7.0_typescript@5.6.3/node_modules/tslib/tslib.es6.js';
2
+ import { field } from '@milaboratories/pl-client';
3
+ import { loadTemplate } from '../template/template_loading.js';
4
+ import { assertNever } from '@milaboratories/ts-helpers';
5
+ import fs from 'node:fs';
6
+ import { request } from 'undici';
7
+ import { createFrontend } from './frontend.js';
8
+ import { RegistryV1, loadPackDescription } from '@platforma-sdk/block-tools';
9
+ import { resolveDevPacket } from '../../dev_env/index.js';
10
+ import { getDevV2PacketMtime } from '../../block_registry/registry.js';
11
+ import { LRUCache } from 'lru-cache';
12
+ import { WorkerManager } from '../../worker/WorkerManager.js';
13
+
14
+ const BlockPackCustomType = { name: 'BlockPackCustom', version: '1' };
15
+ const BlockPackTemplateField = 'template';
16
+ const BlockPackFrontendField = 'frontend';
17
+ /** Ensure trailing slash */
18
+ function tSlash(str) {
19
+ if (str.endsWith('/'))
20
+ return str;
21
+ else
22
+ return `${str}/`;
23
+ }
24
+ function bufferToString(buffer) {
25
+ return Buffer.from(buffer).toString('utf8');
26
+ }
27
+ function bufferToJson(buffer) {
28
+ return JSON.parse(bufferToString(buffer));
29
+ }
30
+ class BlockPackPreparer {
31
+ v2RegistryProvider;
32
+ signer;
33
+ http;
34
+ constructor(v2RegistryProvider, signer, http) {
35
+ this.v2RegistryProvider = v2RegistryProvider;
36
+ this.signer = signer;
37
+ this.http = http;
38
+ }
39
+ remoteContentCache = new LRUCache({
40
+ max: 500,
41
+ maxSize: 128 * 1024 * 1024,
42
+ fetchMethod: async (key) => {
43
+ const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};
44
+ return await (await request(key, httpOptions)).body.arrayBuffer();
45
+ },
46
+ sizeCalculation: (value) => value.byteLength,
47
+ });
48
+ async getBlockConfigContainer(spec) {
49
+ switch (spec.type) {
50
+ case 'explicit':
51
+ return spec.config;
52
+ case 'prepared':
53
+ return spec.config;
54
+ case 'dev-v1': {
55
+ const devPaths = await resolveDevPacket(spec.folder);
56
+ const configContent = await fs.promises.readFile(devPaths.config, { encoding: 'utf-8' });
57
+ return JSON.parse(configContent);
58
+ }
59
+ case 'dev-v2': {
60
+ const description = await loadPackDescription(spec.folder);
61
+ const configContent = await fs.promises.readFile(description.components.model.file, {
62
+ encoding: 'utf-8',
63
+ });
64
+ return JSON.parse(configContent);
65
+ }
66
+ case 'from-registry-v1': {
67
+ const urlPrefix = `${tSlash(spec.registryUrl)}${RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;
68
+ const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);
69
+ return bufferToJson(configResponse);
70
+ }
71
+ case 'from-registry-v2': {
72
+ const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);
73
+ const components = await registry.getComponents(spec.id);
74
+ const configResponse = await this.remoteContentCache.forceFetch(components.model.url);
75
+ return bufferToJson(configResponse);
76
+ }
77
+ default:
78
+ return assertNever(spec);
79
+ }
80
+ }
81
+ async prepare(spec) {
82
+ const env_1 = { stack: [], error: void 0, hasError: false };
83
+ try {
84
+ if (spec.type === 'prepared') {
85
+ return spec;
86
+ }
87
+ const explicit = await this.prepareWithoutUnpacking(spec);
88
+ const workerManager = __addDisposableResource(env_1, new WorkerManager(), true);
89
+ return {
90
+ ...explicit,
91
+ type: 'prepared',
92
+ template: {
93
+ type: 'prepared',
94
+ data: await workerManager.process('parseTemplate', explicit.template.content),
95
+ },
96
+ };
97
+ }
98
+ catch (e_1) {
99
+ env_1.error = e_1;
100
+ env_1.hasError = true;
101
+ }
102
+ finally {
103
+ const result_1 = __disposeResources(env_1);
104
+ if (result_1)
105
+ await result_1;
106
+ }
107
+ }
108
+ async prepareWithoutUnpacking(spec) {
109
+ switch (spec.type) {
110
+ case 'explicit':
111
+ return spec;
112
+ case 'dev-v1': {
113
+ const devPaths = await resolveDevPacket(spec.folder);
114
+ // template
115
+ const templateContent = await fs.promises.readFile(devPaths.workflow);
116
+ // config
117
+ const config = JSON.parse(await fs.promises.readFile(devPaths.config, 'utf-8'));
118
+ // frontend
119
+ const frontendPath = devPaths.ui;
120
+ return {
121
+ type: 'explicit',
122
+ template: {
123
+ type: 'explicit',
124
+ content: templateContent,
125
+ },
126
+ config,
127
+ frontend: {
128
+ type: 'local',
129
+ path: frontendPath,
130
+ signature: this.signer.sign(frontendPath),
131
+ },
132
+ source: spec,
133
+ };
134
+ }
135
+ case 'dev-v2': {
136
+ const description = await loadPackDescription(spec.folder);
137
+ const config = JSON.parse(await fs.promises.readFile(description.components.model.file, {
138
+ encoding: 'utf-8',
139
+ }));
140
+ const workflowContent = await fs.promises.readFile(description.components.workflow.main.file);
141
+ const frontendPath = description.components.ui.folder;
142
+ const source = { ...spec };
143
+ if (spec.mtime === undefined)
144
+ // if absent, calculating the mtime here, so the block will correctly show whether it can be updated
145
+ source.mtime = await getDevV2PacketMtime(description);
146
+ return {
147
+ type: 'explicit',
148
+ template: {
149
+ type: 'explicit',
150
+ content: workflowContent,
151
+ },
152
+ config,
153
+ frontend: {
154
+ type: 'local',
155
+ path: frontendPath,
156
+ signature: this.signer.sign(frontendPath),
157
+ },
158
+ source,
159
+ };
160
+ }
161
+ case 'from-registry-v1': {
162
+ const urlPrefix = `${tSlash(spec.registryUrl)}${RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;
163
+ const templateUrl = `${urlPrefix}/template.plj.gz`;
164
+ // template
165
+ const templateResponse = await this.remoteContentCache.forceFetch(templateUrl);
166
+ const templateContent = new Uint8Array(templateResponse);
167
+ // config
168
+ const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);
169
+ const config = bufferToJson(configResponse);
170
+ return {
171
+ type: 'explicit',
172
+ template: {
173
+ type: 'explicit',
174
+ content: templateContent,
175
+ },
176
+ config,
177
+ frontend: {
178
+ type: 'url',
179
+ url: `${urlPrefix}/frontend.tgz`,
180
+ },
181
+ source: spec,
182
+ };
183
+ }
184
+ case 'from-registry-v2': {
185
+ const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);
186
+ const components = await registry.getComponents(spec.id);
187
+ const getModel = async () => bufferToJson(await this.remoteContentCache.forceFetch(components.model.url));
188
+ const getWorkflow = async () => await this.remoteContentCache.forceFetch(components.workflow.main.url);
189
+ const [model, workflow] = await Promise.all([getModel(), getWorkflow()]);
190
+ return {
191
+ type: 'explicit',
192
+ template: {
193
+ type: 'explicit',
194
+ content: Buffer.from(workflow),
195
+ },
196
+ config: model,
197
+ frontend: {
198
+ type: 'url',
199
+ url: components.ui.url,
200
+ },
201
+ source: spec,
202
+ };
203
+ }
204
+ default:
205
+ return assertNever(spec);
206
+ }
207
+ }
208
+ }
209
+ function createCustomBlockPack(tx, spec) {
210
+ const blockPackInfo = { config: spec.config, source: spec.source };
211
+ const bp = tx.createStruct(BlockPackCustomType, JSON.stringify(blockPackInfo));
212
+ tx.createField(field(bp, BlockPackTemplateField), 'Input', loadTemplate(tx, spec.template));
213
+ tx.createField(field(bp, BlockPackFrontendField), 'Input', createFrontend(tx, spec.frontend));
214
+ tx.lock(bp);
215
+ return bp;
216
+ }
217
+ function createBlockPack(tx, spec) {
218
+ switch (spec.type) {
219
+ case 'prepared':
220
+ return createCustomBlockPack(tx, spec);
221
+ default:
222
+ return assertNever(spec.type);
223
+ }
224
+ }
225
+
226
+ export { BlockPackCustomType, BlockPackFrontendField, BlockPackPreparer, BlockPackTemplateField, createBlockPack };
227
+ //# sourceMappingURL=block_pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block_pack.js","sources":["../../../src/mutator/block-pack/block_pack.ts"],"sourcesContent":["import type { AnyResourceRef, PlTransaction, ResourceType } from '@milaboratories/pl-client';\nimport { field } from '@milaboratories/pl-client';\nimport { loadTemplate } from '../template/template_loading';\nimport type { BlockPackExplicit, BlockPackSpecAny, BlockPackSpecPrepared } from '../../model';\nimport type { Signer } from '@milaboratories/ts-helpers';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport fs from 'node:fs';\nimport type { Dispatcher } from 'undici';\nimport { request } from 'undici';\nimport { createFrontend } from './frontend';\nimport type { BlockConfigContainer } from '@platforma-sdk/model';\nimport { loadPackDescription, RegistryV1 } from '@platforma-sdk/block-tools';\nimport type { BlockPackInfo } from '../../model/block_pack';\nimport { resolveDevPacket } from '../../dev_env';\nimport { getDevV2PacketMtime } from '../../block_registry';\nimport type { V2RegistryProvider } from '../../block_registry/registry-v2-provider';\nimport { LRUCache } from 'lru-cache';\nimport type { BlockPackSpec } from '@milaboratories/pl-model-middle-layer';\nimport { WorkerManager } from '../../worker/WorkerManager';\n\nexport const BlockPackCustomType: ResourceType = { name: 'BlockPackCustom', version: '1' };\nexport const BlockPackTemplateField = 'template';\nexport const BlockPackFrontendField = 'frontend';\n\n/** Ensure trailing slash */\nfunction tSlash(str: string): string {\n if (str.endsWith('/')) return str;\n else return `${str}/`;\n}\n\nfunction bufferToString(buffer: ArrayBuffer): string {\n return Buffer.from(buffer).toString('utf8');\n}\n\nfunction bufferToJson(buffer: ArrayBuffer): unknown {\n return JSON.parse(bufferToString(buffer));\n}\n\nexport class BlockPackPreparer {\n constructor(\n private readonly v2RegistryProvider: V2RegistryProvider,\n private readonly signer: Signer,\n private readonly http?: Dispatcher,\n ) {}\n\n private readonly remoteContentCache = new LRUCache<string, ArrayBuffer>({\n max: 500,\n maxSize: 128 * 1024 * 1024,\n fetchMethod: async (key) => {\n const httpOptions = this.http !== undefined ? { dispatcher: this.http } : {};\n return await (await request(key, httpOptions)).body.arrayBuffer();\n },\n sizeCalculation: (value) => value.byteLength,\n });\n\n public async getBlockConfigContainer(spec: BlockPackSpecAny): Promise<BlockConfigContainer> {\n switch (spec.type) {\n case 'explicit':\n return spec.config;\n\n case 'prepared':\n return spec.config;\n\n case 'dev-v1': {\n const devPaths = await resolveDevPacket(spec.folder, false);\n const configContent = await fs.promises.readFile(devPaths.config, { encoding: 'utf-8' });\n return JSON.parse(configContent) as BlockConfigContainer;\n }\n\n case 'dev-v2': {\n const description = await loadPackDescription(spec.folder);\n const configContent = await fs.promises.readFile(description.components.model.file, {\n encoding: 'utf-8',\n });\n return JSON.parse(configContent) as BlockConfigContainer;\n }\n\n case 'from-registry-v1': {\n const urlPrefix = `${tSlash(spec.registryUrl)}${RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;\n\n const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);\n return bufferToJson(configResponse) as BlockConfigContainer;\n }\n\n case 'from-registry-v2': {\n const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);\n const components = await registry.getComponents(spec.id);\n const configResponse = await this.remoteContentCache.forceFetch(components.model.url);\n return bufferToJson(configResponse) as BlockConfigContainer;\n }\n\n default:\n return assertNever(spec);\n }\n }\n\n public async prepare(spec: BlockPackSpecAny): Promise<BlockPackSpecPrepared> {\n if (spec.type === 'prepared') {\n return spec;\n }\n\n const explicit = await this.prepareWithoutUnpacking(spec);\n\n await using workerManager = new WorkerManager();\n\n return {\n ...explicit,\n type: 'prepared',\n template: {\n type: 'prepared',\n data: await workerManager.process('parseTemplate', explicit.template.content),\n },\n };\n }\n\n private async prepareWithoutUnpacking(spec: BlockPackExplicit | BlockPackSpec): Promise<BlockPackExplicit> {\n switch (spec.type) {\n case 'explicit':\n return spec;\n\n case 'dev-v1': {\n const devPaths = await resolveDevPacket(spec.folder, false);\n\n // template\n const templateContent = await fs.promises.readFile(devPaths.workflow);\n\n // config\n const config = JSON.parse(\n await fs.promises.readFile(devPaths.config, 'utf-8'),\n ) as BlockConfigContainer;\n\n // frontend\n const frontendPath = devPaths.ui;\n\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: templateContent,\n },\n config,\n frontend: {\n type: 'local',\n path: frontendPath,\n signature: this.signer.sign(frontendPath),\n },\n source: spec,\n };\n }\n\n case 'dev-v2': {\n const description = await loadPackDescription(spec.folder);\n const config = JSON.parse(\n await fs.promises.readFile(description.components.model.file, {\n encoding: 'utf-8',\n }),\n ) as BlockConfigContainer;\n const workflowContent = await fs.promises.readFile(\n description.components.workflow.main.file,\n );\n const frontendPath = description.components.ui.folder;\n const source = { ...spec };\n if (spec.mtime === undefined)\n // if absent, calculating the mtime here, so the block will correctly show whether it can be updated\n source.mtime = await getDevV2PacketMtime(description);\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: workflowContent,\n },\n config,\n frontend: {\n type: 'local',\n path: frontendPath,\n signature: this.signer.sign(frontendPath),\n },\n source,\n };\n }\n\n case 'from-registry-v1': {\n const urlPrefix = `${tSlash(spec.registryUrl)}${RegistryV1.packageContentPrefix({ organization: spec.id.organization, package: spec.id.name, version: spec.id.version })}`;\n\n const templateUrl = `${urlPrefix}/template.plj.gz`;\n // template\n const templateResponse = await this.remoteContentCache.forceFetch(templateUrl);\n const templateContent = new Uint8Array(templateResponse);\n\n // config\n const configResponse = await this.remoteContentCache.forceFetch(`${urlPrefix}/config.json`);\n const config = bufferToJson(configResponse) as BlockConfigContainer;\n\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: templateContent,\n },\n config,\n frontend: {\n type: 'url',\n url: `${urlPrefix}/frontend.tgz`,\n },\n source: spec,\n };\n }\n\n case 'from-registry-v2': {\n const registry = this.v2RegistryProvider.getRegistry(spec.registryUrl);\n const components = await registry.getComponents(spec.id);\n const getModel = async () =>\n bufferToJson(await this.remoteContentCache.forceFetch(components.model.url)) as BlockConfigContainer;\n const getWorkflow = async () =>\n await this.remoteContentCache.forceFetch(components.workflow.main.url);\n\n const [model, workflow] = await Promise.all([getModel(), getWorkflow()]);\n\n return {\n type: 'explicit',\n template: {\n type: 'explicit',\n content: Buffer.from(workflow),\n },\n config: model,\n frontend: {\n type: 'url',\n url: components.ui.url,\n },\n source: spec,\n };\n }\n\n default:\n return assertNever(spec);\n }\n }\n}\n\nfunction createCustomBlockPack(tx: PlTransaction, spec: BlockPackSpecPrepared): AnyResourceRef {\n const blockPackInfo: BlockPackInfo = { config: spec.config, source: spec.source };\n const bp = tx.createStruct(BlockPackCustomType, JSON.stringify(blockPackInfo));\n tx.createField(field(bp, BlockPackTemplateField), 'Input', loadTemplate(tx, spec.template));\n tx.createField(field(bp, BlockPackFrontendField), 'Input', createFrontend(tx, spec.frontend));\n tx.lock(bp);\n\n return bp;\n}\n\nexport function createBlockPack(tx: PlTransaction, spec: BlockPackSpecPrepared): AnyResourceRef {\n switch (spec.type) {\n case 'prepared':\n return createCustomBlockPack(tx, spec);\n default:\n return assertNever(spec.type);\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=block_pack.test.d.ts.map
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var block_pack_spec = require('../../model/block_pack_spec.cjs');
4
+ var tsHelpers = require('@milaboratories/ts-helpers');
5
+
6
+ function createFrontend(tx, spec) {
7
+ switch (spec.type) {
8
+ case 'url':
9
+ return tx.createValue(block_pack_spec.FrontendFromUrlResourceType, JSON.stringify({ url: spec.url }));
10
+ case 'local':
11
+ return tx.createValue(block_pack_spec.FrontendFromFolderResourceType, JSON.stringify({
12
+ path: spec.path,
13
+ signature: spec.signature,
14
+ }));
15
+ default:
16
+ return tsHelpers.assertNever(spec);
17
+ }
18
+ }
19
+
20
+ exports.createFrontend = createFrontend;
21
+ //# sourceMappingURL=frontend.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend.cjs","sources":["../../../src/mutator/block-pack/frontend.ts"],"sourcesContent":["import type { AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport type {\n FrontendFromFolderData,\n FrontendFromUrlData,\n FrontendSpec,\n} from '../../model';\nimport {\n FrontendFromFolderResourceType,\n FrontendFromUrlResourceType,\n} from '../../model';\nimport { assertNever } from '@milaboratories/ts-helpers';\n\nexport function createFrontend(tx: PlTransaction, spec: FrontendSpec): AnyResourceRef {\n switch (spec.type) {\n case 'url':\n return tx.createValue(\n FrontendFromUrlResourceType,\n JSON.stringify({ url: spec.url } as FrontendFromUrlData),\n );\n case 'local':\n return tx.createValue(\n FrontendFromFolderResourceType,\n JSON.stringify({\n path: spec.path,\n signature: spec.signature,\n } as FrontendFromFolderData),\n );\n default:\n return assertNever(spec);\n }\n}\n"],"names":["FrontendFromUrlResourceType","FrontendFromFolderResourceType","assertNever"],"mappings":";;;;;AAYM,SAAU,cAAc,CAAC,EAAiB,EAAE,IAAkB,EAAA;AAClE,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,EAAE,CAAC,WAAW,CACnBA,2CAA2B,EAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAyB,CAAC,CACzD;AACH,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,WAAW,CACnBC,8CAA8B,EAC9B,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;AACA,aAAA,CAAC,CAC7B;AACH,QAAA;AACE,YAAA,OAAOC,qBAAW,CAAC,IAAI,CAAC;;AAE9B;;;;"}
@@ -1,4 +1,3 @@
1
1
  import { AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';
2
2
  import { FrontendSpec } from '../../model';
3
3
  export declare function createFrontend(tx: PlTransaction, spec: FrontendSpec): AnyResourceRef;
4
- //# sourceMappingURL=frontend.d.ts.map
@@ -0,0 +1,19 @@
1
+ import { FrontendFromFolderResourceType, FrontendFromUrlResourceType } from '../../model/block_pack_spec.js';
2
+ import { assertNever } from '@milaboratories/ts-helpers';
3
+
4
+ function createFrontend(tx, spec) {
5
+ switch (spec.type) {
6
+ case 'url':
7
+ return tx.createValue(FrontendFromUrlResourceType, JSON.stringify({ url: spec.url }));
8
+ case 'local':
9
+ return tx.createValue(FrontendFromFolderResourceType, JSON.stringify({
10
+ path: spec.path,
11
+ signature: spec.signature,
12
+ }));
13
+ default:
14
+ return assertNever(spec);
15
+ }
16
+ }
17
+
18
+ export { createFrontend };
19
+ //# sourceMappingURL=frontend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend.js","sources":["../../../src/mutator/block-pack/frontend.ts"],"sourcesContent":["import type { AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport type {\n FrontendFromFolderData,\n FrontendFromUrlData,\n FrontendSpec,\n} from '../../model';\nimport {\n FrontendFromFolderResourceType,\n FrontendFromUrlResourceType,\n} from '../../model';\nimport { assertNever } from '@milaboratories/ts-helpers';\n\nexport function createFrontend(tx: PlTransaction, spec: FrontendSpec): AnyResourceRef {\n switch (spec.type) {\n case 'url':\n return tx.createValue(\n FrontendFromUrlResourceType,\n JSON.stringify({ url: spec.url } as FrontendFromUrlData),\n );\n case 'local':\n return tx.createValue(\n FrontendFromFolderResourceType,\n JSON.stringify({\n path: spec.path,\n signature: spec.signature,\n } as FrontendFromFolderData),\n );\n default:\n return assertNever(spec);\n }\n}\n"],"names":[],"mappings":";;;AAYM,SAAU,cAAc,CAAC,EAAiB,EAAE,IAAkB,EAAA;AAClE,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,KAAK;AACR,YAAA,OAAO,EAAE,CAAC,WAAW,CACnB,2BAA2B,EAC3B,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAyB,CAAC,CACzD;AACH,QAAA,KAAK,OAAO;YACV,OAAO,EAAE,CAAC,WAAW,CACnB,8BAA8B,EAC9B,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;AACA,aAAA,CAAC,CAC7B;AACH,QAAA;AACE,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC;;AAE9B;;;;"}
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+
3
+ var render_template = require('./template/render_template.cjs');
4
+ var template_loading = require('./template/template_loading.cjs');
5
+ var node_crypto = require('node:crypto');
6
+ var workflowTengo = require('@platforma-sdk/workflow-tengo');
7
+
8
+ let preparedTemplateEnvelop;
9
+ async function getPreparedExportTemplateEnvelope() {
10
+ if (preparedTemplateEnvelop === undefined) {
11
+ // (await import('@platforma-sdk/workflow-tengo')).Templates['pframes.export-pframe']
12
+ const preparedTemplate = await template_loading.prepareTemplateSpec(workflowTengo.Templates['pframes.export-pframe-for-ui']);
13
+ if (preparedTemplate.type !== 'explicit')
14
+ throw new Error('Unexpected prepared template type.');
15
+ const hash = node_crypto.createHash('sha256').update(preparedTemplate.content).digest('hex');
16
+ preparedTemplateEnvelop = { spec: preparedTemplate, hash };
17
+ }
18
+ return preparedTemplateEnvelop;
19
+ }
20
+ function exportContext(tx, exportTpl, ctx) {
21
+ return render_template.createRenderTemplate(tx, exportTpl, true, { pf: ctx }, ['result']).result;
22
+ }
23
+
24
+ exports.exportContext = exportContext;
25
+ exports.getPreparedExportTemplateEnvelope = getPreparedExportTemplateEnvelope;
26
+ //# sourceMappingURL=context_export.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context_export.cjs","sources":["../../src/mutator/context_export.ts"],"sourcesContent":["import type { AnyRef, PlTransaction } from '@milaboratories/pl-client';\nimport { createRenderTemplate } from './template/render_template';\nimport { prepareTemplateSpec } from './template/template_loading';\nimport type { TemplateSpecPrepared } from '../model/template_spec';\nimport { createHash } from 'node:crypto';\n\n// Workaround to prevent bundling of @platforma-sdk/workflow-tengo\n// if bundling happens import.meta.dirname will be transfered as is without transferring corresponding assets\n// Construct like new URL(…, import.meta.url) also does not work properly.\n// const require = createRequire(import.meta.url);\n// const SdkTemplates = require('@platforma-sdk/workflow-tengo').Templates;\n\nimport { Templates as SdkTemplates } from '@platforma-sdk/workflow-tengo';\n\nexport type TemplateEnvelop = { spec: TemplateSpecPrepared; hash: string };\n\nlet preparedTemplateEnvelop: TemplateEnvelop | undefined;\n\nexport async function getPreparedExportTemplateEnvelope(): Promise<TemplateEnvelop> {\n if (preparedTemplateEnvelop === undefined) {\n // (await import('@platforma-sdk/workflow-tengo')).Templates['pframes.export-pframe']\n const preparedTemplate = await prepareTemplateSpec(SdkTemplates['pframes.export-pframe-for-ui']);\n if (preparedTemplate.type !== 'explicit') throw new Error('Unexpected prepared template type.');\n const hash = createHash('sha256').update(preparedTemplate.content).digest('hex');\n preparedTemplateEnvelop = { spec: preparedTemplate, hash };\n }\n\n return preparedTemplateEnvelop;\n}\n\nexport function exportContext(tx: PlTransaction, exportTpl: AnyRef, ctx: AnyRef) {\n return createRenderTemplate(tx, exportTpl, true, { pf: ctx }, ['result']).result;\n}\n"],"names":["prepareTemplateSpec","SdkTemplates","createHash","createRenderTemplate"],"mappings":";;;;;;;AAgBA,IAAI,uBAAoD;AAEjD,eAAe,iCAAiC,GAAA;AACrD,IAAA,IAAI,uBAAuB,KAAK,SAAS,EAAE;;QAEzC,MAAM,gBAAgB,GAAG,MAAMA,oCAAmB,CAACC,uBAAY,CAAC,8BAA8B,CAAC,CAAC;AAChG,QAAA,IAAI,gBAAgB,CAAC,IAAI,KAAK,UAAU;AAAE,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;AAC/F,QAAA,MAAM,IAAI,GAAGC,sBAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAChF,uBAAuB,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE;IAC5D;AAEA,IAAA,OAAO,uBAAuB;AAChC;SAEgB,aAAa,CAAC,EAAiB,EAAE,SAAiB,EAAE,GAAW,EAAA;IAC7E,OAAOC,oCAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;AAClF;;;;;"}