@milaboratories/pl-middle-layer 1.46.20 → 1.46.22

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 (402) hide show
  1. package/dist/block_registry/index.d.ts +3 -3
  2. package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
  3. package/dist/block_registry/registry-v2-provider.d.ts +2 -2
  4. package/dist/block_registry/registry-v2-provider.js.map +1 -1
  5. package/dist/block_registry/registry.cjs +54 -53
  6. package/dist/block_registry/registry.cjs.map +1 -1
  7. package/dist/block_registry/registry.d.ts +4 -4
  8. package/dist/block_registry/registry.d.ts.map +1 -1
  9. package/dist/block_registry/registry.js +54 -53
  10. package/dist/block_registry/registry.js.map +1 -1
  11. package/dist/block_registry/watcher.cjs +12 -12
  12. package/dist/block_registry/watcher.cjs.map +1 -1
  13. package/dist/block_registry/watcher.d.ts +6 -6
  14. package/dist/block_registry/watcher.d.ts.map +1 -1
  15. package/dist/block_registry/watcher.js +12 -12
  16. package/dist/block_registry/watcher.js.map +1 -1
  17. package/dist/block_registry/well_known_registries.cjs +6 -6
  18. package/dist/block_registry/well_known_registries.cjs.map +1 -1
  19. package/dist/block_registry/well_known_registries.d.ts +1 -1
  20. package/dist/block_registry/well_known_registries.js +6 -6
  21. package/dist/block_registry/well_known_registries.js.map +1 -1
  22. package/dist/cfg_render/executor.cjs +11 -11
  23. package/dist/cfg_render/executor.cjs.map +1 -1
  24. package/dist/cfg_render/executor.d.ts +5 -5
  25. package/dist/cfg_render/executor.js +11 -11
  26. package/dist/cfg_render/executor.js.map +1 -1
  27. package/dist/cfg_render/operation.d.ts +5 -5
  28. package/dist/cfg_render/renderer.cjs +74 -75
  29. package/dist/cfg_render/renderer.cjs.map +1 -1
  30. package/dist/cfg_render/renderer.d.ts +2 -2
  31. package/dist/cfg_render/renderer.d.ts.map +1 -1
  32. package/dist/cfg_render/renderer.js +74 -75
  33. package/dist/cfg_render/renderer.js.map +1 -1
  34. package/dist/cfg_render/traverse.cjs +27 -27
  35. package/dist/cfg_render/traverse.cjs.map +1 -1
  36. package/dist/cfg_render/traverse.d.ts +1 -1
  37. package/dist/cfg_render/traverse.js +27 -27
  38. package/dist/cfg_render/traverse.js.map +1 -1
  39. package/dist/cfg_render/util.cjs +1 -1
  40. package/dist/cfg_render/util.cjs.map +1 -1
  41. package/dist/cfg_render/util.d.ts +1 -1
  42. package/dist/cfg_render/util.js +1 -1
  43. package/dist/cfg_render/util.js.map +1 -1
  44. package/dist/debug/index.cjs +4 -2
  45. package/dist/debug/index.cjs.map +1 -1
  46. package/dist/debug/index.d.ts +2 -2
  47. package/dist/debug/index.d.ts.map +1 -1
  48. package/dist/debug/index.js +4 -2
  49. package/dist/debug/index.js.map +1 -1
  50. package/dist/dev_env/index.cjs +8 -8
  51. package/dist/dev_env/index.cjs.map +1 -1
  52. package/dist/dev_env/index.js +8 -8
  53. package/dist/dev_env/index.js.map +1 -1
  54. package/dist/dev_env/util.cjs +1 -1
  55. package/dist/dev_env/util.cjs.map +1 -1
  56. package/dist/dev_env/util.d.ts +1 -1
  57. package/dist/dev_env/util.js +1 -1
  58. package/dist/dev_env/util.js.map +1 -1
  59. package/dist/index.d.ts +16 -16
  60. package/dist/js_render/computable_context.cjs +78 -78
  61. package/dist/js_render/computable_context.cjs.map +1 -1
  62. package/dist/js_render/computable_context.d.ts +9 -9
  63. package/dist/js_render/computable_context.d.ts.map +1 -1
  64. package/dist/js_render/computable_context.js +78 -78
  65. package/dist/js_render/computable_context.js.map +1 -1
  66. package/dist/js_render/context.cjs +33 -27
  67. package/dist/js_render/context.cjs.map +1 -1
  68. package/dist/js_render/context.d.ts +7 -7
  69. package/dist/js_render/context.d.ts.map +1 -1
  70. package/dist/js_render/context.js +33 -27
  71. package/dist/js_render/context.js.map +1 -1
  72. package/dist/js_render/index.cjs +10 -6
  73. package/dist/js_render/index.cjs.map +1 -1
  74. package/dist/js_render/index.d.ts +6 -6
  75. package/dist/js_render/index.d.ts.map +1 -1
  76. package/dist/js_render/index.js +10 -6
  77. package/dist/js_render/index.js.map +1 -1
  78. package/dist/middle_layer/active_cfg.cjs.map +1 -1
  79. package/dist/middle_layer/active_cfg.d.ts +3 -3
  80. package/dist/middle_layer/active_cfg.d.ts.map +1 -1
  81. package/dist/middle_layer/active_cfg.js.map +1 -1
  82. package/dist/middle_layer/block.cjs +1 -1
  83. package/dist/middle_layer/block.cjs.map +1 -1
  84. package/dist/middle_layer/block.d.ts +6 -6
  85. package/dist/middle_layer/block.d.ts.map +1 -1
  86. package/dist/middle_layer/block.js +1 -1
  87. package/dist/middle_layer/block.js.map +1 -1
  88. package/dist/middle_layer/block_ctx.cjs +9 -9
  89. package/dist/middle_layer/block_ctx.cjs.map +1 -1
  90. package/dist/middle_layer/block_ctx.d.ts +6 -6
  91. package/dist/middle_layer/block_ctx.d.ts.map +1 -1
  92. package/dist/middle_layer/block_ctx.js +9 -9
  93. package/dist/middle_layer/block_ctx.js.map +1 -1
  94. package/dist/middle_layer/block_ctx_unsafe.cjs +1 -1
  95. package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
  96. package/dist/middle_layer/block_ctx_unsafe.d.ts +5 -5
  97. package/dist/middle_layer/block_ctx_unsafe.js +1 -1
  98. package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
  99. package/dist/middle_layer/driver_kit.cjs +1 -2
  100. package/dist/middle_layer/driver_kit.cjs.map +1 -1
  101. package/dist/middle_layer/driver_kit.d.ts +7 -7
  102. package/dist/middle_layer/driver_kit.d.ts.map +1 -1
  103. package/dist/middle_layer/driver_kit.js +1 -2
  104. package/dist/middle_layer/driver_kit.js.map +1 -1
  105. package/dist/middle_layer/frontend_path.cjs +5 -5
  106. package/dist/middle_layer/frontend_path.cjs.map +1 -1
  107. package/dist/middle_layer/frontend_path.d.ts +4 -4
  108. package/dist/middle_layer/frontend_path.d.ts.map +1 -1
  109. package/dist/middle_layer/frontend_path.js +5 -5
  110. package/dist/middle_layer/frontend_path.js.map +1 -1
  111. package/dist/middle_layer/index.d.ts +4 -4
  112. package/dist/middle_layer/middle_layer.cjs +11 -11
  113. package/dist/middle_layer/middle_layer.cjs.map +1 -1
  114. package/dist/middle_layer/middle_layer.d.ts +18 -18
  115. package/dist/middle_layer/middle_layer.d.ts.map +1 -1
  116. package/dist/middle_layer/middle_layer.js +11 -11
  117. package/dist/middle_layer/middle_layer.js.map +1 -1
  118. package/dist/middle_layer/navigation_states.cjs +2 -2
  119. package/dist/middle_layer/navigation_states.cjs.map +1 -1
  120. package/dist/middle_layer/navigation_states.d.ts +2 -2
  121. package/dist/middle_layer/navigation_states.js +2 -2
  122. package/dist/middle_layer/navigation_states.js.map +1 -1
  123. package/dist/middle_layer/ops.cjs +5 -5
  124. package/dist/middle_layer/ops.cjs.map +1 -1
  125. package/dist/middle_layer/ops.d.ts +11 -11
  126. package/dist/middle_layer/ops.d.ts.map +1 -1
  127. package/dist/middle_layer/ops.js +5 -5
  128. package/dist/middle_layer/ops.js.map +1 -1
  129. package/dist/middle_layer/project.cjs +71 -63
  130. package/dist/middle_layer/project.cjs.map +1 -1
  131. package/dist/middle_layer/project.d.ts +10 -10
  132. package/dist/middle_layer/project.d.ts.map +1 -1
  133. package/dist/middle_layer/project.js +71 -63
  134. package/dist/middle_layer/project.js.map +1 -1
  135. package/dist/middle_layer/project_list.cjs +2 -2
  136. package/dist/middle_layer/project_list.cjs.map +1 -1
  137. package/dist/middle_layer/project_list.d.ts +6 -6
  138. package/dist/middle_layer/project_list.d.ts.map +1 -1
  139. package/dist/middle_layer/project_list.js +2 -2
  140. package/dist/middle_layer/project_list.js.map +1 -1
  141. package/dist/middle_layer/project_overview.cjs +40 -40
  142. package/dist/middle_layer/project_overview.cjs.map +1 -1
  143. package/dist/middle_layer/project_overview.d.ts +5 -5
  144. package/dist/middle_layer/project_overview.d.ts.map +1 -1
  145. package/dist/middle_layer/project_overview.js +40 -40
  146. package/dist/middle_layer/project_overview.js.map +1 -1
  147. package/dist/middle_layer/project_overview_light.cjs.map +1 -1
  148. package/dist/middle_layer/project_overview_light.d.ts +2 -2
  149. package/dist/middle_layer/project_overview_light.d.ts.map +1 -1
  150. package/dist/middle_layer/project_overview_light.js.map +1 -1
  151. package/dist/middle_layer/render.cjs +1 -1
  152. package/dist/middle_layer/render.cjs.map +1 -1
  153. package/dist/middle_layer/render.d.ts +4 -4
  154. package/dist/middle_layer/render.js +1 -1
  155. package/dist/middle_layer/render.js.map +1 -1
  156. package/dist/middle_layer/render.test.d.ts +2 -2
  157. package/dist/middle_layer/types.d.ts +3 -3
  158. package/dist/middle_layer/util.cjs +9 -4
  159. package/dist/middle_layer/util.cjs.map +1 -1
  160. package/dist/middle_layer/util.d.ts +4 -4
  161. package/dist/middle_layer/util.d.ts.map +1 -1
  162. package/dist/middle_layer/util.js +9 -4
  163. package/dist/middle_layer/util.js.map +1 -1
  164. package/dist/model/args.cjs +19 -15
  165. package/dist/model/args.cjs.map +1 -1
  166. package/dist/model/args.d.ts +1 -1
  167. package/dist/model/args.d.ts.map +1 -1
  168. package/dist/model/args.js +19 -15
  169. package/dist/model/args.js.map +1 -1
  170. package/dist/model/block_pack.d.ts +2 -2
  171. package/dist/model/block_pack_spec.cjs +3 -3
  172. package/dist/model/block_pack_spec.cjs.map +1 -1
  173. package/dist/model/block_pack_spec.d.ts +8 -8
  174. package/dist/model/block_pack_spec.js +3 -3
  175. package/dist/model/block_pack_spec.js.map +1 -1
  176. package/dist/model/block_storage_helper.cjs +4 -4
  177. package/dist/model/block_storage_helper.cjs.map +1 -1
  178. package/dist/model/block_storage_helper.d.ts +2 -2
  179. package/dist/model/block_storage_helper.d.ts.map +1 -1
  180. package/dist/model/block_storage_helper.js +4 -4
  181. package/dist/model/block_storage_helper.js.map +1 -1
  182. package/dist/model/index.d.ts +3 -3
  183. package/dist/model/project_helper.cjs +30 -13
  184. package/dist/model/project_helper.cjs.map +1 -1
  185. package/dist/model/project_helper.d.ts +4 -4
  186. package/dist/model/project_helper.d.ts.map +1 -1
  187. package/dist/model/project_helper.js +30 -13
  188. package/dist/model/project_helper.js.map +1 -1
  189. package/dist/model/project_model.cjs +23 -23
  190. package/dist/model/project_model.cjs.map +1 -1
  191. package/dist/model/project_model.d.ts +6 -6
  192. package/dist/model/project_model.d.ts.map +1 -1
  193. package/dist/model/project_model.js +23 -23
  194. package/dist/model/project_model.js.map +1 -1
  195. package/dist/model/project_model_util.cjs +2 -2
  196. package/dist/model/project_model_util.cjs.map +1 -1
  197. package/dist/model/project_model_util.d.ts +3 -3
  198. package/dist/model/project_model_util.d.ts.map +1 -1
  199. package/dist/model/project_model_util.js +2 -2
  200. package/dist/model/project_model_util.js.map +1 -1
  201. package/dist/model/project_model_v1.cjs +2 -2
  202. package/dist/model/project_model_v1.cjs.map +1 -1
  203. package/dist/model/project_model_v1.js +2 -2
  204. package/dist/model/project_model_v1.js.map +1 -1
  205. package/dist/model/template_spec.d.ts +5 -5
  206. package/dist/mutator/block-pack/block_pack.cjs +43 -43
  207. package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
  208. package/dist/mutator/block-pack/block_pack.d.ts +6 -6
  209. package/dist/mutator/block-pack/block_pack.d.ts.map +1 -1
  210. package/dist/mutator/block-pack/block_pack.js +43 -43
  211. package/dist/mutator/block-pack/block_pack.js.map +1 -1
  212. package/dist/mutator/block-pack/frontend.cjs +2 -2
  213. package/dist/mutator/block-pack/frontend.cjs.map +1 -1
  214. package/dist/mutator/block-pack/frontend.d.ts +2 -2
  215. package/dist/mutator/block-pack/frontend.d.ts.map +1 -1
  216. package/dist/mutator/block-pack/frontend.js +2 -2
  217. package/dist/mutator/block-pack/frontend.js.map +1 -1
  218. package/dist/mutator/context_export.cjs +5 -5
  219. package/dist/mutator/context_export.cjs.map +1 -1
  220. package/dist/mutator/context_export.d.ts +2 -2
  221. package/dist/mutator/context_export.d.ts.map +1 -1
  222. package/dist/mutator/context_export.js +5 -5
  223. package/dist/mutator/context_export.js.map +1 -1
  224. package/dist/mutator/migration.cjs +7 -7
  225. package/dist/mutator/migration.cjs.map +1 -1
  226. package/dist/mutator/migration.d.ts +1 -1
  227. package/dist/mutator/migration.d.ts.map +1 -1
  228. package/dist/mutator/migration.js +7 -7
  229. package/dist/mutator/migration.js.map +1 -1
  230. package/dist/mutator/project.cjs +147 -148
  231. package/dist/mutator/project.cjs.map +1 -1
  232. package/dist/mutator/project.d.ts +13 -13
  233. package/dist/mutator/project.d.ts.map +1 -1
  234. package/dist/mutator/project.js +147 -148
  235. package/dist/mutator/project.js.map +1 -1
  236. package/dist/mutator/template/direct_template_loader.cjs +16 -16
  237. package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
  238. package/dist/mutator/template/direct_template_loader.d.ts +2 -2
  239. package/dist/mutator/template/direct_template_loader.d.ts.map +1 -1
  240. package/dist/mutator/template/direct_template_loader.js +16 -16
  241. package/dist/mutator/template/direct_template_loader.js.map +1 -1
  242. package/dist/mutator/template/direct_template_loader_v3.cjs +13 -13
  243. package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
  244. package/dist/mutator/template/direct_template_loader_v3.d.ts +3 -3
  245. package/dist/mutator/template/direct_template_loader_v3.d.ts.map +1 -1
  246. package/dist/mutator/template/direct_template_loader_v3.js +13 -13
  247. package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
  248. package/dist/mutator/template/render_block.cjs +7 -7
  249. package/dist/mutator/template/render_block.cjs.map +1 -1
  250. package/dist/mutator/template/render_block.d.ts +1 -1
  251. package/dist/mutator/template/render_block.d.ts.map +1 -1
  252. package/dist/mutator/template/render_block.js +7 -7
  253. package/dist/mutator/template/render_block.js.map +1 -1
  254. package/dist/mutator/template/render_template.cjs +10 -10
  255. package/dist/mutator/template/render_template.cjs.map +1 -1
  256. package/dist/mutator/template/render_template.d.ts +2 -2
  257. package/dist/mutator/template/render_template.js +10 -10
  258. package/dist/mutator/template/render_template.js.map +1 -1
  259. package/dist/mutator/template/template_loading.cjs +17 -17
  260. package/dist/mutator/template/template_loading.cjs.map +1 -1
  261. package/dist/mutator/template/template_loading.d.ts +2 -2
  262. package/dist/mutator/template/template_loading.js +17 -17
  263. package/dist/mutator/template/template_loading.js.map +1 -1
  264. package/dist/network_check/network_check.cjs +33 -32
  265. package/dist/network_check/network_check.cjs.map +1 -1
  266. package/dist/network_check/network_check.d.ts +6 -6
  267. package/dist/network_check/network_check.d.ts.map +1 -1
  268. package/dist/network_check/network_check.js +33 -32
  269. package/dist/network_check/network_check.js.map +1 -1
  270. package/dist/network_check/pings.cjs +3 -3
  271. package/dist/network_check/pings.cjs.map +1 -1
  272. package/dist/network_check/pings.d.ts +4 -4
  273. package/dist/network_check/pings.d.ts.map +1 -1
  274. package/dist/network_check/pings.js +3 -3
  275. package/dist/network_check/pings.js.map +1 -1
  276. package/dist/network_check/template.cjs +57 -44
  277. package/dist/network_check/template.cjs.map +1 -1
  278. package/dist/network_check/template.d.ts +8 -8
  279. package/dist/network_check/template.d.ts.map +1 -1
  280. package/dist/network_check/template.js +57 -44
  281. package/dist/network_check/template.js.map +1 -1
  282. package/dist/pool/data.cjs +45 -33
  283. package/dist/pool/data.cjs.map +1 -1
  284. package/dist/pool/data.d.ts +3 -3
  285. package/dist/pool/data.d.ts.map +1 -1
  286. package/dist/pool/data.js +45 -33
  287. package/dist/pool/data.js.map +1 -1
  288. package/dist/pool/driver.cjs +18 -16
  289. package/dist/pool/driver.cjs.map +1 -1
  290. package/dist/pool/driver.d.ts +5 -5
  291. package/dist/pool/driver.d.ts.map +1 -1
  292. package/dist/pool/driver.js +18 -16
  293. package/dist/pool/driver.js.map +1 -1
  294. package/dist/pool/index.d.ts +2 -2
  295. package/dist/pool/p_object_collection.cjs +5 -5
  296. package/dist/pool/p_object_collection.cjs.map +1 -1
  297. package/dist/pool/p_object_collection.d.ts +2 -2
  298. package/dist/pool/p_object_collection.d.ts.map +1 -1
  299. package/dist/pool/p_object_collection.js +5 -5
  300. package/dist/pool/p_object_collection.js.map +1 -1
  301. package/dist/pool/result_pool.cjs +6 -6
  302. package/dist/pool/result_pool.cjs.map +1 -1
  303. package/dist/pool/result_pool.d.ts +6 -6
  304. package/dist/pool/result_pool.d.ts.map +1 -1
  305. package/dist/pool/result_pool.js +6 -6
  306. package/dist/pool/result_pool.js.map +1 -1
  307. package/dist/test/block_packs.d.ts +2 -2
  308. package/dist/test/known_templates.d.ts +1 -1
  309. package/dist/worker/WorkerManager.cjs +7 -8
  310. package/dist/worker/WorkerManager.cjs.map +1 -1
  311. package/dist/worker/WorkerManager.d.ts +2 -2
  312. package/dist/worker/WorkerManager.d.ts.map +1 -1
  313. package/dist/worker/WorkerManager.js +7 -8
  314. package/dist/worker/WorkerManager.js.map +1 -1
  315. package/dist/worker/worker.cjs +6 -4
  316. package/dist/worker/worker.cjs.map +1 -1
  317. package/dist/worker/worker.js +6 -4
  318. package/dist/worker/worker.js.map +1 -1
  319. package/dist/worker/workerApi.cjs.map +1 -1
  320. package/dist/worker/workerApi.js.map +1 -1
  321. package/package.json +41 -41
  322. package/src/block_registry/index.ts +3 -3
  323. package/src/block_registry/registry-v2-provider.ts +2 -2
  324. package/src/block_registry/registry.test.ts +17 -17
  325. package/src/block_registry/registry.ts +55 -60
  326. package/src/block_registry/watcher.ts +24 -23
  327. package/src/block_registry/well_known_registries.ts +7 -7
  328. package/src/cfg_render/executor.test.ts +36 -36
  329. package/src/cfg_render/executor.ts +24 -24
  330. package/src/cfg_render/operation.ts +5 -5
  331. package/src/cfg_render/renderer.ts +96 -93
  332. package/src/cfg_render/traverse.ts +50 -50
  333. package/src/cfg_render/util.ts +3 -3
  334. package/src/debug/index.ts +6 -4
  335. package/src/dev_env/index.ts +16 -16
  336. package/src/dev_env/util.ts +3 -3
  337. package/src/index.ts +16 -16
  338. package/src/js_render/computable_context.ts +143 -126
  339. package/src/js_render/context.ts +72 -44
  340. package/src/js_render/index.ts +51 -24
  341. package/src/middle_layer/active_cfg.ts +14 -12
  342. package/src/middle_layer/block.ts +30 -23
  343. package/src/middle_layer/block_ctx.ts +27 -31
  344. package/src/middle_layer/block_ctx_unsafe.ts +9 -9
  345. package/src/middle_layer/driver_kit.ts +13 -19
  346. package/src/middle_layer/frontend_path.ts +18 -23
  347. package/src/middle_layer/index.ts +4 -4
  348. package/src/middle_layer/middle_layer.ts +57 -55
  349. package/src/middle_layer/navigation_states.ts +6 -6
  350. package/src/middle_layer/ops.ts +43 -42
  351. package/src/middle_layer/project.ts +274 -173
  352. package/src/middle_layer/project_list.ts +14 -15
  353. package/src/middle_layer/project_overview.ts +104 -113
  354. package/src/middle_layer/project_overview_light.ts +7 -9
  355. package/src/middle_layer/render.test.ts +49 -48
  356. package/src/middle_layer/render.ts +9 -9
  357. package/src/middle_layer/types.ts +3 -3
  358. package/src/middle_layer/util.ts +17 -12
  359. package/src/model/args.ts +22 -19
  360. package/src/model/block_pack.ts +2 -2
  361. package/src/model/block_pack_spec.ts +11 -11
  362. package/src/model/block_storage_helper.ts +11 -11
  363. package/src/model/index.ts +3 -3
  364. package/src/model/project_helper.ts +78 -32
  365. package/src/model/project_model.test.ts +5 -9
  366. package/src/model/project_model.ts +48 -49
  367. package/src/model/project_model_util.test.ts +86 -53
  368. package/src/model/project_model_util.ts +18 -14
  369. package/src/model/project_model_v1.ts +3 -3
  370. package/src/model/template_spec.ts +5 -5
  371. package/src/mutator/block-pack/block_pack.test.ts +25 -25
  372. package/src/mutator/block-pack/block_pack.ts +70 -68
  373. package/src/mutator/block-pack/frontend.ts +6 -13
  374. package/src/mutator/context_export.ts +12 -10
  375. package/src/mutator/migration.ts +20 -14
  376. package/src/mutator/project-v3.test.ts +123 -118
  377. package/src/mutator/project.test.ts +105 -94
  378. package/src/mutator/project.ts +357 -274
  379. package/src/mutator/template/direct_template_loader.ts +26 -32
  380. package/src/mutator/template/direct_template_loader_v3.ts +51 -25
  381. package/src/mutator/template/render_block.ts +14 -21
  382. package/src/mutator/template/render_template.ts +13 -13
  383. package/src/mutator/template/template_loading.ts +23 -23
  384. package/src/mutator/template/template_render.test.ts +87 -86
  385. package/src/network_check/network_check.test.ts +4 -4
  386. package/src/network_check/network_check.ts +102 -79
  387. package/src/network_check/pings.ts +35 -16
  388. package/src/network_check/template.test.ts +47 -44
  389. package/src/network_check/template.ts +151 -95
  390. package/src/network_check/test_utils.ts +1 -1
  391. package/src/pool/data.ts +81 -69
  392. package/src/pool/driver.ts +56 -51
  393. package/src/pool/index.ts +2 -2
  394. package/src/pool/p_object_collection.ts +16 -15
  395. package/src/pool/result_pool.ts +23 -34
  396. package/src/test/block_packs.ts +15 -15
  397. package/src/test/explicit_templates.ts +4 -4
  398. package/src/test/known_templates.ts +10 -10
  399. package/src/test_env.ts +1 -1
  400. package/src/worker/WorkerManager.ts +22 -18
  401. package/src/worker/worker.ts +11 -9
  402. package/src/worker/workerApi.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"direct_template_loader.cjs","sources":["../../../src/mutator/template/direct_template_loader.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport type { ExplicitTemplate, PreparedTemplate } from '../../model/template_spec';\nimport type { Hash } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport type {\n TemplateData,\n TemplateLibData,\n TemplateSoftwareData,\n} from '@milaboratories/pl-model-backend';\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n parseTemplate,\n} from '@milaboratories/pl-model-backend';\nimport { createTemplateV3Tree } from './direct_template_loader_v3';\n\nexport function loadTemplateFromExplicitDirect(\n tx: PlTransaction,\n spec: ExplicitTemplate,\n): AnyRef {\n const templateInfo = parseTemplate(spec.content);\n\n const templateFormat = templateInfo.type;\n switch (templateFormat) {\n case 'pl.tengo-template.v2':\n return createTemplateV2Tree(tx, templateInfo);\n case 'pl.tengo-template.v3':\n return createTemplateV3Tree(tx, templateInfo);\n default:\n assertNever(templateFormat);\n }\n}\n\nexport function loadTemplateFromPrepared(\n tx: PlTransaction,\n spec: PreparedTemplate,\n): AnyRef {\n const templateData = spec.data;\n\n const templateFormat = templateData.type;\n switch (templateFormat) {\n case 'pl.tengo-template.v2':\n return createTemplateV2Tree(tx, templateData);\n case 'pl.tengo-template.v3':\n return createTemplateV3Tree(tx, templateData);\n default:\n assertNever(templateFormat);\n }\n}\n\ntype Renderer<T> = {\n hash: Hasher<T>;\n render: (resource: T, tx: PlTransaction, creator: Creator) => AnyResourceRef;\n};\ntype Hasher<T> = (resource: T, hash: Hash) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV2Data(resource).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n const sw = PlTemplateSoftwareV1.fromV2Data(resource);\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<TemplateData> = {\n hash(resource, hash) {\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(resource.src);\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.hash(lib, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update('soft:' + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update('asset:' + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update('tpl:' + tplId);\n this.hash(tpl, hash);\n }\n },\n render(resource, tx, _creator) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV2Data(resource).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));\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));\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));\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));\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.fromV2Data(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\nfunction createTemplateV2Tree(tx: PlTransaction, tplData: TemplateData): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResource = <T>(resource: T, renderer: Renderer<T>): AnyResourceRef => {\n const hasher: Hash = createHash('sha256');\n renderer.hash(resource, hasher);\n\n const rKey = hasher.digest('hex');\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResource(tplData, TemplateRenderer);\n}\n"],"names":["parseTemplate","createTemplateV3Tree","assertNever","PlTemplateLibV1","PlTemplateSoftwareV1","PlTemplateV1","PlTemplateOverrideV1","createHash"],"mappings":"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"}
1
+ {"version":3,"file":"direct_template_loader.cjs","sources":["../../../src/mutator/template/direct_template_loader.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from \"@milaboratories/pl-client\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\nimport type { ExplicitTemplate, PreparedTemplate } from \"../../model/template_spec\";\nimport type { Hash } from \"node:crypto\";\nimport { createHash } from \"node:crypto\";\nimport type {\n TemplateData,\n TemplateLibData,\n TemplateSoftwareData,\n} from \"@milaboratories/pl-model-backend\";\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n parseTemplate,\n} from \"@milaboratories/pl-model-backend\";\nimport { createTemplateV3Tree } from \"./direct_template_loader_v3\";\n\nexport function loadTemplateFromExplicitDirect(tx: PlTransaction, spec: ExplicitTemplate): AnyRef {\n const templateInfo = parseTemplate(spec.content);\n\n const templateFormat = templateInfo.type;\n switch (templateFormat) {\n case \"pl.tengo-template.v2\":\n return createTemplateV2Tree(tx, templateInfo);\n case \"pl.tengo-template.v3\":\n return createTemplateV3Tree(tx, templateInfo);\n default:\n assertNever(templateFormat);\n }\n}\n\nexport function loadTemplateFromPrepared(tx: PlTransaction, spec: PreparedTemplate): AnyRef {\n const templateData = spec.data;\n\n const templateFormat = templateData.type;\n switch (templateFormat) {\n case \"pl.tengo-template.v2\":\n return createTemplateV2Tree(tx, templateData);\n case \"pl.tengo-template.v3\":\n return createTemplateV3Tree(tx, templateData);\n default:\n assertNever(templateFormat);\n }\n}\n\ntype Renderer<T> = {\n hash: Hasher<T>;\n render: (resource: T, tx: PlTransaction, creator: Creator) => AnyResourceRef;\n};\ntype Hasher<T> = (resource: T, hash: Hash) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV2Data(resource).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n const sw = PlTemplateSoftwareV1.fromV2Data(resource);\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<TemplateData> = {\n hash(resource, hash) {\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(resource.src);\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.hash(lib, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update(\"soft:\" + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update(\"asset:\" + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update(\"tpl:\" + tplId);\n this.hash(tpl, hash);\n }\n },\n render(resource, tx, _creator) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV2Data(resource).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));\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));\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));\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));\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.fromV2Data(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\nfunction createTemplateV2Tree(tx: PlTransaction, tplData: TemplateData): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResource = <T>(resource: T, renderer: Renderer<T>): AnyResourceRef => {\n const hasher: Hash = createHash(\"sha256\");\n renderer.hash(resource, hasher);\n\n const rKey = hasher.digest(\"hex\");\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResource(tplData, TemplateRenderer);\n}\n"],"names":["parseTemplate","createTemplateV3Tree","assertNever","PlTemplateLibV1","PlTemplateSoftwareV1","PlTemplateV1","PlTemplateOverrideV1","createHash"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { AnyRef, PlTransaction } from '@milaboratories/pl-client';
2
- import type { ExplicitTemplate, PreparedTemplate } from '../../model/template_spec';
1
+ import type { AnyRef, PlTransaction } from "@milaboratories/pl-client";
2
+ import type { ExplicitTemplate, PreparedTemplate } from "../../model/template_spec";
3
3
  export declare function loadTemplateFromExplicitDirect(tx: PlTransaction, spec: ExplicitTemplate): AnyRef;
4
4
  export declare function loadTemplateFromPrepared(tx: PlTransaction, spec: PreparedTemplate): AnyRef;
5
5
  //# sourceMappingURL=direct_template_loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"direct_template_loader.d.ts","sourceRoot":"","sources":["../../../src/mutator/template/direct_template_loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAiBpF,wBAAgB,8BAA8B,CAC5C,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAYR;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAYR"}
1
+ {"version":3,"file":"direct_template_loader.d.ts","sourceRoot":"","sources":["../../../src/mutator/template/direct_template_loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAiBpF,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAYhG;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAY1F"}
@@ -7,9 +7,9 @@ function loadTemplateFromExplicitDirect(tx, spec) {
7
7
  const templateInfo = parseTemplate(spec.content);
8
8
  const templateFormat = templateInfo.type;
9
9
  switch (templateFormat) {
10
- case 'pl.tengo-template.v2':
10
+ case "pl.tengo-template.v2":
11
11
  return createTemplateV2Tree(tx, templateInfo);
12
- case 'pl.tengo-template.v3':
12
+ case "pl.tengo-template.v3":
13
13
  return createTemplateV3Tree(tx, templateInfo);
14
14
  default:
15
15
  assertNever(templateFormat);
@@ -19,9 +19,9 @@ function loadTemplateFromPrepared(tx, spec) {
19
19
  const templateData = spec.data;
20
20
  const templateFormat = templateData.type;
21
21
  switch (templateFormat) {
22
- case 'pl.tengo-template.v2':
22
+ case "pl.tengo-template.v2":
23
23
  return createTemplateV2Tree(tx, templateData);
24
- case 'pl.tengo-template.v3':
24
+ case "pl.tengo-template.v3":
25
25
  return createTemplateV3Tree(tx, templateData);
26
26
  default:
27
27
  assertNever(templateFormat);
@@ -62,7 +62,7 @@ const TemplateRenderer = {
62
62
  hash
63
63
  .update(PlTemplateV1.type.name)
64
64
  .update(PlTemplateV1.type.version)
65
- .update(resource.hashOverride ?? 'no-override')
65
+ .update(resource.hashOverride ?? "no-override")
66
66
  .update(resource.name)
67
67
  .update(resource.version)
68
68
  .update(resource.src);
@@ -71,19 +71,19 @@ const TemplateRenderer = {
71
71
  return entries;
72
72
  };
73
73
  for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
74
- hash.update('lib:' + libId);
74
+ hash.update("lib:" + libId);
75
75
  LibRenderer.hash(lib, hash);
76
76
  }
77
77
  for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
78
- hash.update('soft:' + swId);
78
+ hash.update("soft:" + swId);
79
79
  SoftwareInfoRenderer.hash(sw, hash);
80
80
  }
81
81
  for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
82
- hash.update('asset:' + swId);
82
+ hash.update("asset:" + swId);
83
83
  SoftwareInfoRenderer.hash(sw, hash);
84
84
  }
85
85
  for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
86
- hash.update('tpl:' + tplId);
86
+ hash.update("tpl:" + tplId);
87
87
  this.hash(tpl, hash);
88
88
  }
89
89
  },
@@ -92,24 +92,24 @@ const TemplateRenderer = {
92
92
  // Render libraries
93
93
  for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
94
94
  const fld = PlTemplateV1.libField(tplRef, libId);
95
- tx.createField(fld, 'Input');
95
+ tx.createField(fld, "Input");
96
96
  tx.setField(fld, _creator(lib, LibRenderer));
97
97
  }
98
98
  // Render software and assets
99
99
  for (const [swId, sw] of Object.entries(resource.software ?? {})) {
100
100
  const fld = PlTemplateV1.swField(tplRef, swId);
101
- tx.createField(fld, 'Input');
101
+ tx.createField(fld, "Input");
102
102
  tx.setField(fld, _creator(sw, SoftwareInfoRenderer));
103
103
  }
104
104
  for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
105
105
  const fld = PlTemplateV1.swField(tplRef, swId);
106
- tx.createField(fld, 'Input');
106
+ tx.createField(fld, "Input");
107
107
  tx.setField(fld, _creator(sw, SoftwareInfoRenderer));
108
108
  }
109
109
  // Render dependency templates
110
110
  for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
111
111
  const fld = PlTemplateV1.tplField(tplRef, depTplId);
112
- tx.createField(fld, 'Input');
112
+ tx.createField(fld, "Input");
113
113
  tx.setField(fld, _creator(depTpl, TemplateRenderer));
114
114
  }
115
115
  tx.lock(tplRef);
@@ -118,7 +118,7 @@ const TemplateRenderer = {
118
118
  // Override template hash with proxy resource, when hash override is configured for template
119
119
  const overrideRef = tx.createStruct(PlTemplateOverrideV1.type, JSON.stringify(PlTemplateOverrideV1.fromV2Data(resource)));
120
120
  const fld = PlTemplateOverrideV1.tplField(overrideRef);
121
- tx.createField(fld, 'Service');
121
+ tx.createField(fld, "Service");
122
122
  tx.setField(fld, tplRef);
123
123
  tx.lock(overrideRef);
124
124
  return overrideRef;
@@ -127,9 +127,9 @@ const TemplateRenderer = {
127
127
  function createTemplateV2Tree(tx, tplData) {
128
128
  const resourceCache = new Map();
129
129
  const createResource = (resource, renderer) => {
130
- const hasher = createHash('sha256');
130
+ const hasher = createHash("sha256");
131
131
  renderer.hash(resource, hasher);
132
- const rKey = hasher.digest('hex');
132
+ const rKey = hasher.digest("hex");
133
133
  if (!resourceCache.has(rKey)) {
134
134
  const rId = renderer.render(resource, tx, createResource);
135
135
  resourceCache.set(rKey, rId);
@@ -1 +1 @@
1
- {"version":3,"file":"direct_template_loader.js","sources":["../../../src/mutator/template/direct_template_loader.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from '@milaboratories/pl-client';\nimport { assertNever } from '@milaboratories/ts-helpers';\nimport type { ExplicitTemplate, PreparedTemplate } from '../../model/template_spec';\nimport type { Hash } from 'node:crypto';\nimport { createHash } from 'node:crypto';\nimport type {\n TemplateData,\n TemplateLibData,\n TemplateSoftwareData,\n} from '@milaboratories/pl-model-backend';\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n parseTemplate,\n} from '@milaboratories/pl-model-backend';\nimport { createTemplateV3Tree } from './direct_template_loader_v3';\n\nexport function loadTemplateFromExplicitDirect(\n tx: PlTransaction,\n spec: ExplicitTemplate,\n): AnyRef {\n const templateInfo = parseTemplate(spec.content);\n\n const templateFormat = templateInfo.type;\n switch (templateFormat) {\n case 'pl.tengo-template.v2':\n return createTemplateV2Tree(tx, templateInfo);\n case 'pl.tengo-template.v3':\n return createTemplateV3Tree(tx, templateInfo);\n default:\n assertNever(templateFormat);\n }\n}\n\nexport function loadTemplateFromPrepared(\n tx: PlTransaction,\n spec: PreparedTemplate,\n): AnyRef {\n const templateData = spec.data;\n\n const templateFormat = templateData.type;\n switch (templateFormat) {\n case 'pl.tengo-template.v2':\n return createTemplateV2Tree(tx, templateData);\n case 'pl.tengo-template.v3':\n return createTemplateV3Tree(tx, templateData);\n default:\n assertNever(templateFormat);\n }\n}\n\ntype Renderer<T> = {\n hash: Hasher<T>;\n render: (resource: T, tx: PlTransaction, creator: Creator) => AnyResourceRef;\n};\ntype Hasher<T> = (resource: T, hash: Hash) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV2Data(resource).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n const sw = PlTemplateSoftwareV1.fromV2Data(resource);\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<TemplateData> = {\n hash(resource, hash) {\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(resource.src);\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.hash(lib, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update('soft:' + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update('asset:' + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update('tpl:' + tplId);\n this.hash(tpl, hash);\n }\n },\n render(resource, tx, _creator) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV2Data(resource).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));\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));\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));\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));\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.fromV2Data(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\nfunction createTemplateV2Tree(tx: PlTransaction, tplData: TemplateData): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResource = <T>(resource: T, renderer: Renderer<T>): AnyResourceRef => {\n const hasher: Hash = createHash('sha256');\n renderer.hash(resource, hasher);\n\n const rKey = hasher.digest('hex');\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResource(tplData, TemplateRenderer);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"direct_template_loader.js","sources":["../../../src/mutator/template/direct_template_loader.ts"],"sourcesContent":["import type { AnyRef, AnyResourceRef, PlTransaction } from \"@milaboratories/pl-client\";\nimport { assertNever } from \"@milaboratories/ts-helpers\";\nimport type { ExplicitTemplate, PreparedTemplate } from \"../../model/template_spec\";\nimport type { Hash } from \"node:crypto\";\nimport { createHash } from \"node:crypto\";\nimport type {\n TemplateData,\n TemplateLibData,\n TemplateSoftwareData,\n} from \"@milaboratories/pl-model-backend\";\nimport {\n PlTemplateLibV1,\n PlTemplateSoftwareV1,\n PlTemplateV1,\n PlTemplateOverrideV1,\n parseTemplate,\n} from \"@milaboratories/pl-model-backend\";\nimport { createTemplateV3Tree } from \"./direct_template_loader_v3\";\n\nexport function loadTemplateFromExplicitDirect(tx: PlTransaction, spec: ExplicitTemplate): AnyRef {\n const templateInfo = parseTemplate(spec.content);\n\n const templateFormat = templateInfo.type;\n switch (templateFormat) {\n case \"pl.tengo-template.v2\":\n return createTemplateV2Tree(tx, templateInfo);\n case \"pl.tengo-template.v3\":\n return createTemplateV3Tree(tx, templateInfo);\n default:\n assertNever(templateFormat);\n }\n}\n\nexport function loadTemplateFromPrepared(tx: PlTransaction, spec: PreparedTemplate): AnyRef {\n const templateData = spec.data;\n\n const templateFormat = templateData.type;\n switch (templateFormat) {\n case \"pl.tengo-template.v2\":\n return createTemplateV2Tree(tx, templateData);\n case \"pl.tengo-template.v3\":\n return createTemplateV3Tree(tx, templateData);\n default:\n assertNever(templateFormat);\n }\n}\n\ntype Renderer<T> = {\n hash: Hasher<T>;\n render: (resource: T, tx: PlTransaction, creator: Creator) => AnyResourceRef;\n};\ntype Hasher<T> = (resource: T, hash: Hash) => void;\ntype Creator = <T>(resource: T, renderer: Renderer<T>) => AnyResourceRef;\n\nconst LibRenderer: Renderer<TemplateLibData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateLibV1.type.name)\n .update(PlTemplateLibV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n return tx.createValue(\n PlTemplateLibV1.type,\n JSON.stringify(PlTemplateLibV1.fromV2Data(resource).data),\n );\n },\n};\n\nconst SoftwareInfoRenderer: Renderer<TemplateSoftwareData> = {\n hash(resource, hash) {\n hash\n .update(PlTemplateSoftwareV1.type.name)\n .update(PlTemplateSoftwareV1.type.version)\n .update(resource.name)\n .update(resource.version)\n .update(resource.src);\n },\n render(resource, tx, _creator) {\n const sw = PlTemplateSoftwareV1.fromV2Data(resource);\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<TemplateData> = {\n hash(resource, hash) {\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(resource.src);\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.hash(lib, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {\n hash.update(\"soft:\" + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {\n hash.update(\"asset:\" + swId);\n SoftwareInfoRenderer.hash(sw, hash);\n }\n for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {\n hash.update(\"tpl:\" + tplId);\n this.hash(tpl, hash);\n }\n },\n render(resource, tx, _creator) {\n const tplRef = tx.createStruct(\n PlTemplateV1.type,\n JSON.stringify(PlTemplateV1.fromV2Data(resource).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));\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));\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));\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));\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.fromV2Data(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\nfunction createTemplateV2Tree(tx: PlTransaction, tplData: TemplateData): AnyRef {\n const resourceCache = new Map<string, AnyResourceRef>();\n\n const createResource = <T>(resource: T, renderer: Renderer<T>): AnyResourceRef => {\n const hasher: Hash = createHash(\"sha256\");\n renderer.hash(resource, hasher);\n\n const rKey = hasher.digest(\"hex\");\n\n if (!resourceCache.has(rKey)) {\n const rId = renderer.render(resource, tx, createResource);\n resourceCache.set(rKey, rId);\n }\n\n return resourceCache.get(rKey)!;\n };\n\n return createResource(tplData, TemplateRenderer);\n}\n"],"names":[],"mappings":"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"}
@@ -14,13 +14,13 @@ var tsHelpers = require('@milaboratories/ts-helpers');
14
14
  *
15
15
  * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
16
16
  * tree traversing and operations on it, but I don't have time to do it now.
17
- */
17
+ */
18
18
  function createTemplateV3Tree(tx, tplData) {
19
19
  const resourceCache = new Map();
20
20
  const createResourceCached = (resource, renderer, hashToSource) => {
21
- const key = node_crypto.createHash('sha256');
21
+ const key = node_crypto.createHash("sha256");
22
22
  renderer.updateCacheKey(resource, key, hashToSource);
23
- const rKey = key.digest('hex');
23
+ const rKey = key.digest("hex");
24
24
  if (!resourceCache.has(rKey)) {
25
25
  const rId = renderer.render(resource, tx, createResourceCached, hashToSource);
26
26
  resourceCache.set(rKey, rId);
@@ -64,7 +64,7 @@ const TemplateRenderer = {
64
64
  hash
65
65
  .update(plModelBackend.PlTemplateV1.type.name)
66
66
  .update(plModelBackend.PlTemplateV1.type.version)
67
- .update(resource.hashOverride ?? 'no-override')
67
+ .update(resource.hashOverride ?? "no-override")
68
68
  .update(resource.name)
69
69
  .update(resource.version)
70
70
  .update(getSourceCode(resource.name, sources, resource.sourceHash));
@@ -73,19 +73,19 @@ const TemplateRenderer = {
73
73
  return entries;
74
74
  };
75
75
  for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
76
- hash.update('lib:' + libId);
76
+ hash.update("lib:" + libId);
77
77
  LibRenderer.updateCacheKey(lib, hash, sources);
78
78
  }
79
79
  for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
80
- hash.update('soft:' + swId);
80
+ hash.update("soft:" + swId);
81
81
  SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
82
82
  }
83
83
  for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
84
- hash.update('asset:' + swId);
84
+ hash.update("asset:" + swId);
85
85
  SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
86
86
  }
87
87
  for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
88
- hash.update('tpl:' + tplId);
88
+ hash.update("tpl:" + tplId);
89
89
  this.updateCacheKey(tpl, hash, sources);
90
90
  }
91
91
  },
@@ -94,24 +94,24 @@ const TemplateRenderer = {
94
94
  // Render libraries
95
95
  for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
96
96
  const fld = plModelBackend.PlTemplateV1.libField(tplRef, libId);
97
- tx.createField(fld, 'Input');
97
+ tx.createField(fld, "Input");
98
98
  tx.setField(fld, _creator(lib, LibRenderer, sources));
99
99
  }
100
100
  // Render software and assets
101
101
  for (const [swId, sw] of Object.entries(resource.software ?? {})) {
102
102
  const fld = plModelBackend.PlTemplateV1.swField(tplRef, swId);
103
- tx.createField(fld, 'Input');
103
+ tx.createField(fld, "Input");
104
104
  tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
105
105
  }
106
106
  for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
107
107
  const fld = plModelBackend.PlTemplateV1.swField(tplRef, swId);
108
- tx.createField(fld, 'Input');
108
+ tx.createField(fld, "Input");
109
109
  tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
110
110
  }
111
111
  // Render dependency templates
112
112
  for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
113
113
  const fld = plModelBackend.PlTemplateV1.tplField(tplRef, depTplId);
114
- tx.createField(fld, 'Input');
114
+ tx.createField(fld, "Input");
115
115
  tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));
116
116
  }
117
117
  tx.lock(tplRef);
@@ -120,7 +120,7 @@ const TemplateRenderer = {
120
120
  // Override template hash with proxy resource, when hash override is configured for template
121
121
  const overrideRef = tx.createStruct(plModelBackend.PlTemplateOverrideV1.type, JSON.stringify(plModelBackend.PlTemplateOverrideV1.fromV3Data(resource)));
122
122
  const fld = plModelBackend.PlTemplateOverrideV1.tplField(overrideRef);
123
- tx.createField(fld, 'Service');
123
+ tx.createField(fld, "Service");
124
124
  tx.setField(fld, tplRef);
125
125
  tx.lock(overrideRef);
126
126
  return overrideRef;
@@ -1 +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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"}
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>(\n resource: T,\n renderer: Renderer<T>,\n hashToSource: Record<string, string>,\n ): 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: (\n resource: T,\n tx: PlTransaction,\n creator: Creator,\n sources: Record<string, string>,\n ) => AnyResourceRef;\n};\ntype CacheKey<T> = (resource: T, key: Hash, sources: Record<string, string>) => void;\ntype Creator = <T>(\n resource: T,\n renderer: Renderer<T>,\n sources: Record<string, string>,\n) => 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(\n PlTemplateLibV1.fromV3Data(\n resource,\n getSourceCode(resource.name, sources, resource.sourceHash),\n ).data,\n ),\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(\n resource,\n getSourceCode(resource.name, sources, resource.sourceHash),\n );\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(\n PlTemplateV1.fromV3Data(\n resource,\n getSourceCode(resource.name, sources, resource.sourceHash),\n ).data,\n ),\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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"}
@@ -1,5 +1,5 @@
1
- import type { AnyRef, PlTransaction } from '@milaboratories/pl-client';
2
- import type { CompiledTemplateV3 } from '@milaboratories/pl-model-backend';
1
+ import type { AnyRef, PlTransaction } from "@milaboratories/pl-client";
2
+ import type { CompiledTemplateV3 } from "@milaboratories/pl-model-backend";
3
3
  /**
4
4
  * Renders the tree of templates by caching all resource ids
5
5
  * by their cache keys.
@@ -10,6 +10,6 @@ import type { CompiledTemplateV3 } from '@milaboratories/pl-model-backend';
10
10
  *
11
11
  * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
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
15
  //# sourceMappingURL=direct_template_loader_v3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"direct_template_loader_v3.d.ts","sourceRoot":"","sources":["../../../src/mutator/template/direct_template_loader_v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGvF,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,kCAAkC,CAAC;AAS1C;;;;;;;;;;EAUE;AACF,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAkB3F"}
1
+ {"version":3,"file":"direct_template_loader_v3.d.ts","sourceRoot":"","sources":["../../../src/mutator/template/direct_template_loader_v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAkB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGvF,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,kCAAkC,CAAC;AAS1C;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAsB3F"}
@@ -12,13 +12,13 @@ import { notEmpty } from '@milaboratories/ts-helpers';
12
12
  *
13
13
  * IMO, it'd be clearer to rewrite it with Visitor pattern, and separate
14
14
  * tree traversing and operations on it, but I don't have time to do it now.
15
- */
15
+ */
16
16
  function createTemplateV3Tree(tx, tplData) {
17
17
  const resourceCache = new Map();
18
18
  const createResourceCached = (resource, renderer, hashToSource) => {
19
- const key = createHash('sha256');
19
+ const key = createHash("sha256");
20
20
  renderer.updateCacheKey(resource, key, hashToSource);
21
- const rKey = key.digest('hex');
21
+ const rKey = key.digest("hex");
22
22
  if (!resourceCache.has(rKey)) {
23
23
  const rId = renderer.render(resource, tx, createResourceCached, hashToSource);
24
24
  resourceCache.set(rKey, rId);
@@ -62,7 +62,7 @@ const TemplateRenderer = {
62
62
  hash
63
63
  .update(PlTemplateV1.type.name)
64
64
  .update(PlTemplateV1.type.version)
65
- .update(resource.hashOverride ?? 'no-override')
65
+ .update(resource.hashOverride ?? "no-override")
66
66
  .update(resource.name)
67
67
  .update(resource.version)
68
68
  .update(getSourceCode(resource.name, sources, resource.sourceHash));
@@ -71,19 +71,19 @@ const TemplateRenderer = {
71
71
  return entries;
72
72
  };
73
73
  for (const [libId, lib] of srt(Object.entries(resource.libs ?? {}))) {
74
- hash.update('lib:' + libId);
74
+ hash.update("lib:" + libId);
75
75
  LibRenderer.updateCacheKey(lib, hash, sources);
76
76
  }
77
77
  for (const [swId, sw] of srt(Object.entries(resource.software ?? {}))) {
78
- hash.update('soft:' + swId);
78
+ hash.update("soft:" + swId);
79
79
  SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
80
80
  }
81
81
  for (const [swId, sw] of srt(Object.entries(resource.assets ?? {}))) {
82
- hash.update('asset:' + swId);
82
+ hash.update("asset:" + swId);
83
83
  SoftwareInfoRenderer.updateCacheKey(sw, hash, sources);
84
84
  }
85
85
  for (const [tplId, tpl] of srt(Object.entries(resource.templates ?? {}))) {
86
- hash.update('tpl:' + tplId);
86
+ hash.update("tpl:" + tplId);
87
87
  this.updateCacheKey(tpl, hash, sources);
88
88
  }
89
89
  },
@@ -92,24 +92,24 @@ const TemplateRenderer = {
92
92
  // Render libraries
93
93
  for (const [libId, lib] of Object.entries(resource.libs ?? {})) {
94
94
  const fld = PlTemplateV1.libField(tplRef, libId);
95
- tx.createField(fld, 'Input');
95
+ tx.createField(fld, "Input");
96
96
  tx.setField(fld, _creator(lib, LibRenderer, sources));
97
97
  }
98
98
  // Render software and assets
99
99
  for (const [swId, sw] of Object.entries(resource.software ?? {})) {
100
100
  const fld = PlTemplateV1.swField(tplRef, swId);
101
- tx.createField(fld, 'Input');
101
+ tx.createField(fld, "Input");
102
102
  tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
103
103
  }
104
104
  for (const [swId, sw] of Object.entries(resource.assets ?? {})) {
105
105
  const fld = PlTemplateV1.swField(tplRef, swId);
106
- tx.createField(fld, 'Input');
106
+ tx.createField(fld, "Input");
107
107
  tx.setField(fld, _creator(sw, SoftwareInfoRenderer, sources));
108
108
  }
109
109
  // Render dependency templates
110
110
  for (const [depTplId, depTpl] of Object.entries(resource.templates ?? {})) {
111
111
  const fld = PlTemplateV1.tplField(tplRef, depTplId);
112
- tx.createField(fld, 'Input');
112
+ tx.createField(fld, "Input");
113
113
  tx.setField(fld, _creator(depTpl, TemplateRenderer, sources));
114
114
  }
115
115
  tx.lock(tplRef);
@@ -118,7 +118,7 @@ const TemplateRenderer = {
118
118
  // Override template hash with proxy resource, when hash override is configured for template
119
119
  const overrideRef = tx.createStruct(PlTemplateOverrideV1.type, JSON.stringify(PlTemplateOverrideV1.fromV3Data(resource)));
120
120
  const fld = PlTemplateOverrideV1.tplField(overrideRef);
121
- tx.createField(fld, 'Service');
121
+ tx.createField(fld, "Service");
122
122
  tx.setField(fld, tplRef);
123
123
  tx.lock(overrideRef);
124
124
  return overrideRef;
@@ -1 +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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"}
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>(\n resource: T,\n renderer: Renderer<T>,\n hashToSource: Record<string, string>,\n ): 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: (\n resource: T,\n tx: PlTransaction,\n creator: Creator,\n sources: Record<string, string>,\n ) => AnyResourceRef;\n};\ntype CacheKey<T> = (resource: T, key: Hash, sources: Record<string, string>) => void;\ntype Creator = <T>(\n resource: T,\n renderer: Renderer<T>,\n sources: Record<string, string>,\n) => 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(\n PlTemplateLibV1.fromV3Data(\n resource,\n getSourceCode(resource.name, sources, resource.sourceHash),\n ).data,\n ),\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(\n resource,\n getSourceCode(resource.name, sources, resource.sourceHash),\n );\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(\n PlTemplateV1.fromV3Data(\n resource,\n getSourceCode(resource.name, sources, resource.sourceHash),\n ).data,\n ),\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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"}
@@ -4,11 +4,11 @@ var plClient = require('@milaboratories/pl-client');
4
4
  var node_crypto = require('node:crypto');
5
5
  var render_template = require('./render_template.cjs');
6
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'];
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
12
  function createRenderHeavyBlock(tx, tpl, inputs) {
13
13
  return render_template.createRenderTemplate(tx, tpl, true, inputs, HeavyBlockOutputNames);
14
14
  }
@@ -24,10 +24,10 @@ function createBContextFromUpstreams(tx, upstreamCtxs) {
24
24
  return upstreamCtxs[0];
25
25
  const ctx = tx.createEphemeral(BContext);
26
26
  // setting id
27
- tx.createField(plClient.field(ctx, BContextId), 'Input', plClient.Pl.createPlString(tx, node_crypto.randomUUID()));
27
+ tx.createField(plClient.field(ctx, BContextId), "Input", plClient.Pl.createPlString(tx, node_crypto.randomUUID()));
28
28
  // setting parents
29
29
  for (let i = 0; i < upstreamCtxs.length; i++)
30
- tx.createField(plClient.field(ctx, `${BContextMultiParentPrefix}${i}`), 'Input', upstreamCtxs[i]);
30
+ tx.createField(plClient.field(ctx, `${BContextMultiParentPrefix}${i}`), "Input", upstreamCtxs[i]);
31
31
  tx.lock(ctx);
32
32
  return ctx;
33
33
  }