@milaboratories/pl-model-common 1.25.1 → 1.25.3

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 (288) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +29 -0
  2. package/dist/author_marker.d.ts +9 -6
  3. package/dist/base32_encode.cjs +40 -46
  4. package/dist/base32_encode.cjs.map +1 -1
  5. package/dist/base32_encode.js +40 -45
  6. package/dist/base32_encode.js.map +1 -1
  7. package/dist/base64.cjs +5 -4
  8. package/dist/base64.cjs.map +1 -1
  9. package/dist/base64.d.ts +10 -6
  10. package/dist/base64.js +5 -3
  11. package/dist/base64.js.map +1 -1
  12. package/dist/block_state.d.ts +21 -23
  13. package/dist/bmodel/block_config.cjs +9 -10
  14. package/dist/bmodel/block_config.cjs.map +1 -1
  15. package/dist/bmodel/block_config.d.ts +53 -72
  16. package/dist/bmodel/block_config.js +9 -9
  17. package/dist/bmodel/block_config.js.map +1 -1
  18. package/dist/bmodel/code.cjs +7 -6
  19. package/dist/bmodel/code.cjs.map +1 -1
  20. package/dist/bmodel/code.d.ts +17 -13
  21. package/dist/bmodel/code.js +6 -4
  22. package/dist/bmodel/code.js.map +1 -1
  23. package/dist/bmodel/container.d.ts +46 -44
  24. package/dist/bmodel/index.cjs +3 -0
  25. package/dist/bmodel/index.d.ts +5 -6
  26. package/dist/bmodel/index.js +3 -0
  27. package/dist/bmodel/normalization.cjs +90 -106
  28. package/dist/bmodel/normalization.cjs.map +1 -1
  29. package/dist/bmodel/normalization.d.ts +7 -3
  30. package/dist/bmodel/normalization.js +90 -105
  31. package/dist/bmodel/normalization.js.map +1 -1
  32. package/dist/bmodel/types.d.ts +4 -1
  33. package/dist/branding.d.ts +5 -5
  34. package/dist/common_types.d.ts +19 -15
  35. package/dist/driver_kit.d.ts +25 -17
  36. package/dist/drivers/ChunkedStreamReader.cjs +168 -203
  37. package/dist/drivers/ChunkedStreamReader.cjs.map +1 -1
  38. package/dist/drivers/ChunkedStreamReader.d.ts +104 -100
  39. package/dist/drivers/ChunkedStreamReader.js +168 -202
  40. package/dist/drivers/ChunkedStreamReader.js.map +1 -1
  41. package/dist/drivers/blob.cjs +15 -17
  42. package/dist/drivers/blob.cjs.map +1 -1
  43. package/dist/drivers/blob.d.ts +35 -35
  44. package/dist/drivers/blob.js +14 -15
  45. package/dist/drivers/blob.js.map +1 -1
  46. package/dist/drivers/index.cjs +18 -0
  47. package/dist/drivers/index.d.ts +29 -9
  48. package/dist/drivers/index.js +18 -0
  49. package/dist/drivers/interfaces.d.ts +17 -14
  50. package/dist/drivers/log.cjs +4 -3
  51. package/dist/drivers/log.cjs.map +1 -1
  52. package/dist/drivers/log.d.ts +52 -49
  53. package/dist/drivers/log.js +4 -2
  54. package/dist/drivers/log.js.map +1 -1
  55. package/dist/drivers/ls.cjs +16 -19
  56. package/dist/drivers/ls.cjs.map +1 -1
  57. package/dist/drivers/ls.d.ts +73 -76
  58. package/dist/drivers/ls.js +16 -17
  59. package/dist/drivers/ls.js.map +1 -1
  60. package/dist/drivers/pframe/column_filter.d.ts +19 -15
  61. package/dist/drivers/pframe/data_info.cjs +201 -252
  62. package/dist/drivers/pframe/data_info.cjs.map +1 -1
  63. package/dist/drivers/pframe/data_info.d.ts +84 -109
  64. package/dist/drivers/pframe/data_info.js +201 -250
  65. package/dist/drivers/pframe/data_info.js.map +1 -1
  66. package/dist/drivers/pframe/data_types.cjs +38 -63
  67. package/dist/drivers/pframe/data_types.cjs.map +1 -1
  68. package/dist/drivers/pframe/data_types.d.ts +91 -93
  69. package/dist/drivers/pframe/data_types.js +38 -61
  70. package/dist/drivers/pframe/data_types.js.map +1 -1
  71. package/dist/drivers/pframe/driver.cjs +7 -0
  72. package/dist/drivers/pframe/driver.cjs.map +1 -0
  73. package/dist/drivers/pframe/driver.d.ts +50 -45
  74. package/dist/drivers/pframe/driver.js +6 -0
  75. package/dist/drivers/pframe/driver.js.map +1 -0
  76. package/dist/drivers/pframe/filter_spec.d.ts +127 -123
  77. package/dist/drivers/pframe/find_columns.d.ts +21 -17
  78. package/dist/drivers/pframe/index.cjs +15 -0
  79. package/dist/drivers/pframe/index.d.ts +23 -16
  80. package/dist/drivers/pframe/index.js +15 -0
  81. package/dist/drivers/pframe/linker_columns.cjs +184 -238
  82. package/dist/drivers/pframe/linker_columns.cjs.map +1 -1
  83. package/dist/drivers/pframe/linker_columns.d.ts +45 -38
  84. package/dist/drivers/pframe/linker_columns.js +184 -236
  85. package/dist/drivers/pframe/linker_columns.js.map +1 -1
  86. package/dist/drivers/pframe/pframe.d.ts +26 -21
  87. package/dist/drivers/pframe/query/index.cjs +1 -0
  88. package/dist/drivers/pframe/query/index.d.ts +3 -4
  89. package/dist/drivers/pframe/query/index.js +1 -0
  90. package/dist/drivers/pframe/query/query_common.d.ts +205 -247
  91. package/dist/drivers/pframe/query/query_data.d.ts +25 -23
  92. package/dist/drivers/pframe/query/query_spec.d.ts +30 -29
  93. package/dist/drivers/pframe/query/utils.cjs +164 -183
  94. package/dist/drivers/pframe/query/utils.cjs.map +1 -1
  95. package/dist/drivers/pframe/query/utils.d.ts +13 -12
  96. package/dist/drivers/pframe/query/utils.js +164 -181
  97. package/dist/drivers/pframe/query/utils.js.map +1 -1
  98. package/dist/drivers/pframe/spec/anchored.cjs +178 -216
  99. package/dist/drivers/pframe/spec/anchored.cjs.map +1 -1
  100. package/dist/drivers/pframe/spec/anchored.d.ts +53 -49
  101. package/dist/drivers/pframe/spec/anchored.js +176 -214
  102. package/dist/drivers/pframe/spec/anchored.js.map +1 -1
  103. package/dist/drivers/pframe/spec/filtered_column.cjs +8 -7
  104. package/dist/drivers/pframe/spec/filtered_column.cjs.map +1 -1
  105. package/dist/drivers/pframe/spec/filtered_column.d.ts +20 -17
  106. package/dist/drivers/pframe/spec/filtered_column.js +8 -6
  107. package/dist/drivers/pframe/spec/filtered_column.js.map +1 -1
  108. package/dist/drivers/pframe/spec/ids.cjs +16 -14
  109. package/dist/drivers/pframe/spec/ids.cjs.map +1 -1
  110. package/dist/drivers/pframe/spec/ids.d.ts +13 -8
  111. package/dist/drivers/pframe/spec/ids.js +14 -12
  112. package/dist/drivers/pframe/spec/ids.js.map +1 -1
  113. package/dist/drivers/pframe/spec/index.cjs +6 -0
  114. package/dist/drivers/pframe/spec/index.d.ts +6 -7
  115. package/dist/drivers/pframe/spec/index.js +6 -0
  116. package/dist/drivers/pframe/spec/native_id.cjs +16 -16
  117. package/dist/drivers/pframe/spec/native_id.cjs.map +1 -1
  118. package/dist/drivers/pframe/spec/native_id.d.ts +9 -4
  119. package/dist/drivers/pframe/spec/native_id.js +13 -13
  120. package/dist/drivers/pframe/spec/native_id.js.map +1 -1
  121. package/dist/drivers/pframe/spec/selectors.cjs +72 -112
  122. package/dist/drivers/pframe/spec/selectors.cjs.map +1 -1
  123. package/dist/drivers/pframe/spec/selectors.d.ts +99 -94
  124. package/dist/drivers/pframe/spec/selectors.js +72 -110
  125. package/dist/drivers/pframe/spec/selectors.js.map +1 -1
  126. package/dist/drivers/pframe/spec/spec.cjs +282 -324
  127. package/dist/drivers/pframe/spec/spec.cjs.map +1 -1
  128. package/dist/drivers/pframe/spec/spec.d.ts +263 -272
  129. package/dist/drivers/pframe/spec/spec.js +281 -322
  130. package/dist/drivers/pframe/spec/spec.js.map +1 -1
  131. package/dist/drivers/pframe/table.d.ts +28 -24
  132. package/dist/drivers/pframe/table_calculate.cjs +117 -147
  133. package/dist/drivers/pframe/table_calculate.cjs.map +1 -1
  134. package/dist/drivers/pframe/table_calculate.d.ts +219 -220
  135. package/dist/drivers/pframe/table_calculate.js +117 -145
  136. package/dist/drivers/pframe/table_calculate.js.map +1 -1
  137. package/dist/drivers/pframe/table_common.cjs +13 -14
  138. package/dist/drivers/pframe/table_common.cjs.map +1 -1
  139. package/dist/drivers/pframe/table_common.d.ts +24 -19
  140. package/dist/drivers/pframe/table_common.js +13 -13
  141. package/dist/drivers/pframe/table_common.js.map +1 -1
  142. package/dist/drivers/pframe/unique_values.d.ts +23 -18
  143. package/dist/drivers/upload.d.ts +21 -18
  144. package/dist/drivers/urls.cjs +5 -6
  145. package/dist/drivers/urls.cjs.map +1 -1
  146. package/dist/drivers/urls.d.ts +12 -9
  147. package/dist/drivers/urls.js +5 -5
  148. package/dist/drivers/urls.js.map +1 -1
  149. package/dist/errors.cjs +65 -86
  150. package/dist/errors.cjs.map +1 -1
  151. package/dist/errors.d.ts +36 -33
  152. package/dist/errors.js +65 -85
  153. package/dist/errors.js.map +1 -1
  154. package/dist/flags/block_flags.cjs +7 -6
  155. package/dist/flags/block_flags.cjs.map +1 -1
  156. package/dist/flags/block_flags.d.ts +12 -8
  157. package/dist/flags/block_flags.js +7 -5
  158. package/dist/flags/block_flags.js.map +1 -1
  159. package/dist/flags/flag_utils.cjs +69 -108
  160. package/dist/flags/flag_utils.cjs.map +1 -1
  161. package/dist/flags/flag_utils.d.ts +40 -42
  162. package/dist/flags/flag_utils.js +70 -107
  163. package/dist/flags/flag_utils.js.map +1 -1
  164. package/dist/flags/type_utils.d.ts +12 -11
  165. package/dist/httpAuth.cjs +16 -20
  166. package/dist/httpAuth.cjs.map +1 -1
  167. package/dist/httpAuth.d.ts +10 -7
  168. package/dist/httpAuth.js +16 -19
  169. package/dist/httpAuth.js.map +1 -1
  170. package/dist/index.cjs +176 -179
  171. package/dist/index.d.ts +58 -20
  172. package/dist/index.js +37 -34
  173. package/dist/json.cjs +10 -8
  174. package/dist/json.cjs.map +1 -1
  175. package/dist/json.d.ts +18 -18
  176. package/dist/json.js +8 -6
  177. package/dist/json.js.map +1 -1
  178. package/dist/navigation.cjs +3 -2
  179. package/dist/navigation.cjs.map +1 -1
  180. package/dist/navigation.d.ts +18 -21
  181. package/dist/navigation.js +3 -1
  182. package/dist/navigation.js.map +1 -1
  183. package/dist/plid.cjs +16 -20
  184. package/dist/plid.cjs.map +1 -1
  185. package/dist/plid.d.ts +11 -7
  186. package/dist/plid.js +15 -18
  187. package/dist/plid.js.map +1 -1
  188. package/dist/pool/entry.d.ts +11 -11
  189. package/dist/pool/index.d.ts +3 -4
  190. package/dist/pool/query.cjs +21 -43
  191. package/dist/pool/query.cjs.map +1 -1
  192. package/dist/pool/query.d.ts +25 -20
  193. package/dist/pool/query.js +20 -40
  194. package/dist/pool/query.js.map +1 -1
  195. package/dist/pool/spec.cjs +40 -47
  196. package/dist/pool/spec.cjs.map +1 -1
  197. package/dist/pool/spec.d.ts +33 -31
  198. package/dist/pool/spec.js +40 -45
  199. package/dist/pool/spec.js.map +1 -1
  200. package/dist/ref.cjs +51 -71
  201. package/dist/ref.cjs.map +1 -1
  202. package/dist/ref.d.ts +36 -33
  203. package/dist/ref.js +50 -69
  204. package/dist/ref.js.map +1 -1
  205. package/dist/utag.d.ts +18 -14
  206. package/dist/util.cjs +8 -7
  207. package/dist/util.cjs.map +1 -1
  208. package/dist/util.d.ts +5 -2
  209. package/dist/util.js +8 -6
  210. package/dist/util.js.map +1 -1
  211. package/dist/value_or_error.cjs +7 -3
  212. package/dist/value_or_error.cjs.map +1 -1
  213. package/dist/value_or_error.d.ts +9 -6
  214. package/dist/value_or_error.js +7 -2
  215. package/dist/value_or_error.js.map +1 -1
  216. package/package.json +6 -6
  217. package/src/flags/block_flags.ts +2 -1
  218. package/src/flags/flag_utils.ts +0 -22
  219. package/dist/author_marker.d.ts.map +0 -1
  220. package/dist/base32_encode.d.ts +0 -8
  221. package/dist/base32_encode.d.ts.map +0 -1
  222. package/dist/base64.d.ts.map +0 -1
  223. package/dist/block_state.d.ts.map +0 -1
  224. package/dist/bmodel/block_config.d.ts.map +0 -1
  225. package/dist/bmodel/code.d.ts.map +0 -1
  226. package/dist/bmodel/container.d.ts.map +0 -1
  227. package/dist/bmodel/index.d.ts.map +0 -1
  228. package/dist/bmodel/normalization.d.ts.map +0 -1
  229. package/dist/bmodel/types.d.ts.map +0 -1
  230. package/dist/branding.d.ts.map +0 -1
  231. package/dist/common_types.d.ts.map +0 -1
  232. package/dist/driver_kit.d.ts.map +0 -1
  233. package/dist/drivers/ChunkedStreamReader.d.ts.map +0 -1
  234. package/dist/drivers/blob.d.ts.map +0 -1
  235. package/dist/drivers/index.d.ts.map +0 -1
  236. package/dist/drivers/interfaces.d.ts.map +0 -1
  237. package/dist/drivers/log.d.ts.map +0 -1
  238. package/dist/drivers/ls.d.ts.map +0 -1
  239. package/dist/drivers/pframe/column_filter.d.ts.map +0 -1
  240. package/dist/drivers/pframe/data_info.d.ts.map +0 -1
  241. package/dist/drivers/pframe/data_types.d.ts.map +0 -1
  242. package/dist/drivers/pframe/driver.d.ts.map +0 -1
  243. package/dist/drivers/pframe/filter_spec.d.ts.map +0 -1
  244. package/dist/drivers/pframe/find_columns.d.ts.map +0 -1
  245. package/dist/drivers/pframe/index.d.ts.map +0 -1
  246. package/dist/drivers/pframe/linker_columns.d.ts.map +0 -1
  247. package/dist/drivers/pframe/pframe.d.ts.map +0 -1
  248. package/dist/drivers/pframe/query/index.d.ts.map +0 -1
  249. package/dist/drivers/pframe/query/query_common.d.ts.map +0 -1
  250. package/dist/drivers/pframe/query/query_data.d.ts.map +0 -1
  251. package/dist/drivers/pframe/query/query_spec.d.ts.map +0 -1
  252. package/dist/drivers/pframe/query/utils.d.ts.map +0 -1
  253. package/dist/drivers/pframe/spec/anchored.d.ts.map +0 -1
  254. package/dist/drivers/pframe/spec/filtered_column.d.ts.map +0 -1
  255. package/dist/drivers/pframe/spec/ids.d.ts.map +0 -1
  256. package/dist/drivers/pframe/spec/index.d.ts.map +0 -1
  257. package/dist/drivers/pframe/spec/native_id.d.ts.map +0 -1
  258. package/dist/drivers/pframe/spec/selectors.d.ts.map +0 -1
  259. package/dist/drivers/pframe/spec/spec.d.ts.map +0 -1
  260. package/dist/drivers/pframe/table.d.ts.map +0 -1
  261. package/dist/drivers/pframe/table_calculate.d.ts.map +0 -1
  262. package/dist/drivers/pframe/table_common.d.ts.map +0 -1
  263. package/dist/drivers/pframe/type_util.d.ts +0 -5
  264. package/dist/drivers/pframe/type_util.d.ts.map +0 -1
  265. package/dist/drivers/pframe/unique_values.d.ts.map +0 -1
  266. package/dist/drivers/upload.d.ts.map +0 -1
  267. package/dist/drivers/urls.d.ts.map +0 -1
  268. package/dist/errors.d.ts.map +0 -1
  269. package/dist/flags/block_flags.d.ts.map +0 -1
  270. package/dist/flags/flag_utils.d.ts.map +0 -1
  271. package/dist/flags/index.d.ts +0 -4
  272. package/dist/flags/index.d.ts.map +0 -1
  273. package/dist/flags/type_utils.d.ts.map +0 -1
  274. package/dist/httpAuth.d.ts.map +0 -1
  275. package/dist/index.cjs.map +0 -1
  276. package/dist/index.d.ts.map +0 -1
  277. package/dist/index.js.map +0 -1
  278. package/dist/json.d.ts.map +0 -1
  279. package/dist/navigation.d.ts.map +0 -1
  280. package/dist/plid.d.ts.map +0 -1
  281. package/dist/pool/entry.d.ts.map +0 -1
  282. package/dist/pool/index.d.ts.map +0 -1
  283. package/dist/pool/query.d.ts.map +0 -1
  284. package/dist/pool/spec.d.ts.map +0 -1
  285. package/dist/ref.d.ts.map +0 -1
  286. package/dist/utag.d.ts.map +0 -1
  287. package/dist/util.d.ts.map +0 -1
  288. package/dist/value_or_error.d.ts.map +0 -1
@@ -1,24 +1,26 @@
1
- 'use strict';
2
-
3
- var canonicalize = require('canonicalize');
1
+ const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
2
+ let canonicalize = require("canonicalize");
3
+ canonicalize = require_runtime.__toESM(canonicalize);
4
4
 
5
+ //#region src/drivers/pframe/spec/ids.ts
5
6
  /**
6
- * Canonically serializes a {@link UniversalPColumnId} to a string.
7
- * @param id - The column identifier to serialize
8
- * @returns The canonically serialized string
9
- */
7
+ * Canonically serializes a {@link UniversalPColumnId} to a string.
8
+ * @param id - The column identifier to serialize
9
+ * @returns The canonically serialized string
10
+ */
10
11
  function stringifyColumnId(id) {
11
- return canonicalize(id);
12
+ return (0, canonicalize.default)(id);
12
13
  }
13
14
  /**
14
- * Parses a canonically serialized {@link UniversalPColumnId} from a string.
15
- * @param str - The string to parse
16
- * @returns The parsed column identifier
17
- */
15
+ * Parses a canonically serialized {@link UniversalPColumnId} from a string.
16
+ * @param str - The string to parse
17
+ * @returns The parsed column identifier
18
+ */
18
19
  function parseColumnId(str) {
19
- return JSON.parse(str);
20
+ return JSON.parse(str);
20
21
  }
21
22
 
23
+ //#endregion
22
24
  exports.parseColumnId = parseColumnId;
23
25
  exports.stringifyColumnId = stringifyColumnId;
24
- //# sourceMappingURL=ids.cjs.map
26
+ //# sourceMappingURL=ids.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ids.cjs","sources":["../../../../src/drivers/pframe/spec/ids.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport type { AnchoredPColumnId } from \"./selectors\";\nimport type { FilteredPColumnId } from \"./filtered_column\";\nimport canonicalize from \"canonicalize\";\nimport type { PObjectId } from \"../../../pool\";\n/**\n * Universal column identifier optionally anchored and optionally filtered.\n */\nexport type UniversalPColumnId = AnchoredPColumnId | FilteredPColumnId;\n\n/**\n * Canonically serialized {@link UniversalPColumnId}.\n */\nexport type SUniversalPColumnId = Branded<PObjectId, \"SUniversalPColumnId\", \"__pl_model_brand_2__\">;\n\n/**\n * Canonically serializes a {@link UniversalPColumnId} to a string.\n * @param id - The column identifier to serialize\n * @returns The canonically serialized string\n */\nexport function stringifyColumnId(id: UniversalPColumnId): SUniversalPColumnId {\n return canonicalize(id)! as SUniversalPColumnId;\n}\n\n/**\n * Parses a canonically serialized {@link UniversalPColumnId} from a string.\n * @param str - The string to parse\n * @returns The parsed column identifier\n */\nexport function parseColumnId(str: SUniversalPColumnId): UniversalPColumnId {\n return JSON.parse(str) as UniversalPColumnId;\n}\n"],"names":[],"mappings":";;;;AAeA;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,EAAsB,EAAA;AACtD,IAAA,OAAO,YAAY,CAAC,EAAE,CAAyB;AACjD;AAEA;;;;AAIG;AACG,SAAU,aAAa,CAAC,GAAwB,EAAA;AACpD,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB;AAC9C;;;;;"}
1
+ {"version":3,"file":"ids.cjs","names":[],"sources":["../../../../src/drivers/pframe/spec/ids.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport type { AnchoredPColumnId } from \"./selectors\";\nimport type { FilteredPColumnId } from \"./filtered_column\";\nimport canonicalize from \"canonicalize\";\nimport type { PObjectId } from \"../../../pool\";\n/**\n * Universal column identifier optionally anchored and optionally filtered.\n */\nexport type UniversalPColumnId = AnchoredPColumnId | FilteredPColumnId;\n\n/**\n * Canonically serialized {@link UniversalPColumnId}.\n */\nexport type SUniversalPColumnId = Branded<PObjectId, \"SUniversalPColumnId\", \"__pl_model_brand_2__\">;\n\n/**\n * Canonically serializes a {@link UniversalPColumnId} to a string.\n * @param id - The column identifier to serialize\n * @returns The canonically serialized string\n */\nexport function stringifyColumnId(id: UniversalPColumnId): SUniversalPColumnId {\n return canonicalize(id)! as SUniversalPColumnId;\n}\n\n/**\n * Parses a canonically serialized {@link UniversalPColumnId} from a string.\n * @param str - The string to parse\n * @returns The parsed column identifier\n */\nexport function parseColumnId(str: SUniversalPColumnId): UniversalPColumnId {\n return JSON.parse(str) as UniversalPColumnId;\n}\n"],"mappings":";;;;;;;;;;AAoBA,SAAgB,kBAAkB,IAA6C;AAC7E,kCAAoB,GAAG;;;;;;;AAQzB,SAAgB,cAAc,KAA8C;AAC1E,QAAO,KAAK,MAAM,IAAI"}
@@ -1,25 +1,30 @@
1
- import type { Branded } from "../../../branding";
2
- import type { AnchoredPColumnId } from "./selectors";
3
- import type { FilteredPColumnId } from "./filtered_column";
4
- import type { PObjectId } from "../../../pool";
1
+ import { Branded } from "../../../branding.js";
2
+ import { PObjectId } from "../../../pool/spec.js";
3
+ import "../../../pool/index.js";
4
+ import { AnchoredPColumnId } from "./selectors.js";
5
+ import { FilteredPColumnId } from "./filtered_column.js";
6
+
7
+ //#region src/drivers/pframe/spec/ids.d.ts
5
8
  /**
6
9
  * Universal column identifier optionally anchored and optionally filtered.
7
10
  */
8
- export type UniversalPColumnId = AnchoredPColumnId | FilteredPColumnId;
11
+ type UniversalPColumnId = AnchoredPColumnId | FilteredPColumnId;
9
12
  /**
10
13
  * Canonically serialized {@link UniversalPColumnId}.
11
14
  */
12
- export type SUniversalPColumnId = Branded<PObjectId, "SUniversalPColumnId", "__pl_model_brand_2__">;
15
+ type SUniversalPColumnId = Branded<PObjectId, "SUniversalPColumnId", "__pl_model_brand_2__">;
13
16
  /**
14
17
  * Canonically serializes a {@link UniversalPColumnId} to a string.
15
18
  * @param id - The column identifier to serialize
16
19
  * @returns The canonically serialized string
17
20
  */
18
- export declare function stringifyColumnId(id: UniversalPColumnId): SUniversalPColumnId;
21
+ declare function stringifyColumnId(id: UniversalPColumnId): SUniversalPColumnId;
19
22
  /**
20
23
  * Parses a canonically serialized {@link UniversalPColumnId} from a string.
21
24
  * @param str - The string to parse
22
25
  * @returns The parsed column identifier
23
26
  */
24
- export declare function parseColumnId(str: SUniversalPColumnId): UniversalPColumnId;
27
+ declare function parseColumnId(str: SUniversalPColumnId): UniversalPColumnId;
28
+ //#endregion
29
+ export { SUniversalPColumnId, UniversalPColumnId, parseColumnId, stringifyColumnId };
25
30
  //# sourceMappingURL=ids.d.ts.map
@@ -1,21 +1,23 @@
1
- import canonicalize from 'canonicalize';
1
+ import canonicalize from "canonicalize";
2
2
 
3
+ //#region src/drivers/pframe/spec/ids.ts
3
4
  /**
4
- * Canonically serializes a {@link UniversalPColumnId} to a string.
5
- * @param id - The column identifier to serialize
6
- * @returns The canonically serialized string
7
- */
5
+ * Canonically serializes a {@link UniversalPColumnId} to a string.
6
+ * @param id - The column identifier to serialize
7
+ * @returns The canonically serialized string
8
+ */
8
9
  function stringifyColumnId(id) {
9
- return canonicalize(id);
10
+ return canonicalize(id);
10
11
  }
11
12
  /**
12
- * Parses a canonically serialized {@link UniversalPColumnId} from a string.
13
- * @param str - The string to parse
14
- * @returns The parsed column identifier
15
- */
13
+ * Parses a canonically serialized {@link UniversalPColumnId} from a string.
14
+ * @param str - The string to parse
15
+ * @returns The parsed column identifier
16
+ */
16
17
  function parseColumnId(str) {
17
- return JSON.parse(str);
18
+ return JSON.parse(str);
18
19
  }
19
20
 
21
+ //#endregion
20
22
  export { parseColumnId, stringifyColumnId };
21
- //# sourceMappingURL=ids.js.map
23
+ //# sourceMappingURL=ids.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ids.js","sources":["../../../../src/drivers/pframe/spec/ids.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport type { AnchoredPColumnId } from \"./selectors\";\nimport type { FilteredPColumnId } from \"./filtered_column\";\nimport canonicalize from \"canonicalize\";\nimport type { PObjectId } from \"../../../pool\";\n/**\n * Universal column identifier optionally anchored and optionally filtered.\n */\nexport type UniversalPColumnId = AnchoredPColumnId | FilteredPColumnId;\n\n/**\n * Canonically serialized {@link UniversalPColumnId}.\n */\nexport type SUniversalPColumnId = Branded<PObjectId, \"SUniversalPColumnId\", \"__pl_model_brand_2__\">;\n\n/**\n * Canonically serializes a {@link UniversalPColumnId} to a string.\n * @param id - The column identifier to serialize\n * @returns The canonically serialized string\n */\nexport function stringifyColumnId(id: UniversalPColumnId): SUniversalPColumnId {\n return canonicalize(id)! as SUniversalPColumnId;\n}\n\n/**\n * Parses a canonically serialized {@link UniversalPColumnId} from a string.\n * @param str - The string to parse\n * @returns The parsed column identifier\n */\nexport function parseColumnId(str: SUniversalPColumnId): UniversalPColumnId {\n return JSON.parse(str) as UniversalPColumnId;\n}\n"],"names":[],"mappings":";;AAeA;;;;AAIG;AACG,SAAU,iBAAiB,CAAC,EAAsB,EAAA;AACtD,IAAA,OAAO,YAAY,CAAC,EAAE,CAAyB;AACjD;AAEA;;;;AAIG;AACG,SAAU,aAAa,CAAC,GAAwB,EAAA;AACpD,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAuB;AAC9C;;;;"}
1
+ {"version":3,"file":"ids.js","names":[],"sources":["../../../../src/drivers/pframe/spec/ids.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport type { AnchoredPColumnId } from \"./selectors\";\nimport type { FilteredPColumnId } from \"./filtered_column\";\nimport canonicalize from \"canonicalize\";\nimport type { PObjectId } from \"../../../pool\";\n/**\n * Universal column identifier optionally anchored and optionally filtered.\n */\nexport type UniversalPColumnId = AnchoredPColumnId | FilteredPColumnId;\n\n/**\n * Canonically serialized {@link UniversalPColumnId}.\n */\nexport type SUniversalPColumnId = Branded<PObjectId, \"SUniversalPColumnId\", \"__pl_model_brand_2__\">;\n\n/**\n * Canonically serializes a {@link UniversalPColumnId} to a string.\n * @param id - The column identifier to serialize\n * @returns The canonically serialized string\n */\nexport function stringifyColumnId(id: UniversalPColumnId): SUniversalPColumnId {\n return canonicalize(id)! as SUniversalPColumnId;\n}\n\n/**\n * Parses a canonically serialized {@link UniversalPColumnId} from a string.\n * @param str - The string to parse\n * @returns The parsed column identifier\n */\nexport function parseColumnId(str: SUniversalPColumnId): UniversalPColumnId {\n return JSON.parse(str) as UniversalPColumnId;\n}\n"],"mappings":";;;;;;;;AAoBA,SAAgB,kBAAkB,IAA6C;AAC7E,QAAO,aAAa,GAAG;;;;;;;AAQzB,SAAgB,cAAc,KAA8C;AAC1E,QAAO,KAAK,MAAM,IAAI"}
@@ -0,0 +1,6 @@
1
+ const require_spec = require('./spec.cjs');
2
+ const require_ids = require('./ids.cjs');
3
+ const require_anchored = require('./anchored.cjs');
4
+ const require_filtered_column = require('./filtered_column.cjs');
5
+ const require_selectors = require('./selectors.cjs');
6
+ const require_native_id = require('./native_id.cjs');
@@ -1,7 +1,6 @@
1
- export * from "./anchored";
2
- export * from "./ids";
3
- export * from "./filtered_column";
4
- export * from "./spec";
5
- export * from "./selectors";
6
- export * from "./native_id";
7
- //# sourceMappingURL=index.d.ts.map
1
+ import { Annotation, AnnotationJson, AxesId, AxesSpec, AxisId, AxisSpec, AxisSpecNormalized, AxisTree, AxisValueType, ColumnValueType, Domain, DomainJson, Metadata, MetadataJson, PAxisName, PColumn, PColumnIdAndSpec, PColumnInfo, PColumnLazy, PColumnName, PColumnSpec, PColumnSpecId, PDataColumnSpec, PUniversalColumnSpec, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow } from "./spec.js";
2
+ import { AAxisSelector, ADomain, AnchorAxisIdOrRefBasic, AnchorAxisRef, AnchorAxisRefByIdx, AnchorAxisRefByMatcher, AnchorAxisRefByName, AnchorDomainRef, AnchoredColumnMatchStrategy, AnchoredPColumnId, AnchoredPColumnSelector, AxisSelector, PColumnSelector, SingleAxisSelector, isAnchoredPColumnId, matchAxis, matchPColumn, selectorsToPredicate } from "./selectors.js";
3
+ import { AxisFilter, AxisFilterByIdx, AxisFilterByName, AxisFilterValue, FilteredPColumn, FilteredPColumnId, isFilteredPColumn } from "./filtered_column.js";
4
+ import { SUniversalPColumnId, UniversalPColumnId, parseColumnId, stringifyColumnId } from "./ids.js";
5
+ import { AnchoredIdDeriver, ResolveAnchorsOptions, resolveAnchors } from "./anchored.js";
6
+ import { NativePObjectId, deriveNativeId } from "./native_id.js";
@@ -0,0 +1,6 @@
1
+ import { Annotation, AnnotationJson, Domain, DomainJson, PAxisName, PColumnName, ValueType, canonicalizeAxisId, canonicalizeAxisWithParents, getArrayFromAxisTree, getAxesId, getAxesTree, getAxisId, getColumnIdAndSpec, getDenormalizedAxesList, getNormalizedAxesList, getPColumnSpecId, getSetFromAxisTree, getTypeFromPColumnOrAxisSpec, isAxisId, isLabelColumn, isLinkerColumn, matchAxisId, readAnnotation, readAnnotationJson, readAnnotationJsonOrThrow, readDomain, readDomainJson, readDomainJsonOrThrow, readMetadata, readMetadataJson, readMetadataJsonOrThrow } from "./spec.js";
2
+ import { parseColumnId, stringifyColumnId } from "./ids.js";
3
+ import { AnchoredIdDeriver, resolveAnchors } from "./anchored.js";
4
+ import { isFilteredPColumn } from "./filtered_column.js";
5
+ import { isAnchoredPColumnId, matchAxis, matchPColumn, selectorsToPredicate } from "./selectors.js";
6
+ import { deriveNativeId } from "./native_id.js";
@@ -1,20 +1,20 @@
1
- 'use strict';
1
+ const require_runtime = require('../../../_virtual/_rolldown/runtime.cjs');
2
+ const require_spec = require('./spec.cjs');
3
+ const require_spec$1 = require('../../../pool/spec.cjs');
4
+ let canonicalize = require("canonicalize");
5
+ canonicalize = require_runtime.__toESM(canonicalize);
2
6
 
3
- var spec = require('../../../pool/spec.cjs');
4
- var spec$1 = require('./spec.cjs');
5
- var canonicalize = require('canonicalize');
6
-
7
- function deriveNativeId(spec$2) {
8
- const result = {
9
- kind: spec$2.kind,
10
- name: spec$2.name,
11
- };
12
- if (spec$2.domain !== undefined)
13
- result.domain = spec$2.domain;
14
- if (spec.isPColumnSpec(spec$2))
15
- result.axesSpec = spec$1.getAxesId(spec$2.axesSpec);
16
- return canonicalize(result);
7
+ //#region src/drivers/pframe/spec/native_id.ts
8
+ function deriveNativeId(spec) {
9
+ const result = {
10
+ kind: spec.kind,
11
+ name: spec.name
12
+ };
13
+ if (spec.domain !== void 0) result.domain = spec.domain;
14
+ if (require_spec$1.isPColumnSpec(spec)) result.axesSpec = require_spec.getAxesId(spec.axesSpec);
15
+ return (0, canonicalize.default)(result);
17
16
  }
18
17
 
18
+ //#endregion
19
19
  exports.deriveNativeId = deriveNativeId;
20
- //# sourceMappingURL=native_id.cjs.map
20
+ //# sourceMappingURL=native_id.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"native_id.cjs","sources":["../../../../src/drivers/pframe/spec/native_id.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport { isPColumnSpec, type PObjectSpec } from \"../../../pool\";\nimport { getAxesId } from \"./spec\";\nimport canonicalize from \"canonicalize\";\nexport type NativePObjectId = Branded<string, \"NativePObjectId\">;\n\nexport function deriveNativeId(spec: PObjectSpec): NativePObjectId {\n const result: Record<string, unknown> = {\n kind: spec.kind,\n name: spec.name,\n };\n if (spec.domain !== undefined) result.domain = spec.domain;\n if (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);\n return canonicalize(result) as NativePObjectId;\n}\n"],"names":["spec","isPColumnSpec","getAxesId"],"mappings":";;;;;;AAMM,SAAU,cAAc,CAACA,MAAiB,EAAA;AAC9C,IAAA,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAEA,MAAI,CAAC,IAAI;QACf,IAAI,EAAEA,MAAI,CAAC,IAAI;KAChB;AACD,IAAA,IAAIA,MAAI,CAAC,MAAM,KAAK,SAAS;AAAE,QAAA,MAAM,CAAC,MAAM,GAAGA,MAAI,CAAC,MAAM;IAC1D,IAAIC,kBAAa,CAACD,MAAI,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAGE,gBAAS,CAACF,MAAI,CAAC,QAAQ,CAAC;AACnE,IAAA,OAAO,YAAY,CAAC,MAAM,CAAoB;AAChD;;;;"}
1
+ {"version":3,"file":"native_id.cjs","names":["isPColumnSpec","getAxesId"],"sources":["../../../../src/drivers/pframe/spec/native_id.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport { isPColumnSpec, type PObjectSpec } from \"../../../pool\";\nimport { getAxesId } from \"./spec\";\nimport canonicalize from \"canonicalize\";\nexport type NativePObjectId = Branded<string, \"NativePObjectId\">;\n\nexport function deriveNativeId(spec: PObjectSpec): NativePObjectId {\n const result: Record<string, unknown> = {\n kind: spec.kind,\n name: spec.name,\n };\n if (spec.domain !== undefined) result.domain = spec.domain;\n if (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);\n return canonicalize(result) as NativePObjectId;\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,eAAe,MAAoC;CACjE,MAAM,SAAkC;EACtC,MAAM,KAAK;EACX,MAAM,KAAK;EACZ;AACD,KAAI,KAAK,WAAW,OAAW,QAAO,SAAS,KAAK;AACpD,KAAIA,6BAAc,KAAK,CAAE,QAAO,WAAWC,uBAAU,KAAK,SAAS;AACnE,kCAAoB,OAAO"}
@@ -1,5 +1,10 @@
1
- import type { Branded } from "../../../branding";
2
- import { type PObjectSpec } from "../../../pool";
3
- export type NativePObjectId = Branded<string, "NativePObjectId">;
4
- export declare function deriveNativeId(spec: PObjectSpec): NativePObjectId;
1
+ import { Branded } from "../../../branding.js";
2
+ import { PObjectSpec } from "../../../pool/spec.js";
3
+ import "../../../pool/index.js";
4
+
5
+ //#region src/drivers/pframe/spec/native_id.d.ts
6
+ type NativePObjectId = Branded<string, "NativePObjectId">;
7
+ declare function deriveNativeId(spec: PObjectSpec): NativePObjectId;
8
+ //#endregion
9
+ export { NativePObjectId, deriveNativeId };
5
10
  //# sourceMappingURL=native_id.d.ts.map
@@ -1,18 +1,18 @@
1
- import { isPColumnSpec } from '../../../pool/spec.js';
2
- import { getAxesId } from './spec.js';
3
- import canonicalize from 'canonicalize';
1
+ import { getAxesId } from "./spec.js";
2
+ import { isPColumnSpec } from "../../../pool/spec.js";
3
+ import canonicalize from "canonicalize";
4
4
 
5
+ //#region src/drivers/pframe/spec/native_id.ts
5
6
  function deriveNativeId(spec) {
6
- const result = {
7
- kind: spec.kind,
8
- name: spec.name,
9
- };
10
- if (spec.domain !== undefined)
11
- result.domain = spec.domain;
12
- if (isPColumnSpec(spec))
13
- result.axesSpec = getAxesId(spec.axesSpec);
14
- return canonicalize(result);
7
+ const result = {
8
+ kind: spec.kind,
9
+ name: spec.name
10
+ };
11
+ if (spec.domain !== void 0) result.domain = spec.domain;
12
+ if (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);
13
+ return canonicalize(result);
15
14
  }
16
15
 
16
+ //#endregion
17
17
  export { deriveNativeId };
18
- //# sourceMappingURL=native_id.js.map
18
+ //# sourceMappingURL=native_id.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native_id.js","sources":["../../../../src/drivers/pframe/spec/native_id.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport { isPColumnSpec, type PObjectSpec } from \"../../../pool\";\nimport { getAxesId } from \"./spec\";\nimport canonicalize from \"canonicalize\";\nexport type NativePObjectId = Branded<string, \"NativePObjectId\">;\n\nexport function deriveNativeId(spec: PObjectSpec): NativePObjectId {\n const result: Record<string, unknown> = {\n kind: spec.kind,\n name: spec.name,\n };\n if (spec.domain !== undefined) result.domain = spec.domain;\n if (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);\n return canonicalize(result) as NativePObjectId;\n}\n"],"names":[],"mappings":";;;;AAMM,SAAU,cAAc,CAAC,IAAiB,EAAA;AAC9C,IAAA,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB;AACD,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;AAAE,QAAA,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;IAC1D,IAAI,aAAa,CAAC,IAAI,CAAC;QAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnE,IAAA,OAAO,YAAY,CAAC,MAAM,CAAoB;AAChD;;;;"}
1
+ {"version":3,"file":"native_id.js","names":[],"sources":["../../../../src/drivers/pframe/spec/native_id.ts"],"sourcesContent":["import type { Branded } from \"../../../branding\";\nimport { isPColumnSpec, type PObjectSpec } from \"../../../pool\";\nimport { getAxesId } from \"./spec\";\nimport canonicalize from \"canonicalize\";\nexport type NativePObjectId = Branded<string, \"NativePObjectId\">;\n\nexport function deriveNativeId(spec: PObjectSpec): NativePObjectId {\n const result: Record<string, unknown> = {\n kind: spec.kind,\n name: spec.name,\n };\n if (spec.domain !== undefined) result.domain = spec.domain;\n if (isPColumnSpec(spec)) result.axesSpec = getAxesId(spec.axesSpec);\n return canonicalize(result) as NativePObjectId;\n}\n"],"mappings":";;;;;AAMA,SAAgB,eAAe,MAAoC;CACjE,MAAM,SAAkC;EACtC,MAAM,KAAK;EACX,MAAM,KAAK;EACZ;AACD,KAAI,KAAK,WAAW,OAAW,QAAO,SAAS,KAAK;AACpD,KAAI,cAAc,KAAK,CAAE,QAAO,WAAW,UAAU,KAAK,SAAS;AACnE,QAAO,aAAa,OAAO"}
@@ -1,130 +1,90 @@
1
- 'use strict';
2
-
3
- var spec$1 = require('../../../pool/spec.cjs');
4
- var spec = require('./spec.cjs');
1
+ const require_spec = require('./spec.cjs');
2
+ const require_spec$1 = require('../../../pool/spec.cjs');
5
3
 
4
+ //#region src/drivers/pframe/spec/selectors.ts
6
5
  /**
7
- * Checks if a given value is an anchored column identifier
8
- * @param id - The value to check
9
- * @returns True if the value is an anchored column identifier, false otherwise
10
- */
6
+ * Checks if a given value is an anchored column identifier
7
+ * @param id - The value to check
8
+ * @returns True if the value is an anchored column identifier, false otherwise
9
+ */
11
10
  function isAnchoredPColumnId(id) {
12
- // basic check, can be extended if needed
13
- return typeof id === "object" && id !== null && "name" in id && "axes" in id;
11
+ return typeof id === "object" && id !== null && "name" in id && "axes" in id;
14
12
  }
15
13
  /**
16
- * Determines if an axis ID matches an axis selector.
17
- *
18
- * @param selector - The selector with criteria to match against
19
- * @param axis - The AxisId to check against the selector
20
- * @returns true if the AxisId matches all specified criteria in the selector, false otherwise
21
- */
14
+ * Determines if an axis ID matches an axis selector.
15
+ *
16
+ * @param selector - The selector with criteria to match against
17
+ * @param axis - The AxisId to check against the selector
18
+ * @returns true if the AxisId matches all specified criteria in the selector, false otherwise
19
+ */
22
20
  function matchAxis(selector, axis) {
23
- // Match name if specified
24
- if (selector.name !== undefined && selector.name !== axis.name)
25
- return false;
26
- // Match type if specified
27
- if (selector.type !== undefined) {
28
- if (Array.isArray(selector.type)) {
29
- if (!selector.type.includes(axis.type))
30
- return false;
31
- }
32
- else if (selector.type !== axis.type) {
33
- return false;
34
- }
35
- }
36
- // Match domain if specified - using existing logic from matchAxisId
37
- if (selector.domain !== undefined) {
38
- const axisDomain = axis.domain || {};
39
- for (const [key, value] of Object.entries(selector.domain))
40
- if (axisDomain[key] !== value)
41
- return false;
42
- }
43
- return true;
21
+ if (selector.name !== void 0 && selector.name !== axis.name) return false;
22
+ if (selector.type !== void 0) {
23
+ if (Array.isArray(selector.type)) {
24
+ if (!selector.type.includes(axis.type)) return false;
25
+ } else if (selector.type !== axis.type) return false;
26
+ }
27
+ if (selector.domain !== void 0) {
28
+ const axisDomain = axis.domain || {};
29
+ for (const [key, value] of Object.entries(selector.domain)) if (axisDomain[key] !== value) return false;
30
+ }
31
+ return true;
44
32
  }
45
33
  /**
46
- * Determines if a given PColumnSpec matches a selector.
47
- *
48
- * @param pcolumn - The PColumnSpec to check against the selector
49
- * @param selector - The selector criteria to match against
50
- * @returns true if the PColumnSpec matches all criteria in the selector, false otherwise
51
- */
34
+ * Determines if a given PColumnSpec matches a selector.
35
+ *
36
+ * @param pcolumn - The PColumnSpec to check against the selector
37
+ * @param selector - The selector criteria to match against
38
+ * @returns true if the PColumnSpec matches all criteria in the selector, false otherwise
39
+ */
52
40
  function matchPColumn(pcolumn, selector) {
53
- // Match name if specified
54
- if (selector.name !== undefined && pcolumn.name !== selector.name)
55
- return false;
56
- // Match name pattern if specified
57
- if (selector.namePattern !== undefined && !new RegExp(selector.namePattern).test(pcolumn.name))
58
- return false;
59
- // Match type if specified
60
- if (selector.type !== undefined) {
61
- if (Array.isArray(selector.type)) {
62
- if (!selector.type.includes(pcolumn.valueType))
63
- return false;
64
- }
65
- else if (selector.type !== pcolumn.valueType) {
66
- return false;
67
- }
68
- }
69
- // Match domain if specified
70
- if (selector.domain !== undefined) {
71
- const columnDomain = pcolumn.domain || {};
72
- for (const [key, value] of Object.entries(selector.domain))
73
- if (columnDomain[key] !== value)
74
- return false;
75
- }
76
- // Match axes if specified
77
- if (selector.axes !== undefined) {
78
- const pcolumnAxes = pcolumn.axesSpec.map(spec.getAxisId);
79
- if (selector.partialAxesMatch) {
80
- // For partial matching, all selector axes must match at least one column axis
81
- for (const selectorAxis of selector.axes)
82
- if (!pcolumnAxes.some((columnAxis) => matchAxis(selectorAxis, columnAxis)))
83
- return false;
84
- }
85
- else {
86
- // For exact matching, column must have the same number of axes and all must match
87
- if (pcolumnAxes.length !== selector.axes.length)
88
- return false;
89
- // Each selector axis must match a corresponding column axis
90
- for (let i = 0; i < selector.axes.length; i++)
91
- if (!matchAxis(selector.axes[i], pcolumnAxes[i]))
92
- return false;
93
- }
94
- }
95
- // Match annotations if specified
96
- if (selector.annotations !== undefined) {
97
- const columnAnnotations = pcolumn.annotations || {};
98
- for (const [key, value] of Object.entries(selector.annotations))
99
- if (columnAnnotations[key] !== value)
100
- return false;
101
- }
102
- // Match annotation patterns if specified
103
- if (selector.annotationPatterns !== undefined) {
104
- const columnAnnotations = pcolumn.annotations || {};
105
- for (const [key, pattern] of Object.entries(selector.annotationPatterns)) {
106
- const value = columnAnnotations[key];
107
- if (value === undefined || !new RegExp(pattern).test(value))
108
- return false;
109
- }
110
- }
111
- return true;
41
+ if (selector.name !== void 0 && pcolumn.name !== selector.name) return false;
42
+ if (selector.namePattern !== void 0 && !new RegExp(selector.namePattern).test(pcolumn.name)) return false;
43
+ if (selector.type !== void 0) {
44
+ if (Array.isArray(selector.type)) {
45
+ if (!selector.type.includes(pcolumn.valueType)) return false;
46
+ } else if (selector.type !== pcolumn.valueType) return false;
47
+ }
48
+ if (selector.domain !== void 0) {
49
+ const columnDomain = pcolumn.domain || {};
50
+ for (const [key, value] of Object.entries(selector.domain)) if (columnDomain[key] !== value) return false;
51
+ }
52
+ if (selector.axes !== void 0) {
53
+ const pcolumnAxes = pcolumn.axesSpec.map(require_spec.getAxisId);
54
+ if (selector.partialAxesMatch) {
55
+ for (const selectorAxis of selector.axes) if (!pcolumnAxes.some((columnAxis) => matchAxis(selectorAxis, columnAxis))) return false;
56
+ } else {
57
+ if (pcolumnAxes.length !== selector.axes.length) return false;
58
+ for (let i = 0; i < selector.axes.length; i++) if (!matchAxis(selector.axes[i], pcolumnAxes[i])) return false;
59
+ }
60
+ }
61
+ if (selector.annotations !== void 0) {
62
+ const columnAnnotations = pcolumn.annotations || {};
63
+ for (const [key, value] of Object.entries(selector.annotations)) if (columnAnnotations[key] !== value) return false;
64
+ }
65
+ if (selector.annotationPatterns !== void 0) {
66
+ const columnAnnotations = pcolumn.annotations || {};
67
+ for (const [key, pattern] of Object.entries(selector.annotationPatterns)) {
68
+ const value = columnAnnotations[key];
69
+ if (value === void 0 || !new RegExp(pattern).test(value)) return false;
70
+ }
71
+ }
72
+ return true;
112
73
  }
113
74
  /**
114
- * Convert a predicate or array of selectors to a single predicate function
115
- * @param predicateOrSelectors - Either a function that takes a PColumnSpec and returns a boolean,
116
- * or an array of PColumnSelectors, or a single PColumnSelector
117
- * @returns A function that takes a PColumnSpec and returns a boolean
118
- */
75
+ * Convert a predicate or array of selectors to a single predicate function
76
+ * @param predicateOrSelectors - Either a function that takes a PColumnSpec and returns a boolean,
77
+ * or an array of PColumnSelectors, or a single PColumnSelector
78
+ * @returns A function that takes a PColumnSpec and returns a boolean
79
+ */
119
80
  function selectorsToPredicate(predicateOrSelectors) {
120
- if (Array.isArray(predicateOrSelectors))
121
- return (spec) => predicateOrSelectors.some((selector) => spec$1.isPColumnSpec(spec) && matchPColumn(spec, selector));
122
- else
123
- return (spec) => spec$1.isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);
81
+ if (Array.isArray(predicateOrSelectors)) return (spec) => predicateOrSelectors.some((selector) => require_spec$1.isPColumnSpec(spec) && matchPColumn(spec, selector));
82
+ else return (spec) => require_spec$1.isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);
124
83
  }
125
84
 
85
+ //#endregion
126
86
  exports.isAnchoredPColumnId = isAnchoredPColumnId;
127
87
  exports.matchAxis = matchAxis;
128
88
  exports.matchPColumn = matchPColumn;
129
89
  exports.selectorsToPredicate = selectorsToPredicate;
130
- //# sourceMappingURL=selectors.cjs.map
90
+ //# sourceMappingURL=selectors.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectors.cjs","sources":["../../../../src/drivers/pframe/spec/selectors.ts"],"sourcesContent":["import { isPColumnSpec, type PObjectSpec } from \"../../../pool\";\nimport type { AxisId, AxisValueType, Domain, PColumnSpec, ValueType } from \"./spec\";\nimport { getAxisId } from \"./spec\";\n\n/**\n * Defines a pattern for matching axes within the PFrame data model.\n *\n * AxisSelector provides a flexible way to identify axes based on their\n * properties. All fields are optional, allowing for partial matching.\n * When multiple properties are specified, all must match for an axis\n * to be selected (logical AND).\n *\n * This interface is used in various selection and matching operations\n * throughout the PFrame system, such as column queries and axis lookups.\n */\nexport interface AxisSelector {\n /**\n * Optional value type to match against.\n * When specified, only axes with this exact type will match.\n * Can be a single type or an array of types to match against any of them.\n * Valid types include: 'Int', 'Long', 'Float', 'Double', 'String', 'Bytes'.\n */\n type?: ValueType | ValueType[];\n\n /**\n * Optional name to match against.\n * When specified, only axes with this exact name will match.\n */\n name?: string;\n\n /**\n * Optional domain key-value pairs to match against.\n * Domains provide additional context to uniquely identify an axis beyond its name and type.\n * When specified, an axis will match only if it contains all the key-value pairs defined here.\n * An axis with additional domain entries not present in this selector will still match.\n */\n domain?: Record<string, string>;\n}\n\n/** Single axis selector */\nexport interface SingleAxisSelector {\n /** Axis name (required) */\n name: string;\n /** Axis type (optional) */\n type?: AxisValueType;\n /** Domain requirements (optional) */\n domain?: Domain;\n /** Parent axes requirements (optional) */\n parentAxes?: SingleAxisSelector[];\n}\n\n/**\n * Reference to an axis by its numerical index within the anchor column's axes array\n * Format: [anchorId, axisIndex]\n */\nexport type AnchorAxisRefByIdx = { anchor: string; idx: number };\n\n/**\n * Reference to an axis by its name within the anchor column\n * Format: [anchorId, axisName]\n */\nexport type AnchorAxisRefByName = { anchor: string; name: string };\n\n/**\n * Reference to an axis using an AxisId matcher within the anchor\n * Format: [anchorId, axisMatcher]\n */\nexport type AnchorAxisRefByMatcher = { anchor: string; id: AxisId };\n\n/**\n * Basic anchor axis reference that can be either by index or a direct AxisId\n */\nexport type AnchorAxisIdOrRefBasic = AnchorAxisRefByIdx | AxisId;\n\n/** Union of all possible ways to reference an axis in an anchored context */\nexport type AnchorAxisRef = AnchorAxisRefByIdx | AnchorAxisRefByName | AnchorAxisRefByMatcher;\n\n/** Reference to a domain value through an anchor */\nexport type AnchorDomainRef = { anchor: string };\n\n/**\n * Domain value that can be either a direct string value or a reference to a domain through an anchor\n * Used to establish domain context that can be resolved relative to other anchored columns\n */\nexport type ADomain = string | AnchorDomainRef;\n/**\n * Axis identifier that can be either a direct AxisId or a reference to an axis through an anchor\n * Allows referring to axes in a way that can be resolved in different contexts\n */\nexport type AAxisSelector = AxisSelector | AnchorAxisRef;\n\n/**\n * Match resolution strategy for PColumns\n * Specifies how to handle when multiple columns match the criteria\n * (default is \"expectSingle\")\n */\nexport type AnchoredColumnMatchStrategy = \"expectSingle\" | \"expectMultiple\" | \"takeFirst\";\n\n/**\n * Matcher for PColumns in an anchored context\n * Supports partial matching on axes, allowing for flexible column discovery\n */\nexport interface AnchoredPColumnSelector {\n /** Optional name of the column to match; can't be used together with namePattern */\n name?: string;\n /** Optional regexp pattern for column name matching; can't be used together with name */\n namePattern?: string;\n /** Optional value type to match. If an array is provided, matches if the column's type is any of the specified types */\n type?: ValueType | ValueType[];\n /** If specified, the domain values must be anchored to this anchor */\n domainAnchor?: string;\n /** Optional domain values to match, can include anchored references, if domainAnchor is specified,\n * interpreted as additional domains to domain from the anchor */\n domain?: Record<string, ADomain>;\n /** Optional axes to match, can include anchored references */\n axes?: AAxisSelector[];\n /** When true, allows matching if only a subset of axes match */\n partialAxesMatch?: boolean;\n /** Optional annotations to match with exact values */\n annotations?: Record<string, string>;\n /** Optional annotation patterns to match with regex patterns */\n annotationPatterns?: Record<string, string>;\n /** Match resolution strategy, default is \"expectSingle\" */\n matchStrategy?: AnchoredColumnMatchStrategy;\n}\n\n/**\n * Matcher for PColumns in a non-anchored context\n */\nexport interface PColumnSelector extends AnchoredPColumnSelector {\n domainAnchor?: never;\n domain?: Record<string, string>;\n axes?: AxisSelector[];\n}\n\n/**\n * Strict identifier for PColumns in an anchored context\n * Unlike APColumnMatcher, this requires exact matches on domain and axes\n */\nexport interface AnchoredPColumnId extends AnchoredPColumnSelector {\n /** Name is required for exact column identification */\n name: string;\n /** No namePattern in ID */\n namePattern?: never;\n /** Type is not used in exact column identification */\n type?: never;\n /** Full axes specification using only basic references */\n axes: AnchorAxisIdOrRefBasic[];\n /** Partial axes matching is not allowed for exact identification */\n partialAxesMatch?: never;\n /** Annotations are not used in exact column identification */\n annotations?: never;\n /** Annotation patterns are not used in exact column identification */\n annotationPatterns?: never;\n /** \"Id\" implies single match strategy */\n matchStrategy?: never;\n}\n\n/**\n * Checks if a given value is an anchored column identifier\n * @param id - The value to check\n * @returns True if the value is an anchored column identifier, false otherwise\n */\nexport function isAnchoredPColumnId(id: unknown): id is AnchoredPColumnId {\n // basic check, can be extended if needed\n return typeof id === \"object\" && id !== null && \"name\" in id && \"axes\" in id;\n}\n\n/**\n * Determines if an axis ID matches an axis selector.\n *\n * @param selector - The selector with criteria to match against\n * @param axis - The AxisId to check against the selector\n * @returns true if the AxisId matches all specified criteria in the selector, false otherwise\n */\nexport function matchAxis(selector: AxisSelector, axis: AxisId): boolean {\n // Match name if specified\n if (selector.name !== undefined && selector.name !== axis.name) return false;\n\n // Match type if specified\n if (selector.type !== undefined) {\n if (Array.isArray(selector.type)) {\n if (!selector.type.includes(axis.type)) return false;\n } else if (selector.type !== axis.type) {\n return false;\n }\n }\n\n // Match domain if specified - using existing logic from matchAxisId\n if (selector.domain !== undefined) {\n const axisDomain = axis.domain || {};\n for (const [key, value] of Object.entries(selector.domain))\n if (axisDomain[key] !== value) return false;\n }\n\n return true;\n}\n\n/**\n * Determines if a given PColumnSpec matches a selector.\n *\n * @param pcolumn - The PColumnSpec to check against the selector\n * @param selector - The selector criteria to match against\n * @returns true if the PColumnSpec matches all criteria in the selector, false otherwise\n */\nexport function matchPColumn(pcolumn: PColumnSpec, selector: PColumnSelector): boolean {\n // Match name if specified\n if (selector.name !== undefined && pcolumn.name !== selector.name) return false;\n\n // Match name pattern if specified\n if (selector.namePattern !== undefined && !new RegExp(selector.namePattern).test(pcolumn.name))\n return false;\n\n // Match type if specified\n if (selector.type !== undefined) {\n if (Array.isArray(selector.type)) {\n if (!selector.type.includes(pcolumn.valueType)) return false;\n } else if (selector.type !== pcolumn.valueType) {\n return false;\n }\n }\n\n // Match domain if specified\n if (selector.domain !== undefined) {\n const columnDomain = pcolumn.domain || {};\n for (const [key, value] of Object.entries(selector.domain))\n if (columnDomain[key] !== value) return false;\n }\n\n // Match axes if specified\n if (selector.axes !== undefined) {\n const pcolumnAxes = pcolumn.axesSpec.map(getAxisId);\n\n if (selector.partialAxesMatch) {\n // For partial matching, all selector axes must match at least one column axis\n for (const selectorAxis of selector.axes)\n if (!pcolumnAxes.some((columnAxis) => matchAxis(selectorAxis, columnAxis))) return false;\n } else {\n // For exact matching, column must have the same number of axes and all must match\n if (pcolumnAxes.length !== selector.axes.length) return false;\n\n // Each selector axis must match a corresponding column axis\n for (let i = 0; i < selector.axes.length; i++)\n if (!matchAxis(selector.axes[i], pcolumnAxes[i])) return false;\n }\n }\n\n // Match annotations if specified\n if (selector.annotations !== undefined) {\n const columnAnnotations = pcolumn.annotations || {};\n for (const [key, value] of Object.entries(selector.annotations))\n if (columnAnnotations[key] !== value) return false;\n }\n\n // Match annotation patterns if specified\n if (selector.annotationPatterns !== undefined) {\n const columnAnnotations = pcolumn.annotations || {};\n for (const [key, pattern] of Object.entries(selector.annotationPatterns)) {\n const value = columnAnnotations[key];\n if (value === undefined || !new RegExp(pattern).test(value)) return false;\n }\n }\n\n return true;\n}\n\n/**\n * Convert a predicate or array of selectors to a single predicate function\n * @param predicateOrSelectors - Either a function that takes a PColumnSpec and returns a boolean,\n * or an array of PColumnSelectors, or a single PColumnSelector\n * @returns A function that takes a PColumnSpec and returns a boolean\n */\nexport function selectorsToPredicate(\n predicateOrSelectors: PColumnSelector | PColumnSelector[],\n): (spec: PObjectSpec) => boolean {\n if (Array.isArray(predicateOrSelectors))\n return (spec) =>\n predicateOrSelectors.some((selector) => isPColumnSpec(spec) && matchPColumn(spec, selector));\n else return (spec) => isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);\n}\n"],"names":["getAxisId","isPColumnSpec"],"mappings":"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"}
1
+ {"version":3,"file":"selectors.cjs","names":["getAxisId","isPColumnSpec"],"sources":["../../../../src/drivers/pframe/spec/selectors.ts"],"sourcesContent":["import { isPColumnSpec, type PObjectSpec } from \"../../../pool\";\nimport type { AxisId, AxisValueType, Domain, PColumnSpec, ValueType } from \"./spec\";\nimport { getAxisId } from \"./spec\";\n\n/**\n * Defines a pattern for matching axes within the PFrame data model.\n *\n * AxisSelector provides a flexible way to identify axes based on their\n * properties. All fields are optional, allowing for partial matching.\n * When multiple properties are specified, all must match for an axis\n * to be selected (logical AND).\n *\n * This interface is used in various selection and matching operations\n * throughout the PFrame system, such as column queries and axis lookups.\n */\nexport interface AxisSelector {\n /**\n * Optional value type to match against.\n * When specified, only axes with this exact type will match.\n * Can be a single type or an array of types to match against any of them.\n * Valid types include: 'Int', 'Long', 'Float', 'Double', 'String', 'Bytes'.\n */\n type?: ValueType | ValueType[];\n\n /**\n * Optional name to match against.\n * When specified, only axes with this exact name will match.\n */\n name?: string;\n\n /**\n * Optional domain key-value pairs to match against.\n * Domains provide additional context to uniquely identify an axis beyond its name and type.\n * When specified, an axis will match only if it contains all the key-value pairs defined here.\n * An axis with additional domain entries not present in this selector will still match.\n */\n domain?: Record<string, string>;\n}\n\n/** Single axis selector */\nexport interface SingleAxisSelector {\n /** Axis name (required) */\n name: string;\n /** Axis type (optional) */\n type?: AxisValueType;\n /** Domain requirements (optional) */\n domain?: Domain;\n /** Parent axes requirements (optional) */\n parentAxes?: SingleAxisSelector[];\n}\n\n/**\n * Reference to an axis by its numerical index within the anchor column's axes array\n * Format: [anchorId, axisIndex]\n */\nexport type AnchorAxisRefByIdx = { anchor: string; idx: number };\n\n/**\n * Reference to an axis by its name within the anchor column\n * Format: [anchorId, axisName]\n */\nexport type AnchorAxisRefByName = { anchor: string; name: string };\n\n/**\n * Reference to an axis using an AxisId matcher within the anchor\n * Format: [anchorId, axisMatcher]\n */\nexport type AnchorAxisRefByMatcher = { anchor: string; id: AxisId };\n\n/**\n * Basic anchor axis reference that can be either by index or a direct AxisId\n */\nexport type AnchorAxisIdOrRefBasic = AnchorAxisRefByIdx | AxisId;\n\n/** Union of all possible ways to reference an axis in an anchored context */\nexport type AnchorAxisRef = AnchorAxisRefByIdx | AnchorAxisRefByName | AnchorAxisRefByMatcher;\n\n/** Reference to a domain value through an anchor */\nexport type AnchorDomainRef = { anchor: string };\n\n/**\n * Domain value that can be either a direct string value or a reference to a domain through an anchor\n * Used to establish domain context that can be resolved relative to other anchored columns\n */\nexport type ADomain = string | AnchorDomainRef;\n/**\n * Axis identifier that can be either a direct AxisId or a reference to an axis through an anchor\n * Allows referring to axes in a way that can be resolved in different contexts\n */\nexport type AAxisSelector = AxisSelector | AnchorAxisRef;\n\n/**\n * Match resolution strategy for PColumns\n * Specifies how to handle when multiple columns match the criteria\n * (default is \"expectSingle\")\n */\nexport type AnchoredColumnMatchStrategy = \"expectSingle\" | \"expectMultiple\" | \"takeFirst\";\n\n/**\n * Matcher for PColumns in an anchored context\n * Supports partial matching on axes, allowing for flexible column discovery\n */\nexport interface AnchoredPColumnSelector {\n /** Optional name of the column to match; can't be used together with namePattern */\n name?: string;\n /** Optional regexp pattern for column name matching; can't be used together with name */\n namePattern?: string;\n /** Optional value type to match. If an array is provided, matches if the column's type is any of the specified types */\n type?: ValueType | ValueType[];\n /** If specified, the domain values must be anchored to this anchor */\n domainAnchor?: string;\n /** Optional domain values to match, can include anchored references, if domainAnchor is specified,\n * interpreted as additional domains to domain from the anchor */\n domain?: Record<string, ADomain>;\n /** Optional axes to match, can include anchored references */\n axes?: AAxisSelector[];\n /** When true, allows matching if only a subset of axes match */\n partialAxesMatch?: boolean;\n /** Optional annotations to match with exact values */\n annotations?: Record<string, string>;\n /** Optional annotation patterns to match with regex patterns */\n annotationPatterns?: Record<string, string>;\n /** Match resolution strategy, default is \"expectSingle\" */\n matchStrategy?: AnchoredColumnMatchStrategy;\n}\n\n/**\n * Matcher for PColumns in a non-anchored context\n */\nexport interface PColumnSelector extends AnchoredPColumnSelector {\n domainAnchor?: never;\n domain?: Record<string, string>;\n axes?: AxisSelector[];\n}\n\n/**\n * Strict identifier for PColumns in an anchored context\n * Unlike APColumnMatcher, this requires exact matches on domain and axes\n */\nexport interface AnchoredPColumnId extends AnchoredPColumnSelector {\n /** Name is required for exact column identification */\n name: string;\n /** No namePattern in ID */\n namePattern?: never;\n /** Type is not used in exact column identification */\n type?: never;\n /** Full axes specification using only basic references */\n axes: AnchorAxisIdOrRefBasic[];\n /** Partial axes matching is not allowed for exact identification */\n partialAxesMatch?: never;\n /** Annotations are not used in exact column identification */\n annotations?: never;\n /** Annotation patterns are not used in exact column identification */\n annotationPatterns?: never;\n /** \"Id\" implies single match strategy */\n matchStrategy?: never;\n}\n\n/**\n * Checks if a given value is an anchored column identifier\n * @param id - The value to check\n * @returns True if the value is an anchored column identifier, false otherwise\n */\nexport function isAnchoredPColumnId(id: unknown): id is AnchoredPColumnId {\n // basic check, can be extended if needed\n return typeof id === \"object\" && id !== null && \"name\" in id && \"axes\" in id;\n}\n\n/**\n * Determines if an axis ID matches an axis selector.\n *\n * @param selector - The selector with criteria to match against\n * @param axis - The AxisId to check against the selector\n * @returns true if the AxisId matches all specified criteria in the selector, false otherwise\n */\nexport function matchAxis(selector: AxisSelector, axis: AxisId): boolean {\n // Match name if specified\n if (selector.name !== undefined && selector.name !== axis.name) return false;\n\n // Match type if specified\n if (selector.type !== undefined) {\n if (Array.isArray(selector.type)) {\n if (!selector.type.includes(axis.type)) return false;\n } else if (selector.type !== axis.type) {\n return false;\n }\n }\n\n // Match domain if specified - using existing logic from matchAxisId\n if (selector.domain !== undefined) {\n const axisDomain = axis.domain || {};\n for (const [key, value] of Object.entries(selector.domain))\n if (axisDomain[key] !== value) return false;\n }\n\n return true;\n}\n\n/**\n * Determines if a given PColumnSpec matches a selector.\n *\n * @param pcolumn - The PColumnSpec to check against the selector\n * @param selector - The selector criteria to match against\n * @returns true if the PColumnSpec matches all criteria in the selector, false otherwise\n */\nexport function matchPColumn(pcolumn: PColumnSpec, selector: PColumnSelector): boolean {\n // Match name if specified\n if (selector.name !== undefined && pcolumn.name !== selector.name) return false;\n\n // Match name pattern if specified\n if (selector.namePattern !== undefined && !new RegExp(selector.namePattern).test(pcolumn.name))\n return false;\n\n // Match type if specified\n if (selector.type !== undefined) {\n if (Array.isArray(selector.type)) {\n if (!selector.type.includes(pcolumn.valueType)) return false;\n } else if (selector.type !== pcolumn.valueType) {\n return false;\n }\n }\n\n // Match domain if specified\n if (selector.domain !== undefined) {\n const columnDomain = pcolumn.domain || {};\n for (const [key, value] of Object.entries(selector.domain))\n if (columnDomain[key] !== value) return false;\n }\n\n // Match axes if specified\n if (selector.axes !== undefined) {\n const pcolumnAxes = pcolumn.axesSpec.map(getAxisId);\n\n if (selector.partialAxesMatch) {\n // For partial matching, all selector axes must match at least one column axis\n for (const selectorAxis of selector.axes)\n if (!pcolumnAxes.some((columnAxis) => matchAxis(selectorAxis, columnAxis))) return false;\n } else {\n // For exact matching, column must have the same number of axes and all must match\n if (pcolumnAxes.length !== selector.axes.length) return false;\n\n // Each selector axis must match a corresponding column axis\n for (let i = 0; i < selector.axes.length; i++)\n if (!matchAxis(selector.axes[i], pcolumnAxes[i])) return false;\n }\n }\n\n // Match annotations if specified\n if (selector.annotations !== undefined) {\n const columnAnnotations = pcolumn.annotations || {};\n for (const [key, value] of Object.entries(selector.annotations))\n if (columnAnnotations[key] !== value) return false;\n }\n\n // Match annotation patterns if specified\n if (selector.annotationPatterns !== undefined) {\n const columnAnnotations = pcolumn.annotations || {};\n for (const [key, pattern] of Object.entries(selector.annotationPatterns)) {\n const value = columnAnnotations[key];\n if (value === undefined || !new RegExp(pattern).test(value)) return false;\n }\n }\n\n return true;\n}\n\n/**\n * Convert a predicate or array of selectors to a single predicate function\n * @param predicateOrSelectors - Either a function that takes a PColumnSpec and returns a boolean,\n * or an array of PColumnSelectors, or a single PColumnSelector\n * @returns A function that takes a PColumnSpec and returns a boolean\n */\nexport function selectorsToPredicate(\n predicateOrSelectors: PColumnSelector | PColumnSelector[],\n): (spec: PObjectSpec) => boolean {\n if (Array.isArray(predicateOrSelectors))\n return (spec) =>\n predicateOrSelectors.some((selector) => isPColumnSpec(spec) && matchPColumn(spec, selector));\n else return (spec) => isPColumnSpec(spec) && matchPColumn(spec, predicateOrSelectors);\n}\n"],"mappings":";;;;;;;;;AAmKA,SAAgB,oBAAoB,IAAsC;AAExE,QAAO,OAAO,OAAO,YAAY,OAAO,QAAQ,UAAU,MAAM,UAAU;;;;;;;;;AAU5E,SAAgB,UAAU,UAAwB,MAAuB;AAEvE,KAAI,SAAS,SAAS,UAAa,SAAS,SAAS,KAAK,KAAM,QAAO;AAGvE,KAAI,SAAS,SAAS,QACpB;MAAI,MAAM,QAAQ,SAAS,KAAK,EAC9B;OAAI,CAAC,SAAS,KAAK,SAAS,KAAK,KAAK,CAAE,QAAO;aACtC,SAAS,SAAS,KAAK,KAChC,QAAO;;AAKX,KAAI,SAAS,WAAW,QAAW;EACjC,MAAM,aAAa,KAAK,UAAU,EAAE;AACpC,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,OAAO,CACxD,KAAI,WAAW,SAAS,MAAO,QAAO;;AAG1C,QAAO;;;;;;;;;AAUT,SAAgB,aAAa,SAAsB,UAAoC;AAErF,KAAI,SAAS,SAAS,UAAa,QAAQ,SAAS,SAAS,KAAM,QAAO;AAG1E,KAAI,SAAS,gBAAgB,UAAa,CAAC,IAAI,OAAO,SAAS,YAAY,CAAC,KAAK,QAAQ,KAAK,CAC5F,QAAO;AAGT,KAAI,SAAS,SAAS,QACpB;MAAI,MAAM,QAAQ,SAAS,KAAK,EAC9B;OAAI,CAAC,SAAS,KAAK,SAAS,QAAQ,UAAU,CAAE,QAAO;aAC9C,SAAS,SAAS,QAAQ,UACnC,QAAO;;AAKX,KAAI,SAAS,WAAW,QAAW;EACjC,MAAM,eAAe,QAAQ,UAAU,EAAE;AACzC,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,OAAO,CACxD,KAAI,aAAa,SAAS,MAAO,QAAO;;AAI5C,KAAI,SAAS,SAAS,QAAW;EAC/B,MAAM,cAAc,QAAQ,SAAS,IAAIA,uBAAU;AAEnD,MAAI,SAAS,kBAEX;QAAK,MAAM,gBAAgB,SAAS,KAClC,KAAI,CAAC,YAAY,MAAM,eAAe,UAAU,cAAc,WAAW,CAAC,CAAE,QAAO;SAChF;AAEL,OAAI,YAAY,WAAW,SAAS,KAAK,OAAQ,QAAO;AAGxD,QAAK,IAAI,IAAI,GAAG,IAAI,SAAS,KAAK,QAAQ,IACxC,KAAI,CAAC,UAAU,SAAS,KAAK,IAAI,YAAY,GAAG,CAAE,QAAO;;;AAK/D,KAAI,SAAS,gBAAgB,QAAW;EACtC,MAAM,oBAAoB,QAAQ,eAAe,EAAE;AACnD,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,YAAY,CAC7D,KAAI,kBAAkB,SAAS,MAAO,QAAO;;AAIjD,KAAI,SAAS,uBAAuB,QAAW;EAC7C,MAAM,oBAAoB,QAAQ,eAAe,EAAE;AACnD,OAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,SAAS,mBAAmB,EAAE;GACxE,MAAM,QAAQ,kBAAkB;AAChC,OAAI,UAAU,UAAa,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,MAAM,CAAE,QAAO;;;AAIxE,QAAO;;;;;;;;AAST,SAAgB,qBACd,sBACgC;AAChC,KAAI,MAAM,QAAQ,qBAAqB,CACrC,SAAQ,SACN,qBAAqB,MAAM,aAAaC,6BAAc,KAAK,IAAI,aAAa,MAAM,SAAS,CAAC;KAC3F,SAAQ,SAASA,6BAAc,KAAK,IAAI,aAAa,MAAM,qBAAqB"}