@milaboratories/pl-middle-layer 1.48.11 → 1.48.13

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 (589) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.cjs +59 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.114.0/helpers/usingCtx.js +58 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  4. package/dist/block_registry/index.cjs +3 -0
  5. package/dist/block_registry/index.d.ts +3 -4
  6. package/dist/block_registry/index.js +3 -0
  7. package/dist/block_registry/registry-v2-provider.cjs +18 -19
  8. package/dist/block_registry/registry-v2-provider.cjs.map +1 -1
  9. package/dist/block_registry/registry-v2-provider.d.ts +10 -6
  10. package/dist/block_registry/registry-v2-provider.js +17 -17
  11. package/dist/block_registry/registry-v2-provider.js.map +1 -1
  12. package/dist/block_registry/registry.cjs +188 -219
  13. package/dist/block_registry/registry.cjs.map +1 -1
  14. package/dist/block_registry/registry.d.ts +18 -14
  15. package/dist/block_registry/registry.js +184 -217
  16. package/dist/block_registry/registry.js.map +1 -1
  17. package/dist/block_registry/watcher.cjs +141 -170
  18. package/dist/block_registry/watcher.cjs.map +1 -1
  19. package/dist/block_registry/watcher.d.ts +26 -24
  20. package/dist/block_registry/watcher.js +139 -168
  21. package/dist/block_registry/watcher.js.map +1 -1
  22. package/dist/block_registry/well_known_registries.cjs +9 -8
  23. package/dist/block_registry/well_known_registries.cjs.map +1 -1
  24. package/dist/block_registry/well_known_registries.d.ts +8 -4
  25. package/dist/block_registry/well_known_registries.js +9 -7
  26. package/dist/block_registry/well_known_registries.js.map +1 -1
  27. package/dist/cfg_render/executor.cjs +136 -137
  28. package/dist/cfg_render/executor.cjs.map +1 -1
  29. package/dist/cfg_render/executor.js +133 -135
  30. package/dist/cfg_render/executor.js.map +1 -1
  31. package/dist/cfg_render/renderer.cjs +354 -462
  32. package/dist/cfg_render/renderer.cjs.map +1 -1
  33. package/dist/cfg_render/renderer.js +353 -460
  34. package/dist/cfg_render/renderer.js.map +1 -1
  35. package/dist/cfg_render/traverse.cjs +58 -60
  36. package/dist/cfg_render/traverse.cjs.map +1 -1
  37. package/dist/cfg_render/traverse.js +57 -58
  38. package/dist/cfg_render/traverse.js.map +1 -1
  39. package/dist/cfg_render/util.cjs +14 -19
  40. package/dist/cfg_render/util.cjs.map +1 -1
  41. package/dist/cfg_render/util.js +14 -17
  42. package/dist/cfg_render/util.js.map +1 -1
  43. package/dist/debug/index.cjs +13 -17
  44. package/dist/debug/index.cjs.map +1 -1
  45. package/dist/debug/index.js +13 -16
  46. package/dist/debug/index.js.map +1 -1
  47. package/dist/dev_env/index.cjs +60 -44
  48. package/dist/dev_env/index.cjs.map +1 -1
  49. package/dist/dev_env/index.js +57 -33
  50. package/dist/dev_env/index.js.map +1 -1
  51. package/dist/dev_env/util.cjs +12 -32
  52. package/dist/dev_env/util.cjs.map +1 -1
  53. package/dist/dev_env/util.js +10 -11
  54. package/dist/dev_env/util.js.map +1 -1
  55. package/dist/index.cjs +75 -74
  56. package/dist/index.d.ts +21 -13
  57. package/dist/index.js +25 -18
  58. package/dist/js_render/computable_context.cjs +432 -568
  59. package/dist/js_render/computable_context.cjs.map +1 -1
  60. package/dist/js_render/computable_context.js +431 -566
  61. package/dist/js_render/computable_context.js.map +1 -1
  62. package/dist/js_render/context.cjs +184 -237
  63. package/dist/js_render/context.cjs.map +1 -1
  64. package/dist/js_render/context.js +184 -235
  65. package/dist/js_render/context.js.map +1 -1
  66. package/dist/js_render/index.cjs +137 -156
  67. package/dist/js_render/index.cjs.map +1 -1
  68. package/dist/js_render/index.js +136 -154
  69. package/dist/js_render/index.js.map +1 -1
  70. package/dist/middle_layer/active_cfg.cjs +28 -35
  71. package/dist/middle_layer/active_cfg.cjs.map +1 -1
  72. package/dist/middle_layer/active_cfg.js +27 -33
  73. package/dist/middle_layer/active_cfg.js.map +1 -1
  74. package/dist/middle_layer/block.cjs +36 -42
  75. package/dist/middle_layer/block.cjs.map +1 -1
  76. package/dist/middle_layer/block.js +35 -40
  77. package/dist/middle_layer/block.js.map +1 -1
  78. package/dist/middle_layer/block_ctx.cjs +91 -133
  79. package/dist/middle_layer/block_ctx.cjs.map +1 -1
  80. package/dist/middle_layer/block_ctx.js +90 -131
  81. package/dist/middle_layer/block_ctx.js.map +1 -1
  82. package/dist/middle_layer/block_ctx_unsafe.cjs +20 -19
  83. package/dist/middle_layer/block_ctx_unsafe.cjs.map +1 -1
  84. package/dist/middle_layer/block_ctx_unsafe.js +20 -18
  85. package/dist/middle_layer/block_ctx_unsafe.js.map +1 -1
  86. package/dist/middle_layer/driver_kit.cjs +47 -51
  87. package/dist/middle_layer/driver_kit.cjs.map +1 -1
  88. package/dist/middle_layer/driver_kit.d.ts +31 -27
  89. package/dist/middle_layer/driver_kit.js +46 -49
  90. package/dist/middle_layer/driver_kit.js.map +1 -1
  91. package/dist/middle_layer/frontend_path.cjs +49 -55
  92. package/dist/middle_layer/frontend_path.cjs.map +1 -1
  93. package/dist/middle_layer/frontend_path.js +48 -53
  94. package/dist/middle_layer/frontend_path.js.map +1 -1
  95. package/dist/middle_layer/index.cjs +4 -0
  96. package/dist/middle_layer/index.d.ts +4 -5
  97. package/dist/middle_layer/index.js +4 -0
  98. package/dist/middle_layer/middle_layer.cjs +216 -245
  99. package/dist/middle_layer/middle_layer.cjs.map +1 -1
  100. package/dist/middle_layer/middle_layer.d.ts +95 -91
  101. package/dist/middle_layer/middle_layer.js +215 -243
  102. package/dist/middle_layer/middle_layer.js.map +1 -1
  103. package/dist/middle_layer/navigation_states.cjs +45 -38
  104. package/dist/middle_layer/navigation_states.cjs.map +1 -1
  105. package/dist/middle_layer/navigation_states.js +44 -36
  106. package/dist/middle_layer/navigation_states.js.map +1 -1
  107. package/dist/middle_layer/ops.cjs +56 -57
  108. package/dist/middle_layer/ops.cjs.map +1 -1
  109. package/dist/middle_layer/ops.d.ts +86 -96
  110. package/dist/middle_layer/ops.js +54 -55
  111. package/dist/middle_layer/ops.js.map +1 -1
  112. package/dist/middle_layer/project.cjs +497 -527
  113. package/dist/middle_layer/project.cjs.map +1 -1
  114. package/dist/middle_layer/project.d.ts +155 -152
  115. package/dist/middle_layer/project.js +494 -525
  116. package/dist/middle_layer/project.js.map +1 -1
  117. package/dist/middle_layer/project_list.cjs +45 -43
  118. package/dist/middle_layer/project_list.cjs.map +1 -1
  119. package/dist/middle_layer/project_list.js +45 -41
  120. package/dist/middle_layer/project_list.js.map +1 -1
  121. package/dist/middle_layer/project_overview.cjs +202 -240
  122. package/dist/middle_layer/project_overview.cjs.map +1 -1
  123. package/dist/middle_layer/project_overview.js +201 -238
  124. package/dist/middle_layer/project_overview.js.map +1 -1
  125. package/dist/middle_layer/project_overview_light.cjs +11 -14
  126. package/dist/middle_layer/project_overview_light.cjs.map +1 -1
  127. package/dist/middle_layer/project_overview_light.js +10 -12
  128. package/dist/middle_layer/project_overview_light.js.map +1 -1
  129. package/dist/middle_layer/render.cjs +14 -18
  130. package/dist/middle_layer/render.cjs.map +1 -1
  131. package/dist/middle_layer/render.js +13 -16
  132. package/dist/middle_layer/render.js.map +1 -1
  133. package/dist/middle_layer/types.d.ts +7 -10
  134. package/dist/middle_layer/util.cjs +26 -21
  135. package/dist/middle_layer/util.cjs.map +1 -1
  136. package/dist/middle_layer/util.js +25 -19
  137. package/dist/middle_layer/util.js.map +1 -1
  138. package/dist/model/args.cjs +44 -53
  139. package/dist/model/args.cjs.map +1 -1
  140. package/dist/model/args.js +44 -51
  141. package/dist/model/args.js.map +1 -1
  142. package/dist/model/block_pack_spec.cjs +9 -5
  143. package/dist/model/block_pack_spec.cjs.map +1 -1
  144. package/dist/model/block_pack_spec.d.ts +34 -30
  145. package/dist/model/block_pack_spec.js +9 -4
  146. package/dist/model/block_pack_spec.js.map +1 -1
  147. package/dist/model/frontend.d.ts +8 -5
  148. package/dist/model/index.d.ts +2 -3
  149. package/dist/model/project_helper.cjs +154 -193
  150. package/dist/model/project_helper.cjs.map +1 -1
  151. package/dist/model/project_helper.d.ts +96 -92
  152. package/dist/model/project_helper.js +153 -191
  153. package/dist/model/project_helper.js.map +1 -1
  154. package/dist/model/project_model.cjs +33 -32
  155. package/dist/model/project_model.cjs.map +1 -1
  156. package/dist/model/project_model.d.ts +13 -64
  157. package/dist/model/project_model.js +34 -30
  158. package/dist/model/project_model.js.map +1 -1
  159. package/dist/model/project_model_util.cjs +119 -158
  160. package/dist/model/project_model_util.cjs.map +1 -1
  161. package/dist/model/project_model_util.js +120 -156
  162. package/dist/model/project_model_util.js.map +1 -1
  163. package/dist/model/project_model_v1.cjs +3 -2
  164. package/dist/model/project_model_v1.cjs.map +1 -1
  165. package/dist/model/project_model_v1.js +3 -1
  166. package/dist/model/project_model_v1.js.map +1 -1
  167. package/dist/model/template_spec.d.ts +20 -16
  168. package/dist/mutator/block-pack/block_pack.cjs +200 -223
  169. package/dist/mutator/block-pack/block_pack.cjs.map +1 -1
  170. package/dist/mutator/block-pack/block_pack.d.ts +20 -19
  171. package/dist/mutator/block-pack/block_pack.js +199 -221
  172. package/dist/mutator/block-pack/block_pack.js.map +1 -1
  173. package/dist/mutator/block-pack/frontend.cjs +14 -16
  174. package/dist/mutator/block-pack/frontend.cjs.map +1 -1
  175. package/dist/mutator/block-pack/frontend.js +13 -14
  176. package/dist/mutator/block-pack/frontend.js.map +1 -1
  177. package/dist/mutator/context_export.cjs +18 -17
  178. package/dist/mutator/context_export.cjs.map +1 -1
  179. package/dist/mutator/context_export.js +17 -15
  180. package/dist/mutator/context_export.js.map +1 -1
  181. package/dist/mutator/migration.cjs +86 -112
  182. package/dist/mutator/migration.cjs.map +1 -1
  183. package/dist/mutator/migration.js +85 -110
  184. package/dist/mutator/migration.js.map +1 -1
  185. package/dist/mutator/project.cjs +903 -1240
  186. package/dist/mutator/project.cjs.map +1 -1
  187. package/dist/mutator/project.js +901 -1237
  188. package/dist/mutator/project.js.map +1 -1
  189. package/dist/mutator/template/direct_template_loader.cjs +104 -130
  190. package/dist/mutator/template/direct_template_loader.cjs.map +1 -1
  191. package/dist/mutator/template/direct_template_loader.js +103 -128
  192. package/dist/mutator/template/direct_template_loader.js.map +1 -1
  193. package/dist/mutator/template/direct_template_loader_v3.cjs +104 -124
  194. package/dist/mutator/template/direct_template_loader_v3.cjs.map +1 -1
  195. package/dist/mutator/template/direct_template_loader_v3.js +103 -122
  196. package/dist/mutator/template/direct_template_loader_v3.js.map +1 -1
  197. package/dist/mutator/template/render_block.cjs +26 -30
  198. package/dist/mutator/template/render_block.cjs.map +1 -1
  199. package/dist/mutator/template/render_block.js +26 -23
  200. package/dist/mutator/template/render_block.js.map +1 -1
  201. package/dist/mutator/template/render_template.cjs +25 -25
  202. package/dist/mutator/template/render_template.cjs.map +1 -1
  203. package/dist/mutator/template/render_template.d.ts +6 -3
  204. package/dist/mutator/template/render_template.js +24 -23
  205. package/dist/mutator/template/render_template.js.map +1 -1
  206. package/dist/mutator/template/template_loading.cjs +42 -46
  207. package/dist/mutator/template/template_loading.cjs.map +1 -1
  208. package/dist/mutator/template/template_loading.d.ts +16 -12
  209. package/dist/mutator/template/template_loading.js +40 -44
  210. package/dist/mutator/template/template_loading.js.map +1 -1
  211. package/dist/network_check/network_check.cjs +149 -194
  212. package/dist/network_check/network_check.cjs.map +1 -1
  213. package/dist/network_check/network_check.d.ts +50 -66
  214. package/dist/network_check/network_check.js +146 -190
  215. package/dist/network_check/network_check.js.map +1 -1
  216. package/dist/network_check/pings.cjs +71 -69
  217. package/dist/network_check/pings.cjs.map +1 -1
  218. package/dist/network_check/pings.js +71 -65
  219. package/dist/network_check/pings.js.map +1 -1
  220. package/dist/network_check/template.cjs +256 -273
  221. package/dist/network_check/template.cjs.map +1 -1
  222. package/dist/network_check/template.js +253 -265
  223. package/dist/network_check/template.js.map +1 -1
  224. package/dist/pool/data.cjs +205 -226
  225. package/dist/pool/data.cjs.map +1 -1
  226. package/dist/pool/data.d.ts +10 -27
  227. package/dist/pool/data.js +196 -209
  228. package/dist/pool/data.js.map +1 -1
  229. package/dist/pool/driver.cjs +180 -207
  230. package/dist/pool/driver.cjs.map +1 -1
  231. package/dist/pool/driver.d.ts +12 -17
  232. package/dist/pool/driver.js +178 -205
  233. package/dist/pool/driver.js.map +1 -1
  234. package/dist/pool/index.cjs +2 -0
  235. package/dist/pool/index.d.ts +2 -3
  236. package/dist/pool/index.js +2 -0
  237. package/dist/pool/p_object_collection.cjs +67 -79
  238. package/dist/pool/p_object_collection.cjs.map +1 -1
  239. package/dist/pool/p_object_collection.d.ts +7 -28
  240. package/dist/pool/p_object_collection.js +65 -77
  241. package/dist/pool/p_object_collection.js.map +1 -1
  242. package/dist/pool/result_pool.cjs +217 -262
  243. package/dist/pool/result_pool.cjs.map +1 -1
  244. package/dist/pool/result_pool.d.ts +4 -27
  245. package/dist/pool/result_pool.js +216 -260
  246. package/dist/pool/result_pool.js.map +1 -1
  247. package/dist/worker/WorkerManager.cjs +51 -49
  248. package/dist/worker/WorkerManager.cjs.map +1 -1
  249. package/dist/worker/WorkerManager.js +49 -47
  250. package/dist/worker/WorkerManager.js.map +1 -1
  251. package/dist/worker/worker.cjs +19 -15
  252. package/dist/worker/worker.cjs.map +1 -1
  253. package/dist/worker/worker.d.ts +1 -2
  254. package/dist/worker/worker.js +18 -13
  255. package/dist/worker/worker.js.map +1 -1
  256. package/dist/worker/workerApi.cjs +14 -18
  257. package/dist/worker/workerApi.cjs.map +1 -1
  258. package/dist/worker/workerApi.js +13 -16
  259. package/dist/worker/workerApi.js.map +1 -1
  260. package/package.json +24 -24
  261. package/src/mutator/template/template_render.test.ts +22 -18
  262. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs +0 -77
  263. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.cjs.map +0 -1
  264. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js +0 -74
  265. package/dist/__external/.pnpm/@rollup_plugin-typescript@12.3.0_rollup@4.52.4_tslib@2.8.1_typescript@5.6.3/__external/tslib/tslib.es6.js.map +0 -1
  266. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.cjs +0 -162
  267. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.cjs.map +0 -1
  268. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.js +0 -160
  269. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/comparator.js.map +0 -1
  270. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.cjs +0 -576
  271. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.cjs.map +0 -1
  272. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.js +0 -574
  273. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/range.js.map +0 -1
  274. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.cjs +0 -337
  275. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.cjs.map +0 -1
  276. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.js +0 -335
  277. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/classes/semver.js.map +0 -1
  278. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.cjs +0 -22
  279. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.cjs.map +0 -1
  280. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.js +0 -20
  281. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/clean.js.map +0 -1
  282. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.cjs +0 -73
  283. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.cjs.map +0 -1
  284. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.js +0 -71
  285. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/cmp.js.map +0 -1
  286. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.cjs +0 -78
  287. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.cjs.map +0 -1
  288. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.js +0 -76
  289. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/coerce.js.map +0 -1
  290. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.cjs +0 -23
  291. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.cjs.map +0 -1
  292. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.js +0 -21
  293. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-build.js.map +0 -1
  294. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.cjs +0 -19
  295. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.cjs.map +0 -1
  296. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.js +0 -17
  297. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare-loose.js.map +0 -1
  298. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.cjs +0 -21
  299. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.cjs.map +0 -1
  300. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.js +0 -19
  301. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/compare.js.map +0 -1
  302. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.cjs +0 -74
  303. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.cjs.map +0 -1
  304. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.js +0 -72
  305. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/diff.js.map +0 -1
  306. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.cjs +0 -19
  307. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.cjs.map +0 -1
  308. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.js +0 -17
  309. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/eq.js.map +0 -1
  310. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.cjs +0 -19
  311. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.cjs.map +0 -1
  312. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.js +0 -17
  313. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gt.js.map +0 -1
  314. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.cjs +0 -19
  315. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.cjs.map +0 -1
  316. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.js +0 -17
  317. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/gte.js.map +0 -1
  318. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.cjs +0 -35
  319. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.cjs.map +0 -1
  320. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.js +0 -33
  321. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/inc.js.map +0 -1
  322. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.cjs +0 -19
  323. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.cjs.map +0 -1
  324. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.js +0 -17
  325. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lt.js.map +0 -1
  326. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.cjs +0 -19
  327. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.cjs.map +0 -1
  328. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.js +0 -17
  329. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/lte.js.map +0 -1
  330. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.cjs +0 -19
  331. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.cjs.map +0 -1
  332. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.js +0 -17
  333. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/major.js.map +0 -1
  334. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.cjs +0 -19
  335. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.cjs.map +0 -1
  336. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.js +0 -17
  337. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/minor.js.map +0 -1
  338. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.cjs +0 -19
  339. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.cjs.map +0 -1
  340. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.js +0 -17
  341. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/neq.js.map +0 -1
  342. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.cjs +0 -32
  343. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.cjs.map +0 -1
  344. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.js +0 -30
  345. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/parse.js.map +0 -1
  346. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.cjs +0 -19
  347. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.cjs.map +0 -1
  348. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.js +0 -17
  349. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/patch.js.map +0 -1
  350. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.cjs +0 -22
  351. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.cjs.map +0 -1
  352. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.js +0 -20
  353. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/prerelease.js.map +0 -1
  354. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.cjs +0 -19
  355. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.cjs.map +0 -1
  356. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.js +0 -17
  357. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rcompare.js.map +0 -1
  358. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.cjs +0 -19
  359. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.cjs.map +0 -1
  360. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.js +0 -17
  361. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/rsort.js.map +0 -1
  362. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.cjs +0 -26
  363. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.cjs.map +0 -1
  364. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.js +0 -24
  365. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/satisfies.js.map +0 -1
  366. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.cjs +0 -19
  367. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.cjs.map +0 -1
  368. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.js +0 -17
  369. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/sort.js.map +0 -1
  370. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.cjs +0 -22
  371. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.cjs.map +0 -1
  372. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.js +0 -20
  373. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/functions/valid.js.map +0 -1
  374. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.cjs +0 -145
  375. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.cjs.map +0 -1
  376. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.js +0 -143
  377. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/index.js.map +0 -1
  378. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.cjs +0 -49
  379. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.cjs.map +0 -1
  380. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.js +0 -47
  381. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/constants.js.map +0 -1
  382. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.cjs +0 -23
  383. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.cjs.map +0 -1
  384. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.js +0 -21
  385. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/debug.js.map +0 -1
  386. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.cjs +0 -37
  387. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.cjs.map +0 -1
  388. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.js +0 -35
  389. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/identifiers.js.map +0 -1
  390. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.cjs +0 -54
  391. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.cjs.map +0 -1
  392. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.js +0 -52
  393. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/lrucache.js.map +0 -1
  394. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.cjs +0 -29
  395. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.cjs.map +0 -1
  396. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.js +0 -27
  397. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/parse-options.js.map +0 -1
  398. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.cjs +0 -240
  399. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.cjs.map +0 -1
  400. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.js +0 -238
  401. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/internal/re.js.map +0 -1
  402. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.cjs +0 -20
  403. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.cjs.map +0 -1
  404. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.js +0 -18
  405. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/gtr.js.map +0 -1
  406. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.cjs +0 -23
  407. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.cjs.map +0 -1
  408. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.js +0 -21
  409. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/intersects.js.map +0 -1
  410. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.cjs +0 -20
  411. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.cjs.map +0 -1
  412. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.js +0 -18
  413. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/ltr.js.map +0 -1
  414. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.cjs +0 -42
  415. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.cjs.map +0 -1
  416. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.js +0 -40
  417. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/max-satisfying.js.map +0 -1
  418. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.cjs +0 -41
  419. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.cjs.map +0 -1
  420. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.js +0 -39
  421. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-satisfying.js.map +0 -1
  422. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.cjs +0 -79
  423. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.cjs.map +0 -1
  424. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.js +0 -77
  425. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/min-version.js.map +0 -1
  426. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.cjs +0 -103
  427. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.cjs.map +0 -1
  428. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.js +0 -101
  429. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/outside.js.map +0 -1
  430. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.cjs +0 -64
  431. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.cjs.map +0 -1
  432. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.js +0 -62
  433. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/simplify.js.map +0 -1
  434. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.cjs +0 -266
  435. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.cjs.map +0 -1
  436. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.js +0 -264
  437. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/subset.js.map +0 -1
  438. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.cjs +0 -24
  439. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.cjs.map +0 -1
  440. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.js +0 -22
  441. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/to-comparators.js.map +0 -1
  442. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.cjs +0 -27
  443. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.cjs.map +0 -1
  444. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.js +0 -25
  445. package/dist/__external/.pnpm/semver@7.7.2/__external/semver/ranges/valid.js.map +0 -1
  446. package/dist/_virtual/index.cjs +0 -8
  447. package/dist/_virtual/index.cjs.map +0 -1
  448. package/dist/_virtual/index.js +0 -6
  449. package/dist/_virtual/index.js.map +0 -1
  450. package/dist/_virtual/re.cjs +0 -6
  451. package/dist/_virtual/re.cjs.map +0 -1
  452. package/dist/_virtual/re.js +0 -4
  453. package/dist/_virtual/re.js.map +0 -1
  454. package/dist/block_registry/index.d.ts.map +0 -1
  455. package/dist/block_registry/registry-v2-provider.d.ts.map +0 -1
  456. package/dist/block_registry/registry.d.ts.map +0 -1
  457. package/dist/block_registry/registry.test.d.ts +0 -2
  458. package/dist/block_registry/registry.test.d.ts.map +0 -1
  459. package/dist/block_registry/watcher.d.ts.map +0 -1
  460. package/dist/block_registry/well_known_registries.d.ts.map +0 -1
  461. package/dist/cfg_render/executor.d.ts +0 -9
  462. package/dist/cfg_render/executor.d.ts.map +0 -1
  463. package/dist/cfg_render/executor.test.d.ts +0 -2
  464. package/dist/cfg_render/executor.test.d.ts.map +0 -1
  465. package/dist/cfg_render/operation.d.ts +0 -29
  466. package/dist/cfg_render/operation.d.ts.map +0 -1
  467. package/dist/cfg_render/renderer.d.ts +0 -6
  468. package/dist/cfg_render/renderer.d.ts.map +0 -1
  469. package/dist/cfg_render/traverse.d.ts +0 -3
  470. package/dist/cfg_render/traverse.d.ts.map +0 -1
  471. package/dist/cfg_render/util.d.ts +0 -5
  472. package/dist/cfg_render/util.d.ts.map +0 -1
  473. package/dist/debug/index.d.ts +0 -9
  474. package/dist/debug/index.d.ts.map +0 -1
  475. package/dist/dev_env/index.d.ts +0 -21
  476. package/dist/dev_env/index.d.ts.map +0 -1
  477. package/dist/dev_env/util.d.ts +0 -3
  478. package/dist/dev_env/util.d.ts.map +0 -1
  479. package/dist/index.cjs.map +0 -1
  480. package/dist/index.d.ts.map +0 -1
  481. package/dist/index.js.map +0 -1
  482. package/dist/js_render/computable_context.d.ts +0 -74
  483. package/dist/js_render/computable_context.d.ts.map +0 -1
  484. package/dist/js_render/context.d.ts +0 -73
  485. package/dist/js_render/context.d.ts.map +0 -1
  486. package/dist/js_render/index.d.ts +0 -57
  487. package/dist/js_render/index.d.ts.map +0 -1
  488. package/dist/middle_layer/active_cfg.d.ts +0 -6
  489. package/dist/middle_layer/active_cfg.d.ts.map +0 -1
  490. package/dist/middle_layer/block.d.ts +0 -10
  491. package/dist/middle_layer/block.d.ts.map +0 -1
  492. package/dist/middle_layer/block_ctx.d.ts +0 -23
  493. package/dist/middle_layer/block_ctx.d.ts.map +0 -1
  494. package/dist/middle_layer/block_ctx_unsafe.d.ts +0 -16
  495. package/dist/middle_layer/block_ctx_unsafe.d.ts.map +0 -1
  496. package/dist/middle_layer/driver_kit.d.ts.map +0 -1
  497. package/dist/middle_layer/frontend_path.d.ts +0 -6
  498. package/dist/middle_layer/frontend_path.d.ts.map +0 -1
  499. package/dist/middle_layer/index.d.ts.map +0 -1
  500. package/dist/middle_layer/middle_layer.d.ts.map +0 -1
  501. package/dist/middle_layer/navigation_states.d.ts +0 -10
  502. package/dist/middle_layer/navigation_states.d.ts.map +0 -1
  503. package/dist/middle_layer/ops.d.ts.map +0 -1
  504. package/dist/middle_layer/project.d.ts.map +0 -1
  505. package/dist/middle_layer/project_list.d.ts +0 -11
  506. package/dist/middle_layer/project_list.d.ts.map +0 -1
  507. package/dist/middle_layer/project_overview.d.ts +0 -8
  508. package/dist/middle_layer/project_overview.d.ts.map +0 -1
  509. package/dist/middle_layer/project_overview_light.d.ts +0 -8
  510. package/dist/middle_layer/project_overview_light.d.ts.map +0 -1
  511. package/dist/middle_layer/render.d.ts +0 -7
  512. package/dist/middle_layer/render.d.ts.map +0 -1
  513. package/dist/middle_layer/render.test.d.ts +0 -5
  514. package/dist/middle_layer/render.test.d.ts.map +0 -1
  515. package/dist/middle_layer/types.d.ts.map +0 -1
  516. package/dist/middle_layer/util.d.ts +0 -16
  517. package/dist/middle_layer/util.d.ts.map +0 -1
  518. package/dist/model/args.d.ts +0 -14
  519. package/dist/model/args.d.ts.map +0 -1
  520. package/dist/model/block_pack.d.ts +0 -8
  521. package/dist/model/block_pack.d.ts.map +0 -1
  522. package/dist/model/block_pack_spec.d.ts.map +0 -1
  523. package/dist/model/frontend.d.ts.map +0 -1
  524. package/dist/model/index.d.ts.map +0 -1
  525. package/dist/model/project_helper.d.ts.map +0 -1
  526. package/dist/model/project_model.d.ts.map +0 -1
  527. package/dist/model/project_model.test.d.ts +0 -2
  528. package/dist/model/project_model.test.d.ts.map +0 -1
  529. package/dist/model/project_model_util.d.ts +0 -43
  530. package/dist/model/project_model_util.d.ts.map +0 -1
  531. package/dist/model/project_model_util.test.d.ts +0 -2
  532. package/dist/model/project_model_util.test.d.ts.map +0 -1
  533. package/dist/model/project_model_v1.d.ts +0 -8
  534. package/dist/model/project_model_v1.d.ts.map +0 -1
  535. package/dist/model/template_spec.d.ts.map +0 -1
  536. package/dist/mutator/block-pack/block_pack.d.ts.map +0 -1
  537. package/dist/mutator/block-pack/block_pack.test.d.ts +0 -2
  538. package/dist/mutator/block-pack/block_pack.test.d.ts.map +0 -1
  539. package/dist/mutator/block-pack/frontend.d.ts +0 -4
  540. package/dist/mutator/block-pack/frontend.d.ts.map +0 -1
  541. package/dist/mutator/context_export.d.ts +0 -9
  542. package/dist/mutator/context_export.d.ts.map +0 -1
  543. package/dist/mutator/migration.d.ts +0 -9
  544. package/dist/mutator/migration.d.ts.map +0 -1
  545. package/dist/mutator/project-v3.test.d.ts +0 -2
  546. package/dist/mutator/project-v3.test.d.ts.map +0 -1
  547. package/dist/mutator/project.d.ts +0 -211
  548. package/dist/mutator/project.d.ts.map +0 -1
  549. package/dist/mutator/project.test.d.ts +0 -2
  550. package/dist/mutator/project.test.d.ts.map +0 -1
  551. package/dist/mutator/template/direct_template_loader.d.ts +0 -5
  552. package/dist/mutator/template/direct_template_loader.d.ts.map +0 -1
  553. package/dist/mutator/template/direct_template_loader_v3.d.ts +0 -15
  554. package/dist/mutator/template/direct_template_loader_v3.d.ts.map +0 -1
  555. package/dist/mutator/template/render_block.d.ts +0 -32
  556. package/dist/mutator/template/render_block.d.ts.map +0 -1
  557. package/dist/mutator/template/render_template.d.ts.map +0 -1
  558. package/dist/mutator/template/template_loading.d.ts.map +0 -1
  559. package/dist/mutator/template/template_render.test.d.ts +0 -2
  560. package/dist/mutator/template/template_render.test.d.ts.map +0 -1
  561. package/dist/network_check/network_check.d.ts.map +0 -1
  562. package/dist/network_check/network_check.test.d.ts +0 -2
  563. package/dist/network_check/network_check.test.d.ts.map +0 -1
  564. package/dist/network_check/pings.d.ts +0 -32
  565. package/dist/network_check/pings.d.ts.map +0 -1
  566. package/dist/network_check/template.d.ts +0 -57
  567. package/dist/network_check/template.d.ts.map +0 -1
  568. package/dist/network_check/template.test.d.ts +0 -2
  569. package/dist/network_check/template.test.d.ts.map +0 -1
  570. package/dist/network_check/test_utils.d.ts +0 -6
  571. package/dist/network_check/test_utils.d.ts.map +0 -1
  572. package/dist/pool/data.d.ts.map +0 -1
  573. package/dist/pool/driver.d.ts.map +0 -1
  574. package/dist/pool/index.d.ts.map +0 -1
  575. package/dist/pool/p_object_collection.d.ts.map +0 -1
  576. package/dist/pool/result_pool.d.ts.map +0 -1
  577. package/dist/test/block_packs.d.ts +0 -6
  578. package/dist/test/block_packs.d.ts.map +0 -1
  579. package/dist/test/explicit_templates.d.ts +0 -3
  580. package/dist/test/explicit_templates.d.ts.map +0 -1
  581. package/dist/test/known_templates.d.ts +0 -6
  582. package/dist/test/known_templates.d.ts.map +0 -1
  583. package/dist/test_env.d.ts +0 -6
  584. package/dist/test_env.d.ts.map +0 -1
  585. package/dist/worker/WorkerManager.d.ts +0 -12
  586. package/dist/worker/WorkerManager.d.ts.map +0 -1
  587. package/dist/worker/worker.d.ts.map +0 -1
  588. package/dist/worker/workerApi.d.ts +0 -15
  589. package/dist/worker/workerApi.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sources":["../../src/pool/data.ts"],"sourcesContent":["import {\n PFrameDriverError,\n type BinaryChunk,\n type ParquetChunk,\n type ParquetChunkMapping,\n type ParquetChunkMetadata,\n type PColumnValue,\n type PlRef,\n type PObjectId,\n type PObjectSpec,\n} from \"@platforma-sdk/model\";\nimport type { PlTreeEntry, PlTreeNodeAccessor } from \"@milaboratories/pl-tree\";\nimport canonicalize from \"canonicalize\";\nimport {\n isNullResourceId,\n resourceType,\n resourceTypeToString,\n resourceTypesEqual,\n} from \"@milaboratories/pl-client\";\nimport type { Writable } from \"utility-types\";\nimport { createHash } from \"node:crypto\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\n\nexport const PColumnDataJsonPartitioned = resourceType(\"PColumnData/JsonPartitioned\", \"1\");\nexport const PColumnDataJsonSuperPartitioned = resourceType(\n \"PColumnData/Partitioned/JsonPartitioned\",\n \"1\",\n);\nexport const PColumnDataBinaryPartitioned = resourceType(\"PColumnData/BinaryPartitioned\", \"1\");\nexport const PColumnDataBinarySuperPartitioned = resourceType(\n \"PColumnData/Partitioned/BinaryPartitioned\",\n \"1\",\n);\nexport const PColumnDataParquetPartitioned = resourceType(\"PColumnData/ParquetPartitioned\", \"1\");\nexport const PColumnDataParquetSuperPartitioned = resourceType(\n \"PColumnData/Partitioned/ParquetPartitioned\",\n \"1\",\n);\nexport const PColumnDataJson = resourceType(\"PColumnData/Json\", \"1\");\n\nexport const ParquetChunkResourceType = resourceType(\"ParquetChunk\", \"1\");\n\nexport type PColumnDataJsonResourceValue = {\n keyLength: number;\n data: Record<string, PColumnValue>;\n};\n\nexport type PColumnDataPartitionedResourceValue = {\n partitionKeyLength: number;\n};\n\nexport type PColumnDataSuperPartitionedResourceValue = {\n superPartitionKeyLength: number;\n partitionKeyLength: number;\n};\n\nconst BinaryPartitionedIndexFieldSuffix = \".index\";\nconst BinaryPartitionedValuesFieldSuffix = \".values\";\n\nexport function parseDataInfoResource(\n data: PlTreeNodeAccessor,\n): PFrameInternal.DataInfo<PlTreeEntry> {\n if (!data.getIsReadyOrError()) throw new PFrameDriverError(\"Data not ready.\");\n\n const resourceData = data.getDataAsJson();\n if (resourceData === undefined)\n throw new PFrameDriverError(\"unexpected data info structure, no resource data\");\n\n if (resourceTypesEqual(data.resourceType, PColumnDataJson)) {\n const dataContent = resourceData as PColumnDataJsonResourceValue;\n\n return {\n type: \"Json\",\n keyLength: dataContent.keyLength,\n data: dataContent.data,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataJsonPartitioned)) {\n const meta = resourceData as PColumnDataPartitionedResourceValue;\n\n const parts = Object.fromEntries(\n data\n .listInputFields()\n .map((field) => [field, data.traverse({ field, errorIfFieldNotSet: true }).persist()]),\n );\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataJsonSuperPartitioned)) {\n const meta = resourceData as PColumnDataSuperPartitionedResourceValue;\n\n const parts: Record<string, PlTreeEntry> = {};\n for (const superKey of data.listInputFields()) {\n const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });\n const keys = superPart.listInputFields();\n if (keys === undefined)\n throw new PFrameDriverError(`no partition keys for super key ${superKey}`);\n\n for (const key of keys) {\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n parts[partKey] = superPart.traverse({ field: key, errorIfFieldNotSet: true }).persist();\n }\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,\n parts,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataBinaryPartitioned)) {\n const meta = resourceData as PColumnDataPartitionedResourceValue;\n\n const parts: Record<string, Partial<Writable<BinaryChunk<PlTreeEntry>>>> = {};\n\n // parsing the structure\n for (const field of data.listInputFields()) {\n if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {\n const partKey = field.slice(0, -BinaryPartitionedIndexFieldSuffix.length);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n part.index = data.traverse({ field, errorIfFieldNotSet: true }).persist();\n } else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {\n const partKey = field.slice(0, -BinaryPartitionedValuesFieldSuffix.length);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n part.values = data.traverse({ field, errorIfFieldNotSet: true }).persist();\n } else throw new PFrameDriverError(`unrecognized part field name: ${field}`);\n }\n\n // structure validation\n for (const [key, part] of Object.entries(parts)) {\n if (part.index === undefined) throw new PFrameDriverError(`no index for part ${key}`);\n if (part.values === undefined) throw new PFrameDriverError(`no values for part ${key}`);\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts: parts as Record<string, BinaryChunk<PlTreeEntry>>,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataBinarySuperPartitioned)) {\n const meta = resourceData as PColumnDataSuperPartitionedResourceValue;\n\n const parts: Record<string, Partial<Writable<BinaryChunk<PlTreeEntry>>>> = {};\n for (const superKey of data.listInputFields()) {\n const superData = data.traverse({ field: superKey, errorIfFieldNotSet: true });\n const keys = superData.listInputFields();\n if (keys === undefined)\n throw new PFrameDriverError(`no partition keys for super key ${superKey}`);\n\n for (const field of keys) {\n if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {\n const key = field.slice(0, -BinaryPartitionedIndexFieldSuffix.length);\n\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n parts[partKey].index = superData\n .traverse({\n field,\n errorIfFieldNotSet: true,\n })\n .persist();\n } else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {\n const key = field.slice(0, -BinaryPartitionedValuesFieldSuffix.length);\n\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n parts[partKey].values = superData\n .traverse({\n field,\n errorIfFieldNotSet: true,\n })\n .persist();\n } else throw new PFrameDriverError(`unrecognized part field name: ${field}`);\n }\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,\n parts: parts as Record<string, BinaryChunk<PlTreeEntry>>,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataParquetPartitioned)) {\n const meta = resourceData as PColumnDataPartitionedResourceValue;\n\n const parts: Record<string, ParquetChunk<PlTreeEntry>> = {};\n for (const key of data.listInputFields()) {\n const resource = data.traverse({\n field: key,\n assertFieldType: \"Input\",\n errorIfFieldNotSet: true,\n });\n\n parts[key] = traverseParquetChunkResource(resource);\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataParquetSuperPartitioned)) {\n const meta = resourceData as PColumnDataSuperPartitionedResourceValue;\n\n const parts: Record<string, ParquetChunk<PlTreeEntry>> = {};\n for (const superKey of data.listInputFields()) {\n const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });\n const keys = superPart.listInputFields();\n if (keys === undefined)\n throw new PFrameDriverError(`no partition keys for super key ${superKey}`);\n\n for (const key of keys) {\n const resource = data.traverse({ field: key, errorIfFieldNotSet: true });\n\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n parts[partKey] = traverseParquetChunkResource(resource);\n }\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,\n parts,\n };\n }\n\n throw new PFrameDriverError(\n `unsupported resource type: ${resourceTypeToString(data.resourceType)}`,\n );\n}\n\nexport function traverseParquetChunkResource(\n resource: PlTreeNodeAccessor,\n): ParquetChunk<PlTreeEntry> {\n if (!resourceTypesEqual(resource.resourceType, ParquetChunkResourceType)) {\n throw new PFrameDriverError(\n `unknown resource type: ${resourceTypeToString(resource.resourceType)}, ` +\n `expected: ${resourceTypeToString(ParquetChunkResourceType)}`,\n );\n }\n\n const blob = resource\n .traverse({ field: \"blob\", assertFieldType: \"Service\", errorIfFieldNotSet: true })\n .persist();\n const partInfo = resource.getDataAsJson() as ParquetChunkMetadata;\n const mapping = resource\n .traverse({ field: \"mapping\", assertFieldType: \"Service\", errorIfFieldNotSet: true })\n .getDataAsJson() as ParquetChunkMapping;\n\n return {\n data: blob,\n ...partInfo,\n ...mapping,\n };\n}\n\nexport function deriveLegacyPObjectId(spec: PObjectSpec, data: PlTreeNodeAccessor): PObjectId {\n const hash = createHash(\"sha256\");\n hash.update(canonicalize(spec)!);\n hash.update(String(!isNullResourceId(data.originalId) ? data.originalId : data.id));\n return hash.digest().toString(\"hex\") as PObjectId;\n}\n\nexport function deriveGlobalPObjectId(blockId: string, exportName: string): PObjectId {\n return canonicalize({ __isRef: true, blockId, name: exportName } satisfies PlRef)! as PObjectId;\n}\n\nexport function deriveLocalPObjectId(resolvePath: string[], outputName: string): PObjectId {\n return canonicalize({ resolvePath, name: outputName })! as PObjectId;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","names":[],"sources":["../../src/pool/data.ts"],"sourcesContent":["import {\n PFrameDriverError,\n type BinaryChunk,\n type ParquetChunk,\n type ParquetChunkMapping,\n type ParquetChunkMetadata,\n type PColumnValue,\n type PlRef,\n type PObjectId,\n type PObjectSpec,\n} from \"@platforma-sdk/model\";\nimport type { PlTreeEntry, PlTreeNodeAccessor } from \"@milaboratories/pl-tree\";\nimport canonicalize from \"canonicalize\";\nimport {\n isNullResourceId,\n resourceType,\n resourceTypeToString,\n resourceTypesEqual,\n} from \"@milaboratories/pl-client\";\nimport type { Writable } from \"utility-types\";\nimport { createHash } from \"node:crypto\";\nimport type { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\n\nexport const PColumnDataJsonPartitioned = resourceType(\"PColumnData/JsonPartitioned\", \"1\");\nexport const PColumnDataJsonSuperPartitioned = resourceType(\n \"PColumnData/Partitioned/JsonPartitioned\",\n \"1\",\n);\nexport const PColumnDataBinaryPartitioned = resourceType(\"PColumnData/BinaryPartitioned\", \"1\");\nexport const PColumnDataBinarySuperPartitioned = resourceType(\n \"PColumnData/Partitioned/BinaryPartitioned\",\n \"1\",\n);\nexport const PColumnDataParquetPartitioned = resourceType(\"PColumnData/ParquetPartitioned\", \"1\");\nexport const PColumnDataParquetSuperPartitioned = resourceType(\n \"PColumnData/Partitioned/ParquetPartitioned\",\n \"1\",\n);\nexport const PColumnDataJson = resourceType(\"PColumnData/Json\", \"1\");\n\nexport const ParquetChunkResourceType = resourceType(\"ParquetChunk\", \"1\");\n\nexport type PColumnDataJsonResourceValue = {\n keyLength: number;\n data: Record<string, PColumnValue>;\n};\n\nexport type PColumnDataPartitionedResourceValue = {\n partitionKeyLength: number;\n};\n\nexport type PColumnDataSuperPartitionedResourceValue = {\n superPartitionKeyLength: number;\n partitionKeyLength: number;\n};\n\nconst BinaryPartitionedIndexFieldSuffix = \".index\";\nconst BinaryPartitionedValuesFieldSuffix = \".values\";\n\nexport function parseDataInfoResource(\n data: PlTreeNodeAccessor,\n): PFrameInternal.DataInfo<PlTreeEntry> {\n if (!data.getIsReadyOrError()) throw new PFrameDriverError(\"Data not ready.\");\n\n const resourceData = data.getDataAsJson();\n if (resourceData === undefined)\n throw new PFrameDriverError(\"unexpected data info structure, no resource data\");\n\n if (resourceTypesEqual(data.resourceType, PColumnDataJson)) {\n const dataContent = resourceData as PColumnDataJsonResourceValue;\n\n return {\n type: \"Json\",\n keyLength: dataContent.keyLength,\n data: dataContent.data,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataJsonPartitioned)) {\n const meta = resourceData as PColumnDataPartitionedResourceValue;\n\n const parts = Object.fromEntries(\n data\n .listInputFields()\n .map((field) => [field, data.traverse({ field, errorIfFieldNotSet: true }).persist()]),\n );\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataJsonSuperPartitioned)) {\n const meta = resourceData as PColumnDataSuperPartitionedResourceValue;\n\n const parts: Record<string, PlTreeEntry> = {};\n for (const superKey of data.listInputFields()) {\n const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });\n const keys = superPart.listInputFields();\n if (keys === undefined)\n throw new PFrameDriverError(`no partition keys for super key ${superKey}`);\n\n for (const key of keys) {\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n parts[partKey] = superPart.traverse({ field: key, errorIfFieldNotSet: true }).persist();\n }\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,\n parts,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataBinaryPartitioned)) {\n const meta = resourceData as PColumnDataPartitionedResourceValue;\n\n const parts: Record<string, Partial<Writable<BinaryChunk<PlTreeEntry>>>> = {};\n\n // parsing the structure\n for (const field of data.listInputFields()) {\n if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {\n const partKey = field.slice(0, -BinaryPartitionedIndexFieldSuffix.length);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n part.index = data.traverse({ field, errorIfFieldNotSet: true }).persist();\n } else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {\n const partKey = field.slice(0, -BinaryPartitionedValuesFieldSuffix.length);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n part.values = data.traverse({ field, errorIfFieldNotSet: true }).persist();\n } else throw new PFrameDriverError(`unrecognized part field name: ${field}`);\n }\n\n // structure validation\n for (const [key, part] of Object.entries(parts)) {\n if (part.index === undefined) throw new PFrameDriverError(`no index for part ${key}`);\n if (part.values === undefined) throw new PFrameDriverError(`no values for part ${key}`);\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts: parts as Record<string, BinaryChunk<PlTreeEntry>>,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataBinarySuperPartitioned)) {\n const meta = resourceData as PColumnDataSuperPartitionedResourceValue;\n\n const parts: Record<string, Partial<Writable<BinaryChunk<PlTreeEntry>>>> = {};\n for (const superKey of data.listInputFields()) {\n const superData = data.traverse({ field: superKey, errorIfFieldNotSet: true });\n const keys = superData.listInputFields();\n if (keys === undefined)\n throw new PFrameDriverError(`no partition keys for super key ${superKey}`);\n\n for (const field of keys) {\n if (field.endsWith(BinaryPartitionedIndexFieldSuffix)) {\n const key = field.slice(0, -BinaryPartitionedIndexFieldSuffix.length);\n\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n parts[partKey].index = superData\n .traverse({\n field,\n errorIfFieldNotSet: true,\n })\n .persist();\n } else if (field.endsWith(BinaryPartitionedValuesFieldSuffix)) {\n const key = field.slice(0, -BinaryPartitionedValuesFieldSuffix.length);\n\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n let part = parts[partKey];\n if (part === undefined) {\n part = {};\n parts[partKey] = part;\n }\n parts[partKey].values = superData\n .traverse({\n field,\n errorIfFieldNotSet: true,\n })\n .persist();\n } else throw new PFrameDriverError(`unrecognized part field name: ${field}`);\n }\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,\n parts: parts as Record<string, BinaryChunk<PlTreeEntry>>,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataParquetPartitioned)) {\n const meta = resourceData as PColumnDataPartitionedResourceValue;\n\n const parts: Record<string, ParquetChunk<PlTreeEntry>> = {};\n for (const key of data.listInputFields()) {\n const resource = data.traverse({\n field: key,\n assertFieldType: \"Input\",\n errorIfFieldNotSet: true,\n });\n\n parts[key] = traverseParquetChunkResource(resource);\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n } else if (resourceTypesEqual(data.resourceType, PColumnDataParquetSuperPartitioned)) {\n const meta = resourceData as PColumnDataSuperPartitionedResourceValue;\n\n const parts: Record<string, ParquetChunk<PlTreeEntry>> = {};\n for (const superKey of data.listInputFields()) {\n const superPart = data.traverse({ field: superKey, errorIfFieldNotSet: true });\n const keys = superPart.listInputFields();\n if (keys === undefined)\n throw new PFrameDriverError(`no partition keys for super key ${superKey}`);\n\n for (const key of keys) {\n const resource = data.traverse({ field: key, errorIfFieldNotSet: true });\n\n const partKey = JSON.stringify([\n ...(JSON.parse(superKey) as PColumnValue[]),\n ...(JSON.parse(key) as PColumnValue[]),\n ]);\n parts[partKey] = traverseParquetChunkResource(resource);\n }\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.superPartitionKeyLength + meta.partitionKeyLength,\n parts,\n };\n }\n\n throw new PFrameDriverError(\n `unsupported resource type: ${resourceTypeToString(data.resourceType)}`,\n );\n}\n\nexport function traverseParquetChunkResource(\n resource: PlTreeNodeAccessor,\n): ParquetChunk<PlTreeEntry> {\n if (!resourceTypesEqual(resource.resourceType, ParquetChunkResourceType)) {\n throw new PFrameDriverError(\n `unknown resource type: ${resourceTypeToString(resource.resourceType)}, ` +\n `expected: ${resourceTypeToString(ParquetChunkResourceType)}`,\n );\n }\n\n const blob = resource\n .traverse({ field: \"blob\", assertFieldType: \"Service\", errorIfFieldNotSet: true })\n .persist();\n const partInfo = resource.getDataAsJson() as ParquetChunkMetadata;\n const mapping = resource\n .traverse({ field: \"mapping\", assertFieldType: \"Service\", errorIfFieldNotSet: true })\n .getDataAsJson() as ParquetChunkMapping;\n\n return {\n data: blob,\n ...partInfo,\n ...mapping,\n };\n}\n\nexport function deriveLegacyPObjectId(spec: PObjectSpec, data: PlTreeNodeAccessor): PObjectId {\n const hash = createHash(\"sha256\");\n hash.update(canonicalize(spec)!);\n hash.update(String(!isNullResourceId(data.originalId) ? data.originalId : data.id));\n return hash.digest().toString(\"hex\") as PObjectId;\n}\n\nexport function deriveGlobalPObjectId(blockId: string, exportName: string): PObjectId {\n return canonicalize({ __isRef: true, blockId, name: exportName } satisfies PlRef)! as PObjectId;\n}\n\nexport function deriveLocalPObjectId(resolvePath: string[], outputName: string): PObjectId {\n return canonicalize({ resolvePath, name: outputName })! as PObjectId;\n}\n"],"mappings":"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"}
@@ -1,217 +1,190 @@
1
- 'use strict';
2
-
3
- var model = require('@platforma-sdk/model');
4
- var plModelMiddleLayer = require('@milaboratories/pl-model-middle-layer');
5
- var tsHelpers = require('@milaboratories/ts-helpers');
6
- var plTree = require('@milaboratories/pl-tree');
7
- var pfDriver = require('@milaboratories/pf-driver');
8
- var pframesRsNode = require('@milaboratories/pframes-rs-node');
9
- var path = require('node:path');
10
- var node_stream = require('node:stream');
11
- var data = require('./data.cjs');
12
- var plDrivers = require('@milaboratories/pl-drivers');
1
+ const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
2
+ const require_data = require('./data.cjs');
3
+ let _platforma_sdk_model = require("@platforma-sdk/model");
4
+ let _milaboratories_pl_model_middle_layer = require("@milaboratories/pl-model-middle-layer");
5
+ let node_path = require("node:path");
6
+ node_path = require_runtime.__toESM(node_path);
7
+ let _milaboratories_ts_helpers = require("@milaboratories/ts-helpers");
8
+ let _milaboratories_pl_tree = require("@milaboratories/pl-tree");
9
+ let _milaboratories_pf_driver = require("@milaboratories/pf-driver");
10
+ let _milaboratories_pframes_rs_node = require("@milaboratories/pframes-rs-node");
11
+ let node_stream = require("node:stream");
12
+ let _milaboratories_pl_drivers = require("@milaboratories/pl-drivers");
13
13
 
14
+ //#region src/pool/driver.ts
14
15
  function makeBlobId(res) {
15
- return String(res.rid);
16
- }
17
- class LocalBlobProviderImpl extends tsHelpers.RefCountPoolBase {
18
- blobDriver;
19
- logger;
20
- constructor(blobDriver, logger) {
21
- super();
22
- this.blobDriver = blobDriver;
23
- this.logger = logger;
24
- }
25
- calculateParamsKey(params) {
26
- return makeBlobId(params);
27
- }
28
- createNewResource(params, _key) {
29
- return this.blobDriver.getDownloadedBlob(params);
30
- }
31
- getByKey(blobId) {
32
- const resource = super.tryGetByKey(blobId);
33
- if (!resource)
34
- throw new model.PFrameDriverError(`Local blob with id ${blobId} not found.`);
35
- return resource;
36
- }
37
- makeDataSource(signal) {
38
- return {
39
- preloadBlob: async (blobIds) => {
40
- try {
41
- await Promise.all(blobIds.map((blobId) => this.getByKey(blobId).awaitStableFullValue(signal)));
42
- }
43
- catch (err) {
44
- if (!model.isAbortError(err))
45
- throw err;
46
- }
47
- },
48
- resolveBlobContent: async (blobId) => {
49
- const computable = this.getByKey(blobId);
50
- const blob = await computable.awaitStableValue(signal);
51
- return await this.blobDriver.getContent(blob.handle, { signal });
52
- },
53
- };
54
- }
55
- }
56
- class RemoteBlobPool extends tsHelpers.RefCountPoolBase {
57
- blobDriver;
58
- logger;
59
- constructor(blobDriver, logger) {
60
- super();
61
- this.blobDriver = blobDriver;
62
- this.logger = logger;
63
- }
64
- calculateParamsKey(params) {
65
- return makeBlobId(params);
66
- }
67
- createNewResource(params, _key) {
68
- return this.blobDriver.getOnDemandBlob(params);
69
- }
70
- getByKey(blobId) {
71
- const resource = super.tryGetByKey(blobId);
72
- if (!resource)
73
- throw new model.PFrameDriverError(`Remote blob with id ${blobId} not found.`);
74
- return resource;
75
- }
76
- async withContent(handle, options) {
77
- return await this.blobDriver.withContent(handle, {
78
- range: {
79
- from: options.range.start,
80
- to: options.range.end + 1,
81
- },
82
- signal: options.signal,
83
- handler: options.handler,
84
- });
85
- }
86
- }
87
- class BlobStore extends plModelMiddleLayer.PFrameInternal.BaseObjectStore {
88
- remoteBlobProvider;
89
- constructor(options) {
90
- super(options);
91
- this.remoteBlobProvider = options.remoteBlobProvider;
92
- }
93
- async request(filename, params) {
94
- const blobId = filename.slice(0, -plModelMiddleLayer.PFrameInternal.ParquetExtension.length);
95
- const respond = async (response) => {
96
- try {
97
- await params.callback(response);
98
- }
99
- catch (error) {
100
- this.logger("warn", `PFrames blob store received unhandled rejection from HTTP handler: ${model.ensureError(error)}`);
101
- }
102
- };
103
- try {
104
- const computable = this.remoteBlobProvider.tryGetByKey(blobId);
105
- if (!computable)
106
- return await respond({ type: "NotFound" });
107
- let blob;
108
- try {
109
- blob = await computable.getValue();
110
- }
111
- catch (error) {
112
- this.logger("error", `PFrames blob store failed to get blob from computable: ${model.ensureError(error)}`);
113
- return await respond({ type: "InternalError" });
114
- }
115
- params.signal.throwIfAborted();
116
- const translatedRange = this.translate(blob.size, params.range);
117
- if (!translatedRange) {
118
- return await respond({
119
- type: "RangeNotSatisfiable",
120
- size: blob.size,
121
- });
122
- }
123
- if (params.method === "HEAD") {
124
- return await respond({
125
- type: "Ok",
126
- size: blob.size,
127
- range: translatedRange,
128
- });
129
- }
130
- this.logger("info", `PFrames blob store requesting content for ${blobId}, ` +
131
- `range [${translatedRange.start}..=${translatedRange.end}]`);
132
- return await this.remoteBlobProvider.withContent(blob.handle, {
133
- range: translatedRange,
134
- signal: params.signal,
135
- handler: async (data) => {
136
- return await respond({
137
- type: "Ok",
138
- size: blob.size,
139
- range: translatedRange,
140
- // eslint-disable-next-line n/no-unsupported-features/node-builtins
141
- data: node_stream.Readable.fromWeb(data),
142
- });
143
- },
144
- });
145
- }
146
- catch (error) {
147
- if (!model.isAbortError(error)) {
148
- if (plDrivers.isDownloadNetworkError400(error) && error.statusCode === 404) {
149
- this.logger("info", `PFrames blob store known race error: ${model.ensureError(error)}`);
150
- }
151
- else {
152
- this.logger("warn", `PFrames blob store unhandled error: ${model.ensureError(error)}`);
153
- }
154
- }
155
- return await respond({ type: "InternalError" });
156
- }
157
- }
158
- }
159
- class RemoteBlobProviderImpl {
160
- pool;
161
- server;
162
- constructor(pool, server) {
163
- this.pool = pool;
164
- this.server = server;
165
- }
166
- static async init(blobDriver, logger, serverOptions) {
167
- const pool = new RemoteBlobPool(blobDriver, logger);
168
- const store = new BlobStore({ remoteBlobProvider: pool, logger });
169
- const handler = pframesRsNode.HttpHelpers.createRequestHandler({ store });
170
- const server = await pframesRsNode.HttpHelpers.createHttpServer({ ...serverOptions, handler });
171
- logger("info", `PFrames HTTP server started on ${server.info.url}`);
172
- return new RemoteBlobProviderImpl(pool, server);
173
- }
174
- acquire(params) {
175
- return this.pool.acquire(params);
176
- }
177
- httpServerInfo() {
178
- return this.server.info;
179
- }
180
- async [Symbol.asyncDispose]() {
181
- await this.server.stop();
182
- }
16
+ return String(res.rid);
183
17
  }
18
+ var LocalBlobProviderImpl = class extends _milaboratories_ts_helpers.RefCountPoolBase {
19
+ constructor(blobDriver, logger) {
20
+ super();
21
+ this.blobDriver = blobDriver;
22
+ this.logger = logger;
23
+ }
24
+ calculateParamsKey(params) {
25
+ return makeBlobId(params);
26
+ }
27
+ createNewResource(params, _key) {
28
+ return this.blobDriver.getDownloadedBlob(params);
29
+ }
30
+ getByKey(blobId) {
31
+ const resource = super.tryGetByKey(blobId);
32
+ if (!resource) throw new _platforma_sdk_model.PFrameDriverError(`Local blob with id ${blobId} not found.`);
33
+ return resource;
34
+ }
35
+ makeDataSource(signal) {
36
+ return {
37
+ preloadBlob: async (blobIds) => {
38
+ try {
39
+ await Promise.all(blobIds.map((blobId) => this.getByKey(blobId).awaitStableFullValue(signal)));
40
+ } catch (err) {
41
+ if (!(0, _platforma_sdk_model.isAbortError)(err)) throw err;
42
+ }
43
+ },
44
+ resolveBlobContent: async (blobId) => {
45
+ const blob = await this.getByKey(blobId).awaitStableValue(signal);
46
+ return await this.blobDriver.getContent(blob.handle, { signal });
47
+ }
48
+ };
49
+ }
50
+ };
51
+ var RemoteBlobPool = class extends _milaboratories_ts_helpers.RefCountPoolBase {
52
+ constructor(blobDriver, logger) {
53
+ super();
54
+ this.blobDriver = blobDriver;
55
+ this.logger = logger;
56
+ }
57
+ calculateParamsKey(params) {
58
+ return makeBlobId(params);
59
+ }
60
+ createNewResource(params, _key) {
61
+ return this.blobDriver.getOnDemandBlob(params);
62
+ }
63
+ getByKey(blobId) {
64
+ const resource = super.tryGetByKey(blobId);
65
+ if (!resource) throw new _platforma_sdk_model.PFrameDriverError(`Remote blob with id ${blobId} not found.`);
66
+ return resource;
67
+ }
68
+ async withContent(handle, options) {
69
+ return await this.blobDriver.withContent(handle, {
70
+ range: {
71
+ from: options.range.start,
72
+ to: options.range.end + 1
73
+ },
74
+ signal: options.signal,
75
+ handler: options.handler
76
+ });
77
+ }
78
+ };
79
+ var BlobStore = class extends _milaboratories_pl_model_middle_layer.PFrameInternal.BaseObjectStore {
80
+ remoteBlobProvider;
81
+ constructor(options) {
82
+ super(options);
83
+ this.remoteBlobProvider = options.remoteBlobProvider;
84
+ }
85
+ async request(filename, params) {
86
+ const blobId = filename.slice(0, -_milaboratories_pl_model_middle_layer.PFrameInternal.ParquetExtension.length);
87
+ const respond = async (response) => {
88
+ try {
89
+ await params.callback(response);
90
+ } catch (error) {
91
+ this.logger("warn", `PFrames blob store received unhandled rejection from HTTP handler: ${(0, _platforma_sdk_model.ensureError)(error)}`);
92
+ }
93
+ };
94
+ try {
95
+ const computable = this.remoteBlobProvider.tryGetByKey(blobId);
96
+ if (!computable) return await respond({ type: "NotFound" });
97
+ let blob;
98
+ try {
99
+ blob = await computable.getValue();
100
+ } catch (error) {
101
+ this.logger("error", `PFrames blob store failed to get blob from computable: ${(0, _platforma_sdk_model.ensureError)(error)}`);
102
+ return await respond({ type: "InternalError" });
103
+ }
104
+ params.signal.throwIfAborted();
105
+ const translatedRange = this.translate(blob.size, params.range);
106
+ if (!translatedRange) return await respond({
107
+ type: "RangeNotSatisfiable",
108
+ size: blob.size
109
+ });
110
+ if (params.method === "HEAD") return await respond({
111
+ type: "Ok",
112
+ size: blob.size,
113
+ range: translatedRange
114
+ });
115
+ this.logger("info", `PFrames blob store requesting content for ${blobId}, range [${translatedRange.start}..=${translatedRange.end}]`);
116
+ return await this.remoteBlobProvider.withContent(blob.handle, {
117
+ range: translatedRange,
118
+ signal: params.signal,
119
+ handler: async (data) => {
120
+ return await respond({
121
+ type: "Ok",
122
+ size: blob.size,
123
+ range: translatedRange,
124
+ data: node_stream.Readable.fromWeb(data)
125
+ });
126
+ }
127
+ });
128
+ } catch (error) {
129
+ if (!(0, _platforma_sdk_model.isAbortError)(error)) if ((0, _milaboratories_pl_drivers.isDownloadNetworkError400)(error) && error.statusCode === 404) this.logger("info", `PFrames blob store known race error: ${(0, _platforma_sdk_model.ensureError)(error)}`);
130
+ else this.logger("warn", `PFrames blob store unhandled error: ${(0, _platforma_sdk_model.ensureError)(error)}`);
131
+ return await respond({ type: "InternalError" });
132
+ }
133
+ }
134
+ };
135
+ var RemoteBlobProviderImpl = class RemoteBlobProviderImpl {
136
+ constructor(pool, server) {
137
+ this.pool = pool;
138
+ this.server = server;
139
+ }
140
+ static async init(blobDriver, logger, serverOptions) {
141
+ const pool = new RemoteBlobPool(blobDriver, logger);
142
+ const store = new BlobStore({
143
+ remoteBlobProvider: pool,
144
+ logger
145
+ });
146
+ const handler = _milaboratories_pframes_rs_node.HttpHelpers.createRequestHandler({ store });
147
+ const server = await _milaboratories_pframes_rs_node.HttpHelpers.createHttpServer({
148
+ ...serverOptions,
149
+ handler
150
+ });
151
+ logger("info", `PFrames HTTP server started on ${server.info.url}`);
152
+ return new RemoteBlobProviderImpl(pool, server);
153
+ }
154
+ acquire(params) {
155
+ return this.pool.acquire(params);
156
+ }
157
+ httpServerInfo() {
158
+ return this.server.info;
159
+ }
160
+ async [Symbol.asyncDispose]() {
161
+ await this.server.stop();
162
+ }
163
+ };
184
164
  const PFrameDriverOpsDefaults = {
185
- ...pfDriver.AbstractPFrameDriverOpsDefaults,
186
- parquetServerPort: 0, // 0 means that some unused port will be assigned by the OS
165
+ ..._milaboratories_pf_driver.AbstractPFrameDriverOpsDefaults,
166
+ parquetServerPort: 0
187
167
  };
188
168
  async function createPFrameDriver(params) {
189
- const resolvedSpillPath = path.resolve(params.spillPath);
190
- await tsHelpers.emptyDir(resolvedSpillPath);
191
- const logger = (level, message) => params.logger[level](message);
192
- const localBlobProvider = new LocalBlobProviderImpl(params.blobDriver, logger);
193
- const remoteBlobProvider = await RemoteBlobProviderImpl.init(params.blobDriver, logger, {
194
- port: params.options.parquetServerPort,
195
- });
196
- const resolveDataInfo = (spec, data$1) => {
197
- return plTree.isPlTreeNodeAccessor(data$1)
198
- ? data.parseDataInfoResource(data$1)
199
- : model.isDataInfo(data$1)
200
- ? data$1.type === "ParquetPartitioned"
201
- ? model.mapDataInfo(data$1, (a) => data.traverseParquetChunkResource(a))
202
- : model.mapDataInfo(data$1, (a) => a.persist())
203
- : pfDriver.makeJsonDataInfo(spec, data$1);
204
- };
205
- return new pfDriver.AbstractPFrameDriver({
206
- logger,
207
- localBlobProvider,
208
- remoteBlobProvider,
209
- spillPath: resolvedSpillPath,
210
- options: params.options,
211
- resolveDataInfo,
212
- });
169
+ const resolvedSpillPath = node_path.default.resolve(params.spillPath);
170
+ await (0, _milaboratories_ts_helpers.emptyDir)(resolvedSpillPath);
171
+ const logger = (level, message) => params.logger[level](message);
172
+ const localBlobProvider = new LocalBlobProviderImpl(params.blobDriver, logger);
173
+ const remoteBlobProvider = await RemoteBlobProviderImpl.init(params.blobDriver, logger, { port: params.options.parquetServerPort });
174
+ const resolveDataInfo = (spec, data) => {
175
+ return (0, _milaboratories_pl_tree.isPlTreeNodeAccessor)(data) ? require_data.parseDataInfoResource(data) : (0, _platforma_sdk_model.isDataInfo)(data) ? data.type === "ParquetPartitioned" ? (0, _platforma_sdk_model.mapDataInfo)(data, (a) => require_data.traverseParquetChunkResource(a)) : (0, _platforma_sdk_model.mapDataInfo)(data, (a) => a.persist()) : (0, _milaboratories_pf_driver.makeJsonDataInfo)(spec, data);
176
+ };
177
+ return new _milaboratories_pf_driver.AbstractPFrameDriver({
178
+ logger,
179
+ localBlobProvider,
180
+ remoteBlobProvider,
181
+ spillPath: resolvedSpillPath,
182
+ options: params.options,
183
+ resolveDataInfo
184
+ });
213
185
  }
214
186
 
187
+ //#endregion
215
188
  exports.PFrameDriverOpsDefaults = PFrameDriverOpsDefaults;
216
189
  exports.createPFrameDriver = createPFrameDriver;
217
- //# sourceMappingURL=driver.cjs.map
190
+ //# sourceMappingURL=driver.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"driver.cjs","sources":["../../src/pool/driver.ts"],"sourcesContent":["import {\n mapDataInfo,\n isDataInfo,\n ensureError,\n PFrameDriverError,\n isAbortError,\n type LocalBlobHandleAndSize,\n type RemoteBlobHandleAndSize,\n type RemoteBlobHandle,\n type ContentHandler,\n type PColumnSpec,\n type PColumnDataUniversal,\n} from \"@platforma-sdk/model\";\nimport { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport {\n emptyDir,\n RefCountPoolBase,\n type PoolEntry,\n type MiLogger,\n} from \"@milaboratories/ts-helpers\";\nimport type { DownloadDriver } from \"@milaboratories/pl-drivers\";\nimport {\n isPlTreeNodeAccessor,\n type PlTreeEntry,\n type PlTreeNodeAccessor,\n} from \"@milaboratories/pl-tree\";\nimport type { Computable, ComputableStableDefined } from \"@milaboratories/computable\";\nimport {\n makeJsonDataInfo,\n AbstractPFrameDriver,\n AbstractPFrameDriverOpsDefaults,\n type AbstractInternalPFrameDriver,\n type AbstractPFrameDriverOps,\n type LocalBlobProvider,\n type RemoteBlobProvider,\n} from \"@milaboratories/pf-driver\";\nimport { HttpHelpers } from \"@milaboratories/pframes-rs-node\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { parseDataInfoResource, traverseParquetChunkResource } from \"./data\";\nimport { isDownloadNetworkError400 } from \"@milaboratories/pl-drivers\";\n\nfunction makeBlobId(res: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return String(res.rid) as PFrameInternal.PFrameBlobId;\n}\n\ntype LocalBlob = ComputableStableDefined<LocalBlobHandleAndSize>;\nclass LocalBlobProviderImpl\n extends RefCountPoolBase<PlTreeEntry, PFrameInternal.PFrameBlobId, LocalBlob>\n implements LocalBlobProvider<PlTreeEntry>\n{\n constructor(\n private readonly blobDriver: DownloadDriver,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: PFrameInternal.PFrameBlobId): LocalBlob {\n return this.blobDriver.getDownloadedBlob(params);\n }\n\n public getByKey(blobId: PFrameInternal.PFrameBlobId): LocalBlob {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Local blob with id ${blobId} not found.`);\n return resource;\n }\n\n public makeDataSource(\n signal: AbortSignal,\n ): Omit<PFrameInternal.PFrameDataSourceV2, \"parquetServer\"> {\n return {\n preloadBlob: async (blobIds: PFrameInternal.PFrameBlobId[]) => {\n try {\n await Promise.all(\n blobIds.map((blobId) => this.getByKey(blobId).awaitStableFullValue(signal)),\n );\n } catch (err: unknown) {\n if (!isAbortError(err)) throw err;\n }\n },\n resolveBlobContent: async (blobId: PFrameInternal.PFrameBlobId) => {\n const computable = this.getByKey(blobId);\n const blob = await computable.awaitStableValue(signal);\n return await this.blobDriver.getContent(blob.handle, { signal });\n },\n };\n }\n}\n\ntype RemoteBlob = Computable<RemoteBlobHandleAndSize>;\nclass RemoteBlobPool extends RefCountPoolBase<\n PlTreeEntry,\n PFrameInternal.PFrameBlobId,\n RemoteBlob\n> {\n constructor(\n private readonly blobDriver: DownloadDriver,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: PFrameInternal.PFrameBlobId): RemoteBlob {\n return this.blobDriver.getOnDemandBlob(params);\n }\n\n public getByKey(blobId: PFrameInternal.PFrameBlobId): RemoteBlob {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Remote blob with id ${blobId} not found.`);\n return resource;\n }\n\n public async withContent<T>(\n handle: RemoteBlobHandle,\n options: {\n range: PFrameInternal.FileRange;\n signal: AbortSignal;\n handler: ContentHandler<T>;\n },\n ): Promise<T> {\n return await this.blobDriver.withContent(handle, {\n range: {\n from: options.range.start,\n to: options.range.end + 1,\n },\n signal: options.signal,\n handler: options.handler,\n });\n }\n}\n\ninterface BlobStoreOptions extends PFrameInternal.ObjectStoreOptions {\n remoteBlobProvider: RemoteBlobPool;\n}\n\nclass BlobStore extends PFrameInternal.BaseObjectStore {\n private readonly remoteBlobProvider: RemoteBlobPool;\n\n constructor(options: BlobStoreOptions) {\n super(options);\n this.remoteBlobProvider = options.remoteBlobProvider;\n }\n\n public override async request(\n filename: PFrameInternal.ParquetFileName,\n params: {\n method: PFrameInternal.HttpMethod;\n range?: PFrameInternal.HttpRange;\n signal: AbortSignal;\n callback: (response: PFrameInternal.ObjectStoreResponse) => Promise<void>;\n },\n ): Promise<void> {\n const blobId = filename.slice(\n 0,\n -PFrameInternal.ParquetExtension.length,\n ) as PFrameInternal.PFrameBlobId;\n const respond = async (response: PFrameInternal.ObjectStoreResponse): Promise<void> => {\n try {\n await params.callback(response);\n } catch (error: unknown) {\n this.logger(\n \"warn\",\n `PFrames blob store received unhandled rejection from HTTP handler: ${ensureError(error)}`,\n );\n }\n };\n\n try {\n const computable = this.remoteBlobProvider.tryGetByKey(blobId);\n if (!computable) return await respond({ type: \"NotFound\" });\n\n let blob: RemoteBlobHandleAndSize;\n try {\n blob = await computable.getValue();\n } catch (error: unknown) {\n this.logger(\n \"error\",\n `PFrames blob store failed to get blob from computable: ${ensureError(error)}`,\n );\n return await respond({ type: \"InternalError\" });\n }\n params.signal.throwIfAborted();\n\n const translatedRange = this.translate(blob.size, params.range);\n if (!translatedRange) {\n return await respond({\n type: \"RangeNotSatisfiable\",\n size: blob.size,\n });\n }\n\n if (params.method === \"HEAD\") {\n return await respond({\n type: \"Ok\",\n size: blob.size,\n range: translatedRange,\n });\n }\n\n this.logger(\n \"info\",\n `PFrames blob store requesting content for ${blobId}, ` +\n `range [${translatedRange.start}..=${translatedRange.end}]`,\n );\n return await this.remoteBlobProvider.withContent(blob.handle, {\n range: translatedRange,\n signal: params.signal,\n handler: async (data) => {\n return await respond({\n type: \"Ok\",\n size: blob.size,\n range: translatedRange,\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n data: Readable.fromWeb(data),\n });\n },\n });\n } catch (error: unknown) {\n if (!isAbortError(error)) {\n if (isDownloadNetworkError400(error) && error.statusCode === 404) {\n this.logger(\"info\", `PFrames blob store known race error: ${ensureError(error)}`);\n } else {\n this.logger(\"warn\", `PFrames blob store unhandled error: ${ensureError(error)}`);\n }\n }\n return await respond({ type: \"InternalError\" });\n }\n }\n}\n\nclass RemoteBlobProviderImpl implements RemoteBlobProvider<PlTreeEntry> {\n constructor(\n private readonly pool: RemoteBlobPool,\n private readonly server: PFrameInternal.HttpServer,\n ) {}\n\n public static async init(\n blobDriver: DownloadDriver,\n logger: PFrameInternal.Logger,\n serverOptions: Omit<PFrameInternal.HttpServerOptions, \"handler\">,\n ): Promise<RemoteBlobProviderImpl> {\n const pool = new RemoteBlobPool(blobDriver, logger);\n const store = new BlobStore({ remoteBlobProvider: pool, logger });\n\n const handler = HttpHelpers.createRequestHandler({ store });\n const server = await HttpHelpers.createHttpServer({ ...serverOptions, handler });\n logger(\"info\", `PFrames HTTP server started on ${server.info.url}`);\n\n return new RemoteBlobProviderImpl(pool, server);\n }\n\n public acquire(params: PlTreeEntry): PoolEntry<PFrameInternal.PFrameBlobId> {\n return this.pool.acquire(params);\n }\n\n public httpServerInfo(): PFrameInternal.HttpServerInfo {\n return this.server.info;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.server.stop();\n }\n}\n\nexport interface InternalPFrameDriver extends AbstractInternalPFrameDriver<\n PColumnDataUniversal<PlTreeNodeAccessor>\n> {}\n\nexport type PFrameDriverOps = AbstractPFrameDriverOps & {\n /** Port to run parquet HTTP server on. */\n parquetServerPort: number;\n};\n\nexport const PFrameDriverOpsDefaults: PFrameDriverOps = {\n ...AbstractPFrameDriverOpsDefaults,\n parquetServerPort: 0, // 0 means that some unused port will be assigned by the OS\n};\n\nexport async function createPFrameDriver(params: {\n blobDriver: DownloadDriver;\n logger: MiLogger;\n spillPath: string;\n options: PFrameDriverOps;\n}): Promise<InternalPFrameDriver> {\n const resolvedSpillPath = path.resolve(params.spillPath);\n await emptyDir(resolvedSpillPath);\n\n const logger: PFrameInternal.Logger = (level, message) => params.logger[level](message);\n const localBlobProvider = new LocalBlobProviderImpl(params.blobDriver, logger);\n const remoteBlobProvider = await RemoteBlobProviderImpl.init(params.blobDriver, logger, {\n port: params.options.parquetServerPort,\n });\n\n const resolveDataInfo = (spec: PColumnSpec, data: PColumnDataUniversal<PlTreeNodeAccessor>) => {\n return isPlTreeNodeAccessor(data)\n ? parseDataInfoResource(data)\n : isDataInfo(data)\n ? data.type === \"ParquetPartitioned\"\n ? mapDataInfo(data, (a) => traverseParquetChunkResource(a))\n : mapDataInfo(data, (a) => a.persist())\n : makeJsonDataInfo(spec, data);\n };\n\n return new AbstractPFrameDriver({\n logger,\n localBlobProvider,\n remoteBlobProvider,\n spillPath: resolvedSpillPath,\n options: params.options,\n resolveDataInfo,\n });\n}\n"],"names":["RefCountPoolBase","PFrameDriverError","isAbortError","PFrameInternal","ensureError","Readable","isDownloadNetworkError400","HttpHelpers","AbstractPFrameDriverOpsDefaults","emptyDir","data","isPlTreeNodeAccessor","parseDataInfoResource","isDataInfo","mapDataInfo","traverseParquetChunkResource","makeJsonDataInfo","AbstractPFrameDriver"],"mappings":";;;;;;;;;;;;;AA0CA,SAAS,UAAU,CAAC,GAAgB,EAAA;AAClC,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAgC;AACvD;AAGA,MAAM,qBACJ,SAAQA,0BAAqE,CAAA;AAI1D,IAAA,UAAA;AACA,IAAA,MAAA;IAFnB,WAAA,CACmB,UAA0B,EAC1B,MAA6B,EAAA;AAE9C,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;IAGzB;AAEU,IAAA,kBAAkB,CAAC,MAAmB,EAAA;AAC9C,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B;IAEU,iBAAiB,CAAC,MAAmB,EAAE,IAAiC,EAAA;QAChF,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC;IAClD;AAEO,IAAA,QAAQ,CAAC,MAAmC,EAAA;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1C,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAIC,uBAAiB,CAAC,sBAAsB,MAAM,CAAA,WAAA,CAAa,CAAC;AACrF,QAAA,OAAO,QAAQ;IACjB;AAEO,IAAA,cAAc,CACnB,MAAmB,EAAA;QAEnB,OAAO;AACL,YAAA,WAAW,EAAE,OAAO,OAAsC,KAAI;AAC5D,gBAAA,IAAI;oBACF,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAC5E;gBACH;gBAAE,OAAO,GAAY,EAAE;AACrB,oBAAA,IAAI,CAACC,kBAAY,CAAC,GAAG,CAAC;AAAE,wBAAA,MAAM,GAAG;gBACnC;YACF,CAAC;AACD,YAAA,kBAAkB,EAAE,OAAO,MAAmC,KAAI;gBAChE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACxC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,MAAM,CAAC;AACtD,gBAAA,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;YAClE,CAAC;SACF;IACH;AACD;AAGD,MAAM,cAAe,SAAQF,0BAI5B,CAAA;AAEoB,IAAA,UAAA;AACA,IAAA,MAAA;IAFnB,WAAA,CACmB,UAA0B,EAC1B,MAA6B,EAAA;AAE9C,QAAA,KAAK,EAAE;QAHU,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,MAAM,GAAN,MAAM;IAGzB;AAEU,IAAA,kBAAkB,CAAC,MAAmB,EAAA;AAC9C,QAAA,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B;IAEU,iBAAiB,CAAC,MAAmB,EAAE,IAAiC,EAAA;QAChF,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC;IAChD;AAEO,IAAA,QAAQ,CAAC,MAAmC,EAAA;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;AAC1C,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,MAAM,IAAIC,uBAAiB,CAAC,uBAAuB,MAAM,CAAA,WAAA,CAAa,CAAC;AACtF,QAAA,OAAO,QAAQ;IACjB;AAEO,IAAA,MAAM,WAAW,CACtB,MAAwB,EACxB,OAIC,EAAA;QAED,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE;AAC/C,YAAA,KAAK,EAAE;AACL,gBAAA,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;AACzB,gBAAA,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;AAC1B,aAAA;YACD,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;AACzB,SAAA,CAAC;IACJ;AACD;AAMD,MAAM,SAAU,SAAQE,iCAAc,CAAC,eAAe,CAAA;AACnC,IAAA,kBAAkB;AAEnC,IAAA,WAAA,CAAY,OAAyB,EAAA;QACnC,KAAK,CAAC,OAAO,CAAC;AACd,QAAA,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB;IACtD;AAEgB,IAAA,MAAM,OAAO,CAC3B,QAAwC,EACxC,MAKC,EAAA;AAED,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAC3B,CAAC,EACD,CAACA,iCAAc,CAAC,gBAAgB,CAAC,MAAM,CACT;AAChC,QAAA,MAAM,OAAO,GAAG,OAAO,QAA4C,KAAmB;AACpF,YAAA,IAAI;AACF,gBAAA,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACjC;YAAE,OAAO,KAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CACT,MAAM,EACN,CAAA,mEAAA,EAAsEC,iBAAW,CAAC,KAAK,CAAC,CAAA,CAAE,CAC3F;YACH;AACF,QAAA,CAAC;AAED,QAAA,IAAI;YACF,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC;AAC9D,YAAA,IAAI,CAAC,UAAU;gBAAE,OAAO,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAE3D,YAAA,IAAI,IAA6B;AACjC,YAAA,IAAI;AACF,gBAAA,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE;YACpC;YAAE,OAAO,KAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,MAAM,CACT,OAAO,EACP,CAAA,uDAAA,EAA0DA,iBAAW,CAAC,KAAK,CAAC,CAAA,CAAE,CAC/E;gBACD,OAAO,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;YACjD;AACA,YAAA,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE;AAE9B,YAAA,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC;YAC/D,IAAI,CAAC,eAAe,EAAE;gBACpB,OAAO,MAAM,OAAO,CAAC;AACnB,oBAAA,IAAI,EAAE,qBAAqB;oBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;AAChB,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC5B,OAAO,MAAM,OAAO,CAAC;AACnB,oBAAA,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA,CAAC;YACJ;AAEA,YAAA,IAAI,CAAC,MAAM,CACT,MAAM,EACN,CAAA,0CAAA,EAA6C,MAAM,CAAA,EAAA,CAAI;gBACrD,CAAA,OAAA,EAAU,eAAe,CAAC,KAAK,CAAA,GAAA,EAAM,eAAe,CAAC,GAAG,CAAA,CAAA,CAAG,CAC9D;YACD,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE;AAC5D,gBAAA,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,MAAM,CAAC,MAAM;AACrB,gBAAA,OAAO,EAAE,OAAO,IAAI,KAAI;oBACtB,OAAO,MAAM,OAAO,CAAC;AACnB,wBAAA,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,KAAK,EAAE,eAAe;;AAEtB,wBAAA,IAAI,EAAEC,oBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;AAC7B,qBAAA,CAAC;gBACJ,CAAC;AACF,aAAA,CAAC;QACJ;QAAE,OAAO,KAAc,EAAE;AACvB,YAAA,IAAI,CAACH,kBAAY,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAII,mCAAyB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE;AAChE,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA,qCAAA,EAAwCF,iBAAW,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBACnF;qBAAO;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA,oCAAA,EAAuCA,iBAAW,CAAC,KAAK,CAAC,CAAA,CAAE,CAAC;gBAClF;YACF;YACA,OAAO,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;QACjD;IACF;AACD;AAED,MAAM,sBAAsB,CAAA;AAEP,IAAA,IAAA;AACA,IAAA,MAAA;IAFnB,WAAA,CACmB,IAAoB,EACpB,MAAiC,EAAA;QADjC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;IACtB;IAEI,aAAa,IAAI,CACtB,UAA0B,EAC1B,MAA6B,EAC7B,aAAgE,EAAA;QAEhE,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC;AACnD,QAAA,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAEjE,MAAM,OAAO,GAAGG,yBAAW,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC;AAC3D,QAAA,MAAM,MAAM,GAAG,MAAMA,yBAAW,CAAC,gBAAgB,CAAC,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,CAAC;QAChF,MAAM,CAAC,MAAM,EAAE,CAAA,+BAAA,EAAkC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAA,CAAE,CAAC;AAEnE,QAAA,OAAO,IAAI,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC;IACjD;AAEO,IAAA,OAAO,CAAC,MAAmB,EAAA;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC;IAEO,cAAc,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI;IACzB;AAEA,IAAA,OAAO,MAAM,CAAC,YAAY,CAAC,GAAA;AACzB,QAAA,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IAC1B;AACD;AAWM,MAAM,uBAAuB,GAAoB;AACtD,IAAA,GAAGC,wCAA+B;IAClC,iBAAiB,EAAE,CAAC;;AAGf,eAAe,kBAAkB,CAAC,MAKxC,EAAA;IACC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;AACxD,IAAA,MAAMC,kBAAQ,CAAC,iBAAiB,CAAC;AAEjC,IAAA,MAAM,MAAM,GAA0B,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;IACvF,MAAM,iBAAiB,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC;AAC9E,IAAA,MAAM,kBAAkB,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE;AACtF,QAAA,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB;AACvC,KAAA,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,CAAC,IAAiB,EAAEC,MAA8C,KAAI;QAC5F,OAAOC,2BAAoB,CAACD,MAAI;AAC9B,cAAEE,0BAAqB,CAACF,MAAI;AAC5B,cAAEG,gBAAU,CAACH,MAAI;AACf,kBAAEA,MAAI,CAAC,IAAI,KAAK;AACd,sBAAEI,iBAAW,CAACJ,MAAI,EAAE,CAAC,CAAC,KAAKK,iCAA4B,CAAC,CAAC,CAAC;AAC1D,sBAAED,iBAAW,CAACJ,MAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;AACxC,kBAAEM,yBAAgB,CAAC,IAAI,EAAEN,MAAI,CAAC;AACpC,IAAA,CAAC;IAED,OAAO,IAAIO,6BAAoB,CAAC;QAC9B,MAAM;QACN,iBAAiB;QACjB,kBAAkB;AAClB,QAAA,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,eAAe;AAChB,KAAA,CAAC;AACJ;;;;;"}
1
+ {"version":3,"file":"driver.cjs","names":["RefCountPoolBase","PFrameDriverError","PFrameInternal","Readable","HttpHelpers","AbstractPFrameDriverOpsDefaults","path","parseDataInfoResource","traverseParquetChunkResource","AbstractPFrameDriver"],"sources":["../../src/pool/driver.ts"],"sourcesContent":["import {\n mapDataInfo,\n isDataInfo,\n ensureError,\n PFrameDriverError,\n isAbortError,\n type LocalBlobHandleAndSize,\n type RemoteBlobHandleAndSize,\n type RemoteBlobHandle,\n type ContentHandler,\n type PColumnSpec,\n type PColumnDataUniversal,\n} from \"@platforma-sdk/model\";\nimport { PFrameInternal } from \"@milaboratories/pl-model-middle-layer\";\nimport {\n emptyDir,\n RefCountPoolBase,\n type PoolEntry,\n type MiLogger,\n} from \"@milaboratories/ts-helpers\";\nimport type { DownloadDriver } from \"@milaboratories/pl-drivers\";\nimport {\n isPlTreeNodeAccessor,\n type PlTreeEntry,\n type PlTreeNodeAccessor,\n} from \"@milaboratories/pl-tree\";\nimport type { Computable, ComputableStableDefined } from \"@milaboratories/computable\";\nimport {\n makeJsonDataInfo,\n AbstractPFrameDriver,\n AbstractPFrameDriverOpsDefaults,\n type AbstractInternalPFrameDriver,\n type AbstractPFrameDriverOps,\n type LocalBlobProvider,\n type RemoteBlobProvider,\n} from \"@milaboratories/pf-driver\";\nimport { HttpHelpers } from \"@milaboratories/pframes-rs-node\";\nimport path from \"node:path\";\nimport { Readable } from \"node:stream\";\nimport { parseDataInfoResource, traverseParquetChunkResource } from \"./data\";\nimport { isDownloadNetworkError400 } from \"@milaboratories/pl-drivers\";\n\nfunction makeBlobId(res: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return String(res.rid) as PFrameInternal.PFrameBlobId;\n}\n\ntype LocalBlob = ComputableStableDefined<LocalBlobHandleAndSize>;\nclass LocalBlobProviderImpl\n extends RefCountPoolBase<PlTreeEntry, PFrameInternal.PFrameBlobId, LocalBlob>\n implements LocalBlobProvider<PlTreeEntry>\n{\n constructor(\n private readonly blobDriver: DownloadDriver,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: PFrameInternal.PFrameBlobId): LocalBlob {\n return this.blobDriver.getDownloadedBlob(params);\n }\n\n public getByKey(blobId: PFrameInternal.PFrameBlobId): LocalBlob {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Local blob with id ${blobId} not found.`);\n return resource;\n }\n\n public makeDataSource(\n signal: AbortSignal,\n ): Omit<PFrameInternal.PFrameDataSourceV2, \"parquetServer\"> {\n return {\n preloadBlob: async (blobIds: PFrameInternal.PFrameBlobId[]) => {\n try {\n await Promise.all(\n blobIds.map((blobId) => this.getByKey(blobId).awaitStableFullValue(signal)),\n );\n } catch (err: unknown) {\n if (!isAbortError(err)) throw err;\n }\n },\n resolveBlobContent: async (blobId: PFrameInternal.PFrameBlobId) => {\n const computable = this.getByKey(blobId);\n const blob = await computable.awaitStableValue(signal);\n return await this.blobDriver.getContent(blob.handle, { signal });\n },\n };\n }\n}\n\ntype RemoteBlob = Computable<RemoteBlobHandleAndSize>;\nclass RemoteBlobPool extends RefCountPoolBase<\n PlTreeEntry,\n PFrameInternal.PFrameBlobId,\n RemoteBlob\n> {\n constructor(\n private readonly blobDriver: DownloadDriver,\n private readonly logger: PFrameInternal.Logger,\n ) {\n super();\n }\n\n protected calculateParamsKey(params: PlTreeEntry): PFrameInternal.PFrameBlobId {\n return makeBlobId(params);\n }\n\n protected createNewResource(params: PlTreeEntry, _key: PFrameInternal.PFrameBlobId): RemoteBlob {\n return this.blobDriver.getOnDemandBlob(params);\n }\n\n public getByKey(blobId: PFrameInternal.PFrameBlobId): RemoteBlob {\n const resource = super.tryGetByKey(blobId);\n if (!resource) throw new PFrameDriverError(`Remote blob with id ${blobId} not found.`);\n return resource;\n }\n\n public async withContent<T>(\n handle: RemoteBlobHandle,\n options: {\n range: PFrameInternal.FileRange;\n signal: AbortSignal;\n handler: ContentHandler<T>;\n },\n ): Promise<T> {\n return await this.blobDriver.withContent(handle, {\n range: {\n from: options.range.start,\n to: options.range.end + 1,\n },\n signal: options.signal,\n handler: options.handler,\n });\n }\n}\n\ninterface BlobStoreOptions extends PFrameInternal.ObjectStoreOptions {\n remoteBlobProvider: RemoteBlobPool;\n}\n\nclass BlobStore extends PFrameInternal.BaseObjectStore {\n private readonly remoteBlobProvider: RemoteBlobPool;\n\n constructor(options: BlobStoreOptions) {\n super(options);\n this.remoteBlobProvider = options.remoteBlobProvider;\n }\n\n public override async request(\n filename: PFrameInternal.ParquetFileName,\n params: {\n method: PFrameInternal.HttpMethod;\n range?: PFrameInternal.HttpRange;\n signal: AbortSignal;\n callback: (response: PFrameInternal.ObjectStoreResponse) => Promise<void>;\n },\n ): Promise<void> {\n const blobId = filename.slice(\n 0,\n -PFrameInternal.ParquetExtension.length,\n ) as PFrameInternal.PFrameBlobId;\n const respond = async (response: PFrameInternal.ObjectStoreResponse): Promise<void> => {\n try {\n await params.callback(response);\n } catch (error: unknown) {\n this.logger(\n \"warn\",\n `PFrames blob store received unhandled rejection from HTTP handler: ${ensureError(error)}`,\n );\n }\n };\n\n try {\n const computable = this.remoteBlobProvider.tryGetByKey(blobId);\n if (!computable) return await respond({ type: \"NotFound\" });\n\n let blob: RemoteBlobHandleAndSize;\n try {\n blob = await computable.getValue();\n } catch (error: unknown) {\n this.logger(\n \"error\",\n `PFrames blob store failed to get blob from computable: ${ensureError(error)}`,\n );\n return await respond({ type: \"InternalError\" });\n }\n params.signal.throwIfAborted();\n\n const translatedRange = this.translate(blob.size, params.range);\n if (!translatedRange) {\n return await respond({\n type: \"RangeNotSatisfiable\",\n size: blob.size,\n });\n }\n\n if (params.method === \"HEAD\") {\n return await respond({\n type: \"Ok\",\n size: blob.size,\n range: translatedRange,\n });\n }\n\n this.logger(\n \"info\",\n `PFrames blob store requesting content for ${blobId}, ` +\n `range [${translatedRange.start}..=${translatedRange.end}]`,\n );\n return await this.remoteBlobProvider.withContent(blob.handle, {\n range: translatedRange,\n signal: params.signal,\n handler: async (data) => {\n return await respond({\n type: \"Ok\",\n size: blob.size,\n range: translatedRange,\n // eslint-disable-next-line n/no-unsupported-features/node-builtins\n data: Readable.fromWeb(data),\n });\n },\n });\n } catch (error: unknown) {\n if (!isAbortError(error)) {\n if (isDownloadNetworkError400(error) && error.statusCode === 404) {\n this.logger(\"info\", `PFrames blob store known race error: ${ensureError(error)}`);\n } else {\n this.logger(\"warn\", `PFrames blob store unhandled error: ${ensureError(error)}`);\n }\n }\n return await respond({ type: \"InternalError\" });\n }\n }\n}\n\nclass RemoteBlobProviderImpl implements RemoteBlobProvider<PlTreeEntry> {\n constructor(\n private readonly pool: RemoteBlobPool,\n private readonly server: PFrameInternal.HttpServer,\n ) {}\n\n public static async init(\n blobDriver: DownloadDriver,\n logger: PFrameInternal.Logger,\n serverOptions: Omit<PFrameInternal.HttpServerOptions, \"handler\">,\n ): Promise<RemoteBlobProviderImpl> {\n const pool = new RemoteBlobPool(blobDriver, logger);\n const store = new BlobStore({ remoteBlobProvider: pool, logger });\n\n const handler = HttpHelpers.createRequestHandler({ store });\n const server = await HttpHelpers.createHttpServer({ ...serverOptions, handler });\n logger(\"info\", `PFrames HTTP server started on ${server.info.url}`);\n\n return new RemoteBlobProviderImpl(pool, server);\n }\n\n public acquire(params: PlTreeEntry): PoolEntry<PFrameInternal.PFrameBlobId> {\n return this.pool.acquire(params);\n }\n\n public httpServerInfo(): PFrameInternal.HttpServerInfo {\n return this.server.info;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.server.stop();\n }\n}\n\nexport interface InternalPFrameDriver extends AbstractInternalPFrameDriver<\n PColumnDataUniversal<PlTreeNodeAccessor>\n> {}\n\nexport type PFrameDriverOps = AbstractPFrameDriverOps & {\n /** Port to run parquet HTTP server on. */\n parquetServerPort: number;\n};\n\nexport const PFrameDriverOpsDefaults: PFrameDriverOps = {\n ...AbstractPFrameDriverOpsDefaults,\n parquetServerPort: 0, // 0 means that some unused port will be assigned by the OS\n};\n\nexport async function createPFrameDriver(params: {\n blobDriver: DownloadDriver;\n logger: MiLogger;\n spillPath: string;\n options: PFrameDriverOps;\n}): Promise<InternalPFrameDriver> {\n const resolvedSpillPath = path.resolve(params.spillPath);\n await emptyDir(resolvedSpillPath);\n\n const logger: PFrameInternal.Logger = (level, message) => params.logger[level](message);\n const localBlobProvider = new LocalBlobProviderImpl(params.blobDriver, logger);\n const remoteBlobProvider = await RemoteBlobProviderImpl.init(params.blobDriver, logger, {\n port: params.options.parquetServerPort,\n });\n\n const resolveDataInfo = (spec: PColumnSpec, data: PColumnDataUniversal<PlTreeNodeAccessor>) => {\n return isPlTreeNodeAccessor(data)\n ? parseDataInfoResource(data)\n : isDataInfo(data)\n ? data.type === \"ParquetPartitioned\"\n ? mapDataInfo(data, (a) => traverseParquetChunkResource(a))\n : mapDataInfo(data, (a) => a.persist())\n : makeJsonDataInfo(spec, data);\n };\n\n return new AbstractPFrameDriver({\n logger,\n localBlobProvider,\n remoteBlobProvider,\n spillPath: resolvedSpillPath,\n options: params.options,\n resolveDataInfo,\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AA0CA,SAAS,WAAW,KAA+C;AACjE,QAAO,OAAO,IAAI,IAAI;;AAIxB,IAAM,wBAAN,cACUA,4CAEV;CACE,YACE,AAAiB,YACjB,AAAiB,QACjB;AACA,SAAO;EAHU;EACA;;CAKnB,AAAU,mBAAmB,QAAkD;AAC7E,SAAO,WAAW,OAAO;;CAG3B,AAAU,kBAAkB,QAAqB,MAA8C;AAC7F,SAAO,KAAK,WAAW,kBAAkB,OAAO;;CAGlD,AAAO,SAAS,QAAgD;EAC9D,MAAM,WAAW,MAAM,YAAY,OAAO;AAC1C,MAAI,CAAC,SAAU,OAAM,IAAIC,uCAAkB,sBAAsB,OAAO,aAAa;AACrF,SAAO;;CAGT,AAAO,eACL,QAC0D;AAC1D,SAAO;GACL,aAAa,OAAO,YAA2C;AAC7D,QAAI;AACF,WAAM,QAAQ,IACZ,QAAQ,KAAK,WAAW,KAAK,SAAS,OAAO,CAAC,qBAAqB,OAAO,CAAC,CAC5E;aACM,KAAc;AACrB,SAAI,wCAAc,IAAI,CAAE,OAAM;;;GAGlC,oBAAoB,OAAO,WAAwC;IAEjE,MAAM,OAAO,MADM,KAAK,SAAS,OAAO,CACV,iBAAiB,OAAO;AACtD,WAAO,MAAM,KAAK,WAAW,WAAW,KAAK,QAAQ,EAAE,QAAQ,CAAC;;GAEnE;;;AAKL,IAAM,iBAAN,cAA6BD,4CAI3B;CACA,YACE,AAAiB,YACjB,AAAiB,QACjB;AACA,SAAO;EAHU;EACA;;CAKnB,AAAU,mBAAmB,QAAkD;AAC7E,SAAO,WAAW,OAAO;;CAG3B,AAAU,kBAAkB,QAAqB,MAA+C;AAC9F,SAAO,KAAK,WAAW,gBAAgB,OAAO;;CAGhD,AAAO,SAAS,QAAiD;EAC/D,MAAM,WAAW,MAAM,YAAY,OAAO;AAC1C,MAAI,CAAC,SAAU,OAAM,IAAIC,uCAAkB,uBAAuB,OAAO,aAAa;AACtF,SAAO;;CAGT,MAAa,YACX,QACA,SAKY;AACZ,SAAO,MAAM,KAAK,WAAW,YAAY,QAAQ;GAC/C,OAAO;IACL,MAAM,QAAQ,MAAM;IACpB,IAAI,QAAQ,MAAM,MAAM;IACzB;GACD,QAAQ,QAAQ;GAChB,SAAS,QAAQ;GAClB,CAAC;;;AAQN,IAAM,YAAN,cAAwBC,qDAAe,gBAAgB;CACrD,AAAiB;CAEjB,YAAY,SAA2B;AACrC,QAAM,QAAQ;AACd,OAAK,qBAAqB,QAAQ;;CAGpC,MAAsB,QACpB,UACA,QAMe;EACf,MAAM,SAAS,SAAS,MACtB,GACA,CAACA,qDAAe,iBAAiB,OAClC;EACD,MAAM,UAAU,OAAO,aAAgE;AACrF,OAAI;AACF,UAAM,OAAO,SAAS,SAAS;YACxB,OAAgB;AACvB,SAAK,OACH,QACA,4GAAkF,MAAM,GACzF;;;AAIL,MAAI;GACF,MAAM,aAAa,KAAK,mBAAmB,YAAY,OAAO;AAC9D,OAAI,CAAC,WAAY,QAAO,MAAM,QAAQ,EAAE,MAAM,YAAY,CAAC;GAE3D,IAAI;AACJ,OAAI;AACF,WAAO,MAAM,WAAW,UAAU;YAC3B,OAAgB;AACvB,SAAK,OACH,SACA,gGAAsE,MAAM,GAC7E;AACD,WAAO,MAAM,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;AAEjD,UAAO,OAAO,gBAAgB;GAE9B,MAAM,kBAAkB,KAAK,UAAU,KAAK,MAAM,OAAO,MAAM;AAC/D,OAAI,CAAC,gBACH,QAAO,MAAM,QAAQ;IACnB,MAAM;IACN,MAAM,KAAK;IACZ,CAAC;AAGJ,OAAI,OAAO,WAAW,OACpB,QAAO,MAAM,QAAQ;IACnB,MAAM;IACN,MAAM,KAAK;IACX,OAAO;IACR,CAAC;AAGJ,QAAK,OACH,QACA,6CAA6C,OAAO,WACxC,gBAAgB,MAAM,KAAK,gBAAgB,IAAI,GAC5D;AACD,UAAO,MAAM,KAAK,mBAAmB,YAAY,KAAK,QAAQ;IAC5D,OAAO;IACP,QAAQ,OAAO;IACf,SAAS,OAAO,SAAS;AACvB,YAAO,MAAM,QAAQ;MACnB,MAAM;MACN,MAAM,KAAK;MACX,OAAO;MAEP,MAAMC,qBAAS,QAAQ,KAAK;MAC7B,CAAC;;IAEL,CAAC;WACK,OAAgB;AACvB,OAAI,wCAAc,MAAM,CACtB,+DAA8B,MAAM,IAAI,MAAM,eAAe,IAC3D,MAAK,OAAO,QAAQ,8EAAoD,MAAM,GAAG;OAEjF,MAAK,OAAO,QAAQ,6EAAmD,MAAM,GAAG;AAGpF,UAAO,MAAM,QAAQ,EAAE,MAAM,iBAAiB,CAAC;;;;AAKrD,IAAM,yBAAN,MAAM,uBAAkE;CACtE,YACE,AAAiB,MACjB,AAAiB,QACjB;EAFiB;EACA;;CAGnB,aAAoB,KAClB,YACA,QACA,eACiC;EACjC,MAAM,OAAO,IAAI,eAAe,YAAY,OAAO;EACnD,MAAM,QAAQ,IAAI,UAAU;GAAE,oBAAoB;GAAM;GAAQ,CAAC;EAEjE,MAAM,UAAUC,4CAAY,qBAAqB,EAAE,OAAO,CAAC;EAC3D,MAAM,SAAS,MAAMA,4CAAY,iBAAiB;GAAE,GAAG;GAAe;GAAS,CAAC;AAChF,SAAO,QAAQ,kCAAkC,OAAO,KAAK,MAAM;AAEnE,SAAO,IAAI,uBAAuB,MAAM,OAAO;;CAGjD,AAAO,QAAQ,QAA6D;AAC1E,SAAO,KAAK,KAAK,QAAQ,OAAO;;CAGlC,AAAO,iBAAgD;AACrD,SAAO,KAAK,OAAO;;CAGrB,OAAO,OAAO,gBAA+B;AAC3C,QAAM,KAAK,OAAO,MAAM;;;AAa5B,MAAa,0BAA2C;CACtD,GAAGC;CACH,mBAAmB;CACpB;AAED,eAAsB,mBAAmB,QAKP;CAChC,MAAM,oBAAoBC,kBAAK,QAAQ,OAAO,UAAU;AACxD,gDAAe,kBAAkB;CAEjC,MAAM,UAAiC,OAAO,YAAY,OAAO,OAAO,OAAO,QAAQ;CACvF,MAAM,oBAAoB,IAAI,sBAAsB,OAAO,YAAY,OAAO;CAC9E,MAAM,qBAAqB,MAAM,uBAAuB,KAAK,OAAO,YAAY,QAAQ,EACtF,MAAM,OAAO,QAAQ,mBACtB,CAAC;CAEF,MAAM,mBAAmB,MAAmB,SAAmD;AAC7F,2DAA4B,KAAK,GAC7BC,mCAAsB,KAAK,wCAChB,KAAK,GACd,KAAK,SAAS,6DACA,OAAO,MAAMC,0CAA6B,EAAE,CAAC,yCAC7C,OAAO,MAAM,EAAE,SAAS,CAAC,mDACtB,MAAM,KAAK;;AAGpC,QAAO,IAAIC,+CAAqB;EAC9B;EACA;EACA;EACA,WAAW;EACX,SAAS,OAAO;EAChB;EACD,CAAC"}
@@ -1,19 +1,14 @@
1
- import { type PColumnDataUniversal } from "@platforma-sdk/model";
2
- import { type MiLogger } from "@milaboratories/ts-helpers";
3
- import type { DownloadDriver } from "@milaboratories/pl-drivers";
4
- import { type PlTreeNodeAccessor } from "@milaboratories/pl-tree";
5
- import { type AbstractInternalPFrameDriver, type AbstractPFrameDriverOps } from "@milaboratories/pf-driver";
6
- export interface InternalPFrameDriver extends AbstractInternalPFrameDriver<PColumnDataUniversal<PlTreeNodeAccessor>> {
7
- }
8
- export type PFrameDriverOps = AbstractPFrameDriverOps & {
9
- /** Port to run parquet HTTP server on. */
10
- parquetServerPort: number;
1
+ import { PColumnDataUniversal } from "@platforma-sdk/model";
2
+ import { MiLogger } from "@milaboratories/ts-helpers";
3
+ import { PlTreeNodeAccessor } from "@milaboratories/pl-tree";
4
+ import { AbstractInternalPFrameDriver, AbstractPFrameDriverOps } from "@milaboratories/pf-driver";
5
+ import { DownloadDriver } from "@milaboratories/pl-drivers";
6
+
7
+ //#region src/pool/driver.d.ts
8
+ interface InternalPFrameDriver extends AbstractInternalPFrameDriver<PColumnDataUniversal<PlTreeNodeAccessor>> {}
9
+ type PFrameDriverOps = AbstractPFrameDriverOps & {
10
+ /** Port to run parquet HTTP server on. */parquetServerPort: number;
11
11
  };
12
- export declare const PFrameDriverOpsDefaults: PFrameDriverOps;
13
- export declare function createPFrameDriver(params: {
14
- blobDriver: DownloadDriver;
15
- logger: MiLogger;
16
- spillPath: string;
17
- options: PFrameDriverOps;
18
- }): Promise<InternalPFrameDriver>;
12
+ //#endregion
13
+ export { InternalPFrameDriver, PFrameDriverOps };
19
14
  //# sourceMappingURL=driver.d.ts.map