@milaboratories/pl-model-common 1.24.3 → 1.24.5

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 (275) hide show
  1. package/dist/base32_encode.cjs +11 -11
  2. package/dist/base32_encode.cjs.map +1 -1
  3. package/dist/base32_encode.d.ts +1 -1
  4. package/dist/base32_encode.js +11 -11
  5. package/dist/base32_encode.js.map +1 -1
  6. package/dist/base64.cjs +2 -2
  7. package/dist/base64.cjs.map +1 -1
  8. package/dist/base64.d.ts +1 -1
  9. package/dist/base64.d.ts.map +1 -1
  10. package/dist/base64.js +2 -2
  11. package/dist/base64.js.map +1 -1
  12. package/dist/block_state.d.ts +3 -3
  13. package/dist/bmodel/block_config.cjs +1 -1
  14. package/dist/bmodel/block_config.cjs.map +1 -1
  15. package/dist/bmodel/block_config.d.ts +3 -3
  16. package/dist/bmodel/block_config.d.ts.map +1 -1
  17. package/dist/bmodel/block_config.js +1 -1
  18. package/dist/bmodel/block_config.js.map +1 -1
  19. package/dist/bmodel/code.cjs +1 -1
  20. package/dist/bmodel/code.cjs.map +1 -1
  21. package/dist/bmodel/code.d.ts +2 -2
  22. package/dist/bmodel/code.js +1 -1
  23. package/dist/bmodel/code.js.map +1 -1
  24. package/dist/bmodel/container.d.ts +5 -5
  25. package/dist/bmodel/index.d.ts +5 -5
  26. package/dist/bmodel/normalization.cjs +17 -17
  27. package/dist/bmodel/normalization.cjs.map +1 -1
  28. package/dist/bmodel/normalization.d.ts +2 -2
  29. package/dist/bmodel/normalization.d.ts.map +1 -1
  30. package/dist/bmodel/normalization.js +17 -17
  31. package/dist/bmodel/normalization.js.map +1 -1
  32. package/dist/bmodel/types.d.ts +1 -1
  33. package/dist/branding.d.ts +2 -2
  34. package/dist/common_types.d.ts +1 -1
  35. package/dist/driver_kit.d.ts +1 -1
  36. package/dist/drivers/ChunkedStreamReader.cjs +13 -12
  37. package/dist/drivers/ChunkedStreamReader.cjs.map +1 -1
  38. package/dist/drivers/ChunkedStreamReader.d.ts +2 -2
  39. package/dist/drivers/ChunkedStreamReader.d.ts.map +1 -1
  40. package/dist/drivers/ChunkedStreamReader.js +13 -12
  41. package/dist/drivers/ChunkedStreamReader.js.map +1 -1
  42. package/dist/drivers/blob.cjs +1 -1
  43. package/dist/drivers/blob.cjs.map +1 -1
  44. package/dist/drivers/blob.d.ts +4 -4
  45. package/dist/drivers/blob.d.ts.map +1 -1
  46. package/dist/drivers/blob.js +1 -1
  47. package/dist/drivers/blob.js.map +1 -1
  48. package/dist/drivers/index.d.ts +8 -8
  49. package/dist/drivers/log.cjs +1 -1
  50. package/dist/drivers/log.cjs.map +1 -1
  51. package/dist/drivers/log.js +1 -1
  52. package/dist/drivers/log.js.map +1 -1
  53. package/dist/drivers/ls.cjs +3 -3
  54. package/dist/drivers/ls.cjs.map +1 -1
  55. package/dist/drivers/ls.d.ts +6 -6
  56. package/dist/drivers/ls.d.ts.map +1 -1
  57. package/dist/drivers/ls.js +3 -3
  58. package/dist/drivers/ls.js.map +1 -1
  59. package/dist/drivers/pframe/column_filter.d.ts +1 -1
  60. package/dist/drivers/pframe/data_info.cjs +119 -110
  61. package/dist/drivers/pframe/data_info.cjs.map +1 -1
  62. package/dist/drivers/pframe/data_info.d.ts +10 -10
  63. package/dist/drivers/pframe/data_info.d.ts.map +1 -1
  64. package/dist/drivers/pframe/data_info.js +119 -110
  65. package/dist/drivers/pframe/data_info.js.map +1 -1
  66. package/dist/drivers/pframe/data_types.cjs +7 -4
  67. package/dist/drivers/pframe/data_types.cjs.map +1 -1
  68. package/dist/drivers/pframe/data_types.d.ts +2 -2
  69. package/dist/drivers/pframe/data_types.d.ts.map +1 -1
  70. package/dist/drivers/pframe/data_types.js +7 -4
  71. package/dist/drivers/pframe/data_types.js.map +1 -1
  72. package/dist/drivers/pframe/driver.d.ts +10 -10
  73. package/dist/drivers/pframe/driver.d.ts.map +1 -1
  74. package/dist/drivers/pframe/find_columns.d.ts +2 -2
  75. package/dist/drivers/pframe/index.d.ts +14 -14
  76. package/dist/drivers/pframe/linker_columns.cjs +13 -5
  77. package/dist/drivers/pframe/linker_columns.cjs.map +1 -1
  78. package/dist/drivers/pframe/linker_columns.d.ts +2 -2
  79. package/dist/drivers/pframe/linker_columns.d.ts.map +1 -1
  80. package/dist/drivers/pframe/linker_columns.js +13 -5
  81. package/dist/drivers/pframe/linker_columns.js.map +1 -1
  82. package/dist/drivers/pframe/pframe.d.ts +6 -6
  83. package/dist/drivers/pframe/pframe.d.ts.map +1 -1
  84. package/dist/drivers/pframe/query/index.d.ts +2 -2
  85. package/dist/drivers/pframe/query/query_common.d.ts +37 -37
  86. package/dist/drivers/pframe/query/query_data.d.ts +2 -2
  87. package/dist/drivers/pframe/query/query_data.d.ts.map +1 -1
  88. package/dist/drivers/pframe/query/query_spec.d.ts +3 -3
  89. package/dist/drivers/pframe/query/query_spec.d.ts.map +1 -1
  90. package/dist/drivers/pframe/spec/anchored.cjs +6 -6
  91. package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
  92. package/dist/drivers/pframe/spec/anchored.d.ts +4 -4
  93. package/dist/drivers/pframe/spec/anchored.d.ts.map +1 -1
  94. package/dist/drivers/pframe/spec/anchored.js +6 -6
  95. package/dist/drivers/pframe/spec/anchored.js.map +1 -1
  96. package/dist/drivers/pframe/spec/filtered_column.cjs +1 -1
  97. package/dist/drivers/pframe/spec/filtered_column.cjs.map +1 -1
  98. package/dist/drivers/pframe/spec/filtered_column.d.ts +1 -1
  99. package/dist/drivers/pframe/spec/filtered_column.js +1 -1
  100. package/dist/drivers/pframe/spec/filtered_column.js.map +1 -1
  101. package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
  102. package/dist/drivers/pframe/spec/ids.d.ts +5 -5
  103. package/dist/drivers/pframe/spec/ids.js.map +1 -1
  104. package/dist/drivers/pframe/spec/index.d.ts +6 -6
  105. package/dist/drivers/pframe/spec/native_id.cjs.map +1 -1
  106. package/dist/drivers/pframe/spec/native_id.d.ts +3 -3
  107. package/dist/drivers/pframe/spec/native_id.d.ts.map +1 -1
  108. package/dist/drivers/pframe/spec/native_id.js.map +1 -1
  109. package/dist/drivers/pframe/spec/selectors.cjs +1 -1
  110. package/dist/drivers/pframe/spec/selectors.cjs.map +1 -1
  111. package/dist/drivers/pframe/spec/selectors.d.ts +4 -4
  112. package/dist/drivers/pframe/spec/selectors.d.ts.map +1 -1
  113. package/dist/drivers/pframe/spec/selectors.js +1 -1
  114. package/dist/drivers/pframe/spec/selectors.js.map +1 -1
  115. package/dist/drivers/pframe/spec/spec.cjs +64 -59
  116. package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
  117. package/dist/drivers/pframe/spec/spec.d.ts +15 -15
  118. package/dist/drivers/pframe/spec/spec.d.ts.map +1 -1
  119. package/dist/drivers/pframe/spec/spec.js +64 -59
  120. package/dist/drivers/pframe/spec/spec.js.map +1 -1
  121. package/dist/drivers/pframe/table.d.ts +2 -2
  122. package/dist/drivers/pframe/table_calculate.cjs +11 -11
  123. package/dist/drivers/pframe/table_calculate.cjs.map +1 -1
  124. package/dist/drivers/pframe/table_calculate.d.ts +30 -30
  125. package/dist/drivers/pframe/table_calculate.d.ts.map +1 -1
  126. package/dist/drivers/pframe/table_calculate.js +11 -11
  127. package/dist/drivers/pframe/table_calculate.js.map +1 -1
  128. package/dist/drivers/pframe/table_common.cjs +4 -4
  129. package/dist/drivers/pframe/table_common.cjs.map +1 -1
  130. package/dist/drivers/pframe/table_common.d.ts +6 -6
  131. package/dist/drivers/pframe/table_common.js +4 -4
  132. package/dist/drivers/pframe/table_common.js.map +1 -1
  133. package/dist/drivers/pframe/type_util.d.ts.map +1 -1
  134. package/dist/drivers/pframe/unique_values.d.ts +4 -4
  135. package/dist/drivers/urls.cjs +2 -2
  136. package/dist/drivers/urls.cjs.map +1 -1
  137. package/dist/drivers/urls.d.ts +1 -1
  138. package/dist/drivers/urls.js +2 -2
  139. package/dist/drivers/urls.js.map +1 -1
  140. package/dist/errors.cjs +12 -12
  141. package/dist/errors.cjs.map +1 -1
  142. package/dist/errors.d.ts +1 -1
  143. package/dist/errors.d.ts.map +1 -1
  144. package/dist/errors.js +12 -12
  145. package/dist/errors.js.map +1 -1
  146. package/dist/flags/block_flags.cjs +2 -2
  147. package/dist/flags/block_flags.cjs.map +1 -1
  148. package/dist/flags/block_flags.d.ts.map +1 -1
  149. package/dist/flags/block_flags.js +2 -2
  150. package/dist/flags/block_flags.js.map +1 -1
  151. package/dist/flags/flag_utils.cjs +31 -29
  152. package/dist/flags/flag_utils.cjs.map +1 -1
  153. package/dist/flags/flag_utils.d.ts +33 -33
  154. package/dist/flags/flag_utils.d.ts.map +1 -1
  155. package/dist/flags/flag_utils.js +31 -29
  156. package/dist/flags/flag_utils.js.map +1 -1
  157. package/dist/flags/index.d.ts +3 -3
  158. package/dist/flags/type_utils.d.ts +1 -1
  159. package/dist/flags/type_utils.d.ts.map +1 -1
  160. package/dist/httpAuth.cjs +4 -5
  161. package/dist/httpAuth.cjs.map +1 -1
  162. package/dist/httpAuth.d.ts +1 -1
  163. package/dist/httpAuth.d.ts.map +1 -1
  164. package/dist/httpAuth.js +4 -5
  165. package/dist/httpAuth.js.map +1 -1
  166. package/dist/index.d.ts +19 -19
  167. package/dist/json.cjs +1 -1
  168. package/dist/json.cjs.map +1 -1
  169. package/dist/json.d.ts.map +1 -1
  170. package/dist/json.js +1 -1
  171. package/dist/json.js.map +1 -1
  172. package/dist/navigation.cjs +1 -1
  173. package/dist/navigation.cjs.map +1 -1
  174. package/dist/navigation.d.ts +3 -3
  175. package/dist/navigation.js +1 -1
  176. package/dist/navigation.js.map +1 -1
  177. package/dist/plid.cjs +4 -4
  178. package/dist/plid.cjs.map +1 -1
  179. package/dist/plid.d.ts +1 -1
  180. package/dist/plid.js +4 -4
  181. package/dist/plid.js.map +1 -1
  182. package/dist/pool/entry.d.ts +1 -1
  183. package/dist/pool/index.d.ts +3 -3
  184. package/dist/pool/query.cjs +23 -23
  185. package/dist/pool/query.cjs.map +1 -1
  186. package/dist/pool/query.d.ts +9 -9
  187. package/dist/pool/query.d.ts.map +1 -1
  188. package/dist/pool/query.js +23 -23
  189. package/dist/pool/query.js.map +1 -1
  190. package/dist/pool/spec.cjs +9 -9
  191. package/dist/pool/spec.cjs.map +1 -1
  192. package/dist/pool/spec.d.ts +4 -4
  193. package/dist/pool/spec.d.ts.map +1 -1
  194. package/dist/pool/spec.js +9 -9
  195. package/dist/pool/spec.js.map +1 -1
  196. package/dist/ref.cjs +20 -18
  197. package/dist/ref.cjs.map +1 -1
  198. package/dist/ref.d.ts +1 -1
  199. package/dist/ref.d.ts.map +1 -1
  200. package/dist/ref.js +20 -18
  201. package/dist/ref.js.map +1 -1
  202. package/dist/utag.d.ts +1 -1
  203. package/dist/util.cjs +1 -1
  204. package/dist/util.cjs.map +1 -1
  205. package/dist/util.js +1 -1
  206. package/dist/util.js.map +1 -1
  207. package/dist/value_or_error.cjs.map +1 -1
  208. package/dist/value_or_error.d.ts.map +1 -1
  209. package/dist/value_or_error.js.map +1 -1
  210. package/package.json +18 -17
  211. package/src/base32_encode.ts +12 -12
  212. package/src/base64.ts +12 -8
  213. package/src/block_state.ts +3 -3
  214. package/src/bmodel/block_config.ts +12 -6
  215. package/src/bmodel/code.ts +3 -3
  216. package/src/bmodel/container.ts +5 -5
  217. package/src/bmodel/index.ts +5 -5
  218. package/src/bmodel/normalization.ts +33 -25
  219. package/src/bmodel/types.ts +1 -1
  220. package/src/branding.ts +2 -2
  221. package/src/common_types.ts +1 -1
  222. package/src/driver_kit.ts +1 -1
  223. package/src/drivers/ChunkedStreamReader.ts +16 -14
  224. package/src/drivers/blob.ts +7 -11
  225. package/src/drivers/index.ts +8 -8
  226. package/src/drivers/log.ts +3 -3
  227. package/src/drivers/ls.ts +18 -18
  228. package/src/drivers/pframe/column_filter.ts +1 -1
  229. package/src/drivers/pframe/data_info.ts +146 -146
  230. package/src/drivers/pframe/data_types.ts +56 -36
  231. package/src/drivers/pframe/driver.ts +20 -36
  232. package/src/drivers/pframe/find_columns.ts +2 -2
  233. package/src/drivers/pframe/index.ts +14 -14
  234. package/src/drivers/pframe/linker_columns.test.ts +280 -273
  235. package/src/drivers/pframe/linker_columns.ts +65 -39
  236. package/src/drivers/pframe/pframe.ts +6 -9
  237. package/src/drivers/pframe/query/index.ts +2 -2
  238. package/src/drivers/pframe/query/query_common.ts +46 -46
  239. package/src/drivers/pframe/query/query_data.ts +17 -10
  240. package/src/drivers/pframe/query/query_spec.ts +18 -10
  241. package/src/drivers/pframe/spec/anchored.ts +44 -33
  242. package/src/drivers/pframe/spec/filtered_column.ts +2 -2
  243. package/src/drivers/pframe/spec/ids.ts +6 -6
  244. package/src/drivers/pframe/spec/index.ts +6 -6
  245. package/src/drivers/pframe/spec/native_id.ts +7 -9
  246. package/src/drivers/pframe/spec/selectors.test.ts +170 -146
  247. package/src/drivers/pframe/spec/selectors.ts +22 -31
  248. package/src/drivers/pframe/spec/spec.test.ts +163 -176
  249. package/src/drivers/pframe/spec/spec.ts +132 -117
  250. package/src/drivers/pframe/table.ts +2 -2
  251. package/src/drivers/pframe/table_calculate.ts +44 -50
  252. package/src/drivers/pframe/table_common.ts +10 -10
  253. package/src/drivers/pframe/type_util.ts +2 -7
  254. package/src/drivers/pframe/unique_values.ts +4 -4
  255. package/src/drivers/urls.ts +3 -3
  256. package/src/errors.test.ts +20 -20
  257. package/src/errors.ts +24 -20
  258. package/src/flags/block_flags.ts +8 -7
  259. package/src/flags/flag_utils.test.ts +94 -73
  260. package/src/flags/flag_utils.ts +73 -50
  261. package/src/flags/index.ts +3 -3
  262. package/src/flags/type_utils.ts +10 -7
  263. package/src/httpAuth.ts +5 -6
  264. package/src/index.ts +19 -19
  265. package/src/json.ts +28 -17
  266. package/src/navigation.ts +4 -4
  267. package/src/plid.ts +6 -6
  268. package/src/pool/entry.ts +1 -1
  269. package/src/pool/index.ts +3 -3
  270. package/src/pool/query.ts +52 -56
  271. package/src/pool/spec.ts +20 -17
  272. package/src/ref.ts +25 -19
  273. package/src/utag.ts +1 -1
  274. package/src/util.ts +1 -1
  275. package/src/value_or_error.ts +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"linker_columns.js","sources":["../../../src/drivers/pframe/linker_columns.ts"],"sourcesContent":["import {\n canonicalizeJson,\n parseJson,\n type CanonicalizedJson,\n} from '../../json';\nimport {\n Annotation,\n readAnnotationJson,\n type AxisSpec,\n type PColumnIdAndSpec,\n type AxisSpecNormalized,\n type AxisId,\n getAxisId,\n getNormalizedAxesList,\n getArrayFromAxisTree,\n getAxesTree,\n} from './spec/spec';\n\ntype LinkerKey = CanonicalizedJson<AxisId[]>;\nexport type CompositeLinkerMap = Map<\n LinkerKey,\n {\n keyAxesSpec: AxisSpecNormalized[]; // axis specs - source for the key\n linkWith: Map<LinkerKey, PColumnIdAndSpec>; // for every axis (possibly in group with parents - available by linkers another axes and corresponding linkers)\n }\n>;\n\ninterface LinkersData {\n data: CompositeLinkerMap;\n}\nexport class LinkerMap implements LinkersData {\n /** Graph of linkers connected by axes (single or grouped by parents) */\n readonly data: CompositeLinkerMap;\n\n constructor(linkerMap: CompositeLinkerMap) {\n this.data = linkerMap;\n }\n\n get keys() {\n return this.data.keys();\n }\n\n get keyAxesIds() {\n return [...this.data.keys()].map(parseJson);\n }\n\n static fromColumns(columns: PColumnIdAndSpec[]) {\n const result: CompositeLinkerMap = new Map();\n for (const linker of columns.filter((l) => !!readAnnotationJson(l.spec, Annotation.IsLinkerColumn))) {\n const groups = LinkerMap.getAxesGroups(getNormalizedAxesList(linker.spec.axesSpec)); // split input axes into groups by parent links from annotation\n\n if (groups.length !== 2) {\n continue; // not a valid linker column\n }\n const [left, right] = groups;\n\n // In case of group:\n // A - C\n // \\_ B _ D\n // E/\n // put 2 variants as keys:\n // A - C\n // \\_ B _ D\n // and\n // E - B - D\n const leftKeyVariants: [LinkerKey, AxisSpecNormalized[]][] = LinkerMap.getAxesRoots(left).map((axis) => {\n const axes = getArrayFromAxisTree(getAxesTree(axis));\n const key = canonicalizeJson(axes.map(getAxisId));\n return [key, axes];\n });\n const rightKeyVariants: [LinkerKey, AxisSpecNormalized[]][] = LinkerMap.getAxesRoots(right).map((axis) => {\n const axes = getArrayFromAxisTree(getAxesTree(axis));\n const key = canonicalizeJson(axes.map(getAxisId));\n return [key, axes];\n });\n\n for (const [keyLeft, spec] of leftKeyVariants) {\n if (!result.has(keyLeft)) {\n result.set(keyLeft, { keyAxesSpec: spec, linkWith: new Map() });\n }\n }\n for (const [keyRight, spec] of rightKeyVariants) {\n if (!result.has(keyRight)) {\n result.set(keyRight, { keyAxesSpec: spec, linkWith: new Map() });\n }\n }\n for (const [keyLeft] of leftKeyVariants) {\n for (const [keyRight] of rightKeyVariants) {\n result.get(keyLeft)?.linkWith.set(keyRight, linker);\n result.get(keyRight)?.linkWith.set(keyLeft, linker);\n }\n }\n }\n return new this(result);\n }\n\n /** Get all available nodes of linker graphs if start from sourceAxesKeys */\n searchAvailableAxesKeys(sourceAxesKeys: LinkerKey[]): Set<LinkerKey> {\n const startKeys = new Set(sourceAxesKeys);\n const allAvailableKeys = new Set<LinkerKey>();\n let nextKeys = sourceAxesKeys;\n while (nextKeys.length) {\n const next: LinkerKey[] = [];\n for (const key of nextKeys) {\n const node = this.data.get(key);\n if (!node) continue;\n for (const availableKey of node.linkWith.keys()) {\n if (!allAvailableKeys.has(availableKey) && !startKeys.has(availableKey)) {\n next.push(availableKey);\n allAvailableKeys.add(availableKey);\n }\n }\n }\n nextKeys = next;\n }\n return allAvailableKeys;\n }\n\n /** Get all linker columns that are necessary to reach endKey from startKey */\n searchLinkerPath(startKey: LinkerKey, endKey: LinkerKey): PColumnIdAndSpec[] {\n const previous: Record<LinkerKey, LinkerKey> = {};\n let nextIds = new Set([startKey]);\n const visited = new Set([startKey]);\n while (nextIds.size) {\n const next = new Set<LinkerKey>();\n for (const nextId of nextIds) {\n const node = this.data.get(nextId);\n if (!node) continue;\n for (const availableId of node.linkWith.keys()) {\n previous[availableId] = nextId;\n if (availableId === endKey) {\n const ids: LinkerKey[] = [];\n let current = endKey;\n while (previous[current] !== startKey) {\n ids.push(current);\n current = previous[current];\n }\n ids.push(current);\n return ids.map((id: LinkerKey) => this.data.get(id)!.linkWith.get(previous[id])!);\n } else if (!visited.has(availableId)) {\n next.add(availableId);\n visited.add(availableId);\n }\n }\n }\n nextIds = next;\n }\n return [];\n }\n\n getLinkerColumnsForAxes({\n from: sourceAxes,\n to: targetAxes,\n throwWhenNoLinkExists = true,\n }: {\n from: AxisSpecNormalized[];\n to: AxisSpecNormalized[];\n throwWhenNoLinkExists?: boolean;\n }): PColumnIdAndSpec[] {\n // start keys - all possible keys in linker map using sourceAxes (for example, all axes of block's columns or all axes of columns in data-inputs)\n const startKeys: LinkerKey[] = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\n return Array.from(\n new Map(\n LinkerMap.getAxesRoots(targetAxes)\n .map(LinkerMap.getLinkerKeyFromAxisSpec) // target keys contain all axes to be linked; if some of target axes has parents they must be in the key\n .flatMap((targetKey) => {\n const linkers = startKeys\n .map((startKey) => this.searchLinkerPath(startKey, targetKey))\n .reduce((shortestPath, path) => (shortestPath.length && shortestPath.length < path.length) || !path.length ? shortestPath : path,\n [] as PColumnIdAndSpec[])\n .map((linker) => [linker.columnId, linker] as const);\n if (!linkers.length && throwWhenNoLinkExists) {\n throw Error(`Unable to find linker column for ${targetKey}`);\n }\n return linkers;\n }),\n ).values(),\n );\n }\n\n /** Get list of axisSpecs from keys of linker columns map */\n getAxesListFromKeysList(keys: LinkerKey[]): AxisSpecNormalized[] {\n return Array.from(\n new Map(\n keys.flatMap((key) => this.data.get(key)?.keyAxesSpec ?? [])\n .map((axis) => [canonicalizeJson(getAxisId(axis)), axis]),\n ).values(),\n );\n }\n\n /** Get axes of target axes that are impossible to be linked to source axes with current linker map */\n getNonLinkableAxes(\n sourceAxes: AxisSpecNormalized[],\n targetAxes: AxisSpecNormalized[],\n ): AxisSpecNormalized[] {\n const startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n // target keys contain all axes to be linked; if some of target axes has parents they must be in the key\n const targetKeys = targetAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\n const axes = Array.from(\n new Map(\n targetAxes\n .filter((_targetAxis, idx) => {\n const targetKey = targetKeys[idx];\n return !startKeys.some((startKey) => this.searchLinkerPath(startKey, targetKey).length);\n })\n .flatMap((axis) => getArrayFromAxisTree(getAxesTree(axis)).map((axis) => [canonicalizeJson(getAxisId(axis)), axis])),\n ).values(),\n );\n return axes;\n }\n\n /** Get all axes that can be connected to sourceAxes by linkers */\n getReachableByLinkersAxesFromAxesNormalized(\n sourceAxes: AxisSpecNormalized[],\n matchAxisIdFn?: (axisIdOfLinker: AxisId, axisIdOfSource: AxisId) => boolean,\n ): AxisSpecNormalized[] {\n let startKeys: CanonicalizedJson<AxisId[]>[] = [];\n\n if (matchAxisIdFn) {\n const sourceAxisIdsGrouped: AxisId[][] = sourceAxes.map((axis) => getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n for (const sourceAxisIdsGroup of sourceAxisIdsGrouped) {\n const matched = this.keyAxesIds.find(\n (keyIds: AxisId[]) => keyIds.every(\n (linkerKeyAxisId) => sourceAxisIdsGroup.find((sourceAxisId) => matchAxisIdFn(linkerKeyAxisId, sourceAxisId)),\n ),\n );\n if (matched) {\n startKeys.push(canonicalizeJson(matched));\n }\n }\n } else {\n startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n }\n\n const availableKeys = this.searchAvailableAxesKeys(startKeys);\n return this.getAxesListFromKeysList([...availableKeys]);\n }\n\n getReachableByLinkersAxesFromAxes(\n sourceAxes: AxisSpec[],\n matchAxisIdFn?: (axisIdOfLinker: AxisId, axisIdOfSource: AxisId) => boolean,\n ): AxisSpecNormalized[] {\n return this.getReachableByLinkersAxesFromAxesNormalized(getNormalizedAxesList(sourceAxes), matchAxisIdFn);\n }\n\n static getLinkerKeyFromAxisSpec(axis: AxisSpecNormalized): LinkerKey {\n return canonicalizeJson(getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n }\n\n /** Split array of axes into several arrays by parents: axes of one group are parents for each other.\n There are no order inside every group. */\n static getAxesGroups(axesSpec: AxisSpecNormalized[]): AxisSpecNormalized[][] {\n switch (axesSpec.length) {\n case 0: return [];\n case 1: return [[axesSpec[0]]];\n default: break;\n }\n\n const axisKeys = axesSpec.map((spec) => canonicalizeJson(getAxisId(spec)));\n const axisParentsIdxs = axesSpec.map(\n (spec) => new Set(\n spec.parentAxesSpec\n .map((spec) => canonicalizeJson(getAxisId(spec)))\n .map((el) => {\n const idx = axisKeys.indexOf(el);\n if (idx === -1) {\n throw new Error(`malformed axesSpec: ${JSON.stringify(axesSpec)}, unable to locate parent ${el}`);\n }\n return idx;\n }),\n ),\n );\n\n const allIdxs = [...axesSpec.keys()];\n const groups: number[][] = []; // groups of axis indexes\n\n const usedIdxs = new Set<number>();\n let nextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n while (nextFreeEl !== undefined) {\n const currentGroup = [nextFreeEl];\n usedIdxs.add(nextFreeEl);\n\n let nextElsOfCurrentGroup = [nextFreeEl];\n while (nextElsOfCurrentGroup.length) {\n const next = new Set<number>();\n for (const groupIdx of nextElsOfCurrentGroup) {\n const groupElementParents = axisParentsIdxs[groupIdx];\n allIdxs.forEach((idx) => {\n if (idx === groupIdx || usedIdxs.has(idx)) {\n return;\n }\n const parents = axisParentsIdxs[idx];\n if (parents.has(groupIdx) || groupElementParents.has(idx)) {\n currentGroup.push(idx);\n next.add(idx);\n usedIdxs.add(idx);\n }\n });\n }\n nextElsOfCurrentGroup = [...next];\n }\n\n groups.push([...currentGroup]);\n nextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n };\n\n return groups.map((group) => group.map((idx) => axesSpec[idx]));\n }\n\n /** Get all axes that are not parents of any other axis */\n static getAxesRoots(axes: AxisSpecNormalized[]): AxisSpecNormalized[] {\n const parentsSet = new Set(axes.flatMap((axis) => axis.parentAxesSpec).map((spec) => canonicalizeJson(getAxisId(spec))));\n return axes.filter((axis) => !parentsSet.has(canonicalizeJson(getAxisId(axis))));\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linker_columns.js","sources":["../../../src/drivers/pframe/linker_columns.ts"],"sourcesContent":["import { canonicalizeJson, parseJson, type CanonicalizedJson } from \"../../json\";\nimport {\n Annotation,\n readAnnotationJson,\n type AxisSpec,\n type PColumnIdAndSpec,\n type AxisSpecNormalized,\n type AxisId,\n getAxisId,\n getNormalizedAxesList,\n getArrayFromAxisTree,\n getAxesTree,\n} from \"./spec/spec\";\n\ntype LinkerKey = CanonicalizedJson<AxisId[]>;\nexport type CompositeLinkerMap = Map<\n LinkerKey,\n {\n keyAxesSpec: AxisSpecNormalized[]; // axis specs - source for the key\n linkWith: Map<LinkerKey, PColumnIdAndSpec>; // for every axis (possibly in group with parents - available by linkers another axes and corresponding linkers)\n }\n>;\n\ninterface LinkersData {\n data: CompositeLinkerMap;\n}\nexport class LinkerMap implements LinkersData {\n /** Graph of linkers connected by axes (single or grouped by parents) */\n readonly data: CompositeLinkerMap;\n\n constructor(linkerMap: CompositeLinkerMap) {\n this.data = linkerMap;\n }\n\n get keys() {\n return this.data.keys();\n }\n\n get keyAxesIds() {\n return [...this.data.keys()].map(parseJson);\n }\n\n static fromColumns(columns: PColumnIdAndSpec[]) {\n const result: CompositeLinkerMap = new Map();\n for (const linker of columns.filter(\n (l) => !!readAnnotationJson(l.spec, Annotation.IsLinkerColumn),\n )) {\n const groups = LinkerMap.getAxesGroups(getNormalizedAxesList(linker.spec.axesSpec)); // split input axes into groups by parent links from annotation\n\n if (groups.length !== 2) {\n continue; // not a valid linker column\n }\n const [left, right] = groups;\n\n // In case of group:\n // A - C\n // \\_ B _ D\n // E/\n // put 2 variants as keys:\n // A - C\n // \\_ B _ D\n // and\n // E - B - D\n const leftKeyVariants: [LinkerKey, AxisSpecNormalized[]][] = LinkerMap.getAxesRoots(left).map(\n (axis) => {\n const axes = getArrayFromAxisTree(getAxesTree(axis));\n const key = canonicalizeJson(axes.map(getAxisId));\n return [key, axes];\n },\n );\n const rightKeyVariants: [LinkerKey, AxisSpecNormalized[]][] = LinkerMap.getAxesRoots(\n right,\n ).map((axis) => {\n const axes = getArrayFromAxisTree(getAxesTree(axis));\n const key = canonicalizeJson(axes.map(getAxisId));\n return [key, axes];\n });\n\n for (const [keyLeft, spec] of leftKeyVariants) {\n if (!result.has(keyLeft)) {\n result.set(keyLeft, { keyAxesSpec: spec, linkWith: new Map() });\n }\n }\n for (const [keyRight, spec] of rightKeyVariants) {\n if (!result.has(keyRight)) {\n result.set(keyRight, { keyAxesSpec: spec, linkWith: new Map() });\n }\n }\n for (const [keyLeft] of leftKeyVariants) {\n for (const [keyRight] of rightKeyVariants) {\n result.get(keyLeft)?.linkWith.set(keyRight, linker);\n result.get(keyRight)?.linkWith.set(keyLeft, linker);\n }\n }\n }\n return new this(result);\n }\n\n /** Get all available nodes of linker graphs if start from sourceAxesKeys */\n searchAvailableAxesKeys(sourceAxesKeys: LinkerKey[]): Set<LinkerKey> {\n const startKeys = new Set(sourceAxesKeys);\n const allAvailableKeys = new Set<LinkerKey>();\n let nextKeys = sourceAxesKeys;\n while (nextKeys.length) {\n const next: LinkerKey[] = [];\n for (const key of nextKeys) {\n const node = this.data.get(key);\n if (!node) continue;\n for (const availableKey of node.linkWith.keys()) {\n if (!allAvailableKeys.has(availableKey) && !startKeys.has(availableKey)) {\n next.push(availableKey);\n allAvailableKeys.add(availableKey);\n }\n }\n }\n nextKeys = next;\n }\n return allAvailableKeys;\n }\n\n /** Get all linker columns that are necessary to reach endKey from startKey */\n searchLinkerPath(startKey: LinkerKey, endKey: LinkerKey): PColumnIdAndSpec[] {\n const previous: Record<LinkerKey, LinkerKey> = {};\n let nextIds = new Set([startKey]);\n const visited = new Set([startKey]);\n while (nextIds.size) {\n const next = new Set<LinkerKey>();\n for (const nextId of nextIds) {\n const node = this.data.get(nextId);\n if (!node) continue;\n for (const availableId of node.linkWith.keys()) {\n previous[availableId] = nextId;\n if (availableId === endKey) {\n const ids: LinkerKey[] = [];\n let current = endKey;\n while (previous[current] !== startKey) {\n ids.push(current);\n current = previous[current];\n }\n ids.push(current);\n return ids.map((id: LinkerKey) => this.data.get(id)!.linkWith.get(previous[id])!);\n } else if (!visited.has(availableId)) {\n next.add(availableId);\n visited.add(availableId);\n }\n }\n }\n nextIds = next;\n }\n return [];\n }\n\n getLinkerColumnsForAxes({\n from: sourceAxes,\n to: targetAxes,\n throwWhenNoLinkExists = true,\n }: {\n from: AxisSpecNormalized[];\n to: AxisSpecNormalized[];\n throwWhenNoLinkExists?: boolean;\n }): PColumnIdAndSpec[] {\n // start keys - all possible keys in linker map using sourceAxes (for example, all axes of block's columns or all axes of columns in data-inputs)\n const startKeys: LinkerKey[] = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\n return Array.from(\n new Map(\n LinkerMap.getAxesRoots(targetAxes)\n .map(LinkerMap.getLinkerKeyFromAxisSpec) // target keys contain all axes to be linked; if some of target axes has parents they must be in the key\n .flatMap((targetKey) => {\n const linkers = startKeys\n .map((startKey) => this.searchLinkerPath(startKey, targetKey))\n .reduce(\n (shortestPath, path) =>\n (shortestPath.length && shortestPath.length < path.length) || !path.length\n ? shortestPath\n : path,\n [] as PColumnIdAndSpec[],\n )\n .map((linker) => [linker.columnId, linker] as const);\n if (!linkers.length && throwWhenNoLinkExists) {\n throw Error(`Unable to find linker column for ${targetKey}`);\n }\n return linkers;\n }),\n ).values(),\n );\n }\n\n /** Get list of axisSpecs from keys of linker columns map */\n getAxesListFromKeysList(keys: LinkerKey[]): AxisSpecNormalized[] {\n return Array.from(\n new Map(\n keys\n .flatMap((key) => this.data.get(key)?.keyAxesSpec ?? [])\n .map((axis) => [canonicalizeJson(getAxisId(axis)), axis]),\n ).values(),\n );\n }\n\n /** Get axes of target axes that are impossible to be linked to source axes with current linker map */\n getNonLinkableAxes(\n sourceAxes: AxisSpecNormalized[],\n targetAxes: AxisSpecNormalized[],\n ): AxisSpecNormalized[] {\n const startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n // target keys contain all axes to be linked; if some of target axes has parents they must be in the key\n const targetKeys = targetAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n\n const axes = Array.from(\n new Map(\n targetAxes\n .filter((_targetAxis, idx) => {\n const targetKey = targetKeys[idx];\n return !startKeys.some((startKey) => this.searchLinkerPath(startKey, targetKey).length);\n })\n .flatMap((axis) =>\n getArrayFromAxisTree(getAxesTree(axis)).map((axis) => [\n canonicalizeJson(getAxisId(axis)),\n axis,\n ]),\n ),\n ).values(),\n );\n return axes;\n }\n\n /** Get all axes that can be connected to sourceAxes by linkers */\n getReachableByLinkersAxesFromAxesNormalized(\n sourceAxes: AxisSpecNormalized[],\n matchAxisIdFn?: (axisIdOfLinker: AxisId, axisIdOfSource: AxisId) => boolean,\n ): AxisSpecNormalized[] {\n let startKeys: CanonicalizedJson<AxisId[]>[] = [];\n\n if (matchAxisIdFn) {\n const sourceAxisIdsGrouped: AxisId[][] = sourceAxes.map((axis) =>\n getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId),\n );\n for (const sourceAxisIdsGroup of sourceAxisIdsGrouped) {\n const matched = this.keyAxesIds.find((keyIds: AxisId[]) =>\n keyIds.every((linkerKeyAxisId) =>\n sourceAxisIdsGroup.find((sourceAxisId) => matchAxisIdFn(linkerKeyAxisId, sourceAxisId)),\n ),\n );\n if (matched) {\n startKeys.push(canonicalizeJson(matched));\n }\n }\n } else {\n startKeys = sourceAxes.map(LinkerMap.getLinkerKeyFromAxisSpec);\n }\n\n const availableKeys = this.searchAvailableAxesKeys(startKeys);\n return this.getAxesListFromKeysList([...availableKeys]);\n }\n\n getReachableByLinkersAxesFromAxes(\n sourceAxes: AxisSpec[],\n matchAxisIdFn?: (axisIdOfLinker: AxisId, axisIdOfSource: AxisId) => boolean,\n ): AxisSpecNormalized[] {\n return this.getReachableByLinkersAxesFromAxesNormalized(\n getNormalizedAxesList(sourceAxes),\n matchAxisIdFn,\n );\n }\n\n static getLinkerKeyFromAxisSpec(axis: AxisSpecNormalized): LinkerKey {\n return canonicalizeJson(getArrayFromAxisTree(getAxesTree(axis)).map(getAxisId));\n }\n\n /** Split array of axes into several arrays by parents: axes of one group are parents for each other.\n There are no order inside every group. */\n static getAxesGroups(axesSpec: AxisSpecNormalized[]): AxisSpecNormalized[][] {\n switch (axesSpec.length) {\n case 0:\n return [];\n case 1:\n return [[axesSpec[0]]];\n default:\n break;\n }\n\n const axisKeys = axesSpec.map((spec) => canonicalizeJson(getAxisId(spec)));\n const axisParentsIdxs = axesSpec.map(\n (spec) =>\n new Set(\n spec.parentAxesSpec\n .map((spec) => canonicalizeJson(getAxisId(spec)))\n .map((el) => {\n const idx = axisKeys.indexOf(el);\n if (idx === -1) {\n throw new Error(\n `malformed axesSpec: ${JSON.stringify(axesSpec)}, unable to locate parent ${el}`,\n );\n }\n return idx;\n }),\n ),\n );\n\n const allIdxs = [...axesSpec.keys()];\n const groups: number[][] = []; // groups of axis indexes\n\n const usedIdxs = new Set<number>();\n let nextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n while (nextFreeEl !== undefined) {\n const currentGroup = [nextFreeEl];\n usedIdxs.add(nextFreeEl);\n\n let nextElsOfCurrentGroup = [nextFreeEl];\n while (nextElsOfCurrentGroup.length) {\n const next = new Set<number>();\n for (const groupIdx of nextElsOfCurrentGroup) {\n const groupElementParents = axisParentsIdxs[groupIdx];\n allIdxs.forEach((idx) => {\n if (idx === groupIdx || usedIdxs.has(idx)) {\n return;\n }\n const parents = axisParentsIdxs[idx];\n if (parents.has(groupIdx) || groupElementParents.has(idx)) {\n currentGroup.push(idx);\n next.add(idx);\n usedIdxs.add(idx);\n }\n });\n }\n nextElsOfCurrentGroup = [...next];\n }\n\n groups.push([...currentGroup]);\n nextFreeEl = allIdxs.find((idx) => !usedIdxs.has(idx));\n }\n\n return groups.map((group) => group.map((idx) => axesSpec[idx]));\n }\n\n /** Get all axes that are not parents of any other axis */\n static getAxesRoots(axes: AxisSpecNormalized[]): AxisSpecNormalized[] {\n const parentsSet = new Set(\n axes.flatMap((axis) => axis.parentAxesSpec).map((spec) => canonicalizeJson(getAxisId(spec))),\n );\n return axes.filter((axis) => !parentsSet.has(canonicalizeJson(getAxisId(axis))));\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import type { PObjectId } from '../../pool';
2
- import type { TableRange } from './data_types';
3
- import type { FindColumnsRequest, FindColumnsResponse } from './find_columns';
4
- import type { PColumnIdAndSpec, PColumnSpec } from './spec/spec';
5
- import type { CalculateTableDataRequest, CalculateTableDataResponse } from './table_calculate';
6
- import type { UniqueValuesRequest, UniqueValuesResponse } from './unique_values';
1
+ import type { PObjectId } from "../../pool";
2
+ import type { TableRange } from "./data_types";
3
+ import type { FindColumnsRequest, FindColumnsResponse } from "./find_columns";
4
+ import type { PColumnIdAndSpec, PColumnSpec } from "./spec/spec";
5
+ import type { CalculateTableDataRequest, CalculateTableDataResponse } from "./table_calculate";
6
+ import type { UniqueValuesRequest, UniqueValuesResponse } from "./unique_values";
7
7
  /** Read interface exposed by PFrames library */
8
8
  export interface PFrame {
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pframe.d.ts","sourceRoot":"","sources":["../../../src/drivers/pframe/pframe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,gDAAgD;AAChD,MAAM,WAAW,MAAM;IACrB;;;SAGK;IACL,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEvE,kCAAkC;IAClC,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhE,2EAA2E;IAC3E,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE3C,mFAAmF;IACnF,kBAAkB,CAChB,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC7C,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEvC,yFAAyF;IACzF,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC9E;AAED,oDAAoD;AACpD,MAAM,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"pframe.d.ts","sourceRoot":"","sources":["../../../src/drivers/pframe/pframe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEjF,gDAAgD;AAChD,MAAM,WAAW,MAAM;IACrB;;;SAGK;IACL,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEvE,kCAAkC;IAClC,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAEhE,2EAA2E;IAC3E,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAE3C,mFAAmF;IACnF,kBAAkB,CAChB,OAAO,EAAE,yBAAyB,CAAC,SAAS,CAAC,EAC7C,KAAK,CAAC,EAAE,UAAU,GACjB,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAEvC,yFAAyF;IACzF,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAC9E;AAED,oDAAoD;AACpD,MAAM,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
- export * from './query_spec';
2
- export * from './query_data';
1
+ export * from "./query_spec";
2
+ export * from "./query_data";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
- import type { PObjectId } from '../../../pool';
2
- import type { JsonDataInfo } from '../data_info';
3
- import type { AxisValueType, ColumnValueType } from '../spec';
1
+ import type { PObjectId } from "../../../pool";
2
+ import type { JsonDataInfo } from "../data_info";
3
+ import type { AxisValueType, ColumnValueType } from "../spec";
4
4
  /**
5
5
  * Specification of column/frame structure.
6
6
  *
@@ -31,7 +31,7 @@ export type TypeSpec = {
31
31
  * - `exp` - Exponential function (e^x)
32
32
  * - `negate` - Negation (-x)
33
33
  */
34
- export type NumericUnaryOperand = 'abs' | 'ceil' | 'floor' | 'round' | 'sqrt' | 'log' | 'log2' | 'log10' | 'exp' | 'negate';
34
+ export type NumericUnaryOperand = "abs" | "ceil" | "floor" | "round" | "sqrt" | "log" | "log2" | "log10" | "exp" | "negate";
35
35
  /**
36
36
  * Binary mathematical operation kinds.
37
37
  *
@@ -45,7 +45,7 @@ export type NumericUnaryOperand = 'abs' | 'ceil' | 'floor' | 'round' | 'sqrt' |
45
45
  * - `div` - Division: left / right (division by zero returns Infinity or NaN)
46
46
  * - `mod` - Modulo: left % right
47
47
  */
48
- export type NumericBinaryOperand = 'add' | 'sub' | 'mul' | 'div' | 'mod';
48
+ export type NumericBinaryOperand = "add" | "sub" | "mul" | "div" | "mod";
49
49
  /**
50
50
  * Numeric comparison operation kinds.
51
51
  *
@@ -60,7 +60,7 @@ export type NumericBinaryOperand = 'add' | 'sub' | 'mul' | 'div' | 'mod';
60
60
  * - `gt` - Greater than: left > right
61
61
  * - `ge` - Greater or equal: left >= right
62
62
  */
63
- export type NumericComparisonOperand = 'eq' | 'ne' | 'lt' | 'le' | 'gt' | 'ge';
63
+ export type NumericComparisonOperand = "eq" | "ne" | "lt" | "le" | "gt" | "ge";
64
64
  /**
65
65
  * 2D point coordinates.
66
66
  *
@@ -89,7 +89,7 @@ export type Point2D = {
89
89
  * { type: 'constant', value: true }
90
90
  */
91
91
  export type ExprConstant = {
92
- type: 'constant';
92
+ type: "constant";
93
93
  value: string | number | boolean;
94
94
  };
95
95
  /**
@@ -112,7 +112,7 @@ export type ExprConstant = {
112
112
  * @see NumericUnaryOperand for available operations
113
113
  */
114
114
  export interface ExprNumericUnary<I> {
115
- type: 'numericUnary';
115
+ type: "numericUnary";
116
116
  /** The mathematical operation to apply */
117
117
  operand: NumericUnaryOperand;
118
118
  /** Input expression (must evaluate to numeric) */
@@ -138,7 +138,7 @@ export interface ExprNumericUnary<I> {
138
138
  * @see NumericBinaryOperand for available operations
139
139
  */
140
140
  export interface ExprNumericBinary<I> {
141
- type: 'numericBinary';
141
+ type: "numericBinary";
142
142
  /** The arithmetic operation to apply */
143
143
  operand: NumericBinaryOperand;
144
144
  /** Left operand expression */
@@ -172,7 +172,7 @@ export interface ExprNumericBinary<I> {
172
172
  * @see NumericComparisonOperand for available operations
173
173
  */
174
174
  export interface ExprNumericComparison<I> {
175
- type: 'numericComparison';
175
+ type: "numericComparison";
176
176
  /** The comparison operation to apply */
177
177
  operand: NumericComparisonOperand;
178
178
  /** Left operand expression */
@@ -201,7 +201,7 @@ export interface ExprNumericComparison<I> {
201
201
  * { type: 'stringEquals', input: nameColumn, value: 'John', caseInsensitive: true }
202
202
  */
203
203
  export interface ExprStringEquals<I> {
204
- type: 'stringEquals';
204
+ type: "stringEquals";
205
205
  /** Input expression (must evaluate to string) */
206
206
  input: I;
207
207
  /** Reference string to compare against */
@@ -229,7 +229,7 @@ export interface ExprStringEquals<I> {
229
229
  * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions | MDN Regular Expressions Guide}
230
230
  */
231
231
  export interface ExprStringRegex<I> {
232
- type: 'stringRegex';
232
+ type: "stringRegex";
233
233
  /** Input expression (must evaluate to string) */
234
234
  input: I;
235
235
  /** Regular expression pattern */
@@ -253,7 +253,7 @@ export interface ExprStringRegex<I> {
253
253
  * { type: 'stringContains', input: descColumn, value: 'ERROR', caseInsensitive: true }
254
254
  */
255
255
  export interface ExprStringContains<I> {
256
- type: 'stringContains';
256
+ type: "stringContains";
257
257
  /** Input expression (must evaluate to string) */
258
258
  input: I;
259
259
  /** Substring to search for */
@@ -296,7 +296,7 @@ export interface ExprStringContains<I> {
296
296
  * }
297
297
  */
298
298
  export interface ExprStringContainsFuzzy<I> {
299
- type: 'stringContainsFuzzy';
299
+ type: "stringContainsFuzzy";
300
300
  /** Input expression (must evaluate to string) */
301
301
  input: I;
302
302
  /** Pattern to match against */
@@ -335,7 +335,7 @@ export interface ExprStringContainsFuzzy<I> {
335
335
  * { type: 'not', input: comparisonExpr }
336
336
  */
337
337
  export interface ExprLogicalUnary<I> {
338
- type: 'not';
338
+ type: "not";
339
339
  /** Input boolean expression to negate */
340
340
  input: I;
341
341
  }
@@ -361,7 +361,7 @@ export interface ExprLogicalUnary<I> {
361
361
  */
362
362
  export interface ExprLogicalVariadic<I> {
363
363
  /** Logical operation: 'and' or 'or' */
364
- type: 'and' | 'or';
364
+ type: "and" | "or";
365
365
  /** Array of boolean expressions to combine (minimum 2 elements) */
366
366
  input: I[];
367
367
  }
@@ -385,7 +385,7 @@ export interface ExprLogicalVariadic<I> {
385
385
  * }
386
386
  */
387
387
  export interface ExprIsIn<I, T extends string | number> {
388
- type: 'isIn';
388
+ type: "isIn";
389
389
  /** Input expression to test */
390
390
  input: I;
391
391
  /** Set of allowed values */
@@ -407,7 +407,7 @@ export interface ExprIsIn<I, T extends string | number> {
407
407
  * { type: 'axisRef', value: 0 }
408
408
  */
409
409
  export interface ExprAxisRef<A> {
410
- type: 'axisRef';
410
+ type: "axisRef";
411
411
  /** Axis identifier (selector or index depending on context) */
412
412
  value: A;
413
413
  }
@@ -427,34 +427,34 @@ export interface ExprAxisRef<A> {
427
427
  * { type: 'columnRef', value: 0 }
428
428
  */
429
429
  export interface ExprColumnRef<C> {
430
- type: 'columnRef';
430
+ type: "columnRef";
431
431
  /** Column identifier (ID or index depending on context) */
432
432
  value: C;
433
433
  }
434
434
  export type InferBooleanExpressionUnion<E> = [
435
435
  E extends ExprNumericComparison<unknown> ? Extract<E, {
436
- type: 'numericComparison';
436
+ type: "numericComparison";
437
437
  }> : never,
438
438
  E extends ExprStringEquals<unknown> ? Extract<E, {
439
- type: 'stringEquals';
439
+ type: "stringEquals";
440
440
  }> : never,
441
441
  E extends ExprStringContains<unknown> ? Extract<E, {
442
- type: 'stringContains';
442
+ type: "stringContains";
443
443
  }> : never,
444
444
  E extends ExprStringContainsFuzzy<unknown> ? Extract<E, {
445
- type: 'stringContainsFuzzy';
445
+ type: "stringContainsFuzzy";
446
446
  }> : never,
447
447
  E extends ExprStringRegex<unknown> ? Extract<E, {
448
- type: 'stringRegex';
448
+ type: "stringRegex";
449
449
  }> : never,
450
450
  E extends ExprLogicalUnary<unknown> ? Extract<E, {
451
- type: 'not';
451
+ type: "not";
452
452
  }> : never,
453
453
  E extends ExprLogicalVariadic<unknown> ? Extract<E, {
454
- type: 'and' | 'or';
454
+ type: "and" | "or";
455
455
  }> : never,
456
456
  E extends ExprIsIn<unknown, string | number> ? Extract<E, {
457
- type: 'isIn';
457
+ type: "isIn";
458
458
  }> : never
459
459
  ][number];
460
460
  /**
@@ -475,7 +475,7 @@ export type InferBooleanExpressionUnion<E> = [
475
475
  * { type: 'axis', id: 0 }
476
476
  */
477
477
  export interface QueryAxisSelector<A> {
478
- type: 'axis';
478
+ type: "axis";
479
479
  /** Axis identifier (name or index depending on context) */
480
480
  id: A;
481
481
  }
@@ -497,7 +497,7 @@ export interface QueryAxisSelector<A> {
497
497
  * { type: 'column', id: 0 }
498
498
  */
499
499
  export interface QueryColumnSelector<C> {
500
- type: 'column';
500
+ type: "column";
501
501
  /** Column identifier (name or index depending on context) */
502
502
  id: C;
503
503
  }
@@ -528,7 +528,7 @@ export interface QueryColumnSelector<C> {
528
528
  * // Result has all samples; annotations/metadata are null where not available
529
529
  */
530
530
  export interface QueryOuterJoin<JE extends QueryJoinEntry<unknown>> {
531
- type: 'outerJoin';
531
+ type: "outerJoin";
532
532
  /** Primary query - all its records are preserved */
533
533
  primary: JE;
534
534
  /** Secondary queries - joined where keys match, null where they don't */
@@ -560,7 +560,7 @@ export interface QueryOuterJoin<JE extends QueryJoinEntry<unknown>> {
560
560
  * }
561
561
  */
562
562
  export interface QuerySliceAxes<Q, A extends QueryAxisSelector<unknown>> {
563
- type: 'sliceAxes';
563
+ type: "sliceAxes";
564
564
  /** Input query to slice */
565
565
  input: Q;
566
566
  /** List of axis filters to apply (at least one required) */
@@ -598,7 +598,7 @@ export interface QuerySliceAxes<Q, A extends QueryAxisSelector<unknown>> {
598
598
  * }
599
599
  */
600
600
  export interface QuerySort<Q, E> {
601
- type: 'sort';
601
+ type: "sort";
602
602
  /** Input query to sort */
603
603
  input: Q;
604
604
  /** Sort criteria in priority order (at least one required) */
@@ -648,7 +648,7 @@ export interface QuerySort<Q, E> {
648
648
  * }
649
649
  */
650
650
  export interface QueryFilter<Q, E> {
651
- type: 'filter';
651
+ type: "filter";
652
652
  /** Input query to filter */
653
653
  input: Q;
654
654
  /** Boolean predicate expression - only true records pass */
@@ -668,7 +668,7 @@ export interface QueryFilter<Q, E> {
668
668
  * { type: 'column', columnId: 'col_abc123' }
669
669
  */
670
670
  export interface QueryColumn {
671
- type: 'column';
671
+ type: "column";
672
672
  /** Unique identifier of the column to reference */
673
673
  columnId: PObjectId;
674
674
  }
@@ -692,7 +692,7 @@ export interface QueryColumn {
692
692
  * }
693
693
  */
694
694
  export interface QueryInlineColumn<T> {
695
- type: 'inlineColumn';
695
+ type: "inlineColumn";
696
696
  /** Type specification defining axes and column types */
697
697
  spec: T;
698
698
  /** Data information containing or referencing the actual values */
@@ -724,7 +724,7 @@ export interface QueryInlineColumn<T> {
724
724
  * }
725
725
  */
726
726
  export interface QuerySparseToDenseColumn<SO> {
727
- type: 'sparseToDenseColumn';
727
+ type: "sparseToDenseColumn";
728
728
  /** ID of the column to cross-join */
729
729
  columnId: PObjectId;
730
730
  /** Optional override for the column specification */
@@ -767,7 +767,7 @@ export interface QuerySparseToDenseColumn<SO> {
767
767
  */
768
768
  export interface QuerySymmetricJoin<JE extends QueryJoinEntry<unknown>> {
769
769
  /** 'innerJoin' for intersection, 'fullJoin' for union with nulls */
770
- type: 'innerJoin' | 'fullJoin';
770
+ type: "innerJoin" | "fullJoin";
771
771
  /** Queries to join (at least one required) */
772
772
  entries: JE[];
773
773
  }
@@ -1,5 +1,5 @@
1
- import type { PObjectId } from '../../../pool';
2
- import type { ExprAxisRef, ExprColumnRef, ExprNumericBinary, ExprConstant, ExprIsIn, ExprLogicalUnary, ExprLogicalVariadic, ExprStringContains, ExprStringContainsFuzzy, ExprStringEquals, ExprStringRegex, ExprNumericUnary, QueryAxisSelector, QueryColumn, QuerySparseToDenseColumn, QueryFilter, QueryInlineColumn, QueryJoinEntry, QueryOuterJoin, QuerySliceAxes, QuerySort, QuerySymmetricJoin, TypeSpec, InferBooleanExpressionUnion } from './query_common';
1
+ import type { PObjectId } from "../../../pool";
2
+ import type { ExprAxisRef, ExprColumnRef, ExprNumericBinary, ExprConstant, ExprIsIn, ExprLogicalUnary, ExprLogicalVariadic, ExprStringContains, ExprStringContainsFuzzy, ExprStringEquals, ExprStringRegex, ExprNumericUnary, QueryAxisSelector, QueryColumn, QuerySparseToDenseColumn, QueryFilter, QueryInlineColumn, QueryJoinEntry, QueryOuterJoin, QuerySliceAxes, QuerySort, QuerySymmetricJoin, TypeSpec, InferBooleanExpressionUnion } from "./query_common";
3
3
  /**
4
4
  * Column identifier with type specification.
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"query_data.d.ts","sourceRoot":"","sources":["../../../../src/drivers/pframe/query/query_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EAAE,wBAAwB,EACrC,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,KAAK,mBAAmB,GAAG;IACzB,sCAAsC;IACtC,EAAE,EAAE,SAAS,CAAC;IACd,wDAAwD;IACxD,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,SAAS,CAAC;IACnE,yDAAyD;IACzD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAC1C,6BAA6B;AAC7B,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC3E,oCAAoC;AACpC,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;AACzF,8BAA8B;AAC9B,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAC5E,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AACpE,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtF,qBAAqB;AACrB,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACtE,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,qBAAqB,GACrB,4BAA4B,GAC5B,sBAAsB,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,GACb,eAAe,CAAC;AAEpB,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAClD,yBAAyB;AACzB,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GAAG,eAAe,GAAG,YAAY,GAClD,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,GAC9E,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,GAC/E,eAAe,CAAC,mBAAmB,CAAC,GAAG,uBAAuB,CAAC,mBAAmB,CAAC,GACnF,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,mBAAmB,CAAC,GAChF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAC9E;AAEH,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"query_data.d.ts","sourceRoot":"","sources":["../../../../src/drivers/pframe/query/query_data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,wBAAwB,EACxB,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,QAAQ,EACR,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,KAAK,mBAAmB,GAAG;IACzB,sCAAsC;IACtC,EAAE,EAAE,SAAS,CAAC;IACd,wDAAwD;IACxD,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,SAAS,CAAC;IACnE,yDAAyD;IACzD,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC;AAC1C,6BAA6B;AAC7B,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC3E,oCAAoC;AACpC,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,CAAC,mBAAmB,CAAC,CAAC;AACzF,8BAA8B;AAC9B,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;AAC5E,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;AACpE,0BAA0B;AAC1B,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AACtF,qBAAqB;AACrB,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACtE,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,qBAAqB,GACrB,4BAA4B,GAC5B,sBAAsB,GACtB,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,GACb,eAAe,CAAC;AAEpB,uBAAuB;AACvB,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;AAClD,yBAAyB;AACzB,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,mBAAmB,GAC3B,iBAAiB,GACjB,eAAe,GACf,YAAY,GACZ,iBAAiB,CAAC,mBAAmB,CAAC,GACtC,gBAAgB,CAAC,mBAAmB,CAAC,GACrC,gBAAgB,CAAC,mBAAmB,CAAC,GACrC,kBAAkB,CAAC,mBAAmB,CAAC,GACvC,eAAe,CAAC,mBAAmB,CAAC,GACpC,uBAAuB,CAAC,mBAAmB,CAAC,GAC5C,gBAAgB,CAAC,mBAAmB,CAAC,GACrC,mBAAmB,CAAC,mBAAmB,CAAC,GACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,GACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAE1C,MAAM,MAAM,0BAA0B,GAAG,2BAA2B,CAAC,mBAAmB,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { PObjectId } from '../../../pool';
2
- import type { ExprAxisRef, ExprColumnRef, ExprNumericBinary, ExprConstant, ExprIsIn, ExprLogicalUnary, ExprLogicalVariadic, ExprStringContains, ExprStringContainsFuzzy, ExprStringEquals, ExprStringRegex, ExprNumericUnary, QueryAxisSelector, QueryColumn, QuerySparseToDenseColumn, QueryFilter, QueryInlineColumn, QueryJoinEntry, QueryOuterJoin, QuerySliceAxes, QuerySort, QuerySymmetricJoin, InferBooleanExpressionUnion } from './query_common';
3
- import type { Domain, PColumnIdAndSpec, PColumnSpec, SingleAxisSelector } from '../spec';
1
+ import type { PObjectId } from "../../../pool";
2
+ import type { ExprAxisRef, ExprColumnRef, ExprNumericBinary, ExprConstant, ExprIsIn, ExprLogicalUnary, ExprLogicalVariadic, ExprStringContains, ExprStringContainsFuzzy, ExprStringEquals, ExprStringRegex, ExprNumericUnary, QueryAxisSelector, QueryColumn, QuerySparseToDenseColumn, QueryFilter, QueryInlineColumn, QueryJoinEntry, QueryOuterJoin, QuerySliceAxes, QuerySort, QuerySymmetricJoin, InferBooleanExpressionUnion } from "./query_common";
3
+ import type { Domain, PColumnIdAndSpec, PColumnSpec, SingleAxisSelector } from "../spec";
4
4
  /**
5
5
  * Column identifier with specification.
6
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"query_spec.d.ts","sourceRoot":"","sources":["../../../../src/drivers/pframe/query/query_spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query_spec.d.ts","sourceRoot":"","sources":["../../../../src/drivers/pframe/query/query_spec.ts"],"names":[],"mappings":"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"}
@@ -108,7 +108,7 @@ class AnchoredIdDeriver {
108
108
  for (const filter of axisFilters) {
109
109
  const [axisIdOrIndex, value] = filter;
110
110
  // If it's already a numeric index, validate it
111
- if (typeof axisIdOrIndex === 'number') {
111
+ if (typeof axisIdOrIndex === "number") {
112
112
  if (axisIdOrIndex < 0 || axisIdOrIndex >= spec$1.axesSpec.length) {
113
113
  throw new Error(`Axis index ${axisIdOrIndex} is out of bounds (0-${spec$1.axesSpec.length - 1})`);
114
114
  }
@@ -163,7 +163,7 @@ function resolveAnchors(anchors, matcher, options) {
163
163
  if (result.domain) {
164
164
  const resolvedDomain = {};
165
165
  for (const [key, value] of Object.entries(result.domain)) {
166
- if (typeof value === 'string') {
166
+ if (typeof value === "string") {
167
167
  resolvedDomain[key] = value;
168
168
  }
169
169
  else {
@@ -196,13 +196,13 @@ function resolveAxisReference(anchors, axisRef) {
196
196
  const anchorSpec = anchors[anchorId];
197
197
  if (!anchorSpec)
198
198
  throw new Error(`Anchor "${anchorId}" not found for axis reference`);
199
- if ('idx' in axisRef) {
199
+ if ("idx" in axisRef) {
200
200
  // AnchorAxisRefByIdx
201
201
  if (axisRef.idx < 0 || axisRef.idx >= anchorSpec.axesSpec.length)
202
202
  throw new Error(`Axis index ${axisRef.idx} out of bounds for anchor "${anchorId}"`);
203
203
  return anchorSpec.axesSpec[axisRef.idx];
204
204
  }
205
- else if ('name' in axisRef) {
205
+ else if ("name" in axisRef) {
206
206
  // AnchorAxisRefByName
207
207
  const matches = anchorSpec.axesSpec.filter((axis) => axis.name === axisRef.name);
208
208
  if (matches.length > 1)
@@ -211,7 +211,7 @@ function resolveAxisReference(anchors, axisRef) {
211
211
  throw new Error(`Axis with name "${axisRef.name}" not found in anchor "${anchorId}"`);
212
212
  return matches[0];
213
213
  }
214
- else if ('id' in axisRef) {
214
+ else if ("id" in axisRef) {
215
215
  // AnchorAxisRefByMatcher
216
216
  const matches = anchorSpec.axesSpec.filter((axis) => spec.matchAxisId(axisRef.id, spec.getAxisId(axis)));
217
217
  if (matches.length > 1)
@@ -226,7 +226,7 @@ function resolveAxisReference(anchors, axisRef) {
226
226
  * Type guard to check if a value is an anchored axis reference
227
227
  */
228
228
  function isAnchorAxisRef(value) {
229
- return typeof value === 'object' && 'anchor' in value;
229
+ return typeof value === "object" && "anchor" in value;
230
230
  }
231
231
 
232
232
  exports.AnchoredIdDeriver = AnchoredIdDeriver;
@@ -1 +1 @@
1
- {"version":3,"file":"anchored.cjs","sources":["../../../../src/drivers/pframe/spec/anchored.ts"],"sourcesContent":["import canonicalize from 'canonicalize';\nimport type { AxisFilter, AxisFilterValue } from './filtered_column';\nimport type { SUniversalPColumnId, UniversalPColumnId } from './ids';\nimport { stringifyColumnId } from './ids';\nimport type { AAxisSelector, AnchorAxisRef, AnchorAxisRefByIdx, AnchoredPColumnId, AnchoredPColumnSelector, AxisSelector, PColumnSelector } from './selectors';\nimport type { AxisId, PColumnSpec } from './spec';\nimport { getAxisId, matchAxisId } from './spec';\n\n//\n// Helper functions\n//\n\nfunction axisKey(axis: AxisId): string {\n return canonicalize(getAxisId(axis))!;\n}\n\nfunction domainKey(key: string, value: string): string {\n return JSON.stringify([key, value]);\n}\n\n/**\n * Context for resolving and generating anchored references to columns and axes\n * Maintains maps of known domain values and axes that can be referenced by anchors\n */\nexport class AnchoredIdDeriver {\n private readonly domains = new Map<string, string>();\n private readonly axes = new Map<string, AnchorAxisRefByIdx>();\n /**\n * Domain packs are used to group domain keys that can be anchored to the same anchor\n * This is used to optimize the lookup of domain anchors\n */\n private readonly domainPacks: string[][] = [];\n /**\n * Maps domain packs to anchors\n */\n private readonly domainPackToAnchor = new Map<string, string>();\n\n /**\n * Creates a new anchor context from a set of anchor column specifications\n * @param anchors Record of anchor column specifications indexed by anchor ID\n */\n constructor(public readonly anchors: Record<string, PColumnSpec>) {\n const anchorEntries = Object.entries(anchors);\n anchorEntries.sort((a, b) => a[0].localeCompare(b[0]));\n for (const [anchorId, spec] of anchorEntries) {\n for (let axisIdx = 0; axisIdx < spec.axesSpec.length; axisIdx++) {\n const axis = spec.axesSpec[axisIdx];\n const key = axisKey(axis);\n this.axes.set(key, { anchor: anchorId, idx: axisIdx });\n }\n if (spec.domain !== undefined) {\n const domainEntries = Object.entries(spec.domain);\n domainEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\n this.domainPackToAnchor.set(JSON.stringify(domainEntries), anchorId);\n this.domainPacks.push(domainEntries.map(([dKey]) => dKey));\n\n for (const [dKey, dValue] of domainEntries) {\n const key = domainKey(dKey, dValue);\n this.domains.set(key, anchorId);\n }\n }\n }\n }\n\n /**\n * Derives an anchored column identifier from a column specification\n * @param spec Column specification to anchor\n * @returns An anchored column identifier that can be used to identify columns similar to the input specification\n */\n derive(spec: PColumnSpec): AnchoredPColumnId;\n\n /**\n * Derives an anchored column identifier from a column specification\n * @param spec Column specification to anchor\n * @param axisFilters Axis filters to apply to the column\n * @returns An anchored and sliced column identifier that can be used to identify columns similar to the input specification\n */\n derive(spec: PColumnSpec, axisFilters?: AxisFilter[]): UniversalPColumnId;\n\n /**\n * Implementation of derive method\n */\n derive(spec: PColumnSpec, axisFilters?: AxisFilter[]): UniversalPColumnId {\n const result: AnchoredPColumnId = {\n name: spec.name,\n axes: [],\n };\n\n let skipDomains: Set<string> | undefined = undefined;\n if (spec.domain !== undefined) {\n outer:\n for (const domainPack of this.domainPacks) {\n const dAnchor: string[][] = [];\n for (const domainKey of domainPack) {\n const dValue = spec.domain[domainKey];\n if (dValue !== undefined)\n dAnchor.push([domainKey, dValue]);\n else\n break outer;\n }\n const domainAnchor = this.domainPackToAnchor.get(JSON.stringify(dAnchor));\n if (domainAnchor !== undefined) {\n result.domainAnchor = domainAnchor;\n skipDomains = new Set(domainPack);\n break;\n }\n }\n }\n\n for (const [dKey, dValue] of Object.entries(spec.domain ?? {})) {\n if (skipDomains !== undefined && skipDomains.has(dKey))\n continue;\n const key = domainKey(dKey, dValue);\n const anchorId = this.domains.get(key);\n result.domain ??= {};\n result.domain[dKey] = anchorId ? { anchor: anchorId } : dValue;\n }\n\n result.axes = spec.axesSpec.map((axis) => {\n const key = axisKey(axis);\n const anchorAxisRef = this.axes.get(key);\n if (anchorAxisRef === undefined) return getAxisId(axis);\n else return anchorAxisRef;\n });\n\n // If no axis filters are provided, return the anchored ID as is\n if (!axisFilters || axisFilters.length === 0) {\n return result;\n }\n\n // Process axis filters and create a sliced column ID\n const resolvedFilters: [number, AxisFilterValue][] = [];\n\n for (const filter of axisFilters) {\n const [axisIdOrIndex, value] = filter;\n\n // If it's already a numeric index, validate it\n if (typeof axisIdOrIndex === 'number') {\n if (axisIdOrIndex < 0 || axisIdOrIndex >= spec.axesSpec.length) {\n throw new Error(`Axis index ${axisIdOrIndex} is out of bounds (0-${spec.axesSpec.length - 1})`);\n }\n resolvedFilters.push([axisIdOrIndex, value]);\n } else {\n // If it's a string (axis name), resolve it to an index\n const axisIndex = spec.axesSpec.findIndex((axis) => axis.name === axisIdOrIndex);\n if (axisIndex === -1) {\n throw new Error(`Axis with name \"${axisIdOrIndex}\" not found in the column specification`);\n }\n resolvedFilters.push([axisIndex, value]);\n }\n }\n\n // Sort filters by axis index to ensure consistency\n resolvedFilters.sort((a, b) => a[0] - b[0]);\n\n return {\n source: result,\n axisFilters: resolvedFilters,\n };\n }\n\n /**\n * Derives a canonicalized string representation of an anchored column identifier, can be used as a unique identifier for the column\n * @param spec Column specification to anchor\n * @param axisFilters Optional axis filters to apply to the column\n * @returns A canonicalized string representation of the anchored column identifier\n */\n deriveS(spec: PColumnSpec, axisFilters?: AxisFilter[]): SUniversalPColumnId {\n return stringifyColumnId(this.derive(spec, axisFilters));\n }\n}\n\n/**\n * Options for the resolveAnchors function\n */\nexport type ResolveAnchorsOptions = {\n /**\n * If true, missing domain keys in anchors will be ignored.\n * If false (default), an error will be thrown.\n */\n ignoreMissingDomains?: boolean;\n};\n\n/**\n * Resolves anchored references in a column matcher to create a non-anchored matcher.\n * Doing an opposite operation to {@link AnchorIdDeriver.derive()}.\n *\n * @param anchors - Record of anchor column specifications indexed by anchor id\n * @param matcher - An anchored column matcher (or id, which is subtype of it) containing references that need to be resolved\n * @param options - Options for resolving anchors\n * @returns A non-anchored column matcher with all references resolved to actual values\n */\nexport function resolveAnchors(anchors: Record<string, PColumnSpec>, matcher: AnchoredPColumnSelector, options?: ResolveAnchorsOptions): PColumnSelector {\n const result = { ...matcher };\n const ignoreMissingDomains = options?.ignoreMissingDomains ?? false;\n\n if (result.domainAnchor !== undefined) {\n const anchorSpec = anchors[result.domainAnchor];\n if (!anchorSpec)\n throw new Error(`Anchor \"${result.domainAnchor}\" not found`);\n\n const anchorDomains = anchorSpec.domain || {};\n result.domain = { ...anchorDomains, ...result.domain };\n delete result.domainAnchor;\n }\n\n if (result.domain) {\n const resolvedDomain: Record<string, string> = {};\n for (const [key, value] of Object.entries(result.domain)) {\n if (typeof value === 'string') {\n resolvedDomain[key] = value;\n } else {\n // It's an AnchorDomainRef\n const anchorSpec = anchors[value.anchor];\n if (!anchorSpec)\n throw new Error(`Anchor \"${value.anchor}\" not found for domain key \"${key}\"`);\n\n if (!anchorSpec.domain || anchorSpec.domain[key] === undefined) {\n if (!ignoreMissingDomains)\n throw new Error(`Domain key \"${key}\" not found in anchor \"${value.anchor}\"`);\n continue;\n }\n\n resolvedDomain[key] = anchorSpec.domain[key];\n }\n }\n result.domain = resolvedDomain;\n }\n\n if (result.axes)\n result.axes = result.axes.map((axis) => resolveAxisReference(anchors, axis));\n\n return result as PColumnSelector;\n}\n\n/**\n * Resolves an anchored axis reference to a concrete AxisId\n */\nfunction resolveAxisReference(anchors: Record<string, PColumnSpec>, axisRef: AAxisSelector): AxisSelector {\n if (!isAnchorAxisRef(axisRef))\n return axisRef;\n\n // It's an anchored reference\n const anchorId = axisRef.anchor;\n const anchorSpec = anchors[anchorId];\n if (!anchorSpec)\n throw new Error(`Anchor \"${anchorId}\" not found for axis reference`);\n\n if ('idx' in axisRef) {\n // AnchorAxisRefByIdx\n if (axisRef.idx < 0 || axisRef.idx >= anchorSpec.axesSpec.length)\n throw new Error(`Axis index ${axisRef.idx} out of bounds for anchor \"${anchorId}\"`);\n return anchorSpec.axesSpec[axisRef.idx];\n } else if ('name' in axisRef) {\n // AnchorAxisRefByName\n const matches = anchorSpec.axesSpec.filter((axis) => axis.name === axisRef.name);\n if (matches.length > 1)\n throw new Error(`Multiple axes with name \"${axisRef.name}\" found in anchor \"${anchorId}\"`);\n if (matches.length === 0)\n throw new Error(`Axis with name \"${axisRef.name}\" not found in anchor \"${anchorId}\"`);\n return matches[0];\n } else if ('id' in axisRef) {\n // AnchorAxisRefByMatcher\n const matches = anchorSpec.axesSpec.filter((axis) => matchAxisId(axisRef.id, getAxisId(axis)));\n if (matches.length > 1)\n throw new Error(`Multiple matching axes found for matcher in anchor \"${anchorId}\"`);\n if (matches.length === 0)\n throw new Error(`No matching axis found for matcher in anchor \"${anchorId}\"`);\n return matches[0];\n }\n\n throw new Error(`Unsupported axis reference type`);\n}\n\n/**\n * Type guard to check if a value is an anchored axis reference\n */\nfunction isAnchorAxisRef(value: AAxisSelector): value is AnchorAxisRef {\n return typeof value === 'object' && 'anchor' in value;\n}\n"],"names":["getAxisId","spec","stringifyColumnId","matchAxisId"],"mappings":"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"}
1
+ {"version":3,"file":"anchored.cjs","sources":["../../../../src/drivers/pframe/spec/anchored.ts"],"sourcesContent":["import canonicalize from \"canonicalize\";\nimport type { AxisFilter, AxisFilterValue } from \"./filtered_column\";\nimport type { SUniversalPColumnId, UniversalPColumnId } from \"./ids\";\nimport { stringifyColumnId } from \"./ids\";\nimport type {\n AAxisSelector,\n AnchorAxisRef,\n AnchorAxisRefByIdx,\n AnchoredPColumnId,\n AnchoredPColumnSelector,\n AxisSelector,\n PColumnSelector,\n} from \"./selectors\";\nimport type { AxisId, PColumnSpec } from \"./spec\";\nimport { getAxisId, matchAxisId } from \"./spec\";\n\n//\n// Helper functions\n//\n\nfunction axisKey(axis: AxisId): string {\n return canonicalize(getAxisId(axis))!;\n}\n\nfunction domainKey(key: string, value: string): string {\n return JSON.stringify([key, value]);\n}\n\n/**\n * Context for resolving and generating anchored references to columns and axes\n * Maintains maps of known domain values and axes that can be referenced by anchors\n */\nexport class AnchoredIdDeriver {\n private readonly domains = new Map<string, string>();\n private readonly axes = new Map<string, AnchorAxisRefByIdx>();\n /**\n * Domain packs are used to group domain keys that can be anchored to the same anchor\n * This is used to optimize the lookup of domain anchors\n */\n private readonly domainPacks: string[][] = [];\n /**\n * Maps domain packs to anchors\n */\n private readonly domainPackToAnchor = new Map<string, string>();\n\n /**\n * Creates a new anchor context from a set of anchor column specifications\n * @param anchors Record of anchor column specifications indexed by anchor ID\n */\n constructor(public readonly anchors: Record<string, PColumnSpec>) {\n const anchorEntries = Object.entries(anchors);\n anchorEntries.sort((a, b) => a[0].localeCompare(b[0]));\n for (const [anchorId, spec] of anchorEntries) {\n for (let axisIdx = 0; axisIdx < spec.axesSpec.length; axisIdx++) {\n const axis = spec.axesSpec[axisIdx];\n const key = axisKey(axis);\n this.axes.set(key, { anchor: anchorId, idx: axisIdx });\n }\n if (spec.domain !== undefined) {\n const domainEntries = Object.entries(spec.domain);\n domainEntries.sort((a, b) => a[0].localeCompare(b[0]));\n\n this.domainPackToAnchor.set(JSON.stringify(domainEntries), anchorId);\n this.domainPacks.push(domainEntries.map(([dKey]) => dKey));\n\n for (const [dKey, dValue] of domainEntries) {\n const key = domainKey(dKey, dValue);\n this.domains.set(key, anchorId);\n }\n }\n }\n }\n\n /**\n * Derives an anchored column identifier from a column specification\n * @param spec Column specification to anchor\n * @returns An anchored column identifier that can be used to identify columns similar to the input specification\n */\n derive(spec: PColumnSpec): AnchoredPColumnId;\n\n /**\n * Derives an anchored column identifier from a column specification\n * @param spec Column specification to anchor\n * @param axisFilters Axis filters to apply to the column\n * @returns An anchored and sliced column identifier that can be used to identify columns similar to the input specification\n */\n derive(spec: PColumnSpec, axisFilters?: AxisFilter[]): UniversalPColumnId;\n\n /**\n * Implementation of derive method\n */\n derive(spec: PColumnSpec, axisFilters?: AxisFilter[]): UniversalPColumnId {\n const result: AnchoredPColumnId = {\n name: spec.name,\n axes: [],\n };\n\n let skipDomains: Set<string> | undefined = undefined;\n if (spec.domain !== undefined) {\n outer: for (const domainPack of this.domainPacks) {\n const dAnchor: string[][] = [];\n for (const domainKey of domainPack) {\n const dValue = spec.domain[domainKey];\n if (dValue !== undefined) dAnchor.push([domainKey, dValue]);\n else break outer;\n }\n const domainAnchor = this.domainPackToAnchor.get(JSON.stringify(dAnchor));\n if (domainAnchor !== undefined) {\n result.domainAnchor = domainAnchor;\n skipDomains = new Set(domainPack);\n break;\n }\n }\n }\n\n for (const [dKey, dValue] of Object.entries(spec.domain ?? {})) {\n if (skipDomains !== undefined && skipDomains.has(dKey)) continue;\n const key = domainKey(dKey, dValue);\n const anchorId = this.domains.get(key);\n result.domain ??= {};\n result.domain[dKey] = anchorId ? { anchor: anchorId } : dValue;\n }\n\n result.axes = spec.axesSpec.map((axis) => {\n const key = axisKey(axis);\n const anchorAxisRef = this.axes.get(key);\n if (anchorAxisRef === undefined) return getAxisId(axis);\n else return anchorAxisRef;\n });\n\n // If no axis filters are provided, return the anchored ID as is\n if (!axisFilters || axisFilters.length === 0) {\n return result;\n }\n\n // Process axis filters and create a sliced column ID\n const resolvedFilters: [number, AxisFilterValue][] = [];\n\n for (const filter of axisFilters) {\n const [axisIdOrIndex, value] = filter;\n\n // If it's already a numeric index, validate it\n if (typeof axisIdOrIndex === \"number\") {\n if (axisIdOrIndex < 0 || axisIdOrIndex >= spec.axesSpec.length) {\n throw new Error(\n `Axis index ${axisIdOrIndex} is out of bounds (0-${spec.axesSpec.length - 1})`,\n );\n }\n resolvedFilters.push([axisIdOrIndex, value]);\n } else {\n // If it's a string (axis name), resolve it to an index\n const axisIndex = spec.axesSpec.findIndex((axis) => axis.name === axisIdOrIndex);\n if (axisIndex === -1) {\n throw new Error(\n `Axis with name \"${axisIdOrIndex}\" not found in the column specification`,\n );\n }\n resolvedFilters.push([axisIndex, value]);\n }\n }\n\n // Sort filters by axis index to ensure consistency\n resolvedFilters.sort((a, b) => a[0] - b[0]);\n\n return {\n source: result,\n axisFilters: resolvedFilters,\n };\n }\n\n /**\n * Derives a canonicalized string representation of an anchored column identifier, can be used as a unique identifier for the column\n * @param spec Column specification to anchor\n * @param axisFilters Optional axis filters to apply to the column\n * @returns A canonicalized string representation of the anchored column identifier\n */\n deriveS(spec: PColumnSpec, axisFilters?: AxisFilter[]): SUniversalPColumnId {\n return stringifyColumnId(this.derive(spec, axisFilters));\n }\n}\n\n/**\n * Options for the resolveAnchors function\n */\nexport type ResolveAnchorsOptions = {\n /**\n * If true, missing domain keys in anchors will be ignored.\n * If false (default), an error will be thrown.\n */\n ignoreMissingDomains?: boolean;\n};\n\n/**\n * Resolves anchored references in a column matcher to create a non-anchored matcher.\n * Doing an opposite operation to {@link AnchorIdDeriver.derive()}.\n *\n * @param anchors - Record of anchor column specifications indexed by anchor id\n * @param matcher - An anchored column matcher (or id, which is subtype of it) containing references that need to be resolved\n * @param options - Options for resolving anchors\n * @returns A non-anchored column matcher with all references resolved to actual values\n */\nexport function resolveAnchors(\n anchors: Record<string, PColumnSpec>,\n matcher: AnchoredPColumnSelector,\n options?: ResolveAnchorsOptions,\n): PColumnSelector {\n const result = { ...matcher };\n const ignoreMissingDomains = options?.ignoreMissingDomains ?? false;\n\n if (result.domainAnchor !== undefined) {\n const anchorSpec = anchors[result.domainAnchor];\n if (!anchorSpec) throw new Error(`Anchor \"${result.domainAnchor}\" not found`);\n\n const anchorDomains = anchorSpec.domain || {};\n result.domain = { ...anchorDomains, ...result.domain };\n delete result.domainAnchor;\n }\n\n if (result.domain) {\n const resolvedDomain: Record<string, string> = {};\n for (const [key, value] of Object.entries(result.domain)) {\n if (typeof value === \"string\") {\n resolvedDomain[key] = value;\n } else {\n // It's an AnchorDomainRef\n const anchorSpec = anchors[value.anchor];\n if (!anchorSpec)\n throw new Error(`Anchor \"${value.anchor}\" not found for domain key \"${key}\"`);\n\n if (!anchorSpec.domain || anchorSpec.domain[key] === undefined) {\n if (!ignoreMissingDomains)\n throw new Error(`Domain key \"${key}\" not found in anchor \"${value.anchor}\"`);\n continue;\n }\n\n resolvedDomain[key] = anchorSpec.domain[key];\n }\n }\n result.domain = resolvedDomain;\n }\n\n if (result.axes) result.axes = result.axes.map((axis) => resolveAxisReference(anchors, axis));\n\n return result as PColumnSelector;\n}\n\n/**\n * Resolves an anchored axis reference to a concrete AxisId\n */\nfunction resolveAxisReference(\n anchors: Record<string, PColumnSpec>,\n axisRef: AAxisSelector,\n): AxisSelector {\n if (!isAnchorAxisRef(axisRef)) return axisRef;\n\n // It's an anchored reference\n const anchorId = axisRef.anchor;\n const anchorSpec = anchors[anchorId];\n if (!anchorSpec) throw new Error(`Anchor \"${anchorId}\" not found for axis reference`);\n\n if (\"idx\" in axisRef) {\n // AnchorAxisRefByIdx\n if (axisRef.idx < 0 || axisRef.idx >= anchorSpec.axesSpec.length)\n throw new Error(`Axis index ${axisRef.idx} out of bounds for anchor \"${anchorId}\"`);\n return anchorSpec.axesSpec[axisRef.idx];\n } else if (\"name\" in axisRef) {\n // AnchorAxisRefByName\n const matches = anchorSpec.axesSpec.filter((axis) => axis.name === axisRef.name);\n if (matches.length > 1)\n throw new Error(`Multiple axes with name \"${axisRef.name}\" found in anchor \"${anchorId}\"`);\n if (matches.length === 0)\n throw new Error(`Axis with name \"${axisRef.name}\" not found in anchor \"${anchorId}\"`);\n return matches[0];\n } else if (\"id\" in axisRef) {\n // AnchorAxisRefByMatcher\n const matches = anchorSpec.axesSpec.filter((axis) => matchAxisId(axisRef.id, getAxisId(axis)));\n if (matches.length > 1)\n throw new Error(`Multiple matching axes found for matcher in anchor \"${anchorId}\"`);\n if (matches.length === 0)\n throw new Error(`No matching axis found for matcher in anchor \"${anchorId}\"`);\n return matches[0];\n }\n\n throw new Error(`Unsupported axis reference type`);\n}\n\n/**\n * Type guard to check if a value is an anchored axis reference\n */\nfunction isAnchorAxisRef(value: AAxisSelector): value is AnchorAxisRef {\n return typeof value === \"object\" && \"anchor\" in value;\n}\n"],"names":["getAxisId","spec","stringifyColumnId","matchAxisId"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type { AxisFilter } from './filtered_column';
2
- import type { SUniversalPColumnId, UniversalPColumnId } from './ids';
3
- import type { AnchoredPColumnId, AnchoredPColumnSelector, PColumnSelector } from './selectors';
4
- import type { PColumnSpec } from './spec';
1
+ import type { AxisFilter } from "./filtered_column";
2
+ import type { SUniversalPColumnId, UniversalPColumnId } from "./ids";
3
+ import type { AnchoredPColumnId, AnchoredPColumnSelector, PColumnSelector } from "./selectors";
4
+ import type { PColumnSpec } from "./spec";
5
5
  /**
6
6
  * Context for resolving and generating anchored references to columns and axes
7
7
  * Maintains maps of known domain values and axes that can be referenced by anchors
@@ -1 +1 @@
1
- {"version":3,"file":"anchored.d.ts","sourceRoot":"","sources":["../../../../src/drivers/pframe/spec/anchored.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,KAAK,EAAoD,iBAAiB,EAAE,uBAAuB,EAAgB,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/J,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,QAAQ,CAAC;AAelD;;;GAGG;AACH,qBAAa,iBAAiB;aAiBA,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAhBhE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAEhE;;;OAGG;gBACyB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAwBhE;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB;IAE5C;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,kBAAkB;IAoFzE;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,mBAAmB;CAG5E;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAyCvJ"}
1
+ {"version":3,"file":"anchored.d.ts","sourceRoot":"","sources":["../../../../src/drivers/pframe/spec/anchored.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAErE,OAAO,KAAK,EAIV,iBAAiB,EACjB,uBAAuB,EAEvB,eAAe,EAChB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAU,WAAW,EAAE,MAAM,QAAQ,CAAC;AAelD;;;GAGG;AACH,qBAAa,iBAAiB;aAiBA,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAhBhE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAyC;IAC9D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkB;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAEhE;;;OAGG;gBACyB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAwBhE;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB;IAE5C;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,kBAAkB;IAoFzE;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,mBAAmB;CAG5E;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACpC,OAAO,EAAE,uBAAuB,EAChC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,eAAe,CAuCjB"}