@osdk/client 2.6.0-beta.1 → 2.6.0-beta.11

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 (456) hide show
  1. package/CHANGELOG.md +134 -0
  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/createClient.js +1 -1
  6. package/build/browser/createClient.js.map +1 -1
  7. package/build/browser/createClient.test.js +19 -1
  8. package/build/browser/createClient.test.js.map +1 -1
  9. package/build/browser/createMinimalClient.js +1 -1
  10. package/build/browser/createMinimalClient.js.map +1 -1
  11. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +2 -1
  12. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  13. package/build/browser/fetchMetadata.test.js +11 -0
  14. package/build/browser/fetchMetadata.test.js.map +1 -1
  15. package/build/browser/index.js.map +1 -1
  16. package/build/browser/internal/conversions/extractNamespace.js +22 -0
  17. package/build/browser/internal/conversions/extractNamespace.js.map +1 -0
  18. package/build/browser/internal/conversions/fullyQualifyPropName.js +26 -0
  19. package/build/browser/internal/conversions/fullyQualifyPropName.js.map +1 -0
  20. package/build/browser/internal/conversions/makeGeoFilterBbox.js +41 -0
  21. package/build/browser/internal/conversions/makeGeoFilterBbox.js.map +1 -0
  22. package/build/browser/internal/conversions/makeGeoFilterIntersects.js +29 -0
  23. package/build/browser/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
  24. package/build/browser/internal/conversions/makeGeoFilterPolygon.js +30 -0
  25. package/build/browser/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
  26. package/build/browser/internal/conversions/makeGeoFilterWithin.js +48 -0
  27. package/build/browser/internal/conversions/makeGeoFilterWithin.js.map +1 -0
  28. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +59 -105
  29. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  30. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
  31. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  32. package/build/browser/object/aggregate.js +2 -1
  33. package/build/browser/object/aggregate.js.map +1 -1
  34. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  35. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  36. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
  37. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  38. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
  39. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  40. package/build/browser/object/convertWireToOsdkObjects.test.js +12 -0
  41. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  42. package/build/browser/object/fetchPage.js +7 -4
  43. package/build/browser/object/fetchPage.js.map +1 -1
  44. package/build/browser/object/formatting/applyPropertyFormatter.js +58 -0
  45. package/build/browser/object/formatting/applyPropertyFormatter.js.map +1 -0
  46. package/build/browser/object/formatting/applyPropertyFormatter.test.js +726 -0
  47. package/build/browser/object/formatting/applyPropertyFormatter.test.js.map +1 -0
  48. package/build/browser/object/formatting/formatBoolean.js +23 -0
  49. package/build/browser/object/formatting/formatBoolean.js.map +1 -0
  50. package/build/browser/object/formatting/formatDateTime.js +158 -0
  51. package/build/browser/object/formatting/formatDateTime.js.map +1 -0
  52. package/build/browser/object/formatting/formatNumber.js +242 -0
  53. package/build/browser/object/formatting/formatNumber.js.map +1 -0
  54. package/build/browser/object/formatting/propertyFormattingUtils.js +39 -0
  55. package/build/browser/object/formatting/propertyFormattingUtils.js.map +1 -0
  56. package/build/browser/object/mediaUpload.js +1 -1
  57. package/build/browser/object/mediaUpload.js.map +1 -1
  58. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +17 -0
  59. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  60. package/build/browser/observable/ObservableClient.js.map +1 -1
  61. package/build/browser/observable/internal/BulkObjectLoader.js +12 -4
  62. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
  63. package/build/browser/observable/internal/BulkObjectLoader.test.js +48 -0
  64. package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -1
  65. package/build/browser/observable/internal/CacheKeys.js +9 -3
  66. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  67. package/build/browser/observable/internal/Canonicalizer.js +51 -0
  68. package/build/browser/observable/internal/Canonicalizer.js.map +1 -0
  69. package/build/browser/observable/internal/Changes.js.map +1 -1
  70. package/build/browser/observable/internal/IntersectCanonicalizer.js +35 -0
  71. package/build/browser/observable/internal/IntersectCanonicalizer.js.map +1 -0
  72. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
  73. package/build/browser/observable/internal/ObservableClientImpl.js +3 -0
  74. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  75. package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -4
  76. package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
  77. package/build/browser/observable/internal/PivotCanonicalizer.js +33 -0
  78. package/build/browser/observable/internal/PivotCanonicalizer.js.map +1 -0
  79. package/build/browser/observable/internal/RdpCanonicalizer.js +66 -0
  80. package/build/browser/observable/internal/RdpCanonicalizer.js.map +1 -0
  81. package/build/browser/observable/internal/RdpCanonicalizer.test.js +68 -0
  82. package/build/browser/observable/internal/RdpCanonicalizer.test.js.map +1 -0
  83. package/build/browser/observable/internal/SimpleWhereClause.js.map +1 -1
  84. package/build/browser/observable/internal/Store.js +172 -6
  85. package/build/browser/observable/internal/Store.js.map +1 -1
  86. package/build/browser/observable/internal/WhereClauseCanonicalizer.js +1 -1
  87. package/build/browser/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  88. package/build/browser/observable/internal/actions/ActionApplication.js +1 -1
  89. package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -1
  90. package/build/browser/observable/internal/actions/OptimisticJob.js +3 -3
  91. package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -1
  92. package/build/browser/observable/internal/aggregation/AggregationCacheKey.js +22 -0
  93. package/build/browser/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
  94. package/build/browser/observable/internal/aggregation/AggregationQuery.js +77 -0
  95. package/build/browser/observable/internal/aggregation/AggregationQuery.js.map +1 -0
  96. package/build/browser/observable/internal/aggregation/AggregationsHelper.js +54 -0
  97. package/build/browser/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
  98. package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
  99. package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
  100. package/build/browser/observable/internal/base-list/BaseListQuery.js +148 -6
  101. package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -1
  102. package/build/browser/observable/internal/base-list/createCollectionConnectable.js +0 -5
  103. package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  104. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
  105. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  106. package/build/browser/observable/internal/evaluateFilter.js +61 -0
  107. package/build/browser/observable/internal/evaluateFilter.js.map +1 -0
  108. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +33 -1
  109. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  110. package/build/browser/observable/internal/list/InterfaceListQuery.js +8 -3
  111. package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -1
  112. package/build/browser/observable/internal/list/ListCacheKey.js +24 -1
  113. package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -1
  114. package/build/browser/observable/internal/list/ListQuery.js +42 -64
  115. package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
  116. package/build/browser/observable/internal/list/ListQuery.test.js +243 -0
  117. package/build/browser/observable/internal/list/ListQuery.test.js.map +1 -0
  118. package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -1
  119. package/build/browser/observable/internal/list/ListsHelper.js +18 -8
  120. package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
  121. package/build/browser/observable/internal/list/ObjectListQuery.js +51 -3
  122. package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
  123. package/build/browser/observable/internal/object/ObjectCacheKey.js +20 -1
  124. package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -1
  125. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
  126. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
  127. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
  128. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
  129. package/build/browser/observable/internal/object/ObjectQuery.js +10 -58
  130. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
  131. package/build/browser/observable/internal/object/ObjectsHelper.js +65 -5
  132. package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
  133. package/build/browser/observable/internal/objectMatchesWhereClause.js +3 -37
  134. package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
  135. package/build/browser/observable/internal/objectset/ObjectSetHelper.js +5 -1
  136. package/build/browser/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
  137. package/build/browser/observable/internal/objectset/ObjectSetQuery.js +10 -1
  138. package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  139. package/build/browser/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
  140. package/build/browser/observable/internal/testUtils/invalidateList.js +6 -1
  141. package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -1
  142. package/build/browser/observable/internal/testUtils.js +5 -2
  143. package/build/browser/observable/internal/testUtils.js.map +1 -1
  144. package/build/browser/observable/internal/types/ObjectUpdate.js +2 -0
  145. package/build/browser/observable/internal/types/ObjectUpdate.js.map +1 -0
  146. package/build/browser/observable/internal/utils/rdpFieldOperations.js +83 -0
  147. package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -0
  148. package/build/browser/public/internal-node.js +18 -0
  149. package/build/browser/public/internal-node.js.map +1 -0
  150. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  151. package/build/browser/queries/applyQuery.js +2 -0
  152. package/build/browser/queries/applyQuery.js.map +1 -1
  153. package/build/browser/util/UserAgent.js +2 -2
  154. package/build/browser/util/UserAgent.js.map +1 -1
  155. package/build/browser/util/toDataValue.js +3 -2
  156. package/build/browser/util/toDataValue.js.map +1 -1
  157. package/build/browser/util/toDataValue.test.js +1 -1
  158. package/build/browser/util/toDataValue.test.js.map +1 -1
  159. package/build/browser/util/toDataValueQueries.js +2 -2
  160. package/build/browser/util/toDataValueQueries.js.map +1 -1
  161. package/build/cjs/chunk-6SCDLAU2.cjs +57 -0
  162. package/build/cjs/chunk-6SCDLAU2.cjs.map +1 -0
  163. package/build/cjs/{chunk-DCEFUXFS.cjs → chunk-RO7XAQOS.cjs} +421 -246
  164. package/build/cjs/chunk-RO7XAQOS.cjs.map +1 -0
  165. package/build/cjs/{chunk-BP7BR5FZ.cjs → chunk-VGO7XU6T.cjs} +610 -71
  166. package/build/cjs/chunk-VGO7XU6T.cjs.map +1 -0
  167. package/build/cjs/{delay-QK4T7RVX.cjs → delay-KIUUJ5NJ.cjs} +4 -3
  168. package/build/cjs/delay-KIUUJ5NJ.cjs.map +1 -0
  169. package/build/cjs/index.cjs +17 -9
  170. package/build/cjs/index.cjs.map +1 -1
  171. package/build/cjs/index.d.cts +1 -1
  172. package/build/cjs/public/internal-node.cjs +193767 -0
  173. package/build/cjs/public/internal-node.cjs.map +1 -0
  174. package/build/cjs/public/internal-node.d.cts +29 -0
  175. package/build/cjs/public/internal.cjs +16 -9
  176. package/build/cjs/public/internal.cjs.map +1 -1
  177. package/build/cjs/public/unstable-do-not-use.cjs +1751 -869
  178. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  179. package/build/cjs/public/unstable-do-not-use.d.cts +73 -6
  180. package/build/esm/Client.js +1 -1
  181. package/build/esm/Client.js.map +1 -1
  182. package/build/esm/MinimalClientContext.js.map +1 -1
  183. package/build/esm/createClient.js +1 -1
  184. package/build/esm/createClient.js.map +1 -1
  185. package/build/esm/createClient.test.js +19 -1
  186. package/build/esm/createClient.test.js.map +1 -1
  187. package/build/esm/createMinimalClient.js +1 -1
  188. package/build/esm/createMinimalClient.js.map +1 -1
  189. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +2 -1
  190. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  191. package/build/esm/fetchMetadata.test.js +11 -0
  192. package/build/esm/fetchMetadata.test.js.map +1 -1
  193. package/build/esm/index.js.map +1 -1
  194. package/build/esm/internal/conversions/extractNamespace.js +22 -0
  195. package/build/esm/internal/conversions/extractNamespace.js.map +1 -0
  196. package/build/esm/internal/conversions/fullyQualifyPropName.js +26 -0
  197. package/build/esm/internal/conversions/fullyQualifyPropName.js.map +1 -0
  198. package/build/esm/internal/conversions/makeGeoFilterBbox.js +41 -0
  199. package/build/esm/internal/conversions/makeGeoFilterBbox.js.map +1 -0
  200. package/build/esm/internal/conversions/makeGeoFilterIntersects.js +29 -0
  201. package/build/esm/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
  202. package/build/esm/internal/conversions/makeGeoFilterPolygon.js +30 -0
  203. package/build/esm/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
  204. package/build/esm/internal/conversions/makeGeoFilterWithin.js +48 -0
  205. package/build/esm/internal/conversions/makeGeoFilterWithin.js.map +1 -0
  206. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +59 -105
  207. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  208. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
  209. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  210. package/build/esm/object/aggregate.js +2 -1
  211. package/build/esm/object/aggregate.js.map +1 -1
  212. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  213. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  214. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
  215. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  216. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
  217. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  218. package/build/esm/object/convertWireToOsdkObjects.test.js +12 -0
  219. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  220. package/build/esm/object/fetchPage.js +7 -4
  221. package/build/esm/object/fetchPage.js.map +1 -1
  222. package/build/esm/object/formatting/applyPropertyFormatter.js +58 -0
  223. package/build/esm/object/formatting/applyPropertyFormatter.js.map +1 -0
  224. package/build/esm/object/formatting/applyPropertyFormatter.test.js +726 -0
  225. package/build/esm/object/formatting/applyPropertyFormatter.test.js.map +1 -0
  226. package/build/esm/object/formatting/formatBoolean.js +23 -0
  227. package/build/esm/object/formatting/formatBoolean.js.map +1 -0
  228. package/build/esm/object/formatting/formatDateTime.js +158 -0
  229. package/build/esm/object/formatting/formatDateTime.js.map +1 -0
  230. package/build/esm/object/formatting/formatNumber.js +242 -0
  231. package/build/esm/object/formatting/formatNumber.js.map +1 -0
  232. package/build/esm/object/formatting/propertyFormattingUtils.js +39 -0
  233. package/build/esm/object/formatting/propertyFormattingUtils.js.map +1 -0
  234. package/build/esm/object/mediaUpload.js +1 -1
  235. package/build/esm/object/mediaUpload.js.map +1 -1
  236. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +17 -0
  237. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  238. package/build/esm/observable/ObservableClient.js.map +1 -1
  239. package/build/esm/observable/internal/BulkObjectLoader.js +12 -4
  240. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
  241. package/build/esm/observable/internal/BulkObjectLoader.test.js +48 -0
  242. package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -1
  243. package/build/esm/observable/internal/CacheKeys.js +9 -3
  244. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  245. package/build/esm/observable/internal/Canonicalizer.js +51 -0
  246. package/build/esm/observable/internal/Canonicalizer.js.map +1 -0
  247. package/build/esm/observable/internal/Changes.js.map +1 -1
  248. package/build/esm/observable/internal/IntersectCanonicalizer.js +35 -0
  249. package/build/esm/observable/internal/IntersectCanonicalizer.js.map +1 -0
  250. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
  251. package/build/esm/observable/internal/ObservableClientImpl.js +3 -0
  252. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  253. package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -4
  254. package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
  255. package/build/esm/observable/internal/PivotCanonicalizer.js +33 -0
  256. package/build/esm/observable/internal/PivotCanonicalizer.js.map +1 -0
  257. package/build/esm/observable/internal/RdpCanonicalizer.js +66 -0
  258. package/build/esm/observable/internal/RdpCanonicalizer.js.map +1 -0
  259. package/build/esm/observable/internal/RdpCanonicalizer.test.js +68 -0
  260. package/build/esm/observable/internal/RdpCanonicalizer.test.js.map +1 -0
  261. package/build/esm/observable/internal/SimpleWhereClause.js.map +1 -1
  262. package/build/esm/observable/internal/Store.js +172 -6
  263. package/build/esm/observable/internal/Store.js.map +1 -1
  264. package/build/esm/observable/internal/WhereClauseCanonicalizer.js +1 -1
  265. package/build/esm/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  266. package/build/esm/observable/internal/actions/ActionApplication.js +1 -1
  267. package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -1
  268. package/build/esm/observable/internal/actions/OptimisticJob.js +3 -3
  269. package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -1
  270. package/build/esm/observable/internal/aggregation/AggregationCacheKey.js +22 -0
  271. package/build/esm/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
  272. package/build/esm/observable/internal/aggregation/AggregationQuery.js +77 -0
  273. package/build/esm/observable/internal/aggregation/AggregationQuery.js.map +1 -0
  274. package/build/esm/observable/internal/aggregation/AggregationsHelper.js +54 -0
  275. package/build/esm/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
  276. package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
  277. package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
  278. package/build/esm/observable/internal/base-list/BaseListQuery.js +148 -6
  279. package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -1
  280. package/build/esm/observable/internal/base-list/createCollectionConnectable.js +0 -5
  281. package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  282. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
  283. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  284. package/build/esm/observable/internal/evaluateFilter.js +61 -0
  285. package/build/esm/observable/internal/evaluateFilter.js.map +1 -0
  286. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +33 -1
  287. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  288. package/build/esm/observable/internal/list/InterfaceListQuery.js +8 -3
  289. package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -1
  290. package/build/esm/observable/internal/list/ListCacheKey.js +24 -1
  291. package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -1
  292. package/build/esm/observable/internal/list/ListQuery.js +42 -64
  293. package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
  294. package/build/esm/observable/internal/list/ListQuery.test.js +243 -0
  295. package/build/esm/observable/internal/list/ListQuery.test.js.map +1 -0
  296. package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -1
  297. package/build/esm/observable/internal/list/ListsHelper.js +18 -8
  298. package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
  299. package/build/esm/observable/internal/list/ObjectListQuery.js +51 -3
  300. package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
  301. package/build/esm/observable/internal/object/ObjectCacheKey.js +20 -1
  302. package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -1
  303. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
  304. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
  305. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
  306. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
  307. package/build/esm/observable/internal/object/ObjectQuery.js +10 -58
  308. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
  309. package/build/esm/observable/internal/object/ObjectsHelper.js +65 -5
  310. package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
  311. package/build/esm/observable/internal/objectMatchesWhereClause.js +3 -37
  312. package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
  313. package/build/esm/observable/internal/objectset/ObjectSetHelper.js +5 -1
  314. package/build/esm/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
  315. package/build/esm/observable/internal/objectset/ObjectSetQuery.js +10 -1
  316. package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  317. package/build/esm/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
  318. package/build/esm/observable/internal/testUtils/invalidateList.js +6 -1
  319. package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -1
  320. package/build/esm/observable/internal/testUtils.js +5 -2
  321. package/build/esm/observable/internal/testUtils.js.map +1 -1
  322. package/build/esm/observable/internal/types/ObjectUpdate.js +2 -0
  323. package/build/esm/observable/internal/types/ObjectUpdate.js.map +1 -0
  324. package/build/esm/observable/internal/utils/rdpFieldOperations.js +83 -0
  325. package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -0
  326. package/build/esm/public/internal-node.js +18 -0
  327. package/build/esm/public/internal-node.js.map +1 -0
  328. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  329. package/build/esm/queries/applyQuery.js +2 -0
  330. package/build/esm/queries/applyQuery.js.map +1 -1
  331. package/build/esm/util/UserAgent.js +2 -2
  332. package/build/esm/util/UserAgent.js.map +1 -1
  333. package/build/esm/util/toDataValue.js +3 -2
  334. package/build/esm/util/toDataValue.js.map +1 -1
  335. package/build/esm/util/toDataValue.test.js +1 -1
  336. package/build/esm/util/toDataValue.test.js.map +1 -1
  337. package/build/esm/util/toDataValueQueries.js +2 -2
  338. package/build/esm/util/toDataValueQueries.js.map +1 -1
  339. package/build/types/Client.d.ts +1 -1
  340. package/build/types/MinimalClientContext.d.ts +1 -1
  341. package/build/types/index.d.ts +1 -1
  342. package/build/types/index.d.ts.map +1 -1
  343. package/build/types/internal/conversions/extractNamespace.d.ts +1 -0
  344. package/build/types/internal/conversions/extractNamespace.d.ts.map +1 -0
  345. package/build/types/internal/conversions/fullyQualifyPropName.d.ts +2 -0
  346. package/build/types/internal/conversions/fullyQualifyPropName.d.ts.map +1 -0
  347. package/build/types/internal/conversions/makeGeoFilterBbox.d.ts +3 -0
  348. package/build/types/internal/conversions/makeGeoFilterBbox.d.ts.map +1 -0
  349. package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts +3 -0
  350. package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts.map +1 -0
  351. package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts +3 -0
  352. package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts.map +1 -0
  353. package/build/types/internal/conversions/makeGeoFilterWithin.d.ts +3 -0
  354. package/build/types/internal/conversions/makeGeoFilterWithin.d.ts.map +1 -0
  355. package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts +1 -1
  356. package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts.map +1 -1
  357. package/build/types/object/formatting/applyPropertyFormatter.d.ts +18 -0
  358. package/build/types/object/formatting/applyPropertyFormatter.d.ts.map +1 -0
  359. package/build/types/object/formatting/applyPropertyFormatter.test.d.ts +1 -0
  360. package/build/types/object/formatting/applyPropertyFormatter.test.d.ts.map +1 -0
  361. package/build/types/object/formatting/formatBoolean.d.ts +5 -0
  362. package/build/types/object/formatting/formatBoolean.d.ts.map +1 -0
  363. package/build/types/object/formatting/formatDateTime.d.ts +6 -0
  364. package/build/types/object/formatting/formatDateTime.d.ts.map +1 -0
  365. package/build/types/object/formatting/formatNumber.d.ts +15 -0
  366. package/build/types/object/formatting/formatNumber.d.ts.map +1 -0
  367. package/build/types/object/formatting/propertyFormattingUtils.d.ts +10 -0
  368. package/build/types/object/formatting/propertyFormattingUtils.d.ts.map +1 -0
  369. package/build/types/observable/ObservableClient.d.ts +76 -5
  370. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  371. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
  372. package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
  373. package/build/types/observable/internal/Canonicalizer.d.ts +37 -0
  374. package/build/types/observable/internal/Canonicalizer.d.ts.map +1 -0
  375. package/build/types/observable/internal/Changes.d.ts +4 -3
  376. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  377. package/build/types/observable/internal/IntersectCanonicalizer.d.ts +18 -0
  378. package/build/types/observable/internal/IntersectCanonicalizer.d.ts.map +1 -0
  379. package/build/types/observable/internal/KnownCacheKey.d.ts +2 -1
  380. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
  381. package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
  382. package/build/types/observable/internal/PivotCanonicalizer.d.ts +10 -0
  383. package/build/types/observable/internal/PivotCanonicalizer.d.ts.map +1 -0
  384. package/build/types/observable/internal/RdpCanonicalizer.d.ts +8 -0
  385. package/build/types/observable/internal/RdpCanonicalizer.d.ts.map +1 -0
  386. package/build/types/observable/internal/RdpCanonicalizer.test.d.ts +1 -0
  387. package/build/types/observable/internal/RdpCanonicalizer.test.d.ts.map +1 -0
  388. package/build/types/observable/internal/SimpleWhereClause.d.ts +6 -2
  389. package/build/types/observable/internal/SimpleWhereClause.d.ts.map +1 -1
  390. package/build/types/observable/internal/Store.d.ts +10 -0
  391. package/build/types/observable/internal/Store.d.ts.map +1 -1
  392. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts +5 -2
  393. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts.map +1 -1
  394. package/build/types/observable/internal/actions/ActionApplication.d.ts.map +1 -1
  395. package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts +12 -0
  396. package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts.map +1 -0
  397. package/build/types/observable/internal/aggregation/AggregationQuery.d.ts +49 -0
  398. package/build/types/observable/internal/aggregation/AggregationQuery.d.ts.map +1 -0
  399. package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts +37 -0
  400. package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts.map +1 -0
  401. package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts +5 -0
  402. package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts.map +1 -0
  403. package/build/types/observable/internal/base-list/BaseListQuery.d.ts +48 -2
  404. package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -1
  405. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts +1 -23
  406. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -1
  407. package/build/types/observable/internal/evaluateFilter.d.ts +6 -0
  408. package/build/types/observable/internal/evaluateFilter.d.ts.map +1 -0
  409. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +5 -0
  410. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -1
  411. package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -1
  412. package/build/types/observable/internal/list/ListCacheKey.d.ts +10 -1
  413. package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -1
  414. package/build/types/observable/internal/list/ListQuery.d.ts +12 -15
  415. package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
  416. package/build/types/observable/internal/list/ListQuery.test.d.ts +1 -0
  417. package/build/types/observable/internal/list/ListQuery.test.d.ts.map +1 -0
  418. package/build/types/observable/internal/list/ListQueryOptions.d.ts +10 -1
  419. package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -1
  420. package/build/types/observable/internal/list/ListsHelper.d.ts +7 -1
  421. package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
  422. package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
  423. package/build/types/observable/internal/object/ObjectCacheKey.d.ts +6 -1
  424. package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -1
  425. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts +60 -0
  426. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts.map +1 -0
  427. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts +1 -0
  428. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts.map +1 -0
  429. package/build/types/observable/internal/object/ObjectQuery.d.ts +1 -1
  430. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
  431. package/build/types/observable/internal/object/ObjectsHelper.d.ts +15 -1
  432. package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
  433. package/build/types/observable/internal/objectMatchesWhereClause.d.ts.map +1 -1
  434. package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts.map +1 -1
  435. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +2 -1
  436. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
  437. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts +16 -0
  438. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts.map +1 -1
  439. package/build/types/observable/internal/testUtils.d.ts +2 -2
  440. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  441. package/build/types/observable/internal/types/ObjectUpdate.d.ts +11 -0
  442. package/build/types/observable/internal/types/ObjectUpdate.d.ts.map +1 -0
  443. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts +5 -0
  444. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts.map +1 -0
  445. package/build/types/public/internal-node.d.ts +2 -0
  446. package/build/types/public/internal-node.d.ts.map +1 -0
  447. package/build/types/public/unstable-do-not-use.d.ts +1 -1
  448. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  449. package/build/types/queries/applyQuery.d.ts.map +1 -1
  450. package/internal-node.d.ts +17 -0
  451. package/package.json +18 -8
  452. package/build/cjs/chunk-BP7BR5FZ.cjs.map +0 -1
  453. package/build/cjs/chunk-DCEFUXFS.cjs.map +0 -1
  454. package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
  455. package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
  456. package/build/cjs/delay-QK4T7RVX.cjs.map +0 -1
@@ -14,12 +14,12 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import deepEqual from "fast-deep-equal";
18
17
  import { BehaviorSubject, connectable, map } from "rxjs";
19
18
  import { additionalContext } from "../../../Client.js";
20
19
  import { getBulkObjectLoader } from "../BulkObjectLoader.js";
21
20
  import { Query } from "../Query.js";
22
21
  import { tombstone } from "../tombstone.js";
22
+ import { RDP_CONFIG_IDX } from "./ObjectCacheKey.js";
23
23
  export class ObjectQuery extends Query {
24
24
  #apiName;
25
25
  #pk;
@@ -64,65 +64,17 @@ export class ObjectQuery extends Query {
64
64
  });
65
65
  }
66
66
  writeToStore(data, status, batch) {
67
- const entry = batch.read(this.cacheKey);
68
- if (entry && deepEqual(data, entry.value)) {
69
- // Check if both data AND status are the same
70
- if (entry.status === status) {
71
- if (process.env.NODE_ENV !== "production") {
72
- this.logger?.child({
73
- methodName: "writeToStore"
74
- }).debug(`Object was deep equal and status unchanged (${status}), skipping update`);
75
- }
76
- // Return the existing entry without writing to avoid unnecessary notifications
77
- return entry;
78
- }
79
- if (process.env.NODE_ENV !== "production") {
80
- this.logger?.child({
81
- methodName: "writeToStore"
82
- }).debug(`Object was deep equal, just setting status (old status: ${entry.status}, new status: ${status})`);
83
- }
84
- // must do a "full write" here so that the lastUpdated is updated but we
85
- // don't want to retrigger anyone's memoization on the value!
86
- return batch.write(this.cacheKey, entry.value, status);
87
- }
88
- if (process.env.NODE_ENV !== "production") {
89
- this.logger?.child({
90
- methodName: "writeToStore"
91
- }).debug(JSON.stringify({
92
- status
93
- }), data);
94
- }
95
- const ret = batch.write(this.cacheKey, data, status);
96
- batch.changes.registerObject(this.cacheKey, data, /* isNew */!entry);
97
- return ret;
67
+ batch.read(this.cacheKey);
68
+ const rdpConfig = this.cacheKey.otherKeys[RDP_CONFIG_IDX];
69
+ this.store.objectCacheKeyRegistry.register(this.cacheKey, this.#apiName, this.#pk, rdpConfig);
70
+ this.store.objects.propagateWrite(this.cacheKey, data, status, batch);
71
+ return batch.read(this.cacheKey);
98
72
  }
99
73
  deleteFromStore(status, batch) {
100
- const entry = batch.read(this.cacheKey);
101
- if (entry && deepEqual(tombstone, entry.value)) {
102
- if (process.env.NODE_ENV !== "production") {
103
- this.logger?.child({
104
- methodName: "deleteFromStore"
105
- }).debug(`Object was deep equal, just setting status`);
106
- }
107
- // must do a "full write" here so that the lastUpdated is updated but we
108
- // don't want to retrigger anyone's memoization on the value!
109
- return batch.write(this.cacheKey, entry.value, status);
110
- }
111
- if (process.env.NODE_ENV !== "production") {
112
- this.logger?.child({
113
- methodName: "deleteFromStore"
114
- }).debug(JSON.stringify({
115
- status
116
- }));
117
- }
118
-
119
- // if there is no entry then there is nothing to do
120
- if (!entry || !entry.value) {
121
- return;
122
- }
123
- const ret = batch.delete(this.cacheKey, status);
124
- batch.changes.deleteObject(this.cacheKey);
125
- return ret;
74
+ const rdpConfig = this.cacheKey.otherKeys[RDP_CONFIG_IDX];
75
+ this.store.objectCacheKeyRegistry.register(this.cacheKey, this.#apiName, this.#pk, rdpConfig);
76
+ this.store.objects.propagateWrite(this.cacheKey, tombstone, status, batch);
77
+ return batch.read(this.cacheKey);
126
78
  }
127
79
  invalidateObjectType = (objectType, changes) => {
128
80
  if (this.#apiName === objectType) {
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectQuery.js","names":["deepEqual","BehaviorSubject","connectable","map","additionalContext","getBulkObjectLoader","Query","tombstone","ObjectQuery","apiName","pk","constructor","store","subject","type","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","x","JSON","stringify","join","undefined","_createConnectable","pipe","status","object","value","lastUpdated","isOptimistic","connector","_fetchAndStore","methodName","debug","obj","fetch","batch","writeToStore","data","entry","read","write","ret","changes","registerObject","deleteFromStore","delete","deleteObject","invalidateObjectType","objectType","modified","add","revalidate","Promise","resolve"],"sources":["ObjectQuery.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 deepEqual from \"fast-deep-equal\";\nimport type { Connectable, Observable, Subject } from \"rxjs\";\nimport { BehaviorSubject, connectable, map } from \"rxjs\";\nimport { additionalContext } from \"../../../Client.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { ObjectPayload } from \"../../ObjectPayload.js\";\nimport type {\n CommonObserveOptions,\n Status,\n} from \"../../ObservableClient/common.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport { getBulkObjectLoader } from \"../BulkObjectLoader.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Entry } from \"../Layer.js\";\nimport { Query } from \"../Query.js\";\nimport type { Store } from \"../Store.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport { tombstone } from \"../tombstone.js\";\nimport type { ObjectCacheKey } from \"./ObjectCacheKey.js\";\n\nexport class ObjectQuery extends Query<\n ObjectCacheKey,\n ObjectPayload,\n CommonObserveOptions\n> {\n #apiName: string;\n #pk: string | number | boolean;\n\n constructor(\n store: Store,\n subject: Subject<SubjectPayload<ObjectCacheKey>>,\n type: string,\n pk: PrimaryKeyType<ObjectTypeDefinition>,\n cacheKey: ObjectCacheKey,\n opts: CommonObserveOptions,\n ) {\n super(\n store,\n subject,\n opts,\n cacheKey,\n process.env.NODE_ENV !== \"production\"\n ? (\n store.client[additionalContext].logger?.child({}, {\n msgPrefix: `ObjectQuery<${\n cacheKey.otherKeys.map(x => JSON.stringify(x)).join(\", \")\n }>`,\n })\n )\n : undefined,\n );\n this.#apiName = type;\n this.#pk = pk;\n }\n\n protected _createConnectable(\n subject: Observable<SubjectPayload<ObjectCacheKey>>,\n ): Connectable<ObjectPayload> {\n return connectable<ObjectPayload>(\n subject.pipe(\n map((x) => {\n return {\n status: x.status,\n object: x.value,\n lastUpdated: x.lastUpdated,\n isOptimistic: x.isOptimistic,\n };\n }),\n ),\n {\n connector: () =>\n new BehaviorSubject<ObjectPayload>({\n status: \"init\",\n object: undefined,\n lastUpdated: 0,\n isOptimistic: false,\n }),\n },\n );\n }\n\n async _fetchAndStore(): Promise<void> {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"_fetchAndStore\" }).debug(\n \"calling _fetchAndStore\",\n );\n }\n\n // TODO: In the future, implement tracking of network requests to ensure\n // we're not making unnecessary network calls. This would need dedicated\n // tests separate from subscription notification tests.\n\n const obj = await getBulkObjectLoader(this.store.client)\n .fetch(this.#apiName, this.#pk);\n\n this.store.batch({}, (batch) => {\n this.writeToStore(obj, \"loaded\", batch);\n });\n }\n\n writeToStore(\n data: ObjectHolder,\n status: Status,\n batch: BatchContext,\n ): Entry<ObjectCacheKey> {\n const entry = batch.read(this.cacheKey);\n\n if (entry && deepEqual(data, entry.value)) {\n // Check if both data AND status are the same\n if (entry.status === status) {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"writeToStore\" }).debug(\n `Object was deep equal and status unchanged (${status}), skipping update`,\n );\n }\n // Return the existing entry without writing to avoid unnecessary notifications\n return entry;\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"writeToStore\" }).debug(\n `Object was deep equal, just setting status (old status: ${entry.status}, new status: ${status})`,\n );\n }\n // must do a \"full write\" here so that the lastUpdated is updated but we\n // don't want to retrigger anyone's memoization on the value!\n return batch.write(this.cacheKey, entry.value, status);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"writeToStore\" }).debug(\n JSON.stringify({ status }),\n data,\n );\n }\n const ret = batch.write(this.cacheKey, data, status);\n batch.changes.registerObject(this.cacheKey, data, /* isNew */ !entry);\n\n return ret;\n }\n\n deleteFromStore(\n status: Status,\n batch: BatchContext,\n ): Entry<ObjectCacheKey> | undefined {\n const entry = batch.read(this.cacheKey);\n\n if (entry && deepEqual(tombstone, entry.value)) {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"deleteFromStore\" }).debug(\n `Object was deep equal, just setting status`,\n );\n }\n // must do a \"full write\" here so that the lastUpdated is updated but we\n // don't want to retrigger anyone's memoization on the value!\n return batch.write(this.cacheKey, entry.value, status);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"deleteFromStore\" }).debug(\n JSON.stringify({ status }),\n );\n }\n\n // if there is no entry then there is nothing to do\n if (!entry || !entry.value) {\n return;\n }\n\n const ret = batch.delete(this.cacheKey, status);\n batch.changes.deleteObject(this.cacheKey);\n\n return ret;\n }\n\n invalidateObjectType = (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (this.#apiName === objectType) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectQuery.js","names":["BehaviorSubject","connectable","map","additionalContext","getBulkObjectLoader","Query","tombstone","RDP_CONFIG_IDX","ObjectQuery","apiName","pk","constructor","store","subject","type","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","x","JSON","stringify","join","undefined","_createConnectable","pipe","status","object","value","lastUpdated","isOptimistic","connector","_fetchAndStore","methodName","debug","obj","fetch","batch","writeToStore","data","read","rdpConfig","objectCacheKeyRegistry","register","objects","propagateWrite","deleteFromStore","invalidateObjectType","objectType","changes","modified","add","revalidate","Promise","resolve"],"sources":["ObjectQuery.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 { Connectable, Observable, Subject } from \"rxjs\";\nimport { BehaviorSubject, connectable, map } from \"rxjs\";\nimport { additionalContext } from \"../../../Client.js\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { ObjectPayload } from \"../../ObjectPayload.js\";\nimport type {\n CommonObserveOptions,\n Status,\n} from \"../../ObservableClient/common.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport { getBulkObjectLoader } from \"../BulkObjectLoader.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Entry } from \"../Layer.js\";\nimport { Query } from \"../Query.js\";\nimport type { Store } from \"../Store.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport { tombstone } from \"../tombstone.js\";\nimport { type ObjectCacheKey, RDP_CONFIG_IDX } from \"./ObjectCacheKey.js\";\n\nexport class ObjectQuery extends Query<\n ObjectCacheKey,\n ObjectPayload,\n CommonObserveOptions\n> {\n #apiName: string;\n #pk: string | number | boolean;\n\n constructor(\n store: Store,\n subject: Subject<SubjectPayload<ObjectCacheKey>>,\n type: string,\n pk: PrimaryKeyType<ObjectTypeDefinition>,\n cacheKey: ObjectCacheKey,\n opts: CommonObserveOptions,\n ) {\n super(\n store,\n subject,\n opts,\n cacheKey,\n process.env.NODE_ENV !== \"production\"\n ? (\n store.client[additionalContext].logger?.child({}, {\n msgPrefix: `ObjectQuery<${\n cacheKey.otherKeys.map(x => JSON.stringify(x)).join(\", \")\n }>`,\n })\n )\n : undefined,\n );\n this.#apiName = type;\n this.#pk = pk;\n }\n\n protected _createConnectable(\n subject: Observable<SubjectPayload<ObjectCacheKey>>,\n ): Connectable<ObjectPayload> {\n return connectable<ObjectPayload>(\n subject.pipe(\n map((x) => {\n return {\n status: x.status,\n object: x.value,\n lastUpdated: x.lastUpdated,\n isOptimistic: x.isOptimistic,\n };\n }),\n ),\n {\n connector: () =>\n new BehaviorSubject<ObjectPayload>({\n status: \"init\",\n object: undefined,\n lastUpdated: 0,\n isOptimistic: false,\n }),\n },\n );\n }\n\n async _fetchAndStore(): Promise<void> {\n if (process.env.NODE_ENV !== \"production\") {\n this.logger?.child({ methodName: \"_fetchAndStore\" }).debug(\n \"calling _fetchAndStore\",\n );\n }\n\n // TODO: In the future, implement tracking of network requests to ensure\n // we're not making unnecessary network calls. This would need dedicated\n // tests separate from subscription notification tests.\n\n const obj = await getBulkObjectLoader(this.store.client)\n .fetch(this.#apiName, this.#pk);\n\n this.store.batch({}, (batch) => {\n this.writeToStore(obj, \"loaded\", batch);\n });\n }\n\n writeToStore(\n data: ObjectHolder,\n status: Status,\n batch: BatchContext,\n ): Entry<ObjectCacheKey> {\n const entry = batch.read(this.cacheKey);\n const rdpConfig = this.cacheKey.otherKeys[RDP_CONFIG_IDX];\n\n this.store.objectCacheKeyRegistry.register(\n this.cacheKey,\n this.#apiName,\n this.#pk,\n rdpConfig,\n );\n\n this.store.objects.propagateWrite(this.cacheKey, data, status, batch);\n\n return batch.read(this.cacheKey)!;\n }\n\n deleteFromStore(\n status: Status,\n batch: BatchContext,\n ): Entry<ObjectCacheKey> | undefined {\n const rdpConfig = this.cacheKey.otherKeys[RDP_CONFIG_IDX];\n\n this.store.objectCacheKeyRegistry.register(\n this.cacheKey,\n this.#apiName,\n this.#pk,\n rdpConfig,\n );\n\n this.store.objects.propagateWrite(\n this.cacheKey,\n tombstone,\n status,\n batch,\n );\n\n return batch.read(this.cacheKey);\n }\n\n invalidateObjectType = (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (this.#apiName === objectType) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,18 +14,21 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import deepEqual from "fast-deep-equal";
17
18
  import { AbstractHelper } from "../AbstractHelper.js";
19
+ import { tombstone } from "../tombstone.js";
20
+ import { mergeObjectFields } from "../utils/rdpFieldOperations.js";
18
21
  import { ObjectQuery } from "./ObjectQuery.js";
19
22
  export class ObjectsHelper extends AbstractHelper {
20
23
  observe(options, subFn) {
21
24
  return super.observe(options, subFn);
22
25
  }
23
- getQuery(options) {
26
+ getQuery(options, rdpConfig) {
24
27
  const apiName = typeof options.apiName === "string" ? options.apiName : options.apiName.apiName;
25
28
  const {
26
29
  pk
27
30
  } = options;
28
- const objectCacheKey = this.cacheKeys.get("object", apiName, pk);
31
+ const objectCacheKey = this.cacheKeys.get("object", apiName, pk, rdpConfig ?? undefined);
29
32
  return this.store.queries.get(objectCacheKey, () => new ObjectQuery(this.store, this.store.subjects.get(objectCacheKey), apiName, pk, objectCacheKey, {
30
33
  dedupeInterval: 0
31
34
  }));
@@ -33,16 +36,73 @@ export class ObjectsHelper extends AbstractHelper {
33
36
 
34
37
  /**
35
38
  * Internal helper method for writing objects to the store and returning their
36
- * object keys
39
+ * object keys. For list queries with RDPs, the rdpConfig is included in the
40
+ * cache key to ensure proper data isolation.
37
41
  * @internal
38
42
  */
39
- storeOsdkInstances(values, batch) {
43
+ storeOsdkInstances(values, batch, rdpConfig) {
40
44
  // update the cache for any object that has changed
41
45
  // and save the mapped values to return
42
46
  return values.map(v => this.getQuery({
43
47
  apiName: v.$apiName,
44
48
  pk: v.$primaryKey
45
- }).writeToStore(v, "loaded", batch).cacheKey);
49
+ }, rdpConfig).writeToStore(v, "loaded", batch).cacheKey);
50
+ }
51
+
52
+ /**
53
+ * Write an object to cache and propagate to all related cache keys
54
+ * @internal
55
+ */
56
+ propagateWrite(sourceCacheKey, value, status, batch) {
57
+ const existing = batch.read(sourceCacheKey);
58
+ const dataChanged = !existing || existing.value === undefined || value === tombstone || !deepEqual(existing.value, value);
59
+ const statusChanged = !existing || existing.status !== status;
60
+ if (!dataChanged && !statusChanged) {
61
+ return;
62
+ }
63
+ const valueToWrite = !dataChanged && existing ? existing.value : value;
64
+ batch.write(sourceCacheKey, valueToWrite, status);
65
+ if (value !== tombstone) {
66
+ batch.changes.registerObject(sourceCacheKey, value, !existing);
67
+ }
68
+ const metadata = this.store.objectCacheKeyRegistry.getMetadata(sourceCacheKey);
69
+ const relatedKeys = metadata ? this.store.objectCacheKeyRegistry.getVariants(metadata.apiName, metadata.primaryKey) : new Set([sourceCacheKey]);
70
+ for (const targetKey of relatedKeys) {
71
+ if (targetKey === sourceCacheKey || !this.isKeyActive(targetKey)) {
72
+ continue;
73
+ }
74
+ if (value === tombstone) {
75
+ batch.write(targetKey, tombstone, status);
76
+ continue;
77
+ }
78
+ const targetCurrentValue = batch.read(targetKey)?.value;
79
+ const merged = this.mergeForTarget(value, targetCurrentValue && this.isObjectHolder(targetCurrentValue) ? targetCurrentValue : undefined, sourceCacheKey, targetKey);
80
+ batch.write(targetKey, merged, status);
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Check if a cache key is actively observed
86
+ */
87
+ isKeyActive(key) {
88
+ const subject = this.store.subjects.peek(key);
89
+ return subject?.observed === true;
90
+ }
91
+
92
+ /**
93
+ * Type guard to check if a value is an ObjectHolder
94
+ */
95
+ isObjectHolder(value) {
96
+ return value != null && typeof value === "object" && "$apiName" in value && "$primaryKey" in value;
97
+ }
98
+
99
+ /**
100
+ * Merge object data for a specific target cache key, preserving RDP fields
101
+ */
102
+ mergeForTarget(sourceValue, targetCurrentValue, sourceCacheKey, targetCacheKey) {
103
+ const sourceRdpFields = this.store.objectCacheKeyRegistry.getRdpFieldSet(sourceCacheKey);
104
+ const targetRdpFields = this.store.objectCacheKeyRegistry.getRdpFieldSet(targetCacheKey);
105
+ return mergeObjectFields(sourceValue, sourceRdpFields, targetRdpFields, targetCurrentValue);
46
106
  }
47
107
  }
48
108
  //# sourceMappingURL=ObjectsHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectsHelper.js","names":["AbstractHelper","ObjectQuery","ObjectsHelper","observe","options","subFn","getQuery","apiName","pk","objectCacheKey","cacheKeys","get","store","queries","subjects","dedupeInterval","storeOsdkInstances","values","batch","map","v","$apiName","$primaryKey","writeToStore","cacheKey"],"sources":["ObjectsHelper.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 InterfaceDefinition,\n ObjectTypeDefinition,\n Osdk,\n} from \"@osdk/api\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { ObjectPayload } from \"../../ObjectPayload.js\";\nimport type { ObserveObjectOptions } from \"../../ObservableClient.js\";\nimport type { Observer } from \"../../ObservableClient/common.js\";\nimport { AbstractHelper } from \"../AbstractHelper.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport type { QuerySubscription } from \"../QuerySubscription.js\";\nimport { type ObjectCacheKey } from \"./ObjectCacheKey.js\";\nimport { ObjectQuery } from \"./ObjectQuery.js\";\n\nexport class ObjectsHelper extends AbstractHelper<\n ObjectQuery,\n ObserveObjectOptions<any>\n> {\n observe<T extends ObjectTypeDefinition | InterfaceDefinition>(\n options: ObserveObjectOptions<T>,\n subFn: Observer<ObjectPayload>,\n ): QuerySubscription<ObjectQuery> {\n return super.observe(options, subFn);\n }\n\n getQuery<T extends ObjectTypeDefinition | InterfaceDefinition>(\n options: ObserveObjectOptions<T>,\n ): ObjectQuery {\n const apiName = typeof options.apiName === \"string\"\n ? options.apiName\n : options.apiName.apiName;\n const { pk } = options;\n\n const objectCacheKey = this.cacheKeys.get<ObjectCacheKey>(\n \"object\",\n apiName,\n pk,\n );\n\n return this.store.queries.get(objectCacheKey, () =>\n new ObjectQuery(\n this.store,\n this.store.subjects.get(objectCacheKey),\n apiName,\n pk,\n objectCacheKey,\n { dedupeInterval: 0 },\n ));\n }\n\n /**\n * Internal helper method for writing objects to the store and returning their\n * object keys\n * @internal\n */\n public storeOsdkInstances(\n values: Array<ObjectHolder> | Array<Osdk.Instance<any, any, any>>,\n batch: BatchContext,\n ): ObjectCacheKey[] {\n // update the cache for any object that has changed\n // and save the mapped values to return\n return values.map(v =>\n this.getQuery({\n apiName: v.$apiName,\n pk: v.$primaryKey as string | number,\n }).writeToStore(\n v as ObjectHolder,\n \"loaded\",\n batch,\n ).cacheKey\n );\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA,SAASA,cAAc,QAAQ,sBAAsB;AAIrD,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,OAAO,MAAMC,aAAa,SAASF,cAAc,CAG/C;EACAG,OAAOA,CACLC,OAAgC,EAChCC,KAA8B,EACE;IAChC,OAAO,KAAK,CAACF,OAAO,CAACC,OAAO,EAAEC,KAAK,CAAC;EACtC;EAEAC,QAAQA,CACNF,OAAgC,EACnB;IACb,MAAMG,OAAO,GAAG,OAAOH,OAAO,CAACG,OAAO,KAAK,QAAQ,GAC/CH,OAAO,CAACG,OAAO,GACfH,OAAO,CAACG,OAAO,CAACA,OAAO;IAC3B,MAAM;MAAEC;IAAG,CAAC,GAAGJ,OAAO;IAEtB,MAAMK,cAAc,GAAG,IAAI,CAACC,SAAS,CAACC,GAAG,CACvC,QAAQ,EACRJ,OAAO,EACPC,EACF,CAAC;IAED,OAAO,IAAI,CAACI,KAAK,CAACC,OAAO,CAACF,GAAG,CAACF,cAAc,EAAE,MAC5C,IAAIR,WAAW,CACb,IAAI,CAACW,KAAK,EACV,IAAI,CAACA,KAAK,CAACE,QAAQ,CAACH,GAAG,CAACF,cAAc,CAAC,EACvCF,OAAO,EACPC,EAAE,EACFC,cAAc,EACd;MAAEM,cAAc,EAAE;IAAE,CACtB,CAAC,CAAC;EACN;;EAEA;AACF;AACA;AACA;AACA;EACSC,kBAAkBA,CACvBC,MAAiE,EACjEC,KAAmB,EACD;IAClB;IACA;IACA,OAAOD,MAAM,CAACE,GAAG,CAACC,CAAC,IACjB,IAAI,CAACd,QAAQ,CAAC;MACZC,OAAO,EAAEa,CAAC,CAACC,QAAQ;MACnBb,EAAE,EAAEY,CAAC,CAACE;IACR,CAAC,CAAC,CAACC,YAAY,CACbH,CAAC,EACD,QAAQ,EACRF,KACF,CAAC,CAACM,QACJ,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"file":"ObjectsHelper.js","names":["deepEqual","AbstractHelper","tombstone","mergeObjectFields","ObjectQuery","ObjectsHelper","observe","options","subFn","getQuery","rdpConfig","apiName","pk","objectCacheKey","cacheKeys","get","undefined","store","queries","subjects","dedupeInterval","storeOsdkInstances","values","batch","map","v","$apiName","$primaryKey","writeToStore","cacheKey","propagateWrite","sourceCacheKey","value","status","existing","read","dataChanged","statusChanged","valueToWrite","write","changes","registerObject","metadata","objectCacheKeyRegistry","getMetadata","relatedKeys","getVariants","primaryKey","Set","targetKey","isKeyActive","targetCurrentValue","merged","mergeForTarget","isObjectHolder","key","subject","peek","observed","sourceValue","targetCacheKey","sourceRdpFields","getRdpFieldSet","targetRdpFields"],"sources":["ObjectsHelper.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 InterfaceDefinition,\n ObjectTypeDefinition,\n Osdk,\n} from \"@osdk/api\";\nimport deepEqual from \"fast-deep-equal\";\nimport type { ObjectHolder } from \"../../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { ObjectPayload } from \"../../ObjectPayload.js\";\nimport type { ObserveObjectOptions } from \"../../ObservableClient.js\";\nimport type { Observer, Status } from \"../../ObservableClient/common.js\";\nimport { AbstractHelper } from \"../AbstractHelper.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { QuerySubscription } from \"../QuerySubscription.js\";\nimport type { Rdp } from \"../RdpCanonicalizer.js\";\nimport { tombstone } from \"../tombstone.js\";\nimport { mergeObjectFields } from \"../utils/rdpFieldOperations.js\";\nimport { type ObjectCacheKey } from \"./ObjectCacheKey.js\";\nimport { ObjectQuery } from \"./ObjectQuery.js\";\n\nexport class ObjectsHelper extends AbstractHelper<\n ObjectQuery,\n ObserveObjectOptions<any>\n> {\n observe<T extends ObjectTypeDefinition | InterfaceDefinition>(\n options: ObserveObjectOptions<T>,\n subFn: Observer<ObjectPayload>,\n ): QuerySubscription<ObjectQuery> {\n return super.observe(options, subFn);\n }\n\n getQuery<T extends ObjectTypeDefinition | InterfaceDefinition>(\n options: ObserveObjectOptions<T>,\n rdpConfig?: Canonical<Rdp> | null,\n ): ObjectQuery {\n const apiName = typeof options.apiName === \"string\"\n ? options.apiName\n : options.apiName.apiName;\n const { pk } = options;\n\n const objectCacheKey = this.cacheKeys.get<ObjectCacheKey>(\n \"object\",\n apiName,\n pk,\n rdpConfig ?? undefined,\n );\n\n return this.store.queries.get(objectCacheKey, () =>\n new ObjectQuery(\n this.store,\n this.store.subjects.get(objectCacheKey),\n apiName,\n pk,\n objectCacheKey,\n { dedupeInterval: 0 },\n ));\n }\n\n /**\n * Internal helper method for writing objects to the store and returning their\n * object keys. For list queries with RDPs, the rdpConfig is included in the\n * cache key to ensure proper data isolation.\n * @internal\n */\n public storeOsdkInstances(\n values: Array<ObjectHolder> | Array<Osdk.Instance<any, any, any>>,\n batch: BatchContext,\n rdpConfig?: Canonical<Rdp> | null,\n ): ObjectCacheKey[] {\n // update the cache for any object that has changed\n // and save the mapped values to return\n return values.map(v =>\n this.getQuery({\n apiName: v.$apiName,\n pk: v.$primaryKey as string | number,\n }, rdpConfig).writeToStore(\n v as ObjectHolder,\n \"loaded\",\n batch,\n ).cacheKey\n );\n }\n\n /**\n * Write an object to cache and propagate to all related cache keys\n * @internal\n */\n public propagateWrite(\n sourceCacheKey: ObjectCacheKey,\n value: ObjectHolder | typeof tombstone,\n status: Status,\n batch: BatchContext,\n ): void {\n const existing = batch.read(sourceCacheKey);\n const dataChanged = !existing\n || existing.value === undefined\n || value === tombstone\n || !deepEqual(existing.value, value);\n const statusChanged = !existing || existing.status !== status;\n\n if (!dataChanged && !statusChanged) {\n return;\n }\n\n const valueToWrite = !dataChanged && existing ? existing.value : value;\n batch.write(sourceCacheKey, valueToWrite, status);\n\n if (value !== tombstone) {\n batch.changes.registerObject(sourceCacheKey, value, !existing);\n }\n\n const metadata = this.store.objectCacheKeyRegistry.getMetadata(\n sourceCacheKey,\n );\n\n const relatedKeys = metadata\n ? this.store.objectCacheKeyRegistry.getVariants(\n metadata.apiName,\n metadata.primaryKey,\n )\n : new Set([sourceCacheKey]);\n\n for (const targetKey of relatedKeys) {\n if (targetKey === sourceCacheKey || !this.isKeyActive(targetKey)) {\n continue;\n }\n\n if (value === tombstone) {\n batch.write(targetKey, tombstone, status);\n continue;\n }\n\n const targetCurrentValue = batch.read(targetKey)?.value;\n const merged = this.mergeForTarget(\n value,\n targetCurrentValue && this.isObjectHolder(targetCurrentValue)\n ? targetCurrentValue\n : undefined,\n sourceCacheKey,\n targetKey,\n );\n\n batch.write(targetKey, merged, status);\n }\n }\n\n /**\n * Check if a cache key is actively observed\n */\n private isKeyActive(key: ObjectCacheKey): boolean {\n const subject = this.store.subjects.peek(key);\n return subject?.observed === true;\n }\n\n /**\n * Type guard to check if a value is an ObjectHolder\n */\n private isObjectHolder(\n value: ObjectHolder | undefined,\n ): value is ObjectHolder {\n return value != null\n && typeof value === \"object\"\n && \"$apiName\" in value\n && \"$primaryKey\" in value;\n }\n\n /**\n * Merge object data for a specific target cache key, preserving RDP fields\n */\n private mergeForTarget(\n sourceValue: ObjectHolder,\n targetCurrentValue: ObjectHolder | undefined,\n sourceCacheKey: ObjectCacheKey,\n targetCacheKey: ObjectCacheKey,\n ): ObjectHolder {\n const sourceRdpFields = this.store.objectCacheKeyRegistry.getRdpFieldSet(\n sourceCacheKey,\n );\n const targetRdpFields = this.store.objectCacheKeyRegistry.getRdpFieldSet(\n targetCacheKey,\n );\n\n return mergeObjectFields(\n sourceValue,\n sourceRdpFields,\n targetRdpFields,\n targetCurrentValue,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@
16
16
 
17
17
  import deepEqual from "fast-deep-equal";
18
18
  import invariant from "tiny-invariant";
19
+ import { evaluateFilter } from "./evaluateFilter.js";
19
20
  function is$and(whereClause) {
20
21
  if (process.env.NODE_ENV !== "production") {
21
22
  if ("$and" in whereClause) {
@@ -56,46 +57,11 @@ export function objectSortaMatchesWhereClause(o, whereClause, strict) {
56
57
  return !objectSortaMatchesWhereClause(o, whereClause.$not, strict);
57
58
  }
58
59
  return Object.entries(whereClause).every(([key, filter]) => {
59
- if (typeof filter === "object") {
60
+ if (typeof filter === "object" && filter != null) {
60
61
  const realValue = o[key];
61
62
  const [f] = Object.keys(filter);
62
63
  const expected = filter[f];
63
- switch (f) {
64
- case "$eq":
65
- return realValue === expected;
66
- case "$gt":
67
- return realValue > expected;
68
- case "$lt":
69
- return realValue < expected;
70
- case "$gte":
71
- return realValue >= expected;
72
- case "$lte":
73
- return realValue <= expected;
74
- case "$ne":
75
- return realValue !== expected;
76
- case "$in":
77
- return expected.$in.includes(realValue);
78
- case "$isNull":
79
- return realValue == null;
80
- case "$startsWith":
81
- return realValue.startsWith(expected);
82
- case "$contains":
83
- case "$containsAllTerms":
84
- case "$containsAllTermsInOrder":
85
- case "$containsAnyTerm":
86
- case "$intersects":
87
- case "$within":
88
- // for these we will strictly say no and loosely say yes
89
- // so that they don't change things now but may if reloaded
90
- return !strict;
91
- default:
92
- // same thing here as the above cases but we will catch the
93
- // exhaustive check in dev
94
- if (process.env.NODE_ENV !== "production") {
95
- process.env.NODE_ENV !== "production" ? invariant(false, `Unknown where filter ${f}`) : invariant(false);
96
- }
97
- return !strict;
98
- }
64
+ return evaluateFilter(f, realValue, expected, strict);
99
65
  }
100
66
  if (key in o) {
101
67
  if (o[key] === filter) {
@@ -1 +1 @@
1
- {"version":3,"file":"objectMatchesWhereClause.js","names":["deepEqual","invariant","is$and","whereClause","process","env","NODE_ENV","Array","isArray","$and","Object","keys","length","is$or","$or","is$not","objectSortaMatchesWhereClause","o","strict","every","w","some","$not","entries","key","filter","realValue","f","expected","$in","includes","startsWith"],"sources":["objectMatchesWhereClause.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 deepEqual from \"fast-deep-equal\";\nimport invariant from \"tiny-invariant\";\nimport type { InterfaceHolder } from \"../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport type { ObjectHolder } from \"../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport type { SimpleWhereClause } from \"./SimpleWhereClause.js\";\n\nfunction is$and(\n whereClause: SimpleWhereClause,\n): whereClause is { $and: SimpleWhereClause[] } {\n if (process.env.NODE_ENV !== \"production\") {\n if (\"$and\" in whereClause) {\n invariant(\n Array.isArray(whereClause.$and),\n \"expected $and to be an array\",\n );\n invariant(\n Object.keys(whereClause).length === 1,\n \"expected only $and to be present\",\n );\n }\n }\n return \"$and\" in whereClause;\n}\n\nfunction is$or(\n whereClause: SimpleWhereClause,\n): whereClause is { $or: SimpleWhereClause[] } {\n if (process.env.NODE_ENV !== \"production\") {\n if (\"$or\" in whereClause) {\n invariant(\n Array.isArray(whereClause.$or),\n \"expected $or to be an array\",\n );\n invariant(\n Object.keys(whereClause).length === 1,\n \"expected only $or to be present\",\n );\n }\n }\n return \"$or\" in whereClause;\n}\n\nfunction is$not(\n whereClause: SimpleWhereClause,\n): whereClause is { $not: SimpleWhereClause } {\n if (process.env.NODE_ENV !== \"production\") {\n if (\"$not\" in whereClause) {\n invariant(\n Object.keys(whereClause).length === 1,\n \"expected only $not to be present\",\n );\n }\n }\n\n return \"$not\" in whereClause;\n}\n\nexport function objectSortaMatchesWhereClause(\n o: ObjectHolder | InterfaceHolder,\n whereClause: SimpleWhereClause,\n strict: boolean,\n): boolean {\n if (deepEqual({}, whereClause)) {\n return true;\n }\n\n if (is$and(whereClause)) {\n return whereClause.$and.every(w =>\n objectSortaMatchesWhereClause(o, w, strict)\n );\n }\n if (is$or(whereClause)) {\n return whereClause.$or.some(w =>\n objectSortaMatchesWhereClause(o, w, strict)\n );\n }\n if (is$not(whereClause)) {\n return !objectSortaMatchesWhereClause(o, whereClause.$not, strict);\n }\n\n return Object.entries(whereClause).every(([key, filter]) => {\n if (typeof filter === \"object\") {\n const realValue: any = o[key as keyof typeof o];\n const [f] = Object.keys(filter) as Array<PossibleWhereClauseFilters>;\n const expected = (filter as any)[f];\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(\n expected,\n );\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\n if (key in o) {\n if (o[key as keyof typeof o] === filter) {\n return true;\n }\n }\n return false;\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"objectMatchesWhereClause.js","names":["deepEqual","invariant","evaluateFilter","is$and","whereClause","process","env","NODE_ENV","Array","isArray","$and","Object","keys","length","is$or","$or","is$not","objectSortaMatchesWhereClause","o","strict","every","w","some","$not","entries","key","filter","realValue","f","expected"],"sources":["objectMatchesWhereClause.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 deepEqual from \"fast-deep-equal\";\nimport invariant from \"tiny-invariant\";\nimport type { InterfaceHolder } from \"../../object/convertWireToOsdkObjects/InterfaceHolder.js\";\nimport type { ObjectHolder } from \"../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport { evaluateFilter } from \"./evaluateFilter.js\";\nimport type { SimpleWhereClause } from \"./SimpleWhereClause.js\";\n\nfunction is$and(\n whereClause: SimpleWhereClause,\n): whereClause is { $and: SimpleWhereClause[] } {\n if (process.env.NODE_ENV !== \"production\") {\n if (\"$and\" in whereClause) {\n invariant(\n Array.isArray(whereClause.$and),\n \"expected $and to be an array\",\n );\n invariant(\n Object.keys(whereClause).length === 1,\n \"expected only $and to be present\",\n );\n }\n }\n return \"$and\" in whereClause;\n}\n\nfunction is$or(\n whereClause: SimpleWhereClause,\n): whereClause is { $or: SimpleWhereClause[] } {\n if (process.env.NODE_ENV !== \"production\") {\n if (\"$or\" in whereClause) {\n invariant(\n Array.isArray(whereClause.$or),\n \"expected $or to be an array\",\n );\n invariant(\n Object.keys(whereClause).length === 1,\n \"expected only $or to be present\",\n );\n }\n }\n return \"$or\" in whereClause;\n}\n\nfunction is$not(\n whereClause: SimpleWhereClause,\n): whereClause is { $not: SimpleWhereClause } {\n if (process.env.NODE_ENV !== \"production\") {\n if (\"$not\" in whereClause) {\n invariant(\n Object.keys(whereClause).length === 1,\n \"expected only $not to be present\",\n );\n }\n }\n\n return \"$not\" in whereClause;\n}\n\nexport function objectSortaMatchesWhereClause(\n o: ObjectHolder | InterfaceHolder,\n whereClause: SimpleWhereClause,\n strict: boolean,\n): boolean {\n if (deepEqual({}, whereClause)) {\n return true;\n }\n\n if (is$and(whereClause)) {\n return whereClause.$and.every(w =>\n objectSortaMatchesWhereClause(o, w, strict)\n );\n }\n if (is$or(whereClause)) {\n return whereClause.$or.some(w =>\n objectSortaMatchesWhereClause(o, w, strict)\n );\n }\n if (is$not(whereClause)) {\n return !objectSortaMatchesWhereClause(o, whereClause.$not, strict);\n }\n\n return Object.entries(whereClause).every(([key, filter]) => {\n if (typeof filter === \"object\" && filter != null) {\n const realValue: any = o[key as keyof typeof o];\n const [f] = Object.keys(filter) as Array<PossibleWhereClauseFilters>;\n const expected = (filter as any)[f];\n return evaluateFilter(f, realValue, expected, strict);\n }\n\n if (key in o) {\n if (o[key as keyof typeof o] === filter) {\n return true;\n }\n }\n return false;\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,11 @@ export class ObjectSetHelper extends AbstractHelper {
24
24
  this.orderByCanonicalizer = orderByCanonicalizer;
25
25
  }
26
26
  observe(options, subFn) {
27
- return super.observe(options, subFn);
27
+ const ret = super.observe(options, subFn);
28
+ if (options.streamUpdates) {
29
+ ret.query.registerStreamUpdates(ret.subscription);
30
+ }
31
+ return ret;
28
32
  }
29
33
  getQuery(options) {
30
34
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetHelper.js","names":["getWireObjectSet","AbstractHelper","ObjectSetQuery","ObjectSetHelper","constructor","store","cacheKeys","whereCanonicalizer","orderByCanonicalizer","observe","options","subFn","getQuery","baseObjectSet","baseObjectSetWire","JSON","stringify","operations","buildCanonicalizedOperations","objectSetCacheKey","get","queries","subjects","where","canonicalize","withProperties","Object","keys","sort","union","length","map","os","intersect","subtract","pivotTo","orderBy","pageSize"],"sources":["ObjectSetHelper.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 { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Observer } from \"../../ObservableClient/common.js\";\nimport { AbstractHelper } from \"../AbstractHelper.js\";\nimport type { CacheKeys } from \"../CacheKeys.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { KnownCacheKey } from \"../KnownCacheKey.js\";\nimport type { OrderByCanonicalizer } from \"../OrderByCanonicalizer.js\";\nimport type { QuerySubscription } from \"../QuerySubscription.js\";\nimport type { Store } from \"../Store.js\";\nimport type { WhereClauseCanonicalizer } from \"../WhereClauseCanonicalizer.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport { ObjectSetQuery } from \"./ObjectSetQuery.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetHelper extends AbstractHelper<\n ObjectSetQuery,\n ObjectSetQueryOptions\n> {\n whereCanonicalizer: WhereClauseCanonicalizer;\n orderByCanonicalizer: OrderByCanonicalizer;\n\n constructor(\n store: Store,\n cacheKeys: CacheKeys<KnownCacheKey>,\n whereCanonicalizer: WhereClauseCanonicalizer,\n orderByCanonicalizer: OrderByCanonicalizer,\n ) {\n super(store, cacheKeys);\n\n this.whereCanonicalizer = whereCanonicalizer;\n this.orderByCanonicalizer = orderByCanonicalizer;\n }\n\n observe(\n options: ObjectSetQueryOptions,\n subFn: Observer<ObjectSetPayload>,\n ): QuerySubscription<ObjectSetQuery> {\n return super.observe(options, subFn);\n }\n\n getQuery(options: ObjectSetQueryOptions): ObjectSetQuery {\n const { baseObjectSet } = options;\n const baseObjectSetWire = JSON.stringify(getWireObjectSet(baseObjectSet));\n const operations = this.buildCanonicalizedOperations(options);\n\n const objectSetCacheKey = this.cacheKeys.get<ObjectSetCacheKey>(\n \"objectSet\",\n baseObjectSetWire,\n operations,\n );\n\n return this.store.queries.get(objectSetCacheKey, () => {\n return new ObjectSetQuery(\n this.store,\n this.store.subjects.get(objectSetCacheKey),\n baseObjectSetWire,\n operations,\n objectSetCacheKey,\n options,\n );\n });\n }\n\n private buildCanonicalizedOperations(\n options: ObjectSetQueryOptions,\n ): Canonical<ObjectSetOperations> {\n const operations: ObjectSetOperations = {};\n\n if (options.where) {\n operations.where = this.whereCanonicalizer.canonicalize(options.where);\n }\n\n if (options.withProperties) {\n operations.withProperties = Object.keys(options.withProperties).sort();\n }\n\n if (options.union && options.union.length > 0) {\n operations.union = options.union.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.intersect && options.intersect.length > 0) {\n operations.intersect = options.intersect.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.subtract && options.subtract.length > 0) {\n operations.subtract = options.subtract.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.pivotTo) {\n operations.pivotTo = options.pivotTo as string;\n }\n\n if (options.orderBy) {\n operations.orderBy = this.orderByCanonicalizer.canonicalize(\n options.orderBy,\n );\n }\n\n if (options.pageSize) {\n operations.pageSize = options.pageSize;\n }\n\n return operations as Canonical<ObjectSetOperations>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetHelper.js","names":["getWireObjectSet","AbstractHelper","ObjectSetQuery","ObjectSetHelper","constructor","store","cacheKeys","whereCanonicalizer","orderByCanonicalizer","observe","options","subFn","ret","streamUpdates","query","registerStreamUpdates","subscription","getQuery","baseObjectSet","baseObjectSetWire","JSON","stringify","operations","buildCanonicalizedOperations","objectSetCacheKey","get","queries","subjects","where","canonicalize","withProperties","Object","keys","sort","union","length","map","os","intersect","subtract","pivotTo","orderBy","pageSize"],"sources":["ObjectSetHelper.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 { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Observer } from \"../../ObservableClient/common.js\";\nimport { AbstractHelper } from \"../AbstractHelper.js\";\nimport type { CacheKeys } from \"../CacheKeys.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { KnownCacheKey } from \"../KnownCacheKey.js\";\nimport type { OrderByCanonicalizer } from \"../OrderByCanonicalizer.js\";\nimport type { QuerySubscription } from \"../QuerySubscription.js\";\nimport type { Store } from \"../Store.js\";\nimport type { WhereClauseCanonicalizer } from \"../WhereClauseCanonicalizer.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport { ObjectSetQuery } from \"./ObjectSetQuery.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetHelper extends AbstractHelper<\n ObjectSetQuery,\n ObjectSetQueryOptions\n> {\n whereCanonicalizer: WhereClauseCanonicalizer;\n orderByCanonicalizer: OrderByCanonicalizer;\n\n constructor(\n store: Store,\n cacheKeys: CacheKeys<KnownCacheKey>,\n whereCanonicalizer: WhereClauseCanonicalizer,\n orderByCanonicalizer: OrderByCanonicalizer,\n ) {\n super(store, cacheKeys);\n\n this.whereCanonicalizer = whereCanonicalizer;\n this.orderByCanonicalizer = orderByCanonicalizer;\n }\n\n observe(\n options: ObjectSetQueryOptions,\n subFn: Observer<ObjectSetPayload>,\n ): QuerySubscription<ObjectSetQuery> {\n const ret = super.observe(options, subFn);\n\n if (options.streamUpdates) {\n ret.query.registerStreamUpdates(ret.subscription);\n }\n return ret;\n }\n\n getQuery(options: ObjectSetQueryOptions): ObjectSetQuery {\n const { baseObjectSet } = options;\n const baseObjectSetWire = JSON.stringify(getWireObjectSet(baseObjectSet));\n const operations = this.buildCanonicalizedOperations(options);\n\n const objectSetCacheKey = this.cacheKeys.get<ObjectSetCacheKey>(\n \"objectSet\",\n baseObjectSetWire,\n operations,\n );\n\n return this.store.queries.get(objectSetCacheKey, () => {\n return new ObjectSetQuery(\n this.store,\n this.store.subjects.get(objectSetCacheKey),\n baseObjectSetWire,\n operations,\n objectSetCacheKey,\n options,\n );\n });\n }\n\n private buildCanonicalizedOperations(\n options: ObjectSetQueryOptions,\n ): Canonical<ObjectSetOperations> {\n const operations: ObjectSetOperations = {};\n\n if (options.where) {\n operations.where = this.whereCanonicalizer.canonicalize(options.where);\n }\n\n if (options.withProperties) {\n operations.withProperties = Object.keys(options.withProperties).sort();\n }\n\n if (options.union && options.union.length > 0) {\n operations.union = options.union.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.intersect && options.intersect.length > 0) {\n operations.intersect = options.intersect.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.subtract && options.subtract.length > 0) {\n operations.subtract = options.subtract.map(os =>\n JSON.stringify(getWireObjectSet(os))\n );\n }\n\n if (options.pivotTo) {\n operations.pivotTo = options.pivotTo as string;\n }\n\n if (options.orderBy) {\n operations.orderBy = this.orderByCanonicalizer.canonicalize(\n options.orderBy,\n );\n }\n\n if (options.pageSize) {\n operations.pageSize = options.pageSize;\n }\n\n return operations as Canonical<ObjectSetOperations>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -35,7 +35,13 @@ export class ObjectSetQuery extends BaseListQuery {
35
35
  const firstType = Array.from(this.#objectTypes)[0];
36
36
  this.sortingStrategy = new OrderBySortingStrategy(firstType, operations.orderBy);
37
37
  }
38
- this.minResultsToLoad = opts.pageSize || 0;
38
+ if (opts.autoFetchMore === true) {
39
+ this.minResultsToLoad = Number.MAX_SAFE_INTEGER;
40
+ } else if (typeof opts.autoFetchMore === "number") {
41
+ this.minResultsToLoad = Math.max(0, opts.autoFetchMore);
42
+ } else {
43
+ this.minResultsToLoad = opts.pageSize || 0;
44
+ }
39
45
  }
40
46
  #composeObjectSet(opts) {
41
47
  let result = opts.baseObjectSet;
@@ -129,6 +135,9 @@ export class ObjectSetQuery extends BaseListQuery {
129
135
  data: []
130
136
  }, "error", batch);
131
137
  }
138
+ registerStreamUpdates(sub) {
139
+ this.createWebsocketSubscription(this.#composedObjectSet, sub, "observeObjectSet");
140
+ }
132
141
  invalidateObjectType = async (objectType, changes) => {
133
142
  if (this.#objectTypes.has(objectType)) {
134
143
  changes?.modified.add(this.cacheKey);
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetQuery.js","names":["additionalContext","getWireObjectSet","BaseListQuery","OrderBySortingStrategy","ObjectSetQuery","baseObjectSetWire","operations","composedObjectSet","objectTypes","constructor","store","subject","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","map","x","JSON","stringify","join","undefined","composeObjectSet","extractObjectTypes","orderBy","Object","keys","length","firstType","Array","from","sortingStrategy","minResultsToLoad","pageSize","#composeObjectSet","result","baseObjectSet","withProperties","where","union","intersect","subtract","pivotTo","#extractObjectTypes","types","Set","baseWire","parse","type","add","os","wire","registerCacheChanges","batch","changes","registerObjectSet","fetchPageData","signal","resp","fetchPage","$nextPageToken","nextPageToken","$pageSize","options","$orderBy","aborted","Error","handleFetchError","error","_status","subjects","get","writeToStore","data","invalidateObjectType","objectType","has","modified","revalidate","Promise","resolve","createPayload","params","resolvedList","resolvedData","isOptimistic","fetchMore","hasMore","status","lastUpdated","objectSet"],"sources":["ObjectSetQuery.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, Osdk, PageResult } from \"@osdk/api\";\nimport type { Observable } from \"rxjs\";\nimport { additionalContext } from \"../../../Client.js\";\nimport { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport { BaseListQuery } from \"../base-list/BaseListQuery.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Entry } from \"../Layer.js\";\nimport { OrderBySortingStrategy } from \"../sorting/SortingStrategy.js\";\nimport type { Store } from \"../Store.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetQuery extends BaseListQuery<\n ObjectSetCacheKey,\n ObjectSetPayload,\n ObjectSetQueryOptions\n> {\n #baseObjectSetWire: string;\n #operations: Canonical<ObjectSetOperations>;\n #composedObjectSet: ObjectSet<any, any>;\n #objectTypes: Set<string>;\n\n constructor(\n store: Store,\n subject: Observable<SubjectPayload<ObjectSetCacheKey>>,\n baseObjectSetWire: string,\n operations: Canonical<ObjectSetOperations>,\n cacheKey: ObjectSetCacheKey,\n opts: ObjectSetQueryOptions,\n ) {\n super(\n store,\n subject,\n opts,\n cacheKey,\n process.env.NODE_ENV !== \"production\"\n ? (\n store.client[additionalContext].logger?.child({}, {\n msgPrefix: `ObjectSetQuery<${\n cacheKey.otherKeys.map(x => JSON.stringify(x)).join(\", \")\n }>`,\n })\n )\n : undefined,\n );\n\n this.#baseObjectSetWire = baseObjectSetWire;\n this.#operations = operations;\n this.#composedObjectSet = this.#composeObjectSet(opts);\n this.#objectTypes = this.#extractObjectTypes(opts);\n\n if (operations.orderBy && Object.keys(operations.orderBy).length > 0) {\n const firstType = Array.from(this.#objectTypes)[0];\n this.sortingStrategy = new OrderBySortingStrategy(\n firstType,\n operations.orderBy,\n );\n }\n\n this.minResultsToLoad = opts.pageSize || 0;\n }\n\n #composeObjectSet(opts: ObjectSetQueryOptions): ObjectSet<any, any> {\n let result = opts.baseObjectSet;\n\n if (opts.withProperties) {\n result = result.withProperties(opts.withProperties);\n }\n if (opts.where) {\n result = result.where(opts.where);\n }\n if (opts.union && opts.union.length > 0) {\n result = result.union(...opts.union);\n }\n if (opts.intersect && opts.intersect.length > 0) {\n result = result.intersect(...opts.intersect);\n }\n if (opts.subtract && opts.subtract.length > 0) {\n result = result.subtract(...opts.subtract);\n }\n if (opts.pivotTo) {\n result = result.pivotTo(opts.pivotTo);\n }\n\n return result;\n }\n\n #extractObjectTypes(opts: ObjectSetQueryOptions): Set<string> {\n const types = new Set<string>();\n const baseWire = JSON.parse(this.#baseObjectSetWire);\n if (baseWire.type) {\n types.add(baseWire.type);\n }\n\n if (opts.union) {\n for (const os of opts.union) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n if (opts.intersect) {\n for (const os of opts.intersect) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n if (opts.subtract) {\n for (const os of opts.subtract) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n // TODO: support pivotTo, requires resolving the target type from link metadata\n\n return types;\n }\n\n /**\n * Register changes to the cache specific to ObjectSetQuery\n */\n protected registerCacheChanges(batch: BatchContext): void {\n batch.changes.registerObjectSet(this.cacheKey);\n }\n\n /**\n * Implements fetchPageData from BaseListQuery template method\n * Fetches a page of data from the composed ObjectSet\n */\n protected async fetchPageData(\n signal: AbortSignal | undefined,\n ): Promise<PageResult<Osdk.Instance<any>>> {\n // Fetch the data with pagination\n const resp = await this.#composedObjectSet.fetchPage({\n $nextPageToken: this.nextPageToken,\n $pageSize: this.options.pageSize,\n // OrderBy is already applied in the composed ObjectSet\n ...(this.#operations.orderBy\n && Object.keys(this.#operations.orderBy).length > 0\n ? { $orderBy: this.#operations.orderBy }\n : {}),\n });\n\n if (signal?.aborted) {\n throw new Error(\"Aborted\");\n }\n\n this.nextPageToken = resp.nextPageToken;\n\n return resp;\n }\n\n protected handleFetchError(\n error: unknown,\n _status: Status,\n batch: BatchContext,\n ): Entry<ObjectSetCacheKey> {\n this.logger?.error(\"error\", error);\n this.store.subjects.get(this.cacheKey).error(error);\n\n return this.writeToStore({ data: [] }, \"error\", batch);\n }\n\n invalidateObjectType = async (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (this.#objectTypes.has(objectType)) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n\n protected createPayload(\n params: {\n resolvedData: any[];\n isOptimistic: boolean;\n status: Status;\n lastUpdated: number;\n },\n ): ObjectSetPayload {\n return {\n resolvedList: params.resolvedData,\n isOptimistic: params.isOptimistic,\n fetchMore: this.fetchMore,\n hasMore: this.nextPageToken != null,\n status: params.status,\n lastUpdated: params.lastUpdated,\n objectSet: this.#composedObjectSet,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetQuery.js","names":["additionalContext","getWireObjectSet","BaseListQuery","OrderBySortingStrategy","ObjectSetQuery","baseObjectSetWire","operations","composedObjectSet","objectTypes","constructor","store","subject","cacheKey","opts","process","env","NODE_ENV","client","logger","child","msgPrefix","otherKeys","map","x","JSON","stringify","join","undefined","composeObjectSet","extractObjectTypes","orderBy","Object","keys","length","firstType","Array","from","sortingStrategy","autoFetchMore","minResultsToLoad","Number","MAX_SAFE_INTEGER","Math","max","pageSize","#composeObjectSet","result","baseObjectSet","withProperties","where","union","intersect","subtract","pivotTo","#extractObjectTypes","types","Set","baseWire","parse","type","add","os","wire","registerCacheChanges","batch","changes","registerObjectSet","fetchPageData","signal","resp","fetchPage","$nextPageToken","nextPageToken","$pageSize","options","$orderBy","aborted","Error","handleFetchError","error","_status","subjects","get","writeToStore","data","registerStreamUpdates","sub","createWebsocketSubscription","invalidateObjectType","objectType","has","modified","revalidate","Promise","resolve","createPayload","params","resolvedList","resolvedData","isOptimistic","fetchMore","hasMore","status","lastUpdated","objectSet"],"sources":["ObjectSetQuery.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, Osdk, PageResult } from \"@osdk/api\";\nimport type { Observable, Subscription } from \"rxjs\";\nimport { additionalContext } from \"../../../Client.js\";\nimport { getWireObjectSet } from \"../../../objectSet/createObjectSet.js\";\nimport type { ObjectSetPayload } from \"../../ObjectSetPayload.js\";\nimport type { Status } from \"../../ObservableClient/common.js\";\nimport { BaseListQuery } from \"../base-list/BaseListQuery.js\";\nimport type { BatchContext } from \"../BatchContext.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { Changes } from \"../Changes.js\";\nimport type { Entry } from \"../Layer.js\";\nimport { OrderBySortingStrategy } from \"../sorting/SortingStrategy.js\";\nimport type { Store } from \"../Store.js\";\nimport type { SubjectPayload } from \"../SubjectPayload.js\";\nimport type {\n ObjectSetCacheKey,\n ObjectSetOperations,\n} from \"./ObjectSetCacheKey.js\";\nimport type { ObjectSetQueryOptions } from \"./ObjectSetQueryOptions.js\";\n\nexport class ObjectSetQuery extends BaseListQuery<\n ObjectSetCacheKey,\n ObjectSetPayload,\n ObjectSetQueryOptions\n> {\n #baseObjectSetWire: string;\n #operations: Canonical<ObjectSetOperations>;\n #composedObjectSet: ObjectSet<any, any>;\n #objectTypes: Set<string>;\n\n constructor(\n store: Store,\n subject: Observable<SubjectPayload<ObjectSetCacheKey>>,\n baseObjectSetWire: string,\n operations: Canonical<ObjectSetOperations>,\n cacheKey: ObjectSetCacheKey,\n opts: ObjectSetQueryOptions,\n ) {\n super(\n store,\n subject,\n opts,\n cacheKey,\n process.env.NODE_ENV !== \"production\"\n ? (\n store.client[additionalContext].logger?.child({}, {\n msgPrefix: `ObjectSetQuery<${\n cacheKey.otherKeys.map(x => JSON.stringify(x)).join(\", \")\n }>`,\n })\n )\n : undefined,\n );\n\n this.#baseObjectSetWire = baseObjectSetWire;\n this.#operations = operations;\n this.#composedObjectSet = this.#composeObjectSet(opts);\n this.#objectTypes = this.#extractObjectTypes(opts);\n\n if (operations.orderBy && Object.keys(operations.orderBy).length > 0) {\n const firstType = Array.from(this.#objectTypes)[0];\n this.sortingStrategy = new OrderBySortingStrategy(\n firstType,\n operations.orderBy,\n );\n }\n\n if (opts.autoFetchMore === true) {\n this.minResultsToLoad = Number.MAX_SAFE_INTEGER;\n } else if (typeof opts.autoFetchMore === \"number\") {\n this.minResultsToLoad = Math.max(0, opts.autoFetchMore);\n } else {\n this.minResultsToLoad = opts.pageSize || 0;\n }\n }\n\n #composeObjectSet(opts: ObjectSetQueryOptions): ObjectSet<any, any> {\n let result = opts.baseObjectSet;\n\n if (opts.withProperties) {\n result = result.withProperties(opts.withProperties);\n }\n if (opts.where) {\n result = result.where(opts.where);\n }\n if (opts.union && opts.union.length > 0) {\n result = result.union(...opts.union);\n }\n if (opts.intersect && opts.intersect.length > 0) {\n result = result.intersect(...opts.intersect);\n }\n if (opts.subtract && opts.subtract.length > 0) {\n result = result.subtract(...opts.subtract);\n }\n if (opts.pivotTo) {\n result = result.pivotTo(opts.pivotTo);\n }\n\n return result;\n }\n\n #extractObjectTypes(opts: ObjectSetQueryOptions): Set<string> {\n const types = new Set<string>();\n const baseWire = JSON.parse(this.#baseObjectSetWire);\n if (baseWire.type) {\n types.add(baseWire.type);\n }\n\n if (opts.union) {\n for (const os of opts.union) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n if (opts.intersect) {\n for (const os of opts.intersect) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n if (opts.subtract) {\n for (const os of opts.subtract) {\n const wire = getWireObjectSet(os);\n if (wire.type) {\n types.add(wire.type);\n }\n }\n }\n\n // TODO: support pivotTo, requires resolving the target type from link metadata\n\n return types;\n }\n\n /**\n * Register changes to the cache specific to ObjectSetQuery\n */\n protected registerCacheChanges(batch: BatchContext): void {\n batch.changes.registerObjectSet(this.cacheKey);\n }\n\n /**\n * Implements fetchPageData from BaseListQuery template method\n * Fetches a page of data from the composed ObjectSet\n */\n protected async fetchPageData(\n signal: AbortSignal | undefined,\n ): Promise<PageResult<Osdk.Instance<any>>> {\n // Fetch the data with pagination\n const resp = await this.#composedObjectSet.fetchPage({\n $nextPageToken: this.nextPageToken,\n $pageSize: this.options.pageSize,\n // OrderBy is already applied in the composed ObjectSet\n ...(this.#operations.orderBy\n && Object.keys(this.#operations.orderBy).length > 0\n ? { $orderBy: this.#operations.orderBy }\n : {}),\n });\n\n if (signal?.aborted) {\n throw new Error(\"Aborted\");\n }\n\n this.nextPageToken = resp.nextPageToken;\n\n return resp;\n }\n\n protected handleFetchError(\n error: unknown,\n _status: Status,\n batch: BatchContext,\n ): Entry<ObjectSetCacheKey> {\n this.logger?.error(\"error\", error);\n this.store.subjects.get(this.cacheKey).error(error);\n\n return this.writeToStore({ data: [] }, \"error\", batch);\n }\n\n registerStreamUpdates(sub: Subscription): void {\n this.createWebsocketSubscription(\n this.#composedObjectSet,\n sub,\n \"observeObjectSet\",\n );\n }\n\n invalidateObjectType = async (\n objectType: string,\n changes: Changes | undefined,\n ): Promise<void> => {\n if (this.#objectTypes.has(objectType)) {\n changes?.modified.add(this.cacheKey);\n return this.revalidate(true);\n }\n return Promise.resolve();\n };\n\n protected createPayload(\n params: {\n resolvedData: any[];\n isOptimistic: boolean;\n status: Status;\n lastUpdated: number;\n },\n ): ObjectSetPayload {\n return {\n resolvedList: params.resolvedData,\n isOptimistic: params.isOptimistic,\n fetchMore: this.fetchMore,\n hasMore: this.nextPageToken != null,\n status: params.status,\n lastUpdated: params.lastUpdated,\n objectSet: this.#composedObjectSet,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSetQueryOptions.js","names":[],"sources":["ObjectSetQueryOptions.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 DerivedProperty,\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n WirePropertyTypes,\n} from \"@osdk/api\";\nimport type { CommonObserveOptions } from \"../../ObservableClient/common.js\";\n\nexport interface ObserveObjectSetOptions<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<\n string,\n WirePropertyTypes | undefined | Array<WirePropertyTypes>\n > = {},\n> extends CommonObserveOptions {\n where?: WhereClause<Q>;\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n union?: ObjectSet<Q>[];\n intersect?: ObjectSet<Q>[];\n subtract?: ObjectSet<Q>[];\n pivotTo?: LinkNames<Q>;\n pageSize?: number;\n orderBy?: { [K in PropertyKeys<Q>]?: \"asc\" | \"desc\" };\n}\n\nexport interface ObjectSetQueryOptions\n extends ObserveObjectSetOptions<any, any>\n{\n baseObjectSet: ObjectSet<any>;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSetQueryOptions.js","names":[],"sources":["ObjectSetQueryOptions.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 DerivedProperty,\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n WirePropertyTypes,\n} from \"@osdk/api\";\nimport type { CommonObserveOptions } from \"../../ObservableClient/common.js\";\n\nexport interface ObserveObjectSetOptions<\n Q extends ObjectTypeDefinition,\n RDPs extends Record<\n string,\n WirePropertyTypes | undefined | Array<WirePropertyTypes>\n > = {},\n> extends CommonObserveOptions {\n where?: WhereClause<Q>;\n withProperties?: { [K in keyof RDPs]: DerivedProperty.Creator<Q, RDPs[K]> };\n union?: ObjectSet<Q>[];\n intersect?: ObjectSet<Q>[];\n subtract?: ObjectSet<Q>[];\n pivotTo?: LinkNames<Q>;\n pageSize?: number;\n orderBy?: { [K in PropertyKeys<Q>]?: \"asc\" | \"desc\" };\n\n /**\n * Automatically fetch additional pages on initial load.\n *\n * - `true`: Fetch all available pages automatically\n * - `number`: Fetch pages until at least this many items are loaded\n * - `undefined` (default): Only fetch the first page, user must call fetchMore()\n */\n autoFetchMore?: boolean | number;\n\n /**\n * Enable streaming updates via websocket subscription.\n * When true, the object set will automatically update when matching objects are\n * added, updated, or removed.\n *\n * @default false\n */\n streamUpdates?: boolean;\n}\n\nexport interface ObjectSetQueryOptions\n extends ObserveObjectSetOptions<any, any>\n{\n baseObjectSet: ObjectSet<any>;\n}\n"],"mappings":"","ignoreList":[]}
@@ -17,7 +17,12 @@
17
17
  export async function invalidateList(store, args) {
18
18
  const where = store.whereCanonicalizer.canonicalize(args.where ?? {});
19
19
  const orderBy = store.orderByCanonicalizer.canonicalize(args.orderBy ?? {});
20
- const cacheKey = store.cacheKeys.get("list", args.type.type, args.type.apiName, where, orderBy);
20
+ const cacheKey = store.cacheKeys.get("list", args.type.type, args.type.apiName, where, orderBy, undefined,
21
+ // rdpConfig
22
+ undefined,
23
+ // intersectWith
24
+ undefined // pivotInfo
25
+ );
21
26
  await store.queries.peek(cacheKey)?.revalidate(true);
22
27
  }
23
28
  //# sourceMappingURL=invalidateList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invalidateList.js","names":["invalidateList","store","args","where","whereCanonicalizer","canonicalize","orderBy","orderByCanonicalizer","cacheKey","cacheKeys","get","type","apiName","queries","peek","revalidate"],"sources":["invalidateList.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, WhereClause } from \"@osdk/api\";\nimport type { OrderBy } from \"../../ObservableClient.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { ListCacheKey } from \"../list/ListCacheKey.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { Store } from \"../Store.js\";\n\nexport async function invalidateList<T extends ObjectTypeDefinition>(\n store: Store,\n args: {\n type: Pick<T, \"apiName\" | \"type\">;\n where?: WhereClause<T> | SimpleWhereClause;\n orderBy?: OrderBy<T>;\n },\n): Promise<void> {\n const where = store.whereCanonicalizer.canonicalize(args.where ?? {});\n const orderBy = store.orderByCanonicalizer.canonicalize(args.orderBy ?? {});\n\n const cacheKey = store.cacheKeys.get<ListCacheKey>(\n \"list\",\n args.type.type,\n args.type.apiName,\n where,\n orderBy as Canonical<OrderBy<T>>,\n );\n\n await store.queries.peek(cacheKey)?.revalidate(true);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,OAAO,eAAeA,cAAcA,CAClCC,KAAY,EACZC,IAIC,EACc;EACf,MAAMC,KAAK,GAAGF,KAAK,CAACG,kBAAkB,CAACC,YAAY,CAACH,IAAI,CAACC,KAAK,IAAI,CAAC,CAAC,CAAC;EACrE,MAAMG,OAAO,GAAGL,KAAK,CAACM,oBAAoB,CAACF,YAAY,CAACH,IAAI,CAACI,OAAO,IAAI,CAAC,CAAC,CAAC;EAE3E,MAAME,QAAQ,GAAGP,KAAK,CAACQ,SAAS,CAACC,GAAG,CAClC,MAAM,EACNR,IAAI,CAACS,IAAI,CAACA,IAAI,EACdT,IAAI,CAACS,IAAI,CAACC,OAAO,EACjBT,KAAK,EACLG,OACF,CAAC;EAED,MAAML,KAAK,CAACY,OAAO,CAACC,IAAI,CAACN,QAAQ,CAAC,EAAEO,UAAU,CAAC,IAAI,CAAC;AACtD","ignoreList":[]}
1
+ {"version":3,"file":"invalidateList.js","names":["invalidateList","store","args","where","whereCanonicalizer","canonicalize","orderBy","orderByCanonicalizer","cacheKey","cacheKeys","get","type","apiName","undefined","queries","peek","revalidate"],"sources":["invalidateList.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, WhereClause } from \"@osdk/api\";\nimport type { OrderBy } from \"../../ObservableClient.js\";\nimport type { Canonical } from \"../Canonical.js\";\nimport type { ListCacheKey } from \"../list/ListCacheKey.js\";\nimport type { SimpleWhereClause } from \"../SimpleWhereClause.js\";\nimport type { Store } from \"../Store.js\";\n\nexport async function invalidateList<T extends ObjectTypeDefinition>(\n store: Store,\n args: {\n type: Pick<T, \"apiName\" | \"type\">;\n where?: WhereClause<T> | SimpleWhereClause;\n orderBy?: OrderBy<T>;\n },\n): Promise<void> {\n const where = store.whereCanonicalizer.canonicalize(args.where ?? {});\n const orderBy = store.orderByCanonicalizer.canonicalize(args.orderBy ?? {});\n\n const cacheKey = store.cacheKeys.get<ListCacheKey>(\n \"list\",\n args.type.type,\n args.type.apiName,\n where,\n orderBy as Canonical<OrderBy<T>>,\n undefined, // rdpConfig\n undefined, // intersectWith\n undefined, // pivotInfo\n );\n\n await store.queries.peek(cacheKey)?.revalidate(true);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,OAAO,eAAeA,cAAcA,CAClCC,KAAY,EACZC,IAIC,EACc;EACf,MAAMC,KAAK,GAAGF,KAAK,CAACG,kBAAkB,CAACC,YAAY,CAACH,IAAI,CAACC,KAAK,IAAI,CAAC,CAAC,CAAC;EACrE,MAAMG,OAAO,GAAGL,KAAK,CAACM,oBAAoB,CAACF,YAAY,CAACH,IAAI,CAACI,OAAO,IAAI,CAAC,CAAC,CAAC;EAE3E,MAAME,QAAQ,GAAGP,KAAK,CAACQ,SAAS,CAACC,GAAG,CAClC,MAAM,EACNR,IAAI,CAACS,IAAI,CAACA,IAAI,EACdT,IAAI,CAACS,IAAI,CAACC,OAAO,EACjBT,KAAK,EACLG,OAAO,EACPO,SAAS;EAAE;EACXA,SAAS;EAAE;EACXA,SAAS,CAAE;EACb,CAAC;EAED,MAAMZ,KAAK,CAACa,OAAO,CAACC,IAAI,CAACP,QAAQ,CAAC,EAAEQ,UAAU,CAAC,IAAI,CAAC;AACtD","ignoreList":[]}
@@ -231,7 +231,9 @@ export function expectSingleListCallAndClear(subFn, resolvedList, payloadOptions
231
231
  ...payloadOptions,
232
232
  resolvedList: resolvedList
233
233
  }));
234
+ const ret = subFn.next.mock.calls[0][0];
234
235
  subFn.next.mockClear();
236
+ return ret;
235
237
  }
236
238
 
237
239
  /**
@@ -420,7 +422,8 @@ export function updateList(store, {
420
422
  store.batch({
421
423
  optimisticId
422
424
  }, batch => {
423
- const objectCacheKeys = store.objects.storeOsdkInstances(objects, batch);
425
+ const rdpConfig = query.rdpConfig;
426
+ const objectCacheKeys = store.objects.storeOsdkInstances(objects, batch, rdpConfig);
424
427
  query._updateList(objectCacheKeys, "loaded", batch, false);
425
428
  });
426
429
  }
@@ -433,7 +436,7 @@ export function updateObject(store, value, {
433
436
  const query = store.objects.getQuery({
434
437
  apiName: value.$apiName,
435
438
  pk: value.$primaryKey
436
- });
439
+ }, undefined);
437
440
  store.batch({
438
441
  optimisticId
439
442
  }, batch => {