@osdk/client 2.5.2 → 2.6.0-beta.10

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 (488) hide show
  1. package/CHANGELOG.md +118 -73
  2. package/build/browser/Client.js +1 -1
  3. package/build/browser/Client.js.map +1 -1
  4. package/build/browser/MinimalClientContext.js.map +1 -1
  5. package/build/browser/actions/applyAction.js +4 -0
  6. package/build/browser/actions/applyAction.js.map +1 -1
  7. package/build/browser/createClient.js +2 -1
  8. package/build/browser/createClient.js.map +1 -1
  9. package/build/browser/createClient.test.js +19 -1
  10. package/build/browser/createClient.test.js.map +1 -1
  11. package/build/browser/createMinimalClient.js +4 -2
  12. package/build/browser/createMinimalClient.js.map +1 -1
  13. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +19 -1
  14. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  15. package/build/browser/fetchMetadata.test.js +11 -0
  16. package/build/browser/fetchMetadata.test.js.map +1 -1
  17. package/build/browser/index.js +2 -2
  18. package/build/browser/index.js.map +1 -1
  19. package/build/browser/internal/conversions/extractNamespace.js +22 -0
  20. package/build/browser/internal/conversions/extractNamespace.js.map +1 -0
  21. package/build/browser/internal/conversions/fullyQualifyPropName.js +26 -0
  22. package/build/browser/internal/conversions/fullyQualifyPropName.js.map +1 -0
  23. package/build/browser/internal/conversions/makeGeoFilterBbox.js +41 -0
  24. package/build/browser/internal/conversions/makeGeoFilterBbox.js.map +1 -0
  25. package/build/browser/internal/conversions/makeGeoFilterIntersects.js +29 -0
  26. package/build/browser/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
  27. package/build/browser/internal/conversions/makeGeoFilterPolygon.js +30 -0
  28. package/build/browser/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
  29. package/build/browser/internal/conversions/makeGeoFilterWithin.js +48 -0
  30. package/build/browser/internal/conversions/makeGeoFilterWithin.js.map +1 -0
  31. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +59 -105
  32. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  33. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
  34. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  35. package/build/browser/object/aggregate.js +3 -0
  36. package/build/browser/object/aggregate.js.map +1 -1
  37. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  38. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  39. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
  40. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  41. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
  42. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  43. package/build/browser/object/convertWireToOsdkObjects.test.js +12 -0
  44. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  45. package/build/browser/object/fetchPage.js +13 -6
  46. package/build/browser/object/fetchPage.js.map +1 -1
  47. package/build/browser/object/formatting/applyPropertyFormatter.js +58 -0
  48. package/build/browser/object/formatting/applyPropertyFormatter.js.map +1 -0
  49. package/build/browser/object/formatting/applyPropertyFormatter.test.js +726 -0
  50. package/build/browser/object/formatting/applyPropertyFormatter.test.js.map +1 -0
  51. package/build/browser/object/formatting/formatBoolean.js +23 -0
  52. package/build/browser/object/formatting/formatBoolean.js.map +1 -0
  53. package/build/browser/object/formatting/formatDateTime.js +158 -0
  54. package/build/browser/object/formatting/formatDateTime.js.map +1 -0
  55. package/build/browser/object/formatting/formatNumber.js +242 -0
  56. package/build/browser/object/formatting/formatNumber.js.map +1 -0
  57. package/build/browser/object/formatting/propertyFormattingUtils.js +39 -0
  58. package/build/browser/object/formatting/propertyFormattingUtils.js.map +1 -0
  59. package/build/browser/object/mediaUpload.js +3 -0
  60. package/build/browser/object/mediaUpload.js.map +1 -1
  61. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +17 -0
  62. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  63. package/build/browser/objectSet/createObjectSet.js +11 -0
  64. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  65. package/build/browser/observable/ObservableClient.js.map +1 -1
  66. package/build/browser/observable/internal/BulkObjectLoader.js +12 -4
  67. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
  68. package/build/browser/observable/internal/BulkObjectLoader.test.js +48 -0
  69. package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -1
  70. package/build/browser/observable/internal/CacheKeys.js +9 -3
  71. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  72. package/build/browser/observable/internal/Canonicalizer.js +51 -0
  73. package/build/browser/observable/internal/Canonicalizer.js.map +1 -0
  74. package/build/browser/observable/internal/Changes.js.map +1 -1
  75. package/build/browser/observable/internal/IntersectCanonicalizer.js +35 -0
  76. package/build/browser/observable/internal/IntersectCanonicalizer.js.map +1 -0
  77. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
  78. package/build/browser/observable/internal/ObservableClientImpl.js +3 -0
  79. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  80. package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -4
  81. package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
  82. package/build/browser/observable/internal/PivotCanonicalizer.js +33 -0
  83. package/build/browser/observable/internal/PivotCanonicalizer.js.map +1 -0
  84. package/build/browser/observable/internal/RdpCanonicalizer.js +66 -0
  85. package/build/browser/observable/internal/RdpCanonicalizer.js.map +1 -0
  86. package/build/browser/observable/internal/RdpCanonicalizer.test.js +68 -0
  87. package/build/browser/observable/internal/RdpCanonicalizer.test.js.map +1 -0
  88. package/build/browser/observable/internal/SimpleWhereClause.js.map +1 -1
  89. package/build/browser/observable/internal/Store.js +172 -6
  90. package/build/browser/observable/internal/Store.js.map +1 -1
  91. package/build/browser/observable/internal/WhereClauseCanonicalizer.js +1 -1
  92. package/build/browser/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  93. package/build/browser/observable/internal/actions/ActionApplication.js +1 -1
  94. package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -1
  95. package/build/browser/observable/internal/actions/OptimisticJob.js +3 -3
  96. package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -1
  97. package/build/browser/observable/internal/aggregation/AggregationCacheKey.js +22 -0
  98. package/build/browser/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
  99. package/build/browser/observable/internal/aggregation/AggregationQuery.js +77 -0
  100. package/build/browser/observable/internal/aggregation/AggregationQuery.js.map +1 -0
  101. package/build/browser/observable/internal/aggregation/AggregationsHelper.js +54 -0
  102. package/build/browser/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
  103. package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
  104. package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
  105. package/build/browser/observable/internal/base-list/BaseListQuery.js +145 -5
  106. package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -1
  107. package/build/browser/observable/internal/base-list/createCollectionConnectable.js +0 -5
  108. package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  109. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
  110. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  111. package/build/browser/observable/internal/evaluateFilter.js +61 -0
  112. package/build/browser/observable/internal/evaluateFilter.js.map +1 -0
  113. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +33 -1
  114. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  115. package/build/browser/observable/internal/list/InterfaceListQuery.js +8 -3
  116. package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -1
  117. package/build/browser/observable/internal/list/ListCacheKey.js +24 -1
  118. package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -1
  119. package/build/browser/observable/internal/list/ListQuery.js +35 -62
  120. package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
  121. package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -1
  122. package/build/browser/observable/internal/list/ListsHelper.js +18 -8
  123. package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
  124. package/build/browser/observable/internal/list/ObjectListQuery.js +51 -3
  125. package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
  126. package/build/browser/observable/internal/object/ObjectCacheKey.js +20 -1
  127. package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -1
  128. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
  129. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
  130. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
  131. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
  132. package/build/browser/observable/internal/object/ObjectQuery.js +10 -58
  133. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
  134. package/build/browser/observable/internal/object/ObjectsHelper.js +65 -5
  135. package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
  136. package/build/browser/observable/internal/objectMatchesWhereClause.js +3 -37
  137. package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
  138. package/build/browser/observable/internal/objectMatchesWhereClause.test.js +2 -1
  139. package/build/browser/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  140. package/build/browser/observable/internal/objectset/ObjectSetHelper.js +5 -1
  141. package/build/browser/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
  142. package/build/browser/observable/internal/objectset/ObjectSetQuery.js +3 -0
  143. package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  144. package/build/browser/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
  145. package/build/browser/observable/internal/testUtils/invalidateList.js +6 -1
  146. package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -1
  147. package/build/browser/observable/internal/testUtils.js +5 -3
  148. package/build/browser/observable/internal/testUtils.js.map +1 -1
  149. package/build/browser/observable/internal/types/ObjectUpdate.js +2 -0
  150. package/build/browser/observable/internal/types/ObjectUpdate.js.map +1 -0
  151. package/build/browser/observable/internal/utils/rdpFieldOperations.js +83 -0
  152. package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -0
  153. package/build/browser/ontology/loadActionMetadata.js +3 -1
  154. package/build/browser/ontology/loadActionMetadata.js.map +1 -1
  155. package/build/browser/ontology/loadFullObjectMetadata.js +2 -1
  156. package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
  157. package/build/browser/ontology/loadInterfaceMetadata.js +2 -1
  158. package/build/browser/ontology/loadInterfaceMetadata.js.map +1 -1
  159. package/build/browser/public/internal-node.js +18 -0
  160. package/build/browser/public/internal-node.js.map +1 -0
  161. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  162. package/build/browser/queries/applyQuery.js +5 -4
  163. package/build/browser/queries/applyQuery.js.map +1 -1
  164. package/build/browser/util/UserAgent.js +2 -2
  165. package/build/browser/util/UserAgent.js.map +1 -1
  166. package/build/browser/util/extractObjectOrInterfaceType.js +5 -1
  167. package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -1
  168. package/build/browser/util/extractObjectOrInterfaceType.test.js +21 -2
  169. package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -1
  170. package/build/browser/util/toDataValue.js +16 -1
  171. package/build/browser/util/toDataValue.js.map +1 -1
  172. package/build/browser/util/toDataValue.test.js +42 -2
  173. package/build/browser/util/toDataValue.test.js.map +1 -1
  174. package/build/cjs/chunk-6SCDLAU2.cjs +57 -0
  175. package/build/cjs/chunk-6SCDLAU2.cjs.map +1 -0
  176. package/build/cjs/{chunk-SDFKR62Z.cjs → chunk-HJX4D4KL.cjs} +627 -63
  177. package/build/cjs/chunk-HJX4D4KL.cjs.map +1 -0
  178. package/build/cjs/{chunk-MEL46GIF.cjs → chunk-RO7XAQOS.cjs} +454 -242
  179. package/build/cjs/chunk-RO7XAQOS.cjs.map +1 -0
  180. package/build/cjs/{createClient-BJo8T7Js.d.cts → createClient-mOlFts15.d.cts} +1 -0
  181. package/build/cjs/{delay-QK4T7RVX.cjs → delay-KIUUJ5NJ.cjs} +4 -3
  182. package/build/cjs/delay-KIUUJ5NJ.cjs.map +1 -0
  183. package/build/cjs/index.cjs +24 -8
  184. package/build/cjs/index.cjs.map +1 -1
  185. package/build/cjs/index.d.cts +10 -3
  186. package/build/cjs/public/internal-node.cjs +193767 -0
  187. package/build/cjs/public/internal-node.cjs.map +1 -0
  188. package/build/cjs/public/internal-node.d.cts +29 -0
  189. package/build/cjs/public/internal.cjs +16 -9
  190. package/build/cjs/public/internal.cjs.map +1 -1
  191. package/build/cjs/public/unstable-do-not-use.cjs +1736 -868
  192. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  193. package/build/cjs/public/unstable-do-not-use.d.cts +43 -7
  194. package/build/esm/Client.js +1 -1
  195. package/build/esm/Client.js.map +1 -1
  196. package/build/esm/MinimalClientContext.js.map +1 -1
  197. package/build/esm/actions/applyAction.js +4 -0
  198. package/build/esm/actions/applyAction.js.map +1 -1
  199. package/build/esm/createClient.js +2 -1
  200. package/build/esm/createClient.js.map +1 -1
  201. package/build/esm/createClient.test.js +19 -1
  202. package/build/esm/createClient.test.js.map +1 -1
  203. package/build/esm/createMinimalClient.js +4 -2
  204. package/build/esm/createMinimalClient.js.map +1 -1
  205. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +19 -1
  206. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  207. package/build/esm/fetchMetadata.test.js +11 -0
  208. package/build/esm/fetchMetadata.test.js.map +1 -1
  209. package/build/esm/index.js +2 -2
  210. package/build/esm/index.js.map +1 -1
  211. package/build/esm/internal/conversions/extractNamespace.js +22 -0
  212. package/build/esm/internal/conversions/extractNamespace.js.map +1 -0
  213. package/build/esm/internal/conversions/fullyQualifyPropName.js +26 -0
  214. package/build/esm/internal/conversions/fullyQualifyPropName.js.map +1 -0
  215. package/build/esm/internal/conversions/makeGeoFilterBbox.js +41 -0
  216. package/build/esm/internal/conversions/makeGeoFilterBbox.js.map +1 -0
  217. package/build/esm/internal/conversions/makeGeoFilterIntersects.js +29 -0
  218. package/build/esm/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
  219. package/build/esm/internal/conversions/makeGeoFilterPolygon.js +30 -0
  220. package/build/esm/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
  221. package/build/esm/internal/conversions/makeGeoFilterWithin.js +48 -0
  222. package/build/esm/internal/conversions/makeGeoFilterWithin.js.map +1 -0
  223. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +59 -105
  224. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  225. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
  226. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  227. package/build/esm/object/aggregate.js +3 -0
  228. package/build/esm/object/aggregate.js.map +1 -1
  229. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  230. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  231. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
  232. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  233. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
  234. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  235. package/build/esm/object/convertWireToOsdkObjects.test.js +12 -0
  236. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  237. package/build/esm/object/fetchPage.js +13 -6
  238. package/build/esm/object/fetchPage.js.map +1 -1
  239. package/build/esm/object/formatting/applyPropertyFormatter.js +58 -0
  240. package/build/esm/object/formatting/applyPropertyFormatter.js.map +1 -0
  241. package/build/esm/object/formatting/applyPropertyFormatter.test.js +726 -0
  242. package/build/esm/object/formatting/applyPropertyFormatter.test.js.map +1 -0
  243. package/build/esm/object/formatting/formatBoolean.js +23 -0
  244. package/build/esm/object/formatting/formatBoolean.js.map +1 -0
  245. package/build/esm/object/formatting/formatDateTime.js +158 -0
  246. package/build/esm/object/formatting/formatDateTime.js.map +1 -0
  247. package/build/esm/object/formatting/formatNumber.js +242 -0
  248. package/build/esm/object/formatting/formatNumber.js.map +1 -0
  249. package/build/esm/object/formatting/propertyFormattingUtils.js +39 -0
  250. package/build/esm/object/formatting/propertyFormattingUtils.js.map +1 -0
  251. package/build/esm/object/mediaUpload.js +3 -0
  252. package/build/esm/object/mediaUpload.js.map +1 -1
  253. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +17 -0
  254. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  255. package/build/esm/objectSet/createObjectSet.js +11 -0
  256. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  257. package/build/esm/observable/ObservableClient.js.map +1 -1
  258. package/build/esm/observable/internal/BulkObjectLoader.js +12 -4
  259. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
  260. package/build/esm/observable/internal/BulkObjectLoader.test.js +48 -0
  261. package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -1
  262. package/build/esm/observable/internal/CacheKeys.js +9 -3
  263. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  264. package/build/esm/observable/internal/Canonicalizer.js +51 -0
  265. package/build/esm/observable/internal/Canonicalizer.js.map +1 -0
  266. package/build/esm/observable/internal/Changes.js.map +1 -1
  267. package/build/esm/observable/internal/IntersectCanonicalizer.js +35 -0
  268. package/build/esm/observable/internal/IntersectCanonicalizer.js.map +1 -0
  269. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
  270. package/build/esm/observable/internal/ObservableClientImpl.js +3 -0
  271. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  272. package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -4
  273. package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
  274. package/build/esm/observable/internal/PivotCanonicalizer.js +33 -0
  275. package/build/esm/observable/internal/PivotCanonicalizer.js.map +1 -0
  276. package/build/esm/observable/internal/RdpCanonicalizer.js +66 -0
  277. package/build/esm/observable/internal/RdpCanonicalizer.js.map +1 -0
  278. package/build/esm/observable/internal/RdpCanonicalizer.test.js +68 -0
  279. package/build/esm/observable/internal/RdpCanonicalizer.test.js.map +1 -0
  280. package/build/esm/observable/internal/SimpleWhereClause.js.map +1 -1
  281. package/build/esm/observable/internal/Store.js +172 -6
  282. package/build/esm/observable/internal/Store.js.map +1 -1
  283. package/build/esm/observable/internal/WhereClauseCanonicalizer.js +1 -1
  284. package/build/esm/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  285. package/build/esm/observable/internal/actions/ActionApplication.js +1 -1
  286. package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -1
  287. package/build/esm/observable/internal/actions/OptimisticJob.js +3 -3
  288. package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -1
  289. package/build/esm/observable/internal/aggregation/AggregationCacheKey.js +22 -0
  290. package/build/esm/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
  291. package/build/esm/observable/internal/aggregation/AggregationQuery.js +77 -0
  292. package/build/esm/observable/internal/aggregation/AggregationQuery.js.map +1 -0
  293. package/build/esm/observable/internal/aggregation/AggregationsHelper.js +54 -0
  294. package/build/esm/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
  295. package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
  296. package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
  297. package/build/esm/observable/internal/base-list/BaseListQuery.js +145 -5
  298. package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -1
  299. package/build/esm/observable/internal/base-list/createCollectionConnectable.js +0 -5
  300. package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  301. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
  302. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  303. package/build/esm/observable/internal/evaluateFilter.js +61 -0
  304. package/build/esm/observable/internal/evaluateFilter.js.map +1 -0
  305. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +33 -1
  306. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  307. package/build/esm/observable/internal/list/InterfaceListQuery.js +8 -3
  308. package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -1
  309. package/build/esm/observable/internal/list/ListCacheKey.js +24 -1
  310. package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -1
  311. package/build/esm/observable/internal/list/ListQuery.js +35 -62
  312. package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
  313. package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -1
  314. package/build/esm/observable/internal/list/ListsHelper.js +18 -8
  315. package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
  316. package/build/esm/observable/internal/list/ObjectListQuery.js +51 -3
  317. package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
  318. package/build/esm/observable/internal/object/ObjectCacheKey.js +20 -1
  319. package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -1
  320. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
  321. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
  322. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
  323. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
  324. package/build/esm/observable/internal/object/ObjectQuery.js +10 -58
  325. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
  326. package/build/esm/observable/internal/object/ObjectsHelper.js +65 -5
  327. package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
  328. package/build/esm/observable/internal/objectMatchesWhereClause.js +3 -37
  329. package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
  330. package/build/esm/observable/internal/objectMatchesWhereClause.test.js +2 -1
  331. package/build/esm/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  332. package/build/esm/observable/internal/objectset/ObjectSetHelper.js +5 -1
  333. package/build/esm/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
  334. package/build/esm/observable/internal/objectset/ObjectSetQuery.js +3 -0
  335. package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  336. package/build/esm/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
  337. package/build/esm/observable/internal/testUtils/invalidateList.js +6 -1
  338. package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -1
  339. package/build/esm/observable/internal/testUtils.js +5 -3
  340. package/build/esm/observable/internal/testUtils.js.map +1 -1
  341. package/build/esm/observable/internal/types/ObjectUpdate.js +2 -0
  342. package/build/esm/observable/internal/types/ObjectUpdate.js.map +1 -0
  343. package/build/esm/observable/internal/utils/rdpFieldOperations.js +83 -0
  344. package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -0
  345. package/build/esm/ontology/loadActionMetadata.js +3 -1
  346. package/build/esm/ontology/loadActionMetadata.js.map +1 -1
  347. package/build/esm/ontology/loadFullObjectMetadata.js +2 -1
  348. package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
  349. package/build/esm/ontology/loadInterfaceMetadata.js +2 -1
  350. package/build/esm/ontology/loadInterfaceMetadata.js.map +1 -1
  351. package/build/esm/public/internal-node.js +18 -0
  352. package/build/esm/public/internal-node.js.map +1 -0
  353. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  354. package/build/esm/queries/applyQuery.js +5 -4
  355. package/build/esm/queries/applyQuery.js.map +1 -1
  356. package/build/esm/util/UserAgent.js +2 -2
  357. package/build/esm/util/UserAgent.js.map +1 -1
  358. package/build/esm/util/extractObjectOrInterfaceType.js +5 -1
  359. package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -1
  360. package/build/esm/util/extractObjectOrInterfaceType.test.js +21 -2
  361. package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -1
  362. package/build/esm/util/toDataValue.js +16 -1
  363. package/build/esm/util/toDataValue.js.map +1 -1
  364. package/build/esm/util/toDataValue.test.js +42 -2
  365. package/build/esm/util/toDataValue.test.js.map +1 -1
  366. package/build/types/Client.d.ts +1 -1
  367. package/build/types/MinimalClientContext.d.ts +3 -1
  368. package/build/types/MinimalClientContext.d.ts.map +1 -1
  369. package/build/types/actions/applyAction.d.ts.map +1 -1
  370. package/build/types/createClient.d.ts +1 -0
  371. package/build/types/createClient.d.ts.map +1 -1
  372. package/build/types/index.d.ts +3 -3
  373. package/build/types/index.d.ts.map +1 -1
  374. package/build/types/internal/conversions/extractNamespace.d.ts +1 -0
  375. package/build/types/internal/conversions/extractNamespace.d.ts.map +1 -0
  376. package/build/types/internal/conversions/fullyQualifyPropName.d.ts +2 -0
  377. package/build/types/internal/conversions/fullyQualifyPropName.d.ts.map +1 -0
  378. package/build/types/internal/conversions/makeGeoFilterBbox.d.ts +3 -0
  379. package/build/types/internal/conversions/makeGeoFilterBbox.d.ts.map +1 -0
  380. package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts +3 -0
  381. package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts.map +1 -0
  382. package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts +3 -0
  383. package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts.map +1 -0
  384. package/build/types/internal/conversions/makeGeoFilterWithin.d.ts +3 -0
  385. package/build/types/internal/conversions/makeGeoFilterWithin.d.ts.map +1 -0
  386. package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts +1 -1
  387. package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts.map +1 -1
  388. package/build/types/object/fetchPage.d.ts.map +1 -1
  389. package/build/types/object/formatting/applyPropertyFormatter.d.ts +18 -0
  390. package/build/types/object/formatting/applyPropertyFormatter.d.ts.map +1 -0
  391. package/build/types/object/formatting/applyPropertyFormatter.test.d.ts +1 -0
  392. package/build/types/object/formatting/applyPropertyFormatter.test.d.ts.map +1 -0
  393. package/build/types/object/formatting/formatBoolean.d.ts +5 -0
  394. package/build/types/object/formatting/formatBoolean.d.ts.map +1 -0
  395. package/build/types/object/formatting/formatDateTime.d.ts +6 -0
  396. package/build/types/object/formatting/formatDateTime.d.ts.map +1 -0
  397. package/build/types/object/formatting/formatNumber.d.ts +15 -0
  398. package/build/types/object/formatting/formatNumber.d.ts.map +1 -0
  399. package/build/types/object/formatting/propertyFormattingUtils.d.ts +10 -0
  400. package/build/types/object/formatting/propertyFormattingUtils.d.ts.map +1 -0
  401. package/build/types/object/mediaUpload.d.ts +2 -1
  402. package/build/types/object/mediaUpload.d.ts.map +1 -1
  403. package/build/types/observable/ObservableClient.d.ts +60 -5
  404. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  405. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
  406. package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
  407. package/build/types/observable/internal/Canonicalizer.d.ts +37 -0
  408. package/build/types/observable/internal/Canonicalizer.d.ts.map +1 -0
  409. package/build/types/observable/internal/Changes.d.ts +4 -3
  410. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  411. package/build/types/observable/internal/IntersectCanonicalizer.d.ts +18 -0
  412. package/build/types/observable/internal/IntersectCanonicalizer.d.ts.map +1 -0
  413. package/build/types/observable/internal/KnownCacheKey.d.ts +2 -1
  414. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
  415. package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
  416. package/build/types/observable/internal/PivotCanonicalizer.d.ts +10 -0
  417. package/build/types/observable/internal/PivotCanonicalizer.d.ts.map +1 -0
  418. package/build/types/observable/internal/RdpCanonicalizer.d.ts +8 -0
  419. package/build/types/observable/internal/RdpCanonicalizer.d.ts.map +1 -0
  420. package/build/types/observable/internal/RdpCanonicalizer.test.d.ts +1 -0
  421. package/build/types/observable/internal/RdpCanonicalizer.test.d.ts.map +1 -0
  422. package/build/types/observable/internal/SimpleWhereClause.d.ts +6 -2
  423. package/build/types/observable/internal/SimpleWhereClause.d.ts.map +1 -1
  424. package/build/types/observable/internal/Store.d.ts +10 -0
  425. package/build/types/observable/internal/Store.d.ts.map +1 -1
  426. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts +5 -2
  427. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts.map +1 -1
  428. package/build/types/observable/internal/actions/ActionApplication.d.ts.map +1 -1
  429. package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts +12 -0
  430. package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts.map +1 -0
  431. package/build/types/observable/internal/aggregation/AggregationQuery.d.ts +49 -0
  432. package/build/types/observable/internal/aggregation/AggregationQuery.d.ts.map +1 -0
  433. package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts +37 -0
  434. package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts.map +1 -0
  435. package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts +5 -0
  436. package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts.map +1 -0
  437. package/build/types/observable/internal/base-list/BaseListQuery.d.ts +48 -2
  438. package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -1
  439. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts +1 -23
  440. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -1
  441. package/build/types/observable/internal/evaluateFilter.d.ts +6 -0
  442. package/build/types/observable/internal/evaluateFilter.d.ts.map +1 -0
  443. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +5 -0
  444. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -1
  445. package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -1
  446. package/build/types/observable/internal/list/ListCacheKey.d.ts +10 -1
  447. package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -1
  448. package/build/types/observable/internal/list/ListQuery.d.ts +12 -15
  449. package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
  450. package/build/types/observable/internal/list/ListQueryOptions.d.ts +9 -1
  451. package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -1
  452. package/build/types/observable/internal/list/ListsHelper.d.ts +7 -1
  453. package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
  454. package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
  455. package/build/types/observable/internal/object/ObjectCacheKey.d.ts +6 -1
  456. package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -1
  457. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts +60 -0
  458. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts.map +1 -0
  459. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts +1 -0
  460. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts.map +1 -0
  461. package/build/types/observable/internal/object/ObjectQuery.d.ts +1 -1
  462. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
  463. package/build/types/observable/internal/object/ObjectsHelper.d.ts +15 -1
  464. package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
  465. package/build/types/observable/internal/objectMatchesWhereClause.d.ts.map +1 -1
  466. package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts.map +1 -1
  467. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +2 -1
  468. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
  469. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts +1 -0
  470. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts.map +1 -1
  471. package/build/types/observable/internal/testUtils.d.ts +1 -1
  472. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  473. package/build/types/observable/internal/types/ObjectUpdate.d.ts +11 -0
  474. package/build/types/observable/internal/types/ObjectUpdate.d.ts.map +1 -0
  475. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts +5 -0
  476. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts.map +1 -0
  477. package/build/types/public/internal-node.d.ts +2 -0
  478. package/build/types/public/internal-node.d.ts.map +1 -0
  479. package/build/types/public/unstable-do-not-use.d.ts +1 -1
  480. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  481. package/build/types/queries/applyQuery.d.ts.map +1 -1
  482. package/internal-node.d.ts +17 -0
  483. package/package.json +23 -13
  484. package/build/cjs/chunk-MEL46GIF.cjs.map +0 -1
  485. package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
  486. package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
  487. package/build/cjs/chunk-SDFKR62Z.cjs.map +0 -1
  488. package/build/cjs/delay-QK4T7RVX.cjs.map +0 -1
@@ -78,11 +78,13 @@ describe("createCollectionConnectable", () => {
78
78
  // Mock object cache keys
79
79
  const objectKey1 = {
80
80
  type: "object",
81
- otherKeys: ["Employee", 1]
81
+ otherKeys: ["Employee", 1, undefined],
82
+ __cacheKey: {}
82
83
  };
83
84
  const objectKey2 = {
84
85
  type: "object",
85
- otherKeys: ["Employee", 2]
86
+ otherKeys: ["Employee", 2, undefined],
87
+ __cacheKey: {}
86
88
  };
87
89
 
88
90
  // Create subject payload with mock data
@@ -191,7 +193,8 @@ describe("createCollectionConnectable", () => {
191
193
  it("should propagate optimistic flag correctly", async () => {
192
194
  const objectKey1 = {
193
195
  type: "object",
194
- otherKeys: ["Employee", 1]
196
+ otherKeys: ["Employee", 1, undefined],
197
+ __cacheKey: {}
195
198
  };
196
199
  const subjectPayload = {
197
200
  cacheKey: mockListCacheKey,
@@ -229,7 +232,8 @@ describe("createCollectionConnectable", () => {
229
232
  it("should handle different status values", async () => {
230
233
  const objectKey1 = {
231
234
  type: "object",
232
- otherKeys: ["Employee", 1]
235
+ otherKeys: ["Employee", 1, undefined],
236
+ __cacheKey: {}
233
237
  };
234
238
  const basePayload = {
235
239
  cacheKey: mockListCacheKey,
@@ -283,15 +287,18 @@ describe("createCollectionConnectable", () => {
283
287
  it("should handle multiple objects in collection", async () => {
284
288
  const objectKey1 = {
285
289
  type: "object",
286
- otherKeys: ["Employee", 1]
290
+ otherKeys: ["Employee", 1, undefined],
291
+ __cacheKey: {}
287
292
  };
288
293
  const objectKey2 = {
289
294
  type: "object",
290
- otherKeys: ["Employee", 2]
295
+ otherKeys: ["Employee", 2, undefined],
296
+ __cacheKey: {}
291
297
  };
292
298
  const objectKey3 = {
293
299
  type: "object",
294
- otherKeys: ["Employee", 3]
300
+ otherKeys: ["Employee", 3, undefined],
301
+ __cacheKey: {}
295
302
  };
296
303
  const subjectPayload = {
297
304
  cacheKey: mockListCacheKey,
@@ -351,11 +358,13 @@ describe("createCollectionConnectable", () => {
351
358
  it("should handle objects being added/removed from collection", async () => {
352
359
  const objectKey1 = {
353
360
  type: "object",
354
- otherKeys: ["Employee", 1]
361
+ otherKeys: ["Employee", 1, undefined],
362
+ __cacheKey: {}
355
363
  };
356
364
  const objectKey2 = {
357
365
  type: "object",
358
- otherKeys: ["Employee", 2]
366
+ otherKeys: ["Employee", 2, undefined],
367
+ __cacheKey: {}
359
368
  };
360
369
 
361
370
  // Start with one object
@@ -425,7 +434,8 @@ describe("createCollectionConnectable", () => {
425
434
  it("should support multiple subscribers", async () => {
426
435
  const objectKey1 = {
427
436
  type: "object",
428
- otherKeys: ["Employee", 1]
437
+ otherKeys: ["Employee", 1, undefined],
438
+ __cacheKey: {}
429
439
  };
430
440
  const subjectPayload = {
431
441
  cacheKey: mockListCacheKey,
@@ -467,7 +477,8 @@ describe("createCollectionConnectable", () => {
467
477
  it("should use ReplaySubject behavior (last value replayed)", async () => {
468
478
  const objectKey1 = {
469
479
  type: "object",
470
- otherKeys: ["Employee", 1]
480
+ otherKeys: ["Employee", 1, undefined],
481
+ __cacheKey: {}
471
482
  };
472
483
  const subjectPayload = {
473
484
  cacheKey: mockListCacheKey,
@@ -516,7 +527,8 @@ describe("createCollectionConnectable", () => {
516
527
  it("should handle store.getSubject returning undefined object entry", async () => {
517
528
  const objectKey1 = {
518
529
  type: "object",
519
- otherKeys: ["Employee", 1]
530
+ otherKeys: ["Employee", 1, undefined],
531
+ __cacheKey: {}
520
532
  };
521
533
  const subjectPayload = {
522
534
  cacheKey: mockListCacheKey,
@@ -556,7 +568,8 @@ describe("createCollectionConnectable", () => {
556
568
  it("should handle createPayload function throwing errors", async () => {
557
569
  const objectKey1 = {
558
570
  type: "object",
559
- otherKeys: ["Employee", 1]
571
+ otherKeys: ["Employee", 1, undefined],
572
+ __cacheKey: {}
560
573
  };
561
574
  const subjectPayload = {
562
575
  cacheKey: mockListCacheKey,
@@ -1 +1 @@
1
- {"version":3,"file":"createCollectionConnectable.test.js","names":["BehaviorSubject","beforeEach","describe","expect","it","vi","createClientMockHelper","mockObserver","waitForCall","createCollectionConnectable","actualCreateCollectionConnectable","mockEmployee1","$apiName","$primaryKey","$objectType","$title","employeeId","fullName","mockEmployee2","mockEmployee3","mockSubjects","createPayload","mockListCacheKey","client","get","fn","type","otherKeys","params","data","resolvedData","status","isOptimistic","lastUpdated","count","length","objectKey1","objectKey2","subjectPayload","cacheKey","value","Date","now","subject","mocked","mockImplementation","undefined","connectable","subscription","connect","observer","subscribe","next","toHaveBeenCalledWith","objectContaining","unsubscribe","mockReturnValue","basePayload","mockClear","objectKey3","initialPayload","observer1","observer2","toHaveBeenCalledTimes","not","toHaveBeenCalled","errorThrowingCreatePayload","Error","error","message"],"sources":["createCollectionConnectable.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { ObjectCacheKey } from \"../object/ObjectCacheKey.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type { Subjects } from \"../Subjects.js\";\nimport {\n createClientMockHelper,\n mockObserver,\n waitForCall,\n} from \"../testUtils.js\";\nimport { createCollectionConnectable as actualCreateCollectionConnectable } from \"./createCollectionConnectable.js\";\n\n// Test payload type for our collection\ninterface TestPayload {\n data: any[];\n status: Status;\n isOptimistic: boolean;\n lastUpdated: number;\n count: number;\n}\n\n// Mock object instances for testing\nconst mockEmployee1: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 1,\n $objectType: \"Employee\",\n $title: \"Employee 1\",\n employeeId: 1,\n fullName: \"John Doe\",\n} as any;\n\nconst mockEmployee2: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 2,\n $objectType: \"Employee\",\n $title: \"Employee 2\",\n employeeId: 2,\n fullName: \"Jane Smith\",\n} as any;\n\nconst mockEmployee3: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 3,\n $objectType: \"Employee\",\n $title: \"Employee 3\",\n employeeId: 3,\n fullName: \"Bob Johnson\",\n} as any;\n\ndescribe(\"createCollectionConnectable\", () => {\n let mockSubjects: Subjects;\n let createPayload: ReturnType<typeof vi.fn>;\n let mockListCacheKey: CacheKey<any, any, any, any>;\n\n beforeEach(() => {\n const { client } = createClientMockHelper();\n\n mockSubjects = {\n get: vi.fn(),\n } as any;\n\n // Mock cache key for list\n mockListCacheKey = {\n type: \"list\",\n otherKeys: [\"Employee\", {}, {}],\n } as CacheKey<any, any, any, any>;\n\n // Create payload function that mimics real usage\n createPayload = vi.fn((params) => ({\n data: params.resolvedData,\n status: params.status,\n isOptimistic: params.isOptimistic,\n lastUpdated: params.lastUpdated,\n count: params.resolvedData.length,\n }));\n });\n\n describe(\"basic functionality\", () => {\n it(\"should create a connectable observable with resolved data\", async () => {\n // Mock object cache keys\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2],\n } as ObjectCacheKey;\n\n // Create subject payload with mock data\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return object observables\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n // Connect and subscribe\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for the observable to emit\n await waitForCall(observer);\n\n // Verify the result\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n status: \"loaded\",\n isOptimistic: false,\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle empty data correctly\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle null/undefined data\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: null as any,\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"optimistic updates\", () => {\n it(\"should propagate optimistic flag correctly\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loading\",\n lastUpdated: Date.now(),\n isOptimistic: true, // This is an optimistic update\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: true, // Should preserve optimistic flag\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"status transitions\", () => {\n it(\"should handle different status values\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const basePayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"init\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(basePayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for initial emission\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"init\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Test transition to loading\n subject.next({\n ...basePayload,\n status: \"loading\",\n lastUpdated: Date.now(),\n });\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"multiple objects\", () => {\n it(\"should handle multiple objects in collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2],\n } as ObjectCacheKey;\n\n const objectKey3: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 3],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2, objectKey3],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject for all three objects\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey3) {\n return new BehaviorSubject({\n cacheKey: objectKey3,\n value: mockEmployee3,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2, mockEmployee3],\n status: \"loaded\",\n isOptimistic: false,\n count: 3,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle objects being added/removed from collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2],\n } as ObjectCacheKey;\n\n // Start with one object\n const initialPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(initialPayload);\n\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // First check - single object\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Add second object\n subject.next({\n ...initialPayload,\n value: {\n data: [objectKey1, objectKey2],\n },\n lastUpdated: Date.now(),\n });\n\n // Second check - two objects\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"subscription behavior\", () => {\n it(\"should support multiple subscribers\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n const observer2 = mockObserver<TestPayload>();\n\n connectable.subscribe(observer1);\n connectable.subscribe(observer2);\n\n await waitForCall(observer1);\n await waitForCall(observer2);\n\n // Both observers should receive the data\n expect(observer1.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should use ReplaySubject behavior (last value replayed)\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n\n // Subscribe first observer\n connectable.subscribe(observer1);\n\n await waitForCall(observer1);\n expect(observer1.next).toHaveBeenCalledTimes(1);\n observer1.next.mockClear();\n\n // Subscribe second observer after first has already received data\n const observer2 = mockObserver<TestPayload>();\n connectable.subscribe(observer2);\n\n await waitForCall(observer2);\n\n // Second observer should immediately receive the last value (ReplaySubject behavior)\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n // First observer should not receive additional calls\n expect(observer1.next).not.toHaveBeenCalled();\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"error handling\", () => {\n it(\"should handle store.getSubject returning undefined object entry\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return undefined entry - this creates an object with undefined value\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: undefined, // This is the key - undefined value\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n // Should handle undefined object entry gracefully by filtering it out\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [undefined], // The function maps the undefined value from the store\n status: \"loaded\",\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle createPayload function throwing errors\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1],\n } as ObjectCacheKey;\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n // Mock createPayload to throw an error\n const errorThrowingCreatePayload = vi.fn(() => {\n throw new Error(\"Test error in createPayload\");\n });\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n errorThrowingCreatePayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer.error);\n\n // Should call the error handler\n expect(observer.error).toHaveBeenCalledWith(\n expect.objectContaining({\n message: \"Test error in createPayload\",\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"createCollectionConnectable.test.js","names":["BehaviorSubject","beforeEach","describe","expect","it","vi","createClientMockHelper","mockObserver","waitForCall","createCollectionConnectable","actualCreateCollectionConnectable","mockEmployee1","$apiName","$primaryKey","$objectType","$title","employeeId","fullName","mockEmployee2","mockEmployee3","mockSubjects","createPayload","mockListCacheKey","client","get","fn","type","otherKeys","params","data","resolvedData","status","isOptimistic","lastUpdated","count","length","objectKey1","undefined","__cacheKey","objectKey2","subjectPayload","cacheKey","value","Date","now","subject","mocked","mockImplementation","connectable","subscription","connect","observer","subscribe","next","toHaveBeenCalledWith","objectContaining","unsubscribe","mockReturnValue","basePayload","mockClear","objectKey3","initialPayload","observer1","observer2","toHaveBeenCalledTimes","not","toHaveBeenCalled","errorThrowingCreatePayload","Error","error","message"],"sources":["createCollectionConnectable.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk } from \"@osdk/api\";\nimport type { Employee } from \"@osdk/client.test.ontology\";\nimport { BehaviorSubject } from \"rxjs\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { ObjectCacheKey } from \"../object/ObjectCacheKey.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type { Subjects } from \"../Subjects.js\";\nimport {\n createClientMockHelper,\n mockObserver,\n waitForCall,\n} from \"../testUtils.js\";\nimport { createCollectionConnectable as actualCreateCollectionConnectable } from \"./createCollectionConnectable.js\";\n\n// Test payload type for our collection\ninterface TestPayload {\n data: any[];\n status: Status;\n isOptimistic: boolean;\n lastUpdated: number;\n count: number;\n}\n\n// Mock object instances for testing\nconst mockEmployee1: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 1,\n $objectType: \"Employee\",\n $title: \"Employee 1\",\n employeeId: 1,\n fullName: \"John Doe\",\n} as any;\n\nconst mockEmployee2: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 2,\n $objectType: \"Employee\",\n $title: \"Employee 2\",\n employeeId: 2,\n fullName: \"Jane Smith\",\n} as any;\n\nconst mockEmployee3: Osdk.Instance<Employee> & ObjectHolder = {\n $apiName: \"Employee\",\n $primaryKey: 3,\n $objectType: \"Employee\",\n $title: \"Employee 3\",\n employeeId: 3,\n fullName: \"Bob Johnson\",\n} as any;\n\ndescribe(\"createCollectionConnectable\", () => {\n let mockSubjects: Subjects;\n let createPayload: ReturnType<typeof vi.fn>;\n let mockListCacheKey: CacheKey<any, any, any, any>;\n\n beforeEach(() => {\n const { client } = createClientMockHelper();\n\n mockSubjects = {\n get: vi.fn(),\n } as any;\n\n // Mock cache key for list\n mockListCacheKey = {\n type: \"list\",\n otherKeys: [\"Employee\", {}, {}],\n } as CacheKey<any, any, any, any>;\n\n // Create payload function that mimics real usage\n createPayload = vi.fn((params) => ({\n data: params.resolvedData,\n status: params.status,\n isOptimistic: params.isOptimistic,\n lastUpdated: params.lastUpdated,\n count: params.resolvedData.length,\n }));\n });\n\n describe(\"basic functionality\", () => {\n it(\"should create a connectable observable with resolved data\", async () => {\n // Mock object cache keys\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n // Create subject payload with mock data\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return object observables\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n // Connect and subscribe\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for the observable to emit\n await waitForCall(observer);\n\n // Verify the result\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n status: \"loaded\",\n isOptimistic: false,\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle empty data correctly\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle null/undefined data\", async () => {\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: null as any,\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [],\n status: \"loaded\",\n isOptimistic: false,\n count: 0,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"optimistic updates\", () => {\n it(\"should propagate optimistic flag correctly\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loading\",\n lastUpdated: Date.now(),\n isOptimistic: true, // This is an optimistic update\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: true, // Should preserve optimistic flag\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"status transitions\", () => {\n it(\"should handle different status values\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const basePayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"init\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(basePayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // Wait for initial emission\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"init\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Test transition to loading\n subject.next({\n ...basePayload,\n status: \"loading\",\n lastUpdated: Date.now(),\n });\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n status: \"loading\",\n isOptimistic: false,\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"multiple objects\", () => {\n it(\"should handle multiple objects in collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey3: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 3, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1, objectKey2, objectKey3],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject for all three objects\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey3) {\n return new BehaviorSubject({\n cacheKey: objectKey3,\n value: mockEmployee3,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2, mockEmployee3],\n status: \"loaded\",\n isOptimistic: false,\n count: 3,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle objects being added/removed from collection\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const objectKey2: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 2, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n // Start with one object\n const initialPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(initialPayload);\n\n vi.mocked(mockSubjects.get).mockImplementation((cacheKey: any) => {\n if (cacheKey === objectKey1) {\n return new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n if (cacheKey === objectKey2) {\n return new BehaviorSubject({\n cacheKey: objectKey2,\n value: mockEmployee2,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any);\n }\n return new BehaviorSubject(undefined as any);\n }) as any;\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n // First check - single object\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n observer.next.mockClear();\n\n // Add second object\n subject.next({\n ...initialPayload,\n value: {\n data: [objectKey1, objectKey2],\n },\n lastUpdated: Date.now(),\n });\n\n // Second check - two objects\n await waitForCall(observer);\n\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1, mockEmployee2],\n count: 2,\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"subscription behavior\", () => {\n it(\"should support multiple subscribers\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n const observer2 = mockObserver<TestPayload>();\n\n connectable.subscribe(observer1);\n connectable.subscribe(observer2);\n\n await waitForCall(observer1);\n await waitForCall(observer2);\n\n // Both observers should receive the data\n expect(observer1.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should use ReplaySubject behavior (last value replayed)\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer1 = mockObserver<TestPayload>();\n\n // Subscribe first observer\n connectable.subscribe(observer1);\n\n await waitForCall(observer1);\n expect(observer1.next).toHaveBeenCalledTimes(1);\n observer1.next.mockClear();\n\n // Subscribe second observer after first has already received data\n const observer2 = mockObserver<TestPayload>();\n connectable.subscribe(observer2);\n\n await waitForCall(observer2);\n\n // Second observer should immediately receive the last value (ReplaySubject behavior)\n expect(observer2.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [mockEmployee1],\n count: 1,\n }),\n );\n\n // First observer should not receive additional calls\n expect(observer1.next).not.toHaveBeenCalled();\n\n subscription.unsubscribe();\n });\n });\n\n describe(\"error handling\", () => {\n it(\"should handle store.getSubject returning undefined object entry\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n // Mock store.getSubject to return undefined entry - this creates an object with undefined value\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: undefined, // This is the key - undefined value\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n createPayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer);\n\n // Should handle undefined object entry gracefully by filtering it out\n expect(observer.next).toHaveBeenCalledWith(\n expect.objectContaining({\n data: [undefined], // The function maps the undefined value from the store\n status: \"loaded\",\n count: 1,\n }),\n );\n\n subscription.unsubscribe();\n });\n\n it(\"should handle createPayload function throwing errors\", async () => {\n const objectKey1: ObjectCacheKey = {\n type: \"object\",\n otherKeys: [\"Employee\", 1, undefined],\n __cacheKey: {} as ObjectCacheKey[\"__cacheKey\"],\n };\n\n const subjectPayload: SubjectPayload<typeof mockListCacheKey> = {\n cacheKey: mockListCacheKey,\n value: {\n data: [objectKey1],\n },\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n };\n\n const subject = new BehaviorSubject(subjectPayload);\n\n vi.mocked(mockSubjects.get).mockReturnValue(\n new BehaviorSubject({\n cacheKey: objectKey1,\n value: mockEmployee1,\n status: \"loaded\",\n lastUpdated: Date.now(),\n isOptimistic: false,\n } as any),\n );\n\n // Mock createPayload to throw an error\n const errorThrowingCreatePayload = vi.fn(() => {\n throw new Error(\"Test error in createPayload\");\n });\n\n const connectable = actualCreateCollectionConnectable(\n subject,\n mockSubjects,\n errorThrowingCreatePayload,\n );\n\n const subscription = connectable.connect();\n const observer = mockObserver<TestPayload>();\n\n connectable.subscribe(observer);\n\n await waitForCall(observer.error);\n\n // Should call the error handler\n expect(observer.error).toHaveBeenCalledWith(\n expect.objectContaining({\n message: \"Test error in createPayload\",\n }),\n );\n\n subscription.unsubscribe();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import invariant from "tiny-invariant";
18
+
19
+ /**
20
+ * Evaluates a where clause filter against a value.
21
+ * This is a runtime evaluation function that handles different property types.
22
+ */
23
+ export function evaluateFilter(f, realValue, expected, strict) {
24
+ switch (f) {
25
+ case "$eq":
26
+ return realValue === expected;
27
+ case "$gt":
28
+ return realValue > expected;
29
+ case "$lt":
30
+ return realValue < expected;
31
+ case "$gte":
32
+ return realValue >= expected;
33
+ case "$lte":
34
+ return realValue <= expected;
35
+ case "$ne":
36
+ return realValue !== expected;
37
+ case "$in":
38
+ return expected.$in.includes(realValue);
39
+ case "$isNull":
40
+ return realValue == null;
41
+ case "$startsWith":
42
+ return realValue.startsWith(expected);
43
+ case "$contains":
44
+ case "$containsAllTerms":
45
+ case "$containsAllTermsInOrder":
46
+ case "$containsAnyTerm":
47
+ case "$intersects":
48
+ case "$within":
49
+ // for these we will strictly say no and loosely say yes
50
+ // so that they don't change things now but may if reloaded
51
+ return !strict;
52
+ default:
53
+ // same thing here as the above cases but we will catch the
54
+ // exhaustive check in dev
55
+ if (process.env.NODE_ENV !== "production") {
56
+ process.env.NODE_ENV !== "production" ? invariant(false, `Unknown where filter ${f}`) : invariant(false);
57
+ }
58
+ return !strict;
59
+ }
60
+ }
61
+ //# sourceMappingURL=evaluateFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluateFilter.js","names":["invariant","evaluateFilter","f","realValue","expected","strict","$in","includes","startsWith","process","env","NODE_ENV"],"sources":["evaluateFilter.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { PossibleWhereClauseFilters } from \"@osdk/api\";\nimport invariant from \"tiny-invariant\";\n\n/**\n * Evaluates a where clause filter against a value.\n * This is a runtime evaluation function that handles different property types.\n */\nexport function evaluateFilter(\n f: PossibleWhereClauseFilters,\n realValue: any,\n expected: any,\n strict: boolean,\n): boolean {\n switch (f) {\n case \"$eq\":\n return realValue === expected;\n case \"$gt\":\n return realValue > expected;\n case \"$lt\":\n return realValue < expected;\n case \"$gte\":\n return realValue >= expected;\n case \"$lte\":\n return realValue <= expected;\n case \"$ne\":\n return realValue !== expected;\n case \"$in\":\n return expected.$in.includes(realValue);\n case \"$isNull\":\n return realValue == null;\n case \"$startsWith\":\n return realValue.startsWith(expected);\n case \"$contains\":\n case \"$containsAllTerms\":\n case \"$containsAllTermsInOrder\":\n case \"$containsAnyTerm\":\n case \"$intersects\":\n case \"$within\":\n // for these we will strictly say no and loosely say yes\n // so that they don't change things now but may if reloaded\n return !strict;\n\n default:\n // same thing here as the above cases but we will catch the\n // exhaustive check in dev\n if (process.env.NODE_ENV !== \"production\") {\n const exhaustive: never = f;\n invariant(false, `Unknown where filter ${f}`);\n }\n return !strict;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,SAAS,MAAM,gBAAgB;;AAEtC;AACA;AACA;AACA;AACA,OAAO,SAASC,cAAcA,CAC5BC,CAA6B,EAC7BC,SAAc,EACdC,QAAa,EACbC,MAAe,EACN;EACT,QAAQH,CAAC;IACP,KAAK,KAAK;MACR,OAAOC,SAAS,KAAKC,QAAQ;IAC/B,KAAK,KAAK;MACR,OAAOD,SAAS,GAAGC,QAAQ;IAC7B,KAAK,KAAK;MACR,OAAOD,SAAS,GAAGC,QAAQ;IAC7B,KAAK,MAAM;MACT,OAAOD,SAAS,IAAIC,QAAQ;IAC9B,KAAK,MAAM;MACT,OAAOD,SAAS,IAAIC,QAAQ;IAC9B,KAAK,KAAK;MACR,OAAOD,SAAS,KAAKC,QAAQ;IAC/B,KAAK,KAAK;MACR,OAAOA,QAAQ,CAACE,GAAG,CAACC,QAAQ,CAACJ,SAAS,CAAC;IACzC,KAAK,SAAS;MACZ,OAAOA,SAAS,IAAI,IAAI;IAC1B,KAAK,aAAa;MAChB,OAAOA,SAAS,CAACK,UAAU,CAACJ,QAAQ,CAAC;IACvC,KAAK,WAAW;IAChB,KAAK,mBAAmB;IACxB,KAAK,0BAA0B;IAC/B,KAAK,kBAAkB;IACvB,KAAK,aAAa;IAClB,KAAK,SAAS;MACZ;MACA;MACA,OAAO,CAACC,MAAM;IAEhB;MACE;MACA;MACA,IAAII,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;QAEzCF,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBAAAX,SAAS,QAAQ,wBAAwBE,CAAC,EAAE,IAA5CF,SAAS;MACX;MACA,OAAO,CAACK,MAAM;EAClB;AACF","ignoreList":[]}
@@ -1,2 +1,34 @@
1
- export {};
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ // Index constants for accessing otherKeys array elements
18
+ export const SOURCE_OBJECT_TYPE_IDX = 0;
19
+ export const SOURCE_PK_IDX = 1;
20
+ export const LINK_NAME_IDX = 2;
21
+ export const WHERE_CLAUSE_IDX = 3;
22
+ export const ORDER_BY_CLAUSE_IDX = 4;
23
+
24
+ /**
25
+ * Storage data format for link query cache entries, similar to ListStorageData
26
+ */
27
+
28
+ /**
29
+ * Cache key for a specific link query that uniquely identifies:
30
+ * - The source object type
31
+ * - The source object primary key
32
+ * - The link name
33
+ */
2
34
  //# sourceMappingURL=SpecificLinkCacheKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpecificLinkCacheKey.js","names":[],"sources":["SpecificLinkCacheKey.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition, PrimaryKeyType } from \"@osdk/api\";\nimport type { CollectionStorageData } from \"../base-list/BaseCollectionQuery.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { SpecificLinkQuery } from \"./SpecificLinkQuery.js\";\n\n/**\n * Storage data format for link query cache entries, similar to ListStorageData\n */\nexport interface LinkStorageData extends CollectionStorageData {\n}\n/**\n * Cache key for a specific link query that uniquely identifies:\n * - The source object type\n * - The source object primary key\n * - The link name\n */\n\nexport interface SpecificLinkCacheKey extends\n CacheKey<\n \"specificLink\",\n LinkStorageData,\n SpecificLinkQuery,\n [\n sourceObjectType: string,\n sourcePk: PrimaryKeyType<ObjectTypeDefinition>,\n linkName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n ]\n >\n{\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"SpecificLinkCacheKey.js","names":["SOURCE_OBJECT_TYPE_IDX","SOURCE_PK_IDX","LINK_NAME_IDX","WHERE_CLAUSE_IDX","ORDER_BY_CLAUSE_IDX"],"sources":["SpecificLinkCacheKey.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition, PrimaryKeyType } from \"@osdk/api\";\nimport type { CollectionStorageData } from \"../base-list/BaseCollectionQuery.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { SpecificLinkQuery } from \"./SpecificLinkQuery.js\";\n\n// Index constants for accessing otherKeys array elements\nexport const SOURCE_OBJECT_TYPE_IDX = 0;\nexport const SOURCE_PK_IDX = 1;\nexport const LINK_NAME_IDX = 2;\nexport const WHERE_CLAUSE_IDX = 3;\nexport const ORDER_BY_CLAUSE_IDX = 4;\n\n/**\n * Storage data format for link query cache entries, similar to ListStorageData\n */\nexport interface LinkStorageData extends CollectionStorageData {\n}\n/**\n * Cache key for a specific link query that uniquely identifies:\n * - The source object type\n * - The source object primary key\n * - The link name\n */\n\nexport interface SpecificLinkCacheKey extends\n CacheKey<\n \"specificLink\",\n LinkStorageData,\n SpecificLinkQuery,\n [\n sourceObjectType: string,\n sourcePk: PrimaryKeyType<ObjectTypeDefinition>,\n linkName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n ]\n >\n{\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA;AACA,OAAO,MAAMA,sBAAsB,GAAG,CAAC;AACvC,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,gBAAgB,GAAG,CAAC;AACjC,OAAO,MAAMC,mBAAmB,GAAG,CAAC;;AAEpC;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -17,13 +17,18 @@
17
17
  import groupBy from "object.groupby";
18
18
  import invariant from "tiny-invariant";
19
19
  import { ObjectDefRef, UnderlyingOsdkObject } from "../../../object/convertWireToOsdkObjects/InternalSymbols.js";
20
- import { ListQuery } from "./ListQuery.js";
20
+ import { ListQuery, RDP_IDX } from "./ListQuery.js";
21
21
  export class InterfaceListQuery extends ListQuery {
22
22
  createObjectSet(store) {
23
- return store.client({
23
+ const rdpConfig = this.cacheKey.otherKeys[RDP_IDX];
24
+ const objectTypeDef = {
24
25
  type: "interface",
25
26
  apiName: this.apiName
26
- }).where(this.canonicalWhere);
27
+ };
28
+ if (rdpConfig != null) {
29
+ return store.client(objectTypeDef).withProperties(rdpConfig).where(this.canonicalWhere);
30
+ }
31
+ return store.client(objectTypeDef).where(this.canonicalWhere);
27
32
  }
28
33
  async revalidateObjectType(apiName) {
29
34
  const objectMetadata = await this.store.client.fetchMetadata({
@@ -1 +1 @@
1
- {"version":3,"file":"InterfaceListQuery.js","names":["groupBy","invariant","ObjectDefRef","UnderlyingOsdkObject","ListQuery","InterfaceListQuery","createObjectSet","store","client","type","apiName","where","canonicalWhere","revalidateObjectType","objectMetadata","fetchMetadata","interfaceMap","revalidate","postProcessFetchedData","data","reloadDataAsFullObjects","extractRelevantObjects","changes","matchesApiName","object","added","Array","from","addedObjects","filter","map","$as","modified","modifiedObjects","all","strictMatches","Set","sortaMatches","groups","x","$objectType","objectTypeToPrimaryKeyToObject","Object","fromEntries","Promise","entries","objects","objectDef","primaryKeyApiName","$in","$primaryKey","result","fetchPage","obj","process","env","NODE_ENV"],"sources":["InterfaceListQuery.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n} from \"@osdk/api\";\nimport groupBy from \"object.groupby\";\nimport invariant from \"tiny-invariant\";\nimport type { Client } from \"../../../Client.js\";\nimport type { InterfaceHolder } from \"../../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport {\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { Store } from \"../Store.js\";\nimport { ListQuery } from \"./ListQuery.js\";\n\ntype ExtractRelevantObjectsResult = Record<\"added\" | \"modified\", {\n all: (ObjectHolder | InterfaceHolder)[];\n strictMatches: Set<(ObjectHolder | InterfaceHolder)>;\n sortaMatches: Set<(ObjectHolder | InterfaceHolder)>;\n}>;\n\nexport class InterfaceListQuery extends ListQuery {\n protected createObjectSet(store: Store): ObjectSet<ObjectTypeDefinition> {\n return store.client({\n type: \"interface\" as const,\n apiName: this.apiName,\n } as ObjectOrInterfaceDefinition as ObjectTypeDefinition)\n .where(this.canonicalWhere);\n }\n\n async revalidateObjectType(apiName: string): Promise<void> {\n const objectMetadata = await this.store.client.fetchMetadata({\n type: \"object\",\n apiName,\n });\n\n if (this.apiName in objectMetadata.interfaceMap) {\n await this.revalidate(/* force */ true);\n }\n }\n\n protected async postProcessFetchedData(\n data: Osdk.Instance<any>[],\n ): Promise<Osdk.Instance<any>[]> {\n return reloadDataAsFullObjects(this.store.client, data);\n }\n\n protected extractRelevantObjects(\n changes: Changes,\n ): ExtractRelevantObjectsResult {\n const matchesApiName = ([, object]: [unknown, ObjectHolder]) => {\n return this.apiName in object[ObjectDefRef].interfaceMap;\n };\n\n const added = Array.from(changes.addedObjects).filter(matchesApiName).map((\n [, object],\n ) => object.$as(this.apiName));\n\n const modified = Array.from(changes.modifiedObjects).filter(matchesApiName)\n .map((\n [, object],\n ) => object.$as(this.apiName));\n\n return {\n added: {\n all: added,\n strictMatches: new Set(),\n sortaMatches: new Set(),\n },\n modified: {\n all: modified,\n strictMatches: new Set(),\n sortaMatches: new Set(),\n },\n };\n }\n}\n\n// Hopefully this can go away when we can just request the full object properties on first load\nasync function reloadDataAsFullObjects(\n client: Client,\n data: Osdk.Instance<any>[],\n) {\n const groups = groupBy(data, (x) => x.$objectType);\n const objectTypeToPrimaryKeyToObject = Object.fromEntries(\n await Promise.all(\n Object.entries(groups).map<\n Promise<\n [\n /** objectType **/ string,\n Record<string | number, Osdk.Instance<ObjectTypeDefinition>>,\n ]\n >\n >(async ([apiName, objects]) => {\n // to keep InternalSimpleOsdkInstance simple, we make both the `ObjectDefRef` and\n // the `InterfaceDefRef` optional but we know that the right one is on there\n // thus we can `!`\n const objectDef = (objects[0] as ObjectHolder)[UnderlyingOsdkObject][\n ObjectDefRef\n ]!;\n const where: SimpleWhereClause = {\n [objectDef.primaryKeyApiName]: {\n $in: objects.map(x => x.$primaryKey),\n },\n };\n\n const result = await client(\n objectDef as ObjectTypeDefinition,\n ).where(where).fetchPage();\n return [\n apiName,\n Object.fromEntries(result.data.map(\n x => [x.$primaryKey, x],\n )),\n ];\n }),\n ),\n );\n\n data = data.map((obj) => {\n invariant(\n objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey],\n `Could not find object ${obj.$objectType} ${obj.$primaryKey}`,\n );\n return objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey];\n });\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"InterfaceListQuery.js","names":["groupBy","invariant","ObjectDefRef","UnderlyingOsdkObject","ListQuery","RDP_IDX","InterfaceListQuery","createObjectSet","store","rdpConfig","cacheKey","otherKeys","objectTypeDef","type","apiName","client","withProperties","where","canonicalWhere","revalidateObjectType","objectMetadata","fetchMetadata","interfaceMap","revalidate","postProcessFetchedData","data","reloadDataAsFullObjects","extractRelevantObjects","changes","matchesApiName","object","added","Array","from","addedObjects","filter","map","$as","modified","modifiedObjects","all","strictMatches","Set","sortaMatches","groups","x","$objectType","objectTypeToPrimaryKeyToObject","Object","fromEntries","Promise","entries","objects","objectDef","primaryKeyApiName","$in","$primaryKey","result","fetchPage","obj","process","env","NODE_ENV"],"sources":["InterfaceListQuery.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectSet, ObjectTypeDefinition, Osdk } from \"@osdk/api\";\nimport groupBy from \"object.groupby\";\nimport invariant from \"tiny-invariant\";\nimport type { Client } from \"../../../Client.js\";\nimport type { InterfaceHolder } from \"../../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport {\n ObjectDefRef,\n UnderlyingOsdkObject,\n} from \"../../../object/convertWireToOsdkObjects/InternalSymbols.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { Store } from \"../Store.js\";\nimport { ListQuery, RDP_IDX } from \"./ListQuery.js\";\n\ntype ExtractRelevantObjectsResult = Record<\"added\" | \"modified\", {\n all: (ObjectHolder | InterfaceHolder)[];\n strictMatches: Set<(ObjectHolder | InterfaceHolder)>;\n sortaMatches: Set<(ObjectHolder | InterfaceHolder)>;\n}>;\n\nexport class InterfaceListQuery extends ListQuery {\n protected createObjectSet(store: Store): ObjectSet<ObjectTypeDefinition> {\n const rdpConfig = this.cacheKey.otherKeys[RDP_IDX];\n const type: string = \"interface\" as const;\n const objectTypeDef = {\n type,\n apiName: this.apiName,\n } as ObjectTypeDefinition;\n\n if (rdpConfig != null) {\n return store.client(objectTypeDef)\n .withProperties(rdpConfig as Rdp)\n .where(this.canonicalWhere);\n }\n\n return store.client(objectTypeDef)\n .where(this.canonicalWhere);\n }\n\n async revalidateObjectType(apiName: string): Promise<void> {\n const objectMetadata = await this.store.client.fetchMetadata({\n type: \"object\",\n apiName,\n });\n\n if (this.apiName in objectMetadata.interfaceMap) {\n await this.revalidate(/* force */ true);\n }\n }\n\n protected async postProcessFetchedData(\n data: Osdk.Instance<any>[],\n ): Promise<Osdk.Instance<any>[]> {\n return reloadDataAsFullObjects(this.store.client, data);\n }\n\n protected extractRelevantObjects(\n changes: Changes,\n ): ExtractRelevantObjectsResult {\n const matchesApiName = ([, object]: [unknown, ObjectHolder]) => {\n return this.apiName in object[ObjectDefRef].interfaceMap;\n };\n\n const added = Array.from(changes.addedObjects).filter(matchesApiName).map((\n [, object],\n ) => object.$as(this.apiName));\n\n const modified = Array.from(changes.modifiedObjects).filter(matchesApiName)\n .map((\n [, object],\n ) => object.$as(this.apiName));\n\n return {\n added: {\n all: added,\n strictMatches: new Set(),\n sortaMatches: new Set(),\n },\n modified: {\n all: modified,\n strictMatches: new Set(),\n sortaMatches: new Set(),\n },\n };\n }\n}\n\n// Hopefully this can go away when we can just request the full object properties on first load\nasync function reloadDataAsFullObjects(\n client: Client,\n data: Osdk.Instance<any>[],\n) {\n const groups = groupBy(data, (x) => x.$objectType);\n const objectTypeToPrimaryKeyToObject = Object.fromEntries(\n await Promise.all(\n Object.entries(groups).map<\n Promise<\n [\n /** objectType **/ string,\n Record<string | number, Osdk.Instance<ObjectTypeDefinition>>,\n ]\n >\n >(async ([apiName, objects]) => {\n // to keep InternalSimpleOsdkInstance simple, we make both the `ObjectDefRef` and\n // the `InterfaceDefRef` optional but we know that the right one is on there\n // thus we can `!`\n const objectDef = (objects[0] as ObjectHolder)[UnderlyingOsdkObject][\n ObjectDefRef\n ]!;\n const where: SimpleWhereClause = {\n [objectDef.primaryKeyApiName]: {\n $in: objects.map(x => x.$primaryKey),\n },\n };\n\n const result = await client(\n objectDef as ObjectTypeDefinition,\n ).where(\n where as Parameters<ObjectSet<ObjectTypeDefinition>[\"where\"]>[0],\n ).fetchPage();\n return [\n apiName,\n Object.fromEntries(result.data.map(\n x => [x.$primaryKey, x],\n )),\n ];\n }),\n ),\n );\n\n data = data.map((obj) => {\n invariant(\n objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey],\n `Could not find object ${obj.$objectType} ${obj.$primaryKey}`,\n );\n return objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey];\n });\n\n return data;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,25 @@
1
- export {};
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ // Index constants for accessing otherKeys array elements
18
+ export const TYPE_IDX = 0;
19
+ export const API_NAME_IDX = 1;
20
+ export const WHERE_IDX = 2;
21
+ export const ORDER_BY_IDX = 3;
22
+ export const RDP_IDX = 4;
23
+ export const INTERSECT_IDX = 5;
24
+ export const PIVOT_IDX = 6;
2
25
  //# sourceMappingURL=ListCacheKey.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListCacheKey.js","names":[],"sources":["ListCacheKey.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { CollectionStorageData } from \"../base-list/BaseCollectionQuery.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { ListQuery } from \"./ListQuery.js\";\n\nexport interface ListStorageData extends CollectionStorageData {}\n\nexport interface ListCacheKey extends\n CacheKey<\n \"list\",\n ListStorageData,\n ListQuery,\n [\n type: \"object\" | \"interface\",\n apiName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n ]\n >\n{\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"ListCacheKey.js","names":["TYPE_IDX","API_NAME_IDX","WHERE_IDX","ORDER_BY_IDX","RDP_IDX","INTERSECT_IDX","PIVOT_IDX"],"sources":["ListCacheKey.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { CollectionStorageData } from \"../base-list/BaseCollectionQuery.js\";\nimport type { CacheKey } from \"../CacheKey.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { PivotInfo } from \"../PivotCanonicalizer.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { ListQuery } from \"./ListQuery.js\";\n\n// Index constants for accessing otherKeys array elements\nexport const TYPE_IDX = 0;\nexport const API_NAME_IDX = 1;\nexport const WHERE_IDX = 2;\nexport const ORDER_BY_IDX = 3;\nexport const RDP_IDX = 4;\nexport const INTERSECT_IDX = 5;\nexport const PIVOT_IDX = 6;\n\nexport interface ListStorageData extends CollectionStorageData {}\n\nexport interface ListCacheKey extends\n CacheKey<\n \"list\",\n ListStorageData,\n ListQuery,\n [\n type: \"object\" | \"interface\",\n apiName: string,\n whereClause: Canonical<SimpleWhereClause>,\n orderByClause: Canonical<Record<string, \"asc\" | \"desc\" | undefined>>,\n rdpConfig?: Canonical<Rdp> | undefined,\n intersectWith?:\n | Canonical<Array<Canonical<SimpleWhereClause>>>\n | undefined,\n pivotInfo?: Canonical<PivotInfo> | undefined,\n ]\n >\n{\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUA;AACA,OAAO,MAAMA,QAAQ,GAAG,CAAC;AACzB,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,SAAS,GAAG,CAAC;AAC1B,OAAO,MAAMC,YAAY,GAAG,CAAC;AAC7B,OAAO,MAAMC,OAAO,GAAG,CAAC;AACxB,OAAO,MAAMC,aAAa,GAAG,CAAC;AAC9B,OAAO,MAAMC,SAAS,GAAG,CAAC","ignoreList":[]}