@platforma-sdk/model 1.53.10 → 1.53.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/annotations/converter.cjs +11 -11
- package/dist/annotations/converter.cjs.map +1 -1
- package/dist/annotations/converter.d.ts +1 -1
- package/dist/annotations/converter.d.ts.map +1 -1
- package/dist/annotations/converter.js +11 -11
- package/dist/annotations/converter.js.map +1 -1
- package/dist/annotations/index.d.ts +2 -2
- package/dist/annotations/types.d.ts +4 -4
- package/dist/bconfig/index.d.ts +5 -5
- package/dist/bconfig/lambdas.d.ts +7 -7
- package/dist/bconfig/lambdas.d.ts.map +1 -1
- package/dist/bconfig/normalization.cjs.map +1 -1
- package/dist/bconfig/normalization.d.ts +3 -3
- package/dist/bconfig/normalization.js.map +1 -1
- package/dist/bconfig/types.cjs.map +1 -1
- package/dist/bconfig/types.d.ts +2 -2
- package/dist/bconfig/types.d.ts.map +1 -1
- package/dist/bconfig/types.js.map +1 -1
- package/dist/bconfig/util.d.ts +4 -4
- package/dist/bconfig/v3.d.ts +3 -3
- package/dist/block_api_v1.d.ts +2 -2
- package/dist/block_api_v1.d.ts.map +1 -1
- package/dist/block_api_v2.d.ts +2 -2
- package/dist/block_api_v2.d.ts.map +1 -1
- package/dist/block_api_v3.d.ts +3 -3
- package/dist/block_migrations.cjs +10 -10
- package/dist/block_migrations.cjs.map +1 -1
- package/dist/block_migrations.d.ts.map +1 -1
- package/dist/block_migrations.js +10 -10
- package/dist/block_migrations.js.map +1 -1
- package/dist/block_model.cjs +11 -11
- package/dist/block_model.cjs.map +1 -1
- package/dist/block_model.d.ts +8 -8
- package/dist/block_model.d.ts.map +1 -1
- package/dist/block_model.js +11 -11
- package/dist/block_model.js.map +1 -1
- package/dist/block_state_patch.d.ts +2 -2
- package/dist/block_state_util.cjs +1 -1
- package/dist/block_state_util.cjs.map +1 -1
- package/dist/block_state_util.d.ts +3 -3
- package/dist/block_state_util.js +1 -1
- package/dist/block_state_util.js.map +1 -1
- package/dist/block_storage.cjs +10 -10
- package/dist/block_storage.cjs.map +1 -1
- package/dist/block_storage.d.ts +2 -2
- package/dist/block_storage.d.ts.map +1 -1
- package/dist/block_storage.js +10 -10
- package/dist/block_storage.js.map +1 -1
- package/dist/block_storage_vm.cjs +22 -22
- package/dist/block_storage_vm.cjs.map +1 -1
- package/dist/block_storage_vm.d.ts +1 -1
- package/dist/block_storage_vm.d.ts.map +1 -1
- package/dist/block_storage_vm.js +22 -22
- package/dist/block_storage_vm.js.map +1 -1
- package/dist/builder.cjs +32 -23
- package/dist/builder.cjs.map +1 -1
- package/dist/builder.d.ts +7 -7
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +32 -23
- package/dist/builder.js.map +1 -1
- package/dist/components/PFrameForGraphs.cjs +7 -6
- package/dist/components/PFrameForGraphs.cjs.map +1 -1
- package/dist/components/PFrameForGraphs.d.ts +4 -4
- package/dist/components/PFrameForGraphs.d.ts.map +1 -1
- package/dist/components/PFrameForGraphs.js +7 -6
- package/dist/components/PFrameForGraphs.js.map +1 -1
- package/dist/components/PlAnnotations/filter.d.ts +14 -14
- package/dist/components/PlAnnotations/filter.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.cjs +46 -46
- package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.d.ts +10 -34
- package/dist/components/PlAnnotations/filters_ui.d.ts.map +1 -1
- package/dist/components/PlAnnotations/filters_ui.js +46 -46
- package/dist/components/PlAnnotations/filters_ui.js.map +1 -1
- package/dist/components/PlAnnotations/index.d.ts +2 -2
- package/dist/components/PlAnnotations/types.d.ts +2 -2
- package/dist/components/PlDataTable.cjs +19 -20
- package/dist/components/PlDataTable.cjs.map +1 -1
- package/dist/components/PlDataTable.d.ts +27 -27
- package/dist/components/PlDataTable.d.ts.map +1 -1
- package/dist/components/PlDataTable.js +19 -20
- package/dist/components/PlDataTable.js.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.cjs +2 -2
- package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.d.ts +6 -6
- package/dist/components/PlMultiSequenceAlignment.d.ts.map +1 -1
- package/dist/components/PlMultiSequenceAlignment.js +2 -2
- package/dist/components/PlMultiSequenceAlignment.js.map +1 -1
- package/dist/components/PlSelectionModel.cjs.map +1 -1
- package/dist/components/PlSelectionModel.d.ts +1 -1
- package/dist/components/PlSelectionModel.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/config/actions.cjs +39 -39
- package/dist/config/actions.cjs.map +1 -1
- package/dist/config/actions.d.ts +9 -9
- package/dist/config/actions.d.ts.map +1 -1
- package/dist/config/actions.js +39 -39
- package/dist/config/actions.js.map +1 -1
- package/dist/config/actions_kinds.d.ts +30 -30
- package/dist/config/actions_kinds.d.ts.map +1 -1
- package/dist/config/index.d.ts +6 -6
- package/dist/config/model.d.ts +28 -28
- package/dist/config/model_meta.d.ts +1 -1
- package/dist/config/type_engine.d.ts +3 -3
- package/dist/config/type_util.d.ts +2 -2
- package/dist/env_value.cjs +1 -1
- package/dist/env_value.cjs.map +1 -1
- package/dist/env_value.js +1 -1
- package/dist/env_value.js.map +1 -1
- package/dist/filters/converter.cjs +36 -32
- package/dist/filters/converter.cjs.map +1 -1
- package/dist/filters/converter.d.ts +2 -2
- package/dist/filters/converter.d.ts.map +1 -1
- package/dist/filters/converter.js +36 -32
- package/dist/filters/converter.js.map +1 -1
- package/dist/filters/index.d.ts +2 -2
- package/dist/filters/types.d.ts +33 -33
- package/dist/filters/types.d.ts.map +1 -1
- package/dist/index.d.ts +24 -24
- package/dist/internal.cjs +7 -7
- package/dist/internal.cjs.map +1 -1
- package/dist/internal.d.ts +4 -4
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +7 -7
- package/dist/internal.js.map +1 -1
- package/dist/package.json.cjs +1 -1
- package/dist/package.json.js +1 -1
- package/dist/pframe.cjs +1 -1
- package/dist/pframe.cjs.map +1 -1
- package/dist/pframe.d.ts +1 -1
- package/dist/pframe.js +1 -1
- package/dist/pframe.js.map +1 -1
- package/dist/pframe_utils/columns.cjs +23 -15
- package/dist/pframe_utils/columns.cjs.map +1 -1
- package/dist/pframe_utils/columns.d.ts +3 -3
- package/dist/pframe_utils/columns.d.ts.map +1 -1
- package/dist/pframe_utils/columns.js +23 -15
- package/dist/pframe_utils/columns.js.map +1 -1
- package/dist/pframe_utils/index.cjs +25 -25
- package/dist/pframe_utils/index.cjs.map +1 -1
- package/dist/pframe_utils/index.d.ts +3 -3
- package/dist/pframe_utils/index.d.ts.map +1 -1
- package/dist/pframe_utils/index.js +25 -25
- package/dist/pframe_utils/index.js.map +1 -1
- package/dist/platforma.d.ts +7 -7
- package/dist/platforma.d.ts.map +1 -1
- package/dist/raw_globals.cjs +4 -1
- package/dist/raw_globals.cjs.map +1 -1
- package/dist/raw_globals.d.ts +2 -2
- package/dist/raw_globals.d.ts.map +1 -1
- package/dist/raw_globals.js +4 -1
- package/dist/raw_globals.js.map +1 -1
- package/dist/ref_util.cjs +4 -4
- package/dist/ref_util.cjs.map +1 -1
- package/dist/ref_util.d.ts +1 -1
- package/dist/ref_util.js +4 -4
- package/dist/ref_util.js.map +1 -1
- package/dist/render/accessor.cjs +24 -24
- package/dist/render/accessor.cjs.map +1 -1
- package/dist/render/accessor.d.ts +10 -10
- package/dist/render/accessor.d.ts.map +1 -1
- package/dist/render/accessor.js +24 -24
- package/dist/render/accessor.js.map +1 -1
- package/dist/render/api.cjs +23 -23
- package/dist/render/api.cjs.map +1 -1
- package/dist/render/api.d.ts +11 -11
- package/dist/render/api.d.ts.map +1 -1
- package/dist/render/api.js +23 -23
- package/dist/render/api.js.map +1 -1
- package/dist/render/future.cjs.map +1 -1
- package/dist/render/future.d.ts +1 -1
- package/dist/render/future.js.map +1 -1
- package/dist/render/index.d.ts +6 -6
- package/dist/render/internal.cjs +4 -4
- package/dist/render/internal.cjs.map +1 -1
- package/dist/render/internal.d.ts +7 -7
- package/dist/render/internal.d.ts.map +1 -1
- package/dist/render/internal.js +4 -4
- package/dist/render/internal.js.map +1 -1
- package/dist/render/traversal_ops.d.ts +1 -1
- package/dist/render/util/axis_filtering.cjs +48 -44
- package/dist/render/util/axis_filtering.cjs.map +1 -1
- package/dist/render/util/axis_filtering.d.ts +2 -2
- package/dist/render/util/axis_filtering.js +48 -44
- package/dist/render/util/axis_filtering.js.map +1 -1
- package/dist/render/util/column_collection.cjs +42 -35
- package/dist/render/util/column_collection.cjs.map +1 -1
- package/dist/render/util/column_collection.d.ts +4 -4
- package/dist/render/util/column_collection.d.ts.map +1 -1
- package/dist/render/util/column_collection.js +42 -35
- package/dist/render/util/column_collection.js.map +1 -1
- package/dist/render/util/index.d.ts +4 -4
- package/dist/render/util/label.cjs +15 -21
- package/dist/render/util/label.cjs.map +1 -1
- package/dist/render/util/label.d.ts +2 -2
- package/dist/render/util/label.d.ts.map +1 -1
- package/dist/render/util/label.js +15 -21
- package/dist/render/util/label.js.map +1 -1
- package/dist/render/util/pcolumn_data.cjs +56 -54
- package/dist/render/util/pcolumn_data.cjs.map +1 -1
- package/dist/render/util/pcolumn_data.d.ts +5 -5
- package/dist/render/util/pcolumn_data.d.ts.map +1 -1
- package/dist/render/util/pcolumn_data.js +56 -54
- package/dist/render/util/pcolumn_data.js.map +1 -1
- package/dist/render/util/pframe_upgraders.cjs +6 -6
- package/dist/render/util/pframe_upgraders.cjs.map +1 -1
- package/dist/render/util/pframe_upgraders.d.ts +1 -1
- package/dist/render/util/pframe_upgraders.d.ts.map +1 -1
- package/dist/render/util/pframe_upgraders.js +6 -6
- package/dist/render/util/pframe_upgraders.js.map +1 -1
- package/dist/render/util/split_selectors.d.ts +1 -1
- package/dist/render/util/split_selectors.d.ts.map +1 -1
- package/dist/sdk_info.cjs.map +1 -1
- package/dist/sdk_info.js.map +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +23 -21
- package/src/annotations/converter.test.ts +98 -101
- package/src/annotations/converter.ts +21 -17
- package/src/annotations/index.ts +2 -2
- package/src/annotations/types.ts +4 -4
- package/src/bconfig/index.ts +5 -5
- package/src/bconfig/lambdas.ts +10 -12
- package/src/bconfig/normalization.ts +5 -5
- package/src/bconfig/types.ts +3 -5
- package/src/bconfig/util.ts +3 -3
- package/src/bconfig/v3.ts +3 -3
- package/src/block_api_v1.ts +7 -3
- package/src/block_api_v2.ts +7 -3
- package/src/block_api_v3.ts +3 -3
- package/src/block_migrations.test.ts +66 -67
- package/src/block_migrations.ts +16 -16
- package/src/block_model.ts +76 -140
- package/src/block_state_patch.ts +2 -2
- package/src/block_state_util.ts +4 -4
- package/src/block_storage.test.ts +106 -99
- package/src/block_storage.ts +22 -25
- package/src/block_storage_vm.ts +41 -35
- package/src/builder.ts +107 -95
- package/src/components/PFrameForGraphs.test.ts +261 -255
- package/src/components/PFrameForGraphs.ts +35 -22
- package/src/components/PlAnnotations/filter.ts +21 -15
- package/src/components/PlAnnotations/filters_ui.test.ts +230 -73
- package/src/components/PlAnnotations/filters_ui.ts +138 -105
- package/src/components/PlAnnotations/index.ts +2 -2
- package/src/components/PlAnnotations/types.ts +2 -2
- package/src/components/PlDataTable.ts +177 -164
- package/src/components/PlMultiSequenceAlignment.ts +11 -18
- package/src/components/PlSelectionModel.ts +1 -1
- package/src/components/index.ts +5 -5
- package/src/config/actions.ts +64 -59
- package/src/config/actions_kinds.ts +38 -34
- package/src/config/index.ts +6 -6
- package/src/config/model.ts +28 -28
- package/src/config/model_meta.ts +1 -1
- package/src/config/type_engine.ts +3 -3
- package/src/config/type_util.ts +2 -2
- package/src/env_value.ts +2 -2
- package/src/filters/converter.test.ts +185 -144
- package/src/filters/converter.ts +47 -35
- package/src/filters/index.ts +2 -2
- package/src/filters/types.ts +44 -39
- package/src/global.d.ts +1 -1
- package/src/index.ts +24 -24
- package/src/internal.ts +27 -17
- package/src/pframe.ts +3 -3
- package/src/pframe_utils/columns.ts +81 -31
- package/src/pframe_utils/index.ts +65 -43
- package/src/platforma.ts +44 -21
- package/src/raw_globals.ts +13 -7
- package/src/ref_util.ts +6 -6
- package/src/render/accessor.ts +43 -44
- package/src/render/api.ts +102 -78
- package/src/render/future.ts +2 -2
- package/src/render/index.ts +6 -6
- package/src/render/internal.ts +11 -12
- package/src/render/traversal_ops.ts +1 -1
- package/src/render/util/axis_filtering.ts +67 -52
- package/src/render/util/column_collection.ts +171 -91
- package/src/render/util/index.ts +4 -4
- package/src/render/util/label.test.ts +139 -139
- package/src/render/util/label.ts +42 -33
- package/src/render/util/pcolumn_data.ts +111 -75
- package/src/render/util/pframe_upgraders.ts +24 -13
- package/src/render/util/split_selectors.ts +6 -1
- package/src/sdk_info.ts +1 -1
- package/src/typing.test.ts +56 -56
- package/src/version.ts +1 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { isDataInfoEntries, isDataInfo, dataInfoToEntries, visitDataInfo } from '@milaboratories/pl-model-common';
|
|
2
2
|
import { TreeNodeAccessor } from '../accessor.js';
|
|
3
3
|
|
|
4
|
-
const PCD_PREFIX =
|
|
5
|
-
const RT_RESOURCE_MAP = PCD_PREFIX +
|
|
6
|
-
const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX +
|
|
7
|
-
const RT_JSON_PARTITIONED = PCD_PREFIX +
|
|
8
|
-
const RT_BINARY_PARTITIONED = PCD_PREFIX +
|
|
9
|
-
const RT_PARQUET_PARTITIONED = PCD_PREFIX +
|
|
10
|
-
const PCD_SUP_PREFIX = PCD_PREFIX +
|
|
11
|
-
const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX +
|
|
12
|
-
const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX +
|
|
13
|
-
const RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX +
|
|
4
|
+
const PCD_PREFIX = "PColumnData/";
|
|
5
|
+
const RT_RESOURCE_MAP = PCD_PREFIX + "ResourceMap";
|
|
6
|
+
const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + "Partitioned/ResourceMap";
|
|
7
|
+
const RT_JSON_PARTITIONED = PCD_PREFIX + "JsonPartitioned";
|
|
8
|
+
const RT_BINARY_PARTITIONED = PCD_PREFIX + "BinaryPartitioned";
|
|
9
|
+
const RT_PARQUET_PARTITIONED = PCD_PREFIX + "ParquetPartitioned";
|
|
10
|
+
const PCD_SUP_PREFIX = PCD_PREFIX + "Partitioned/";
|
|
11
|
+
const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + "JsonPartitioned";
|
|
12
|
+
const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + "BinaryPartitioned";
|
|
13
|
+
const RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + "ParquetPartitioned";
|
|
14
14
|
function populateResourceMapData(acc, resourceParser, data, keyPrefix = [], addEntriesWithNoData) {
|
|
15
15
|
if (acc === undefined)
|
|
16
16
|
return false;
|
|
@@ -18,7 +18,7 @@ function populateResourceMapData(acc, resourceParser, data, keyPrefix = [], addE
|
|
|
18
18
|
case RT_RESOURCE_MAP: {
|
|
19
19
|
let isComplete = acc.getInputsLocked();
|
|
20
20
|
for (const keyStr of acc.listInputFields()) {
|
|
21
|
-
const value = acc.resolve({ field: keyStr, assertFieldType:
|
|
21
|
+
const value = acc.resolve({ field: keyStr, assertFieldType: "Input" });
|
|
22
22
|
const key = [...keyPrefix, ...JSON.parse(keyStr)];
|
|
23
23
|
const converted = value === undefined ? undefined : resourceParser(value);
|
|
24
24
|
if (converted === undefined)
|
|
@@ -31,7 +31,7 @@ function populateResourceMapData(acc, resourceParser, data, keyPrefix = [], addE
|
|
|
31
31
|
case RT_RESOURCE_MAP_PARTITIONED: {
|
|
32
32
|
let isComplete = acc.getInputsLocked();
|
|
33
33
|
for (const keyStr of acc.listInputFields()) {
|
|
34
|
-
const value = acc.resolve({ field: keyStr, assertFieldType:
|
|
34
|
+
const value = acc.resolve({ field: keyStr, assertFieldType: "Input" });
|
|
35
35
|
if (value === undefined)
|
|
36
36
|
isComplete = false;
|
|
37
37
|
else {
|
|
@@ -52,11 +52,11 @@ function parseResourceMap(acc, resourceParser, addEntriesWithNoData = false) {
|
|
|
52
52
|
return { isComplete, data };
|
|
53
53
|
}
|
|
54
54
|
const removeIndexSuffix = (keyStr) => {
|
|
55
|
-
if (keyStr.endsWith(
|
|
56
|
-
return { baseKey: keyStr.substring(0, keyStr.length - 6), type:
|
|
55
|
+
if (keyStr.endsWith(".index")) {
|
|
56
|
+
return { baseKey: keyStr.substring(0, keyStr.length - 6), type: "index" };
|
|
57
57
|
}
|
|
58
|
-
else if (keyStr.endsWith(
|
|
59
|
-
return { baseKey: keyStr.substring(0, keyStr.length - 7), type:
|
|
58
|
+
else if (keyStr.endsWith(".values")) {
|
|
59
|
+
return { baseKey: keyStr.substring(0, keyStr.length - 7), type: "values" };
|
|
60
60
|
}
|
|
61
61
|
else {
|
|
62
62
|
throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);
|
|
@@ -74,20 +74,20 @@ function getPartitionKeysList(acc) {
|
|
|
74
74
|
// @TODO validate meta shape
|
|
75
75
|
switch (rt) {
|
|
76
76
|
case RT_RESOURCE_MAP:
|
|
77
|
-
keyLength = meta[
|
|
77
|
+
keyLength = meta["keyLength"];
|
|
78
78
|
break;
|
|
79
79
|
case RT_RESOURCE_MAP_PARTITIONED:
|
|
80
|
-
keyLength = meta[
|
|
80
|
+
keyLength = meta["partitionKeyLength"] + meta["keyLength"];
|
|
81
81
|
break;
|
|
82
82
|
case RT_JSON_PARTITIONED:
|
|
83
83
|
case RT_BINARY_PARTITIONED:
|
|
84
84
|
case RT_PARQUET_PARTITIONED:
|
|
85
|
-
keyLength = meta[
|
|
85
|
+
keyLength = meta["partitionKeyLength"];
|
|
86
86
|
break;
|
|
87
87
|
case RT_BINARY_SUPER_PARTITIONED:
|
|
88
88
|
case RT_JSON_SUPER_PARTITIONED:
|
|
89
89
|
case RT_PARQUET_SUPER_PARTITIONED:
|
|
90
|
-
keyLength = meta[
|
|
90
|
+
keyLength = meta["superPartitionKeyLength"] + meta["partitionKeyLength"];
|
|
91
91
|
break;
|
|
92
92
|
}
|
|
93
93
|
switch (rt) {
|
|
@@ -109,7 +109,7 @@ function getPartitionKeysList(acc) {
|
|
|
109
109
|
case RT_PARQUET_SUPER_PARTITIONED:
|
|
110
110
|
for (const supKeyStr of acc.listInputFields()) {
|
|
111
111
|
const keyPrefix = [...JSON.parse(supKeyStr)];
|
|
112
|
-
const value = acc.resolve({ field: supKeyStr, assertFieldType:
|
|
112
|
+
const value = acc.resolve({ field: supKeyStr, assertFieldType: "Input" });
|
|
113
113
|
if (value !== undefined) {
|
|
114
114
|
for (let keyStr of value.listInputFields()) {
|
|
115
115
|
if (rt === RT_BINARY_SUPER_PARTITIONED) {
|
|
@@ -125,7 +125,9 @@ function getPartitionKeysList(acc) {
|
|
|
125
125
|
return { data, keyLength };
|
|
126
126
|
}
|
|
127
127
|
function getUniquePartitionKeysForDataEntries(list) {
|
|
128
|
-
if (list.type !==
|
|
128
|
+
if (list.type !== "JsonPartitioned" &&
|
|
129
|
+
list.type !== "BinaryPartitioned" &&
|
|
130
|
+
list.type !== "ParquetPartitioned")
|
|
129
131
|
throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);
|
|
130
132
|
const { parts, partitionKeyLength } = list;
|
|
131
133
|
const result = [];
|
|
@@ -158,7 +160,7 @@ function getUniquePartitionKeys(acc) {
|
|
|
158
160
|
}
|
|
159
161
|
for (const l of data) {
|
|
160
162
|
if (l.length !== keyLength) {
|
|
161
|
-
throw new Error(
|
|
163
|
+
throw new Error("key length does not match partition length");
|
|
162
164
|
}
|
|
163
165
|
for (let i = 0; i < keyLength; ++i) {
|
|
164
166
|
result[i].add(l[i]);
|
|
@@ -183,10 +185,10 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
183
185
|
const resourceType = acc.resourceType.name;
|
|
184
186
|
const meta = acc.getDataAsJson();
|
|
185
187
|
// Prevent recursive super-partitioned resources
|
|
186
|
-
if (keyPrefix.length > 0
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
188
|
+
if (keyPrefix.length > 0 &&
|
|
189
|
+
(resourceType === RT_JSON_SUPER_PARTITIONED ||
|
|
190
|
+
resourceType === RT_BINARY_SUPER_PARTITIONED ||
|
|
191
|
+
resourceType === RT_PARQUET_SUPER_PARTITIONED)) {
|
|
190
192
|
throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);
|
|
191
193
|
}
|
|
192
194
|
switch (resourceType) {
|
|
@@ -194,25 +196,25 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
194
196
|
case RT_RESOURCE_MAP_PARTITIONED:
|
|
195
197
|
throw new Error(`Only data columns are supported, got: ${resourceType}`);
|
|
196
198
|
case RT_JSON_PARTITIONED: {
|
|
197
|
-
if (typeof meta?.partitionKeyLength !==
|
|
199
|
+
if (typeof meta?.partitionKeyLength !== "number") {
|
|
198
200
|
throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);
|
|
199
201
|
}
|
|
200
202
|
const parts = [];
|
|
201
203
|
for (const keyStr of acc.listInputFields()) {
|
|
202
|
-
const value = acc.resolve({ field: keyStr, assertFieldType:
|
|
204
|
+
const value = acc.resolve({ field: keyStr, assertFieldType: "Input" });
|
|
203
205
|
if (value === undefined)
|
|
204
206
|
return undefined;
|
|
205
207
|
const key = [...keyPrefix, ...JSON.parse(keyStr)];
|
|
206
208
|
parts.push({ key, value });
|
|
207
209
|
}
|
|
208
210
|
return {
|
|
209
|
-
type:
|
|
211
|
+
type: "JsonPartitioned",
|
|
210
212
|
partitionKeyLength: meta.partitionKeyLength,
|
|
211
213
|
parts,
|
|
212
214
|
};
|
|
213
215
|
}
|
|
214
216
|
case RT_BINARY_PARTITIONED: {
|
|
215
|
-
if (typeof meta?.partitionKeyLength !==
|
|
217
|
+
if (typeof meta?.partitionKeyLength !== "number") {
|
|
216
218
|
throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);
|
|
217
219
|
}
|
|
218
220
|
const parts = [];
|
|
@@ -220,7 +222,7 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
220
222
|
// Group fields by base key (without .index/.values suffix)
|
|
221
223
|
for (const keyStr of acc.listInputFields()) {
|
|
222
224
|
const suffix = removeIndexSuffix(keyStr);
|
|
223
|
-
const value = acc.resolve({ field: keyStr, assertFieldType:
|
|
225
|
+
const value = acc.resolve({ field: keyStr, assertFieldType: "Input" });
|
|
224
226
|
if (value === undefined)
|
|
225
227
|
return undefined;
|
|
226
228
|
let entry = baseKeys.get(suffix.baseKey);
|
|
@@ -228,7 +230,7 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
228
230
|
entry = {};
|
|
229
231
|
baseKeys.set(suffix.baseKey, entry);
|
|
230
232
|
}
|
|
231
|
-
if (suffix.type ===
|
|
233
|
+
if (suffix.type === "index") {
|
|
232
234
|
entry.index = value;
|
|
233
235
|
}
|
|
234
236
|
else {
|
|
@@ -249,39 +251,39 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
249
251
|
});
|
|
250
252
|
}
|
|
251
253
|
return {
|
|
252
|
-
type:
|
|
254
|
+
type: "BinaryPartitioned",
|
|
253
255
|
partitionKeyLength: meta.partitionKeyLength,
|
|
254
256
|
parts,
|
|
255
257
|
};
|
|
256
258
|
}
|
|
257
259
|
case RT_PARQUET_PARTITIONED: {
|
|
258
|
-
if (typeof meta?.partitionKeyLength !==
|
|
260
|
+
if (typeof meta?.partitionKeyLength !== "number") {
|
|
259
261
|
throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);
|
|
260
262
|
}
|
|
261
263
|
const parts = [];
|
|
262
264
|
for (const keyStr of acc.listInputFields()) {
|
|
263
|
-
const value = acc.resolve({ field: keyStr, assertFieldType:
|
|
265
|
+
const value = acc.resolve({ field: keyStr, assertFieldType: "Input" });
|
|
264
266
|
if (value === undefined)
|
|
265
267
|
return undefined;
|
|
266
268
|
const key = [...keyPrefix, ...JSON.parse(keyStr)];
|
|
267
269
|
parts.push({ key, value });
|
|
268
270
|
}
|
|
269
271
|
return {
|
|
270
|
-
type:
|
|
272
|
+
type: "ParquetPartitioned",
|
|
271
273
|
partitionKeyLength: meta.partitionKeyLength,
|
|
272
274
|
parts,
|
|
273
275
|
};
|
|
274
276
|
}
|
|
275
277
|
case RT_JSON_SUPER_PARTITIONED: {
|
|
276
|
-
if (typeof meta?.superPartitionKeyLength !==
|
|
277
|
-
|
|
278
|
+
if (typeof meta?.superPartitionKeyLength !== "number" ||
|
|
279
|
+
typeof meta?.partitionKeyLength !== "number") {
|
|
278
280
|
throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);
|
|
279
281
|
}
|
|
280
282
|
const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;
|
|
281
283
|
const parts = [];
|
|
282
284
|
// Process all super partitions
|
|
283
285
|
for (const supKeyStr of acc.listInputFields()) {
|
|
284
|
-
const superPartition = acc.resolve({ field: supKeyStr, assertFieldType:
|
|
286
|
+
const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: "Input" });
|
|
285
287
|
if (superPartition === undefined)
|
|
286
288
|
return undefined;
|
|
287
289
|
// Validate inner type
|
|
@@ -291,26 +293,26 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
291
293
|
const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
|
|
292
294
|
if (innerResult === undefined)
|
|
293
295
|
return undefined;
|
|
294
|
-
if (innerResult.type !==
|
|
296
|
+
if (innerResult.type !== "JsonPartitioned")
|
|
295
297
|
throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
|
|
296
298
|
parts.push(...innerResult.parts);
|
|
297
299
|
}
|
|
298
300
|
return {
|
|
299
|
-
type:
|
|
301
|
+
type: "JsonPartitioned",
|
|
300
302
|
partitionKeyLength: totalKeyLength,
|
|
301
303
|
parts,
|
|
302
304
|
};
|
|
303
305
|
}
|
|
304
306
|
case RT_BINARY_SUPER_PARTITIONED: {
|
|
305
|
-
if (typeof meta?.superPartitionKeyLength !==
|
|
306
|
-
|
|
307
|
+
if (typeof meta?.superPartitionKeyLength !== "number" ||
|
|
308
|
+
typeof meta?.partitionKeyLength !== "number") {
|
|
307
309
|
throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);
|
|
308
310
|
}
|
|
309
311
|
const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;
|
|
310
312
|
const parts = [];
|
|
311
313
|
// Process all super partitions
|
|
312
314
|
for (const supKeyStr of acc.listInputFields()) {
|
|
313
|
-
const superPartition = acc.resolve({ field: supKeyStr, assertFieldType:
|
|
315
|
+
const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: "Input" });
|
|
314
316
|
if (superPartition === undefined)
|
|
315
317
|
return undefined;
|
|
316
318
|
// Validate inner type
|
|
@@ -320,26 +322,26 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
320
322
|
const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
|
|
321
323
|
if (innerResult === undefined)
|
|
322
324
|
return undefined;
|
|
323
|
-
if (innerResult.type !==
|
|
325
|
+
if (innerResult.type !== "BinaryPartitioned")
|
|
324
326
|
throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
|
|
325
327
|
parts.push(...innerResult.parts);
|
|
326
328
|
}
|
|
327
329
|
return {
|
|
328
|
-
type:
|
|
330
|
+
type: "BinaryPartitioned",
|
|
329
331
|
partitionKeyLength: totalKeyLength,
|
|
330
332
|
parts,
|
|
331
333
|
};
|
|
332
334
|
}
|
|
333
335
|
case RT_PARQUET_SUPER_PARTITIONED: {
|
|
334
|
-
if (typeof meta?.superPartitionKeyLength !==
|
|
335
|
-
|
|
336
|
+
if (typeof meta?.superPartitionKeyLength !== "number" ||
|
|
337
|
+
typeof meta?.partitionKeyLength !== "number") {
|
|
336
338
|
throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);
|
|
337
339
|
}
|
|
338
340
|
const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;
|
|
339
341
|
const parts = [];
|
|
340
342
|
// Process all super partitions
|
|
341
343
|
for (const supKeyStr of acc.listInputFields()) {
|
|
342
|
-
const superPartition = acc.resolve({ field: supKeyStr, assertFieldType:
|
|
344
|
+
const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: "Input" });
|
|
343
345
|
if (superPartition === undefined)
|
|
344
346
|
return undefined;
|
|
345
347
|
// Validate inner type
|
|
@@ -349,12 +351,12 @@ function parsePColumnData(acc, keyPrefix = []) {
|
|
|
349
351
|
const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
|
|
350
352
|
if (innerResult === undefined)
|
|
351
353
|
return undefined;
|
|
352
|
-
if (innerResult.type !==
|
|
354
|
+
if (innerResult.type !== "ParquetPartitioned")
|
|
353
355
|
throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
|
|
354
356
|
parts.push(...innerResult.parts);
|
|
355
357
|
}
|
|
356
358
|
return {
|
|
357
|
-
type:
|
|
359
|
+
type: "ParquetPartitioned",
|
|
358
360
|
partitionKeyLength: totalKeyLength,
|
|
359
361
|
parts,
|
|
360
362
|
};
|
|
@@ -384,7 +386,7 @@ function isPColumnReady(c) {
|
|
|
384
386
|
const isValues = (d) => Array.isArray(d);
|
|
385
387
|
const isAccessor = (d) => d instanceof TreeNodeAccessor;
|
|
386
388
|
let ready = true;
|
|
387
|
-
const data = typeof c.data ===
|
|
389
|
+
const data = typeof c.data === "function" ? c.data() : c.data;
|
|
388
390
|
if (data == null) {
|
|
389
391
|
return false;
|
|
390
392
|
}
|
|
@@ -392,7 +394,7 @@ function isPColumnReady(c) {
|
|
|
392
394
|
ready &&= data.getIsReadyOrError();
|
|
393
395
|
}
|
|
394
396
|
else if (isDataInfo(data)) {
|
|
395
|
-
visitDataInfo(data, (v) => ready &&= v.getIsReadyOrError());
|
|
397
|
+
visitDataInfo(data, (v) => (ready &&= v.getIsReadyOrError()));
|
|
396
398
|
}
|
|
397
399
|
else if (!isValues(data)) {
|
|
398
400
|
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pcolumn_data.js","sources":["../../../src/render/util/pcolumn_data.ts"],"sourcesContent":["import type {\n DataInfo,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnValues,\n} from '@milaboratories/pl-model-common';\nimport {\n dataInfoToEntries,\n isDataInfo,\n isDataInfoEntries,\n visitDataInfo,\n type BinaryChunk,\n type DataInfoEntries,\n type PColumnDataEntry,\n type PColumnKey,\n} from '@milaboratories/pl-model-common';\nimport { TreeNodeAccessor } from '../accessor';\nimport type { PColumnDataUniversal } from '../api';\n\nconst PCD_PREFIX = 'PColumnData/';\n\nexport const RT_RESOURCE_MAP = PCD_PREFIX + 'ResourceMap';\nexport const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + 'Partitioned/ResourceMap';\n\nexport const RT_JSON_PARTITIONED = PCD_PREFIX + 'JsonPartitioned';\nexport const RT_BINARY_PARTITIONED = PCD_PREFIX + 'BinaryPartitioned';\nexport const RT_PARQUET_PARTITIONED = PCD_PREFIX + 'ParquetPartitioned';\n\nconst PCD_SUP_PREFIX = PCD_PREFIX + 'Partitioned/';\nexport const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + 'JsonPartitioned';\nexport const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + 'BinaryPartitioned';\nexport const RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + 'ParquetPartitioned';\n\nexport type PColumnResourceMapEntry<T> = {\n key: PColumnKey;\n value: T;\n};\n\nexport type PColumnResourceMapData<T> = {\n isComplete: boolean;\n data: PColumnResourceMapEntry<T>[];\n};\n\nfunction populateResourceMapData<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n data: PColumnResourceMapEntry<T | undefined>[],\n keyPrefix: PColumnKey = [],\n addEntriesWithNoData: boolean,\n): boolean {\n if (acc === undefined) return false;\n switch (acc.resourceType.name) {\n case RT_RESOURCE_MAP: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const converted = value === undefined ? undefined : resourceParser(value);\n if (converted === undefined) isComplete = false;\n if (converted !== undefined || addEntriesWithNoData) data.push({ key, value: converted });\n }\n return isComplete;\n }\n case RT_RESOURCE_MAP_PARTITIONED: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });\n if (value === undefined) isComplete = false;\n else {\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const populateResult = populateResourceMapData(\n value,\n resourceParser,\n data,\n key,\n addEntriesWithNoData,\n );\n isComplete = isComplete && populateResult;\n }\n }\n return isComplete;\n }\n default:\n throw new Error(`Unknown resource type: ${acc.resourceType.name}`);\n }\n}\n\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: false\n): PColumnResourceMapData<NonNullable<T>>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: true\n): PColumnResourceMapData<T | undefined>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: boolean = false,\n): PColumnResourceMapData<T | undefined> {\n const data: PColumnResourceMapEntry<T | undefined>[] = [];\n const isComplete = populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData);\n return { isComplete, data };\n}\n\nexport type PColumnKeyList = {\n /** array of keys */\n data: PColumnKey[];\n /** length of partition key */\n keyLength: number;\n};\n\nconst removeIndexSuffix = (keyStr: string): { baseKey: string; type: 'index' | 'values' } => {\n if (keyStr.endsWith('.index')) {\n return { baseKey: keyStr.substring(0, keyStr.length - 6), type: 'index' };\n } else if (keyStr.endsWith('.values')) {\n return { baseKey: keyStr.substring(0, keyStr.length - 7), type: 'values' };\n } else {\n throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);\n }\n};\n\n// @TODO define a class with various resource map operations\n/** Returns a list of all partition keys appeared in the p-column */\nexport function getPartitionKeysList(\n acc: TreeNodeAccessor | undefined,\n): PColumnKeyList | undefined {\n if (!acc) return undefined;\n\n const rt = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n const data: PColumnKey[] = [];\n\n let keyLength = 0;\n // @TODO validate meta shape\n switch (rt) {\n case RT_RESOURCE_MAP:\n keyLength = meta['keyLength'];\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n keyLength = meta['partitionKeyLength'] + meta['keyLength'];\n break;\n\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n keyLength = meta['partitionKeyLength'];\n break;\n\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n keyLength = meta['superPartitionKeyLength'] + meta['partitionKeyLength'];\n break;\n }\n\n switch (rt) {\n case RT_RESOURCE_MAP:\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n for (let keyStr of acc.listInputFields()) {\n if (rt === RT_BINARY_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n for (const supKeyStr of acc.listInputFields()) {\n const keyPrefix = [...JSON.parse(supKeyStr)] as PColumnKey;\n\n const value = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });\n if (value !== undefined) {\n for (let keyStr of value.listInputFields()) {\n if (rt === RT_BINARY_SUPER_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n }\n }\n break;\n }\n\n return { data, keyLength };\n}\n\nfunction getUniquePartitionKeysForDataEntries(list: DataInfoEntries<unknown>): (string | number)[][] {\n if (list.type !== 'JsonPartitioned' && list.type !== 'BinaryPartitioned' && list.type !== 'ParquetPartitioned')\n throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);\n\n const { parts, partitionKeyLength } = list;\n\n const result: Set<string | number>[] = [];\n for (let i = 0; i < partitionKeyLength; ++i) {\n result.push(new Set());\n }\n\n for (const part of parts) {\n const key = part.key;\n if (key.length !== partitionKeyLength) {\n throw new Error(\n `Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(\n key,\n )}`,\n );\n }\n for (let i = 0; i < partitionKeyLength; ++i) {\n result[i].add(key[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/** Returns an array of unique partition keys for each column: the i-th element in the resulting 2d array contains all unique values of i-th partition axis. */\nexport function getUniquePartitionKeys(acc: DataInfoEntries<unknown>): (string | number)[][];\nexport function getUniquePartitionKeys(acc: DataInfoEntries<unknown> | TreeNodeAccessor | undefined): (string | number)[][] | undefined;\nexport function getUniquePartitionKeys(\n acc: TreeNodeAccessor | DataInfoEntries<unknown> | undefined,\n): (string | number)[][] | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc))\n return getUniquePartitionKeysForDataEntries(acc);\n\n const list = getPartitionKeysList(acc);\n if (!list) return undefined;\n\n const { data, keyLength } = list;\n\n const result: Set<string | number>[] = [];\n\n for (let i = 0; i < keyLength; ++i) {\n result.push(new Set());\n }\n\n for (const l of data) {\n if (l.length !== keyLength) {\n throw new Error('key length does not match partition length');\n }\n for (let i = 0; i < keyLength; ++i) {\n result[i].add(l[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/**\n * Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.\n * Returns undefined if any required data is missing.\n * Throws error on validation failures.\n *\n * @param acc - The TreeNodeAccessor containing PColumn data\n * @param keyPrefix - Optional key prefix for recursive calls\n * @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete\n */\nexport function parsePColumnData(\n acc: TreeNodeAccessor | undefined,\n keyPrefix: PColumnKey = [],\n): PartitionedDataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (!acc.getIsReadyOrError()) return undefined;\n\n const resourceType = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n\n // Prevent recursive super-partitioned resources\n if (keyPrefix.length > 0\n && (resourceType === RT_JSON_SUPER_PARTITIONED\n || resourceType === RT_BINARY_SUPER_PARTITIONED\n || resourceType === RT_PARQUET_SUPER_PARTITIONED)) {\n throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);\n }\n\n switch (resourceType) {\n case RT_RESOURCE_MAP:\n case RT_RESOURCE_MAP_PARTITIONED:\n throw new Error(`Only data columns are supported, got: ${resourceType}`);\n\n case RT_JSON_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== 'number') {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: 'JsonPartitioned',\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== 'number') {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n const baseKeys = new Map<string, { index?: TreeNodeAccessor; values?: TreeNodeAccessor }>();\n\n // Group fields by base key (without .index/.values suffix)\n for (const keyStr of acc.listInputFields()) {\n const suffix = removeIndexSuffix(keyStr);\n\n const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });\n if (value === undefined) return undefined;\n\n let entry = baseKeys.get(suffix.baseKey);\n if (!entry) {\n entry = {};\n baseKeys.set(suffix.baseKey, entry);\n }\n\n if (suffix.type === 'index') {\n entry.index = value;\n } else {\n entry.values = value;\n }\n }\n\n // Process complete binary chunks only\n for (const [baseKeyStr, entry] of baseKeys.entries()) {\n if (!entry.index || !entry.values) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(baseKeyStr)];\n parts.push({\n key,\n value: {\n index: entry.index,\n values: entry.values,\n },\n });\n }\n\n return {\n type: 'BinaryPartitioned',\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== 'number') {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: 'ParquetPartitioned',\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_JSON_SUPER_PARTITIONED: {\n if (typeof meta?.superPartitionKeyLength !== 'number'\n || typeof meta?.partitionKeyLength !== 'number') {\n throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) {\n throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== 'JsonPartitioned')\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: 'JsonPartitioned',\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_SUPER_PARTITIONED: {\n if (typeof meta?.superPartitionKeyLength !== 'number'\n || typeof meta?.partitionKeyLength !== 'number') {\n throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) {\n throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== 'BinaryPartitioned')\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: 'BinaryPartitioned',\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_SUPER_PARTITIONED: {\n if (typeof meta?.superPartitionKeyLength !== 'number'\n || typeof meta?.partitionKeyLength !== 'number') {\n throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_PARQUET_PARTITIONED) {\n throw new Error(`Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== 'ParquetPartitioned')\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: 'ParquetPartitioned',\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n default:\n throw new Error(`Unknown resource type: ${resourceType}`);\n }\n}\n\n/**\n * Converts or parses the input into DataInfoEntries format.\n\n * @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.\n * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.\n */\nexport function convertOrParsePColumnData(\n acc: TreeNodeAccessor | DataInfoEntries<TreeNodeAccessor> | DataInfo<TreeNodeAccessor> | undefined,\n): DataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return acc;\n if (isDataInfo(acc)) return dataInfoToEntries(acc);\n if (acc instanceof TreeNodeAccessor) return parsePColumnData(acc);\n\n throw new Error(`Unexpected input type: ${typeof acc}`);\n}\n\nexport function isPColumnReady(c: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)): c is PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal> {\n const isValues = (d: PColumnDataUniversal): d is PColumnValues => Array.isArray(d);\n const isAccessor = (d: PColumnDataUniversal): d is TreeNodeAccessor => d instanceof TreeNodeAccessor;\n\n let ready = true;\n const data = typeof c.data === 'function' ? c.data() : c.data;\n if (data == null) {\n return false;\n } else if (isAccessor(data)) {\n ready &&= data.getIsReadyOrError();\n } else if (isDataInfo(data)) {\n visitDataInfo(data, (v) => ready &&= v.getIsReadyOrError());\n } else if (!isValues(data)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw Error(`unsupported column data type: ${data satisfies never}`);\n }\n return ready;\n}\n\nexport function allPColumnsReady(columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[]): columns is (PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>)[] {\n return columns.every(isPColumnReady);\n}\n"],"names":[],"mappings":";;;AAoBA,MAAM,UAAU,GAAG,cAAc;AAE1B,MAAM,eAAe,GAAG,UAAU,GAAG;AACrC,MAAM,2BAA2B,GAAG,UAAU,GAAG;AAEjD,MAAM,mBAAmB,GAAG,UAAU,GAAG;AACzC,MAAM,qBAAqB,GAAG,UAAU,GAAG;AAC3C,MAAM,sBAAsB,GAAG,UAAU,GAAG;AAEnD,MAAM,cAAc,GAAG,UAAU,GAAG,cAAc;AAC3C,MAAM,yBAAyB,GAAG,cAAc,GAAG;AACnD,MAAM,2BAA2B,GAAG,cAAc,GAAG;AACrD,MAAM,4BAA4B,GAAG,cAAc,GAAG;AAY7D,SAAS,uBAAuB,CAC9B,GAAiC,EACjC,cAAwD,EACxD,IAA8C,EAC9C,SAAA,GAAwB,EAAE,EAC1B,oBAA6B,EAAA;IAE7B,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,QAAQ,GAAG,CAAC,YAAY,CAAC,IAAI;QAC3B,KAAK,eAAe,EAAE;AACpB,YAAA,IAAI,UAAU,GAAG,GAAG,CAAC,eAAe,EAAE;YACtC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AACtE,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AAC/D,gBAAA,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC;gBACzE,IAAI,SAAS,KAAK,SAAS;oBAAE,UAAU,GAAG,KAAK;AAC/C,gBAAA,IAAI,SAAS,KAAK,SAAS,IAAI,oBAAoB;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC3F;AACA,YAAA,OAAO,UAAU;QACnB;QACA,KAAK,2BAA2B,EAAE;AAChC,YAAA,IAAI,UAAU,GAAG,GAAG,CAAC,eAAe,EAAE;YACtC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;oBAAE,UAAU,GAAG,KAAK;qBACtC;AACH,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AAC/D,oBAAA,MAAM,cAAc,GAAG,uBAAuB,CAC5C,KAAK,EACL,cAAc,EACd,IAAI,EACJ,GAAG,EACH,oBAAoB,CACrB;AACD,oBAAA,UAAU,GAAG,UAAU,IAAI,cAAc;gBAC3C;YACF;AACA,YAAA,OAAO,UAAU;QACnB;AACA,QAAA;YACE,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,GAAG,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CAAC;;AAExE;AAYM,SAAU,gBAAgB,CAC9B,GAAiC,EACjC,cAAwD,EACxD,uBAAgC,KAAK,EAAA;IAErC,MAAM,IAAI,GAA6C,EAAE;AACzD,IAAA,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,CAAC;AAC/F,IAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;AAC7B;AASA,MAAM,iBAAiB,GAAG,CAAC,MAAc,KAAmD;AAC1F,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3E;AAAO,SAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACrC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5E;SAAO;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAA,CAAE,CAAC;IACxF;AACF,CAAC;AAED;AACA;AACM,SAAU,oBAAoB,CAClC,GAAiC,EAAA;AAEjC,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,SAAS;AAE1B,IAAA,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI;AAChC,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAA0B;IACxD,MAAM,IAAI,GAAiB,EAAE;IAE7B,IAAI,SAAS,GAAG,CAAC;;IAEjB,QAAQ,EAAE;AACR,QAAA,KAAK,eAAe;AAClB,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B;AAEF,QAAA,KAAK,2BAA2B;YAC9B,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1D;AAEF,QAAA,KAAK,mBAAmB;AACxB,QAAA,KAAK,qBAAqB;AAC1B,QAAA,KAAK,sBAAsB;AACzB,YAAA,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACtC;AAEF,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,yBAAyB;AAC9B,QAAA,KAAK,4BAA4B;YAC/B,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACxE;;IAGJ,QAAQ,EAAE;AACR,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,mBAAmB;AACxB,QAAA,KAAK,qBAAqB;AAC1B,QAAA,KAAK,sBAAsB;YACzB,KAAK,IAAI,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AACxC,gBAAA,IAAI,EAAE,KAAK,qBAAqB,EAAE;AAChC,oBAAA,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO;gBAC5C;gBACA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AACjD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB;YAEA;AAEF,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,yBAAyB;AAC9B,QAAA,KAAK,4BAA4B;YAC/B,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAe;AAE1D,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AACzE,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE;AAC1C,wBAAA,IAAI,EAAE,KAAK,2BAA2B,EAAE;AACtC,4BAAA,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO;wBAC5C;AACA,wBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AAC/D,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBAChB;gBACF;YACF;YACA;;AAGJ,IAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;AAC5B;AAEA,SAAS,oCAAoC,CAAC,IAA8B,EAAA;AAC1E,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAC5G,MAAM,IAAI,KAAK,CAAC,CAAA,oDAAA,EAAuD,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;AAErF,IAAA,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAE1C,MAAM,MAAM,GAA2B,EAAE;AACzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,EAAE,CAAC,EAAE;AAC3C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACxB;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,CAAC,MAAM,CAAA,mCAAA,EAAsC,kBAAkB,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAC3G,GAAG,CACJ,CAAA,CAAE,CACJ;QACH;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,EAAE,CAAC,EAAE;YAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB;IACF;AAEA,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD;AAKM,SAAU,sBAAsB,CACpC,GAA4D,EAAA;IAE5D,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;IAEvC,IAAI,iBAAiB,CAAC,GAAG,CAAC;AACxB,QAAA,OAAO,oCAAoC,CAAC,GAAG,CAAC;AAElD,IAAA,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC;AACtC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,SAAS;AAE3B,IAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI;IAEhC,MAAM,MAAM,GAA2B,EAAE;AAEzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;AAClC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACxB;AAEA,IAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;YAClC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB;IACF;AAEA,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD;AAEA;;;;;;;;AAQG;SACa,gBAAgB,CAC9B,GAAiC,EACjC,YAAwB,EAAE,EAAA;IAE1B,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;AAEvC,IAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAAE,QAAA,OAAO,SAAS;AAE9C,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI;AAC1C,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAA0B;;AAGxD,IAAA,IAAI,SAAS,CAAC,MAAM,GAAG;YACjB,YAAY,KAAK;AAChB,eAAA,YAAY,KAAK;AACjB,eAAA,YAAY,KAAK,4BAA4B,CAAC,EAAE;AACrD,QAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,YAAY,CAAA,CAAE,CAAC;IAClF;IAEA,QAAQ,YAAY;AAClB,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,2BAA2B;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,YAAY,CAAA,CAAE,CAAC;QAE1E,KAAK,mBAAmB,EAAE;AACxB,YAAA,IAAI,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,CAAA,CAAE,CAAC;YAC/E;YAEA,MAAM,KAAK,GAAyC,EAAE;YACtD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAEzC,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;YAC5B;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK;aACN;QACH;QAEA,KAAK,qBAAqB,EAAE;AAC1B,YAAA,IAAI,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,CAAA,CAAE,CAAC;YAC/E;YAEA,MAAM,KAAK,GAAsD,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmE;;YAG3F,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAExC,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;gBAEzC,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxC,IAAI,CAAC,KAAK,EAAE;oBACV,KAAK,GAAG,EAAE;oBACV,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;gBACrC;AAEA,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK;gBACrB;qBAAO;AACL,oBAAA,KAAK,CAAC,MAAM,GAAG,KAAK;gBACtB;YACF;;AAGA,YAAA,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;gBACpD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,oBAAA,OAAO,SAAS;AAEnD,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG;AACH,oBAAA,KAAK,EAAE;wBACL,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,qBAAA;AACF,iBAAA,CAAC;YACJ;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK;aACN;QACH;QAEA,KAAK,sBAAsB,EAAE;AAC3B,YAAA,IAAI,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,CAAA,CAAE,CAAC;YAC/E;YAEA,MAAM,KAAK,GAAyC,EAAE;YACtD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAEzC,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;YAC5B;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,oBAAoB;gBAC1B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK;aACN;QACH;QAEA,KAAK,yBAAyB,EAAE;AAC9B,YAAA,IAAI,OAAO,IAAI,EAAE,uBAAuB,KAAK;AACxC,mBAAA,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AACjD,gBAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,YAAY,CAAA,CAAE,CAAC;YAC1G;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB;YAC7E,MAAM,KAAK,GAAyC,EAAE;;YAGtD,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAClF,IAAI,cAAc,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;;gBAGlD,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,mBAAmB,EAAE;AAC5D,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,SAAA,EAAY,mBAAmB,CAAA,QAAA,EAAW,YAAY,CAAA,UAAA,EAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CAAC;gBACxH;AAEA,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAe,CAAC;gBAEzF,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAE/C,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,iBAAiB;oBACxC,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,YAAY,CAAA,EAAA,EAAK,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;gBAE1F,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAClC;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,kBAAkB,EAAE,cAAc;gBAClC,KAAK;aACN;QACH;QAEA,KAAK,2BAA2B,EAAE;AAChC,YAAA,IAAI,OAAO,IAAI,EAAE,uBAAuB,KAAK;AACxC,mBAAA,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AACjD,gBAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,YAAY,CAAA,CAAE,CAAC;YAC1G;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB;YAC7E,MAAM,KAAK,GAAsD,EAAE;;YAGnE,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAClF,IAAI,cAAc,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;;gBAGlD,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,qBAAqB,EAAE;AAC9D,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,SAAA,EAAY,qBAAqB,CAAA,QAAA,EAAW,YAAY,CAAA,UAAA,EAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CAAC;gBAC1H;AAEA,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAe,CAAC;gBAEzF,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAE/C,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB;oBAC1C,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,YAAY,CAAA,EAAA,EAAK,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;gBAE1F,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAClC;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,kBAAkB,EAAE,cAAc;gBAClC,KAAK;aACN;QACH;QAEA,KAAK,4BAA4B,EAAE;AACjC,YAAA,IAAI,OAAO,IAAI,EAAE,uBAAuB,KAAK;AACxC,mBAAA,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AACjD,gBAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,YAAY,CAAA,CAAE,CAAC;YAC1G;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB;YAC7E,MAAM,KAAK,GAAyC,EAAE;;YAGtD,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAClF,IAAI,cAAc,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;;gBAGlD,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,sBAAsB,EAAE;AAC/D,oBAAA,MAAM,IAAI,KAAK,CAAC,CAAA,SAAA,EAAY,sBAAsB,CAAA,QAAA,EAAW,YAAY,CAAA,UAAA,EAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CAAC;gBAC3H;AAEA,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAe,CAAC;gBAEzF,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAE/C,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,oBAAoB;oBAC3C,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,YAAY,CAAA,EAAA,EAAK,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;gBAE1F,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAClC;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,kBAAkB,EAAE,cAAc;gBAClC,KAAK;aACN;QACH;AAEA,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,CAAA,CAAE,CAAC;;AAE/D;AAEA;;;;;AAKG;AACG,SAAU,yBAAyB,CACvC,GAAkG,EAAA;IAElG,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;IAEvC,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG;IACtC,IAAI,UAAU,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,iBAAiB,CAAC,GAAG,CAAC;IAClD,IAAI,GAAG,YAAY,gBAAgB;AAAE,QAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC;IAEjE,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,OAAO,GAAG,CAAA,CAAE,CAAC;AACzD;AAEM,SAAU,cAAc,CAAC,CAAkF,EAAA;AAC/G,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAuB,KAAyB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,CAAC,CAAuB,KAA4B,CAAC,YAAY,gBAAgB;IAEpG,IAAI,KAAK,GAAG,IAAI;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI;AAC7D,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,KAAK;IACd;AAAO,SAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAA,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE;IACpC;AAAO,SAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAA,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC;IAC7D;AAAO,SAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;AAE1B,QAAA,MAAM,KAAK,CAAC,CAAA,8BAAA,EAAiC,IAAoB,CAAA,CAAE,CAAC;IACtE;AACA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,gBAAgB,CAAC,OAA0F,EAAA;AACzH,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACtC;;;;"}
|
|
1
|
+
{"version":3,"file":"pcolumn_data.js","sources":["../../../src/render/util/pcolumn_data.ts"],"sourcesContent":["import type {\n DataInfo,\n PartitionedDataInfoEntries,\n PColumn,\n PColumnLazy,\n PColumnValues,\n} from \"@milaboratories/pl-model-common\";\nimport {\n dataInfoToEntries,\n isDataInfo,\n isDataInfoEntries,\n visitDataInfo,\n type BinaryChunk,\n type DataInfoEntries,\n type PColumnDataEntry,\n type PColumnKey,\n} from \"@milaboratories/pl-model-common\";\nimport { TreeNodeAccessor } from \"../accessor\";\nimport type { PColumnDataUniversal } from \"../api\";\n\nconst PCD_PREFIX = \"PColumnData/\";\n\nexport const RT_RESOURCE_MAP = PCD_PREFIX + \"ResourceMap\";\nexport const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + \"Partitioned/ResourceMap\";\n\nexport const RT_JSON_PARTITIONED = PCD_PREFIX + \"JsonPartitioned\";\nexport const RT_BINARY_PARTITIONED = PCD_PREFIX + \"BinaryPartitioned\";\nexport const RT_PARQUET_PARTITIONED = PCD_PREFIX + \"ParquetPartitioned\";\n\nconst PCD_SUP_PREFIX = PCD_PREFIX + \"Partitioned/\";\nexport const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"JsonPartitioned\";\nexport const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"BinaryPartitioned\";\nexport const RT_PARQUET_SUPER_PARTITIONED = PCD_SUP_PREFIX + \"ParquetPartitioned\";\n\nexport type PColumnResourceMapEntry<T> = {\n key: PColumnKey;\n value: T;\n};\n\nexport type PColumnResourceMapData<T> = {\n isComplete: boolean;\n data: PColumnResourceMapEntry<T>[];\n};\n\nfunction populateResourceMapData<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n data: PColumnResourceMapEntry<T | undefined>[],\n keyPrefix: PColumnKey = [],\n addEntriesWithNoData: boolean,\n): boolean {\n if (acc === undefined) return false;\n switch (acc.resourceType.name) {\n case RT_RESOURCE_MAP: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const converted = value === undefined ? undefined : resourceParser(value);\n if (converted === undefined) isComplete = false;\n if (converted !== undefined || addEntriesWithNoData) data.push({ key, value: converted });\n }\n return isComplete;\n }\n case RT_RESOURCE_MAP_PARTITIONED: {\n let isComplete = acc.getInputsLocked();\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) isComplete = false;\n else {\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n const populateResult = populateResourceMapData(\n value,\n resourceParser,\n data,\n key,\n addEntriesWithNoData,\n );\n isComplete = isComplete && populateResult;\n }\n }\n return isComplete;\n }\n default:\n throw new Error(`Unknown resource type: ${acc.resourceType.name}`);\n }\n}\n\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: false,\n): PColumnResourceMapData<NonNullable<T>>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: true,\n): PColumnResourceMapData<T | undefined>;\nexport function parseResourceMap<T>(\n acc: TreeNodeAccessor | undefined,\n resourceParser: (acc: TreeNodeAccessor) => T | undefined,\n addEntriesWithNoData: boolean = false,\n): PColumnResourceMapData<T | undefined> {\n const data: PColumnResourceMapEntry<T | undefined>[] = [];\n const isComplete = populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData);\n return { isComplete, data };\n}\n\nexport type PColumnKeyList = {\n /** array of keys */\n data: PColumnKey[];\n /** length of partition key */\n keyLength: number;\n};\n\nconst removeIndexSuffix = (keyStr: string): { baseKey: string; type: \"index\" | \"values\" } => {\n if (keyStr.endsWith(\".index\")) {\n return { baseKey: keyStr.substring(0, keyStr.length - 6), type: \"index\" };\n } else if (keyStr.endsWith(\".values\")) {\n return { baseKey: keyStr.substring(0, keyStr.length - 7), type: \"values\" };\n } else {\n throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);\n }\n};\n\n// @TODO define a class with various resource map operations\n/** Returns a list of all partition keys appeared in the p-column */\nexport function getPartitionKeysList(\n acc: TreeNodeAccessor | undefined,\n): PColumnKeyList | undefined {\n if (!acc) return undefined;\n\n const rt = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n const data: PColumnKey[] = [];\n\n let keyLength = 0;\n // @TODO validate meta shape\n switch (rt) {\n case RT_RESOURCE_MAP:\n keyLength = meta[\"keyLength\"];\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n keyLength = meta[\"partitionKeyLength\"] + meta[\"keyLength\"];\n break;\n\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n keyLength = meta[\"partitionKeyLength\"];\n break;\n\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n keyLength = meta[\"superPartitionKeyLength\"] + meta[\"partitionKeyLength\"];\n break;\n }\n\n switch (rt) {\n case RT_RESOURCE_MAP:\n case RT_JSON_PARTITIONED:\n case RT_BINARY_PARTITIONED:\n case RT_PARQUET_PARTITIONED:\n for (let keyStr of acc.listInputFields()) {\n if (rt === RT_BINARY_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n\n break;\n\n case RT_RESOURCE_MAP_PARTITIONED:\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_SUPER_PARTITIONED:\n case RT_PARQUET_SUPER_PARTITIONED:\n for (const supKeyStr of acc.listInputFields()) {\n const keyPrefix = [...JSON.parse(supKeyStr)] as PColumnKey;\n\n const value = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (value !== undefined) {\n for (let keyStr of value.listInputFields()) {\n if (rt === RT_BINARY_SUPER_PARTITIONED) {\n keyStr = removeIndexSuffix(keyStr).baseKey;\n }\n const key = [...keyPrefix, ...JSON.parse(keyStr)] as PColumnKey;\n data.push(key);\n }\n }\n }\n break;\n }\n\n return { data, keyLength };\n}\n\nfunction getUniquePartitionKeysForDataEntries(\n list: DataInfoEntries<unknown>,\n): (string | number)[][] {\n if (\n list.type !== \"JsonPartitioned\" &&\n list.type !== \"BinaryPartitioned\" &&\n list.type !== \"ParquetPartitioned\"\n )\n throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);\n\n const { parts, partitionKeyLength } = list;\n\n const result: Set<string | number>[] = [];\n for (let i = 0; i < partitionKeyLength; ++i) {\n result.push(new Set());\n }\n\n for (const part of parts) {\n const key = part.key;\n if (key.length !== partitionKeyLength) {\n throw new Error(\n `Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(\n key,\n )}`,\n );\n }\n for (let i = 0; i < partitionKeyLength; ++i) {\n result[i].add(key[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/** Returns an array of unique partition keys for each column: the i-th element in the resulting 2d array contains all unique values of i-th partition axis. */\nexport function getUniquePartitionKeys(acc: DataInfoEntries<unknown>): (string | number)[][];\nexport function getUniquePartitionKeys(\n acc: DataInfoEntries<unknown> | TreeNodeAccessor | undefined,\n): (string | number)[][] | undefined;\nexport function getUniquePartitionKeys(\n acc: TreeNodeAccessor | DataInfoEntries<unknown> | undefined,\n): (string | number)[][] | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return getUniquePartitionKeysForDataEntries(acc);\n\n const list = getPartitionKeysList(acc);\n if (!list) return undefined;\n\n const { data, keyLength } = list;\n\n const result: Set<string | number>[] = [];\n\n for (let i = 0; i < keyLength; ++i) {\n result.push(new Set());\n }\n\n for (const l of data) {\n if (l.length !== keyLength) {\n throw new Error(\"key length does not match partition length\");\n }\n for (let i = 0; i < keyLength; ++i) {\n result[i].add(l[i]);\n }\n }\n\n return result.map((s) => Array.from(s.values()));\n}\n\n/**\n * Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.\n * Returns undefined if any required data is missing.\n * Throws error on validation failures.\n *\n * @param acc - The TreeNodeAccessor containing PColumn data\n * @param keyPrefix - Optional key prefix for recursive calls\n * @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete\n */\nexport function parsePColumnData(\n acc: TreeNodeAccessor | undefined,\n keyPrefix: PColumnKey = [],\n): PartitionedDataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (!acc.getIsReadyOrError()) return undefined;\n\n const resourceType = acc.resourceType.name;\n const meta = acc.getDataAsJson<Record<string, number>>();\n\n // Prevent recursive super-partitioned resources\n if (\n keyPrefix.length > 0 &&\n (resourceType === RT_JSON_SUPER_PARTITIONED ||\n resourceType === RT_BINARY_SUPER_PARTITIONED ||\n resourceType === RT_PARQUET_SUPER_PARTITIONED)\n ) {\n throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);\n }\n\n switch (resourceType) {\n case RT_RESOURCE_MAP:\n case RT_RESOURCE_MAP_PARTITIONED:\n throw new Error(`Only data columns are supported, got: ${resourceType}`);\n\n case RT_JSON_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n const baseKeys = new Map<string, { index?: TreeNodeAccessor; values?: TreeNodeAccessor }>();\n\n // Group fields by base key (without .index/.values suffix)\n for (const keyStr of acc.listInputFields()) {\n const suffix = removeIndexSuffix(keyStr);\n\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n let entry = baseKeys.get(suffix.baseKey);\n if (!entry) {\n entry = {};\n baseKeys.set(suffix.baseKey, entry);\n }\n\n if (suffix.type === \"index\") {\n entry.index = value;\n } else {\n entry.values = value;\n }\n }\n\n // Process complete binary chunks only\n for (const [baseKeyStr, entry] of baseKeys.entries()) {\n if (!entry.index || !entry.values) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(baseKeyStr)];\n parts.push({\n key,\n value: {\n index: entry.index,\n values: entry.values,\n },\n });\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_PARTITIONED: {\n if (typeof meta?.partitionKeyLength !== \"number\") {\n throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);\n }\n\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n for (const keyStr of acc.listInputFields()) {\n const value = acc.resolve({ field: keyStr, assertFieldType: \"Input\" });\n if (value === undefined) return undefined;\n\n const key = [...keyPrefix, ...JSON.parse(keyStr)];\n parts.push({ key, value });\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: meta.partitionKeyLength,\n parts,\n };\n }\n\n case RT_JSON_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) {\n throw new Error(\n `Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"JsonPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"JsonPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_BINARY_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<BinaryChunk<TreeNodeAccessor>>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) {\n throw new Error(\n `Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"BinaryPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"BinaryPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n case RT_PARQUET_SUPER_PARTITIONED: {\n if (\n typeof meta?.superPartitionKeyLength !== \"number\" ||\n typeof meta?.partitionKeyLength !== \"number\"\n ) {\n throw new Error(\n `Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`,\n );\n }\n\n const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;\n const parts: PColumnDataEntry<TreeNodeAccessor>[] = [];\n\n // Process all super partitions\n for (const supKeyStr of acc.listInputFields()) {\n const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: \"Input\" });\n if (superPartition === undefined) return undefined;\n\n // Validate inner type\n if (superPartition.resourceType.name !== RT_PARQUET_PARTITIONED) {\n throw new Error(\n `Expected ${RT_PARQUET_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`,\n );\n }\n\n const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr) as PColumnKey);\n\n if (innerResult === undefined) return undefined;\n\n if (innerResult.type !== \"ParquetPartitioned\")\n throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);\n\n parts.push(...innerResult.parts);\n }\n\n return {\n type: \"ParquetPartitioned\",\n partitionKeyLength: totalKeyLength,\n parts,\n };\n }\n\n default:\n throw new Error(`Unknown resource type: ${resourceType}`);\n }\n}\n\n/**\n * Converts or parses the input into DataInfoEntries format.\n\n * @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.\n * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.\n */\nexport function convertOrParsePColumnData(\n acc:\n | TreeNodeAccessor\n | DataInfoEntries<TreeNodeAccessor>\n | DataInfo<TreeNodeAccessor>\n | undefined,\n): DataInfoEntries<TreeNodeAccessor> | undefined {\n if (acc === undefined) return undefined;\n\n if (isDataInfoEntries(acc)) return acc;\n if (isDataInfo(acc)) return dataInfoToEntries(acc);\n if (acc instanceof TreeNodeAccessor) return parsePColumnData(acc);\n\n throw new Error(`Unexpected input type: ${typeof acc}`);\n}\n\nexport function isPColumnReady(\n c: PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>,\n): c is PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal> {\n const isValues = (d: PColumnDataUniversal): d is PColumnValues => Array.isArray(d);\n const isAccessor = (d: PColumnDataUniversal): d is TreeNodeAccessor =>\n d instanceof TreeNodeAccessor;\n\n let ready = true;\n const data = typeof c.data === \"function\" ? c.data() : c.data;\n if (data == null) {\n return false;\n } else if (isAccessor(data)) {\n ready &&= data.getIsReadyOrError();\n } else if (isDataInfo(data)) {\n visitDataInfo(data, (v) => (ready &&= v.getIsReadyOrError()));\n } else if (!isValues(data)) {\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw Error(`unsupported column data type: ${data satisfies never}`);\n }\n return ready;\n}\n\nexport function allPColumnsReady(\n columns: (PColumn<PColumnDataUniversal> | PColumnLazy<undefined | PColumnDataUniversal>)[],\n): columns is (PColumn<PColumnDataUniversal> | PColumnLazy<PColumnDataUniversal>)[] {\n return columns.every(isPColumnReady);\n}\n"],"names":[],"mappings":";;;AAoBA,MAAM,UAAU,GAAG,cAAc;AAE1B,MAAM,eAAe,GAAG,UAAU,GAAG;AACrC,MAAM,2BAA2B,GAAG,UAAU,GAAG;AAEjD,MAAM,mBAAmB,GAAG,UAAU,GAAG;AACzC,MAAM,qBAAqB,GAAG,UAAU,GAAG;AAC3C,MAAM,sBAAsB,GAAG,UAAU,GAAG;AAEnD,MAAM,cAAc,GAAG,UAAU,GAAG,cAAc;AAC3C,MAAM,yBAAyB,GAAG,cAAc,GAAG;AACnD,MAAM,2BAA2B,GAAG,cAAc,GAAG;AACrD,MAAM,4BAA4B,GAAG,cAAc,GAAG;AAY7D,SAAS,uBAAuB,CAC9B,GAAiC,EACjC,cAAwD,EACxD,IAA8C,EAC9C,SAAA,GAAwB,EAAE,EAC1B,oBAA6B,EAAA;IAE7B,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,KAAK;AACnC,IAAA,QAAQ,GAAG,CAAC,YAAY,CAAC,IAAI;QAC3B,KAAK,eAAe,EAAE;AACpB,YAAA,IAAI,UAAU,GAAG,GAAG,CAAC,eAAe,EAAE;YACtC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AACtE,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AAC/D,gBAAA,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC;gBACzE,IAAI,SAAS,KAAK,SAAS;oBAAE,UAAU,GAAG,KAAK;AAC/C,gBAAA,IAAI,SAAS,KAAK,SAAS,IAAI,oBAAoB;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC3F;AACA,YAAA,OAAO,UAAU;QACnB;QACA,KAAK,2BAA2B,EAAE;AAChC,YAAA,IAAI,UAAU,GAAG,GAAG,CAAC,eAAe,EAAE;YACtC,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;oBAAE,UAAU,GAAG,KAAK;qBACtC;AACH,oBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AAC/D,oBAAA,MAAM,cAAc,GAAG,uBAAuB,CAC5C,KAAK,EACL,cAAc,EACd,IAAI,EACJ,GAAG,EACH,oBAAoB,CACrB;AACD,oBAAA,UAAU,GAAG,UAAU,IAAI,cAAc;gBAC3C;YACF;AACA,YAAA,OAAO,UAAU;QACnB;AACA,QAAA;YACE,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,GAAG,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CAAC;;AAExE;AAYM,SAAU,gBAAgB,CAC9B,GAAiC,EACjC,cAAwD,EACxD,uBAAgC,KAAK,EAAA;IAErC,MAAM,IAAI,GAA6C,EAAE;AACzD,IAAA,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,oBAAoB,CAAC;AAC/F,IAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;AAC7B;AASA,MAAM,iBAAiB,GAAG,CAAC,MAAc,KAAmD;AAC1F,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;IAC3E;AAAO,SAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;QACrC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5E;SAAO;AACL,QAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,MAAM,CAAA,CAAE,CAAC;IACxF;AACF,CAAC;AAED;AACA;AACM,SAAU,oBAAoB,CAClC,GAAiC,EAAA;AAEjC,IAAA,IAAI,CAAC,GAAG;AAAE,QAAA,OAAO,SAAS;AAE1B,IAAA,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI;AAChC,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAA0B;IACxD,MAAM,IAAI,GAAiB,EAAE;IAE7B,IAAI,SAAS,GAAG,CAAC;;IAEjB,QAAQ,EAAE;AACR,QAAA,KAAK,eAAe;AAClB,YAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B;AAEF,QAAA,KAAK,2BAA2B;YAC9B,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1D;AAEF,QAAA,KAAK,mBAAmB;AACxB,QAAA,KAAK,qBAAqB;AAC1B,QAAA,KAAK,sBAAsB;AACzB,YAAA,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACtC;AAEF,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,yBAAyB;AAC9B,QAAA,KAAK,4BAA4B;YAC/B,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACxE;;IAGJ,QAAQ,EAAE;AACR,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,mBAAmB;AACxB,QAAA,KAAK,qBAAqB;AAC1B,QAAA,KAAK,sBAAsB;YACzB,KAAK,IAAI,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AACxC,gBAAA,IAAI,EAAE,KAAK,qBAAqB,EAAE;AAChC,oBAAA,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO;gBAC5C;gBACA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AACjD,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YAChB;YAEA;AAEF,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,2BAA2B;AAChC,QAAA,KAAK,yBAAyB;AAC9B,QAAA,KAAK,4BAA4B;YAC/B,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;gBAC7C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAe;AAE1D,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;AACzE,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE;AAC1C,wBAAA,IAAI,EAAE,KAAK,2BAA2B,EAAE;AACtC,4BAAA,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,OAAO;wBAC5C;AACA,wBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAe;AAC/D,wBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;oBAChB;gBACF;YACF;YACA;;AAGJ,IAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;AAC5B;AAEA,SAAS,oCAAoC,CAC3C,IAA8B,EAAA;AAE9B,IAAA,IACE,IAAI,CAAC,IAAI,KAAK,iBAAiB;QAC/B,IAAI,CAAC,IAAI,KAAK,mBAAmB;QACjC,IAAI,CAAC,IAAI,KAAK,oBAAoB;QAElC,MAAM,IAAI,KAAK,CAAC,CAAA,oDAAA,EAAuD,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;AAErF,IAAA,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAE1C,MAAM,MAAM,GAA2B,EAAE;AACzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,EAAE,CAAC,EAAE;AAC3C,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACxB;AAEA,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB,EAAE;AACrC,YAAA,MAAM,IAAI,KAAK,CACb,eAAe,GAAG,CAAC,MAAM,CAAA,mCAAA,EAAsC,kBAAkB,CAAA,WAAA,EAAc,IAAI,CAAC,SAAS,CAC3G,GAAG,CACJ,CAAA,CAAE,CACJ;QACH;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,EAAE,CAAC,EAAE;YAC3C,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvB;IACF;AAEA,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD;AAOM,SAAU,sBAAsB,CACpC,GAA4D,EAAA;IAE5D,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;IAEvC,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,oCAAoC,CAAC,GAAG,CAAC;AAE5E,IAAA,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC;AACtC,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,SAAS;AAE3B,IAAA,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI;IAEhC,MAAM,MAAM,GAA2B,EAAE;AAEzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;AAClC,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACxB;AAEA,IAAA,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC;QAC/D;AACA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;YAClC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB;IACF;AAEA,IAAA,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD;AAEA;;;;;;;;AAQG;SACa,gBAAgB,CAC9B,GAAiC,EACjC,YAAwB,EAAE,EAAA;IAE1B,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;AAEvC,IAAA,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAAE,QAAA,OAAO,SAAS;AAE9C,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI;AAC1C,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,EAA0B;;AAGxD,IAAA,IACE,SAAS,CAAC,MAAM,GAAG,CAAC;SACnB,YAAY,KAAK,yBAAyB;AACzC,YAAA,YAAY,KAAK,2BAA2B;AAC5C,YAAA,YAAY,KAAK,4BAA4B,CAAC,EAChD;AACA,QAAA,MAAM,IAAI,KAAK,CAAC,iDAAiD,YAAY,CAAA,CAAE,CAAC;IAClF;IAEA,QAAQ,YAAY;AAClB,QAAA,KAAK,eAAe;AACpB,QAAA,KAAK,2BAA2B;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,YAAY,CAAA,CAAE,CAAC;QAE1E,KAAK,mBAAmB,EAAE;AACxB,YAAA,IAAI,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,CAAA,CAAE,CAAC;YAC/E;YAEA,MAAM,KAAK,GAAyC,EAAE;YACtD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAEzC,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;YAC5B;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,iBAAiB;gBACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK;aACN;QACH;QAEA,KAAK,qBAAqB,EAAE;AAC1B,YAAA,IAAI,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,CAAA,CAAE,CAAC;YAC/E;YAEA,MAAM,KAAK,GAAsD,EAAE;AACnE,YAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmE;;YAG3F,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC;AAExC,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;gBAEzC,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxC,IAAI,CAAC,KAAK,EAAE;oBACV,KAAK,GAAG,EAAE;oBACV,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;gBACrC;AAEA,gBAAA,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE;AAC3B,oBAAA,KAAK,CAAC,KAAK,GAAG,KAAK;gBACrB;qBAAO;AACL,oBAAA,KAAK,CAAC,MAAM,GAAG,KAAK;gBACtB;YACF;;AAGA,YAAA,KAAK,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;gBACpD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;AAAE,oBAAA,OAAO,SAAS;AAEnD,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACrD,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG;AACH,oBAAA,KAAK,EAAE;wBACL,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,qBAAA;AACF,iBAAA,CAAC;YACJ;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;gBACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK;aACN;QACH;QAEA,KAAK,sBAAsB,EAAE;AAC3B,YAAA,IAAI,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAAE;AAChD,gBAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,CAAA,CAAE,CAAC;YAC/E;YAEA,MAAM,KAAK,GAAyC,EAAE;YACtD,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC1C,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBACtE,IAAI,KAAK,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAEzC,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;YAC5B;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,oBAAoB;gBAC1B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,KAAK;aACN;QACH;QAEA,KAAK,yBAAyB,EAAE;AAC9B,YAAA,IACE,OAAO,IAAI,EAAE,uBAAuB,KAAK,QAAQ;AACjD,gBAAA,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAC5C;AACA,gBAAA,MAAM,IAAI,KAAK,CACb,yEAAyE,YAAY,CAAA,CAAE,CACxF;YACH;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB;YAC7E,MAAM,KAAK,GAAyC,EAAE;;YAGtD,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAClF,IAAI,cAAc,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;;gBAGlD,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,mBAAmB,EAAE;AAC5D,oBAAA,MAAM,IAAI,KAAK,CACb,CAAA,SAAA,EAAY,mBAAmB,CAAA,QAAA,EAAW,YAAY,CAAA,UAAA,EAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CACtG;gBACH;AAEA,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAe,CAAC;gBAEzF,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAE/C,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,iBAAiB;oBACxC,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,YAAY,CAAA,EAAA,EAAK,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;gBAE1F,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAClC;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,kBAAkB,EAAE,cAAc;gBAClC,KAAK;aACN;QACH;QAEA,KAAK,2BAA2B,EAAE;AAChC,YAAA,IACE,OAAO,IAAI,EAAE,uBAAuB,KAAK,QAAQ;AACjD,gBAAA,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAC5C;AACA,gBAAA,MAAM,IAAI,KAAK,CACb,yEAAyE,YAAY,CAAA,CAAE,CACxF;YACH;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB;YAC7E,MAAM,KAAK,GAAsD,EAAE;;YAGnE,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAClF,IAAI,cAAc,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;;gBAGlD,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,qBAAqB,EAAE;AAC9D,oBAAA,MAAM,IAAI,KAAK,CACb,CAAA,SAAA,EAAY,qBAAqB,CAAA,QAAA,EAAW,YAAY,CAAA,UAAA,EAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CACxG;gBACH;AAEA,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAe,CAAC;gBAEzF,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAE/C,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,mBAAmB;oBAC1C,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,YAAY,CAAA,EAAA,EAAK,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;gBAE1F,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAClC;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,mBAAmB;AACzB,gBAAA,kBAAkB,EAAE,cAAc;gBAClC,KAAK;aACN;QACH;QAEA,KAAK,4BAA4B,EAAE;AACjC,YAAA,IACE,OAAO,IAAI,EAAE,uBAAuB,KAAK,QAAQ;AACjD,gBAAA,OAAO,IAAI,EAAE,kBAAkB,KAAK,QAAQ,EAC5C;AACA,gBAAA,MAAM,IAAI,KAAK,CACb,yEAAyE,YAAY,CAAA,CAAE,CACxF;YACH;YAEA,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,kBAAkB;YAC7E,MAAM,KAAK,GAAyC,EAAE;;YAGtD,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,eAAe,EAAE,EAAE;AAC7C,gBAAA,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAClF,IAAI,cAAc,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;;gBAGlD,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,KAAK,sBAAsB,EAAE;AAC/D,oBAAA,MAAM,IAAI,KAAK,CACb,CAAA,SAAA,EAAY,sBAAsB,CAAA,QAAA,EAAW,YAAY,CAAA,UAAA,EAAa,cAAc,CAAC,YAAY,CAAC,IAAI,CAAA,CAAE,CACzG;gBACH;AAEA,gBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAe,CAAC;gBAEzF,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,SAAS;AAE/C,gBAAA,IAAI,WAAW,CAAC,IAAI,KAAK,oBAAoB;oBAC3C,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,YAAY,CAAA,EAAA,EAAK,WAAW,CAAC,IAAI,CAAA,CAAE,CAAC;gBAE1F,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC;YAClC;YAEA,OAAO;AACL,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,kBAAkB,EAAE,cAAc;gBAClC,KAAK;aACN;QACH;AAEA,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,CAAA,CAAE,CAAC;;AAE/D;AAEA;;;;;AAKG;AACG,SAAU,yBAAyB,CACvC,GAIa,EAAA;IAEb,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;IAEvC,IAAI,iBAAiB,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,GAAG;IACtC,IAAI,UAAU,CAAC,GAAG,CAAC;AAAE,QAAA,OAAO,iBAAiB,CAAC,GAAG,CAAC;IAClD,IAAI,GAAG,YAAY,gBAAgB;AAAE,QAAA,OAAO,gBAAgB,CAAC,GAAG,CAAC;IAEjE,MAAM,IAAI,KAAK,CAAC,CAAA,uBAAA,EAA0B,OAAO,GAAG,CAAA,CAAE,CAAC;AACzD;AAEM,SAAU,cAAc,CAC5B,CAAgF,EAAA;AAEhF,IAAA,MAAM,QAAQ,GAAG,CAAC,CAAuB,KAAyB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,CAAC,CAAuB,KACzC,CAAC,YAAY,gBAAgB;IAE/B,IAAI,KAAK,GAAG,IAAI;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI;AAC7D,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,KAAK;IACd;AAAO,SAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAA,KAAK,KAAK,IAAI,CAAC,iBAAiB,EAAE;IACpC;AAAO,SAAA,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAA,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC/D;AAAO,SAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;;AAE1B,QAAA,MAAM,KAAK,CAAC,CAAA,8BAAA,EAAiC,IAAoB,CAAA,CAAE,CAAC;IACtE;AACA,IAAA,OAAO,KAAK;AACd;AAEM,SAAU,gBAAgB,CAC9B,OAA0F,EAAA;AAE1F,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;AACtC;;;;"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
function patchInSetFilters(filters) {
|
|
4
4
|
const inSetToOrEqual = (predicate) => {
|
|
5
|
-
if (predicate.operator !==
|
|
5
|
+
if (predicate.operator !== "InSet")
|
|
6
6
|
return predicate;
|
|
7
7
|
return {
|
|
8
|
-
operator:
|
|
8
|
+
operator: "Or",
|
|
9
9
|
operands: predicate.references.map((reference) => ({
|
|
10
|
-
operator:
|
|
10
|
+
operator: "Equal",
|
|
11
11
|
reference,
|
|
12
12
|
})),
|
|
13
13
|
};
|
|
@@ -15,17 +15,17 @@ function patchInSetFilters(filters) {
|
|
|
15
15
|
const mapSingleValuePredicate = (filter, cb) => {
|
|
16
16
|
const operator = filter.operator;
|
|
17
17
|
switch (operator) {
|
|
18
|
-
case
|
|
18
|
+
case "And":
|
|
19
19
|
return {
|
|
20
20
|
...filter,
|
|
21
21
|
operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
|
|
22
22
|
};
|
|
23
|
-
case
|
|
23
|
+
case "Or":
|
|
24
24
|
return {
|
|
25
25
|
...filter,
|
|
26
26
|
operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
|
|
27
27
|
};
|
|
28
|
-
case
|
|
28
|
+
case "Not":
|
|
29
29
|
return {
|
|
30
30
|
...filter,
|
|
31
31
|
operand: mapSingleValuePredicate(filter.operand, cb),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pframe_upgraders.cjs","sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from
|
|
1
|
+
{"version":3,"file":"pframe_upgraders.cjs","sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from \"@milaboratories/pl-model-common\";\n\nexport function patchInSetFilters(\n filters: PTableRecordSingleValueFilterV2[],\n): PTableRecordFilter[] {\n const inSetToOrEqual = (predicate: SingleValuePredicateV2): SingleValuePredicateV2 => {\n if (predicate.operator !== \"InSet\") return predicate;\n return {\n operator: \"Or\",\n operands: predicate.references.map(\n (reference) =>\n ({\n operator: \"Equal\",\n reference,\n }) satisfies SingleValueEqualPredicate,\n ),\n } satisfies SingleValueOrPredicateV2;\n };\n\n const mapSingleValuePredicate = (\n filter: SingleValuePredicateV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): SingleValuePredicateV2 => {\n const operator = filter.operator;\n switch (operator) {\n case \"And\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueAndPredicateV2;\n case \"Or\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueOrPredicateV2;\n case \"Not\":\n return {\n ...filter,\n operand: mapSingleValuePredicate(filter.operand, cb),\n } satisfies SingleValueNotPredicateV2;\n default:\n return cb(filter);\n }\n };\n\n const mapFilter = (\n filter: PTableRecordSingleValueFilterV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): PTableRecordSingleValueFilterV2 => {\n return {\n ...filter,\n predicate: mapSingleValuePredicate(filter.predicate, cb),\n } satisfies PTableRecordSingleValueFilterV2;\n };\n\n return filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n"],"names":[],"mappings":";;AAUM,SAAU,iBAAiB,CAC/B,OAA0C,EAAA;AAE1C,IAAA,MAAM,cAAc,GAAG,CAAC,SAAiC,KAA4B;AACnF,QAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO;AAAE,YAAA,OAAO,SAAS;QACpD,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAChC,CAAC,SAAS,MACP;AACC,gBAAA,QAAQ,EAAE,OAAO;gBACjB,SAAS;AACV,aAAA,CAAqC,CACzC;SACiC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAC9B,MAA8B,EAC9B,EAAiE,KACvC;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAChC,QAAQ,QAAQ;AACd,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC7C;AACvC,YAAA,KAAK,IAAI;gBACP,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC9C;AACtC,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;oBACT,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;iBACjB;AACvC,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC;;AAEvB,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAChB,MAAuC,EACvC,EAAiE,KAC9B;QACnC,OAAO;AACL,YAAA,GAAG,MAAM;YACT,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;SACf;AAC7C,IAAA,CAAC;AAED,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACnE;;;;"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type PTableRecordSingleValueFilterV2, type PTableRecordFilter } from
|
|
1
|
+
import { type PTableRecordSingleValueFilterV2, type PTableRecordFilter } from "@milaboratories/pl-model-common";
|
|
2
2
|
export declare function patchInSetFilters(filters: PTableRecordSingleValueFilterV2[]): PTableRecordFilter[];
|
|
3
3
|
//# sourceMappingURL=pframe_upgraders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pframe_upgraders.d.ts","sourceRoot":"","sources":["../../../src/render/util/pframe_upgraders.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,wBAAgB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"pframe_upgraders.d.ts","sourceRoot":"","sources":["../../../src/render/util/pframe_upgraders.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,+BAA+B,EAAE,GACzC,kBAAkB,EAAE,CAoDtB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
function patchInSetFilters(filters) {
|
|
2
2
|
const inSetToOrEqual = (predicate) => {
|
|
3
|
-
if (predicate.operator !==
|
|
3
|
+
if (predicate.operator !== "InSet")
|
|
4
4
|
return predicate;
|
|
5
5
|
return {
|
|
6
|
-
operator:
|
|
6
|
+
operator: "Or",
|
|
7
7
|
operands: predicate.references.map((reference) => ({
|
|
8
|
-
operator:
|
|
8
|
+
operator: "Equal",
|
|
9
9
|
reference,
|
|
10
10
|
})),
|
|
11
11
|
};
|
|
@@ -13,17 +13,17 @@ function patchInSetFilters(filters) {
|
|
|
13
13
|
const mapSingleValuePredicate = (filter, cb) => {
|
|
14
14
|
const operator = filter.operator;
|
|
15
15
|
switch (operator) {
|
|
16
|
-
case
|
|
16
|
+
case "And":
|
|
17
17
|
return {
|
|
18
18
|
...filter,
|
|
19
19
|
operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
|
|
20
20
|
};
|
|
21
|
-
case
|
|
21
|
+
case "Or":
|
|
22
22
|
return {
|
|
23
23
|
...filter,
|
|
24
24
|
operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),
|
|
25
25
|
};
|
|
26
|
-
case
|
|
26
|
+
case "Not":
|
|
27
27
|
return {
|
|
28
28
|
...filter,
|
|
29
29
|
operand: mapSingleValuePredicate(filter.operand, cb),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pframe_upgraders.js","sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from
|
|
1
|
+
{"version":3,"file":"pframe_upgraders.js","sources":["../../../src/render/util/pframe_upgraders.ts"],"sourcesContent":["import {\n type SingleValuePredicateV2,\n type SingleValueEqualPredicate,\n type SingleValueOrPredicateV2,\n type SingleValueAndPredicateV2,\n type SingleValueNotPredicateV2,\n type PTableRecordSingleValueFilterV2,\n type PTableRecordFilter,\n} from \"@milaboratories/pl-model-common\";\n\nexport function patchInSetFilters(\n filters: PTableRecordSingleValueFilterV2[],\n): PTableRecordFilter[] {\n const inSetToOrEqual = (predicate: SingleValuePredicateV2): SingleValuePredicateV2 => {\n if (predicate.operator !== \"InSet\") return predicate;\n return {\n operator: \"Or\",\n operands: predicate.references.map(\n (reference) =>\n ({\n operator: \"Equal\",\n reference,\n }) satisfies SingleValueEqualPredicate,\n ),\n } satisfies SingleValueOrPredicateV2;\n };\n\n const mapSingleValuePredicate = (\n filter: SingleValuePredicateV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): SingleValuePredicateV2 => {\n const operator = filter.operator;\n switch (operator) {\n case \"And\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueAndPredicateV2;\n case \"Or\":\n return {\n ...filter,\n operands: filter.operands.map((operand) => mapSingleValuePredicate(operand, cb)),\n } satisfies SingleValueOrPredicateV2;\n case \"Not\":\n return {\n ...filter,\n operand: mapSingleValuePredicate(filter.operand, cb),\n } satisfies SingleValueNotPredicateV2;\n default:\n return cb(filter);\n }\n };\n\n const mapFilter = (\n filter: PTableRecordSingleValueFilterV2,\n cb: (predicate: SingleValuePredicateV2) => SingleValuePredicateV2,\n ): PTableRecordSingleValueFilterV2 => {\n return {\n ...filter,\n predicate: mapSingleValuePredicate(filter.predicate, cb),\n } satisfies PTableRecordSingleValueFilterV2;\n };\n\n return filters.map((filter) => mapFilter(filter, inSetToOrEqual));\n}\n"],"names":[],"mappings":"AAUM,SAAU,iBAAiB,CAC/B,OAA0C,EAAA;AAE1C,IAAA,MAAM,cAAc,GAAG,CAAC,SAAiC,KAA4B;AACnF,QAAA,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO;AAAE,YAAA,OAAO,SAAS;QACpD,OAAO;AACL,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAChC,CAAC,SAAS,MACP;AACC,gBAAA,QAAQ,EAAE,OAAO;gBACjB,SAAS;AACV,aAAA,CAAqC,CACzC;SACiC;AACtC,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAC9B,MAA8B,EAC9B,EAAiE,KACvC;AAC1B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;QAChC,QAAQ,QAAQ;AACd,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC7C;AACvC,YAAA,KAAK,IAAI;gBACP,OAAO;AACL,oBAAA,GAAG,MAAM;AACT,oBAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,uBAAuB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;iBAC9C;AACtC,YAAA,KAAK,KAAK;gBACR,OAAO;AACL,oBAAA,GAAG,MAAM;oBACT,OAAO,EAAE,uBAAuB,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;iBACjB;AACvC,YAAA;AACE,gBAAA,OAAO,EAAE,CAAC,MAAM,CAAC;;AAEvB,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAChB,MAAuC,EACvC,EAAiE,KAC9B;QACnC,OAAO;AACL,YAAA,GAAG,MAAM;YACT,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;SACf;AAC7C,IAAA,CAAC;AAED,IAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACnE;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AAxisSelector, AnchoredPColumnSelector, AxisSelector, PColumnSelector } from
|
|
1
|
+
import type { AAxisSelector, AnchoredPColumnSelector, AxisSelector, PColumnSelector } from "@milaboratories/pl-model-common";
|
|
2
2
|
/**
|
|
3
3
|
* AAxisSelector with an optional split flag
|
|
4
4
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"split_selectors.d.ts","sourceRoot":"","sources":["../../../src/render/util/split_selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"split_selectors.d.ts","sourceRoot":"","sources":["../../../src/render/util/split_selectors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,GAAG;IAChE,IAAI,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG;IACjD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,eAAe,GAAG;IACvD,IAAI,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAChC,CAAC"}
|