@platforma-sdk/model 1.63.1 → 1.63.12

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 (334) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +12 -22
  2. package/dist/_virtual/_rolldown/runtime.js +6 -11
  3. package/dist/annotations/converter.cjs +4 -5
  4. package/dist/annotations/converter.cjs.map +1 -1
  5. package/dist/annotations/converter.d.ts.map +1 -0
  6. package/dist/annotations/converter.js +1 -2
  7. package/dist/annotations/converter.js.map +1 -1
  8. package/dist/annotations/index.cjs +1 -1
  9. package/dist/annotations/index.js +1 -1
  10. package/dist/annotations/types.d.ts +0 -1
  11. package/dist/annotations/types.d.ts.map +1 -0
  12. package/dist/bconfig/index.cjs +2 -2
  13. package/dist/bconfig/index.js +2 -2
  14. package/dist/bconfig/lambdas.d.ts +0 -1
  15. package/dist/bconfig/lambdas.d.ts.map +1 -0
  16. package/dist/bconfig/normalization.cjs +4 -5
  17. package/dist/bconfig/normalization.cjs.map +1 -1
  18. package/dist/bconfig/normalization.d.ts.map +1 -0
  19. package/dist/bconfig/normalization.js +1 -2
  20. package/dist/bconfig/normalization.js.map +1 -1
  21. package/dist/bconfig/types.cjs +1 -2
  22. package/dist/bconfig/types.cjs.map +1 -1
  23. package/dist/bconfig/types.d.ts +0 -1
  24. package/dist/bconfig/types.d.ts.map +1 -0
  25. package/dist/bconfig/types.js +1 -1
  26. package/dist/bconfig/util.d.ts.map +1 -0
  27. package/dist/bconfig/v3.d.ts.map +1 -0
  28. package/dist/block_api_v1.d.ts.map +1 -0
  29. package/dist/block_api_v2.d.ts.map +1 -0
  30. package/dist/block_api_v3.d.ts.map +1 -0
  31. package/dist/block_migrations.cjs +2 -3
  32. package/dist/block_migrations.cjs.map +1 -1
  33. package/dist/block_migrations.d.ts.map +1 -0
  34. package/dist/block_migrations.js +1 -2
  35. package/dist/block_migrations.js.map +1 -1
  36. package/dist/block_model.cjs +16 -17
  37. package/dist/block_model.cjs.map +1 -1
  38. package/dist/block_model.d.ts +0 -2
  39. package/dist/block_model.d.ts.map +1 -0
  40. package/dist/block_model.js +4 -5
  41. package/dist/block_model.js.map +1 -1
  42. package/dist/block_model_legacy.cjs +10 -11
  43. package/dist/block_model_legacy.cjs.map +1 -1
  44. package/dist/block_model_legacy.d.ts +0 -3
  45. package/dist/block_model_legacy.d.ts.map +1 -0
  46. package/dist/block_model_legacy.js +1 -2
  47. package/dist/block_model_legacy.js.map +1 -1
  48. package/dist/block_state_patch.d.ts.map +1 -0
  49. package/dist/block_state_util.cjs +1 -2
  50. package/dist/block_state_util.cjs.map +1 -1
  51. package/dist/block_state_util.d.ts.map +1 -0
  52. package/dist/block_state_util.js +1 -1
  53. package/dist/block_state_util.js.map +1 -1
  54. package/dist/block_storage.cjs +5 -12
  55. package/dist/block_storage.cjs.map +1 -1
  56. package/dist/block_storage.d.ts.map +1 -0
  57. package/dist/block_storage.js +5 -11
  58. package/dist/block_storage.js.map +1 -1
  59. package/dist/block_storage_callbacks.cjs +4 -5
  60. package/dist/block_storage_callbacks.cjs.map +1 -1
  61. package/dist/block_storage_callbacks.js +3 -4
  62. package/dist/block_storage_callbacks.js.map +1 -1
  63. package/dist/block_storage_facade.cjs +2 -3
  64. package/dist/block_storage_facade.cjs.map +1 -1
  65. package/dist/block_storage_facade.d.ts +0 -1
  66. package/dist/block_storage_facade.d.ts.map +1 -0
  67. package/dist/block_storage_facade.js +1 -2
  68. package/dist/block_storage_facade.js.map +1 -1
  69. package/dist/columns/column_collection_builder.cjs +6 -7
  70. package/dist/columns/column_collection_builder.cjs.map +1 -1
  71. package/dist/columns/column_collection_builder.d.ts.map +1 -0
  72. package/dist/columns/column_collection_builder.js +1 -2
  73. package/dist/columns/column_collection_builder.js.map +1 -1
  74. package/dist/columns/column_selector.cjs +1 -2
  75. package/dist/columns/column_selector.cjs.map +1 -1
  76. package/dist/columns/column_selector.d.ts.map +1 -0
  77. package/dist/columns/column_selector.js +1 -1
  78. package/dist/columns/column_selector.js.map +1 -1
  79. package/dist/columns/column_snapshot.cjs +1 -2
  80. package/dist/columns/column_snapshot.cjs.map +1 -1
  81. package/dist/columns/column_snapshot.d.ts.map +1 -0
  82. package/dist/columns/column_snapshot.js +1 -1
  83. package/dist/columns/column_snapshot_provider.cjs +1 -2
  84. package/dist/columns/column_snapshot_provider.cjs.map +1 -1
  85. package/dist/columns/column_snapshot_provider.d.ts.map +1 -0
  86. package/dist/columns/column_snapshot_provider.js +1 -1
  87. package/dist/columns/column_snapshot_provider.js.map +1 -1
  88. package/dist/columns/ctx_column_sources.cjs +3 -4
  89. package/dist/columns/ctx_column_sources.cjs.map +1 -1
  90. package/dist/columns/ctx_column_sources.d.ts +0 -1
  91. package/dist/columns/ctx_column_sources.d.ts.map +1 -0
  92. package/dist/columns/ctx_column_sources.js +1 -2
  93. package/dist/columns/ctx_column_sources.js.map +1 -1
  94. package/dist/columns/index.cjs +5 -5
  95. package/dist/columns/index.js +5 -5
  96. package/dist/components/PFrameForGraphs.cjs +4 -5
  97. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  98. package/dist/components/PFrameForGraphs.d.ts +0 -1
  99. package/dist/components/PFrameForGraphs.d.ts.map +1 -0
  100. package/dist/components/PFrameForGraphs.js +2 -3
  101. package/dist/components/PFrameForGraphs.js.map +1 -1
  102. package/dist/components/PlAnnotations/filter.d.ts.map +1 -0
  103. package/dist/components/PlAnnotations/filters_ui.cjs +1 -2
  104. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  105. package/dist/components/PlAnnotations/filters_ui.d.ts +0 -2
  106. package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -0
  107. package/dist/components/PlAnnotations/filters_ui.js +1 -1
  108. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  109. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +9 -10
  110. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
  111. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts +0 -1
  112. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -0
  113. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js +1 -2
  114. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
  115. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +14 -15
  116. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
  117. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts +0 -2
  118. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -0
  119. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +1 -2
  120. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
  121. package/dist/components/PlDataTable/createPlDataTable/index.cjs +3 -4
  122. package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
  123. package/dist/components/PlDataTable/createPlDataTable/index.d.ts +0 -1
  124. package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -0
  125. package/dist/components/PlDataTable/createPlDataTable/index.js +1 -2
  126. package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
  127. package/dist/components/PlDataTable/createPlDataTableSheet.cjs +1 -2
  128. package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
  129. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts +0 -1
  130. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -0
  131. package/dist/components/PlDataTable/createPlDataTableSheet.js +1 -1
  132. package/dist/components/PlDataTable/index.cjs +5 -5
  133. package/dist/components/PlDataTable/index.js +5 -5
  134. package/dist/components/PlDataTable/labels.cjs +4 -5
  135. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  136. package/dist/components/PlDataTable/labels.js +1 -2
  137. package/dist/components/PlDataTable/labels.js.map +1 -1
  138. package/dist/components/PlDataTable/state-migration.cjs +4 -5
  139. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  140. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -0
  141. package/dist/components/PlDataTable/state-migration.js +1 -2
  142. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  143. package/dist/components/PlDataTable/typesV4.d.ts.map +1 -0
  144. package/dist/components/PlDataTable/typesV5.d.ts +0 -1
  145. package/dist/components/PlDataTable/typesV5.d.ts.map +1 -0
  146. package/dist/components/PlMultiSequenceAlignment.cjs +2 -3
  147. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  148. package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -0
  149. package/dist/components/PlMultiSequenceAlignment.js +1 -2
  150. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  151. package/dist/components/PlSelectionModel.cjs +1 -2
  152. package/dist/components/PlSelectionModel.cjs.map +1 -1
  153. package/dist/components/PlSelectionModel.d.ts.map +1 -0
  154. package/dist/components/PlSelectionModel.js +1 -1
  155. package/dist/components/index.cjs +11 -11
  156. package/dist/components/index.d.ts +0 -2
  157. package/dist/components/index.js +10 -10
  158. package/dist/config/actions.cjs +1 -2
  159. package/dist/config/actions.cjs.map +1 -1
  160. package/dist/config/actions.d.ts.map +1 -0
  161. package/dist/config/actions.js +1 -1
  162. package/dist/config/actions_kinds.d.ts.map +1 -0
  163. package/dist/config/index.cjs +1 -1
  164. package/dist/config/index.js +1 -1
  165. package/dist/config/model.d.ts.map +1 -0
  166. package/dist/config/model_meta.d.ts.map +1 -0
  167. package/dist/config/type_engine.d.ts.map +1 -0
  168. package/dist/config/type_util.d.ts.map +1 -0
  169. package/dist/env_value.cjs +1 -2
  170. package/dist/env_value.cjs.map +1 -1
  171. package/dist/env_value.d.ts.map +1 -0
  172. package/dist/env_value.js +1 -1
  173. package/dist/env_value.js.map +1 -1
  174. package/dist/filters/converters/filterToQuery.cjs +3 -4
  175. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  176. package/dist/filters/converters/filterToQuery.d.ts.map +1 -0
  177. package/dist/filters/converters/filterToQuery.js +1 -2
  178. package/dist/filters/converters/filterToQuery.js.map +1 -1
  179. package/dist/filters/converters/filterUiToExpressionImpl.cjs +3 -4
  180. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  181. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -0
  182. package/dist/filters/converters/filterUiToExpressionImpl.js +1 -2
  183. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  184. package/dist/filters/converters/index.cjs +2 -2
  185. package/dist/filters/converters/index.js +2 -2
  186. package/dist/filters/distill.cjs +3 -4
  187. package/dist/filters/distill.cjs.map +1 -1
  188. package/dist/filters/distill.d.ts.map +1 -0
  189. package/dist/filters/distill.js +1 -2
  190. package/dist/filters/distill.js.map +1 -1
  191. package/dist/filters/index.cjs +4 -4
  192. package/dist/filters/index.d.ts +0 -1
  193. package/dist/filters/index.js +3 -3
  194. package/dist/filters/traverse.cjs +1 -2
  195. package/dist/filters/traverse.cjs.map +1 -1
  196. package/dist/filters/traverse.js +1 -1
  197. package/dist/filters/traverse.js.map +1 -1
  198. package/dist/filters/types.d.ts.map +1 -0
  199. package/dist/index.cjs +78 -76
  200. package/dist/index.d.ts +0 -9
  201. package/dist/index.js +3 -6
  202. package/dist/internal.cjs +1 -2
  203. package/dist/internal.cjs.map +1 -1
  204. package/dist/internal.js +1 -1
  205. package/dist/internal.js.map +1 -1
  206. package/dist/labels/derive_distinct_labels.cjs +2 -3
  207. package/dist/labels/derive_distinct_labels.cjs.map +1 -1
  208. package/dist/labels/derive_distinct_labels.d.ts.map +1 -0
  209. package/dist/labels/derive_distinct_labels.js +1 -2
  210. package/dist/labels/derive_distinct_labels.js.map +1 -1
  211. package/dist/labels/index.cjs +2 -2
  212. package/dist/labels/index.js +2 -2
  213. package/dist/labels/write_labels_to_specs.cjs +2 -3
  214. package/dist/labels/write_labels_to_specs.cjs.map +1 -1
  215. package/dist/labels/write_labels_to_specs.d.ts +0 -2
  216. package/dist/labels/write_labels_to_specs.d.ts.map +1 -0
  217. package/dist/labels/write_labels_to_specs.js +1 -2
  218. package/dist/labels/write_labels_to_specs.js.map +1 -1
  219. package/dist/package.cjs +7 -8
  220. package/dist/package.js +2 -2
  221. package/dist/pframe.cjs +2 -3
  222. package/dist/pframe.cjs.map +1 -1
  223. package/dist/pframe.d.ts.map +1 -0
  224. package/dist/pframe.js +1 -2
  225. package/dist/pframe.js.map +1 -1
  226. package/dist/pframe_utils/axes.cjs +2 -3
  227. package/dist/pframe_utils/axes.cjs.map +1 -1
  228. package/dist/pframe_utils/axes.d.ts +0 -1
  229. package/dist/pframe_utils/axes.d.ts.map +1 -0
  230. package/dist/pframe_utils/axes.js +1 -2
  231. package/dist/pframe_utils/axes.js.map +1 -1
  232. package/dist/pframe_utils/columns.cjs +5 -6
  233. package/dist/pframe_utils/columns.cjs.map +1 -1
  234. package/dist/pframe_utils/columns.d.ts +0 -1
  235. package/dist/pframe_utils/columns.d.ts.map +1 -0
  236. package/dist/pframe_utils/columns.js +1 -2
  237. package/dist/pframe_utils/columns.js.map +1 -1
  238. package/dist/pframe_utils/index.cjs +3 -4
  239. package/dist/pframe_utils/index.cjs.map +1 -1
  240. package/dist/pframe_utils/index.d.ts.map +1 -0
  241. package/dist/pframe_utils/index.js +2 -3
  242. package/dist/pframe_utils/index.js.map +1 -1
  243. package/dist/platforma.d.ts.map +1 -0
  244. package/dist/plugin_handle.cjs +1 -2
  245. package/dist/plugin_handle.cjs.map +1 -1
  246. package/dist/plugin_handle.d.ts.map +1 -0
  247. package/dist/plugin_handle.js +1 -1
  248. package/dist/plugin_model.cjs +3 -4
  249. package/dist/plugin_model.cjs.map +1 -1
  250. package/dist/plugin_model.d.ts +0 -1
  251. package/dist/plugin_model.d.ts.map +1 -0
  252. package/dist/plugin_model.js +1 -2
  253. package/dist/plugin_model.js.map +1 -1
  254. package/dist/raw_globals.cjs +3 -4
  255. package/dist/raw_globals.cjs.map +1 -1
  256. package/dist/raw_globals.d.ts.map +1 -0
  257. package/dist/raw_globals.js +1 -2
  258. package/dist/raw_globals.js.map +1 -1
  259. package/dist/ref_util.cjs +3 -4
  260. package/dist/ref_util.cjs.map +1 -1
  261. package/dist/ref_util.d.ts +0 -2
  262. package/dist/ref_util.d.ts.map +1 -0
  263. package/dist/ref_util.js +1 -2
  264. package/dist/ref_util.js.map +1 -1
  265. package/dist/render/accessor.cjs +4 -5
  266. package/dist/render/accessor.cjs.map +1 -1
  267. package/dist/render/accessor.d.ts.map +1 -0
  268. package/dist/render/accessor.js +1 -2
  269. package/dist/render/accessor.js.map +1 -1
  270. package/dist/render/api.cjs +10 -11
  271. package/dist/render/api.cjs.map +1 -1
  272. package/dist/render/api.d.ts +0 -1
  273. package/dist/render/api.d.ts.map +1 -0
  274. package/dist/render/api.js +1 -2
  275. package/dist/render/api.js.map +1 -1
  276. package/dist/render/future.cjs +2 -3
  277. package/dist/render/future.cjs.map +1 -1
  278. package/dist/render/future.d.ts.map +1 -0
  279. package/dist/render/future.js +1 -2
  280. package/dist/render/future.js.map +1 -1
  281. package/dist/render/index.cjs +8 -8
  282. package/dist/render/index.d.ts +1 -2
  283. package/dist/render/index.js +7 -7
  284. package/dist/render/internal.cjs +7 -9
  285. package/dist/render/internal.cjs.map +1 -1
  286. package/dist/render/internal.d.ts.map +1 -0
  287. package/dist/render/internal.js +1 -2
  288. package/dist/render/internal.js.map +1 -1
  289. package/dist/render/traversal_ops.d.ts.map +1 -0
  290. package/dist/render/util/axis_filtering.cjs +1 -2
  291. package/dist/render/util/axis_filtering.cjs.map +1 -1
  292. package/dist/render/util/axis_filtering.d.ts.map +1 -0
  293. package/dist/render/util/axis_filtering.js +1 -1
  294. package/dist/render/util/column_collection.cjs +5 -6
  295. package/dist/render/util/column_collection.cjs.map +1 -1
  296. package/dist/render/util/column_collection.d.ts +0 -1
  297. package/dist/render/util/column_collection.d.ts.map +1 -0
  298. package/dist/render/util/column_collection.js +1 -2
  299. package/dist/render/util/column_collection.js.map +1 -1
  300. package/dist/render/util/index.cjs +4 -4
  301. package/dist/render/util/index.js +4 -4
  302. package/dist/render/util/label.cjs +2 -3
  303. package/dist/render/util/label.cjs.map +1 -1
  304. package/dist/render/util/label.d.ts.map +1 -0
  305. package/dist/render/util/label.js +1 -2
  306. package/dist/render/util/label.js.map +1 -1
  307. package/dist/render/util/pcolumn_data.cjs +9 -10
  308. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  309. package/dist/render/util/pcolumn_data.d.ts.map +1 -0
  310. package/dist/render/util/pcolumn_data.js +7 -8
  311. package/dist/render/util/pcolumn_data.js.map +1 -1
  312. package/dist/render/util/pframe_upgraders.cjs +1 -2
  313. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  314. package/dist/render/util/pframe_upgraders.js +1 -1
  315. package/dist/render/util/split_selectors.d.ts.map +1 -0
  316. package/dist/services/block_services.cjs +2 -3
  317. package/dist/services/block_services.cjs.map +1 -1
  318. package/dist/services/block_services.d.ts +2 -2
  319. package/dist/services/block_services.d.ts.map +1 -0
  320. package/dist/services/block_services.js +1 -2
  321. package/dist/services/block_services.js.map +1 -1
  322. package/dist/services/index.cjs +2 -2
  323. package/dist/services/index.js +2 -2
  324. package/dist/services/service_bridge.cjs +1 -2
  325. package/dist/services/service_bridge.cjs.map +1 -1
  326. package/dist/services/service_bridge.d.ts.map +1 -0
  327. package/dist/services/service_bridge.js +1 -1
  328. package/dist/services/service_resolve.d.ts.map +1 -0
  329. package/dist/version.cjs +2 -4
  330. package/dist/version.cjs.map +1 -1
  331. package/dist/version.d.ts.map +1 -0
  332. package/dist/version.js +1 -2
  333. package/dist/version.js.map +1 -1
  334. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"label.js","names":[],"sources":["../../../src/render/util/label.ts"],"sourcesContent":["export {\n type Trace,\n type DeriveLabelsOptions as LabelDerivationOps,\n type Entry as SpecExtractorResult,\n} from \"../../labels/derive_distinct_labels\";\n\n// Backward-compatible wrapper: old API accepted a getSpec callback\nimport {\n deriveDistinctLabels,\n type DeriveLabelsOptions,\n type Entry,\n} from \"../../labels/derive_distinct_labels\";\n\ntype WithLabel<T> = { value: T; label: string };\n\n/** @deprecated Use deriveDistinctLabels */\nexport function deriveLabels<T>(\n values: T[],\n getSpec: (obj: T) => Entry,\n options: DeriveLabelsOptions = {},\n): WithLabel<T>[] {\n const specs = values.map(getSpec);\n const labeled = deriveDistinctLabels(specs, options);\n return labeled.map((l, i) => ({ value: values[i], label: l.label }));\n}\n"],"mappings":";;;;AAgBA,SAAgB,aACd,QACA,SACA,UAA+B,EAAE,EACjB;AAGhB,QADgB,qBADF,OAAO,IAAI,QAAQ,EACW,QAAQ,CACrC,KAAK,GAAG,OAAO;EAAE,OAAO,OAAO;EAAI,OAAO,EAAE;EAAO,EAAE"}
1
+ {"version":3,"file":"label.js","names":[],"sources":["../../../src/render/util/label.ts"],"sourcesContent":["export {\n type Trace,\n type DeriveLabelsOptions as LabelDerivationOps,\n type Entry as SpecExtractorResult,\n} from \"../../labels/derive_distinct_labels\";\n\n// Backward-compatible wrapper: old API accepted a getSpec callback\nimport {\n deriveDistinctLabels,\n type DeriveLabelsOptions,\n type Entry,\n} from \"../../labels/derive_distinct_labels\";\n\ntype WithLabel<T> = { value: T; label: string };\n\n/** @deprecated Use deriveDistinctLabels */\nexport function deriveLabels<T>(\n values: T[],\n getSpec: (obj: T) => Entry,\n options: DeriveLabelsOptions = {},\n): WithLabel<T>[] {\n const specs = values.map(getSpec);\n const labeled = deriveDistinctLabels(specs, options);\n return labeled.map((l, i) => ({ value: values[i], label: l.label }));\n}\n"],"mappings":";;;AAgBA,SAAgB,aACd,QACA,SACA,UAA+B,EAAE,EACjB;AAGhB,QADgB,qBADF,OAAO,IAAI,QAAQ,EACW,QAAQ,CACrC,KAAK,GAAG,OAAO;EAAE,OAAO,OAAO;EAAI,OAAO,EAAE;EAAO,EAAE"}
@@ -1,7 +1,6 @@
1
- const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
2
- const require_accessor = require('../accessor.cjs');
1
+ require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_accessor = require("../accessor.cjs");
3
3
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
4
-
5
4
  //#region src/render/util/pcolumn_data.ts
6
5
  const PCD_PREFIX = "PColumnData/";
7
6
  const RT_RESOURCE_MAP = PCD_PREFIX + "ResourceMap";
@@ -100,7 +99,7 @@ function getPartitionKeysList(acc) {
100
99
  case RT_BINARY_PARTITIONED:
101
100
  case RT_PARQUET_PARTITIONED:
102
101
  for (let keyStr of acc.listInputFields()) {
103
- if (rt === RT_BINARY_PARTITIONED) keyStr = removeIndexSuffix(keyStr).baseKey;
102
+ if (rt === "PColumnData/BinaryPartitioned") keyStr = removeIndexSuffix(keyStr).baseKey;
104
103
  const key = [...JSON.parse(keyStr)];
105
104
  data.push(key);
106
105
  }
@@ -116,7 +115,7 @@ function getPartitionKeysList(acc) {
116
115
  assertFieldType: "Input"
117
116
  });
118
117
  if (value !== void 0) for (let keyStr of value.listInputFields()) {
119
- if (rt === RT_BINARY_SUPER_PARTITIONED) keyStr = removeIndexSuffix(keyStr).baseKey;
118
+ if (rt === "PColumnData/Partitioned/BinaryPartitioned") keyStr = removeIndexSuffix(keyStr).baseKey;
120
119
  const key = [...keyPrefix, ...JSON.parse(keyStr)];
121
120
  data.push(key);
122
121
  }
@@ -168,7 +167,7 @@ function parsePColumnData(acc, keyPrefix = []) {
168
167
  if (!acc.getIsReadyOrError()) return void 0;
169
168
  const resourceType = acc.resourceType.name;
170
169
  const meta = acc.getDataAsJson();
171
- if (keyPrefix.length > 0 && (resourceType === RT_JSON_SUPER_PARTITIONED || resourceType === RT_BINARY_SUPER_PARTITIONED || resourceType === RT_PARQUET_SUPER_PARTITIONED)) throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);
170
+ if (keyPrefix.length > 0 && (resourceType === "PColumnData/Partitioned/JsonPartitioned" || resourceType === "PColumnData/Partitioned/BinaryPartitioned" || resourceType === "PColumnData/Partitioned/ParquetPartitioned")) throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);
172
171
  switch (resourceType) {
173
172
  case RT_RESOURCE_MAP:
174
173
  case RT_RESOURCE_MAP_PARTITIONED: throw new Error(`Only data columns are supported, got: ${resourceType}`);
@@ -260,7 +259,7 @@ function parsePColumnData(acc, keyPrefix = []) {
260
259
  assertFieldType: "Input"
261
260
  });
262
261
  if (superPartition === void 0) return void 0;
263
- if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
262
+ if (superPartition.resourceType.name !== "PColumnData/JsonPartitioned") throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
264
263
  const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
265
264
  if (innerResult === void 0) return void 0;
266
265
  if (innerResult.type !== "JsonPartitioned") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
@@ -282,7 +281,7 @@ function parsePColumnData(acc, keyPrefix = []) {
282
281
  assertFieldType: "Input"
283
282
  });
284
283
  if (superPartition === void 0) return void 0;
285
- if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
284
+ if (superPartition.resourceType.name !== "PColumnData/BinaryPartitioned") throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
286
285
  const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
287
286
  if (innerResult === void 0) return void 0;
288
287
  if (innerResult.type !== "BinaryPartitioned") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
@@ -304,7 +303,7 @@ function parsePColumnData(acc, keyPrefix = []) {
304
303
  assertFieldType: "Input"
305
304
  });
306
305
  if (superPartition === void 0) return void 0;
307
- if (superPartition.resourceType.name !== RT_PARQUET_PARTITIONED) throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
306
+ if (superPartition.resourceType.name !== "PColumnData/ParquetPartitioned") throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
308
307
  const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
309
308
  if (innerResult === void 0) return void 0;
310
309
  if (innerResult.type !== "ParquetPartitioned") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
@@ -346,7 +345,6 @@ function isPColumnReady(c) {
346
345
  function allPColumnsReady(columns) {
347
346
  return columns.every(isPColumnReady);
348
347
  }
349
-
350
348
  //#endregion
351
349
  exports.RT_BINARY_PARTITIONED = RT_BINARY_PARTITIONED;
352
350
  exports.RT_BINARY_SUPER_PARTITIONED = RT_BINARY_SUPER_PARTITIONED;
@@ -363,4 +361,5 @@ exports.getUniquePartitionKeys = getUniquePartitionKeys;
363
361
  exports.isPColumnReady = isPColumnReady;
364
362
  exports.parsePColumnData = parsePColumnData;
365
363
  exports.parseResourceMap = parseResourceMap;
364
+
366
365
  //# sourceMappingURL=pcolumn_data.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pcolumn_data.cjs","names":["TreeNodeAccessor"],"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
+ {"version":3,"file":"pcolumn_data.cjs","names":["TreeNodeAccessor"],"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":";;;;AAoBA,MAAM,aAAa;AAEnB,MAAa,kBAAkB,aAAa;AAC5C,MAAa,8BAA8B,aAAa;AAExD,MAAa,sBAAsB,aAAa;AAChD,MAAa,wBAAwB,aAAa;AAClD,MAAa,yBAAyB,aAAa;AAEnD,MAAM,iBAAiB,aAAa;AACpC,MAAa,4BAA4B,iBAAiB;AAC1D,MAAa,8BAA8B,iBAAiB;AAC5D,MAAa,+BAA+B,iBAAiB;AAY7D,SAAS,wBACP,KACA,gBACA,MACA,YAAwB,EAAE,EAC1B,sBACS;AACT,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,SAAQ,IAAI,aAAa,MAAzB;EACE,KAAK,iBAAiB;GACpB,IAAI,aAAa,IAAI,iBAAiB;AACtC,QAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;IAC1C,MAAM,QAAQ,IAAI,QAAQ;KAAE,OAAO;KAAQ,iBAAiB;KAAS,CAAC;IACtE,MAAM,MAAM,CAAC,GAAG,WAAW,GAAG,KAAK,MAAM,OAAO,CAAC;IACjD,MAAM,YAAY,UAAU,KAAA,IAAY,KAAA,IAAY,eAAe,MAAM;AACzE,QAAI,cAAc,KAAA,EAAW,cAAa;AAC1C,QAAI,cAAc,KAAA,KAAa,qBAAsB,MAAK,KAAK;KAAE;KAAK,OAAO;KAAW,CAAC;;AAE3F,UAAO;;EAET,KAAK,6BAA6B;GAChC,IAAI,aAAa,IAAI,iBAAiB;AACtC,QAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;IAC1C,MAAM,QAAQ,IAAI,QAAQ;KAAE,OAAO;KAAQ,iBAAiB;KAAS,CAAC;AACtE,QAAI,UAAU,KAAA,EAAW,cAAa;SACjC;KAEH,MAAM,iBAAiB,wBACrB,OACA,gBACA,MAJU,CAAC,GAAG,WAAW,GAAG,KAAK,MAAM,OAAO,CAAC,EAM/C,qBACD;AACD,kBAAa,cAAc;;;AAG/B,UAAO;;EAET,QACE,OAAM,IAAI,MAAM,0BAA0B,IAAI,aAAa,OAAO;;;AAcxE,SAAgB,iBACd,KACA,gBACA,uBAAgC,OACO;CACvC,MAAM,OAAiD,EAAE;AAEzD,QAAO;EAAE,YADU,wBAAwB,KAAK,gBAAgB,MAAM,EAAE,EAAE,qBAAqB;EAC1E;EAAM;;AAU7B,MAAM,qBAAqB,WAAkE;AAC3F,KAAI,OAAO,SAAS,SAAS,CAC3B,QAAO;EAAE,SAAS,OAAO,UAAU,GAAG,OAAO,SAAS,EAAE;EAAE,MAAM;EAAS;UAChE,OAAO,SAAS,UAAU,CACnC,QAAO;EAAE,SAAS,OAAO,UAAU,GAAG,OAAO,SAAS,EAAE;EAAE,MAAM;EAAU;KAE1E,OAAM,IAAI,MAAM,6DAA6D,SAAS;;;AAM1F,SAAgB,qBACd,KAC4B;AAC5B,KAAI,CAAC,IAAK,QAAO,KAAA;CAEjB,MAAM,KAAK,IAAI,aAAa;CAC5B,MAAM,OAAO,IAAI,eAAuC;CACxD,MAAM,OAAqB,EAAE;CAE7B,IAAI,YAAY;AAEhB,SAAQ,IAAR;EACE,KAAK;AACH,eAAY,KAAK;AACjB;EAEF,KAAK;AACH,eAAY,KAAK,wBAAwB,KAAK;AAC9C;EAEF,KAAK;EACL,KAAK;EACL,KAAK;AACH,eAAY,KAAK;AACjB;EAEF,KAAK;EACL,KAAK;EACL,KAAK;AACH,eAAY,KAAK,6BAA6B,KAAK;AACnD;;AAGJ,SAAQ,IAAR;EACE,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACH,QAAK,IAAI,UAAU,IAAI,iBAAiB,EAAE;AACxC,QAAI,OAAA,gCACF,UAAS,kBAAkB,OAAO,CAAC;IAErC,MAAM,MAAM,CAAC,GAAG,KAAK,MAAM,OAAO,CAAC;AACnC,SAAK,KAAK,IAAI;;AAGhB;EAEF,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACH,QAAK,MAAM,aAAa,IAAI,iBAAiB,EAAE;IAC7C,MAAM,YAAY,CAAC,GAAG,KAAK,MAAM,UAAU,CAAC;IAE5C,MAAM,QAAQ,IAAI,QAAQ;KAAE,OAAO;KAAW,iBAAiB;KAAS,CAAC;AACzE,QAAI,UAAU,KAAA,EACZ,MAAK,IAAI,UAAU,MAAM,iBAAiB,EAAE;AAC1C,SAAI,OAAA,4CACF,UAAS,kBAAkB,OAAO,CAAC;KAErC,MAAM,MAAM,CAAC,GAAG,WAAW,GAAG,KAAK,MAAM,OAAO,CAAC;AACjD,UAAK,KAAK,IAAI;;;AAIpB;;AAGJ,QAAO;EAAE;EAAM;EAAW;;AAG5B,SAAS,qCACP,MACuB;AACvB,KACE,KAAK,SAAS,qBACd,KAAK,SAAS,uBACd,KAAK,SAAS,qBAEd,OAAM,IAAI,MAAM,uDAAuD,KAAK,OAAO;CAErF,MAAM,EAAE,OAAO,uBAAuB;CAEtC,MAAM,SAAiC,EAAE;AACzC,MAAK,IAAI,IAAI,GAAG,IAAI,oBAAoB,EAAE,EACxC,QAAO,qBAAK,IAAI,KAAK,CAAC;AAGxB,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,MAAM,KAAK;AACjB,MAAI,IAAI,WAAW,mBACjB,OAAM,IAAI,MACR,eAAe,IAAI,OAAO,qCAAqC,mBAAmB,aAAa,KAAK,UAClG,IACD,GACF;AAEH,OAAK,IAAI,IAAI,GAAG,IAAI,oBAAoB,EAAE,EACxC,QAAO,GAAG,IAAI,IAAI,GAAG;;AAIzB,QAAO,OAAO,KAAK,MAAM,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC;;AAQlD,SAAgB,uBACd,KACmC;AACnC,KAAI,QAAQ,KAAA,EAAW,QAAO,KAAA;AAE9B,MAAA,GAAA,gCAAA,mBAAsB,IAAI,CAAE,QAAO,qCAAqC,IAAI;CAE5E,MAAM,OAAO,qBAAqB,IAAI;AACtC,KAAI,CAAC,KAAM,QAAO,KAAA;CAElB,MAAM,EAAE,MAAM,cAAc;CAE5B,MAAM,SAAiC,EAAE;AAEzC,MAAK,IAAI,IAAI,GAAG,IAAI,WAAW,EAAE,EAC/B,QAAO,qBAAK,IAAI,KAAK,CAAC;AAGxB,MAAK,MAAM,KAAK,MAAM;AACpB,MAAI,EAAE,WAAW,UACf,OAAM,IAAI,MAAM,6CAA6C;AAE/D,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,EAAE,EAC/B,QAAO,GAAG,IAAI,EAAE,GAAG;;AAIvB,QAAO,OAAO,KAAK,MAAM,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC;;;;;;;;;;;AAYlD,SAAgB,iBACd,KACA,YAAwB,EAAE,EACgC;AAC1D,KAAI,QAAQ,KAAA,EAAW,QAAO,KAAA;AAE9B,KAAI,CAAC,IAAI,mBAAmB,CAAE,QAAO,KAAA;CAErC,MAAM,eAAe,IAAI,aAAa;CACtC,MAAM,OAAO,IAAI,eAAuC;AAGxD,KACE,UAAU,SAAS,MAClB,iBAAA,6CACC,iBAAA,+CACA,iBAAA,8CAEF,OAAM,IAAI,MAAM,iDAAiD,eAAe;AAGlF,SAAQ,cAAR;EACE,KAAK;EACL,KAAK,4BACH,OAAM,IAAI,MAAM,yCAAyC,eAAe;EAE1E,KAAK,qBAAqB;AACxB,OAAI,OAAO,MAAM,uBAAuB,SACtC,OAAM,IAAI,MAAM,8CAA8C,eAAe;GAG/E,MAAM,QAA8C,EAAE;AACtD,QAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;IAC1C,MAAM,QAAQ,IAAI,QAAQ;KAAE,OAAO;KAAQ,iBAAiB;KAAS,CAAC;AACtE,QAAI,UAAU,KAAA,EAAW,QAAO,KAAA;IAEhC,MAAM,MAAM,CAAC,GAAG,WAAW,GAAG,KAAK,MAAM,OAAO,CAAC;AACjD,UAAM,KAAK;KAAE;KAAK;KAAO,CAAC;;AAG5B,UAAO;IACL,MAAM;IACN,oBAAoB,KAAK;IACzB;IACD;;EAGH,KAAK,uBAAuB;AAC1B,OAAI,OAAO,MAAM,uBAAuB,SACtC,OAAM,IAAI,MAAM,8CAA8C,eAAe;GAG/E,MAAM,QAA2D,EAAE;GACnE,MAAM,2BAAW,IAAI,KAAsE;AAG3F,QAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;IAC1C,MAAM,SAAS,kBAAkB,OAAO;IAExC,MAAM,QAAQ,IAAI,QAAQ;KAAE,OAAO;KAAQ,iBAAiB;KAAS,CAAC;AACtE,QAAI,UAAU,KAAA,EAAW,QAAO,KAAA;IAEhC,IAAI,QAAQ,SAAS,IAAI,OAAO,QAAQ;AACxC,QAAI,CAAC,OAAO;AACV,aAAQ,EAAE;AACV,cAAS,IAAI,OAAO,SAAS,MAAM;;AAGrC,QAAI,OAAO,SAAS,QAClB,OAAM,QAAQ;QAEd,OAAM,SAAS;;AAKnB,QAAK,MAAM,CAAC,YAAY,UAAU,SAAS,SAAS,EAAE;AACpD,QAAI,CAAC,MAAM,SAAS,CAAC,MAAM,OAAQ,QAAO,KAAA;IAE1C,MAAM,MAAM,CAAC,GAAG,WAAW,GAAG,KAAK,MAAM,WAAW,CAAC;AACrD,UAAM,KAAK;KACT;KACA,OAAO;MACL,OAAO,MAAM;MACb,QAAQ,MAAM;MACf;KACF,CAAC;;AAGJ,UAAO;IACL,MAAM;IACN,oBAAoB,KAAK;IACzB;IACD;;EAGH,KAAK,wBAAwB;AAC3B,OAAI,OAAO,MAAM,uBAAuB,SACtC,OAAM,IAAI,MAAM,8CAA8C,eAAe;GAG/E,MAAM,QAA8C,EAAE;AACtD,QAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;IAC1C,MAAM,QAAQ,IAAI,QAAQ;KAAE,OAAO;KAAQ,iBAAiB;KAAS,CAAC;AACtE,QAAI,UAAU,KAAA,EAAW,QAAO,KAAA;IAEhC,MAAM,MAAM,CAAC,GAAG,WAAW,GAAG,KAAK,MAAM,OAAO,CAAC;AACjD,UAAM,KAAK;KAAE;KAAK;KAAO,CAAC;;AAG5B,UAAO;IACL,MAAM;IACN,oBAAoB,KAAK;IACzB;IACD;;EAGH,KAAK,2BAA2B;AAC9B,OACE,OAAO,MAAM,4BAA4B,YACzC,OAAO,MAAM,uBAAuB,SAEpC,OAAM,IAAI,MACR,yEAAyE,eAC1E;GAGH,MAAM,iBAAiB,KAAK,0BAA0B,KAAK;GAC3D,MAAM,QAA8C,EAAE;AAGtD,QAAK,MAAM,aAAa,IAAI,iBAAiB,EAAE;IAC7C,MAAM,iBAAiB,IAAI,QAAQ;KAAE,OAAO;KAAW,iBAAiB;KAAS,CAAC;AAClF,QAAI,mBAAmB,KAAA,EAAW,QAAO,KAAA;AAGzC,QAAI,eAAe,aAAa,SAAA,8BAC9B,OAAM,IAAI,MACR,YAAY,oBAAoB,UAAU,aAAa,YAAY,eAAe,aAAa,OAChG;IAGH,MAAM,cAAc,iBAAiB,gBAAgB,KAAK,MAAM,UAAU,CAAe;AAEzF,QAAI,gBAAgB,KAAA,EAAW,QAAO,KAAA;AAEtC,QAAI,YAAY,SAAS,kBACvB,OAAM,IAAI,MAAM,oCAAoC,aAAa,IAAI,YAAY,OAAO;AAE1F,UAAM,KAAK,GAAG,YAAY,MAAM;;AAGlC,UAAO;IACL,MAAM;IACN,oBAAoB;IACpB;IACD;;EAGH,KAAK,6BAA6B;AAChC,OACE,OAAO,MAAM,4BAA4B,YACzC,OAAO,MAAM,uBAAuB,SAEpC,OAAM,IAAI,MACR,yEAAyE,eAC1E;GAGH,MAAM,iBAAiB,KAAK,0BAA0B,KAAK;GAC3D,MAAM,QAA2D,EAAE;AAGnE,QAAK,MAAM,aAAa,IAAI,iBAAiB,EAAE;IAC7C,MAAM,iBAAiB,IAAI,QAAQ;KAAE,OAAO;KAAW,iBAAiB;KAAS,CAAC;AAClF,QAAI,mBAAmB,KAAA,EAAW,QAAO,KAAA;AAGzC,QAAI,eAAe,aAAa,SAAA,gCAC9B,OAAM,IAAI,MACR,YAAY,sBAAsB,UAAU,aAAa,YAAY,eAAe,aAAa,OAClG;IAGH,MAAM,cAAc,iBAAiB,gBAAgB,KAAK,MAAM,UAAU,CAAe;AAEzF,QAAI,gBAAgB,KAAA,EAAW,QAAO,KAAA;AAEtC,QAAI,YAAY,SAAS,oBACvB,OAAM,IAAI,MAAM,oCAAoC,aAAa,IAAI,YAAY,OAAO;AAE1F,UAAM,KAAK,GAAG,YAAY,MAAM;;AAGlC,UAAO;IACL,MAAM;IACN,oBAAoB;IACpB;IACD;;EAGH,KAAK,8BAA8B;AACjC,OACE,OAAO,MAAM,4BAA4B,YACzC,OAAO,MAAM,uBAAuB,SAEpC,OAAM,IAAI,MACR,yEAAyE,eAC1E;GAGH,MAAM,iBAAiB,KAAK,0BAA0B,KAAK;GAC3D,MAAM,QAA8C,EAAE;AAGtD,QAAK,MAAM,aAAa,IAAI,iBAAiB,EAAE;IAC7C,MAAM,iBAAiB,IAAI,QAAQ;KAAE,OAAO;KAAW,iBAAiB;KAAS,CAAC;AAClF,QAAI,mBAAmB,KAAA,EAAW,QAAO,KAAA;AAGzC,QAAI,eAAe,aAAa,SAAA,iCAC9B,OAAM,IAAI,MACR,YAAY,uBAAuB,UAAU,aAAa,YAAY,eAAe,aAAa,OACnG;IAGH,MAAM,cAAc,iBAAiB,gBAAgB,KAAK,MAAM,UAAU,CAAe;AAEzF,QAAI,gBAAgB,KAAA,EAAW,QAAO,KAAA;AAEtC,QAAI,YAAY,SAAS,qBACvB,OAAM,IAAI,MAAM,oCAAoC,aAAa,IAAI,YAAY,OAAO;AAE1F,UAAM,KAAK,GAAG,YAAY,MAAM;;AAGlC,UAAO;IACL,MAAM;IACN,oBAAoB;IACpB;IACD;;EAGH,QACE,OAAM,IAAI,MAAM,0BAA0B,eAAe;;;;;;;;;AAU/D,SAAgB,0BACd,KAK+C;AAC/C,KAAI,QAAQ,KAAA,EAAW,QAAO,KAAA;AAE9B,MAAA,GAAA,gCAAA,mBAAsB,IAAI,CAAE,QAAO;AACnC,MAAA,GAAA,gCAAA,YAAe,IAAI,CAAE,SAAA,GAAA,gCAAA,mBAAyB,IAAI;AAClD,KAAI,eAAeA,iBAAAA,iBAAkB,QAAO,iBAAiB,IAAI;AAEjE,OAAM,IAAI,MAAM,0BAA0B,OAAO,MAAM;;AAGzD,SAAgB,eACd,GACwE;CACxE,MAAM,YAAY,MAAgD,MAAM,QAAQ,EAAE;CAClF,MAAM,cAAc,MAClB,aAAaA,iBAAAA;CAEf,IAAI,QAAQ;CACZ,MAAM,OAAO,OAAO,EAAE,SAAS,aAAa,EAAE,MAAM,GAAG,EAAE;AACzD,KAAI,QAAQ,KACV,QAAO;UACE,WAAW,KAAK,CACzB,WAAU,KAAK,mBAAmB;0DACd,KAAK,CACzB,EAAA,GAAA,gCAAA,eAAc,OAAO,MAAO,UAAU,EAAE,mBAAmB,CAAE;UACpD,CAAC,SAAS,KAAK,CAExB,OAAM,MAAM,iCAAiC,OAAuB;AAEtE,QAAO;;AAGT,SAAgB,iBACd,SACkF;AAClF,QAAO,QAAQ,MAAM,eAAe"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcolumn_data.d.ts","names":[],"sources":["../../../src/render/util/pcolumn_data.ts"],"mappings":";;;;;cAsBa,eAAA;AAAA,cACA,2BAAA;AAAA,cAEA,mBAAA;AAAA,cACA,qBAAA;AAAA,cACA,sBAAA;AAAA,cAGA,yBAAA;AAAA,cACA,2BAAA;AAAA,cACA,4BAAA;AAAA,KAED,uBAAA;EACV,GAAA,EAAK,UAAA;EACL,KAAA,EAAO,CAAA;AAAA;AAAA,KAGG,sBAAA;EACV,UAAA;EACA,IAAA,EAAM,uBAAA,CAAwB,CAAA;AAAA;AAAA,iBA+ChB,gBAAA,GAAA,CACd,GAAA,EAAK,gBAAA,cACL,cAAA,GAAiB,GAAA,EAAK,gBAAA,KAAqB,CAAA,cAC3C,oBAAA,UACC,sBAAA,CAAuB,WAAA,CAAY,CAAA;AAAA,iBACtB,gBAAA,GAAA,CACd,GAAA,EAAK,gBAAA,cACL,cAAA,GAAiB,GAAA,EAAK,gBAAA,KAAqB,CAAA,cAC3C,oBAAA,SACC,sBAAA,CAAuB,CAAA;AAAA,KAWd,cAAA;EAlFyD,oBAoFnE,IAAA,EAAM,UAAA,IAnFK;EAqFX,SAAA;AAAA;;iBAec,oBAAA,CACd,GAAA,EAAK,gBAAA,eACJ,cAAA;AAnGH;AAAA,iBA4MgB,sBAAA,CAAuB,GAAA,EAAK,eAAA;AAAA,iBAC5B,sBAAA,CACd,GAAA,EAAK,eAAA,YAA2B,gBAAA;;;AA7MlC;;;;;AACA;;iBAqPgB,gBAAA,CACd,GAAA,EAAK,gBAAA,cACL,SAAA,GAAW,UAAA,GACV,0BAAA,CAA2B,gBAAA;;;AAtP9B;;;;iBAifgB,yBAAA,CACd,GAAA,EACI,gBAAA,GACA,eAAA,CAAgB,gBAAA,IAChB,QAAA,CAAS,gBAAA,gBAEZ,eAAA,CAAgB,gBAAA;AAAA,iBAUH,cAAA,CACd,CAAA,EAAG,OAAA,CAAQ,oBAAA,IAAwB,WAAA,aAAwB,oBAAA,IAC1D,CAAA,IAAK,OAAA,CAAQ,oBAAA,IAAwB,WAAA,CAAY,oBAAA;AAAA,iBAoBpC,gBAAA,CACd,OAAA,GAAU,OAAA,CAAQ,oBAAA,IAAwB,WAAA,aAAwB,oBAAA,OACjE,OAAA,KAAY,OAAA,CAAQ,oBAAA,IAAwB,WAAA,CAAY,oBAAA"}
@@ -1,6 +1,5 @@
1
1
  import { TreeNodeAccessor } from "../accessor.js";
2
2
  import { dataInfoToEntries, isDataInfo, isDataInfoEntries, visitDataInfo } from "@milaboratories/pl-model-common";
3
-
4
3
  //#region src/render/util/pcolumn_data.ts
5
4
  const PCD_PREFIX = "PColumnData/";
6
5
  const RT_RESOURCE_MAP = PCD_PREFIX + "ResourceMap";
@@ -99,7 +98,7 @@ function getPartitionKeysList(acc) {
99
98
  case RT_BINARY_PARTITIONED:
100
99
  case RT_PARQUET_PARTITIONED:
101
100
  for (let keyStr of acc.listInputFields()) {
102
- if (rt === RT_BINARY_PARTITIONED) keyStr = removeIndexSuffix(keyStr).baseKey;
101
+ if (rt === "PColumnData/BinaryPartitioned") keyStr = removeIndexSuffix(keyStr).baseKey;
103
102
  const key = [...JSON.parse(keyStr)];
104
103
  data.push(key);
105
104
  }
@@ -115,7 +114,7 @@ function getPartitionKeysList(acc) {
115
114
  assertFieldType: "Input"
116
115
  });
117
116
  if (value !== void 0) for (let keyStr of value.listInputFields()) {
118
- if (rt === RT_BINARY_SUPER_PARTITIONED) keyStr = removeIndexSuffix(keyStr).baseKey;
117
+ if (rt === "PColumnData/Partitioned/BinaryPartitioned") keyStr = removeIndexSuffix(keyStr).baseKey;
119
118
  const key = [...keyPrefix, ...JSON.parse(keyStr)];
120
119
  data.push(key);
121
120
  }
@@ -167,7 +166,7 @@ function parsePColumnData(acc, keyPrefix = []) {
167
166
  if (!acc.getIsReadyOrError()) return void 0;
168
167
  const resourceType = acc.resourceType.name;
169
168
  const meta = acc.getDataAsJson();
170
- if (keyPrefix.length > 0 && (resourceType === RT_JSON_SUPER_PARTITIONED || resourceType === RT_BINARY_SUPER_PARTITIONED || resourceType === RT_PARQUET_SUPER_PARTITIONED)) throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);
169
+ if (keyPrefix.length > 0 && (resourceType === "PColumnData/Partitioned/JsonPartitioned" || resourceType === "PColumnData/Partitioned/BinaryPartitioned" || resourceType === "PColumnData/Partitioned/ParquetPartitioned")) throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);
171
170
  switch (resourceType) {
172
171
  case RT_RESOURCE_MAP:
173
172
  case RT_RESOURCE_MAP_PARTITIONED: throw new Error(`Only data columns are supported, got: ${resourceType}`);
@@ -259,7 +258,7 @@ function parsePColumnData(acc, keyPrefix = []) {
259
258
  assertFieldType: "Input"
260
259
  });
261
260
  if (superPartition === void 0) return void 0;
262
- if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
261
+ if (superPartition.resourceType.name !== "PColumnData/JsonPartitioned") throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
263
262
  const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
264
263
  if (innerResult === void 0) return void 0;
265
264
  if (innerResult.type !== "JsonPartitioned") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
@@ -281,7 +280,7 @@ function parsePColumnData(acc, keyPrefix = []) {
281
280
  assertFieldType: "Input"
282
281
  });
283
282
  if (superPartition === void 0) return void 0;
284
- if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
283
+ if (superPartition.resourceType.name !== "PColumnData/BinaryPartitioned") throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
285
284
  const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
286
285
  if (innerResult === void 0) return void 0;
287
286
  if (innerResult.type !== "BinaryPartitioned") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
@@ -303,7 +302,7 @@ function parsePColumnData(acc, keyPrefix = []) {
303
302
  assertFieldType: "Input"
304
303
  });
305
304
  if (superPartition === void 0) return void 0;
306
- if (superPartition.resourceType.name !== RT_PARQUET_PARTITIONED) throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
305
+ if (superPartition.resourceType.name !== "PColumnData/ParquetPartitioned") throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
307
306
  const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
308
307
  if (innerResult === void 0) return void 0;
309
308
  if (innerResult.type !== "ParquetPartitioned") throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
@@ -345,7 +344,7 @@ function isPColumnReady(c) {
345
344
  function allPColumnsReady(columns) {
346
345
  return columns.every(isPColumnReady);
347
346
  }
348
-
349
347
  //#endregion
350
348
  export { RT_BINARY_PARTITIONED, RT_BINARY_SUPER_PARTITIONED, RT_JSON_PARTITIONED, RT_JSON_SUPER_PARTITIONED, RT_PARQUET_PARTITIONED, RT_PARQUET_SUPER_PARTITIONED, RT_RESOURCE_MAP, RT_RESOURCE_MAP_PARTITIONED, allPColumnsReady, convertOrParsePColumnData, getPartitionKeysList, getUniquePartitionKeys, isPColumnReady, parsePColumnData, parseResourceMap };
349
+
351
350
  //# sourceMappingURL=pcolumn_data.js.map
@@ -1 +1 @@
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
+ {"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,4 +1,3 @@
1
-
2
1
  //#region src/render/util/pframe_upgraders.ts
3
2
  function patchInSetFilters(filters) {
4
3
  const inSetToOrEqual = (predicate) => {
@@ -36,7 +35,7 @@ function patchInSetFilters(filters) {
36
35
  };
37
36
  return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
38
37
  }
39
-
40
38
  //#endregion
41
39
  exports.patchInSetFilters = patchInSetFilters;
40
+
42
41
  //# sourceMappingURL=pframe_upgraders.cjs.map
@@ -1 +1 @@
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
+ {"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"}
@@ -35,7 +35,7 @@ function patchInSetFilters(filters) {
35
35
  };
36
36
  return filters.map((filter) => mapFilter(filter, inSetToOrEqual));
37
37
  }
38
-
39
38
  //#endregion
40
39
  export { patchInSetFilters };
40
+
41
41
  //# sourceMappingURL=pframe_upgraders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split_selectors.d.ts","names":[],"sources":["../../../src/render/util/split_selectors.ts"],"mappings":";;;;;AAUA;KAAY,sBAAA,GAAyB,aAAA;EACnC,KAAA;AAAA;;AAMF;;KAAY,yBAAA,GAA4B,uBAAA;EACtC,IAAA,GAAO,sBAAA;AAAA;;;;KAMG,qBAAA,GAAwB,kBAAA;EAClC,KAAA;AAAA;;;;KAMU,wBAAA,GAA2B,eAAA;EACrC,IAAA,GAAO,qBAAA;AAAA"}
@@ -1,6 +1,5 @@
1
- const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
1
+ require("../_virtual/_rolldown/runtime.cjs");
2
2
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
3
-
4
3
  //#region src/services/block_services.ts
5
4
  /**
6
5
  * Services required by all V3 blocks by default.
@@ -11,8 +10,8 @@ let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common")
11
10
  */
12
11
  const BLOCK_SERVICE_FLAGS = { requiresPFrameSpec: true };
13
12
  const blockServiceNames = (0, _milaboratories_pl_model_common.resolveRequiredServices)(BLOCK_SERVICE_FLAGS);
14
-
15
13
  //#endregion
16
14
  exports.BLOCK_SERVICE_FLAGS = BLOCK_SERVICE_FLAGS;
17
15
  exports.blockServiceNames = blockServiceNames;
16
+
18
17
  //# sourceMappingURL=block_services.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"block_services.cjs","names":[],"sources":["../../src/services/block_services.ts"],"sourcesContent":["import type { ServiceRequireFlags } from \"@milaboratories/pl-model-common\";\nimport { resolveRequiredServices } from \"@milaboratories/pl-model-common\";\n\n/**\n * Services required by all V3 blocks by default.\n * Edit this when a new service should be available to all blocks.\n *\n * Standalone module to avoid circular dependencies between block_model.ts\n * and service type resolution.\n */\nexport const BLOCK_SERVICE_FLAGS = {\n requiresPFrameSpec: true,\n} as const satisfies Partial<ServiceRequireFlags>;\n\nexport type BlockServiceFlags = typeof BLOCK_SERVICE_FLAGS;\n\nexport const blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,sBAAsB,EACjC,oBAAoB,MACrB;AAID,MAAa,iFAA4C,oBAAoB"}
1
+ {"version":3,"file":"block_services.cjs","names":[],"sources":["../../src/services/block_services.ts"],"sourcesContent":["import type { ServiceRequireFlags } from \"@milaboratories/pl-model-common\";\nimport { resolveRequiredServices } from \"@milaboratories/pl-model-common\";\n\n/**\n * Services required by all V3 blocks by default.\n * Edit this when a new service should be available to all blocks.\n *\n * Standalone module to avoid circular dependencies between block_model.ts\n * and service type resolution.\n */\nexport const BLOCK_SERVICE_FLAGS = {\n requiresPFrameSpec: true,\n} as const satisfies Partial<ServiceRequireFlags>;\n\nexport type BlockServiceFlags = typeof BLOCK_SERVICE_FLAGS;\n\nexport const blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);\n"],"mappings":";;;;;;;;;;AAUA,MAAa,sBAAsB,EACjC,oBAAoB,MACrB;AAID,MAAa,qBAAA,GAAA,gCAAA,yBAA4C,oBAAoB"}
@@ -1,4 +1,4 @@
1
- import * as _milaboratories_pl_model_common0 from "@milaboratories/pl-model-common";
1
+ import * as _$_milaboratories_pl_model_common0 from "@milaboratories/pl-model-common";
2
2
 
3
3
  //#region src/services/block_services.d.ts
4
4
  /**
@@ -12,7 +12,7 @@ declare const BLOCK_SERVICE_FLAGS: {
12
12
  readonly requiresPFrameSpec: true;
13
13
  };
14
14
  type BlockServiceFlags = typeof BLOCK_SERVICE_FLAGS;
15
- declare const blockServiceNames: _milaboratories_pl_model_common0.ServiceName[];
15
+ declare const blockServiceNames: _$_milaboratories_pl_model_common0.ServiceName[];
16
16
  //#endregion
17
17
  export { BLOCK_SERVICE_FLAGS, BlockServiceFlags, blockServiceNames };
18
18
  //# sourceMappingURL=block_services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block_services.d.ts","names":[],"sources":["../../src/services/block_services.ts"],"mappings":";;;;;;AAUA;;;;cAAa,mBAAA;EAAA,SAEoC,kBAAA;AAAA;AAAA,KAErC,iBAAA,UAA2B,mBAAA;AAAA,cAE1B,iBAAA,EAAgE,kCAAA,CAA/C,WAAA"}
@@ -1,5 +1,4 @@
1
1
  import { resolveRequiredServices } from "@milaboratories/pl-model-common";
2
-
3
2
  //#region src/services/block_services.ts
4
3
  /**
5
4
  * Services required by all V3 blocks by default.
@@ -10,7 +9,7 @@ import { resolveRequiredServices } from "@milaboratories/pl-model-common";
10
9
  */
11
10
  const BLOCK_SERVICE_FLAGS = { requiresPFrameSpec: true };
12
11
  const blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);
13
-
14
12
  //#endregion
15
13
  export { BLOCK_SERVICE_FLAGS, blockServiceNames };
14
+
16
15
  //# sourceMappingURL=block_services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block_services.js","names":[],"sources":["../../src/services/block_services.ts"],"sourcesContent":["import type { ServiceRequireFlags } from \"@milaboratories/pl-model-common\";\nimport { resolveRequiredServices } from \"@milaboratories/pl-model-common\";\n\n/**\n * Services required by all V3 blocks by default.\n * Edit this when a new service should be available to all blocks.\n *\n * Standalone module to avoid circular dependencies between block_model.ts\n * and service type resolution.\n */\nexport const BLOCK_SERVICE_FLAGS = {\n requiresPFrameSpec: true,\n} as const satisfies Partial<ServiceRequireFlags>;\n\nexport type BlockServiceFlags = typeof BLOCK_SERVICE_FLAGS;\n\nexport const blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);\n"],"mappings":";;;;;;;;;;AAUA,MAAa,sBAAsB,EACjC,oBAAoB,MACrB;AAID,MAAa,oBAAoB,wBAAwB,oBAAoB"}
1
+ {"version":3,"file":"block_services.js","names":[],"sources":["../../src/services/block_services.ts"],"sourcesContent":["import type { ServiceRequireFlags } from \"@milaboratories/pl-model-common\";\nimport { resolveRequiredServices } from \"@milaboratories/pl-model-common\";\n\n/**\n * Services required by all V3 blocks by default.\n * Edit this when a new service should be available to all blocks.\n *\n * Standalone module to avoid circular dependencies between block_model.ts\n * and service type resolution.\n */\nexport const BLOCK_SERVICE_FLAGS = {\n requiresPFrameSpec: true,\n} as const satisfies Partial<ServiceRequireFlags>;\n\nexport type BlockServiceFlags = typeof BLOCK_SERVICE_FLAGS;\n\nexport const blockServiceNames = resolveRequiredServices(BLOCK_SERVICE_FLAGS);\n"],"mappings":";;;;;;;;;AAUA,MAAa,sBAAsB,EACjC,oBAAoB,MACrB;AAID,MAAa,oBAAoB,wBAAwB,oBAAoB"}
@@ -1,2 +1,2 @@
1
- const require_block_services = require('./block_services.cjs');
2
- const require_service_bridge = require('./service_bridge.cjs');
1
+ require("./block_services.cjs");
2
+ require("./service_bridge.cjs");
@@ -1,2 +1,2 @@
1
- import { BLOCK_SERVICE_FLAGS, blockServiceNames } from "./block_services.js";
2
- import { buildServices, createNodeServiceProxy } from "./service_bridge.js";
1
+ import "./block_services.js";
2
+ import "./service_bridge.js";
@@ -1,4 +1,3 @@
1
-
2
1
  //#region src/services/service_bridge.ts
3
2
  /**
4
3
  * Builds a lazy services object from ServiceDispatch and UiServiceRegistry.
@@ -28,8 +27,8 @@ function buildServices(dispatch, registry) {
28
27
  function createNodeServiceProxy(dispatch) {
29
28
  return ((serviceId) => Object.freeze(Object.fromEntries(dispatch.getServiceMethods(serviceId).map((method) => [method, async (...args) => dispatch.callServiceMethod(serviceId, method, ...args)]))));
30
29
  }
31
-
32
30
  //#endregion
33
31
  exports.buildServices = buildServices;
34
32
  exports.createNodeServiceProxy = createNodeServiceProxy;
33
+
35
34
  //# sourceMappingURL=service_bridge.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"service_bridge.cjs","names":[],"sources":["../../src/services/service_bridge.ts"],"sourcesContent":["/**\n * Runtime service bridge — builds lazy service objects from dispatch + registry.\n * Used by the UI layer to provide typed service access.\n */\n\nimport type {\n ServiceTypesLike,\n InferServiceUi,\n ServiceName,\n ServiceDispatch,\n UiServices as AllUiServices,\n} from \"@milaboratories/pl-model-common\";\nimport { UiServiceRegistry } from \"@milaboratories/pl-model-common\";\n\n// Makes a remote node service appear local.\n// Given a service ID, returns an object implementing the service's UI interface.\n// Provided by the desktop app (e.g. backed by Electron IPC).\nexport type NodeServiceProxy = <S extends ServiceTypesLike>(\n serviceId: ServiceName<S>,\n) => InferServiceUi<S>;\n\n/**\n * Builds a lazy services object from ServiceDispatch and UiServiceRegistry.\n * Each service is instantiated on first access. Errors are cached to prevent\n * repeated factory calls on failure.\n */\nexport function buildServices<S extends Partial<AllUiServices> = Partial<AllUiServices>>(\n dispatch: ServiceDispatch,\n registry: UiServiceRegistry,\n): S {\n return Object.create(\n null,\n Object.fromEntries(\n dispatch.getServiceNames().map((id) => {\n let fetched = false;\n let cached: unknown;\n return [\n id,\n {\n enumerable: true,\n get() {\n if (!fetched) {\n fetched = true;\n cached = registry.get(id);\n }\n return cached;\n },\n },\n ];\n }),\n ),\n );\n}\n\n/**\n * Builds a NodeServiceProxy from a ServiceDispatch.\n * Each service method call is forwarded to dispatch.callServiceMethod.\n */\nexport function createNodeServiceProxy(dispatch: ServiceDispatch): NodeServiceProxy {\n return ((serviceId: ServiceName) =>\n Object.freeze(\n Object.fromEntries(\n dispatch\n .getServiceMethods(serviceId)\n .map((method) => [\n method,\n async (...args: unknown[]) => dispatch.callServiceMethod(serviceId, method, ...args),\n ]),\n ),\n )) as NodeServiceProxy;\n}\n"],"mappings":";;;;;;;AA0BA,SAAgB,cACd,UACA,UACG;AACH,QAAO,OAAO,OACZ,MACA,OAAO,YACL,SAAS,iBAAiB,CAAC,KAAK,OAAO;EACrC,IAAI,UAAU;EACd,IAAI;AACJ,SAAO,CACL,IACA;GACE,YAAY;GACZ,MAAM;AACJ,QAAI,CAAC,SAAS;AACZ,eAAU;AACV,cAAS,SAAS,IAAI,GAAG;;AAE3B,WAAO;;GAEV,CACF;GACD,CACH,CACF;;;;;;AAOH,SAAgB,uBAAuB,UAA6C;AAClF,UAAS,cACP,OAAO,OACL,OAAO,YACL,SACG,kBAAkB,UAAU,CAC5B,KAAK,WAAW,CACf,QACA,OAAO,GAAG,SAAoB,SAAS,kBAAkB,WAAW,QAAQ,GAAG,KAAK,CACrF,CAAC,CACL,CACF"}
1
+ {"version":3,"file":"service_bridge.cjs","names":[],"sources":["../../src/services/service_bridge.ts"],"sourcesContent":["/**\n * Runtime service bridge — builds lazy service objects from dispatch + registry.\n * Used by the UI layer to provide typed service access.\n */\n\nimport type {\n ServiceTypesLike,\n InferServiceUi,\n ServiceName,\n ServiceDispatch,\n UiServices as AllUiServices,\n} from \"@milaboratories/pl-model-common\";\nimport { UiServiceRegistry } from \"@milaboratories/pl-model-common\";\n\n// Makes a remote node service appear local.\n// Given a service ID, returns an object implementing the service's UI interface.\n// Provided by the desktop app (e.g. backed by Electron IPC).\nexport type NodeServiceProxy = <S extends ServiceTypesLike>(\n serviceId: ServiceName<S>,\n) => InferServiceUi<S>;\n\n/**\n * Builds a lazy services object from ServiceDispatch and UiServiceRegistry.\n * Each service is instantiated on first access. Errors are cached to prevent\n * repeated factory calls on failure.\n */\nexport function buildServices<S extends Partial<AllUiServices> = Partial<AllUiServices>>(\n dispatch: ServiceDispatch,\n registry: UiServiceRegistry,\n): S {\n return Object.create(\n null,\n Object.fromEntries(\n dispatch.getServiceNames().map((id) => {\n let fetched = false;\n let cached: unknown;\n return [\n id,\n {\n enumerable: true,\n get() {\n if (!fetched) {\n fetched = true;\n cached = registry.get(id);\n }\n return cached;\n },\n },\n ];\n }),\n ),\n );\n}\n\n/**\n * Builds a NodeServiceProxy from a ServiceDispatch.\n * Each service method call is forwarded to dispatch.callServiceMethod.\n */\nexport function createNodeServiceProxy(dispatch: ServiceDispatch): NodeServiceProxy {\n return ((serviceId: ServiceName) =>\n Object.freeze(\n Object.fromEntries(\n dispatch\n .getServiceMethods(serviceId)\n .map((method) => [\n method,\n async (...args: unknown[]) => dispatch.callServiceMethod(serviceId, method, ...args),\n ]),\n ),\n )) as NodeServiceProxy;\n}\n"],"mappings":";;;;;;AA0BA,SAAgB,cACd,UACA,UACG;AACH,QAAO,OAAO,OACZ,MACA,OAAO,YACL,SAAS,iBAAiB,CAAC,KAAK,OAAO;EACrC,IAAI,UAAU;EACd,IAAI;AACJ,SAAO,CACL,IACA;GACE,YAAY;GACZ,MAAM;AACJ,QAAI,CAAC,SAAS;AACZ,eAAU;AACV,cAAS,SAAS,IAAI,GAAG;;AAE3B,WAAO;;GAEV,CACF;GACD,CACH,CACF;;;;;;AAOH,SAAgB,uBAAuB,UAA6C;AAClF,UAAS,cACP,OAAO,OACL,OAAO,YACL,SACG,kBAAkB,UAAU,CAC5B,KAAK,WAAW,CACf,QACA,OAAO,GAAG,SAAoB,SAAS,kBAAkB,WAAW,QAAQ,GAAG,KAAK,CACrF,CAAC,CACL,CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service_bridge.d.ts","names":[],"sources":["../../src/services/service_bridge.ts"],"mappings":";;;KAiBY,gBAAA,cAA8B,gBAAA,EACxC,SAAA,EAAW,WAAA,CAAY,CAAA,MACpB,cAAA,CAAe,CAAA;;;;;;iBAOJ,aAAA,WAAwB,OAAA,CAAQ,UAAA,IAAiB,OAAA,CAAQ,UAAA,EAAA,CACvE,QAAA,EAAU,eAAA,EACV,QAAA,EAAU,iBAAA,GACT,CAAA;;;;;iBA6Ba,sBAAA,CAAuB,QAAA,EAAU,eAAA,GAAkB,gBAAA"}