@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,139 @@
1
+ 'use strict';
2
+
3
+ var node_crypto = require('node:crypto');
4
+ var plModelBackend = require('@milaboratories/pl-model-backend');
5
+ var tsHelpers = require('@milaboratories/ts-helpers');
6
+
7
+ /**
8
+ * Renders the tree of templates by caching all resource ids
9
+ * by their cache keys.
10
+ * It's different from v2 version because we provide
11
+ * the hash map of the code of all sources everywhere.
12
+ * It does a double-dispatch on the node type (template, library etc),
13
+ * and creates resources.
14
+ *
15
+ * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
16
+ * tree traversing and operations on it, but I don't have time to do it now.
17
+ */
18
+ function createTemplateV3Tree(tx, tplData) {
19
+ const resourceCache = new Map();
20
+ const createResourceCached = (resource, renderer, hashToSource) => {
21
+ const key = node_crypto.createHash('sha256');
22
+ renderer.updateCacheKey(resource, key, hashToSource);
23
+ const rKey = key.digest('hex');
24
+ if (!resourceCache.has(rKey)) {
25
+ const rId = renderer.render(resource, tx, createResourceCached, hashToSource);
26
+ resourceCache.set(rKey, rId);
27
+ }
28
+ return resourceCache.get(rKey);
29
+ };
30
+ return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);
31
+ }
32
+ const LibRenderer = {
33
+ updateCacheKey(resource, hash, sources) {
34
+ hash
35
+ .update(plModelBackend.PlTemplateLibV1.type.name)
36
+ .update(plModelBackend.PlTemplateLibV1.type.version)
37
+ .update(resource.name)
38
+ .update(resource.version)
39
+ .update(getSourceCode(resource.name, sources, resource.sourceHash));
40
+ },
41
+ render(resource, tx, _creator, sources) {
42
+ return tx.createValue(plModelBackend.PlTemplateLibV1.type, JSON.stringify(plModelBackend.PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
43
+ },
44
+ };
45
+ const SoftwareInfoRenderer = {
46
+ updateCacheKey(resource, hash, sources) {
47
+ hash
48
+ .update(plModelBackend.PlTemplateSoftwareV1.type.name)
49
+ .update(plModelBackend.PlTemplateSoftwareV1.type.version)
50
+ .update(resource.name)
51
+ .update(resource.version)
52
+ .update(getSourceCode(resource.name, sources, resource.sourceHash));
53
+ },
54
+ render(resource, tx, _creator, sources) {
55
+ const sw = plModelBackend.PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));
56
+ const ref = tx.createStruct(plModelBackend.PlTemplateSoftwareV1.type, sw.data);
57
+ tx.setKValue(ref, plModelBackend.PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));
58
+ tx.lock(ref);
59
+ return ref;
60
+ },
61
+ };
62
+ const TemplateRenderer = {
63
+ updateCacheKey(resource, hash, sources) {
64
+ hash
65
+ .update(plModelBackend.PlTemplateV1.type.name)
66
+ .update(plModelBackend.PlTemplateV1.type.version)
67
+ .update(resource.hashOverride ?? 'no-override')
68
+ .update(resource.name)
69
+ .update(resource.version)
70
+ .update(getSourceCode(resource.name, sources, resource.sourceHash));
71
+ const srt = (entries) => {
72
+ entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));
73
+ return entries;
74
+ };
75
+ for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
76
+ hash.update('lib:' + libId);
77
+ LibRenderer.updateCacheKey(lib, hash, sources);
78
+ }
79
+ for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
80
+ hash.update('soft:' + swId);
81
+ SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
82
+ }
83
+ for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
84
+ hash.update('asset:' + swId);
85
+ SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
86
+ }
87
+ for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
88
+ hash.update('tpl:' + tplId);
89
+ this.updateCacheKey(tpl, hash, sources);
90
+ }
91
+ },
92
+ render(resource, tx, _creator, sources) {
93
+ const tplRef = tx.createStruct(plModelBackend.PlTemplateV1.type, JSON.stringify(plModelBackend.PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
94
+ // Render libraries
95
+ for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
96
+ const fld = plModelBackend.PlTemplateV1.libField(tplRef, libId);
97
+ tx.createField(fld, 'Input');
98
+ tx.setField(fld, _creator(lib, LibRenderer, sources));
99
+ }
100
+ // Render software and assets
101
+ for (const [swId, sw] of Object.entries(resource.software ?? {})) {
102
+ const fld = plModelBackend.PlTemplateV1.swField(tplRef, swId);
103
+ tx.createField(fld, 'Input');
104
+ tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
105
+ }
106
+ for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
107
+ const fld = plModelBackend.PlTemplateV1.swField(tplRef, swId);
108
+ tx.createField(fld, 'Input');
109
+ tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
110
+ }
111
+ // Render dependency templates
112
+ for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
113
+ const fld = plModelBackend.PlTemplateV1.tplField(tplRef, depTplId);
114
+ tx.createField(fld, 'Input');
115
+ tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));
116
+ }
117
+ tx.lock(tplRef);
118
+ if (!resource.hashOverride)
119
+ return tplRef;
120
+ // Override template hash with proxy resource, when hash override is configured for template
121
+ const overrideRef = tx.createStruct(plModelBackend.PlTemplateOverrideV1.type, JSON.stringify(plModelBackend.PlTemplateOverrideV1.fromV3Data(resource)));
122
+ const fld = plModelBackend.PlTemplateOverrideV1.tplField(overrideRef);
123
+ tx.createField(fld, 'Service');
124
+ tx.setField(fld, tplRef);
125
+ tx.lock(overrideRef);
126
+ return overrideRef;
127
+ },
128
+ };
129
+ /**
130
+ * Gets a source code of the artifact by its source hash.
131
+ * the source hash was calculated and stored by tengo compiler
132
+ * and is different from the hash we're using for caching here.
133
+ */
134
+ function getSourceCode(name, sources, sourceHash) {
135
+ return tsHelpers.notEmpty(sources[sourceHash], `trying to get "${name}" source: sources map doesn't contain source hash ${sourceHash}`);
136
+ }
137
+
138
+ exports.createTemplateV3Tree = createTemplateV3Tree;
139
+ //# sourceMappingURL=direct_template_loader_v3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct_template_loader_v3.cjs","sources":["../../../src/mutator/template/direct_template_loader_v3.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport type { Hash } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport type {\n CompiledTemplateV3,\n TemplateDataV3,\n TemplateLibDataV3,\n TemplateSoftwareDataV3,\n} from '@milaboratories/pl-model-backend';\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n} from '@milaboratories/pl-model-backend';\nimport { notEmpty } from '@milaboratories/ts-helpers';\n\n/**\n * Renders the tree of templates by caching all resource ids\n * by their cache keys.\n * It's different from v2 version because we provide\n * the hash map of the code of all sources everywhere.\n * It does a double-dispatch on the node type (template, library etc),\n * and creates resources.\n *\n * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate\n * tree traversing and operations on it, but I don't have time to do it now.\n*/\nexport function createTemplateV3Tree(tx: PlTransaction, tplData: CompiledTemplateV3): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResourceCached = <T>(resource: T, renderer: Renderer<T>, hashToSource: Record<string, string>): AnyResourceRef => {\n const key: Hash = createHash('sha256');\n renderer.updateCacheKey(resource, key, hashToSource);\n\n const rKey = key.digest('hex');\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResourceCached, hashToSource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);\n}\n\ntype Renderer<T> = {\n /** Updates the cache key by adding all info of the artifact. */\n updateCacheKey: CacheKey<T>;\n /** Create resources for all dependencies recursively and then for this artifact. */\n render: (resource: T, tx: PlTransaction, creator: Creator, sources: Record<string, string>) => AnyResourceRef;\n};\ntype CacheKey<T> = (resource: T, key: Hash, sources: Record<string, string>) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>, sources: Record<string, string>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n const sw = PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));\n const ref = tx.createStruct(PlTemplateSoftwareV1.type, sw.data);\n tx.setKValue(ref, PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));\n tx.lock(ref);\n return ref;\n },\n};\n\nconst TemplateRenderer: Renderer<TemplateDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateV1.type.name)\n .update(PlTemplateV1.type.version)\n .update(resource.hashOverride ?? 'no-override')\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n\n const srt = <T>(entries: [string, T][]): [string, T][] => {\n entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));\n return entries;\n };\n\n for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {\n hash.update('lib:' + libId);\n LibRenderer.updateCacheKey(lib, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update('soft:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update('asset:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update('tpl:' + tplId);\n this.updateCacheKey(tpl, hash, sources);\n }\n },\n render(resource, tx, _creator, sources) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n // Render libraries\n for (const [libId, lib] of Object.entries(resource.libs ?? {})) {\n const fld = PlTemplateV1.libField(tplRef, libId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(lib, LibRenderer, sources));\n }\n\n // Render software and assets\n for (const [swId, sw] of Object.entries(resource.software ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n for (const [swId, sw] of Object.entries(resource.assets ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n\n // Render dependency templates\n for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {\n const fld = PlTemplateV1.tplField(tplRef, depTplId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));\n }\n\n tx.lock(tplRef);\n\n if (!resource.hashOverride) return tplRef;\n\n // Override template hash with proxy resource, when hash override is configured for template\n const overrideRef = tx.createStruct(\n PlTemplateOverrideV1.type,\n JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)),\n );\n const fld = PlTemplateOverrideV1.tplField(overrideRef);\n tx.createField(fld, 'Service');\n tx.setField(fld, tplRef);\n tx.lock(overrideRef);\n return overrideRef;\n },\n};\n\n/**\n * Gets a source code of the artifact by its source hash.\n * the source hash was calculated and stored by tengo compiler\n * and is different from the hash we're using for caching here.\n */\nfunction getSourceCode(name: string, sources: Record<string, string>, sourceHash: string): string {\n return notEmpty(\n sources[sourceHash],\n `trying to get \"${name}\" source: sources map doesn't contain source hash ${sourceHash}`,\n );\n}\n"],"names":["createHash","PlTemplateLibV1","PlTemplateSoftwareV1","PlTemplateV1","PlTemplateOverrideV1","notEmpty"],"mappings":"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"}
@@ -12,4 +12,3 @@ import { CompiledTemplateV3 } from '@milaboratories/pl-model-backend';
12
12
  * tree traversing and operations on it, but I don't have time to do it now.
13
13
  */
14
14
  export declare function createTemplateV3Tree(tx: PlTransaction, tplData: CompiledTemplateV3): AnyRef;
15
- //# sourceMappingURL=direct_template_loader_v3.d.ts.map
@@ -0,0 +1,137 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { PlTemplateV1, PlTemplateOverrideV1, PlTemplateLibV1, PlTemplateSoftwareV1 } from '@milaboratories/pl-model-backend';
3
+ import { notEmpty } from '@milaboratories/ts-helpers';
4
+
5
+ /**
6
+ * Renders the tree of templates by caching all resource ids
7
+ * by their cache keys.
8
+ * It's different from v2 version because we provide
9
+ * the hash map of the code of all sources everywhere.
10
+ * It does a double-dispatch on the node type (template, library etc),
11
+ * and creates resources.
12
+ *
13
+ * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
14
+ * tree traversing and operations on it, but I don't have time to do it now.
15
+ */
16
+ function createTemplateV3Tree(tx, tplData) {
17
+ const resourceCache = new Map();
18
+ const createResourceCached = (resource, renderer, hashToSource) => {
19
+ const key = createHash('sha256');
20
+ renderer.updateCacheKey(resource, key, hashToSource);
21
+ const rKey = key.digest('hex');
22
+ if (!resourceCache.has(rKey)) {
23
+ const rId = renderer.render(resource, tx, createResourceCached, hashToSource);
24
+ resourceCache.set(rKey, rId);
25
+ }
26
+ return resourceCache.get(rKey);
27
+ };
28
+ return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);
29
+ }
30
+ const LibRenderer = {
31
+ updateCacheKey(resource, hash, sources) {
32
+ hash
33
+ .update(PlTemplateLibV1.type.name)
34
+ .update(PlTemplateLibV1.type.version)
35
+ .update(resource.name)
36
+ .update(resource.version)
37
+ .update(getSourceCode(resource.name, sources, resource.sourceHash));
38
+ },
39
+ render(resource, tx, _creator, sources) {
40
+ return tx.createValue(PlTemplateLibV1.type, JSON.stringify(PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
41
+ },
42
+ };
43
+ const SoftwareInfoRenderer = {
44
+ updateCacheKey(resource, hash, sources) {
45
+ hash
46
+ .update(PlTemplateSoftwareV1.type.name)
47
+ .update(PlTemplateSoftwareV1.type.version)
48
+ .update(resource.name)
49
+ .update(resource.version)
50
+ .update(getSourceCode(resource.name, sources, resource.sourceHash));
51
+ },
52
+ render(resource, tx, _creator, sources) {
53
+ const sw = PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));
54
+ const ref = tx.createStruct(PlTemplateSoftwareV1.type, sw.data);
55
+ tx.setKValue(ref, PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));
56
+ tx.lock(ref);
57
+ return ref;
58
+ },
59
+ };
60
+ const TemplateRenderer = {
61
+ updateCacheKey(resource, hash, sources) {
62
+ hash
63
+ .update(PlTemplateV1.type.name)
64
+ .update(PlTemplateV1.type.version)
65
+ .update(resource.hashOverride ?? 'no-override')
66
+ .update(resource.name)
67
+ .update(resource.version)
68
+ .update(getSourceCode(resource.name, sources, resource.sourceHash));
69
+ const srt = (entries) => {
70
+ entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));
71
+ return entries;
72
+ };
73
+ for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
74
+ hash.update('lib:' + libId);
75
+ LibRenderer.updateCacheKey(lib, hash, sources);
76
+ }
77
+ for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
78
+ hash.update('soft:' + swId);
79
+ SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
80
+ }
81
+ for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
82
+ hash.update('asset:' + swId);
83
+ SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
84
+ }
85
+ for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
86
+ hash.update('tpl:' + tplId);
87
+ this.updateCacheKey(tpl, hash, sources);
88
+ }
89
+ },
90
+ render(resource, tx, _creator, sources) {
91
+ const tplRef = tx.createStruct(PlTemplateV1.type, JSON.stringify(PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data));
92
+ // Render libraries
93
+ for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
94
+ const fld = PlTemplateV1.libField(tplRef, libId);
95
+ tx.createField(fld, 'Input');
96
+ tx.setField(fld, _creator(lib, LibRenderer, sources));
97
+ }
98
+ // Render software and assets
99
+ for (const [swId, sw] of Object.entries(resource.software ?? {})) {
100
+ const fld = PlTemplateV1.swField(tplRef, swId);
101
+ tx.createField(fld, 'Input');
102
+ tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
103
+ }
104
+ for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
105
+ const fld = PlTemplateV1.swField(tplRef, swId);
106
+ tx.createField(fld, 'Input');
107
+ tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
108
+ }
109
+ // Render dependency templates
110
+ for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
111
+ const fld = PlTemplateV1.tplField(tplRef, depTplId);
112
+ tx.createField(fld, 'Input');
113
+ tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));
114
+ }
115
+ tx.lock(tplRef);
116
+ if (!resource.hashOverride)
117
+ return tplRef;
118
+ // Override template hash with proxy resource, when hash override is configured for template
119
+ const overrideRef = tx.createStruct(PlTemplateOverrideV1.type, JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)));
120
+ const fld = PlTemplateOverrideV1.tplField(overrideRef);
121
+ tx.createField(fld, 'Service');
122
+ tx.setField(fld, tplRef);
123
+ tx.lock(overrideRef);
124
+ return overrideRef;
125
+ },
126
+ };
127
+ /**
128
+ * Gets a source code of the artifact by its source hash.
129
+ * the source hash was calculated and stored by tengo compiler
130
+ * and is different from the hash we're using for caching here.
131
+ */
132
+ function getSourceCode(name, sources, sourceHash) {
133
+ return notEmpty(sources[sourceHash], `trying to get "${name}" source: sources map doesn't contain source hash ${sourceHash}`);
134
+ }
135
+
136
+ export { createTemplateV3Tree };
137
+ //# sourceMappingURL=direct_template_loader_v3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct_template_loader_v3.js","sources":["../../../src/mutator/template/direct_template_loader_v3.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport type { Hash } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport type {\n CompiledTemplateV3,\n TemplateDataV3,\n TemplateLibDataV3,\n TemplateSoftwareDataV3,\n} from '@milaboratories/pl-model-backend';\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n} from '@milaboratories/pl-model-backend';\nimport { notEmpty } from '@milaboratories/ts-helpers';\n\n/**\n * Renders the tree of templates by caching all resource ids\n * by their cache keys.\n * It's different from v2 version because we provide\n * the hash map of the code of all sources everywhere.\n * It does a double-dispatch on the node type (template, library etc),\n * and creates resources.\n *\n * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate\n * tree traversing and operations on it, but I don't have time to do it now.\n*/\nexport function createTemplateV3Tree(tx: PlTransaction, tplData: CompiledTemplateV3): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResourceCached = <T>(resource: T, renderer: Renderer<T>, hashToSource: Record<string, string>): AnyResourceRef => {\n const key: Hash = createHash('sha256');\n renderer.updateCacheKey(resource, key, hashToSource);\n\n const rKey = key.digest('hex');\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResourceCached, hashToSource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResourceCached(tplData.template, TemplateRenderer, tplData.hashToSource);\n}\n\ntype Renderer<T> = {\n /** Updates the cache key by adding all info of the artifact. */\n updateCacheKey: CacheKey<T>;\n /** Create resources for all dependencies recursively and then for this artifact. */\n render: (resource: T, tx: PlTransaction, creator: Creator, sources: Record<string, string>) => AnyResourceRef;\n};\ntype CacheKey<T> = (resource: T, key: Hash, sources: Record<string, string>) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>, sources: Record<string, string>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n },\n render(resource, tx, _creator, sources) {\n const sw = PlTemplateSoftwareV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash));\n const ref = tx.createStruct(PlTemplateSoftwareV1.type, sw.data);\n tx.setKValue(ref, PlTemplateSoftwareV1.metaNameKey, JSON.stringify(sw.name));\n tx.lock(ref);\n return ref;\n },\n};\n\nconst TemplateRenderer: Renderer<TemplateDataV3> = {\n updateCacheKey(resource, hash, sources) {\n hash\n .update(PlTemplateV1.type.name)\n .update(PlTemplateV1.type.version)\n .update(resource.hashOverride ?? 'no-override')\n .update(resource.name)\n .update(resource.version)\n .update(getSourceCode(resource.name, sources, resource.sourceHash));\n\n const srt = <T>(entries: [string, T][]): [string, T][] => {\n entries.sort((a, b) => (a[0] === b[0] ? 0 : a[0] < b[0] ? -1 : 1));\n return entries;\n };\n\n for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {\n hash.update('lib:' + libId);\n LibRenderer.updateCacheKey(lib, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update('soft:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update('asset:' + swId);\n SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update('tpl:' + tplId);\n this.updateCacheKey(tpl, hash, sources);\n }\n },\n render(resource, tx, _creator, sources) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV3Data(resource, getSourceCode(resource.name, sources, resource.sourceHash)).data),\n );\n // Render libraries\n for (const [libId, lib] of Object.entries(resource.libs ?? {})) {\n const fld = PlTemplateV1.libField(tplRef, libId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(lib, LibRenderer, sources));\n }\n\n // Render software and assets\n for (const [swId, sw] of Object.entries(resource.software ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n for (const [swId, sw] of Object.entries(resource.assets ?? {})) {\n const fld = PlTemplateV1.swField(tplRef, swId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));\n }\n\n // Render dependency templates\n for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {\n const fld = PlTemplateV1.tplField(tplRef, depTplId);\n tx.createField(fld, 'Input');\n tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));\n }\n\n tx.lock(tplRef);\n\n if (!resource.hashOverride) return tplRef;\n\n // Override template hash with proxy resource, when hash override is configured for template\n const overrideRef = tx.createStruct(\n PlTemplateOverrideV1.type,\n JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)),\n );\n const fld = PlTemplateOverrideV1.tplField(overrideRef);\n tx.createField(fld, 'Service');\n tx.setField(fld, tplRef);\n tx.lock(overrideRef);\n return overrideRef;\n },\n};\n\n/**\n * Gets a source code of the artifact by its source hash.\n * the source hash was calculated and stored by tengo compiler\n * and is different from the hash we're using for caching here.\n */\nfunction getSourceCode(name: string, sources: Record<string, string>, sourceHash: string): string {\n return notEmpty(\n sources[sourceHash],\n `trying to get \"${name}\" source: sources map doesn't contain source hash ${sourceHash}`,\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+
3
+ var plClient = require('@milaboratories/pl-client');
4
+ var node_crypto = require('node:crypto');
5
+ var render_template = require('./render_template.cjs');
6
+
7
+ const BContextEnd = { name: 'BContextEnd', version: '1' };
8
+ const BContext = { name: 'BContext', version: '1' };
9
+ const BContextId = 'id';
10
+ const BContextMultiParentPrefix = 'parent/';
11
+ const HeavyBlockOutputNames = ['context', 'result'];
12
+ function createRenderHeavyBlock(tx, tpl, inputs) {
13
+ return render_template.createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);
14
+ }
15
+ function createBContextEnd(tx) {
16
+ const ctx = tx.createEphemeral(BContextEnd);
17
+ tx.lock(ctx);
18
+ return ctx;
19
+ }
20
+ function createBContextFromUpstreams(tx, upstreamCtxs) {
21
+ if (upstreamCtxs.length === 0)
22
+ return createBContextEnd(tx);
23
+ if (upstreamCtxs.length === 1)
24
+ return upstreamCtxs[0];
25
+ const ctx = tx.createEphemeral(BContext);
26
+ // setting id
27
+ tx.createField(plClient.field(ctx, BContextId), 'Input', plClient.Pl.createPlString(tx, node_crypto.randomUUID()));
28
+ // setting parents
29
+ for (let i = 0; i < upstreamCtxs.length; i++)
30
+ tx.createField(plClient.field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);
31
+ tx.lock(ctx);
32
+ return ctx;
33
+ }
34
+
35
+ exports.BContext = BContext;
36
+ exports.BContextEnd = BContextEnd;
37
+ exports.BContextId = BContextId;
38
+ exports.BContextMultiParentPrefix = BContextMultiParentPrefix;
39
+ exports.HeavyBlockOutputNames = HeavyBlockOutputNames;
40
+ exports.createBContextEnd = createBContextEnd;
41
+ exports.createBContextFromUpstreams = createBContextFromUpstreams;
42
+ exports.createRenderHeavyBlock = createRenderHeavyBlock;
43
+ //# sourceMappingURL=render_block.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_block.cjs","sources":["../../../src/mutator/template/render_block.ts"],"sourcesContent":["import type {\n AnyRef,\n PlTransaction,\n ResourceRef,\n ResourceType } from '@milaboratories/pl-client';\nimport {\n field,\n Pl,\n} from '@milaboratories/pl-client';\nimport { randomUUID } from 'node:crypto';\nimport { createRenderTemplate } from './render_template';\n\nexport const BContextEnd: ResourceType = { name: 'BContextEnd', version: '1' };\nexport const BContext: ResourceType = { name: 'BContext', version: '1' };\nexport const BContextId = 'id';\nexport const BContextParent = 'parent';\nexport const BContextMultiParentPrefix = 'parent/';\n\n// TODO: add implementation for dual context heavy block.\n// export type BlockType =\n// | 'LightBlock'\n// | 'HeavyBlock'\n// | 'DualContextHeavyBlock';\n// moved to project model ==>>>\n\nexport type HeavyBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n isProduction: AnyRef;\n context: AnyRef;\n};\n\nexport type HeavyBlockOutputs = {\n context: AnyRef;\n result: AnyRef;\n};\n\nexport const HeavyBlockOutputNames: (keyof HeavyBlockOutputs)[] = ['context', 'result'];\n\nexport function createRenderHeavyBlock(\n tx: PlTransaction,\n tpl: AnyRef,\n inputs: HeavyBlockInputs,\n): HeavyBlockOutputs {\n return createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);\n}\n\nexport type LightBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n stagingContext: AnyRef;\n productionContext: AnyRef;\n};\n\nexport type LightBlockOutput = {\n result: AnyRef;\n};\n\nexport const LightBlockOutputNames: (keyof LightBlockOutput)[] = ['result'];\n\nexport function createRenderLightBlock(\n tx: PlTransaction,\n tpl: ResourceRef,\n inputs: LightBlockInputs,\n): LightBlockOutput {\n return createRenderTemplate(tx, tpl, true, inputs, LightBlockOutputNames);\n}\n\nexport function createBContextEnd(tx: PlTransaction): ResourceRef {\n const ctx = tx.createEphemeral(BContextEnd);\n tx.lock(ctx);\n return ctx;\n}\n\nexport function createBContextFromUpstreams(tx: PlTransaction, upstreamCtxs: AnyRef[]): AnyRef {\n if (upstreamCtxs.length === 0) return createBContextEnd(tx);\n\n if (upstreamCtxs.length === 1) return upstreamCtxs[0];\n\n const ctx = tx.createEphemeral(BContext);\n\n // setting id\n tx.createField(field(ctx, BContextId), 'Input', Pl.createPlString(tx, randomUUID()));\n\n // setting parents\n for (let i = 0; i < upstreamCtxs.length; i++)\n tx.createField(field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);\n\n tx.lock(ctx);\n\n return ctx;\n}\n"],"names":["createRenderTemplate","field","Pl","randomUUID"],"mappings":";;;;;;AAYO,MAAM,WAAW,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG;AACrE,MAAM,QAAQ,GAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG;AAC/D,MAAM,UAAU,GAAG;AAEnB,MAAM,yBAAyB,GAAG;MAqB5B,qBAAqB,GAAgC,CAAC,SAAS,EAAE,QAAQ;SAEtE,sBAAsB,CACpC,EAAiB,EACjB,GAAW,EACX,MAAwB,EAAA;AAExB,IAAA,OAAOA,oCAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC;AAC3E;AAuBM,SAAU,iBAAiB,CAAC,EAAiB,EAAA;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC;AAC3C,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,2BAA2B,CAAC,EAAiB,EAAE,YAAsB,EAAA;AACnF,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,iBAAiB,CAAC,EAAE,CAAC;AAE3D,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;;IAGxC,EAAE,CAAC,WAAW,CAACC,cAAK,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,EAAEC,WAAE,CAAC,cAAc,CAAC,EAAE,EAAEC,sBAAU,EAAE,CAAC,CAAC;;AAGpF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;QAC1C,EAAE,CAAC,WAAW,CAACF,cAAK,CAAC,GAAG,EAAE,GAAG,yBAAyB,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAE1F,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAEZ,IAAA,OAAO,GAAG;AACZ;;;;;;;;;;;"}
@@ -29,4 +29,3 @@ export declare const LightBlockOutputNames: (keyof LightBlockOutput)[];
29
29
  export declare function createRenderLightBlock(tx: PlTransaction, tpl: ResourceRef, inputs: LightBlockInputs): LightBlockOutput;
30
30
  export declare function createBContextEnd(tx: PlTransaction): ResourceRef;
31
31
  export declare function createBContextFromUpstreams(tx: PlTransaction, upstreamCtxs: AnyRef[]): AnyRef;
32
- //# sourceMappingURL=render_block.d.ts.map
@@ -0,0 +1,34 @@
1
+ import { field, Pl } from '@milaboratories/pl-client';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { createRenderTemplate } from './render_template.js';
4
+
5
+ const BContextEnd = { name: 'BContextEnd', version: '1' };
6
+ const BContext = { name: 'BContext', version: '1' };
7
+ const BContextId = 'id';
8
+ const BContextMultiParentPrefix = 'parent/';
9
+ const HeavyBlockOutputNames = ['context', 'result'];
10
+ function createRenderHeavyBlock(tx, tpl, inputs) {
11
+ return createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);
12
+ }
13
+ function createBContextEnd(tx) {
14
+ const ctx = tx.createEphemeral(BContextEnd);
15
+ tx.lock(ctx);
16
+ return ctx;
17
+ }
18
+ function createBContextFromUpstreams(tx, upstreamCtxs) {
19
+ if (upstreamCtxs.length === 0)
20
+ return createBContextEnd(tx);
21
+ if (upstreamCtxs.length === 1)
22
+ return upstreamCtxs[0];
23
+ const ctx = tx.createEphemeral(BContext);
24
+ // setting id
25
+ tx.createField(field(ctx, BContextId), 'Input', Pl.createPlString(tx, randomUUID()));
26
+ // setting parents
27
+ for (let i = 0; i < upstreamCtxs.length; i++)
28
+ tx.createField(field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);
29
+ tx.lock(ctx);
30
+ return ctx;
31
+ }
32
+
33
+ export { BContext, BContextEnd, BContextId, BContextMultiParentPrefix, HeavyBlockOutputNames, createBContextEnd, createBContextFromUpstreams, createRenderHeavyBlock };
34
+ //# sourceMappingURL=render_block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_block.js","sources":["../../../src/mutator/template/render_block.ts"],"sourcesContent":["import type {\n AnyRef,\n PlTransaction,\n ResourceRef,\n ResourceType } from '@milaboratories/pl-client';\nimport {\n field,\n Pl,\n} from '@milaboratories/pl-client';\nimport { randomUUID } from 'node:crypto';\nimport { createRenderTemplate } from './render_template';\n\nexport const BContextEnd: ResourceType = { name: 'BContextEnd', version: '1' };\nexport const BContext: ResourceType = { name: 'BContext', version: '1' };\nexport const BContextId = 'id';\nexport const BContextParent = 'parent';\nexport const BContextMultiParentPrefix = 'parent/';\n\n// TODO: add implementation for dual context heavy block.\n// export type BlockType =\n// | 'LightBlock'\n// | 'HeavyBlock'\n// | 'DualContextHeavyBlock';\n// moved to project model ==>>>\n\nexport type HeavyBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n isProduction: AnyRef;\n context: AnyRef;\n};\n\nexport type HeavyBlockOutputs = {\n context: AnyRef;\n result: AnyRef;\n};\n\nexport const HeavyBlockOutputNames: (keyof HeavyBlockOutputs)[] = ['context', 'result'];\n\nexport function createRenderHeavyBlock(\n tx: PlTransaction,\n tpl: AnyRef,\n inputs: HeavyBlockInputs,\n): HeavyBlockOutputs {\n return createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);\n}\n\nexport type LightBlockInputs = {\n args: AnyRef;\n blockId: AnyRef;\n stagingContext: AnyRef;\n productionContext: AnyRef;\n};\n\nexport type LightBlockOutput = {\n result: AnyRef;\n};\n\nexport const LightBlockOutputNames: (keyof LightBlockOutput)[] = ['result'];\n\nexport function createRenderLightBlock(\n tx: PlTransaction,\n tpl: ResourceRef,\n inputs: LightBlockInputs,\n): LightBlockOutput {\n return createRenderTemplate(tx, tpl, true, inputs, LightBlockOutputNames);\n}\n\nexport function createBContextEnd(tx: PlTransaction): ResourceRef {\n const ctx = tx.createEphemeral(BContextEnd);\n tx.lock(ctx);\n return ctx;\n}\n\nexport function createBContextFromUpstreams(tx: PlTransaction, upstreamCtxs: AnyRef[]): AnyRef {\n if (upstreamCtxs.length === 0) return createBContextEnd(tx);\n\n if (upstreamCtxs.length === 1) return upstreamCtxs[0];\n\n const ctx = tx.createEphemeral(BContext);\n\n // setting id\n tx.createField(field(ctx, BContextId), 'Input', Pl.createPlString(tx, randomUUID()));\n\n // setting parents\n for (let i = 0; i < upstreamCtxs.length; i++)\n tx.createField(field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);\n\n tx.lock(ctx);\n\n return ctx;\n}\n"],"names":[],"mappings":";;;;AAYO,MAAM,WAAW,GAAiB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG;AACrE,MAAM,QAAQ,GAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG;AAC/D,MAAM,UAAU,GAAG;AAEnB,MAAM,yBAAyB,GAAG;MAqB5B,qBAAqB,GAAgC,CAAC,SAAS,EAAE,QAAQ;SAEtE,sBAAsB,CACpC,EAAiB,EACjB,GAAW,EACX,MAAwB,EAAA;AAExB,IAAA,OAAO,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC;AAC3E;AAuBM,SAAU,iBAAiB,CAAC,EAAiB,EAAA;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,WAAW,CAAC;AAC3C,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AACZ,IAAA,OAAO,GAAG;AACZ;AAEM,SAAU,2BAA2B,CAAC,EAAiB,EAAE,YAAsB,EAAA;AACnF,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,iBAAiB,CAAC,EAAE,CAAC;AAE3D,IAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC;IAErD,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;;IAGxC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;;AAGpF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE;QAC1C,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,yBAAyB,CAAA,EAAG,CAAC,CAAA,CAAE,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;AAE1F,IAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAEZ,IAAA,OAAO,GAAG;AACZ;;;;"}
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ var plClient = require('@milaboratories/pl-client');
4
+
5
+ const EphRenderTemplate = {
6
+ name: 'EphRenderTemplate',
7
+ version: '1',
8
+ };
9
+ const RenderTemplate = {
10
+ name: 'RenderTemplate',
11
+ version: '1',
12
+ };
13
+ /**
14
+ * Creates render template operation, for a given remplate and inputs.
15
+ *
16
+ * @param tx transaction to use during rendering creation
17
+ * @param tpl reference to the template resource (see {@link loadTemplate})
18
+ * @param ephemeral true for ephemeral templates, false for pure templates
19
+ * @param inputs map of inputs pointing to other resources or fields
20
+ * @param outputNames names of the outputs to collect and return from this method
21
+ */
22
+ function createRenderTemplate(tx, tpl, ephemeral, inputs, outputNames) {
23
+ if (outputNames.length === 0)
24
+ throw new Error('Zero output names provided');
25
+ const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);
26
+ const tplField = plClient.field(rId, 'template');
27
+ const inputsField = plClient.field(rId, 'inputs');
28
+ tx.createField(tplField, 'Input', tpl);
29
+ tx.createField(inputsField, 'Input', plClient.Pl.createPlMap(tx, inputs, ephemeral));
30
+ tx.lockInputs(rId);
31
+ return plClient.Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');
32
+ }
33
+
34
+ exports.createRenderTemplate = createRenderTemplate;
35
+ //# sourceMappingURL=render_template.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_template.cjs","sources":["../../../src/mutator/template/render_template.ts"],"sourcesContent":["import type { AnyRef, FieldRef, PlTransaction } from '@milaboratories/pl-client';\nimport { field, Pl } from '@milaboratories/pl-client';\nimport type { ResourceType } from '@platforma-sdk/model';\n\nconst EphRenderTemplate: ResourceType = {\n name: 'EphRenderTemplate',\n version: '1',\n};\nconst RenderTemplate: ResourceType = {\n name: 'RenderTemplate',\n version: '1',\n};\n\n/**\n * Creates render template operation, for a given remplate and inputs.\n *\n * @param tx transaction to use during rendering creation\n * @param tpl reference to the template resource (see {@link loadTemplate})\n * @param ephemeral true for ephemeral templates, false for pure templates\n * @param inputs map of inputs pointing to other resources or fields\n * @param outputNames names of the outputs to collect and return from this method\n */\nexport function createRenderTemplate<O extends string>(\n tx: PlTransaction,\n tpl: AnyRef,\n ephemeral: boolean,\n inputs: Pl.PlRecord,\n outputNames: O[],\n): Record<O, FieldRef> {\n if (outputNames.length === 0) throw new Error('Zero output names provided');\n const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);\n\n const tplField = field(rId, 'template');\n const inputsField = field(rId, 'inputs');\n\n tx.createField(tplField, 'Input', tpl);\n tx.createField(inputsField, 'Input', Pl.createPlMap(tx, inputs, ephemeral));\n tx.lockInputs(rId);\n\n return Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');\n}\n"],"names":["field","Pl"],"mappings":";;;;AAIA,MAAM,iBAAiB,GAAiB;AACtC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,OAAO,EAAE,GAAG;CACb;AACD,MAAM,cAAc,GAAiB;AACnC,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,OAAO,EAAE,GAAG;CACb;AAED;;;;;;;;AAQG;AACG,SAAU,oBAAoB,CAClC,EAAiB,EACjB,GAAW,EACX,SAAkB,EAClB,MAAmB,EACnB,WAAgB,EAAA;AAEhB,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC3E,MAAM,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;IAE/F,MAAM,QAAQ,GAAGA,cAAK,CAAC,GAAG,EAAE,UAAU,CAAC;IACvC,MAAM,WAAW,GAAGA,cAAK,CAAC,GAAG,EAAE,QAAQ,CAAC;IAExC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC;AACtC,IAAA,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAEC,WAAE,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAA,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;AAElB,IAAA,OAAOA,WAAE,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;AACpE;;;;"}
@@ -9,4 +9,3 @@ import { AnyRef, FieldRef, PlTransaction, Pl } from '@milaboratories/pl-client';
9
9
  * @param outputNames names of the outputs to collect and return from this method
10
10
  */
11
11
  export declare function createRenderTemplate<O extends string>(tx: PlTransaction, tpl: AnyRef, ephemeral: boolean, inputs: Pl.PlRecord, outputNames: O[]): Record<O, FieldRef>;
12
- //# sourceMappingURL=render_template.d.ts.map
@@ -0,0 +1,33 @@
1
+ import { field, Pl } from '@milaboratories/pl-client';
2
+
3
+ const EphRenderTemplate = {
4
+ name: 'EphRenderTemplate',
5
+ version: '1',
6
+ };
7
+ const RenderTemplate = {
8
+ name: 'RenderTemplate',
9
+ version: '1',
10
+ };
11
+ /**
12
+ * Creates render template operation, for a given remplate and inputs.
13
+ *
14
+ * @param tx transaction to use during rendering creation
15
+ * @param tpl reference to the template resource (see {@link loadTemplate})
16
+ * @param ephemeral true for ephemeral templates, false for pure templates
17
+ * @param inputs map of inputs pointing to other resources or fields
18
+ * @param outputNames names of the outputs to collect and return from this method
19
+ */
20
+ function createRenderTemplate(tx, tpl, ephemeral, inputs, outputNames) {
21
+ if (outputNames.length === 0)
22
+ throw new Error('Zero output names provided');
23
+ const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);
24
+ const tplField = field(rId, 'template');
25
+ const inputsField = field(rId, 'inputs');
26
+ tx.createField(tplField, 'Input', tpl);
27
+ tx.createField(inputsField, 'Input', Pl.createPlMap(tx, inputs, ephemeral));
28
+ tx.lockInputs(rId);
29
+ return Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');
30
+ }
31
+
32
+ export { createRenderTemplate };
33
+ //# sourceMappingURL=render_template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render_template.js","sources":["../../../src/mutator/template/render_template.ts"],"sourcesContent":["import type { AnyRef, FieldRef, PlTransaction } from '@milaboratories/pl-client';\nimport { field, Pl } from '@milaboratories/pl-client';\nimport type { ResourceType } from '@platforma-sdk/model';\n\nconst EphRenderTemplate: ResourceType = {\n name: 'EphRenderTemplate',\n version: '1',\n};\nconst RenderTemplate: ResourceType = {\n name: 'RenderTemplate',\n version: '1',\n};\n\n/**\n * Creates render template operation, for a given remplate and inputs.\n *\n * @param tx transaction to use during rendering creation\n * @param tpl reference to the template resource (see {@link loadTemplate})\n * @param ephemeral true for ephemeral templates, false for pure templates\n * @param inputs map of inputs pointing to other resources or fields\n * @param outputNames names of the outputs to collect and return from this method\n */\nexport function createRenderTemplate<O extends string>(\n tx: PlTransaction,\n tpl: AnyRef,\n ephemeral: boolean,\n inputs: Pl.PlRecord,\n outputNames: O[],\n): Record<O, FieldRef> {\n if (outputNames.length === 0) throw new Error('Zero output names provided');\n const rId = ephemeral ? tx.createEphemeral(EphRenderTemplate) : tx.createStruct(RenderTemplate);\n\n const tplField = field(rId, 'template');\n const inputsField = field(rId, 'inputs');\n\n tx.createField(tplField, 'Input', tpl);\n tx.createField(inputsField, 'Input', Pl.createPlMap(tx, inputs, ephemeral));\n tx.lockInputs(rId);\n\n return Pl.futureRecord(tx, rId, outputNames, 'Output', 'outputs/');\n}\n"],"names":[],"mappings":";;AAIA,MAAM,iBAAiB,GAAiB;AACtC,IAAA,IAAI,EAAE,mBAAmB;AACzB,IAAA,OAAO,EAAE,GAAG;CACb;AACD,MAAM,cAAc,GAAiB;AACnC,IAAA,IAAI,EAAE,gBAAgB;AACtB,IAAA,OAAO,EAAE,GAAG;CACb;AAED;;;;;;;;AAQG;AACG,SAAU,oBAAoB,CAClC,EAAiB,EACjB,GAAW,EACX,SAAkB,EAClB,MAAmB,EACnB,WAAgB,EAAA;AAEhB,IAAA,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC;IAC3E,MAAM,GAAG,GAAG,SAAS,GAAG,EAAE,CAAC,eAAe,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC;IAE/F,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC;IACvC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC;IAExC,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC;AACtC,IAAA,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AAC3E,IAAA,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;AAElB,IAAA,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC;AACpE;;;;"}
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ var plClient = require('@milaboratories/pl-client');
4
+ var fs = require('node:fs');
5
+ var tsHelpers = require('@milaboratories/ts-helpers');
6
+ var direct_template_loader = require('./direct_template_loader.cjs');
7
+
8
+ //
9
+ // Resource schema
10
+ //
11
+ const TengoTemplateGet = { name: 'TengoTemplateGet', version: '1' };
12
+ const TengoTemplateGetRegistry = 'registry';
13
+ const TengoTemplateGetTemplateURI = 'templateURI';
14
+ const TengoTemplateGetTemplate = 'template';
15
+ const TengoTemplatePack = { name: 'TengoTemplatePack', version: '1' };
16
+ const TengoTemplatePackConvert = {
17
+ name: 'TengoTemplatePackConvert',
18
+ version: '1',
19
+ };
20
+ const TengoTemplatePackConvertTemplatePack = 'templatePack';
21
+ const TengoTemplatePackConvertTemplate = 'template';
22
+ async function prepareTemplateSpec(tpl) {
23
+ switch (tpl.type) {
24
+ case 'from-file':
25
+ return {
26
+ type: 'explicit',
27
+ content: await fs.promises.readFile(tpl.path),
28
+ };
29
+ case 'from-registry':
30
+ case 'explicit':
31
+ return tpl;
32
+ case 'prepared':
33
+ return tpl;
34
+ default:
35
+ return tsHelpers.assertNever(tpl);
36
+ }
37
+ }
38
+ function loadTemplateFromRegistry(tx, spec) {
39
+ const getTemplate = tx.createStruct(TengoTemplateGet);
40
+ const registry = plClient.field(getTemplate, TengoTemplateGetRegistry);
41
+ const uri = plClient.field(getTemplate, TengoTemplateGetTemplateURI);
42
+ const templateFromRegistry = plClient.field(getTemplate, TengoTemplateGetTemplate);
43
+ // Note: it has a resource schema, so platforma creates fields by itself.
44
+ tx.setField(registry, tx.createValue(plClient.Pl.JsonString, Buffer.from(JSON.stringify(spec.registry))));
45
+ tx.setField(uri, tx.createValue(plClient.Pl.JsonString, Buffer.from(JSON.stringify(spec.path))));
46
+ return templateFromRegistry;
47
+ }
48
+ function loadTemplate(tx, spec) {
49
+ switch (spec.type) {
50
+ case 'from-registry':
51
+ return loadTemplateFromRegistry(tx, spec);
52
+ case 'explicit':
53
+ return direct_template_loader.loadTemplateFromExplicitDirect(tx, spec);
54
+ case 'prepared':
55
+ return direct_template_loader.loadTemplateFromPrepared(tx, spec);
56
+ default:
57
+ return tsHelpers.assertNever(spec);
58
+ }
59
+ }
60
+
61
+ exports.TengoTemplateGet = TengoTemplateGet;
62
+ exports.TengoTemplateGetRegistry = TengoTemplateGetRegistry;
63
+ exports.TengoTemplateGetTemplate = TengoTemplateGetTemplate;
64
+ exports.TengoTemplateGetTemplateURI = TengoTemplateGetTemplateURI;
65
+ exports.TengoTemplatePack = TengoTemplatePack;
66
+ exports.TengoTemplatePackConvert = TengoTemplatePackConvert;
67
+ exports.TengoTemplatePackConvertTemplate = TengoTemplatePackConvertTemplate;
68
+ exports.TengoTemplatePackConvertTemplatePack = TengoTemplatePackConvertTemplatePack;
69
+ exports.loadTemplate = loadTemplate;
70
+ exports.prepareTemplateSpec = prepareTemplateSpec;
71
+ //# sourceMappingURL=template_loading.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template_loading.cjs","sources":["../../../src/mutator/template/template_loading.ts"],"sourcesContent":["import type { AnyRef, PlTransaction, ResourceType } from '@milaboratories/pl-client';\nimport { field, Pl } from '@milaboratories/pl-client';\nimport fs from 'node:fs';\nimport type {\n TemplateFromRegistry,\n TemplateSpecAny,\n TemplateSpecPrepared,\n} from '../../model/template_spec';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport { loadTemplateFromExplicitDirect, loadTemplateFromPrepared } from './direct_template_loader';\n\n//\n// Resource schema\n//\n\nexport const TengoTemplateGet: ResourceType = { name: 'TengoTemplateGet', version: '1' };\nexport const TengoTemplateGetRegistry = 'registry';\nexport const TengoTemplateGetTemplateURI = 'templateURI';\nexport const TengoTemplateGetTemplate = 'template';\n\nexport const TengoTemplatePack: ResourceType = { name: 'TengoTemplatePack', version: '1' };\nexport const TengoTemplatePackConvert: ResourceType = {\n name: 'TengoTemplatePackConvert',\n version: '1',\n};\nexport const TengoTemplatePackConvertTemplatePack = 'templatePack';\nexport const TengoTemplatePackConvertTemplate = 'template';\n\nexport async function prepareTemplateSpec(tpl: TemplateSpecAny): Promise<TemplateSpecPrepared> {\n switch (tpl.type) {\n case 'from-file':\n return {\n type: 'explicit',\n content: await fs.promises.readFile(tpl.path),\n };\n case 'from-registry':\n case 'explicit':\n return tpl;\n case 'prepared':\n return tpl;\n default:\n return assertNever(tpl);\n }\n}\n\nfunction loadTemplateFromRegistry(tx: PlTransaction, spec: TemplateFromRegistry): AnyRef {\n const getTemplate = tx.createStruct(TengoTemplateGet);\n const registry = field(getTemplate, TengoTemplateGetRegistry);\n const uri = field(getTemplate, TengoTemplateGetTemplateURI);\n const templateFromRegistry = field(getTemplate, TengoTemplateGetTemplate);\n\n // Note: it has a resource schema, so platforma creates fields by itself.\n\n tx.setField(registry, tx.createValue(Pl.JsonString, Buffer.from(JSON.stringify(spec.registry))));\n tx.setField(uri, tx.createValue(Pl.JsonString, Buffer.from(JSON.stringify(spec.path))));\n\n return templateFromRegistry;\n}\n\nexport function loadTemplate(tx: PlTransaction, spec: TemplateSpecPrepared): AnyRef {\n switch (spec.type) {\n case 'from-registry':\n return loadTemplateFromRegistry(tx, spec);\n case 'explicit':\n return loadTemplateFromExplicitDirect(tx, spec);\n case 'prepared':\n return loadTemplateFromPrepared(tx, spec);\n default:\n return assertNever(spec);\n }\n}\n"],"names":["assertNever","field","Pl","loadTemplateFromExplicitDirect","loadTemplateFromPrepared"],"mappings":";;;;;;;AAWA;AACA;AACA;AAEO,MAAM,gBAAgB,GAAiB,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG;AAC/E,MAAM,wBAAwB,GAAG;AACjC,MAAM,2BAA2B,GAAG;AACpC,MAAM,wBAAwB,GAAG;AAEjC,MAAM,iBAAiB,GAAiB,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG;AACjF,MAAM,wBAAwB,GAAiB;AACpD,IAAA,IAAI,EAAE,0BAA0B;AAChC,IAAA,OAAO,EAAE,GAAG;;AAEP,MAAM,oCAAoC,GAAG;AAC7C,MAAM,gCAAgC,GAAG;AAEzC,eAAe,mBAAmB,CAAC,GAAoB,EAAA;AAC5D,IAAA,QAAQ,GAAG,CAAC,IAAI;AACd,QAAA,KAAK,WAAW;YACd,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;aAC9C;AACH,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,GAAG;AACZ,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,GAAG;AACZ,QAAA;AACE,YAAA,OAAOA,qBAAW,CAAC,GAAG,CAAC;;AAE7B;AAEA,SAAS,wBAAwB,CAAC,EAAiB,EAAE,IAA0B,EAAA;IAC7E,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC;IACrD,MAAM,QAAQ,GAAGC,cAAK,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC7D,MAAM,GAAG,GAAGA,cAAK,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAC3D,MAAM,oBAAoB,GAAGA,cAAK,CAAC,WAAW,EAAE,wBAAwB,CAAC;;AAIzE,IAAA,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAACC,WAAE,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChG,IAAA,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAACA,WAAE,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEvF,IAAA,OAAO,oBAAoB;AAC7B;AAEM,SAAU,YAAY,CAAC,EAAiB,EAAE,IAA0B,EAAA;AACxE,IAAA,QAAQ,IAAI,CAAC,IAAI;AACf,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3C,QAAA,KAAK,UAAU;AACb,YAAA,OAAOC,qDAA8B,CAAC,EAAE,EAAE,IAAI,CAAC;AACjD,QAAA,KAAK,UAAU;AACb,YAAA,OAAOC,+CAAwB,CAAC,EAAE,EAAE,IAAI,CAAC;AAC3C,QAAA;AACE,YAAA,OAAOJ,qBAAW,CAAC,IAAI,CAAC;;AAE9B;;;;;;;;;;;;;"}
@@ -10,4 +10,3 @@ export declare const TengoTemplatePackConvertTemplatePack = "templatePack";
10
10
  export declare const TengoTemplatePackConvertTemplate = "template";
11
11
  export declare function prepareTemplateSpec(tpl: TemplateSpecAny): Promise<TemplateSpecPrepared>;
12
12
  export declare function loadTemplate(tx: PlTransaction, spec: TemplateSpecPrepared): AnyRef;
13
- //# sourceMappingURL=template_loading.d.ts.map