@platforma-sdk/model 1.79.17 → 1.79.24

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 (326) hide show
  1. package/dist/annotations/converter.cjs +0 -1
  2. package/dist/annotations/converter.cjs.map +1 -1
  3. package/dist/annotations/converter.d.ts.map +1 -1
  4. package/dist/annotations/converter.js.map +1 -1
  5. package/dist/annotations/index.cjs +2 -1
  6. package/dist/annotations/index.d.ts +2 -1
  7. package/dist/annotations/index.js +2 -1
  8. package/dist/bconfig/index.cjs +5 -2
  9. package/dist/bconfig/index.d.ts +2 -1
  10. package/dist/bconfig/index.js +3 -2
  11. package/dist/bconfig/lambdas.d.ts.map +1 -1
  12. package/dist/bconfig/normalization.cjs +0 -1
  13. package/dist/bconfig/normalization.cjs.map +1 -1
  14. package/dist/bconfig/normalization.d.ts.map +1 -1
  15. package/dist/bconfig/normalization.js.map +1 -1
  16. package/dist/bconfig/types.cjs.map +1 -1
  17. package/dist/bconfig/types.d.ts.map +1 -1
  18. package/dist/bconfig/types.js.map +1 -1
  19. package/dist/bconfig/util.d.ts.map +1 -1
  20. package/dist/bconfig/v3.d.ts.map +1 -1
  21. package/dist/block_api_v1.d.ts.map +1 -1
  22. package/dist/block_migrations.cjs +3 -0
  23. package/dist/block_migrations.cjs.map +1 -1
  24. package/dist/block_migrations.d.ts +1 -1
  25. package/dist/block_migrations.d.ts.map +1 -1
  26. package/dist/block_migrations.js +1 -1
  27. package/dist/block_migrations.js.map +1 -1
  28. package/dist/block_model.cjs +1 -1
  29. package/dist/block_model.cjs.map +1 -1
  30. package/dist/block_model.d.ts.map +1 -1
  31. package/dist/block_model.js +1 -0
  32. package/dist/block_model.js.map +1 -1
  33. package/dist/block_model_legacy.cjs +1 -1
  34. package/dist/block_model_legacy.cjs.map +1 -1
  35. package/dist/block_model_legacy.d.ts.map +1 -1
  36. package/dist/block_model_legacy.js +1 -0
  37. package/dist/block_model_legacy.js.map +1 -1
  38. package/dist/block_state_patch.d.ts.map +1 -1
  39. package/dist/block_state_util.cjs +2 -0
  40. package/dist/block_state_util.cjs.map +1 -1
  41. package/dist/block_state_util.d.ts.map +1 -1
  42. package/dist/block_state_util.js +2 -0
  43. package/dist/block_state_util.js.map +1 -1
  44. package/dist/block_storage.cjs.map +1 -1
  45. package/dist/block_storage.d.ts +1 -1
  46. package/dist/block_storage.d.ts.map +1 -1
  47. package/dist/block_storage.js.map +1 -1
  48. package/dist/block_storage_callbacks.cjs +1 -1
  49. package/dist/block_storage_callbacks.cjs.map +1 -1
  50. package/dist/block_storage_callbacks.js +1 -1
  51. package/dist/block_storage_callbacks.js.map +1 -1
  52. package/dist/block_storage_facade.cjs.map +1 -1
  53. package/dist/block_storage_facade.d.ts.map +1 -1
  54. package/dist/block_storage_facade.js.map +1 -1
  55. package/dist/columns/column_collection_builder.cjs +3 -1
  56. package/dist/columns/column_collection_builder.cjs.map +1 -1
  57. package/dist/columns/column_collection_builder.d.ts.map +1 -1
  58. package/dist/columns/column_collection_builder.js +3 -0
  59. package/dist/columns/column_collection_builder.js.map +1 -1
  60. package/dist/columns/column_selector.cjs.map +1 -1
  61. package/dist/columns/column_selector.d.ts.map +1 -1
  62. package/dist/columns/column_selector.js.map +1 -1
  63. package/dist/columns/column_snapshot.cjs.map +1 -1
  64. package/dist/columns/column_snapshot.d.ts.map +1 -1
  65. package/dist/columns/column_snapshot.js.map +1 -1
  66. package/dist/columns/column_snapshot_provider.cjs +3 -1
  67. package/dist/columns/column_snapshot_provider.cjs.map +1 -1
  68. package/dist/columns/column_snapshot_provider.d.ts.map +1 -1
  69. package/dist/columns/column_snapshot_provider.js +3 -0
  70. package/dist/columns/column_snapshot_provider.js.map +1 -1
  71. package/dist/columns/ctx_column_sources.cjs +1 -1
  72. package/dist/columns/ctx_column_sources.cjs.map +1 -1
  73. package/dist/columns/ctx_column_sources.d.ts.map +1 -1
  74. package/dist/columns/ctx_column_sources.js +1 -0
  75. package/dist/columns/ctx_column_sources.js.map +1 -1
  76. package/dist/columns/expand_by_partition.cjs +0 -1
  77. package/dist/columns/expand_by_partition.cjs.map +1 -1
  78. package/dist/columns/expand_by_partition.d.ts.map +1 -1
  79. package/dist/columns/expand_by_partition.js.map +1 -1
  80. package/dist/columns/index.cjs +20 -6
  81. package/dist/columns/index.d.ts +2 -1
  82. package/dist/columns/index.js +7 -6
  83. package/dist/components/PFrameForGraphs.cjs +3 -2
  84. package/dist/components/PFrameForGraphs.cjs.map +1 -1
  85. package/dist/components/PFrameForGraphs.d.ts +1 -1
  86. package/dist/components/PFrameForGraphs.d.ts.map +1 -1
  87. package/dist/components/PFrameForGraphs.js +2 -2
  88. package/dist/components/PFrameForGraphs.js.map +1 -1
  89. package/dist/components/PlAnnotations/filter.d.ts.map +1 -1
  90. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
  91. package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
  92. package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
  93. package/dist/components/PlAnnotations/index.d.ts +2 -1
  94. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs +0 -1
  95. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.cjs.map +1 -1
  96. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV2.js.map +1 -1
  97. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs +0 -1
  98. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.cjs.map +1 -1
  99. package/dist/components/PlDataTable/createPlDataTable/createPTableDefV3.js.map +1 -1
  100. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs +0 -1
  101. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.cjs.map +1 -1
  102. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.d.ts.map +1 -1
  103. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV2.js.map +1 -1
  104. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs +1 -2
  105. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.cjs.map +1 -1
  106. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.d.ts.map +1 -1
  107. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js +1 -1
  108. package/dist/components/PlDataTable/createPlDataTable/createPlDataTableV3.js.map +1 -1
  109. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs +0 -1
  110. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.cjs.map +1 -1
  111. package/dist/components/PlDataTable/createPlDataTable/discoverColumns.js.map +1 -1
  112. package/dist/components/PlDataTable/createPlDataTable/index.cjs +2 -1
  113. package/dist/components/PlDataTable/createPlDataTable/index.cjs.map +1 -1
  114. package/dist/components/PlDataTable/createPlDataTable/index.d.ts +1 -1
  115. package/dist/components/PlDataTable/createPlDataTable/index.d.ts.map +1 -1
  116. package/dist/components/PlDataTable/createPlDataTable/index.js +2 -2
  117. package/dist/components/PlDataTable/createPlDataTable/index.js.map +1 -1
  118. package/dist/components/PlDataTable/createPlDataTable/utils.cjs +0 -1
  119. package/dist/components/PlDataTable/createPlDataTable/utils.cjs.map +1 -1
  120. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts +1 -1
  121. package/dist/components/PlDataTable/createPlDataTable/utils.d.ts.map +1 -1
  122. package/dist/components/PlDataTable/createPlDataTable/utils.js.map +1 -1
  123. package/dist/components/PlDataTable/createPlDataTableSheet.cjs.map +1 -1
  124. package/dist/components/PlDataTable/createPlDataTableSheet.d.ts.map +1 -1
  125. package/dist/components/PlDataTable/createPlDataTableSheet.js.map +1 -1
  126. package/dist/components/PlDataTable/index.cjs +19 -7
  127. package/dist/components/PlDataTable/index.d.ts +2 -1
  128. package/dist/components/PlDataTable/index.js +8 -7
  129. package/dist/components/PlDataTable/labels.cjs +0 -1
  130. package/dist/components/PlDataTable/labels.cjs.map +1 -1
  131. package/dist/components/PlDataTable/labels.js.map +1 -1
  132. package/dist/components/PlDataTable/state-migration.cjs +0 -1
  133. package/dist/components/PlDataTable/state-migration.cjs.map +1 -1
  134. package/dist/components/PlDataTable/state-migration.d.ts.map +1 -1
  135. package/dist/components/PlDataTable/state-migration.js.map +1 -1
  136. package/dist/components/PlDataTable/typesV4.d.ts +1 -1
  137. package/dist/components/PlDataTable/typesV4.d.ts.map +1 -1
  138. package/dist/components/PlDataTable/typesV5.d.ts +1 -1
  139. package/dist/components/PlDataTable/typesV5.d.ts.map +1 -1
  140. package/dist/components/PlDataTable/typesV6.d.ts +1 -1
  141. package/dist/components/PlDataTable/typesV6.d.ts.map +1 -1
  142. package/dist/components/PlDataTable/typesV7.d.ts.map +1 -1
  143. package/dist/components/PlDatasetSelector/build_dataset_options.cjs +0 -1
  144. package/dist/components/PlDatasetSelector/build_dataset_options.cjs.map +1 -1
  145. package/dist/components/PlDatasetSelector/build_dataset_options.js.map +1 -1
  146. package/dist/components/PlDatasetSelector/dataset_selection.cjs.map +1 -1
  147. package/dist/components/PlDatasetSelector/dataset_selection.d.ts.map +1 -1
  148. package/dist/components/PlDatasetSelector/dataset_selection.js.map +1 -1
  149. package/dist/components/PlDatasetSelector/enrichment_discovery.cjs +0 -1
  150. package/dist/components/PlDatasetSelector/enrichment_discovery.cjs.map +1 -1
  151. package/dist/components/PlDatasetSelector/enrichment_discovery.js.map +1 -1
  152. package/dist/components/PlDatasetSelector/filter_discovery.cjs +1 -1
  153. package/dist/components/PlDatasetSelector/filter_discovery.cjs.map +1 -1
  154. package/dist/components/PlDatasetSelector/filter_discovery.d.ts.map +1 -1
  155. package/dist/components/PlDatasetSelector/filter_discovery.js.map +1 -1
  156. package/dist/components/PlDatasetSelector/index.cjs +9 -3
  157. package/dist/components/PlDatasetSelector/index.d.ts +2 -1
  158. package/dist/components/PlDatasetSelector/index.js +4 -3
  159. package/dist/components/PlMultiSequenceAlignment.cjs +0 -1
  160. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
  161. package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -1
  162. package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
  163. package/dist/components/PlSelectionModel.cjs.map +1 -1
  164. package/dist/components/PlSelectionModel.d.ts.map +1 -1
  165. package/dist/components/PlSelectionModel.js.map +1 -1
  166. package/dist/components/index.cjs +44 -15
  167. package/dist/components/index.d.ts +2 -1
  168. package/dist/components/index.js +16 -15
  169. package/dist/config/actions.cjs.map +1 -1
  170. package/dist/config/actions.d.ts.map +1 -1
  171. package/dist/config/actions.js.map +1 -1
  172. package/dist/config/actions_kinds.d.ts.map +1 -1
  173. package/dist/config/index.cjs +33 -1
  174. package/dist/config/index.d.ts +2 -1
  175. package/dist/config/index.js +2 -1
  176. package/dist/config/model.d.ts.map +1 -1
  177. package/dist/config/type_engine.d.ts.map +1 -1
  178. package/dist/config/type_util.d.ts +1 -1
  179. package/dist/config/type_util.d.ts.map +1 -1
  180. package/dist/env_value.cjs.map +1 -1
  181. package/dist/env_value.d.ts.map +1 -1
  182. package/dist/env_value.js.map +1 -1
  183. package/dist/filters/converters/filterToQuery.cjs +0 -1
  184. package/dist/filters/converters/filterToQuery.cjs.map +1 -1
  185. package/dist/filters/converters/filterToQuery.d.ts.map +1 -1
  186. package/dist/filters/converters/filterToQuery.js.map +1 -1
  187. package/dist/filters/converters/filterUiToExpressionImpl.cjs +0 -1
  188. package/dist/filters/converters/filterUiToExpressionImpl.cjs.map +1 -1
  189. package/dist/filters/converters/filterUiToExpressionImpl.d.ts.map +1 -1
  190. package/dist/filters/converters/filterUiToExpressionImpl.js.map +1 -1
  191. package/dist/filters/converters/index.cjs +5 -2
  192. package/dist/filters/converters/index.d.ts +2 -1
  193. package/dist/filters/converters/index.js +3 -2
  194. package/dist/filters/distill.cjs +1 -2
  195. package/dist/filters/distill.cjs.map +1 -1
  196. package/dist/filters/distill.d.ts.map +1 -1
  197. package/dist/filters/distill.js +1 -1
  198. package/dist/filters/distill.js.map +1 -1
  199. package/dist/filters/index.cjs +7 -3
  200. package/dist/filters/index.d.ts +2 -1
  201. package/dist/filters/index.js +4 -3
  202. package/dist/filters/traverse.cjs.map +1 -1
  203. package/dist/filters/traverse.js.map +1 -1
  204. package/dist/filters/types.d.ts.map +1 -1
  205. package/dist/index.d.ts +1 -1
  206. package/dist/internal.cjs +2 -0
  207. package/dist/internal.cjs.map +1 -1
  208. package/dist/internal.js +1 -1
  209. package/dist/internal.js.map +1 -1
  210. package/dist/labels/derive_distinct_labels.cjs +2 -3
  211. package/dist/labels/derive_distinct_labels.cjs.map +1 -1
  212. package/dist/labels/derive_distinct_labels.d.ts.map +1 -1
  213. package/dist/labels/derive_distinct_labels.js +2 -2
  214. package/dist/labels/derive_distinct_labels.js.map +1 -1
  215. package/dist/labels/derive_distinct_tooltips.cjs +0 -1
  216. package/dist/labels/derive_distinct_tooltips.cjs.map +1 -1
  217. package/dist/labels/derive_distinct_tooltips.d.ts.map +1 -1
  218. package/dist/labels/derive_distinct_tooltips.js.map +1 -1
  219. package/dist/labels/index.cjs +4 -2
  220. package/dist/labels/index.d.ts +2 -1
  221. package/dist/labels/index.js +3 -2
  222. package/dist/package.cjs +1 -1
  223. package/dist/package.js +1 -1
  224. package/dist/pframe.cjs +1 -0
  225. package/dist/pframe.cjs.map +1 -1
  226. package/dist/pframe.d.ts.map +1 -1
  227. package/dist/pframe.js +1 -0
  228. package/dist/pframe.js.map +1 -1
  229. package/dist/pframe_utils/axes.cjs +0 -1
  230. package/dist/pframe_utils/axes.cjs.map +1 -1
  231. package/dist/pframe_utils/axes.d.ts.map +1 -1
  232. package/dist/pframe_utils/axes.js.map +1 -1
  233. package/dist/pframe_utils/columns.cjs +0 -1
  234. package/dist/pframe_utils/columns.cjs.map +1 -1
  235. package/dist/pframe_utils/columns.d.ts.map +1 -1
  236. package/dist/pframe_utils/columns.js.map +1 -1
  237. package/dist/pframe_utils/index.cjs +3 -2
  238. package/dist/pframe_utils/index.cjs.map +1 -1
  239. package/dist/pframe_utils/index.d.ts +1 -1
  240. package/dist/pframe_utils/index.d.ts.map +1 -1
  241. package/dist/pframe_utils/index.js +2 -2
  242. package/dist/pframe_utils/index.js.map +1 -1
  243. package/dist/platforma.d.ts.map +1 -1
  244. package/dist/plugin_handle.cjs.map +1 -1
  245. package/dist/plugin_handle.d.ts.map +1 -1
  246. package/dist/plugin_handle.js.map +1 -1
  247. package/dist/plugin_model.cjs +5 -0
  248. package/dist/plugin_model.cjs.map +1 -1
  249. package/dist/plugin_model.d.ts +1 -1
  250. package/dist/plugin_model.d.ts.map +1 -1
  251. package/dist/plugin_model.js +3 -1
  252. package/dist/plugin_model.js.map +1 -1
  253. package/dist/raw_globals.cjs.map +1 -1
  254. package/dist/raw_globals.d.ts.map +1 -1
  255. package/dist/raw_globals.js.map +1 -1
  256. package/dist/ref_util.cjs.map +1 -1
  257. package/dist/ref_util.d.ts.map +1 -1
  258. package/dist/ref_util.js.map +1 -1
  259. package/dist/render/accessor.cjs +2 -1
  260. package/dist/render/accessor.cjs.map +1 -1
  261. package/dist/render/accessor.d.ts.map +1 -1
  262. package/dist/render/accessor.js +2 -0
  263. package/dist/render/accessor.js.map +1 -1
  264. package/dist/render/api.cjs +5 -2
  265. package/dist/render/api.cjs.map +1 -1
  266. package/dist/render/api.d.ts.map +1 -1
  267. package/dist/render/api.js +4 -1
  268. package/dist/render/api.js.map +1 -1
  269. package/dist/render/future.cjs +2 -0
  270. package/dist/render/future.cjs.map +1 -1
  271. package/dist/render/future.d.ts.map +1 -1
  272. package/dist/render/future.js +2 -0
  273. package/dist/render/future.js.map +1 -1
  274. package/dist/render/index.cjs +34 -7
  275. package/dist/render/index.d.ts +2 -1
  276. package/dist/render/index.js +8 -7
  277. package/dist/render/internal.cjs +3 -0
  278. package/dist/render/internal.cjs.map +1 -1
  279. package/dist/render/internal.d.ts +1 -1
  280. package/dist/render/internal.d.ts.map +1 -1
  281. package/dist/render/internal.js +1 -1
  282. package/dist/render/internal.js.map +1 -1
  283. package/dist/render/traversal_ops.d.ts.map +1 -1
  284. package/dist/render/util/axis_filtering.cjs.map +1 -1
  285. package/dist/render/util/axis_filtering.d.ts.map +1 -1
  286. package/dist/render/util/axis_filtering.js.map +1 -1
  287. package/dist/render/util/column_collection.cjs +2 -1
  288. package/dist/render/util/column_collection.cjs.map +1 -1
  289. package/dist/render/util/column_collection.d.ts.map +1 -1
  290. package/dist/render/util/column_collection.js +1 -0
  291. package/dist/render/util/column_collection.js.map +1 -1
  292. package/dist/render/util/index.cjs +23 -4
  293. package/dist/render/util/index.d.ts +2 -1
  294. package/dist/render/util/index.js +5 -4
  295. package/dist/render/util/label.cjs.map +1 -1
  296. package/dist/render/util/label.d.ts +1 -1
  297. package/dist/render/util/label.d.ts.map +1 -1
  298. package/dist/render/util/label.js.map +1 -1
  299. package/dist/render/util/pcolumn_data.cjs +8 -11
  300. package/dist/render/util/pcolumn_data.cjs.map +1 -1
  301. package/dist/render/util/pcolumn_data.d.ts.map +1 -1
  302. package/dist/render/util/pcolumn_data.js +8 -10
  303. package/dist/render/util/pcolumn_data.js.map +1 -1
  304. package/dist/render/util/pframe_upgraders.cjs.map +1 -1
  305. package/dist/render/util/pframe_upgraders.js.map +1 -1
  306. package/dist/render/util/split_selectors.d.ts +1 -1
  307. package/dist/render/util/split_selectors.d.ts.map +1 -1
  308. package/dist/services/block_services.cjs +0 -1
  309. package/dist/services/block_services.cjs.map +1 -1
  310. package/dist/services/block_services.d.ts +1 -3
  311. package/dist/services/block_services.d.ts.map +1 -1
  312. package/dist/services/block_services.js.map +1 -1
  313. package/dist/services/get_services.cjs.map +1 -1
  314. package/dist/services/get_services.d.ts.map +1 -1
  315. package/dist/services/get_services.js.map +1 -1
  316. package/dist/services/index.cjs +8 -3
  317. package/dist/services/index.d.ts +2 -1
  318. package/dist/services/index.js +4 -3
  319. package/dist/services/service_bridge.cjs.map +1 -1
  320. package/dist/services/service_bridge.d.ts.map +1 -1
  321. package/dist/services/service_bridge.js.map +1 -1
  322. package/dist/services/service_resolve.d.ts.map +1 -1
  323. package/dist/version.cjs.map +1 -1
  324. package/dist/version.d.ts.map +1 -1
  325. package/dist/version.js.map +1 -1
  326. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"filterToQuery.d.ts","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"mappings":";;;;iBAmBgB,yBAAA,cAAuC,cAAA,SAAA,CACrD,MAAA,EAAQ,UAAA,CAAW,IAAA,IAClB,mBAAA"}
1
+ {"version":3,"file":"filterToQuery.d.ts","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"mappings":";;;;iBAmBgB,yBAAA,cAAuC,cAAA,UACrD,MAAA,EAAQ,UAAA,CAAW,IAAA,IAClB,mBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterToQuery.js","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type {\n FilterSpec,\n FilterSpecLeaf,\n PTableColumnId,\n SingleAxisSelector,\n SpecQueryExpression,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"../traverse\";\n\n/** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */\nfunction resolveColumnRef(columnStr: string): SpecQueryExpression {\n const parsed = JSON.parse(columnStr) as PTableColumnId;\n return parsed.type === \"axis\"\n ? { type: \"axisRef\", value: parsed.id as SingleAxisSelector }\n : { type: \"columnRef\", value: parsed.id };\n}\n\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nexport function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: FilterSpec<Leaf>,\n): SpecQueryExpression {\n return traverseFilterSpec(filter, {\n leaf: leafToSpecQueryExpr,\n and: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return { type: \"and\", input: inputs };\n },\n or: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return { type: \"or\", input: inputs };\n },\n not: (input) => ({ type: \"not\", input }),\n });\n}\n\nfunction leafToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: Leaf,\n): SpecQueryExpression {\n switch (filter.type) {\n case \"patternEquals\":\n return {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotEquals\":\n return {\n type: \"not\",\n input: {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternContainSubsequence\":\n return {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotContainSubsequence\":\n return {\n type: \"not\",\n input: {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternMatchesRegularExpression\":\n return {\n type: \"stringRegex\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n };\n case \"patternFuzzyContainSubsequence\":\n return {\n type: \"stringContainsFuzzy\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n maxEdits: filter.maxEdits ?? 1,\n caseInsensitive: false,\n substitutionsOnly: filter.substitutionsOnly ?? false,\n wildcard: filter.wildcard ?? null,\n };\n\n case \"equal\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"notEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ne\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThan\":\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThan\":\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n\n case \"equalToColumn\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: resolveColumnRef(filter.rhs),\n };\n case \"lessThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"lt\", left, right };\n }\n case \"greaterThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"gt\", left, right };\n }\n case \"lessThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"le\", left, right };\n }\n case \"greaterThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"ge\", left, right };\n }\n\n case \"inSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: false,\n };\n case \"notInSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: true,\n };\n\n case \"isNA\":\n return {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n };\n case \"isNotNA\":\n return {\n type: \"not\",\n input: {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n },\n };\n\n case \"ifNa\":\n return {\n type: \"fillNull\",\n input: resolveColumnRef(filter.column),\n replacement: { type: \"constant\", value: filter.replacement },\n };\n\n case \"topN\":\n case \"bottomN\":\n throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\n case undefined:\n throw new Error(\"Filter type is undefined\");\n\n default:\n assertNever(filter);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterToQuery.js","names":[],"sources":["../../../src/filters/converters/filterToQuery.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type {\n FilterSpec,\n FilterSpecLeaf,\n PTableColumnId,\n SingleAxisSelector,\n SpecQueryExpression,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"../traverse\";\n\n/** Parses a CanonicalizedJson<PTableColumnId> string into a SpecQueryExpression reference. */\nfunction resolveColumnRef(columnStr: string): SpecQueryExpression {\n const parsed = JSON.parse(columnStr) as PTableColumnId;\n return parsed.type === \"axis\"\n ? { type: \"axisRef\", value: parsed.id as SingleAxisSelector }\n : { type: \"columnRef\", value: parsed.id };\n}\n\n/** Converts a FilterSpec tree into a SpecQueryExpression. */\nexport function filterSpecToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: FilterSpec<Leaf>,\n): SpecQueryExpression {\n return traverseFilterSpec(filter, {\n leaf: leafToSpecQueryExpr,\n and: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return { type: \"and\", input: inputs };\n },\n or: (inputs) => {\n if (inputs.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return { type: \"or\", input: inputs };\n },\n not: (input) => ({ type: \"not\", input }),\n });\n}\n\nfunction leafToSpecQueryExpr<Leaf extends FilterSpecLeaf<string>>(\n filter: Leaf,\n): SpecQueryExpression {\n switch (filter.type) {\n case \"patternEquals\":\n return {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotEquals\":\n return {\n type: \"not\",\n input: {\n type: \"stringEquals\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternContainSubsequence\":\n return {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n };\n case \"patternNotContainSubsequence\":\n return {\n type: \"not\",\n input: {\n type: \"stringContains\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n caseInsensitive: false,\n },\n };\n case \"patternMatchesRegularExpression\":\n return {\n type: \"stringRegex\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n };\n case \"patternFuzzyContainSubsequence\":\n return {\n type: \"stringContainsFuzzy\",\n input: resolveColumnRef(filter.column),\n value: filter.value,\n maxEdits: filter.maxEdits ?? 1,\n caseInsensitive: false,\n substitutionsOnly: filter.substitutionsOnly ?? false,\n wildcard: filter.wildcard ?? null,\n };\n\n case \"equal\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"notEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ne\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThan\":\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThan\":\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"lessThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n case \"greaterThanOrEqual\":\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: resolveColumnRef(filter.column),\n right: { type: \"constant\", value: filter.x },\n };\n\n case \"equalToColumn\":\n return {\n type: \"numericComparison\",\n operand: \"eq\",\n left: resolveColumnRef(filter.column),\n right: resolveColumnRef(filter.rhs),\n };\n case \"lessThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"lt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"lt\", left, right };\n }\n case \"greaterThanColumn\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"gt\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"gt\", left, right };\n }\n case \"lessThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"le\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"le\", left, right };\n }\n case \"greaterThanColumnOrEqual\": {\n const left = resolveColumnRef(filter.column);\n const right = resolveColumnRef(filter.rhs);\n if (filter.minDiff !== undefined && filter.minDiff !== 0) {\n return {\n type: \"numericComparison\",\n operand: \"ge\",\n left: {\n type: \"numericBinary\",\n operand: \"add\",\n left,\n right: { type: \"constant\", value: filter.minDiff },\n },\n right,\n };\n }\n return { type: \"numericComparison\", operand: \"ge\", left, right };\n }\n\n case \"inSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: false,\n };\n case \"notInSet\":\n return {\n type: \"isIn\",\n input: resolveColumnRef(filter.column),\n set: filter.value,\n negate: true,\n };\n\n case \"isNA\":\n return {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n };\n case \"isNotNA\":\n return {\n type: \"not\",\n input: {\n type: \"isNull\",\n input: resolveColumnRef(filter.column),\n },\n };\n\n case \"ifNa\":\n return {\n type: \"fillNull\",\n input: resolveColumnRef(filter.column),\n replacement: { type: \"constant\", value: filter.replacement },\n };\n\n case \"topN\":\n case \"bottomN\":\n throw new Error(`Filter type \"${filter.type}\" is not supported in query expressions`);\n\n case undefined:\n throw new Error(\"Filter type is undefined\");\n\n default:\n assertNever(filter);\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- require("../../_virtual/_rolldown/runtime.cjs");
2
1
  const require_traverse = require("../traverse.cjs");
3
2
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
4
3
  let _milaboratories_ptabler_expression_js = require("@milaboratories/ptabler-expression-js");
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.cjs","names":["traverseFilterSpec"],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.cjs","names":["traverseFilterSpec"],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.d.ts","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"mappings":";;;;iBAcgB,+BAAA,CAAgC,KAAA,EAAO,UAAA,GAAa,cAAA;AAAA,iBAoFpD,4BAAA,CAA6B,KAAA,EAAO,UAAA,GAAa,UAAA"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.d.ts","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"mappings":";;;;iBAcgB,+BAAA,CAAgC,KAAA,EAAO,UAAA,GAAa,cAAc;AAAA,iBAoFlE,4BAAA,CAA6B,KAAA,EAAO,UAAA,GAAa,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterUiToExpressionImpl.js","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filterUiToExpressionImpl.js","names":[],"sources":["../../../src/filters/converters/filterUiToExpressionImpl.ts"],"sourcesContent":["import { assertNever } from \"@milaboratories/pl-model-common\";\nimport type { FilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport {\n and,\n col,\n lit,\n or,\n rank,\n type Expression,\n type ExpressionImpl,\n} from \"@milaboratories/ptabler-expression-js\";\nimport type { FilterSpec } from \"../types\";\nimport { traverseFilterSpec } from \"../traverse\";\n\nexport function convertFilterUiToExpressionImpl(value: FilterSpec): ExpressionImpl {\n return traverseFilterSpec(value, {\n leaf: leafToExpressionImpl,\n and: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"AND filter requires at least one operand\");\n }\n return and(...expressions);\n },\n or: (expressions) => {\n if (expressions.length === 0) {\n throw new Error(\"OR filter requires at least one operand\");\n }\n return or(...expressions);\n },\n not: (result) => result.not(),\n });\n}\n\nfunction leafToExpressionImpl(value: FilterSpecLeaf): ExpressionImpl {\n switch (value.type) {\n case \"isNA\":\n return col(value.column).isNull();\n case \"isNotNA\":\n return col(value.column).isNotNull();\n case \"patternEquals\":\n return col(value.column).eq(lit(value.value));\n case \"patternNotEquals\":\n return col(value.column).neq(lit(value.value));\n case \"patternContainSubsequence\":\n return col(value.column).strContains(value.value, false, true);\n case \"patternNotContainSubsequence\":\n return col(value.column).strContains(value.value, false, true).not();\n case \"equal\":\n return col(value.column).eq(lit(value.x));\n case \"notEqual\":\n return col(value.column).neq(lit(value.x));\n case \"lessThan\":\n return col(value.column).lt(lit(value.x));\n case \"greaterThan\":\n return col(value.column).gt(lit(value.x));\n case \"lessThanOrEqual\":\n return col(value.column).le(lit(value.x));\n case \"greaterThanOrEqual\":\n return col(value.column).ge(lit(value.x));\n case \"equalToColumn\":\n return col(value.column).eq(col(value.rhs));\n case \"greaterThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).gt(col(value.rhs));\n }\n return col(value.column).gt(col(value.rhs));\n case \"lessThanColumn\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).lt(col(value.rhs));\n }\n return col(value.column).lt(col(value.rhs));\n case \"greaterThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).ge(col(value.rhs));\n }\n return col(value.column).ge(col(value.rhs));\n case \"lessThanColumnOrEqual\":\n if (value.minDiff !== undefined && value.minDiff !== 0) {\n return col(value.column).plus(lit(value.minDiff)).le(col(value.rhs));\n }\n return col(value.column).le(col(value.rhs));\n case \"topN\":\n return rank(col(value.column), true).over([]).le(lit(value.n));\n case \"bottomN\":\n return rank(col(value.column), false).over([]).le(lit(value.n));\n case \"patternMatchesRegularExpression\":\n case \"patternFuzzyContainSubsequence\":\n case \"inSet\":\n case \"notInSet\":\n case \"ifNa\":\n throw new Error(\"Not implemented filter type: \" + value.type);\n case undefined:\n throw new Error(\"Filter type is undefined, this should not happen\");\n default:\n assertNever(value);\n }\n}\n\nexport function convertFilterUiToExpressions(value: FilterSpec): Expression {\n return convertFilterUiToExpressionImpl(value).toJSON();\n}\n"],"mappings":"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"}
@@ -1,2 +1,5 @@
1
- require("./filterToQuery.cjs");
2
- require("./filterUiToExpressionImpl.cjs");
1
+ const require_filterToQuery = require("./filterToQuery.cjs");
2
+ const require_filterUiToExpressionImpl = require("./filterUiToExpressionImpl.cjs");
3
+ exports.convertFilterUiToExpressionImpl = require_filterUiToExpressionImpl.convertFilterUiToExpressionImpl;
4
+ exports.convertFilterUiToExpressions = require_filterUiToExpressionImpl.convertFilterUiToExpressions;
5
+ exports.filterSpecToSpecQueryExpr = require_filterToQuery.filterSpecToSpecQueryExpr;
@@ -1,2 +1,3 @@
1
1
  import { filterSpecToSpecQueryExpr } from "./filterToQuery.js";
2
- import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./filterUiToExpressionImpl.js";
2
+ import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./filterUiToExpressionImpl.js";
3
+ export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions, filterSpecToSpecQueryExpr };
@@ -1,2 +1,3 @@
1
- import "./filterToQuery.js";
2
- import "./filterUiToExpressionImpl.js";
1
+ import { filterSpecToSpecQueryExpr } from "./filterToQuery.js";
2
+ import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./filterUiToExpressionImpl.js";
3
+ export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions, filterSpecToSpecQueryExpr };
@@ -1,4 +1,3 @@
1
- require("../_virtual/_rolldown/runtime.cjs");
2
1
  const require_traverse = require("./traverse.cjs");
3
2
  let _milaboratories_helpers = require("@milaboratories/helpers");
4
3
  let es_toolkit_compat = require("es-toolkit/compat");
@@ -66,7 +65,7 @@ function isFilledValue(value) {
66
65
  return Object.values(value).every(isFilledValue);
67
66
  }
68
67
  }
69
- const KNOWN_LEAF_KEYS = new Set([
68
+ const KNOWN_LEAF_KEYS = /* @__PURE__ */ new Set([
70
69
  "n",
71
70
  "x",
72
71
  "rhs",
@@ -1 +1 @@
1
- {"version":3,"file":"distill.cjs","names":["traverseFilterSpec"],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, isNil, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/** Returns true if the leaf is filled — type is defined and every required field per-type is filled. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (isNil(node.type)) return false;\n const required = REQUIRED_KEYS_BY_TYPE[node.type];\n const record = node as Record<string, unknown>;\n return required.every((key) => isFilledValue(record[key]));\n}\n\n/**\n * Returns true if the value is considered \"filled\":\n * - primitives (number, boolean): always true\n * - string: non-empty after trim\n * - array: non-empty AND every item is filled\n * - plain object: non-empty AND every field value is filled\n * - null/undefined: false\n */\nfunction isFilledValue(value: unknown): boolean {\n if (isNil(value)) return false;\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return true;\n case \"string\":\n return value.trim() !== \"\";\n default:\n if (isEmpty(value)) return false;\n if (Array.isArray(value)) return value.every(isFilledValue);\n return Object.values(value as Record<string, unknown>).every(isFilledValue);\n }\n}\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Leaf type discriminators (excludes the placeholder `undefined` variant). */\ntype FilterSpecLeafType = Exclude<FilterSpecLeaf<unknown>, { type: undefined }>[\"type\"];\n\ntype LeafOfType<T extends FilterSpecLeafType> = Extract<FilterSpecLeaf<unknown>, { type: T }>;\n\ntype RequiredKeys<O> = { [K in keyof O]-?: {} extends Pick<O, K> ? never : K }[keyof O];\n\n/** Required field keys of a given leaf variant (excluding the `type` discriminator). */\ntype RequiredLeafKeys<T extends FilterSpecLeafType> = Exclude<RequiredKeys<LeafOfType<T>>, \"type\">;\n\n/** Exact per-type shape — adding a key not required by that variant becomes a type error. */\ntype RequiredKeysByType = { readonly [T in FilterSpecLeafType]: readonly RequiredLeafKeys<T>[] };\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Required fields per leaf type. Optional fields (e.g. minDiff, maxEdits) excluded. */\nconst REQUIRED_KEYS_BY_TYPE = {\n isNA: [\"column\"],\n isNotNA: [\"column\"],\n ifNa: [\"column\", \"replacement\"],\n patternEquals: [\"column\", \"value\"],\n patternNotEquals: [\"column\", \"value\"],\n patternContainSubsequence: [\"column\", \"value\"],\n patternNotContainSubsequence: [\"column\", \"value\"],\n patternMatchesRegularExpression: [\"column\", \"value\"],\n patternFuzzyContainSubsequence: [\"column\", \"value\"],\n inSet: [\"column\", \"value\"],\n notInSet: [\"column\", \"value\"],\n topN: [\"column\", \"n\"],\n bottomN: [\"column\", \"n\"],\n equal: [\"column\", \"x\"],\n notEqual: [\"column\", \"x\"],\n lessThan: [\"column\", \"x\"],\n greaterThan: [\"column\", \"x\"],\n lessThanOrEqual: [\"column\", \"x\"],\n greaterThanOrEqual: [\"column\", \"x\"],\n equalToColumn: [\"column\", \"rhs\"],\n lessThanColumn: [\"column\", \"rhs\"],\n greaterThanColumn: [\"column\", \"rhs\"],\n lessThanColumnOrEqual: [\"column\", \"rhs\"],\n greaterThanColumnOrEqual: [\"column\", \"rhs\"],\n} as const satisfies RequiredKeysByType;\n"],"mappings":";;;;;;;;;AAcA,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAOA,iBAAAA,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;AAIT,SAAS,aAAgB,MAAkC;AACzD,MAAA,GAAA,wBAAA,OAAU,KAAK,KAAK,CAAE,QAAO;CAC7B,MAAM,WAAW,sBAAsB,KAAK;CAC5C,MAAM,SAAS;AACf,QAAO,SAAS,OAAO,QAAQ,cAAc,OAAO,KAAK,CAAC;;;;;;;;;;AAW5D,SAAS,cAAc,OAAyB;AAC9C,MAAA,GAAA,wBAAA,OAAU,MAAM,CAAE,QAAO;AACzB,SAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK,UACH,QAAO;EACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;EAC1B;AACE,QAAA,GAAA,kBAAA,SAAY,MAAM,CAAE,QAAO;AAC3B,OAAI,MAAM,QAAQ,MAAM,CAAE,QAAO,MAAM,MAAM,cAAc;AAC3D,UAAO,OAAO,OAAO,MAAiC,CAAC,MAAM,cAAc;;;AAkCjF,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,MAAM,wBAAwB;CAC5B,MAAM,CAAC,SAAS;CAChB,SAAS,CAAC,SAAS;CACnB,MAAM,CAAC,UAAU,cAAc;CAC/B,eAAe,CAAC,UAAU,QAAQ;CAClC,kBAAkB,CAAC,UAAU,QAAQ;CACrC,2BAA2B,CAAC,UAAU,QAAQ;CAC9C,8BAA8B,CAAC,UAAU,QAAQ;CACjD,iCAAiC,CAAC,UAAU,QAAQ;CACpD,gCAAgC,CAAC,UAAU,QAAQ;CACnD,OAAO,CAAC,UAAU,QAAQ;CAC1B,UAAU,CAAC,UAAU,QAAQ;CAC7B,MAAM,CAAC,UAAU,IAAI;CACrB,SAAS,CAAC,UAAU,IAAI;CACxB,OAAO,CAAC,UAAU,IAAI;CACtB,UAAU,CAAC,UAAU,IAAI;CACzB,UAAU,CAAC,UAAU,IAAI;CACzB,aAAa,CAAC,UAAU,IAAI;CAC5B,iBAAiB,CAAC,UAAU,IAAI;CAChC,oBAAoB,CAAC,UAAU,IAAI;CACnC,eAAe,CAAC,UAAU,MAAM;CAChC,gBAAgB,CAAC,UAAU,MAAM;CACjC,mBAAmB,CAAC,UAAU,MAAM;CACpC,uBAAuB,CAAC,UAAU,MAAM;CACxC,0BAA0B,CAAC,UAAU,MAAM;CAC5C"}
1
+ {"version":3,"file":"distill.cjs","names":["traverseFilterSpec"],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, isNil, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/** Returns true if the leaf is filled — type is defined and every required field per-type is filled. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (isNil(node.type)) return false;\n const required = REQUIRED_KEYS_BY_TYPE[node.type];\n const record = node as Record<string, unknown>;\n return required.every((key) => isFilledValue(record[key]));\n}\n\n/**\n * Returns true if the value is considered \"filled\":\n * - primitives (number, boolean): always true\n * - string: non-empty after trim\n * - array: non-empty AND every item is filled\n * - plain object: non-empty AND every field value is filled\n * - null/undefined: false\n */\nfunction isFilledValue(value: unknown): boolean {\n if (isNil(value)) return false;\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return true;\n case \"string\":\n return value.trim() !== \"\";\n default:\n if (isEmpty(value)) return false;\n if (Array.isArray(value)) return value.every(isFilledValue);\n return Object.values(value as Record<string, unknown>).every(isFilledValue);\n }\n}\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Leaf type discriminators (excludes the placeholder `undefined` variant). */\ntype FilterSpecLeafType = Exclude<FilterSpecLeaf<unknown>, { type: undefined }>[\"type\"];\n\ntype LeafOfType<T extends FilterSpecLeafType> = Extract<FilterSpecLeaf<unknown>, { type: T }>;\n\ntype RequiredKeys<O> = { [K in keyof O]-?: {} extends Pick<O, K> ? never : K }[keyof O];\n\n/** Required field keys of a given leaf variant (excluding the `type` discriminator). */\ntype RequiredLeafKeys<T extends FilterSpecLeafType> = Exclude<RequiredKeys<LeafOfType<T>>, \"type\">;\n\n/** Exact per-type shape — adding a key not required by that variant becomes a type error. */\ntype RequiredKeysByType = { readonly [T in FilterSpecLeafType]: readonly RequiredLeafKeys<T>[] };\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Required fields per leaf type. Optional fields (e.g. minDiff, maxEdits) excluded. */\nconst REQUIRED_KEYS_BY_TYPE = {\n isNA: [\"column\"],\n isNotNA: [\"column\"],\n ifNa: [\"column\", \"replacement\"],\n patternEquals: [\"column\", \"value\"],\n patternNotEquals: [\"column\", \"value\"],\n patternContainSubsequence: [\"column\", \"value\"],\n patternNotContainSubsequence: [\"column\", \"value\"],\n patternMatchesRegularExpression: [\"column\", \"value\"],\n patternFuzzyContainSubsequence: [\"column\", \"value\"],\n inSet: [\"column\", \"value\"],\n notInSet: [\"column\", \"value\"],\n topN: [\"column\", \"n\"],\n bottomN: [\"column\", \"n\"],\n equal: [\"column\", \"x\"],\n notEqual: [\"column\", \"x\"],\n lessThan: [\"column\", \"x\"],\n greaterThan: [\"column\", \"x\"],\n lessThanOrEqual: [\"column\", \"x\"],\n greaterThanOrEqual: [\"column\", \"x\"],\n equalToColumn: [\"column\", \"rhs\"],\n lessThanColumn: [\"column\", \"rhs\"],\n greaterThanColumn: [\"column\", \"rhs\"],\n lessThanColumnOrEqual: [\"column\", \"rhs\"],\n greaterThanColumnOrEqual: [\"column\", \"rhs\"],\n} as const satisfies RequiredKeysByType;\n"],"mappings":";;;;;;;;AAcA,SAAgB,kBAKd,QAAyC;CACzC,IAAI,UAAU,MAAM,OAAO;CAC3B,OAAOA,iBAAAA,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,IAAI;GAClC,OAAO,aAAa,SAAS,IAAK,YAAkB;EACtD;EACA,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,IAAI;GAC7E,OAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;GAAS;EAC1E;EACA,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,IAAI;GAC7E,OAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;GAAS;EACzE;EACA,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;EAAO;CAC5E,CAAC;AACH;AAEA,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,CAAC;CACzC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAC5C,IAAI,gBAAgB,IAAI,GAAwB,GAC9C,OAAO,OAAO;CAGlB,OAAO;AACT;;AAGA,SAAS,aAAgB,MAAkC;CACzD,KAAA,GAAA,wBAAA,MAAA,CAAU,KAAK,IAAI,GAAG,OAAO;CAC7B,MAAM,WAAW,sBAAsB,KAAK;CAC5C,MAAM,SAAS;CACf,OAAO,SAAS,OAAO,QAAQ,cAAc,OAAO,IAAI,CAAC;AAC3D;;;;;;;;;AAUA,SAAS,cAAc,OAAyB;CAC9C,KAAA,GAAA,wBAAA,MAAA,CAAU,KAAK,GAAG,OAAO;CACzB,QAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,OAAO,MAAM,KAAK,MAAM;EAC1B;GACE,KAAA,GAAA,kBAAA,QAAA,CAAY,KAAK,GAAG,OAAO;GAC3B,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,MAAM,aAAa;GAC1D,OAAO,OAAO,OAAO,KAAgC,CAAC,CAAC,MAAM,aAAa;CAC9E;AACF;AAgCA,MAAM,kCAA0C,IAAI,IAAI;CAZtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAE0E,CAAC;;AAG7E,MAAM,wBAAwB;CAC5B,MAAM,CAAC,QAAQ;CACf,SAAS,CAAC,QAAQ;CAClB,MAAM,CAAC,UAAU,aAAa;CAC9B,eAAe,CAAC,UAAU,OAAO;CACjC,kBAAkB,CAAC,UAAU,OAAO;CACpC,2BAA2B,CAAC,UAAU,OAAO;CAC7C,8BAA8B,CAAC,UAAU,OAAO;CAChD,iCAAiC,CAAC,UAAU,OAAO;CACnD,gCAAgC,CAAC,UAAU,OAAO;CAClD,OAAO,CAAC,UAAU,OAAO;CACzB,UAAU,CAAC,UAAU,OAAO;CAC5B,MAAM,CAAC,UAAU,GAAG;CACpB,SAAS,CAAC,UAAU,GAAG;CACvB,OAAO,CAAC,UAAU,GAAG;CACrB,UAAU,CAAC,UAAU,GAAG;CACxB,UAAU,CAAC,UAAU,GAAG;CACxB,aAAa,CAAC,UAAU,GAAG;CAC3B,iBAAiB,CAAC,UAAU,GAAG;CAC/B,oBAAoB,CAAC,UAAU,GAAG;CAClC,eAAe,CAAC,UAAU,KAAK;CAC/B,gBAAgB,CAAC,UAAU,KAAK;CAChC,mBAAmB,CAAC,UAAU,KAAK;CACnC,uBAAuB,CAAC,UAAU,KAAK;CACvC,0BAA0B,CAAC,UAAU,KAAK;AAC5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"distill.d.ts","names":[],"sources":["../../src/filters/distill.ts"],"mappings":";;;;AAcA;;;iBAAgB,iBAAA,YACH,UAAA,CAAW,cAAA,yCACZ,EAAA,SAAW,cAAA,CAAe,cAAA,+BAChC,cAAA,CAAe,mBAAA,CAAoB,EAAA,KACnC,UAAA,CAAW,mBAAA,CAAoB,EAAA,IAAA,CACnC,MAAA,qBAA2B,EAAA,UAAY,CAAA"}
1
+ {"version":3,"file":"distill.d.ts","names":[],"sources":["../../src/filters/distill.ts"],"mappings":";;;;AAcA;;;iBAAgB,iBAAA,YACH,UAAA,CAAW,cAAA,yCACZ,EAAA,SAAW,cAAA,CAAe,cAAA,+BAChC,cAAA,CAAe,mBAAA,CAAoB,EAAA,KACnC,UAAA,CAAW,mBAAA,CAAoB,EAAA,KACnC,MAAA,qBAA2B,EAAA,UAAY,CAAA"}
@@ -65,7 +65,7 @@ function isFilledValue(value) {
65
65
  return Object.values(value).every(isFilledValue);
66
66
  }
67
67
  }
68
- const KNOWN_LEAF_KEYS = new Set([
68
+ const KNOWN_LEAF_KEYS = /* @__PURE__ */ new Set([
69
69
  "n",
70
70
  "x",
71
71
  "rhs",
@@ -1 +1 @@
1
- {"version":3,"file":"distill.js","names":[],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, isNil, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/** Returns true if the leaf is filled — type is defined and every required field per-type is filled. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (isNil(node.type)) return false;\n const required = REQUIRED_KEYS_BY_TYPE[node.type];\n const record = node as Record<string, unknown>;\n return required.every((key) => isFilledValue(record[key]));\n}\n\n/**\n * Returns true if the value is considered \"filled\":\n * - primitives (number, boolean): always true\n * - string: non-empty after trim\n * - array: non-empty AND every item is filled\n * - plain object: non-empty AND every field value is filled\n * - null/undefined: false\n */\nfunction isFilledValue(value: unknown): boolean {\n if (isNil(value)) return false;\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return true;\n case \"string\":\n return value.trim() !== \"\";\n default:\n if (isEmpty(value)) return false;\n if (Array.isArray(value)) return value.every(isFilledValue);\n return Object.values(value as Record<string, unknown>).every(isFilledValue);\n }\n}\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Leaf type discriminators (excludes the placeholder `undefined` variant). */\ntype FilterSpecLeafType = Exclude<FilterSpecLeaf<unknown>, { type: undefined }>[\"type\"];\n\ntype LeafOfType<T extends FilterSpecLeafType> = Extract<FilterSpecLeaf<unknown>, { type: T }>;\n\ntype RequiredKeys<O> = { [K in keyof O]-?: {} extends Pick<O, K> ? never : K }[keyof O];\n\n/** Required field keys of a given leaf variant (excluding the `type` discriminator). */\ntype RequiredLeafKeys<T extends FilterSpecLeafType> = Exclude<RequiredKeys<LeafOfType<T>>, \"type\">;\n\n/** Exact per-type shape — adding a key not required by that variant becomes a type error. */\ntype RequiredKeysByType = { readonly [T in FilterSpecLeafType]: readonly RequiredLeafKeys<T>[] };\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Required fields per leaf type. Optional fields (e.g. minDiff, maxEdits) excluded. */\nconst REQUIRED_KEYS_BY_TYPE = {\n isNA: [\"column\"],\n isNotNA: [\"column\"],\n ifNa: [\"column\", \"replacement\"],\n patternEquals: [\"column\", \"value\"],\n patternNotEquals: [\"column\", \"value\"],\n patternContainSubsequence: [\"column\", \"value\"],\n patternNotContainSubsequence: [\"column\", \"value\"],\n patternMatchesRegularExpression: [\"column\", \"value\"],\n patternFuzzyContainSubsequence: [\"column\", \"value\"],\n inSet: [\"column\", \"value\"],\n notInSet: [\"column\", \"value\"],\n topN: [\"column\", \"n\"],\n bottomN: [\"column\", \"n\"],\n equal: [\"column\", \"x\"],\n notEqual: [\"column\", \"x\"],\n lessThan: [\"column\", \"x\"],\n greaterThan: [\"column\", \"x\"],\n lessThanOrEqual: [\"column\", \"x\"],\n greaterThanOrEqual: [\"column\", \"x\"],\n equalToColumn: [\"column\", \"rhs\"],\n lessThanColumn: [\"column\", \"rhs\"],\n greaterThanColumn: [\"column\", \"rhs\"],\n lessThanColumnOrEqual: [\"column\", \"rhs\"],\n greaterThanColumnOrEqual: [\"column\", \"rhs\"],\n} as const satisfies RequiredKeysByType;\n"],"mappings":";;;;;;;;AAcA,SAAgB,kBAKd,QAAyC;AACzC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAO,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,KAAK;AACnC,UAAO,aAAa,UAAU,GAAI,YAAkB;;EAEtD,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;IAAU;;EAE3E,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,KAAK;AAC9E,UAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;IAAU;;EAE1E,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;GAAQ;EAC5E,CAAC;;AAGJ,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,CAC7C,KAAI,gBAAgB,IAAI,IAAyB,CAC/C,QAAO,OAAO;AAGlB,QAAO;;;AAIT,SAAS,aAAgB,MAAkC;AACzD,KAAI,MAAM,KAAK,KAAK,CAAE,QAAO;CAC7B,MAAM,WAAW,sBAAsB,KAAK;CAC5C,MAAM,SAAS;AACf,QAAO,SAAS,OAAO,QAAQ,cAAc,OAAO,KAAK,CAAC;;;;;;;;;;AAW5D,SAAS,cAAc,OAAyB;AAC9C,KAAI,MAAM,MAAM,CAAE,QAAO;AACzB,SAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK,UACH,QAAO;EACT,KAAK,SACH,QAAO,MAAM,MAAM,KAAK;EAC1B;AACE,OAAI,QAAQ,MAAM,CAAE,QAAO;AAC3B,OAAI,MAAM,QAAQ,MAAM,CAAE,QAAO,MAAM,MAAM,cAAc;AAC3D,UAAO,OAAO,OAAO,MAAiC,CAAC,MAAM,cAAc;;;AAkCjF,MAAM,kBAA0C,IAAI,IAbY;CAC9D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAC6E;;AAG9E,MAAM,wBAAwB;CAC5B,MAAM,CAAC,SAAS;CAChB,SAAS,CAAC,SAAS;CACnB,MAAM,CAAC,UAAU,cAAc;CAC/B,eAAe,CAAC,UAAU,QAAQ;CAClC,kBAAkB,CAAC,UAAU,QAAQ;CACrC,2BAA2B,CAAC,UAAU,QAAQ;CAC9C,8BAA8B,CAAC,UAAU,QAAQ;CACjD,iCAAiC,CAAC,UAAU,QAAQ;CACpD,gCAAgC,CAAC,UAAU,QAAQ;CACnD,OAAO,CAAC,UAAU,QAAQ;CAC1B,UAAU,CAAC,UAAU,QAAQ;CAC7B,MAAM,CAAC,UAAU,IAAI;CACrB,SAAS,CAAC,UAAU,IAAI;CACxB,OAAO,CAAC,UAAU,IAAI;CACtB,UAAU,CAAC,UAAU,IAAI;CACzB,UAAU,CAAC,UAAU,IAAI;CACzB,aAAa,CAAC,UAAU,IAAI;CAC5B,iBAAiB,CAAC,UAAU,IAAI;CAChC,oBAAoB,CAAC,UAAU,IAAI;CACnC,eAAe,CAAC,UAAU,MAAM;CAChC,gBAAgB,CAAC,UAAU,MAAM;CACjC,mBAAmB,CAAC,UAAU,MAAM;CACpC,uBAAuB,CAAC,UAAU,MAAM;CACxC,0BAA0B,CAAC,UAAU,MAAM;CAC5C"}
1
+ {"version":3,"file":"distill.js","names":[],"sources":["../../src/filters/distill.ts"],"sourcesContent":["import { DistributiveKeys, isNil, UnionToTuples } from \"@milaboratories/helpers\";\nimport {\n RootFilterSpec,\n type FilterSpec,\n type FilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\nimport { traverseFilterSpec } from \"./traverse\";\nimport { InferFilterSpecLeaf } from \"@milaboratories/pl-model-common\";\nimport { isEmpty } from \"es-toolkit/compat\";\n\n/**\n * Strips non-FilterSpec metadata (whitelist approach) and removes\n * unfilled leaves (type is undefined or any required field is undefined).\n */\nexport function distillFilterSpec<\n FS extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends FS extends RootFilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>\n ? RootFilterSpec<InferFilterSpecLeaf<FS>>\n : FilterSpec<InferFilterSpecLeaf<FS>>,\n>(filter: null | undefined | FS): null | R {\n if (filter == null) return null;\n return traverseFilterSpec<FS, null | R>(filter, {\n leaf: (leaf) => {\n const distilled = distillLeaf(leaf);\n return isFilledLeaf(distilled) ? (distilled as R) : null;\n },\n and: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"and\", filters: filtered } as R);\n },\n or: (results) => {\n const filtered = results.filter((f): f is NonNullable<typeof f> => f !== null);\n return filtered.length === 0 ? null : ({ type: \"or\", filters: filtered } as R);\n },\n not: (result) => (result === null ? null : ({ type: \"not\", filter: result } as R)),\n });\n}\n\nfunction distillLeaf<T>(node: FilterSpecLeaf<T>): FilterSpecLeaf<T> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(node)) {\n if (KNOWN_LEAF_KEYS.has(key as FilterSpecLeafKey)) {\n result[key] = value;\n }\n }\n return result as FilterSpecLeaf<T>;\n}\n\n/** Returns true if the leaf is filled — type is defined and every required field per-type is filled. */\nfunction isFilledLeaf<T>(node: FilterSpecLeaf<T>): boolean {\n if (isNil(node.type)) return false;\n const required = REQUIRED_KEYS_BY_TYPE[node.type];\n const record = node as Record<string, unknown>;\n return required.every((key) => isFilledValue(record[key]));\n}\n\n/**\n * Returns true if the value is considered \"filled\":\n * - primitives (number, boolean): always true\n * - string: non-empty after trim\n * - array: non-empty AND every item is filled\n * - plain object: non-empty AND every field value is filled\n * - null/undefined: false\n */\nfunction isFilledValue(value: unknown): boolean {\n if (isNil(value)) return false;\n switch (typeof value) {\n case \"number\":\n case \"boolean\":\n return true;\n case \"string\":\n return value.trim() !== \"\";\n default:\n if (isEmpty(value)) return false;\n if (Array.isArray(value)) return value.every(isFilledValue);\n return Object.values(value as Record<string, unknown>).every(isFilledValue);\n }\n}\n\n/** All possible field names that can appear in any FilterSpecLeaf variant. */\ntype FilterSpecLeafKey = DistributiveKeys<FilterSpecLeaf<string>>;\n\n/** Leaf type discriminators (excludes the placeholder `undefined` variant). */\ntype FilterSpecLeafType = Exclude<FilterSpecLeaf<unknown>, { type: undefined }>[\"type\"];\n\ntype LeafOfType<T extends FilterSpecLeafType> = Extract<FilterSpecLeaf<unknown>, { type: T }>;\n\ntype RequiredKeys<O> = { [K in keyof O]-?: {} extends Pick<O, K> ? never : K }[keyof O];\n\n/** Required field keys of a given leaf variant (excluding the `type` discriminator). */\ntype RequiredLeafKeys<T extends FilterSpecLeafType> = Exclude<RequiredKeys<LeafOfType<T>>, \"type\">;\n\n/** Exact per-type shape — adding a key not required by that variant becomes a type error. */\ntype RequiredKeysByType = { readonly [T in FilterSpecLeafType]: readonly RequiredLeafKeys<T>[] };\n\n/** Compile-time check: every key in the tuple is a valid leaf key (via satisfies). */\nconst KNOWN_LEAF_KEYS_TUPLE: UnionToTuples<FilterSpecLeafKey> = [\n \"n\",\n \"x\",\n \"rhs\",\n \"type\",\n \"value\",\n \"column\",\n \"minDiff\",\n \"maxEdits\",\n \"wildcard\",\n \"replacement\",\n \"substitutionsOnly\",\n];\nconst KNOWN_LEAF_KEYS: Set<FilterSpecLeafKey> = new Set(KNOWN_LEAF_KEYS_TUPLE);\n\n/** Required fields per leaf type. Optional fields (e.g. minDiff, maxEdits) excluded. */\nconst REQUIRED_KEYS_BY_TYPE = {\n isNA: [\"column\"],\n isNotNA: [\"column\"],\n ifNa: [\"column\", \"replacement\"],\n patternEquals: [\"column\", \"value\"],\n patternNotEquals: [\"column\", \"value\"],\n patternContainSubsequence: [\"column\", \"value\"],\n patternNotContainSubsequence: [\"column\", \"value\"],\n patternMatchesRegularExpression: [\"column\", \"value\"],\n patternFuzzyContainSubsequence: [\"column\", \"value\"],\n inSet: [\"column\", \"value\"],\n notInSet: [\"column\", \"value\"],\n topN: [\"column\", \"n\"],\n bottomN: [\"column\", \"n\"],\n equal: [\"column\", \"x\"],\n notEqual: [\"column\", \"x\"],\n lessThan: [\"column\", \"x\"],\n greaterThan: [\"column\", \"x\"],\n lessThanOrEqual: [\"column\", \"x\"],\n greaterThanOrEqual: [\"column\", \"x\"],\n equalToColumn: [\"column\", \"rhs\"],\n lessThanColumn: [\"column\", \"rhs\"],\n greaterThanColumn: [\"column\", \"rhs\"],\n lessThanColumnOrEqual: [\"column\", \"rhs\"],\n greaterThanColumnOrEqual: [\"column\", \"rhs\"],\n} as const satisfies RequiredKeysByType;\n"],"mappings":";;;;;;;;AAcA,SAAgB,kBAKd,QAAyC;CACzC,IAAI,UAAU,MAAM,OAAO;CAC3B,OAAO,mBAAiC,QAAQ;EAC9C,OAAO,SAAS;GACd,MAAM,YAAY,YAAY,IAAI;GAClC,OAAO,aAAa,SAAS,IAAK,YAAkB;EACtD;EACA,MAAM,YAAY;GAChB,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,IAAI;GAC7E,OAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAO,SAAS;GAAS;EAC1E;EACA,KAAK,YAAY;GACf,MAAM,WAAW,QAAQ,QAAQ,MAAkC,MAAM,IAAI;GAC7E,OAAO,SAAS,WAAW,IAAI,OAAQ;IAAE,MAAM;IAAM,SAAS;GAAS;EACzE;EACA,MAAM,WAAY,WAAW,OAAO,OAAQ;GAAE,MAAM;GAAO,QAAQ;EAAO;CAC5E,CAAC;AACH;AAEA,SAAS,YAAe,MAA4C;CAClE,MAAM,SAAkC,CAAC;CACzC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,IAAI,GAC5C,IAAI,gBAAgB,IAAI,GAAwB,GAC9C,OAAO,OAAO;CAGlB,OAAO;AACT;;AAGA,SAAS,aAAgB,MAAkC;CACzD,IAAI,MAAM,KAAK,IAAI,GAAG,OAAO;CAC7B,MAAM,WAAW,sBAAsB,KAAK;CAC5C,MAAM,SAAS;CACf,OAAO,SAAS,OAAO,QAAQ,cAAc,OAAO,IAAI,CAAC;AAC3D;;;;;;;;;AAUA,SAAS,cAAc,OAAyB;CAC9C,IAAI,MAAM,KAAK,GAAG,OAAO;CACzB,QAAQ,OAAO,OAAf;EACE,KAAK;EACL,KAAK,WACH,OAAO;EACT,KAAK,UACH,OAAO,MAAM,KAAK,MAAM;EAC1B;GACE,IAAI,QAAQ,KAAK,GAAG,OAAO;GAC3B,IAAI,MAAM,QAAQ,KAAK,GAAG,OAAO,MAAM,MAAM,aAAa;GAC1D,OAAO,OAAO,OAAO,KAAgC,CAAC,CAAC,MAAM,aAAa;CAC9E;AACF;AAgCA,MAAM,kCAA0C,IAAI,IAAI;CAZtD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAE0E,CAAC;;AAG7E,MAAM,wBAAwB;CAC5B,MAAM,CAAC,QAAQ;CACf,SAAS,CAAC,QAAQ;CAClB,MAAM,CAAC,UAAU,aAAa;CAC9B,eAAe,CAAC,UAAU,OAAO;CACjC,kBAAkB,CAAC,UAAU,OAAO;CACpC,2BAA2B,CAAC,UAAU,OAAO;CAC7C,8BAA8B,CAAC,UAAU,OAAO;CAChD,iCAAiC,CAAC,UAAU,OAAO;CACnD,gCAAgC,CAAC,UAAU,OAAO;CAClD,OAAO,CAAC,UAAU,OAAO;CACzB,UAAU,CAAC,UAAU,OAAO;CAC5B,MAAM,CAAC,UAAU,GAAG;CACpB,SAAS,CAAC,UAAU,GAAG;CACvB,OAAO,CAAC,UAAU,GAAG;CACrB,UAAU,CAAC,UAAU,GAAG;CACxB,UAAU,CAAC,UAAU,GAAG;CACxB,aAAa,CAAC,UAAU,GAAG;CAC3B,iBAAiB,CAAC,UAAU,GAAG;CAC/B,oBAAoB,CAAC,UAAU,GAAG;CAClC,eAAe,CAAC,UAAU,KAAK;CAC/B,gBAAgB,CAAC,UAAU,KAAK;CAChC,mBAAmB,CAAC,UAAU,KAAK;CACnC,uBAAuB,CAAC,UAAU,KAAK;CACvC,0BAA0B,CAAC,UAAU,KAAK;AAC5C"}
@@ -1,4 +1,8 @@
1
- require("./converters/filterToQuery.cjs");
2
- require("./converters/filterUiToExpressionImpl.cjs");
1
+ const require_filterToQuery = require("./converters/filterToQuery.cjs");
2
+ const require_filterUiToExpressionImpl = require("./converters/filterUiToExpressionImpl.cjs");
3
3
  require("./converters/index.cjs");
4
- require("./distill.cjs");
4
+ const require_distill = require("./distill.cjs");
5
+ exports.convertFilterUiToExpressionImpl = require_filterUiToExpressionImpl.convertFilterUiToExpressionImpl;
6
+ exports.convertFilterUiToExpressions = require_filterUiToExpressionImpl.convertFilterUiToExpressions;
7
+ exports.distillFilterSpec = require_distill.distillFilterSpec;
8
+ exports.filterSpecToSpecQueryExpr = require_filterToQuery.filterSpecToSpecQueryExpr;
@@ -1,4 +1,5 @@
1
1
  import { filterSpecToSpecQueryExpr } from "./converters/filterToQuery.js";
2
2
  import { FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry } from "./types.js";
3
3
  import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./converters/filterUiToExpressionImpl.js";
4
- import { distillFilterSpec } from "./distill.js";
4
+ import { distillFilterSpec } from "./distill.js";
5
+ export { type FilterSpec, type FilterSpecLeaf, type FilterSpecNode, type FilterSpecOfType, type FilterSpecType, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, distillFilterSpec, filterSpecToSpecQueryExpr };
@@ -1,4 +1,5 @@
1
- import "./converters/filterToQuery.js";
2
- import "./converters/filterUiToExpressionImpl.js";
1
+ import { filterSpecToSpecQueryExpr } from "./converters/filterToQuery.js";
2
+ import { convertFilterUiToExpressionImpl, convertFilterUiToExpressions } from "./converters/filterUiToExpressionImpl.js";
3
3
  import "./converters/index.js";
4
- import "./distill.js";
4
+ import { distillFilterSpec } from "./distill.js";
5
+ export { convertFilterUiToExpressionImpl, convertFilterUiToExpressions, distillFilterSpec, filterSpecToSpecQueryExpr };
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.cjs","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,EAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,EAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
1
+ {"version":3,"file":"traverse.cjs","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;CACH,OAAO,uBAAuB,QAAQ,OAAwC;AAChF;;AAEA,SAAS,uBACP,QACA,SACG;CACH,QAAQ,OAAO,MAAf;EACE,KAAK,OACH,OAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,CAAS,CAAC,CACnC,KAAK,MAAM,uBAAuB,GAAG,OAAO,CAAC,CAClD;EACF,KAAK,MACH,OAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,CAAS,CAAC,CACnC,KAAK,MAAM,uBAAuB,GAAG,OAAO,CAAC,CAClD;EACF,KAAK,OACH,OAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,OAAO,CAAC;EACnE,SACE,OAAO,QAAQ,KAAK,MAAM;CAC9B;AACF;;AAGA,SAAgB,yBAGd,QAAgB;CAChB,OAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,CAAC;GACnB,IAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,GAAW,KAAK,KAAK,KAAK,MAAW;GAC7E,IAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,GAAW,KAAK,KAAK,KAAK,GAAQ;GACpE,OAAO;EACT;EACA,MAAM,YAAY,QAAQ,KAAK;EAC/B,KAAK,YAAY,QAAQ,KAAK;EAC9B,MAAM,WAAW;CACnB,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.js","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;AACH,QAAO,uBAAuB,QAAQ,QAAyC;;;AAGjF,SAAS,uBACP,QACA,SACG;AACH,SAAQ,OAAO,MAAf;EACE,KAAK,MACH,QAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,KACH,QAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,EAAU,CACnC,KAAK,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAClD;EACH,KAAK,MACH,QAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,QAAQ,CAAC;EACpE,QACE,QAAO,QAAQ,KAAK,OAAO;;;;AAKjC,SAAgB,yBAGd,QAAgB;AAChB,QAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,EAAE;AACpB,OAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,EAAW,MAAK,KAAK,KAAK,OAAY;AAC9E,OAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,EAAW,MAAK,KAAK,KAAK,IAAS;AACrE,UAAO;;EAET,MAAM,YAAY,QAAQ,MAAM;EAChC,KAAK,YAAY,QAAQ,MAAM;EAC/B,MAAM,WAAW;EAClB,CAAC"}
1
+ {"version":3,"file":"traverse.js","names":[],"sources":["../../src/filters/traverse.ts"],"sourcesContent":["import type {\n FilterSpec,\n FilterSpecLeaf,\n FilterSpecNode,\n InferFilterSpecLeafColumn,\n} from \"@milaboratories/pl-model-common\";\nimport type {\n InferFilterSpecCommonLeaf,\n InferFilterSpecLeaf,\n} from \"@milaboratories/pl-model-common\";\n\nexport type FilterSpecVisitor<LeafArg, R> = {\n /** Handle a leaf filter node. */\n leaf: (leaf: LeafArg) => R;\n /** Handle an AND node after children have been traversed. */\n and: (results: R[]) => R;\n /** Handle an OR node after children have been traversed. */\n or: (results: R[]) => R;\n /** Handle a NOT node after the inner filter has been traversed. */\n not: (result: R) => R;\n};\n\n/**\n * Recursively traverses a FilterSpec tree bottom-up, applying visitor callbacks.\n *\n * Entries with `{ type: undefined }` inside `and`/`or` arrays are skipped\n * (these represent unfilled filter slots in the UI).\n *\n * Traversal order:\n * 1. Recurse into child filters (`and`/`or`/`not`)\n * 2. Apply the corresponding visitor callback with already-traversed children\n * 3. For leaf nodes, call `leaf` directly\n */\nexport function traverseFilterSpec<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R,\n>(\n filter: F,\n visitor: FilterSpecVisitor<InferFilterSpecCommonLeaf<F> & InferFilterSpecLeaf<F>, R>,\n): R {\n return traverseFilterSpecImpl(filter, visitor as FilterSpecVisitor<unknown, R>);\n}\n/** Internal implementation with simple generics for clean recursion. */\nfunction traverseFilterSpecImpl<R>(\n filter: FilterSpecNode<FilterSpecLeaf<unknown>, unknown, unknown>,\n visitor: FilterSpecVisitor<unknown, R>,\n): R {\n switch (filter.type) {\n case \"and\":\n return visitor.and(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"or\":\n return visitor.or(\n filter.filters\n .filter((f) => f.type !== undefined)\n .map((f) => traverseFilterSpecImpl(f, visitor)),\n );\n case \"not\":\n return visitor.not(traverseFilterSpecImpl(filter.filter, visitor));\n default:\n return visitor.leaf(filter);\n }\n}\n\n/** Collects all column references (`column` and `rhs` fields) from filter leaves. */\nexport function collectFilterSpecColumns<\n F extends FilterSpec<FilterSpecLeaf<unknown>, unknown, unknown>,\n R extends InferFilterSpecLeafColumn<F> = InferFilterSpecLeafColumn<F>,\n>(filter: F): R[] {\n return traverseFilterSpec(filter, {\n leaf: (leaf) => {\n const cols: R[] = [];\n if (\"column\" in leaf && leaf.column !== undefined) cols.push(leaf.column as R);\n if (\"rhs\" in leaf && leaf.rhs !== undefined) cols.push(leaf.rhs as R);\n return cols;\n },\n and: (results) => results.flat(),\n or: (results) => results.flat(),\n not: (result) => result,\n });\n}\n"],"mappings":";;;;;;;;;;;;AAiCA,SAAgB,mBAId,QACA,SACG;CACH,OAAO,uBAAuB,QAAQ,OAAwC;AAChF;;AAEA,SAAS,uBACP,QACA,SACG;CACH,QAAQ,OAAO,MAAf;EACE,KAAK,OACH,OAAO,QAAQ,IACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,CAAS,CAAC,CACnC,KAAK,MAAM,uBAAuB,GAAG,OAAO,CAAC,CAClD;EACF,KAAK,MACH,OAAO,QAAQ,GACb,OAAO,QACJ,QAAQ,MAAM,EAAE,SAAS,KAAA,CAAS,CAAC,CACnC,KAAK,MAAM,uBAAuB,GAAG,OAAO,CAAC,CAClD;EACF,KAAK,OACH,OAAO,QAAQ,IAAI,uBAAuB,OAAO,QAAQ,OAAO,CAAC;EACnE,SACE,OAAO,QAAQ,KAAK,MAAM;CAC9B;AACF;;AAGA,SAAgB,yBAGd,QAAgB;CAChB,OAAO,mBAAmB,QAAQ;EAChC,OAAO,SAAS;GACd,MAAM,OAAY,CAAC;GACnB,IAAI,YAAY,QAAQ,KAAK,WAAW,KAAA,GAAW,KAAK,KAAK,KAAK,MAAW;GAC7E,IAAI,SAAS,QAAQ,KAAK,QAAQ,KAAA,GAAW,KAAK,KAAK,KAAK,GAAQ;GACpE,OAAO;EACT;EACA,MAAM,YAAY,QAAQ,KAAK;EAC/B,KAAK,YAAY,QAAQ,KAAK;EAC9B,MAAM,WAAW;CACnB,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/filters/types.ts"],"mappings":";;;KAEY,qBAAA,GAAwB,IAAA,CAAK,WAAA;AAAA,KAE7B,+BAAA;EACV,EAAA,EAAI,mBAAA;EACJ,KAAA;EACA,GAAA,EAAK,qBAAA;AAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/filters/types.ts"],"mappings":";;;KAEY,qBAAA,GAAwB,IAAI,CAAC,WAAA;AAAA,KAE7B,+BAAA;EACV,EAAA,EAAI,mBAAA;EACJ,KAAA;EACA,GAAA,EAAK,qBAAqB;AAAA"}
package/dist/index.d.ts CHANGED
@@ -74,4 +74,4 @@ import { getService } from "./services/get_services.js";
74
74
  import { getEnvironmentValue } from "./env_value.js";
75
75
  export * from "@milaboratories/pl-model-common";
76
76
  export * from "@milaboratories/pl-error-like";
77
- export { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr, ActionResult, AnchorEntry, AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, Args, ArrayColumnProvider, AxesVault, AxisLabelProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockDefaultModelServices, BlockDefaultUiServices, BlockModel, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockServiceFlags, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, BuildDatasetOptions, BuildOptions, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgRenderingMode, CfgResourceValueAsJson, Checked, ColumnCollection, ColumnCollectionBuilder, ColumnData, ColumnDataStatus, ColumnMatch, ColumnMatcher, ColumnOrderRule, ColumnProvider, ColumnSelector, ColumnSnapshot, ColumnSnapshotProvider, ColumnSource, ColumnVariant, ColumnVisibilityRule, ColumnsDisplayOptions, ColumnsSelectorConfig, CommonFieldTraverseOps, CommonTraversalOps, ConfAction, ConfigRenderLambda, ConfigRenderLambdaFlags, ConfigResult, CurrentSdkInfo, DataModel, DataModelBuilder, DatasetOption, DatasetSelection, DeriveHref, DeriveLabelsFormatters, DeriveLabelsOptions, Entry, ExpandByPartitionOpts, ExpandByPartitionResult, ExpressionSpec, ExtractAction, ExtractFunctionHandleReturn, ExtractFutureRefType, FieldTraversalStep, FieldType, FilterMatchOptions, FilterSpec, FilterSpecLeaf, FilterSpecNode, FilterSpecOfType, FilterSpecType, FilterSpecUi, FilterUi, FilterUiOfType, FilterUiType, FindColumnsOptions, FormField, FutureRef, GetFieldStep, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferFactoryData, InferFactoryModelServices, InferFactoryOutputs, InferFactoryParams, InferFactoryUiServices, InferHrefType, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, InferOutputsType, InferPluginData, InferPluginHandle, InferPluginNames, InferPluginUiEntries, InferRenderFunctionReturn, InferUiState, InferVarTypeSafe, IsNA, It, internal_d_exports as JsRenderInternal, DeriveLabelsOptions as LabelDerivationOps, LinkerStep, Log10, MainOutputs, MatchQualifications, MatchVariant, MatchingMode, type MigrateBlockStorageConfig, type MigrationFailure, type MigrationResult, type MigrationSuccess, ModelServices, type MutateStoragePayload, NotFilter, NumericalComparisonFilter, OptionalPlResourceEntry, OrFilter, OutputColumnProvider, OutputColumnProviderOpts, OutputError, PColumnCollection, PColumnDataUniversal, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnKeyList, PColumnLazyUniversal, PColumnLazyWithLabel, PColumnPredicate, PColumnResourceMapData, PColumnResourceMapEntry, PFrameImpl, POCExtractAction, PTableKey, PTableParamsV2, type ParamsInput, Patch, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, PlDataTableFilterMeta, PlDataTableFilterSpecLeaf, PlDataTableFilters, PlDataTableFiltersWithMeta, PlDataTableGridStateCore, PlDataTableModel, PlDataTableSheet, PlDataTableSheetState, PlDataTableStateV2, PlDataTableStateV2CacheEntry, PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlResourceEntry, PlSelectionModel, PlTableColumnIdJson, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaSDKVersion, PlatformaV1, PlatformaV2, PlatformaV3, type PluginConfig, type PluginData, PluginDataModel, PluginDataModelBuilder, type PluginDataModelVersions, type PluginFactory, PluginFactoryLike, PluginHandle, PluginInstance, PluginModel, type PluginName, type PluginOutputs, type PluginParams, type PluginPublicOutputs, type PluginRecord, type PluginRegistry, PluginRenderCtx, PrimitiveOrConfig, PrimitiveToCfg, type PublicOutputFieldDef, 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, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResolveCfgType, ResolveModelServices, ResolveUiServices, ResourceTraversalOps, ResourceType, ResultPool, ResultPoolColumnSnapshotProvider, SdkInfo, ServiceProxy, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, SnapshotColumnProvider, SortedCumulativeSum, Entry as SpecExtractorResult, SplitAxis, StagingOutputs, StdCtx, StdCtxArgsOnly, StringMatcher, TooltipEntry, Trace, TraceEntry, TransformedColumn, TreeNodeAccessor, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, TypedConfig, TypedConfigOrConfigLambda, TypedConfigOrString, UiServices, UiState, Unionize, UniversalColumnOption, UnwrapFutureRef, ValueRank, type VersionedData, allPColumnsReady, and, blockServiceNames, buildDatasetOptions, buildRefMap, buildServices, collectCtxColumnSnapshotProviders, compileAnnotationScript, compileFilter, compileFilters, convertColumnSelectorToMultiColumnSelector, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, convertRelaxedAxisSelectorToMultiAxisSelector, convertRelaxedColumnSelectorToMultiColumnSelector, createBlockStorage, createColumnSnapshot, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, createServiceProxy, deriveDataFromStorage, deriveDistinctLabels, deriveDistinctTooltips, deriveLabels, discoverTableColumnSnaphots, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, expandByPartition, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterMatchesToOptions, filterSpecToSpecQueryExpr, findFilterColumns, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEffectiveVisibility, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getNumberOfRows, getOnDemandBlobContent, getOrderPriority, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getService, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isDatasetSelection, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, migrateBlockStorage, normalizeBlockStorage, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs };
77
+ export { ActAnd, ActExtractArchiveAndGetURL, ActFlatten, ActGetBlobContent, ActGetBlobContentAsJson, ActGetBlobContentAsString, ActGetDownloadedBlobContent, ActGetField, ActGetFromCtx, ActGetImmediate, ActGetLastLogs, ActGetLogHandle, ActGetOnDemandBlobContent, ActGetProgressLog, ActGetProgressLogWithInfo, ActGetResourceField, ActGetResourceValueAsJson, ActImportProgress, ActIsEmpty, ActIsolate, ActMakeArray, ActMakeObject, ActMapArrayValues, ActMapRecordValues, ActMapResourceFields, ActNot, ActOr, ActionResult, AnchorEntry, AnchoredBuildOptions, AnchoredColumnCollection, AnchoredFindColumnsOptions, AndFilter, AnnotationFilter, AnnotationMode, AnnotationScript, AnnotationScript2, AnnotationScriptUi, AnnotationSpec, AnnotationSpecUi, AnnotationStep, AnnotationStepUi, AnyForm, Args, ArrayColumnProvider, type AxesVault, AxisLabelProvider, BLOCK_SERVICE_FLAGS, BLOCK_STORAGE_FACADE_VERSION, BlockApiV1, BlockApiV2, BlockConfig, BlockConfigV3, BlockConfigV4, BlockDefaultModelServices, BlockDefaultUiServices, BlockModel, BlockModelInfo, BlockModelV3, BlockRenderCtx, BlockServiceFlags, BlockStatePatch, type BlockStorage, BlockStorageFacade, BlockStorageFacadeCallbacks, BlockStorageFacadeHandles, type BlockStorageSchemaVersion, BuildDatasetOptions, BuildOptions, CancelSubscription, Cfg, CfgAnd, CfgBlobContent, CfgBlobContentAsJson, CfgBlobContentAsString, CfgDownloadedBlobContent, CfgExtractArchiveAndGetURL, CfgFlatten, CfgGetFromCtx, CfgGetJsonField, CfgGetResourceField, CfgImmediate, CfgImportProgress, CfgIsEmpty, CfgIsolate, CfgLastLogs, CfgLogHandle, CfgMakeArray, CfgMakeObject, CfgMapArrayValues, CfgMapRecordValues, CfgMapResourceFields, CfgNot, CfgOnDemandBlobContent, CfgOr, CfgProgressLog, CfgProgressLogWithInfo, CfgRenderingMode, CfgResourceValueAsJson, type Checked, ColumnCollection, ColumnCollectionBuilder, ColumnData, ColumnDataStatus, ColumnMatch, type ColumnMatcher, type ColumnOrderRule, ColumnProvider, ColumnSelector, ColumnSnapshot, ColumnSnapshotProvider, ColumnSource, ColumnVariant, type ColumnVisibilityRule, type ColumnsDisplayOptions, type ColumnsSelectorConfig, CommonFieldTraverseOps, CommonTraversalOps, ConfAction, ConfigRenderLambda, ConfigRenderLambdaFlags, ConfigResult, CurrentSdkInfo, DataModel, DataModelBuilder, DatasetOption, DatasetSelection, DeriveHref, DeriveLabelsFormatters, DeriveLabelsOptions, Entry, ExpandByPartitionOpts, ExpandByPartitionResult, ExpressionSpec, ExtractAction, ExtractFunctionHandleReturn, type ExtractFutureRefType, FieldTraversalStep, FieldType, FilterMatchOptions, type FilterSpec, type FilterSpecLeaf, type FilterSpecNode, type FilterSpecOfType, type FilterSpecType, FilterSpecUi, FilterUi, FilterUiOfType, FilterUiType, FindColumnsOptions, FormField, FutureRef, GetFieldStep, InferArgsType, InferBlockState, InferBlockStatePatch, InferDataType, InferFactoryData, InferFactoryModelServices, InferFactoryOutputs, InferFactoryParams, InferFactoryUiServices, InferHrefType, InferOutputType, InferOutputsFromConfigs, InferOutputsFromLambdas, InferOutputsType, InferPluginData, InferPluginHandle, InferPluginNames, InferPluginUiEntries, InferRenderFunctionReturn, InferUiState, InferVarTypeSafe, IsNA, It, internal_d_exports as JsRenderInternal, type DeriveLabelsOptions as LabelDerivationOps, LinkerStep, Log10, MainOutputs, MatchQualifications, MatchVariant, MatchingMode, type MigrateBlockStorageConfig, type MigrationFailure, type MigrationResult, type MigrationSuccess, type ModelServices, type MutateStoragePayload, NotFilter, NumericalComparisonFilter, OptionalPlResourceEntry, OrFilter, OutputColumnProvider, OutputColumnProviderOpts, OutputError, PColumnCollection, type PColumnDataUniversal, PColumnEntryUniversal, PColumnEntryWithLabel, PColumnKeyList, PColumnLazyUniversal, PColumnLazyWithLabel, PColumnPredicate, PColumnResourceMapData, PColumnResourceMapEntry, PFrameImpl, POCExtractAction, PTableKey, type PTableParamsV2, type ParamsInput, Patch, PatternFilter, PatternPredicate, PatternPredicateContainSubsequence, PatternPredicateEquals, type PlDataTableFilterMeta, type PlDataTableFilterSpecLeaf, type PlDataTableFilters, type PlDataTableFiltersWithMeta, type PlDataTableGridStateCore, type PlDataTableModel, type PlDataTableSheet, type PlDataTableSheetState, type PlDataTableStateV2, type PlDataTableStateV2CacheEntry, type PlDataTableStateV2Normalized, PlMultiSequenceAlignmentColorSchemeOption, PlMultiSequenceAlignmentModel, PlMultiSequenceAlignmentSettings, PlMultiSequenceAlignmentWidget, PlResourceEntry, PlSelectionModel, type PlTableColumnIdJson, Platforma, PlatformaApiVersion, PlatformaExtended, PlatformaFactory, PlatformaSDKVersion, PlatformaV1, PlatformaV2, PlatformaV3, type PluginConfig, type PluginData, PluginDataModel, PluginDataModelBuilder, type PluginDataModelVersions, type PluginFactory, PluginFactoryLike, PluginHandle, PluginInstance, PluginModel, type PluginName, type PluginOutputs, type PluginParams, type PluginPublicOutputs, type PluginRecord, type PluginRegistry, PluginRenderCtx, PrimitiveOrConfig, PrimitiveToCfg, type PublicOutputFieldDef, 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, RelaxedAxisSelector, RelaxedColumnSelector, RelaxedRecord, RelaxedStringMatchers, RenderCtx, RenderCtxBase, RenderCtxLegacy, RenderFunction, RenderFunctionLegacy, ResolveCfgType, ResolveModelServices, ResolveUiServices, ResourceTraversalOps, ResourceType, ResultPool, ResultPoolColumnSnapshotProvider, SdkInfo, ServiceProxy, SimplifiedPColumnSpec, SimplifiedUniversalPColumnEntry, SnapshotColumnProvider, SortedCumulativeSum, type Entry as SpecExtractorResult, SplitAxis, StagingOutputs, StdCtx, StdCtxArgsOnly, type StringMatcher, TooltipEntry, type Trace, type TraceEntry, TransformedColumn, TreeNodeAccessor, TypeField, TypeFieldRecord, TypeForm, TypeToLiteral, TypedConfig, TypedConfigOrConfigLambda, TypedConfigOrString, type UiServices, UiState, Unionize, UniversalColumnOption, UnwrapFutureRef, ValueRank, type VersionedData, allPColumnsReady, and, blockServiceNames, buildDatasetOptions, buildRefMap, buildServices, collectCtxColumnSnapshotProviders, compileAnnotationScript, compileFilter, compileFilters, convertColumnSelectorToMultiColumnSelector, convertFilterSpecsToExpressionSpecs, convertFilterUiToExpressionImpl, convertFilterUiToExpressions, convertOrParsePColumnData, convertRelaxedAxisSelectorToMultiAxisSelector, convertRelaxedColumnSelectorToMultiColumnSelector, createBlockStorage, createColumnSnapshot, createDatasetSelection, createDefaultPTableParams, createPFrameForGraphs, createPlDataTable, type createPlDataTableOptionsV3, createPlDataTableSheet, createPlDataTableStateV2, createPlDataTableV2, createPlDataTableV3, createPlSelectionModel, createReadyColumnData, createRowSelectionColumn, createServiceProxy, deriveDataFromStorage, deriveDistinctLabels, deriveDistinctTooltips, deriveLabels, discoverTableColumnSnaphots, distillFilterSpec, downgradeCfgOrLambda, enrichCompatible, expandByPartition, extractArchiveAndGetURL, extractConfig, filterDataInfoEntries, filterMatchesToOptions, filterSpecToSpecQueryExpr, findFilterColumns, flatten, fromPlOption, fromPlRef, getAllRelatedColumns, getAvailableWithLinkersAxes, getAxisUniqueValues, getBlobContent, getBlobContentAsJson, getBlobContentAsString, getColumnOrAxisValueLabelsId, getColumnSpecById, getColumnUniqueValues, getColumnsFull, getDownloadedBlobContent, getEffectiveVisibility, getEnvironmentValue, getFromCfg, getImmediate, getImportProgress, getJsonField, getLastLogs, getLogHandle, getNumberOfRows, getOnDemandBlobContent, getOrderPriority, getPartitionKeysList, getPlatformaApiVersion, getPluginData, getProgressLog, getProgressLogWithInfo, getRawPlatformaInstance, getRelatedColumns, getRequestColumnsFromSelectedSources, getResourceField, getResourceValueAsJson, getService, getSingleColumnData, getStorageData, getUniquePartitionKeys, getUniqueSourceValuesWithLabels, ifDef, isBlockStorage, isColumnHidden, isColumnOptional, isColumnSnapshotProvider, isConfigLambda, isDatasetSelection, isEmpty, isHiddenFromGraphColumn, isHiddenFromUIColumn, isPColumnReady, isPluginOutputKey, isolate, makeArray, makeObject, mapArrayValues, mapRecordValues, mapResourceFields, migrateBlockStorage, normalizeBlockStorage, not, or, parsePColumnData, parseResourceMap, pluginOutputKey, pluginOutputPrefix, readOutput, registerFacadeCallbacks, toColumnSnapshotProvider, unreachable, updateStorageData, upgradePlDataTableStateV2, wrapOutputs };
package/dist/internal.cjs CHANGED
@@ -74,6 +74,8 @@ exports.getCfgRenderCtx = getCfgRenderCtx;
74
74
  exports.getPlatformaInstance = getPlatformaInstance;
75
75
  exports.isInUI = isInUI;
76
76
  exports.registerFutureAwait = registerFutureAwait;
77
+ exports.replaceCallback = replaceCallback;
78
+ exports.tryGetCfgRenderCtx = tryGetCfgRenderCtx;
77
79
  exports.tryRegisterCallback = tryRegisterCallback;
78
80
 
79
81
  //# sourceMappingURL=internal.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.cjs","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;AACvB,QACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;;;AAKtF,SAAgB,qBAQd,QAG0C;AAC1C,KAAI,UAAU,OAAO,WAAW,iBAAiB,WAC/C,QAAO,WAAW,aAAa,OAAO;UAC/B,OAAO,WAAW,cAAc,YACvC,QAAO,WAAW;KACf,OAAM,IAAI,MAAM,gCAAgC;;AAGvD,SAAgB,qBAAqD;AACnE,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,QAAO,KAAA;;AAGd,SAAgB,kBAAsC;AACpD,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,OAAM,IAAI,MAAM,kCAAkC;;AAGzD,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,OAAO,IAAI,iBAAkB,OAAM,IAAI,MAAM,qBAAqB,IAAI,sBAAsB;AAChG,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;;;;;;;;AAWT,SAAgB,gBAAgB,KAAa,UAA4C;CACvF,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;AAcT,SAAgB,mBAAgC,MAAkD;CAChG,MAAM,EAAE,QAAQ,GAAG,UAAU;AAC7B,QAAO;EACL,gBAAgB;EAChB;EACA,GAAG;EACJ;;;AAIH,SAAgB,8BACd,MAGA,SACuB;CACvB,MAAM,EAAE,QAAQ,QAAQ,GAAG,UAAU;AAErC,KAAI,QACF,iBAAgB,QAAQ,OAAO;KAE/B,qBAAoB,QAAQ,OAAO;AAGrC,QAAO,mBAAsB;EAAE;EAAQ,GAAG;EAAO,CAAC;;AAGpD,MAAM,iCAAiB,IAAI,KAA2C;AAEtE,SAAgB,oBAAoB,QAAsB,WAAqC;AAC7F,KAAI,EAAE,UAAU,iBAAiB,CAAC,mBAAmB;AACnD,mBAAiB,CAAC,iBAAiB,WAAW,UAAmB;AAC/D,QAAK,MAAM,OAAO,eAAe,IAAI,OAAO,CAC1C,KAAI,MAAM;;AAGd,iBAAe,IAAI,QAAQ,EAAE,CAAC;;AAEhC,gBAAe,IAAI,OAAO,CAAE,KAAK,UAAU"}
1
+ {"version":3,"file":"internal.cjs","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;CACvB,OACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;AAEtF;;AAGA,SAAgB,qBAQd,QAG0C;CAC1C,IAAI,UAAU,OAAO,WAAW,iBAAiB,YAC/C,OAAO,WAAW,aAAa,MAAM;MAClC,IAAI,OAAO,WAAW,cAAc,aACvC,OAAO,WAAW;MACf,MAAM,IAAI,MAAM,+BAA+B;AACtD;AAEA,SAAgB,qBAAqD;CACnE,IAAI,OAAO,WAAW,iBAAiB,aAAa,OAAO,WAAW;MACjE,OAAO,KAAA;AACd;AAEA,SAAgB,kBAAsC;CACpD,IAAI,OAAO,WAAW,iBAAiB,aAAa,OAAO,WAAW;MACjE,MAAM,IAAI,MAAM,iCAAiC;AACxD;AAEA,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,mBAAmB;CAC/B,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,OAAO,IAAI,kBAAkB,MAAM,IAAI,MAAM,qBAAqB,IAAI,qBAAqB;CAC/F,IAAI,iBAAiB,OAAO;CAC5B,OAAO;AACT;;;;;;;;;AAUA,SAAgB,gBAAgB,KAAa,UAA4C;CACvF,MAAM,MAAM,mBAAmB;CAC/B,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,iBAAiB,OAAO;CAC5B,OAAO;AACT;;AAaA,SAAgB,mBAAgC,MAAkD;CAChG,MAAM,EAAE,QAAQ,GAAG,UAAU;CAC7B,OAAO;EACL,gBAAgB;EAChB;EACA,GAAG;CACL;AACF;;AAGA,SAAgB,8BACd,MAGA,SACuB;CACvB,MAAM,EAAE,QAAQ,QAAQ,GAAG,UAAU;CAErC,IAAI,SACF,gBAAgB,QAAQ,MAAM;MAE9B,oBAAoB,QAAQ,MAAM;CAGpC,OAAO,mBAAsB;EAAE;EAAQ,GAAG;CAAM,CAAC;AACnD;AAEA,MAAM,iCAAiB,IAAI,IAA0C;AAErE,SAAgB,oBAAoB,QAAsB,WAAqC;CAC7F,IAAI,EAAE,UAAU,gBAAgB,CAAC,CAAC,mBAAmB;EACnD,gBAAgB,CAAC,CAAC,iBAAiB,WAAW,UAAmB;GAC/D,KAAK,MAAM,OAAO,eAAe,IAAI,MAAM,GACzC,IAAI,KAAK;EAEb;EACA,eAAe,IAAI,QAAQ,CAAC,CAAC;CAC/B;CACA,eAAe,IAAI,MAAM,CAAC,CAAE,KAAK,SAAS;AAC5C"}
package/dist/internal.js CHANGED
@@ -68,6 +68,6 @@ function registerFutureAwait(handle, onResolve) {
68
68
  futureResolves.get(handle).push(onResolve);
69
69
  }
70
70
  //#endregion
71
- export { createAndRegisterRenderLambda, createRenderLambda, getCfgRenderCtx, getPlatformaInstance, isInUI, registerFutureAwait, tryRegisterCallback };
71
+ export { createAndRegisterRenderLambda, createRenderLambda, getCfgRenderCtx, getPlatformaInstance, isInUI, registerFutureAwait, replaceCallback, tryGetCfgRenderCtx, tryRegisterCallback };
72
72
 
73
73
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;AACvB,QACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;;;AAKtF,SAAgB,qBAQd,QAG0C;AAC1C,KAAI,UAAU,OAAO,WAAW,iBAAiB,WAC/C,QAAO,WAAW,aAAa,OAAO;UAC/B,OAAO,WAAW,cAAc,YACvC,QAAO,WAAW;KACf,OAAM,IAAI,MAAM,gCAAgC;;AAGvD,SAAgB,qBAAqD;AACnE,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,QAAO,KAAA;;AAGd,SAAgB,kBAAsC;AACpD,KAAI,OAAO,WAAW,iBAAiB,YAAa,QAAO,WAAW;KACjE,OAAM,IAAI,MAAM,kCAAkC;;AAGzD,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,OAAO,IAAI,iBAAkB,OAAM,IAAI,MAAM,qBAAqB,IAAI,sBAAsB;AAChG,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;;;;;;;;AAWT,SAAgB,gBAAgB,KAAa,UAA4C;CACvF,MAAM,MAAM,oBAAoB;AAChC,KAAI,QAAQ,KAAA,EAAW,QAAO;AAC9B,KAAI,iBAAiB,OAAO;AAC5B,QAAO;;;AAcT,SAAgB,mBAAgC,MAAkD;CAChG,MAAM,EAAE,QAAQ,GAAG,UAAU;AAC7B,QAAO;EACL,gBAAgB;EAChB;EACA,GAAG;EACJ;;;AAIH,SAAgB,8BACd,MAGA,SACuB;CACvB,MAAM,EAAE,QAAQ,QAAQ,GAAG,UAAU;AAErC,KAAI,QACF,iBAAgB,QAAQ,OAAO;KAE/B,qBAAoB,QAAQ,OAAO;AAGrC,QAAO,mBAAsB;EAAE;EAAQ,GAAG;EAAO,CAAC;;AAGpD,MAAM,iCAAiB,IAAI,KAA2C;AAEtE,SAAgB,oBAAoB,QAAsB,WAAqC;AAC7F,KAAI,EAAE,UAAU,iBAAiB,CAAC,mBAAmB;AACnD,mBAAiB,CAAC,iBAAiB,WAAW,UAAmB;AAC/D,QAAK,MAAM,OAAO,eAAe,IAAI,OAAO,CAC1C,KAAI,MAAM;;AAGd,iBAAe,IAAI,QAAQ,EAAE,CAAC;;AAEhC,gBAAe,IAAI,OAAO,CAAE,KAAK,UAAU"}
1
+ {"version":3,"file":"internal.js","names":[],"sources":["../src/internal.ts"],"sourcesContent":["import type { OutputWithStatus } from \"@milaboratories/pl-model-common\";\nimport type { Platforma, PlatformaApiVersion } from \"./platforma\";\nimport type { FutureHandle, GlobalCfgRenderCtx } from \"./render/internal\";\nimport type { ConfigRenderLambda, ConfigRenderLambdaFlags } from \"./bconfig\";\n\n/** Utility code helping to identify whether the code is running in actual UI environment */\nexport function isInUI() {\n return (\n typeof globalThis.getPlatforma !== \"undefined\" || typeof globalThis.platforma !== \"undefined\"\n );\n}\n\n/** Utility code helping to retrieve a platforma instance form the environment */\nexport function getPlatformaInstance<\n Args = unknown,\n Outputs extends Record<string, OutputWithStatus<unknown>> = Record<\n string,\n OutputWithStatus<unknown>\n >,\n UiState = unknown,\n Href extends `/${string}` = `/${string}`,\n>(config?: {\n sdkVersion: string;\n apiVersion: PlatformaApiVersion;\n}): Platforma<Args, Outputs, UiState, Href> {\n if (config && typeof globalThis.getPlatforma === \"function\")\n return globalThis.getPlatforma(config);\n else if (typeof globalThis.platforma !== \"undefined\")\n return globalThis.platforma as Platforma<Args, Outputs, UiState, Href>;\n else throw new Error(\"Can't get platforma instance.\");\n}\n\nexport function tryGetCfgRenderCtx(): GlobalCfgRenderCtx | undefined {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else return undefined;\n}\n\nexport function getCfgRenderCtx(): GlobalCfgRenderCtx {\n if (typeof globalThis.cfgRenderCtx !== \"undefined\") return globalThis.cfgRenderCtx;\n else throw new Error(\"Not in config rendering context\");\n}\n\nexport function tryRegisterCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n if (key in ctx.callbackRegistry) throw new Error(`Callback with key ${key} already registered.`);\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n/**\n * Registers a callback, replacing any existing callback with the same key.\n * Use this for callbacks that have a default value but can be overridden.\n *\n * @param key - The callback registry key\n * @param callback - The callback function to register\n * @returns true if registered, false if not in render context\n */\nexport function replaceCallback(key: string, callback: (...args: any[]) => any): boolean {\n const ctx = tryGetCfgRenderCtx();\n if (ctx === undefined) return false;\n ctx.callbackRegistry[key] = callback;\n return true;\n}\n\n//\n// ConfigRenderLambda helpers\n//\n\n/** Options for creating a ConfigRenderLambda descriptor */\nexport type CreateLambdaOptions = ConfigRenderLambdaFlags & {\n /** The callback registry key */\n handle: string;\n};\n\n/** Creates a ConfigRenderLambda descriptor without registering a callback. */\nexport function createRenderLambda<T = unknown>(opts: CreateLambdaOptions): ConfigRenderLambda<T> {\n const { handle, ...flags } = opts;\n return {\n __renderLambda: true,\n handle,\n ...flags,\n } as ConfigRenderLambda<T>;\n}\n\n/** Registers a callback and returns a ConfigRenderLambda descriptor. */\nexport function createAndRegisterRenderLambda<T = unknown>(\n opts: CreateLambdaOptions & {\n lambda: (...args: any[]) => any;\n },\n replace?: boolean,\n): ConfigRenderLambda<T> {\n const { handle, lambda, ...flags } = opts;\n\n if (replace) {\n replaceCallback(handle, lambda);\n } else {\n tryRegisterCallback(handle, lambda);\n }\n\n return createRenderLambda<T>({ handle, ...flags });\n}\n\nconst futureResolves = new Map<string, ((value: unknown) => void)[]>();\n\nexport function registerFutureAwait(handle: FutureHandle, onResolve: (value: unknown) => void) {\n if (!(handle in getCfgRenderCtx().callbackRegistry)) {\n getCfgRenderCtx().callbackRegistry[handle] = (value: unknown) => {\n for (const res of futureResolves.get(handle)!) {\n res(value);\n }\n };\n futureResolves.set(handle, []);\n }\n futureResolves.get(handle)!.push(onResolve);\n}\n"],"mappings":";;AAMA,SAAgB,SAAS;CACvB,OACE,OAAO,WAAW,iBAAiB,eAAe,OAAO,WAAW,cAAc;AAEtF;;AAGA,SAAgB,qBAQd,QAG0C;CAC1C,IAAI,UAAU,OAAO,WAAW,iBAAiB,YAC/C,OAAO,WAAW,aAAa,MAAM;MAClC,IAAI,OAAO,WAAW,cAAc,aACvC,OAAO,WAAW;MACf,MAAM,IAAI,MAAM,+BAA+B;AACtD;AAEA,SAAgB,qBAAqD;CACnE,IAAI,OAAO,WAAW,iBAAiB,aAAa,OAAO,WAAW;MACjE,OAAO,KAAA;AACd;AAEA,SAAgB,kBAAsC;CACpD,IAAI,OAAO,WAAW,iBAAiB,aAAa,OAAO,WAAW;MACjE,MAAM,IAAI,MAAM,iCAAiC;AACxD;AAEA,SAAgB,oBAAoB,KAAa,UAA4C;CAC3F,MAAM,MAAM,mBAAmB;CAC/B,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,OAAO,IAAI,kBAAkB,MAAM,IAAI,MAAM,qBAAqB,IAAI,qBAAqB;CAC/F,IAAI,iBAAiB,OAAO;CAC5B,OAAO;AACT;;;;;;;;;AAUA,SAAgB,gBAAgB,KAAa,UAA4C;CACvF,MAAM,MAAM,mBAAmB;CAC/B,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,iBAAiB,OAAO;CAC5B,OAAO;AACT;;AAaA,SAAgB,mBAAgC,MAAkD;CAChG,MAAM,EAAE,QAAQ,GAAG,UAAU;CAC7B,OAAO;EACL,gBAAgB;EAChB;EACA,GAAG;CACL;AACF;;AAGA,SAAgB,8BACd,MAGA,SACuB;CACvB,MAAM,EAAE,QAAQ,QAAQ,GAAG,UAAU;CAErC,IAAI,SACF,gBAAgB,QAAQ,MAAM;MAE9B,oBAAoB,QAAQ,MAAM;CAGpC,OAAO,mBAAsB;EAAE;EAAQ,GAAG;CAAM,CAAC;AACnD;AAEA,MAAM,iCAAiB,IAAI,IAA0C;AAErE,SAAgB,oBAAoB,QAAsB,WAAqC;CAC7F,IAAI,EAAE,UAAU,gBAAgB,CAAC,CAAC,mBAAmB;EACnD,gBAAgB,CAAC,CAAC,iBAAiB,WAAW,UAAmB;GAC/D,KAAK,MAAM,OAAO,eAAe,IAAI,MAAM,GACzC,IAAI,KAAK;EAEb;EACA,eAAe,IAAI,QAAQ,CAAC,CAAC;CAC/B;CACA,eAAe,IAAI,MAAM,CAAC,CAAE,KAAK,SAAS;AAC5C"}
@@ -1,4 +1,3 @@
1
- require("../_virtual/_rolldown/runtime.cjs");
2
1
  let _milaboratories_pl_model_common = require("@milaboratories/pl-model-common");
3
2
  let _milaboratories_helpers = require("@milaboratories/helpers");
4
3
  let es_toolkit = require("es-toolkit");
@@ -31,7 +30,7 @@ function deriveDistinctLabels(values, options = {}) {
31
30
  const build = (typeSet, force) => buildLabels(records, typeSet, forceTraceElements, separator, force);
32
31
  if (mainTypes.length === 0) {
33
32
  if (secondaryTypes.length !== 0) throw new Error("Non-empty secondary types list while main types list is empty.");
34
- return build(new Set([LABEL_TYPE_FULL]), true) ?? (0, _milaboratories_helpers.throwError)("Failed to derive labels using native column labels");
33
+ return build(/* @__PURE__ */ new Set([LABEL_TYPE_FULL]), true) ?? (0, _milaboratories_helpers.throwError)("Failed to derive labels using native column labels");
35
34
  }
36
35
  let includedCount = 0;
37
36
  let additionalType = -1;
@@ -50,7 +49,7 @@ function deriveDistinctLabels(values, options = {}) {
50
49
  additionalType = includedCount;
51
50
  }
52
51
  }
53
- const minimized = minimizeTypeSet(new Set([
52
+ const minimized = minimizeTypeSet(/* @__PURE__ */ new Set([
54
53
  ...forcedSet,
55
54
  ...mainTypes,
56
55
  ...secondaryTypes