@platforma-sdk/model 1.42.15 → 1.42.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/dist/bconfig/index.d.ts +0 -1
  2. package/dist/bconfig/lambdas.d.ts +0 -1
  3. package/dist/bconfig/normalization.cjs +19 -0
  4. package/dist/bconfig/normalization.cjs.map +1 -0
  5. package/dist/bconfig/normalization.d.ts +0 -1
  6. package/dist/bconfig/normalization.js +16 -0
  7. package/dist/bconfig/normalization.js.map +1 -0
  8. package/dist/bconfig/types.cjs +8 -0
  9. package/dist/bconfig/types.cjs.map +1 -0
  10. package/dist/bconfig/types.d.ts +0 -1
  11. package/dist/bconfig/types.js +6 -0
  12. package/dist/bconfig/types.js.map +1 -0
  13. package/dist/bconfig/util.d.ts +0 -1
  14. package/dist/bconfig/v3.d.ts +0 -1
  15. package/dist/block_api_v1.d.ts +0 -1
  16. package/dist/block_api_v2.d.ts +0 -1
  17. package/dist/block_state_patch.d.ts +0 -1
  18. package/dist/block_state_util.cjs +28 -0
  19. package/dist/block_state_util.cjs.map +1 -0
  20. package/dist/block_state_util.d.ts +0 -1
  21. package/dist/block_state_util.js +24 -0
  22. package/dist/block_state_util.js.map +1 -0
  23. package/dist/branding.d.ts +0 -1
  24. package/dist/builder.cjs +166 -0
  25. package/dist/builder.cjs.map +1 -0
  26. package/dist/builder.d.ts +0 -1
  27. package/dist/builder.js +164 -0
  28. package/dist/builder.js.map +1 -0
  29. package/dist/components/PFrameForGraphs.cjs +261 -0
  30. package/dist/components/PFrameForGraphs.cjs.map +1 -0
  31. package/dist/components/PFrameForGraphs.d.ts +5 -9
  32. package/dist/components/PFrameForGraphs.js +254 -0
  33. package/dist/components/PFrameForGraphs.js.map +1 -0
  34. package/dist/components/PlAnnotations/filter.d.ts +0 -1
  35. package/dist/components/PlAnnotations/filters_ui.cjs +556 -0
  36. package/dist/components/PlAnnotations/filters_ui.cjs.map +1 -0
  37. package/dist/components/PlAnnotations/filters_ui.d.ts +0 -1
  38. package/dist/components/PlAnnotations/filters_ui.js +548 -0
  39. package/dist/components/PlAnnotations/filters_ui.js.map +1 -0
  40. package/dist/components/PlAnnotations/index.d.ts +0 -1
  41. package/dist/components/PlAnnotations/types.d.ts +0 -1
  42. package/dist/components/PlDataTable.cjs +337 -0
  43. package/dist/components/PlDataTable.cjs.map +1 -0
  44. package/dist/components/PlDataTable.d.ts +3 -4
  45. package/dist/components/PlDataTable.js +324 -0
  46. package/dist/components/PlDataTable.js.map +1 -0
  47. package/dist/components/PlMultiSequenceAlignment.cjs +33 -0
  48. package/dist/components/PlMultiSequenceAlignment.cjs.map +1 -0
  49. package/dist/components/PlMultiSequenceAlignment.d.ts +0 -1
  50. package/dist/components/PlMultiSequenceAlignment.js +31 -0
  51. package/dist/components/PlMultiSequenceAlignment.js.map +1 -0
  52. package/dist/components/PlSelectionModel.cjs +11 -0
  53. package/dist/components/PlSelectionModel.cjs.map +1 -0
  54. package/dist/components/PlSelectionModel.d.ts +0 -1
  55. package/dist/components/PlSelectionModel.js +9 -0
  56. package/dist/components/PlSelectionModel.js.map +1 -0
  57. package/dist/components/index.d.ts +0 -1
  58. package/dist/config/actions.cjs +266 -0
  59. package/dist/config/actions.cjs.map +1 -0
  60. package/dist/config/actions.d.ts +0 -1
  61. package/dist/config/actions.js +233 -0
  62. package/dist/config/actions.js.map +1 -0
  63. package/dist/config/actions_kinds.d.ts +0 -1
  64. package/dist/config/index.d.ts +0 -1
  65. package/dist/config/model.d.ts +0 -1
  66. package/dist/config/model_meta.d.ts +0 -1
  67. package/dist/config/type_engine.d.ts +0 -1
  68. package/dist/config/type_util.d.ts +0 -1
  69. package/dist/env_value.cjs +11 -0
  70. package/dist/env_value.cjs.map +1 -0
  71. package/dist/env_value.d.ts +0 -1
  72. package/dist/env_value.js +9 -0
  73. package/dist/env_value.js.map +1 -0
  74. package/dist/global.d.ts +14 -0
  75. package/dist/index.cjs +138 -0
  76. package/dist/index.cjs.map +1 -0
  77. package/dist/index.d.ts +0 -1
  78. package/dist/index.js +26 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/internal.cjs +56 -0
  81. package/dist/internal.cjs.map +1 -0
  82. package/dist/internal.d.ts +0 -1
  83. package/dist/internal.js +49 -0
  84. package/dist/internal.js.map +1 -0
  85. package/dist/package.json.cjs +6 -0
  86. package/dist/package.json.cjs.map +1 -0
  87. package/dist/package.json.js +4 -0
  88. package/dist/package.json.js.map +1 -0
  89. package/dist/pframe.cjs +34 -0
  90. package/dist/pframe.cjs.map +1 -0
  91. package/dist/pframe.d.ts +0 -1
  92. package/dist/pframe.js +32 -0
  93. package/dist/pframe.js.map +1 -0
  94. package/dist/platforma.d.ts +0 -1
  95. package/dist/raw_globals.cjs +28 -0
  96. package/dist/raw_globals.cjs.map +1 -0
  97. package/dist/raw_globals.d.ts +0 -1
  98. package/dist/raw_globals.js +25 -0
  99. package/dist/raw_globals.js.map +1 -0
  100. package/dist/ref_util.cjs +21 -0
  101. package/dist/ref_util.cjs.map +1 -0
  102. package/dist/ref_util.d.ts +11 -12
  103. package/dist/ref_util.js +18 -0
  104. package/dist/ref_util.js.map +1 -0
  105. package/dist/render/accessor.cjs +233 -0
  106. package/dist/render/accessor.cjs.map +1 -0
  107. package/dist/render/accessor.d.ts +0 -1
  108. package/dist/render/accessor.js +230 -0
  109. package/dist/render/accessor.js.map +1 -0
  110. package/dist/render/api.cjs +514 -0
  111. package/dist/render/api.cjs.map +1 -0
  112. package/dist/render/api.d.ts +0 -1
  113. package/dist/render/api.js +511 -0
  114. package/dist/render/api.js.map +1 -0
  115. package/dist/render/future.cjs +35 -0
  116. package/dist/render/future.cjs.map +1 -0
  117. package/dist/render/future.d.ts +0 -1
  118. package/dist/render/future.js +33 -0
  119. package/dist/render/future.js.map +1 -0
  120. package/dist/render/index.d.ts +0 -1
  121. package/dist/render/internal.cjs +43 -0
  122. package/dist/render/internal.cjs.map +1 -0
  123. package/dist/render/internal.d.ts +0 -1
  124. package/dist/render/internal.js +37 -0
  125. package/dist/render/internal.js.map +1 -0
  126. package/dist/render/traversal_ops.d.ts +0 -1
  127. package/dist/render/util/axis_filtering.cjs +87 -0
  128. package/dist/render/util/axis_filtering.cjs.map +1 -0
  129. package/dist/render/util/axis_filtering.d.ts +0 -1
  130. package/dist/render/util/axis_filtering.js +85 -0
  131. package/dist/render/util/axis_filtering.js.map +1 -0
  132. package/dist/render/util/column_collection.cjs +309 -0
  133. package/dist/render/util/column_collection.cjs.map +1 -0
  134. package/dist/render/util/column_collection.d.ts +0 -1
  135. package/dist/render/util/column_collection.js +307 -0
  136. package/dist/render/util/column_collection.js.map +1 -0
  137. package/dist/render/util/index.d.ts +0 -1
  138. package/dist/render/util/label.cjs +153 -0
  139. package/dist/render/util/label.cjs.map +1 -0
  140. package/dist/render/util/label.d.ts +0 -3
  141. package/dist/render/util/label.js +149 -0
  142. package/dist/render/util/label.js.map +1 -0
  143. package/dist/render/util/pcolumn_data.cjs +342 -0
  144. package/dist/render/util/pcolumn_data.cjs.map +1 -0
  145. package/dist/render/util/pcolumn_data.d.ts +0 -1
  146. package/dist/render/util/pcolumn_data.js +330 -0
  147. package/dist/render/util/pcolumn_data.js.map +1 -0
  148. package/dist/render/util/pframe_upgraders.cjs +47 -0
  149. package/dist/render/util/pframe_upgraders.cjs.map +1 -0
  150. package/dist/render/util/pframe_upgraders.d.ts +0 -1
  151. package/dist/render/util/pframe_upgraders.js +45 -0
  152. package/dist/render/util/pframe_upgraders.js.map +1 -0
  153. package/dist/render/util/split_selectors.d.ts +0 -1
  154. package/dist/sdk_info.cjs +10 -0
  155. package/dist/sdk_info.cjs.map +1 -0
  156. package/dist/sdk_info.d.ts +0 -1
  157. package/dist/sdk_info.js +8 -0
  158. package/dist/sdk_info.js.map +1 -0
  159. package/dist/unionize.d.ts +0 -1
  160. package/dist/version.cjs +8 -0
  161. package/dist/version.cjs.map +1 -0
  162. package/dist/version.d.ts +0 -1
  163. package/dist/version.js +6 -0
  164. package/dist/version.js.map +1 -0
  165. package/package.json +16 -18
  166. package/src/components/PFrameForGraphs.test.ts +22 -23
  167. package/src/components/PFrameForGraphs.ts +56 -75
  168. package/src/components/PlAnnotations/filters_ui.test.ts +1 -1
  169. package/src/components/PlDataTable.ts +9 -6
  170. package/src/components/PlMultiSequenceAlignment.ts +9 -5
  171. package/src/render/api.ts +4 -2
  172. package/src/render/util/column_collection.ts +3 -2
  173. package/src/render/util/label.test.ts +5 -5
  174. package/src/render/util/label.ts +4 -7
  175. package/src/typing.test.ts +2 -1
  176. package/dist/bconfig/index.d.ts.map +0 -1
  177. package/dist/bconfig/lambdas.d.ts.map +0 -1
  178. package/dist/bconfig/normalization.d.ts.map +0 -1
  179. package/dist/bconfig/types.d.ts.map +0 -1
  180. package/dist/bconfig/util.d.ts.map +0 -1
  181. package/dist/bconfig/v3.d.ts.map +0 -1
  182. package/dist/block_api_v1.d.ts.map +0 -1
  183. package/dist/block_api_v2.d.ts.map +0 -1
  184. package/dist/block_state_patch.d.ts.map +0 -1
  185. package/dist/block_state_util.d.ts.map +0 -1
  186. package/dist/branding.d.ts.map +0 -1
  187. package/dist/builder.d.ts.map +0 -1
  188. package/dist/components/PFrameForGraphs.d.ts.map +0 -1
  189. package/dist/components/PlAnnotations/filter.d.ts.map +0 -1
  190. package/dist/components/PlAnnotations/filters_ui.d.ts.map +0 -1
  191. package/dist/components/PlAnnotations/index.d.ts.map +0 -1
  192. package/dist/components/PlAnnotations/types.d.ts.map +0 -1
  193. package/dist/components/PlDataTable.d.ts.map +0 -1
  194. package/dist/components/PlMultiSequenceAlignment.d.ts.map +0 -1
  195. package/dist/components/PlSelectionModel.d.ts.map +0 -1
  196. package/dist/components/index.d.ts.map +0 -1
  197. package/dist/config/actions.d.ts.map +0 -1
  198. package/dist/config/actions_kinds.d.ts.map +0 -1
  199. package/dist/config/index.d.ts.map +0 -1
  200. package/dist/config/model.d.ts.map +0 -1
  201. package/dist/config/model_meta.d.ts.map +0 -1
  202. package/dist/config/type_engine.d.ts.map +0 -1
  203. package/dist/config/type_util.d.ts.map +0 -1
  204. package/dist/env_value.d.ts.map +0 -1
  205. package/dist/index.d.ts.map +0 -1
  206. package/dist/index.mjs +0 -2875
  207. package/dist/index.mjs.map +0 -1
  208. package/dist/internal.d.ts.map +0 -1
  209. package/dist/pframe.d.ts.map +0 -1
  210. package/dist/platforma.d.ts.map +0 -1
  211. package/dist/raw_globals.d.ts.map +0 -1
  212. package/dist/ref_util.d.ts.map +0 -1
  213. package/dist/render/accessor.d.ts.map +0 -1
  214. package/dist/render/api.d.ts.map +0 -1
  215. package/dist/render/future.d.ts.map +0 -1
  216. package/dist/render/index.d.ts.map +0 -1
  217. package/dist/render/internal.d.ts.map +0 -1
  218. package/dist/render/traversal_ops.d.ts.map +0 -1
  219. package/dist/render/util/axis_filtering.d.ts.map +0 -1
  220. package/dist/render/util/column_collection.d.ts.map +0 -1
  221. package/dist/render/util/index.d.ts.map +0 -1
  222. package/dist/render/util/label.d.ts.map +0 -1
  223. package/dist/render/util/pcolumn_data.d.ts.map +0 -1
  224. package/dist/render/util/pframe_upgraders.d.ts.map +0 -1
  225. package/dist/render/util/split_selectors.d.ts.map +0 -1
  226. package/dist/sdk_info.d.ts.map +0 -1
  227. package/dist/unionize.d.ts.map +0 -1
  228. package/dist/version.d.ts.map +0 -1
@@ -0,0 +1,149 @@
1
+ import { readAnnotation, Annotation, parseJson } from '@milaboratories/pl-model-common';
2
+ import { z } from 'zod';
3
+
4
+ const TraceEntry = z.object({
5
+ type: z.string(),
6
+ importance: z.number().optional(),
7
+ id: z.string().optional(),
8
+ label: z.string(),
9
+ });
10
+ const Trace = z.array(TraceEntry);
11
+ const DistancePenalty = 0.001;
12
+ const LabelType = '__LABEL__';
13
+ const LabelTypeFull = '__LABEL__@1';
14
+ function deriveLabels(values, specExtractor, ops = {}) {
15
+ const importances = new Map();
16
+ const forceTraceElements = (ops.forceTraceElements !== undefined && ops.forceTraceElements.length > 0)
17
+ ? new Set(ops.forceTraceElements)
18
+ : undefined;
19
+ // number of times certain type occurred among all of the
20
+ const numberOfRecordsWithType = new Map();
21
+ const enrichedRecords = values.map((value) => {
22
+ const extractorResult = specExtractor(value);
23
+ let spec;
24
+ let prefixTrace;
25
+ let suffixTrace;
26
+ // Check if the result is the new structure or just PObjectSpec
27
+ if ('spec' in extractorResult && typeof extractorResult.spec === 'object') {
28
+ // It's the new structure { spec, prefixTrace?, suffixTrace? }
29
+ spec = extractorResult.spec;
30
+ prefixTrace = extractorResult.prefixTrace;
31
+ suffixTrace = extractorResult.suffixTrace;
32
+ }
33
+ else {
34
+ // It's just PObjectSpec
35
+ spec = extractorResult;
36
+ }
37
+ const label = readAnnotation(spec, Annotation.Label);
38
+ const traceStr = readAnnotation(spec, Annotation.Trace);
39
+ const baseTrace = (traceStr ? Trace.safeParse(parseJson(traceStr)).data : undefined) ?? [];
40
+ const trace = [
41
+ ...(prefixTrace ?? []),
42
+ ...baseTrace,
43
+ ...(suffixTrace ?? []),
44
+ ];
45
+ if (label !== undefined) {
46
+ const labelEntry = { label, type: LabelType, importance: -2 };
47
+ if (ops.addLabelAsSuffix)
48
+ trace.push(labelEntry);
49
+ else
50
+ trace.splice(0, 0, labelEntry);
51
+ }
52
+ const fullTrace = [];
53
+ const occurrences = new Map();
54
+ for (let i = trace.length - 1; i >= 0; --i) {
55
+ const { type: typeName } = trace[i];
56
+ const importance = trace[i].importance ?? 0;
57
+ const occurrenceIndex = (occurrences.get(typeName) ?? 0) + 1;
58
+ occurrences.set(typeName, occurrenceIndex);
59
+ const fullType = `${typeName}@${occurrenceIndex}`;
60
+ numberOfRecordsWithType.set(fullType, (numberOfRecordsWithType.get(fullType) ?? 0) + 1);
61
+ importances.set(fullType, Math.max(importances.get(fullType) ?? Number.NEGATIVE_INFINITY, importance - (trace.length - i) * DistancePenalty));
62
+ fullTrace.push({ ...trace[i], fullType, occurrenceIndex: occurrenceIndex });
63
+ }
64
+ fullTrace.reverse();
65
+ return {
66
+ value,
67
+ spec,
68
+ label,
69
+ fullTrace,
70
+ };
71
+ });
72
+ // excluding repeated types (i.e. ..@2, ..@3, etc.) not found in some records
73
+ const mainTypes = [];
74
+ // repeated types (i.e. ..@2, ..@3, etc.) not found in some records
75
+ const secondaryTypes = [];
76
+ const allTypeRecords = [...importances];
77
+ // sorting: most important types go first
78
+ allTypeRecords.sort(([, i1], [, i2]) => i2 - i1);
79
+ for (const [typeName] of allTypeRecords) {
80
+ if (typeName.endsWith('@1') || numberOfRecordsWithType.get(typeName) === values.length)
81
+ mainTypes.push(typeName);
82
+ else
83
+ secondaryTypes.push(typeName);
84
+ }
85
+ const calculate = (includedTypes, force = false) => {
86
+ const result = [];
87
+ for (let i = 0; i < enrichedRecords.length; i++) {
88
+ const r = enrichedRecords[i];
89
+ const includedTrace = r.fullTrace
90
+ .filter((fm) => includedTypes.has(fm.fullType)
91
+ || (forceTraceElements && forceTraceElements.has(fm.type)));
92
+ if (includedTrace.length === 0) {
93
+ if (force)
94
+ result.push({
95
+ label: 'Unlabeled',
96
+ value: r.value,
97
+ });
98
+ else
99
+ return undefined;
100
+ }
101
+ const labelSet = includedTrace
102
+ .map((fm) => fm.label);
103
+ const sep = ops.separator ?? ' / ';
104
+ result.push({
105
+ label: labelSet.join(sep),
106
+ value: r.value,
107
+ });
108
+ }
109
+ return result;
110
+ };
111
+ if (mainTypes.length === 0) {
112
+ if (secondaryTypes.length !== 0)
113
+ throw new Error('Non-empty secondary types list while main types list is empty.');
114
+ return calculate(new Set(LabelTypeFull), true);
115
+ }
116
+ //
117
+ // includedTypes = 2
118
+ // * *
119
+ // T0 T1 T2 T3 T4 T5
120
+ // *
121
+ // additionalType = 3
122
+ //
123
+ // Resulting set: T0, T1, T3
124
+ //
125
+ let includedTypes = 0;
126
+ let additionalType = -1;
127
+ while (includedTypes < mainTypes.length) {
128
+ const currentSet = new Set();
129
+ if (ops.includeNativeLabel)
130
+ currentSet.add(LabelTypeFull);
131
+ for (let i = 0; i < includedTypes; ++i)
132
+ currentSet.add(mainTypes[i]);
133
+ if (additionalType >= 0)
134
+ currentSet.add(mainTypes[additionalType]);
135
+ const candidateResult = calculate(currentSet);
136
+ // checking if labels uniquely separate our records
137
+ if (candidateResult !== undefined && new Set(candidateResult.map((c) => c.label)).size === values.length)
138
+ return candidateResult;
139
+ additionalType++;
140
+ if (additionalType >= mainTypes.length) {
141
+ includedTypes++;
142
+ additionalType = includedTypes;
143
+ }
144
+ }
145
+ return calculate(new Set([...mainTypes, ...secondaryTypes]), true);
146
+ }
147
+
148
+ export { Trace, TraceEntry, deriveLabels };
149
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sources":["../../../src/render/util/label.ts"],"sourcesContent":["import { Annotation, parseJson, readAnnotation, type PObjectSpec } from '@milaboratories/pl-model-common';\nimport { z } from 'zod';\n\nexport type RecordsWithLabel<T> = {\n value: T;\n label: string;\n};\n\nexport type LabelDerivationOps = {\n /** Force inclusion of native column label */\n includeNativeLabel?: boolean;\n /** Separator to use between label parts (\" / \" by default) */\n separator?: string;\n /** If true, label will be added as suffix (at the end of the generated label). By default label added as a prefix. */\n addLabelAsSuffix?: boolean;\n /** Trace elements list that will be forced to be included in the label. */\n forceTraceElements?: string[];\n};\n\nexport const TraceEntry = z.object({\n type: z.string(),\n importance: z.number().optional(),\n id: z.string().optional(),\n label: z.string(),\n});\nexport type TraceEntry = z.infer<typeof TraceEntry>;\ntype FullTraceEntry = TraceEntry & { fullType: string; occurrenceIndex: number };\n\nexport const Trace = z.array(TraceEntry);\nexport type Trace = z.infer<typeof Trace>;\ntype FullTrace = FullTraceEntry[];\n\n// Define the possible return types for the specExtractor function\ntype SpecExtractorResult = PObjectSpec | {\n spec: PObjectSpec;\n prefixTrace?: TraceEntry[];\n suffixTrace?: TraceEntry[];\n};\n\nconst DistancePenalty = 0.001;\n\nconst LabelType = '__LABEL__';\nconst LabelTypeFull = '__LABEL__@1';\n\nexport function deriveLabels<T>(\n values: T[],\n specExtractor: (obj: T) => SpecExtractorResult,\n ops: LabelDerivationOps = {},\n): RecordsWithLabel<T>[] {\n const importances = new Map<string, number>();\n\n const forceTraceElements = (ops.forceTraceElements !== undefined && ops.forceTraceElements.length > 0)\n ? new Set(ops.forceTraceElements)\n : undefined;\n\n // number of times certain type occurred among all of the\n const numberOfRecordsWithType = new Map<string, number>();\n\n const enrichedRecords = values.map((value) => {\n const extractorResult = specExtractor(value);\n let spec: PObjectSpec;\n let prefixTrace: TraceEntry[] | undefined;\n let suffixTrace: TraceEntry[] | undefined;\n\n // Check if the result is the new structure or just PObjectSpec\n if ('spec' in extractorResult && typeof extractorResult.spec === 'object') {\n // It's the new structure { spec, prefixTrace?, suffixTrace? }\n spec = extractorResult.spec;\n prefixTrace = extractorResult.prefixTrace;\n suffixTrace = extractorResult.suffixTrace;\n } else {\n // It's just PObjectSpec\n spec = extractorResult as PObjectSpec;\n }\n\n const label = readAnnotation(spec, Annotation.Label);\n const traceStr = readAnnotation(spec, Annotation.Trace);\n const baseTrace = (traceStr ? Trace.safeParse(parseJson(traceStr)).data : undefined) ?? [];\n\n const trace = [\n ...(prefixTrace ?? []),\n ...baseTrace,\n ...(suffixTrace ?? []),\n ];\n\n if (label !== undefined) {\n const labelEntry = { label, type: LabelType, importance: -2 };\n if (ops.addLabelAsSuffix) trace.push(labelEntry);\n else trace.splice(0, 0, labelEntry);\n }\n\n const fullTrace: FullTrace = [];\n\n const occurrences = new Map<string, number>();\n for (let i = trace.length - 1; i >= 0; --i) {\n const { type: typeName } = trace[i];\n const importance = trace[i].importance ?? 0;\n const occurrenceIndex = (occurrences.get(typeName) ?? 0) + 1;\n occurrences.set(typeName, occurrenceIndex);\n const fullType = `${typeName}@${occurrenceIndex}`;\n numberOfRecordsWithType.set(fullType, (numberOfRecordsWithType.get(fullType) ?? 0) + 1);\n importances.set(\n fullType,\n Math.max(\n importances.get(fullType) ?? Number.NEGATIVE_INFINITY,\n importance - (trace.length - i) * DistancePenalty,\n ),\n );\n fullTrace.push({ ...trace[i], fullType, occurrenceIndex: occurrenceIndex });\n }\n fullTrace.reverse();\n return {\n value,\n spec,\n label,\n fullTrace,\n };\n });\n\n // excluding repeated types (i.e. ..@2, ..@3, etc.) not found in some records\n const mainTypes: string[] = [];\n // repeated types (i.e. ..@2, ..@3, etc.) not found in some records\n const secondaryTypes: string[] = [];\n\n const allTypeRecords = [...importances];\n // sorting: most important types go first\n allTypeRecords.sort(([, i1], [, i2]) => i2 - i1);\n\n for (const [typeName] of allTypeRecords) {\n if (typeName.endsWith('@1') || numberOfRecordsWithType.get(typeName) === values.length)\n mainTypes.push(typeName);\n else secondaryTypes.push(typeName);\n }\n\n const calculate = (includedTypes: Set<string>, force: boolean = false) => {\n const result: RecordsWithLabel<T>[] = [];\n for (let i = 0; i < enrichedRecords.length; i++) {\n const r = enrichedRecords[i];\n const includedTrace = r.fullTrace\n .filter((fm) => includedTypes.has(fm.fullType)\n || (forceTraceElements && forceTraceElements.has(fm.type)));\n if (includedTrace.length === 0) {\n if (force)\n result.push({\n label: 'Unlabeled',\n value: r.value,\n } satisfies RecordsWithLabel<T>);\n else return undefined;\n }\n const labelSet = includedTrace\n .map((fm) => fm.label);\n const sep = ops.separator ?? ' / ';\n result.push({\n label: labelSet.join(sep),\n value: r.value,\n } satisfies RecordsWithLabel<T>);\n }\n return result;\n };\n\n if (mainTypes.length === 0) {\n if (secondaryTypes.length !== 0) throw new Error('Non-empty secondary types list while main types list is empty.');\n return calculate(new Set(LabelTypeFull), true)!;\n }\n\n //\n // includedTypes = 2\n // * *\n // T0 T1 T2 T3 T4 T5\n // *\n // additionalType = 3\n //\n // Resulting set: T0, T1, T3\n //\n let includedTypes = 0;\n let additionalType = -1;\n while (includedTypes < mainTypes.length) {\n const currentSet = new Set<string>();\n if (ops.includeNativeLabel) currentSet.add(LabelTypeFull);\n for (let i = 0; i < includedTypes; ++i) currentSet.add(mainTypes[i]);\n if (additionalType >= 0)\n currentSet.add(mainTypes[additionalType]);\n\n const candidateResult = calculate(currentSet);\n\n // checking if labels uniquely separate our records\n if (candidateResult !== undefined && new Set(candidateResult.map((c) => c.label)).size === values.length) return candidateResult;\n\n additionalType++;\n if (additionalType >= mainTypes.length) {\n includedTypes++;\n additionalType = includedTypes;\n }\n }\n\n return calculate(new Set([...mainTypes, ...secondaryTypes]), true)!;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,342 @@
1
+ 'use strict';
2
+
3
+ var plModelCommon = require('@milaboratories/pl-model-common');
4
+ var accessor = require('../accessor.cjs');
5
+
6
+ const PCD_PREFIX = 'PColumnData/';
7
+ const RT_RESOURCE_MAP = PCD_PREFIX + 'ResourceMap';
8
+ const RT_RESOURCE_MAP_PARTITIONED = PCD_PREFIX + 'Partitioned/ResourceMap';
9
+ const RT_JSON_PARTITIONED = PCD_PREFIX + 'JsonPartitioned';
10
+ const RT_BINARY_PARTITIONED = PCD_PREFIX + 'BinaryPartitioned';
11
+ const PCD_SUP_PREFIX = PCD_PREFIX + 'Partitioned/';
12
+ const RT_JSON_SUPER_PARTITIONED = PCD_SUP_PREFIX + 'JsonPartitioned';
13
+ const RT_BINARY_SUPER_PARTITIONED = PCD_SUP_PREFIX + 'BinaryPartitioned';
14
+ function populateResourceMapData(acc, resourceParser, data, keyPrefix = [], addEntriesWithNoData) {
15
+ if (acc === undefined)
16
+ return false;
17
+ switch (acc.resourceType.name) {
18
+ case RT_RESOURCE_MAP: {
19
+ let isComplete = acc.getInputsLocked();
20
+ for (const keyStr of acc.listInputFields()) {
21
+ const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });
22
+ const key = [...keyPrefix, ...JSON.parse(keyStr)];
23
+ const converted = value === undefined ? undefined : resourceParser(value);
24
+ if (converted === undefined)
25
+ isComplete = false;
26
+ if (converted !== undefined || addEntriesWithNoData)
27
+ data.push({ key, value: converted });
28
+ }
29
+ return isComplete;
30
+ }
31
+ case RT_RESOURCE_MAP_PARTITIONED: {
32
+ let isComplete = acc.getInputsLocked();
33
+ for (const keyStr of acc.listInputFields()) {
34
+ const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });
35
+ if (value === undefined)
36
+ isComplete = false;
37
+ else {
38
+ const key = [...keyPrefix, ...JSON.parse(keyStr)];
39
+ const populateResult = populateResourceMapData(value, resourceParser, data, key, addEntriesWithNoData);
40
+ isComplete = isComplete && populateResult;
41
+ }
42
+ }
43
+ return isComplete;
44
+ }
45
+ default:
46
+ throw new Error(`Unknown resource type: ${acc.resourceType.name}`);
47
+ }
48
+ }
49
+ function parseResourceMap(acc, resourceParser, addEntriesWithNoData = false) {
50
+ const data = [];
51
+ const isComplete = populateResourceMapData(acc, resourceParser, data, [], addEntriesWithNoData);
52
+ return { isComplete, data };
53
+ }
54
+ const removeIndexSuffix = (keyStr) => {
55
+ if (keyStr.endsWith('.index')) {
56
+ return { baseKey: keyStr.substring(0, keyStr.length - 6), type: 'index' };
57
+ }
58
+ else if (keyStr.endsWith('.values')) {
59
+ return { baseKey: keyStr.substring(0, keyStr.length - 7), type: 'values' };
60
+ }
61
+ else {
62
+ throw new Error(`key must ends on .index/.values for binary p-column, got: ${keyStr}`);
63
+ }
64
+ };
65
+ // @TODO define a class with various resource map operations
66
+ /** Returns a list of all partition keys appeared in the p-column */
67
+ function getPartitionKeysList(acc) {
68
+ if (!acc)
69
+ return undefined;
70
+ const rt = acc.resourceType.name;
71
+ const meta = acc.getDataAsJson();
72
+ const data = [];
73
+ let keyLength = 0;
74
+ // @TODO validate meta shape
75
+ switch (rt) {
76
+ case RT_RESOURCE_MAP:
77
+ keyLength = meta['keyLength'];
78
+ break;
79
+ case RT_RESOURCE_MAP_PARTITIONED:
80
+ keyLength = meta['partitionKeyLength'] + meta['keyLength'];
81
+ break;
82
+ case RT_JSON_PARTITIONED:
83
+ case RT_BINARY_PARTITIONED:
84
+ keyLength = meta['partitionKeyLength'];
85
+ break;
86
+ case RT_BINARY_SUPER_PARTITIONED:
87
+ case RT_JSON_SUPER_PARTITIONED:
88
+ keyLength = meta['superPartitionKeyLength'] + meta['partitionKeyLength'];
89
+ break;
90
+ }
91
+ switch (rt) {
92
+ case RT_RESOURCE_MAP:
93
+ case RT_JSON_PARTITIONED:
94
+ case RT_BINARY_PARTITIONED:
95
+ for (let keyStr of acc.listInputFields()) {
96
+ if (rt === RT_BINARY_PARTITIONED) {
97
+ keyStr = removeIndexSuffix(keyStr).baseKey;
98
+ }
99
+ const key = [...JSON.parse(keyStr)];
100
+ data.push(key);
101
+ }
102
+ break;
103
+ case RT_RESOURCE_MAP_PARTITIONED:
104
+ case RT_BINARY_SUPER_PARTITIONED:
105
+ case RT_JSON_SUPER_PARTITIONED:
106
+ for (const supKeyStr of acc.listInputFields()) {
107
+ const keyPrefix = [...JSON.parse(supKeyStr)];
108
+ const value = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });
109
+ if (value !== undefined) {
110
+ for (let keyStr of value.listInputFields()) {
111
+ if (rt === RT_BINARY_SUPER_PARTITIONED) {
112
+ keyStr = removeIndexSuffix(keyStr).baseKey;
113
+ }
114
+ const key = [...keyPrefix, ...JSON.parse(keyStr)];
115
+ data.push(key);
116
+ }
117
+ }
118
+ }
119
+ break;
120
+ }
121
+ return { data, keyLength };
122
+ }
123
+ function getUniquePartitionKeysForDataEntries(list) {
124
+ if (list.type !== 'JsonPartitioned' && list.type !== 'BinaryPartitioned')
125
+ throw new Error(`Splitting requires Partitioned DataInfoEntries, got ${list.type}`);
126
+ const { parts, partitionKeyLength } = list;
127
+ const result = [];
128
+ for (let i = 0; i < partitionKeyLength; ++i) {
129
+ result.push(new Set());
130
+ }
131
+ for (const part of parts) {
132
+ const key = part.key;
133
+ if (key.length !== partitionKeyLength) {
134
+ throw new Error(`Key length (${key.length}) does not match partition length (${partitionKeyLength}) for key: ${JSON.stringify(key)}`);
135
+ }
136
+ for (let i = 0; i < partitionKeyLength; ++i) {
137
+ result[i].add(key[i]);
138
+ }
139
+ }
140
+ return result.map((s) => Array.from(s.values()));
141
+ }
142
+ function getUniquePartitionKeys(acc) {
143
+ if (acc === undefined)
144
+ return undefined;
145
+ if (plModelCommon.isDataInfoEntries(acc))
146
+ return getUniquePartitionKeysForDataEntries(acc);
147
+ const list = getPartitionKeysList(acc);
148
+ if (!list)
149
+ return undefined;
150
+ const { data, keyLength } = list;
151
+ const result = [];
152
+ for (let i = 0; i < keyLength; ++i) {
153
+ result.push(new Set());
154
+ }
155
+ for (const l of data) {
156
+ if (l.length !== keyLength) {
157
+ throw new Error('key length does not match partition length');
158
+ }
159
+ for (let i = 0; i < keyLength; ++i) {
160
+ result[i].add(l[i]);
161
+ }
162
+ }
163
+ return result.map((s) => Array.from(s.values()));
164
+ }
165
+ /**
166
+ * Parses the PColumn data from a TreeNodeAccessor into a DataInfoEntries structure.
167
+ * Returns undefined if any required data is missing.
168
+ * Throws error on validation failures.
169
+ *
170
+ * @param acc - The TreeNodeAccessor containing PColumn data
171
+ * @param keyPrefix - Optional key prefix for recursive calls
172
+ * @returns DataInfoEntries representation of the PColumn data, or undefined if incomplete
173
+ */
174
+ function parsePColumnData(acc, keyPrefix = []) {
175
+ if (acc === undefined)
176
+ return undefined;
177
+ if (!acc.getIsReadyOrError())
178
+ return undefined;
179
+ const resourceType = acc.resourceType.name;
180
+ const meta = acc.getDataAsJson();
181
+ // Prevent recursive super-partitioned resources
182
+ if (keyPrefix.length > 0
183
+ && (resourceType === RT_JSON_SUPER_PARTITIONED || resourceType === RT_BINARY_SUPER_PARTITIONED)) {
184
+ throw new Error(`Unexpected nested super-partitioned resource: ${resourceType}`);
185
+ }
186
+ switch (resourceType) {
187
+ case RT_RESOURCE_MAP:
188
+ case RT_RESOURCE_MAP_PARTITIONED:
189
+ throw new Error(`Only data columns are supported, got: ${resourceType}`);
190
+ case RT_JSON_PARTITIONED: {
191
+ if (typeof meta?.partitionKeyLength !== 'number') {
192
+ throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);
193
+ }
194
+ const parts = [];
195
+ for (const keyStr of acc.listInputFields()) {
196
+ const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });
197
+ if (value === undefined)
198
+ return undefined;
199
+ const key = [...keyPrefix, ...JSON.parse(keyStr)];
200
+ parts.push({ key, value });
201
+ }
202
+ return {
203
+ type: 'JsonPartitioned',
204
+ partitionKeyLength: meta.partitionKeyLength,
205
+ parts,
206
+ };
207
+ }
208
+ case RT_BINARY_PARTITIONED: {
209
+ if (typeof meta?.partitionKeyLength !== 'number') {
210
+ throw new Error(`Missing partitionKeyLength in metadata for ${resourceType}`);
211
+ }
212
+ const parts = [];
213
+ const baseKeys = new Map();
214
+ // Group fields by base key (without .index/.values suffix)
215
+ for (const keyStr of acc.listInputFields()) {
216
+ const suffix = removeIndexSuffix(keyStr);
217
+ const value = acc.resolve({ field: keyStr, assertFieldType: 'Input' });
218
+ if (value === undefined)
219
+ return undefined;
220
+ let entry = baseKeys.get(suffix.baseKey);
221
+ if (!entry) {
222
+ entry = {};
223
+ baseKeys.set(suffix.baseKey, entry);
224
+ }
225
+ if (suffix.type === 'index') {
226
+ entry.index = value;
227
+ }
228
+ else {
229
+ entry.values = value;
230
+ }
231
+ }
232
+ // Process complete binary chunks only
233
+ for (const [baseKeyStr, entry] of baseKeys.entries()) {
234
+ if (!entry.index || !entry.values)
235
+ return undefined;
236
+ const key = [...keyPrefix, ...JSON.parse(baseKeyStr)];
237
+ parts.push({
238
+ key,
239
+ value: {
240
+ index: entry.index,
241
+ values: entry.values,
242
+ },
243
+ });
244
+ }
245
+ return {
246
+ type: 'BinaryPartitioned',
247
+ partitionKeyLength: meta.partitionKeyLength,
248
+ parts,
249
+ };
250
+ }
251
+ case RT_JSON_SUPER_PARTITIONED: {
252
+ if (typeof meta?.superPartitionKeyLength !== 'number'
253
+ || typeof meta?.partitionKeyLength !== 'number') {
254
+ throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);
255
+ }
256
+ const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;
257
+ const parts = [];
258
+ // Process all super partitions
259
+ for (const supKeyStr of acc.listInputFields()) {
260
+ const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });
261
+ if (superPartition === undefined)
262
+ return undefined;
263
+ // Validate inner type
264
+ if (superPartition.resourceType.name !== RT_JSON_PARTITIONED) {
265
+ throw new Error(`Expected ${RT_JSON_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
266
+ }
267
+ const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
268
+ if (innerResult === undefined)
269
+ return undefined;
270
+ if (innerResult.type !== 'JsonPartitioned')
271
+ throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
272
+ parts.push(...innerResult.parts);
273
+ }
274
+ return {
275
+ type: 'JsonPartitioned',
276
+ partitionKeyLength: totalKeyLength,
277
+ parts,
278
+ };
279
+ }
280
+ case RT_BINARY_SUPER_PARTITIONED: {
281
+ if (typeof meta?.superPartitionKeyLength !== 'number'
282
+ || typeof meta?.partitionKeyLength !== 'number') {
283
+ throw new Error(`Missing superPartitionKeyLength or partitionKeyLength in metadata for ${resourceType}`);
284
+ }
285
+ const totalKeyLength = meta.superPartitionKeyLength + meta.partitionKeyLength;
286
+ const parts = [];
287
+ // Process all super partitions
288
+ for (const supKeyStr of acc.listInputFields()) {
289
+ const superPartition = acc.resolve({ field: supKeyStr, assertFieldType: 'Input' });
290
+ if (superPartition === undefined)
291
+ return undefined;
292
+ // Validate inner type
293
+ if (superPartition.resourceType.name !== RT_BINARY_PARTITIONED) {
294
+ throw new Error(`Expected ${RT_BINARY_PARTITIONED} inside ${resourceType}, but got ${superPartition.resourceType.name}`);
295
+ }
296
+ const innerResult = parsePColumnData(superPartition, JSON.parse(supKeyStr));
297
+ if (innerResult === undefined)
298
+ return undefined;
299
+ if (innerResult.type !== 'BinaryPartitioned')
300
+ throw new Error(`Unexpected inner result type for ${resourceType}: ${innerResult.type}`);
301
+ parts.push(...innerResult.parts);
302
+ }
303
+ return {
304
+ type: 'BinaryPartitioned',
305
+ partitionKeyLength: totalKeyLength,
306
+ parts,
307
+ };
308
+ }
309
+ default:
310
+ throw new Error(`Unknown resource type: ${resourceType}`);
311
+ }
312
+ }
313
+ /**
314
+ * Converts or parses the input into DataInfoEntries format.
315
+
316
+ * @param acc - The input data, which can be TreeNodeAccessor, DataInfoEntries, DataInfo, or undefined.
317
+ * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.
318
+ */
319
+ function convertOrParsePColumnData(acc) {
320
+ if (acc === undefined)
321
+ return undefined;
322
+ if (plModelCommon.isDataInfoEntries(acc))
323
+ return acc;
324
+ if (plModelCommon.isDataInfo(acc))
325
+ return plModelCommon.dataInfoToEntries(acc);
326
+ if (acc instanceof accessor.TreeNodeAccessor)
327
+ return parsePColumnData(acc);
328
+ throw new Error(`Unexpected input type: ${typeof acc}`);
329
+ }
330
+
331
+ exports.RT_BINARY_PARTITIONED = RT_BINARY_PARTITIONED;
332
+ exports.RT_BINARY_SUPER_PARTITIONED = RT_BINARY_SUPER_PARTITIONED;
333
+ exports.RT_JSON_PARTITIONED = RT_JSON_PARTITIONED;
334
+ exports.RT_JSON_SUPER_PARTITIONED = RT_JSON_SUPER_PARTITIONED;
335
+ exports.RT_RESOURCE_MAP = RT_RESOURCE_MAP;
336
+ exports.RT_RESOURCE_MAP_PARTITIONED = RT_RESOURCE_MAP_PARTITIONED;
337
+ exports.convertOrParsePColumnData = convertOrParsePColumnData;
338
+ exports.getPartitionKeysList = getPartitionKeysList;
339
+ exports.getUniquePartitionKeys = getUniquePartitionKeys;
340
+ exports.parsePColumnData = parsePColumnData;
341
+ exports.parseResourceMap = parseResourceMap;
342
+ //# sourceMappingURL=pcolumn_data.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcolumn_data.cjs","sources":["../../../src/render/util/pcolumn_data.ts"],"sourcesContent":["import type {\n DataInfo } from '@milaboratories/pl-model-common';\nimport {\n dataInfoToEntries,\n isDataInfo,\n isDataInfoEntries,\n type BinaryChunk,\n type BinaryPartitionedDataInfoEntries,\n type DataInfoEntries,\n type JsonPartitionedDataInfoEntries,\n type PColumnDataEntry,\n type PColumnKey,\n} from '@milaboratories/pl-model-common';\nimport { TreeNodeAccessor } from '../accessor';\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';\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';\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 keyLength = meta['partitionKeyLength'];\n break;\n\n case RT_BINARY_SUPER_PARTITIONED:\n case RT_JSON_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 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 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')\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): JsonPartitionedDataInfoEntries<TreeNodeAccessor> | BinaryPartitionedDataInfoEntries<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 || resourceType === RT_BINARY_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_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 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(acc: TreeNodeAccessor | DataInfoEntries<TreeNodeAccessor> | DataInfo<TreeNodeAccessor> | undefined):\nDataInfoEntries<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"],"names":["isDataInfoEntries","isDataInfo","dataInfoToEntries","TreeNodeAccessor"],"mappings":"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"}
@@ -44,4 +44,3 @@ export declare function parsePColumnData(acc: TreeNodeAccessor | undefined, keyP
44
44
  * @returns The data in DataInfoEntries format, or undefined if the input was undefined or data is not ready.
45
45
  */
46
46
  export declare function convertOrParsePColumnData(acc: TreeNodeAccessor | DataInfoEntries<TreeNodeAccessor> | DataInfo<TreeNodeAccessor> | undefined): DataInfoEntries<TreeNodeAccessor> | undefined;
47
- //# sourceMappingURL=pcolumn_data.d.ts.map