@platforma-sdk/model 1.58.5 → 1.58.11

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 (365) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +43 -0
  2. package/dist/_virtual/_rolldown/runtime.js +18 -0
  3. package/dist/annotations/converter.cjs +15 -20
  4. package/dist/annotations/converter.cjs.map +1 -1
  5. package/dist/annotations/converter.d.ts +6 -2
  6. package/dist/annotations/converter.js +14 -18
  7. package/dist/annotations/converter.js.map +1 -1
  8. package/dist/annotations/index.cjs +1 -0
  9. package/dist/annotations/index.d.ts +2 -3
  10. package/dist/annotations/index.js +1 -0
  11. package/dist/annotations/types.d.ts +21 -16
  12. package/dist/bconfig/index.cjs +2 -0
  13. package/dist/bconfig/index.d.ts +5 -6
  14. package/dist/bconfig/index.js +2 -0
  15. package/dist/bconfig/lambdas.d.ts +52 -52
  16. package/dist/bconfig/normalization.cjs +13 -18
  17. package/dist/bconfig/normalization.cjs.map +1 -1
  18. package/dist/bconfig/normalization.d.ts +10 -6
  19. package/dist/bconfig/normalization.js +12 -16
  20. package/dist/bconfig/normalization.js.map +1 -1
  21. package/dist/bconfig/types.cjs +4 -3
  22. package/dist/bconfig/types.cjs.map +1 -1
  23. package/dist/bconfig/types.d.ts +10 -5
  24. package/dist/bconfig/types.js +4 -2
  25. package/dist/bconfig/types.js.map +1 -1
  26. package/dist/bconfig/util.d.ts +7 -4
  27. package/dist/bconfig/v3.d.ts +10 -6
  28. package/dist/block_api_v1.d.ts +62 -58
  29. package/dist/block_api_v2.d.ts +51 -47
  30. package/dist/block_api_v3.d.ts +33 -29
  31. package/dist/block_migrations.cjs +481 -413
  32. package/dist/block_migrations.cjs.map +1 -1
  33. package/dist/block_migrations.d.ts +258 -204
  34. package/dist/block_migrations.js +482 -408
  35. package/dist/block_migrations.js.map +1 -1
  36. package/dist/block_model.cjs +312 -343
  37. package/dist/block_model.cjs.map +1 -1
  38. package/dist/block_model.d.ts +143 -147
  39. package/dist/block_model.js +312 -341
  40. package/dist/block_model.js.map +1 -1
  41. package/dist/block_model_legacy.cjs +231 -255
  42. package/dist/block_model_legacy.cjs.map +1 -1
  43. package/dist/block_model_legacy.d.ts +108 -106
  44. package/dist/block_model_legacy.js +231 -253
  45. package/dist/block_model_legacy.js.map +1 -1
  46. package/dist/block_state_patch.d.ts +10 -10
  47. package/dist/block_state_util.cjs +15 -19
  48. package/dist/block_state_util.cjs.map +1 -1
  49. package/dist/block_state_util.d.ts +14 -13
  50. package/dist/block_state_util.js +15 -18
  51. package/dist/block_state_util.js.map +1 -1
  52. package/dist/block_storage.cjs +233 -238
  53. package/dist/block_storage.cjs.map +1 -1
  54. package/dist/block_storage.d.ts +62 -78
  55. package/dist/block_storage.js +234 -237
  56. package/dist/block_storage.js.map +1 -1
  57. package/dist/block_storage_callbacks.cjs +156 -195
  58. package/dist/block_storage_callbacks.cjs.map +1 -1
  59. package/dist/block_storage_callbacks.js +156 -192
  60. package/dist/block_storage_callbacks.js.map +1 -1
  61. package/dist/block_storage_facade.cjs +29 -85
  62. package/dist/block_storage_facade.cjs.map +1 -1
  63. package/dist/block_storage_facade.d.ts +83 -126
  64. package/dist/block_storage_facade.js +29 -83
  65. package/dist/block_storage_facade.js.map +1 -1
  66. package/dist/components/PFrameForGraphs.cjs +26 -24
  67. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  68. package/dist/components/PFrameForGraphs.d.ts +12 -7
  69. package/dist/components/PFrameForGraphs.js +25 -22
  70. package/dist/components/PFrameForGraphs.js.map +1 -1
  71. package/dist/components/PlAnnotations/filter.d.ts +62 -79
  72. package/dist/components/PlAnnotations/filters_ui.cjs +135 -171
  73. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  74. package/dist/components/PlAnnotations/filters_ui.d.ts +48 -46
  75. package/dist/components/PlAnnotations/filters_ui.js +135 -170
  76. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  77. package/dist/components/PlAnnotations/index.d.ts +2 -3
  78. package/dist/components/PlDataTable/index.cjs +2 -0
  79. package/dist/components/PlDataTable/index.d.ts +3 -5
  80. package/dist/components/PlDataTable/index.js +2 -0
  81. package/dist/components/PlDataTable/labels.cjs +59 -81
  82. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  83. package/dist/components/PlDataTable/labels.js +58 -79
  84. package/dist/components/PlDataTable/labels.js.map +1 -1
  85. package/dist/components/PlDataTable/state-migration.cjs +186 -144
  86. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  87. package/dist/components/PlDataTable/state-migration.d.ts +85 -82
  88. package/dist/components/PlDataTable/state-migration.js +185 -142
  89. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  90. package/dist/components/PlDataTable/table.cjs +172 -194
  91. package/dist/components/PlDataTable/table.cjs.map +1 -1
  92. package/dist/components/PlDataTable/table.d.ts +16 -12
  93. package/dist/components/PlDataTable/table.js +171 -192
  94. package/dist/components/PlDataTable/table.js.map +1 -1
  95. package/dist/components/PlDataTable/v4.d.ts +84 -119
  96. package/dist/components/PlDataTable/v5.d.ts +80 -103
  97. package/dist/components/PlMultiSequenceAlignment.cjs +27 -29
  98. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  99. package/dist/components/PlMultiSequenceAlignment.d.ts +36 -27
  100. package/dist/components/PlMultiSequenceAlignment.js +26 -27
  101. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  102. package/dist/components/PlSelectionModel.cjs +7 -6
  103. package/dist/components/PlSelectionModel.cjs.map +1 -1
  104. package/dist/components/PlSelectionModel.d.ts +10 -8
  105. package/dist/components/PlSelectionModel.js +7 -5
  106. package/dist/components/PlSelectionModel.js.map +1 -1
  107. package/dist/components/index.cjs +8 -0
  108. package/dist/components/index.d.ts +11 -6
  109. package/dist/components/index.js +8 -0
  110. package/dist/config/actions.cjs +138 -171
  111. package/dist/config/actions.cjs.map +1 -1
  112. package/dist/config/actions.d.ts +47 -47
  113. package/dist/config/actions.js +146 -178
  114. package/dist/config/actions.js.map +1 -1
  115. package/dist/config/actions_kinds.d.ts +114 -121
  116. package/dist/config/index.cjs +1 -0
  117. package/dist/config/index.d.ts +6 -7
  118. package/dist/config/index.js +1 -0
  119. package/dist/config/model.d.ts +131 -127
  120. package/dist/config/model_meta.d.ts +4 -1
  121. package/dist/config/type_engine.d.ts +22 -21
  122. package/dist/config/type_util.d.ts +12 -10
  123. package/dist/env_value.cjs +5 -6
  124. package/dist/env_value.cjs.map +1 -1
  125. package/dist/env_value.d.ts +4 -1
  126. package/dist/env_value.js +5 -5
  127. package/dist/env_value.js.map +1 -1
  128. package/dist/filters/converters/filterToQuery.cjs +273 -239
  129. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  130. package/dist/filters/converters/filterToQuery.d.ts +6 -2
  131. package/dist/filters/converters/filterToQuery.js +272 -237
  132. package/dist/filters/converters/filterToQuery.js.map +1 -1
  133. package/dist/filters/converters/filterUiToExpressionImpl.cjs +56 -85
  134. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  135. package/dist/filters/converters/filterUiToExpressionImpl.d.ts +8 -4
  136. package/dist/filters/converters/filterUiToExpressionImpl.js +55 -83
  137. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  138. package/dist/filters/converters/index.cjs +2 -0
  139. package/dist/filters/converters/index.d.ts +2 -3
  140. package/dist/filters/converters/index.js +2 -0
  141. package/dist/filters/distill.cjs +59 -60
  142. package/dist/filters/distill.cjs.map +1 -1
  143. package/dist/filters/distill.d.ts +6 -3
  144. package/dist/filters/distill.js +58 -58
  145. package/dist/filters/distill.js.map +1 -1
  146. package/dist/filters/index.cjs +4 -0
  147. package/dist/filters/index.d.ts +5 -4
  148. package/dist/filters/index.js +4 -0
  149. package/dist/filters/traverse.cjs +31 -40
  150. package/dist/filters/traverse.cjs.map +1 -1
  151. package/dist/filters/traverse.js +31 -39
  152. package/dist/filters/traverse.js.map +1 -1
  153. package/dist/filters/types.d.ts +10 -7
  154. package/dist/index.cjs +193 -187
  155. package/dist/index.d.ts +61 -28
  156. package/dist/index.js +49 -41
  157. package/dist/internal.cjs +48 -62
  158. package/dist/internal.cjs.map +1 -1
  159. package/dist/internal.js +49 -60
  160. package/dist/internal.js.map +1 -1
  161. package/dist/package.cjs +12 -0
  162. package/dist/package.cjs.map +1 -0
  163. package/dist/package.js +6 -0
  164. package/dist/package.js.map +1 -0
  165. package/dist/pframe.cjs +32 -37
  166. package/dist/pframe.cjs.map +1 -1
  167. package/dist/pframe.d.ts +14 -10
  168. package/dist/pframe.js +32 -35
  169. package/dist/pframe.js.map +1 -1
  170. package/dist/pframe_utils/axes.cjs +81 -114
  171. package/dist/pframe_utils/axes.cjs.map +1 -1
  172. package/dist/pframe_utils/axes.d.ts +10 -13
  173. package/dist/pframe_utils/axes.js +80 -112
  174. package/dist/pframe_utils/axes.js.map +1 -1
  175. package/dist/pframe_utils/columns.cjs +61 -81
  176. package/dist/pframe_utils/columns.cjs.map +1 -1
  177. package/dist/pframe_utils/columns.d.ts +15 -6
  178. package/dist/pframe_utils/columns.js +60 -79
  179. package/dist/pframe_utils/columns.js.map +1 -1
  180. package/dist/pframe_utils/index.cjs +232 -253
  181. package/dist/pframe_utils/index.cjs.map +1 -1
  182. package/dist/pframe_utils/index.d.ts +39 -35
  183. package/dist/pframe_utils/index.js +231 -251
  184. package/dist/pframe_utils/index.js.map +1 -1
  185. package/dist/platforma.d.ts +48 -46
  186. package/dist/plugin_handle.cjs +6 -14
  187. package/dist/plugin_handle.cjs.map +1 -1
  188. package/dist/plugin_handle.d.ts +20 -25
  189. package/dist/plugin_handle.js +6 -13
  190. package/dist/plugin_handle.js.map +1 -1
  191. package/dist/plugin_model.cjs +364 -163
  192. package/dist/plugin_model.cjs.map +1 -1
  193. package/dist/plugin_model.d.ts +280 -129
  194. package/dist/plugin_model.js +362 -163
  195. package/dist/plugin_model.js.map +1 -1
  196. package/dist/raw_globals.cjs +10 -22
  197. package/dist/raw_globals.cjs.map +1 -1
  198. package/dist/raw_globals.d.ts +8 -5
  199. package/dist/raw_globals.js +10 -20
  200. package/dist/raw_globals.js.map +1 -1
  201. package/dist/ref_util.cjs +14 -13
  202. package/dist/ref_util.cjs.map +1 -1
  203. package/dist/ref_util.d.ts +18 -12
  204. package/dist/ref_util.js +14 -11
  205. package/dist/ref_util.js.map +1 -1
  206. package/dist/render/accessor.cjs +213 -226
  207. package/dist/render/accessor.cjs.map +1 -1
  208. package/dist/render/accessor.d.ts +115 -120
  209. package/dist/render/accessor.js +212 -224
  210. package/dist/render/accessor.js.map +1 -1
  211. package/dist/render/api.cjs +478 -580
  212. package/dist/render/api.cjs.map +1 -1
  213. package/dist/render/api.d.ts +207 -209
  214. package/dist/render/api.js +476 -578
  215. package/dist/render/api.js.map +1 -1
  216. package/dist/render/future.cjs +28 -32
  217. package/dist/render/future.cjs.map +1 -1
  218. package/dist/render/future.d.ts +15 -11
  219. package/dist/render/future.js +28 -30
  220. package/dist/render/future.js.map +1 -1
  221. package/dist/render/index.cjs +8 -0
  222. package/dist/render/index.d.ts +10 -8
  223. package/dist/render/index.js +8 -0
  224. package/dist/render/internal.cjs +33 -29
  225. package/dist/render/internal.cjs.map +1 -1
  226. package/dist/render/internal.d.ts +78 -72
  227. package/dist/render/internal.js +29 -26
  228. package/dist/render/internal.js.map +1 -1
  229. package/dist/render/traversal_ops.d.ts +42 -43
  230. package/dist/render/util/axis_filtering.cjs +63 -86
  231. package/dist/render/util/axis_filtering.cjs.map +1 -1
  232. package/dist/render/util/axis_filtering.d.ts +10 -7
  233. package/dist/render/util/axis_filtering.js +63 -85
  234. package/dist/render/util/axis_filtering.js.map +1 -1
  235. package/dist/render/util/column_collection.cjs +266 -321
  236. package/dist/render/util/column_collection.cjs.map +1 -1
  237. package/dist/render/util/column_collection.d.ts +47 -47
  238. package/dist/render/util/column_collection.js +264 -319
  239. package/dist/render/util/column_collection.js.map +1 -1
  240. package/dist/render/util/index.cjs +4 -0
  241. package/dist/render/util/index.d.ts +4 -5
  242. package/dist/render/util/index.js +4 -0
  243. package/dist/render/util/label.cjs +129 -163
  244. package/dist/render/util/label.cjs.map +1 -1
  245. package/dist/render/util/label.d.ts +45 -46
  246. package/dist/render/util/label.js +128 -161
  247. package/dist/render/util/label.js.map +1 -1
  248. package/dist/render/util/pcolumn_data.cjs +315 -375
  249. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  250. package/dist/render/util/pcolumn_data.d.ts +33 -32
  251. package/dist/render/util/pcolumn_data.js +314 -373
  252. package/dist/render/util/pcolumn_data.js.map +1 -1
  253. package/dist/render/util/pframe_upgraders.cjs +37 -42
  254. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  255. package/dist/render/util/pframe_upgraders.js +37 -41
  256. package/dist/render/util/pframe_upgraders.js.map +1 -1
  257. package/dist/render/util/split_selectors.d.ts +13 -9
  258. package/dist/version.cjs +6 -8
  259. package/dist/version.cjs.map +1 -1
  260. package/dist/version.d.ts +7 -4
  261. package/dist/version.js +5 -5
  262. package/dist/version.js.map +1 -1
  263. package/package.json +15 -9
  264. package/src/block_migrations.test.ts +184 -14
  265. package/src/block_migrations.ts +185 -30
  266. package/src/block_model.ts +111 -66
  267. package/src/block_storage.test.ts +147 -3
  268. package/src/block_storage.ts +43 -8
  269. package/src/block_storage_callbacks.ts +9 -4
  270. package/src/env_value.ts +0 -2
  271. package/src/index.ts +12 -11
  272. package/src/internal.ts +0 -1
  273. package/src/platforma.ts +4 -4
  274. package/src/plugin_handle.ts +1 -1
  275. package/src/plugin_model.test.ts +217 -21
  276. package/src/plugin_model.ts +450 -55
  277. package/src/raw_globals.ts +0 -1
  278. package/dist/annotations/converter.d.ts.map +0 -1
  279. package/dist/annotations/index.d.ts.map +0 -1
  280. package/dist/annotations/types.d.ts.map +0 -1
  281. package/dist/bconfig/index.d.ts.map +0 -1
  282. package/dist/bconfig/lambdas.d.ts.map +0 -1
  283. package/dist/bconfig/normalization.d.ts.map +0 -1
  284. package/dist/bconfig/types.d.ts.map +0 -1
  285. package/dist/bconfig/util.d.ts.map +0 -1
  286. package/dist/bconfig/v3.d.ts.map +0 -1
  287. package/dist/block_api_v1.d.ts.map +0 -1
  288. package/dist/block_api_v2.d.ts.map +0 -1
  289. package/dist/block_api_v3.d.ts.map +0 -1
  290. package/dist/block_migrations.d.ts.map +0 -1
  291. package/dist/block_model.d.ts.map +0 -1
  292. package/dist/block_model_legacy.d.ts.map +0 -1
  293. package/dist/block_state_patch.d.ts.map +0 -1
  294. package/dist/block_state_util.d.ts.map +0 -1
  295. package/dist/block_storage.d.ts.map +0 -1
  296. package/dist/block_storage_callbacks.d.ts +0 -115
  297. package/dist/block_storage_callbacks.d.ts.map +0 -1
  298. package/dist/block_storage_facade.d.ts.map +0 -1
  299. package/dist/components/PFrameForGraphs.d.ts.map +0 -1
  300. package/dist/components/PlAnnotations/filter.d.ts.map +0 -1
  301. package/dist/components/PlAnnotations/filters_ui.d.ts.map +0 -1
  302. package/dist/components/PlAnnotations/index.d.ts.map +0 -1
  303. package/dist/components/PlAnnotations/types.d.ts +0 -3
  304. package/dist/components/PlAnnotations/types.d.ts.map +0 -1
  305. package/dist/components/PlDataTable/index.d.ts.map +0 -1
  306. package/dist/components/PlDataTable/labels.d.ts +0 -7
  307. package/dist/components/PlDataTable/labels.d.ts.map +0 -1
  308. package/dist/components/PlDataTable/state-migration.d.ts.map +0 -1
  309. package/dist/components/PlDataTable/table.d.ts.map +0 -1
  310. package/dist/components/PlDataTable/v4.d.ts.map +0 -1
  311. package/dist/components/PlDataTable/v5.d.ts.map +0 -1
  312. package/dist/components/PlMultiSequenceAlignment.d.ts.map +0 -1
  313. package/dist/components/PlSelectionModel.d.ts.map +0 -1
  314. package/dist/components/index.d.ts.map +0 -1
  315. package/dist/config/actions.d.ts.map +0 -1
  316. package/dist/config/actions_kinds.d.ts.map +0 -1
  317. package/dist/config/index.d.ts.map +0 -1
  318. package/dist/config/model.d.ts.map +0 -1
  319. package/dist/config/model_meta.d.ts.map +0 -1
  320. package/dist/config/type_engine.d.ts.map +0 -1
  321. package/dist/config/type_util.d.ts.map +0 -1
  322. package/dist/env_value.d.ts.map +0 -1
  323. package/dist/filters/converters/filterToQuery.d.ts.map +0 -1
  324. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +0 -1
  325. package/dist/filters/converters/index.d.ts.map +0 -1
  326. package/dist/filters/distill.d.ts.map +0 -1
  327. package/dist/filters/index.d.ts.map +0 -1
  328. package/dist/filters/traverse.d.ts +0 -27
  329. package/dist/filters/traverse.d.ts.map +0 -1
  330. package/dist/filters/types.d.ts.map +0 -1
  331. package/dist/index.cjs.map +0 -1
  332. package/dist/index.d.ts.map +0 -1
  333. package/dist/index.js.map +0 -1
  334. package/dist/internal.d.ts +0 -36
  335. package/dist/internal.d.ts.map +0 -1
  336. package/dist/package.json.cjs +0 -6
  337. package/dist/package.json.cjs.map +0 -1
  338. package/dist/package.json.js +0 -4
  339. package/dist/package.json.js.map +0 -1
  340. package/dist/pframe.d.ts.map +0 -1
  341. package/dist/pframe_utils/axes.d.ts.map +0 -1
  342. package/dist/pframe_utils/columns.d.ts.map +0 -1
  343. package/dist/pframe_utils/index.d.ts.map +0 -1
  344. package/dist/pframe_utils/querySpec.d.ts +0 -2
  345. package/dist/pframe_utils/querySpec.d.ts.map +0 -1
  346. package/dist/platforma.d.ts.map +0 -1
  347. package/dist/plugin_handle.d.ts.map +0 -1
  348. package/dist/plugin_model.d.ts.map +0 -1
  349. package/dist/raw_globals.d.ts.map +0 -1
  350. package/dist/ref_util.d.ts.map +0 -1
  351. package/dist/render/accessor.d.ts.map +0 -1
  352. package/dist/render/api.d.ts.map +0 -1
  353. package/dist/render/future.d.ts.map +0 -1
  354. package/dist/render/index.d.ts.map +0 -1
  355. package/dist/render/internal.d.ts.map +0 -1
  356. package/dist/render/traversal_ops.d.ts.map +0 -1
  357. package/dist/render/util/axis_filtering.d.ts.map +0 -1
  358. package/dist/render/util/column_collection.d.ts.map +0 -1
  359. package/dist/render/util/index.d.ts.map +0 -1
  360. package/dist/render/util/label.d.ts.map +0 -1
  361. package/dist/render/util/pcolumn_data.d.ts.map +0 -1
  362. package/dist/render/util/pframe_upgraders.d.ts +0 -3
  363. package/dist/render/util/pframe_upgraders.d.ts.map +0 -1
  364. package/dist/render/util/split_selectors.d.ts.map +0 -1
  365. package/dist/version.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pcolumn_data.js","sources":["../../../src/render/util/pcolumn_data.ts"],"sourcesContent":["import type {\n DataInfo,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnValues,\n} from \"@milaboratories/pl-model-common\";\nimport {\n dataInfoToEntries,\n isDataInfo,\n isDataInfoEntries,\n visitDataInfo,\n type BinaryChunk,\n type DataInfoEntries,\n type PColumnDataEntry,\n type PColumnKey,\n} from \"@milaboratories/pl-model-common\";\nimport { TreeNodeAccessor } from \"../accessor\";\nimport type { PColumnDataUniversal } from \"../internal\";\n\nconst PCD_PREFIX = \"PColumnData/\";\n\nexport const RT_RESOURCE_MAP = PCD_PREFIX + \"ResourceMap\";\nexport const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + \"Partitioned/ResourceMap\";\n\nexport const RT_JSON_PARTITIONED = PCD_PREFIX + \"JsonPartitioned\";\nexport const RT_BINARY_PARTITIONED = PCD_PREFIX + \"BinaryPartitioned\";\nexport const RT_PARQUET_PARTITIONED = PCD_PREFIX + \"ParquetPartitioned\";\n\nconst PCD_SUP_PREFIX = PCD_PREFIX + \"Partitioned/\";\nexport const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"JsonPartitioned\";\nexport const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"BinaryPartitioned\";\nexport const RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"ParquetPartitioned\";\n\nexport type PColumnResourceMapEntry<T> = {\n key: PColumnKey;\n value: T;\n};\n\nexport type PColumnResourceMapData<T> = {\n isComplete: boolean;\n data: PColumnResourceMapEntry<T>[];\n};\n\nfunction populateResourceMapData<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n data: PColumnResourceMapEntry<T | undefined>[],\n keyPrefix: PColumnKey = [],\n addEntriesWithNoData: boolean,\n): boolean {\n if (acc === undefined) return false;\n switch (acc.resourceType.name) {\n case RT_RESOURCE_MAP: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const converted = value === undefined ? undefined : resourceParser(value);\n if (converted === undefined) isComplete = false;\n if (converted !== undefined || addEntriesWithNoData) data.push({ key, value: converted });\n }\n return isComplete;\n }\n case RT_RESOURCE_MAP_PARTITIONED: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) isComplete = false;\n else {\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const populateResult = populateResourceMapData(\n value,\n resourceParser,\n data,\n key,\n addEntriesWithNoData,\n );\n isComplete = isComplete && populateResult;\n }\n }\n return isComplete;\n }\n default:\n throw new Error(`Unknown resource type: ${acc.resourceType.name}`);\n }\n}\n\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: false,\n): PColumnResourceMapData<NonNullable<T>>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: true,\n): PColumnResourceMapData<T | undefined>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: boolean = false,\n): PColumnResourceMapData<T | undefined> {\n const data: PColumnResourceMapEntry<T | undefined>[] = [];\n const isComplete = populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData);\n return { isComplete, data };\n}\n\nexport type PColumnKeyList = {\n /** array of keys */\n data: PColumnKey[];\n /** length of partition key */\n keyLength: number;\n};\n\nconst removeIndexSuffix = (keyStr: string): { baseKey: string; type: \"index\" | \"values\" } => {\n if (keyStr.endsWith(\".index\")) {\n return { baseKey: keyStr.substring(0, keyStr.length - 6), type: \"index\" };\n } else if (keyStr.endsWith(\".values\")) {\n return { baseKey: keyStr.substring(0, keyStr.length - 7), type: \"values\" };\n } else {\n throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);\n }\n};\n\n// @TODO define a class with various resource map operations\n/** Returns a list of all partition keys appeared in the p-column */\nexport function getPartitionKeysList(\n acc: TreeNodeAccessor | undefined,\n): PColumnKeyList | undefined {\n if (!acc) return undefined;\n\n const rt = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n const data: PColumnKey[] = [];\n\n let keyLength = 0;\n // @TODO validate meta shape\n switch (rt) {\n case RT_RESOURCE_MAP:\n keyLength = meta[\"keyLength\"];\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n keyLength = meta[\"partitionKeyLength\"] + meta[\"keyLength\"];\n break;\n\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n keyLength = meta[\"partitionKeyLength\"];\n break;\n\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n keyLength = meta[\"superPartitionKeyLength\"] + meta[\"partitionKeyLength\"];\n break;\n }\n\n switch (rt) {\n case RT_RESOURCE_MAP:\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n for (let keyStr of acc.listInputFields()) {\n if (rt === RT_BINARY_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n for (const supKeyStr of acc.listInputFields()) {\n const keyPrefix = [...JSON.parse(supKeyStr)] as PColumnKey;\n\n const value = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (value !== undefined) {\n for (let keyStr of value.listInputFields()) {\n if (rt === RT_BINARY_SUPER_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n }\n }\n break;\n }\n\n return { data, keyLength };\n}\n\nfunction getUniquePartitionKeysForDataEntries(\n list: DataInfoEntries<unknown>,\n): (string | number)[][] {\n if (\n list.type !== \"JsonPartitioned\" &&\n list.type !== \"BinaryPartitioned\" &&\n list.type !== \"ParquetPartitioned\"\n )\n throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);\n\n const { parts, partitionKeyLength } = list;\n\n const result: Set<string | number>[] = [];\n for (let i = 0; i < partitionKeyLength; ++i) {\n result.push(new Set());\n }\n\n for (const part of parts) {\n const key = part.key;\n if (key.length !== partitionKeyLength) {\n throw new Error(\n `Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(\n key,\n )}`,\n );\n }\n for (let i = 0; i < partitionKeyLength; ++i) {\n result[i].add(key[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/** Returns an array of unique partition keys for each column: the i-th element in the resulting 2d array contains all unique values of i-th partition axis. */\nexport function getUniquePartitionKeys(acc: DataInfoEntries<unknown>): (string | number)[][];\nexport function getUniquePartitionKeys(\n acc: DataInfoEntries<unknown> | TreeNodeAccessor | undefined,\n): (string | number)[][] | undefined;\nexport function getUniquePartitionKeys(\n acc: TreeNodeAccessor | DataInfoEntries<unknown> | undefined,\n): (string | number)[][] | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return getUniquePartitionKeysForDataEntries(acc);\n\n const list = getPartitionKeysList(acc);\n if (!list) return undefined;\n\n const { data, keyLength } = list;\n\n const result: Set<string | number>[] = [];\n\n for (let i = 0; i < keyLength; ++i) {\n result.push(new Set());\n }\n\n for (const l of data) {\n if (l.length !== keyLength) {\n throw new Error(\"key length does not match partition length\");\n }\n for (let i = 0; i < keyLength; ++i) {\n result[i].add(l[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/**\n * Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.\n * Returns undefined if any required data is missing.\n * Throws error on validation failures.\n *\n * @param acc - The TreeNodeAccessor containing PColumn data\n * @param keyPrefix - Optional key prefix for recursive calls\n * @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete\n */\nexport function parsePColumnData(\n acc: TreeNodeAccessor | undefined,\n keyPrefix: PColumnKey = [],\n): PartitionedDataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (!acc.getIsReadyOrError()) return undefined;\n\n const resourceType = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n\n // Prevent recursive super-partitioned resources\n if (\n keyPrefix.length > 0 &&\n (resourceType === RT_JSON_SUPER_PARTITIONED ||\n resourceType === RT_BINARY_SUPER_PARTITIONED ||\n resourceType === RT_PARQUET_SUPER_PARTITIONED)\n ) {\n throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);\n }\n\n switch (resourceType) {\n case RT_RESOURCE_MAP:\n case RT_RESOURCE_MAP_PARTITIONED:\n throw new Error(`Only data columns are supported, got: ${resourceType}`);\n\n case RT_JSON_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n const baseKeys = new Map<string, { index?: TreeNodeAccessor; values?: TreeNodeAccessor }>();\n\n // Group fields by base key (without .index/.values suffix)\n for (const keyStr of acc.listInputFields()) {\n const suffix = removeIndexSuffix(keyStr);\n\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n let entry = baseKeys.get(suffix.baseKey);\n if (!entry) {\n entry = {};\n baseKeys.set(suffix.baseKey, entry);\n }\n\n if (suffix.type === \"index\") {\n entry.index = value;\n } else {\n entry.values = value;\n }\n }\n\n // Process complete binary chunks only\n for (const [baseKeyStr, entry] of baseKeys.entries()) {\n if (!entry.index || !entry.values) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(baseKeyStr)];\n parts.push({\n key,\n value: {\n index: entry.index,\n values: entry.values,\n },\n });\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_JSON_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) {\n throw new Error(\n `Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"JsonPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) {\n throw new Error(\n `Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"BinaryPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_PARQUET_PARTITIONED) {\n throw new Error(\n `Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"ParquetPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n default:\n throw new Error(`Unknown resource type: ${resourceType}`);\n }\n}\n\n/**\n * Converts or parses the input into DataInfoEntries format.\n\n * @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.\n * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.\n */\nexport function convertOrParsePColumnData(\n acc:\n | TreeNodeAccessor\n | DataInfoEntries<TreeNodeAccessor>\n | DataInfo<TreeNodeAccessor>\n | undefined,\n): DataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return acc;\n if (isDataInfo(acc)) return dataInfoToEntries(acc);\n if (acc instanceof TreeNodeAccessor) return parsePColumnData(acc);\n\n throw new Error(`Unexpected input type: ${typeof acc}`);\n}\n\nexport function isPColumnReady(\n c: PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>,\n): c is PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal> {\n const isValues = (d: PColumnDataUniversal): d is PColumnValues => Array.isArray(d);\n const isAccessor = (d: PColumnDataUniversal): d is TreeNodeAccessor =>\n d instanceof TreeNodeAccessor;\n\n let ready = true;\n const data = typeof c.data === \"function\" ? c.data() : c.data;\n if (data == null) {\n return false;\n } else if (isAccessor(data)) {\n ready &&= data.getIsReadyOrError();\n } else if (isDataInfo(data)) {\n visitDataInfo(data, (v) => (ready &&= v.getIsReadyOrError()));\n } else if (!isValues(data)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw Error(`unsupported column data type: ${data satisfies never}`);\n }\n return ready;\n}\n\nexport function allPColumnsReady(\n columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[],\n): columns is (PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>)[] {\n return columns.every(isPColumnReady);\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pcolumn_data.js","names":[],"sources":["../../../src/render/util/pcolumn_data.ts"],"sourcesContent":["import type {\n DataInfo,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnValues,\n} from \"@milaboratories/pl-model-common\";\nimport {\n dataInfoToEntries,\n isDataInfo,\n isDataInfoEntries,\n visitDataInfo,\n type BinaryChunk,\n type DataInfoEntries,\n type PColumnDataEntry,\n type PColumnKey,\n} from \"@milaboratories/pl-model-common\";\nimport { TreeNodeAccessor } from \"../accessor\";\nimport type { PColumnDataUniversal } from \"../internal\";\n\nconst PCD_PREFIX = \"PColumnData/\";\n\nexport const RT_RESOURCE_MAP = PCD_PREFIX + \"ResourceMap\";\nexport const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + \"Partitioned/ResourceMap\";\n\nexport const RT_JSON_PARTITIONED = PCD_PREFIX + \"JsonPartitioned\";\nexport const RT_BINARY_PARTITIONED = PCD_PREFIX + \"BinaryPartitioned\";\nexport const RT_PARQUET_PARTITIONED = PCD_PREFIX + \"ParquetPartitioned\";\n\nconst PCD_SUP_PREFIX = PCD_PREFIX + \"Partitioned/\";\nexport const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"JsonPartitioned\";\nexport const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"BinaryPartitioned\";\nexport const RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"ParquetPartitioned\";\n\nexport type PColumnResourceMapEntry<T> = {\n key: PColumnKey;\n value: T;\n};\n\nexport type PColumnResourceMapData<T> = {\n isComplete: boolean;\n data: PColumnResourceMapEntry<T>[];\n};\n\nfunction populateResourceMapData<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n data: PColumnResourceMapEntry<T | undefined>[],\n keyPrefix: PColumnKey = [],\n addEntriesWithNoData: boolean,\n): boolean {\n if (acc === undefined) return false;\n switch (acc.resourceType.name) {\n case RT_RESOURCE_MAP: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const converted = value === undefined ? undefined : resourceParser(value);\n if (converted === undefined) isComplete = false;\n if (converted !== undefined || addEntriesWithNoData) data.push({ key, value: converted });\n }\n return isComplete;\n }\n case RT_RESOURCE_MAP_PARTITIONED: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) isComplete = false;\n else {\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const populateResult = populateResourceMapData(\n value,\n resourceParser,\n data,\n key,\n addEntriesWithNoData,\n );\n isComplete = isComplete && populateResult;\n }\n }\n return isComplete;\n }\n default:\n throw new Error(`Unknown resource type: ${acc.resourceType.name}`);\n }\n}\n\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: false,\n): PColumnResourceMapData<NonNullable<T>>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: true,\n): PColumnResourceMapData<T | undefined>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: boolean = false,\n): PColumnResourceMapData<T | undefined> {\n const data: PColumnResourceMapEntry<T | undefined>[] = [];\n const isComplete = populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData);\n return { isComplete, data };\n}\n\nexport type PColumnKeyList = {\n /** array of keys */\n data: PColumnKey[];\n /** length of partition key */\n keyLength: number;\n};\n\nconst removeIndexSuffix = (keyStr: string): { baseKey: string; type: \"index\" | \"values\" } => {\n if (keyStr.endsWith(\".index\")) {\n return { baseKey: keyStr.substring(0, keyStr.length - 6), type: \"index\" };\n } else if (keyStr.endsWith(\".values\")) {\n return { baseKey: keyStr.substring(0, keyStr.length - 7), type: \"values\" };\n } else {\n throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);\n }\n};\n\n// @TODO define a class with various resource map operations\n/** Returns a list of all partition keys appeared in the p-column */\nexport function getPartitionKeysList(\n acc: TreeNodeAccessor | undefined,\n): PColumnKeyList | undefined {\n if (!acc) return undefined;\n\n const rt = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n const data: PColumnKey[] = [];\n\n let keyLength = 0;\n // @TODO validate meta shape\n switch (rt) {\n case RT_RESOURCE_MAP:\n keyLength = meta[\"keyLength\"];\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n keyLength = meta[\"partitionKeyLength\"] + meta[\"keyLength\"];\n break;\n\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n keyLength = meta[\"partitionKeyLength\"];\n break;\n\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n keyLength = meta[\"superPartitionKeyLength\"] + meta[\"partitionKeyLength\"];\n break;\n }\n\n switch (rt) {\n case RT_RESOURCE_MAP:\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n for (let keyStr of acc.listInputFields()) {\n if (rt === RT_BINARY_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n for (const supKeyStr of acc.listInputFields()) {\n const keyPrefix = [...JSON.parse(supKeyStr)] as PColumnKey;\n\n const value = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (value !== undefined) {\n for (let keyStr of value.listInputFields()) {\n if (rt === RT_BINARY_SUPER_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n }\n }\n break;\n }\n\n return { data, keyLength };\n}\n\nfunction getUniquePartitionKeysForDataEntries(\n list: DataInfoEntries<unknown>,\n): (string | number)[][] {\n if (\n list.type !== \"JsonPartitioned\" &&\n list.type !== \"BinaryPartitioned\" &&\n list.type !== \"ParquetPartitioned\"\n )\n throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);\n\n const { parts, partitionKeyLength } = list;\n\n const result: Set<string | number>[] = [];\n for (let i = 0; i < partitionKeyLength; ++i) {\n result.push(new Set());\n }\n\n for (const part of parts) {\n const key = part.key;\n if (key.length !== partitionKeyLength) {\n throw new Error(\n `Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(\n key,\n )}`,\n );\n }\n for (let i = 0; i < partitionKeyLength; ++i) {\n result[i].add(key[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/** Returns an array of unique partition keys for each column: the i-th element in the resulting 2d array contains all unique values of i-th partition axis. */\nexport function getUniquePartitionKeys(acc: DataInfoEntries<unknown>): (string | number)[][];\nexport function getUniquePartitionKeys(\n acc: DataInfoEntries<unknown> | TreeNodeAccessor | undefined,\n): (string | number)[][] | undefined;\nexport function getUniquePartitionKeys(\n acc: TreeNodeAccessor | DataInfoEntries<unknown> | undefined,\n): (string | number)[][] | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return getUniquePartitionKeysForDataEntries(acc);\n\n const list = getPartitionKeysList(acc);\n if (!list) return undefined;\n\n const { data, keyLength } = list;\n\n const result: Set<string | number>[] = [];\n\n for (let i = 0; i < keyLength; ++i) {\n result.push(new Set());\n }\n\n for (const l of data) {\n if (l.length !== keyLength) {\n throw new Error(\"key length does not match partition length\");\n }\n for (let i = 0; i < keyLength; ++i) {\n result[i].add(l[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/**\n * Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.\n * Returns undefined if any required data is missing.\n * Throws error on validation failures.\n *\n * @param acc - The TreeNodeAccessor containing PColumn data\n * @param keyPrefix - Optional key prefix for recursive calls\n * @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete\n */\nexport function parsePColumnData(\n acc: TreeNodeAccessor | undefined,\n keyPrefix: PColumnKey = [],\n): PartitionedDataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (!acc.getIsReadyOrError()) return undefined;\n\n const resourceType = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n\n // Prevent recursive super-partitioned resources\n if (\n keyPrefix.length > 0 &&\n (resourceType === RT_JSON_SUPER_PARTITIONED ||\n resourceType === RT_BINARY_SUPER_PARTITIONED ||\n resourceType === RT_PARQUET_SUPER_PARTITIONED)\n ) {\n throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);\n }\n\n switch (resourceType) {\n case RT_RESOURCE_MAP:\n case RT_RESOURCE_MAP_PARTITIONED:\n throw new Error(`Only data columns are supported, got: ${resourceType}`);\n\n case RT_JSON_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n const baseKeys = new Map<string, { index?: TreeNodeAccessor; values?: TreeNodeAccessor }>();\n\n // Group fields by base key (without .index/.values suffix)\n for (const keyStr of acc.listInputFields()) {\n const suffix = removeIndexSuffix(keyStr);\n\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n let entry = baseKeys.get(suffix.baseKey);\n if (!entry) {\n entry = {};\n baseKeys.set(suffix.baseKey, entry);\n }\n\n if (suffix.type === \"index\") {\n entry.index = value;\n } else {\n entry.values = value;\n }\n }\n\n // Process complete binary chunks only\n for (const [baseKeyStr, entry] of baseKeys.entries()) {\n if (!entry.index || !entry.values) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(baseKeyStr)];\n parts.push({\n key,\n value: {\n index: entry.index,\n values: entry.values,\n },\n });\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_JSON_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) {\n throw new Error(\n `Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"JsonPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) {\n throw new Error(\n `Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"BinaryPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_PARQUET_PARTITIONED) {\n throw new Error(\n `Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"ParquetPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n default:\n throw new Error(`Unknown resource type: ${resourceType}`);\n }\n}\n\n/**\n * Converts or parses the input into DataInfoEntries format.\n\n * @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.\n * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.\n */\nexport function convertOrParsePColumnData(\n acc:\n | TreeNodeAccessor\n | DataInfoEntries<TreeNodeAccessor>\n | DataInfo<TreeNodeAccessor>\n | undefined,\n): DataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return acc;\n if (isDataInfo(acc)) return dataInfoToEntries(acc);\n if (acc instanceof TreeNodeAccessor) return parsePColumnData(acc);\n\n throw new Error(`Unexpected input type: ${typeof acc}`);\n}\n\nexport function isPColumnReady(\n c: PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>,\n): c is PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal> {\n const isValues = (d: PColumnDataUniversal): d is PColumnValues => Array.isArray(d);\n const isAccessor = (d: PColumnDataUniversal): d is TreeNodeAccessor =>\n d instanceof TreeNodeAccessor;\n\n let ready = true;\n const data = typeof c.data === \"function\" ? c.data() : c.data;\n if (data == null) {\n return false;\n } else if (isAccessor(data)) {\n ready &&= data.getIsReadyOrError();\n } else if (isDataInfo(data)) {\n visitDataInfo(data, (v) => (ready &&= v.getIsReadyOrError()));\n } else if (!isValues(data)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw Error(`unsupported column data type: ${data satisfies never}`);\n }\n return ready;\n}\n\nexport function allPColumnsReady(\n columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[],\n): columns is (PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>)[] {\n return columns.every(isPColumnReady);\n}\n"],"mappings":"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"}
@@ -1,47 +1,42 @@
1
- 'use strict';
2
1
 
2
+ //#region src/render/util/pframe_upgraders.ts
3
3
  function patchInSetFilters(filters) {
4
- const inSetToOrEqual = (predicate) => {
5
- if (predicate.operator !== "InSet")
6
- return predicate;
7
- return {
8
- operator: "Or",
9
- operands: predicate.references.map((reference) => ({
10
- operator: "Equal",
11
- reference,
12
- })),
13
- };
14
- };
15
- const mapSingleValuePredicate = (filter, cb) => {
16
- const operator = filter.operator;
17
- switch (operator) {
18
- case "And":
19
- return {
20
- ...filter,
21
- operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
22
- };
23
- case "Or":
24
- return {
25
- ...filter,
26
- operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
27
- };
28
- case "Not":
29
- return {
30
- ...filter,
31
- operand: mapSingleValuePredicate(filter.operand, cb),
32
- };
33
- default:
34
- return cb(filter);
35
- }
36
- };
37
- const mapFilter = (filter, cb) => {
38
- return {
39
- ...filter,
40
- predicate: mapSingleValuePredicate(filter.predicate, cb),
41
- };
42
- };
43
- return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
4
+ const inSetToOrEqual = (predicate) => {
5
+ if (predicate.operator !== "InSet") return predicate;
6
+ return {
7
+ operator: "Or",
8
+ operands: predicate.references.map((reference) => ({
9
+ operator: "Equal",
10
+ reference
11
+ }))
12
+ };
13
+ };
14
+ const mapSingleValuePredicate = (filter, cb) => {
15
+ switch (filter.operator) {
16
+ case "And": return {
17
+ ...filter,
18
+ operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))
19
+ };
20
+ case "Or": return {
21
+ ...filter,
22
+ operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))
23
+ };
24
+ case "Not": return {
25
+ ...filter,
26
+ operand: mapSingleValuePredicate(filter.operand, cb)
27
+ };
28
+ default: return cb(filter);
29
+ }
30
+ };
31
+ const mapFilter = (filter, cb) => {
32
+ return {
33
+ ...filter,
34
+ predicate: mapSingleValuePredicate(filter.predicate, cb)
35
+ };
36
+ };
37
+ return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
44
38
  }
45
39
 
40
+ //#endregion
46
41
  exports.patchInSetFilters = patchInSetFilters;
47
- //# sourceMappingURL=pframe_upgraders.cjs.map
42
+ //# sourceMappingURL=pframe_upgraders.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pframe_upgraders.cjs","sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from \"@milaboratories/pl-model-common\";\n\nexport function patchInSetFilters(\n filters: PTableRecordSingleValueFilterV2[],\n): PTableRecordFilter[] {\n const inSetToOrEqual = (predicate: SingleValuePredicateV2): SingleValuePredicateV2 => {\n if (predicate.operator !== \"InSet\") return predicate;\n return {\n operator: \"Or\",\n operands: predicate.references.map(\n (reference) =>\n ({\n operator: \"Equal\",\n reference,\n }) satisfies SingleValueEqualPredicate,\n ),\n } satisfies SingleValueOrPredicateV2;\n };\n\n const mapSingleValuePredicate = (\n filter: SingleValuePredicateV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): SingleValuePredicateV2 => {\n const operator = filter.operator;\n switch (operator) {\n case \"And\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueAndPredicateV2;\n case \"Or\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueOrPredicateV2;\n case \"Not\":\n return {\n ...filter,\n operand: mapSingleValuePredicate(filter.operand, cb),\n } satisfies SingleValueNotPredicateV2;\n default:\n return cb(filter);\n }\n };\n\n const mapFilter = (\n filter: PTableRecordSingleValueFilterV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): PTableRecordSingleValueFilterV2 => {\n return {\n ...filter,\n predicate: mapSingleValuePredicate(filter.predicate, cb),\n } satisfies PTableRecordSingleValueFilterV2;\n };\n\n return filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n"],"names":[],"mappings":";;AAUM,SAAU,iBAAiB,CAC/B,OAA0C,EAAA;AAE1C,IAAA,MAAM,cAAc,GAAG,CAAC,SAAiC,KAA4B;AACnF,QAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO;AAAE,YAAA,OAAO,SAAS;QACpD,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAChC,CAAC,SAAS,MACP;AACC,gBAAA,QAAQ,EAAE,OAAO;gBACjB,SAAS;AACV,aAAA,CAAqC,CACzC;SACiC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAC9B,MAA8B,EAC9B,EAAiE,KACvC;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAChC,QAAQ,QAAQ;AACd,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC7C;AACvC,YAAA,KAAK,IAAI;gBACP,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC9C;AACtC,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;oBACT,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;iBACjB;AACvC,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC;;AAEvB,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAChB,MAAuC,EACvC,EAAiE,KAC9B;QACnC,OAAO;AACL,YAAA,GAAG,MAAM;YACT,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;SACf;AAC7C,IAAA,CAAC;AAED,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACnE;;;;"}
1
+ {"version":3,"file":"pframe_upgraders.cjs","names":[],"sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from \"@milaboratories/pl-model-common\";\n\nexport function patchInSetFilters(\n filters: PTableRecordSingleValueFilterV2[],\n): PTableRecordFilter[] {\n const inSetToOrEqual = (predicate: SingleValuePredicateV2): SingleValuePredicateV2 => {\n if (predicate.operator !== \"InSet\") return predicate;\n return {\n operator: \"Or\",\n operands: predicate.references.map(\n (reference) =>\n ({\n operator: \"Equal\",\n reference,\n }) satisfies SingleValueEqualPredicate,\n ),\n } satisfies SingleValueOrPredicateV2;\n };\n\n const mapSingleValuePredicate = (\n filter: SingleValuePredicateV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): SingleValuePredicateV2 => {\n const operator = filter.operator;\n switch (operator) {\n case \"And\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueAndPredicateV2;\n case \"Or\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueOrPredicateV2;\n case \"Not\":\n return {\n ...filter,\n operand: mapSingleValuePredicate(filter.operand, cb),\n } satisfies SingleValueNotPredicateV2;\n default:\n return cb(filter);\n }\n };\n\n const mapFilter = (\n filter: PTableRecordSingleValueFilterV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): PTableRecordSingleValueFilterV2 => {\n return {\n ...filter,\n predicate: mapSingleValuePredicate(filter.predicate, cb),\n } satisfies PTableRecordSingleValueFilterV2;\n };\n\n return filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n"],"mappings":";;AAUA,SAAgB,kBACd,SACsB;CACtB,MAAM,kBAAkB,cAA8D;AACpF,MAAI,UAAU,aAAa,QAAS,QAAO;AAC3C,SAAO;GACL,UAAU;GACV,UAAU,UAAU,WAAW,KAC5B,eACE;IACC,UAAU;IACV;IACD,EACJ;GACF;;CAGH,MAAM,2BACJ,QACA,OAC2B;AAE3B,UADiB,OAAO,UACxB;GACE,KAAK,MACH,QAAO;IACL,GAAG;IACH,UAAU,OAAO,SAAS,KAAK,YAAY,wBAAwB,SAAS,GAAG,CAAC;IACjF;GACH,KAAK,KACH,QAAO;IACL,GAAG;IACH,UAAU,OAAO,SAAS,KAAK,YAAY,wBAAwB,SAAS,GAAG,CAAC;IACjF;GACH,KAAK,MACH,QAAO;IACL,GAAG;IACH,SAAS,wBAAwB,OAAO,SAAS,GAAG;IACrD;GACH,QACE,QAAO,GAAG,OAAO;;;CAIvB,MAAM,aACJ,QACA,OACoC;AACpC,SAAO;GACL,GAAG;GACH,WAAW,wBAAwB,OAAO,WAAW,GAAG;GACzD;;AAGH,QAAO,QAAQ,KAAK,WAAW,UAAU,QAAQ,eAAe,CAAC"}
@@ -1,45 +1,41 @@
1
+ //#region src/render/util/pframe_upgraders.ts
1
2
  function patchInSetFilters(filters) {
2
- const inSetToOrEqual = (predicate) => {
3
- if (predicate.operator !== "InSet")
4
- return predicate;
5
- return {
6
- operator: "Or",
7
- operands: predicate.references.map((reference) => ({
8
- operator: "Equal",
9
- reference,
10
- })),
11
- };
12
- };
13
- const mapSingleValuePredicate = (filter, cb) => {
14
- const operator = filter.operator;
15
- switch (operator) {
16
- case "And":
17
- return {
18
- ...filter,
19
- operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
20
- };
21
- case "Or":
22
- return {
23
- ...filter,
24
- operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
25
- };
26
- case "Not":
27
- return {
28
- ...filter,
29
- operand: mapSingleValuePredicate(filter.operand, cb),
30
- };
31
- default:
32
- return cb(filter);
33
- }
34
- };
35
- const mapFilter = (filter, cb) => {
36
- return {
37
- ...filter,
38
- predicate: mapSingleValuePredicate(filter.predicate, cb),
39
- };
40
- };
41
- return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
3
+ const inSetToOrEqual = (predicate) => {
4
+ if (predicate.operator !== "InSet") return predicate;
5
+ return {
6
+ operator: "Or",
7
+ operands: predicate.references.map((reference) => ({
8
+ operator: "Equal",
9
+ reference
10
+ }))
11
+ };
12
+ };
13
+ const mapSingleValuePredicate = (filter, cb) => {
14
+ switch (filter.operator) {
15
+ case "And": return {
16
+ ...filter,
17
+ operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))
18
+ };
19
+ case "Or": return {
20
+ ...filter,
21
+ operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb))
22
+ };
23
+ case "Not": return {
24
+ ...filter,
25
+ operand: mapSingleValuePredicate(filter.operand, cb)
26
+ };
27
+ default: return cb(filter);
28
+ }
29
+ };
30
+ const mapFilter = (filter, cb) => {
31
+ return {
32
+ ...filter,
33
+ predicate: mapSingleValuePredicate(filter.predicate, cb)
34
+ };
35
+ };
36
+ return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
42
37
  }
43
38
 
39
+ //#endregion
44
40
  export { patchInSetFilters };
45
- //# sourceMappingURL=pframe_upgraders.js.map
41
+ //# sourceMappingURL=pframe_upgraders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pframe_upgraders.js","sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from \"@milaboratories/pl-model-common\";\n\nexport function patchInSetFilters(\n filters: PTableRecordSingleValueFilterV2[],\n): PTableRecordFilter[] {\n const inSetToOrEqual = (predicate: SingleValuePredicateV2): SingleValuePredicateV2 => {\n if (predicate.operator !== \"InSet\") return predicate;\n return {\n operator: \"Or\",\n operands: predicate.references.map(\n (reference) =>\n ({\n operator: \"Equal\",\n reference,\n }) satisfies SingleValueEqualPredicate,\n ),\n } satisfies SingleValueOrPredicateV2;\n };\n\n const mapSingleValuePredicate = (\n filter: SingleValuePredicateV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): SingleValuePredicateV2 => {\n const operator = filter.operator;\n switch (operator) {\n case \"And\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueAndPredicateV2;\n case \"Or\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueOrPredicateV2;\n case \"Not\":\n return {\n ...filter,\n operand: mapSingleValuePredicate(filter.operand, cb),\n } satisfies SingleValueNotPredicateV2;\n default:\n return cb(filter);\n }\n };\n\n const mapFilter = (\n filter: PTableRecordSingleValueFilterV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): PTableRecordSingleValueFilterV2 => {\n return {\n ...filter,\n predicate: mapSingleValuePredicate(filter.predicate, cb),\n } satisfies PTableRecordSingleValueFilterV2;\n };\n\n return filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n"],"names":[],"mappings":"AAUM,SAAU,iBAAiB,CAC/B,OAA0C,EAAA;AAE1C,IAAA,MAAM,cAAc,GAAG,CAAC,SAAiC,KAA4B;AACnF,QAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO;AAAE,YAAA,OAAO,SAAS;QACpD,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAChC,CAAC,SAAS,MACP;AACC,gBAAA,QAAQ,EAAE,OAAO;gBACjB,SAAS;AACV,aAAA,CAAqC,CACzC;SACiC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAC9B,MAA8B,EAC9B,EAAiE,KACvC;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAChC,QAAQ,QAAQ;AACd,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC7C;AACvC,YAAA,KAAK,IAAI;gBACP,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC9C;AACtC,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;oBACT,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;iBACjB;AACvC,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC;;AAEvB,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAChB,MAAuC,EACvC,EAAiE,KAC9B;QACnC,OAAO;AACL,YAAA,GAAG,MAAM;YACT,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;SACf;AAC7C,IAAA,CAAC;AAED,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACnE;;;;"}
1
+ {"version":3,"file":"pframe_upgraders.js","names":[],"sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from \"@milaboratories/pl-model-common\";\n\nexport function patchInSetFilters(\n filters: PTableRecordSingleValueFilterV2[],\n): PTableRecordFilter[] {\n const inSetToOrEqual = (predicate: SingleValuePredicateV2): SingleValuePredicateV2 => {\n if (predicate.operator !== \"InSet\") return predicate;\n return {\n operator: \"Or\",\n operands: predicate.references.map(\n (reference) =>\n ({\n operator: \"Equal\",\n reference,\n }) satisfies SingleValueEqualPredicate,\n ),\n } satisfies SingleValueOrPredicateV2;\n };\n\n const mapSingleValuePredicate = (\n filter: SingleValuePredicateV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): SingleValuePredicateV2 => {\n const operator = filter.operator;\n switch (operator) {\n case \"And\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueAndPredicateV2;\n case \"Or\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueOrPredicateV2;\n case \"Not\":\n return {\n ...filter,\n operand: mapSingleValuePredicate(filter.operand, cb),\n } satisfies SingleValueNotPredicateV2;\n default:\n return cb(filter);\n }\n };\n\n const mapFilter = (\n filter: PTableRecordSingleValueFilterV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): PTableRecordSingleValueFilterV2 => {\n return {\n ...filter,\n predicate: mapSingleValuePredicate(filter.predicate, cb),\n } satisfies PTableRecordSingleValueFilterV2;\n };\n\n return filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n"],"mappings":";AAUA,SAAgB,kBACd,SACsB;CACtB,MAAM,kBAAkB,cAA8D;AACpF,MAAI,UAAU,aAAa,QAAS,QAAO;AAC3C,SAAO;GACL,UAAU;GACV,UAAU,UAAU,WAAW,KAC5B,eACE;IACC,UAAU;IACV;IACD,EACJ;GACF;;CAGH,MAAM,2BACJ,QACA,OAC2B;AAE3B,UADiB,OAAO,UACxB;GACE,KAAK,MACH,QAAO;IACL,GAAG;IACH,UAAU,OAAO,SAAS,KAAK,YAAY,wBAAwB,SAAS,GAAG,CAAC;IACjF;GACH,KAAK,KACH,QAAO;IACL,GAAG;IACH,UAAU,OAAO,SAAS,KAAK,YAAY,wBAAwB,SAAS,GAAG,CAAC;IACjF;GACH,KAAK,MACH,QAAO;IACL,GAAG;IACH,SAAS,wBAAwB,OAAO,SAAS,GAAG;IACrD;GACH,QACE,QAAO,GAAG,OAAO;;;CAIvB,MAAM,aACJ,QACA,OACoC;AACpC,SAAO;GACL,GAAG;GACH,WAAW,wBAAwB,OAAO,WAAW,GAAG;GACzD;;AAGH,QAAO,QAAQ,KAAK,WAAW,UAAU,QAAQ,eAAe,CAAC"}
@@ -1,26 +1,30 @@
1
- import type { AAxisSelector, AnchoredPColumnSelector, AxisSelector, PColumnSelector } from "@milaboratories/pl-model-common";
1
+ import { AAxisSelector, AnchoredPColumnSelector, AxisSelector, PColumnSelector } from "@milaboratories/pl-model-common";
2
+
3
+ //#region src/render/util/split_selectors.d.ts
2
4
  /**
3
5
  * AAxisSelector with an optional split flag
4
6
  */
5
- export type AAxisSelectorWithSplit = AAxisSelector & {
6
- split?: boolean;
7
+ type AAxisSelectorWithSplit = AAxisSelector & {
8
+ split?: boolean;
7
9
  };
8
10
  /**
9
11
  * APColumnSelector with an optional split flag for each axis
10
12
  */
11
- export type APColumnSelectorWithSplit = AnchoredPColumnSelector & {
12
- axes?: AAxisSelectorWithSplit[];
13
+ type APColumnSelectorWithSplit = AnchoredPColumnSelector & {
14
+ axes?: AAxisSelectorWithSplit[];
13
15
  };
14
16
  /**
15
17
  * AxisSelector with an optional split flag
16
18
  */
17
- export type AxisSelectorWithSplit = AxisSelector & {
18
- split?: boolean;
19
+ type AxisSelectorWithSplit = AxisSelector & {
20
+ split?: boolean;
19
21
  };
20
22
  /**
21
23
  * PColumnSelector with an optional split flag for each axis
22
24
  */
23
- export type PColumnSelectorWithSplit = PColumnSelector & {
24
- axes?: AxisSelectorWithSplit[];
25
+ type PColumnSelectorWithSplit = PColumnSelector & {
26
+ axes?: AxisSelectorWithSplit[];
25
27
  };
28
+ //#endregion
29
+ export { APColumnSelectorWithSplit, PColumnSelectorWithSplit };
26
30
  //# sourceMappingURL=split_selectors.d.ts.map
package/dist/version.cjs CHANGED
@@ -1,12 +1,10 @@
1
- 'use strict';
1
+ const require_package = require('./package.cjs');
2
2
 
3
- var _package = require('./package.json.cjs');
4
-
5
- const PlatformaSDKVersion = _package.version;
6
- const CurrentSdkInfo = {
7
- sdkVersion: PlatformaSDKVersion,
8
- };
3
+ //#region src/version.ts
4
+ const PlatformaSDKVersion = require_package.version;
5
+ const CurrentSdkInfo = { sdkVersion: PlatformaSDKVersion };
9
6
 
7
+ //#endregion
10
8
  exports.CurrentSdkInfo = CurrentSdkInfo;
11
9
  exports.PlatformaSDKVersion = PlatformaSDKVersion;
12
- //# sourceMappingURL=version.cjs.map
10
+ //# sourceMappingURL=version.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.cjs","sources":["../src/version.ts"],"sourcesContent":["import { version } from \"../package.json\";\nexport const PlatformaSDKVersion = version;\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion,\n};\n"],"names":["version"],"mappings":";;;;AACO,MAAM,mBAAmB,GAAGA;AAM5B,MAAM,cAAc,GAAY;AACrC,IAAA,UAAU,EAAE,mBAAmB;;;;;;"}
1
+ {"version":3,"file":"version.cjs","names":["version"],"sources":["../src/version.ts"],"sourcesContent":["import { version } from \"../package.json\";\nexport const PlatformaSDKVersion = version;\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion,\n};\n"],"mappings":";;;AACA,MAAa,sBAAsBA;AAMnC,MAAa,iBAA0B,EACrC,YAAY,qBACb"}
package/dist/version.d.ts CHANGED
@@ -1,6 +1,9 @@
1
- export declare const PlatformaSDKVersion: string;
2
- export type SdkInfo = {
3
- readonly sdkVersion: string;
1
+ //#region src/version.d.ts
2
+ declare const PlatformaSDKVersion: string;
3
+ type SdkInfo = {
4
+ readonly sdkVersion: string;
4
5
  };
5
- export declare const CurrentSdkInfo: SdkInfo;
6
+ declare const CurrentSdkInfo: SdkInfo;
7
+ //#endregion
8
+ export { CurrentSdkInfo, PlatformaSDKVersion, SdkInfo };
6
9
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,9 +1,9 @@
1
- import { version } from './package.json.js';
1
+ import { version } from "./package.js";
2
2
 
3
+ //#region src/version.ts
3
4
  const PlatformaSDKVersion = version;
4
- const CurrentSdkInfo = {
5
- sdkVersion: PlatformaSDKVersion,
6
- };
5
+ const CurrentSdkInfo = { sdkVersion: PlatformaSDKVersion };
7
6
 
7
+ //#endregion
8
8
  export { CurrentSdkInfo, PlatformaSDKVersion };
9
- //# sourceMappingURL=version.js.map
9
+ //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["import { version } from \"../package.json\";\nexport const PlatformaSDKVersion = version;\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion,\n};\n"],"names":[],"mappings":";;AACO,MAAM,mBAAmB,GAAG;AAM5B,MAAM,cAAc,GAAY;AACrC,IAAA,UAAU,EAAE,mBAAmB;;;;;"}
1
+ {"version":3,"file":"version.js","names":[],"sources":["../src/version.ts"],"sourcesContent":["import { version } from \"../package.json\";\nexport const PlatformaSDKVersion = version;\n\nexport type SdkInfo = {\n readonly sdkVersion: string;\n};\n\nexport const CurrentSdkInfo: SdkInfo = {\n sdkVersion: PlatformaSDKVersion,\n};\n"],"mappings":";;;AACA,MAAa,sBAAsB;AAMnC,MAAa,iBAA0B,EACrC,YAAY,qBACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platforma-sdk/model",
3
- "version": "1.58.5",
3
+ "version": "1.58.11",
4
4
  "description": "Platforma.bio SDK / Block Model",
5
5
  "files": [
6
6
  "./dist/**/*",
@@ -16,6 +16,12 @@
16
16
  "sources": "./src/index.ts",
17
17
  "import": "./dist/index.js",
18
18
  "require": "./dist/index.cjs"
19
+ },
20
+ "./render/internal": {
21
+ "types": "./dist/render/internal.d.ts",
22
+ "sources": "./src/render/internal.ts",
23
+ "import": "./dist/render/internal.js",
24
+ "require": "./dist/render/internal.cjs"
19
25
  }
20
26
  },
21
27
  "dependencies": {
@@ -24,19 +30,19 @@
24
30
  "fast-json-patch": "^3.1.1",
25
31
  "utility-types": "^3.11.0",
26
32
  "zod": "~3.23.8",
27
- "@milaboratories/helpers": "1.13.5",
28
- "@milaboratories/pl-error-like": "1.12.8",
29
- "@milaboratories/pl-model-common": "1.25.1",
30
- "@milaboratories/ptabler-expression-js": "1.1.23"
33
+ "@milaboratories/helpers": "1.13.6",
34
+ "@milaboratories/pl-error-like": "1.12.9",
35
+ "@milaboratories/ptabler-expression-js": "1.1.24",
36
+ "@milaboratories/pl-model-common": "1.25.2"
31
37
  },
32
38
  "devDependencies": {
33
39
  "@vitest/coverage-istanbul": "^4.0.18",
34
40
  "fast-json-patch": "^3.1.1",
35
- "typescript": "~5.6.3",
41
+ "typescript": "~5.9.3",
36
42
  "vitest": "^4.0.18",
37
- "@milaboratories/ts-builder": "1.2.11",
38
- "@milaboratories/build-configs": "1.5.0",
39
- "@milaboratories/ts-configs": "1.2.1"
43
+ "@milaboratories/build-configs": "1.5.1",
44
+ "@milaboratories/ts-builder": "1.2.13",
45
+ "@milaboratories/ts-configs": "1.2.2"
40
46
  },
41
47
  "scripts": {
42
48
  "build": "ts-builder build --target node",