@osdk/client 2.5.2 → 2.6.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/CHANGELOG.md +118 -73
  2. package/build/browser/Client.js +1 -1
  3. package/build/browser/Client.js.map +1 -1
  4. package/build/browser/MinimalClientContext.js.map +1 -1
  5. package/build/browser/actions/applyAction.js +4 -0
  6. package/build/browser/actions/applyAction.js.map +1 -1
  7. package/build/browser/createClient.js +2 -1
  8. package/build/browser/createClient.js.map +1 -1
  9. package/build/browser/createClient.test.js +19 -1
  10. package/build/browser/createClient.test.js.map +1 -1
  11. package/build/browser/createMinimalClient.js +4 -2
  12. package/build/browser/createMinimalClient.js.map +1 -1
  13. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +19 -1
  14. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  15. package/build/browser/fetchMetadata.test.js +11 -0
  16. package/build/browser/fetchMetadata.test.js.map +1 -1
  17. package/build/browser/index.js +2 -2
  18. package/build/browser/index.js.map +1 -1
  19. package/build/browser/internal/conversions/extractNamespace.js +22 -0
  20. package/build/browser/internal/conversions/extractNamespace.js.map +1 -0
  21. package/build/browser/internal/conversions/fullyQualifyPropName.js +26 -0
  22. package/build/browser/internal/conversions/fullyQualifyPropName.js.map +1 -0
  23. package/build/browser/internal/conversions/makeGeoFilterBbox.js +41 -0
  24. package/build/browser/internal/conversions/makeGeoFilterBbox.js.map +1 -0
  25. package/build/browser/internal/conversions/makeGeoFilterIntersects.js +29 -0
  26. package/build/browser/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
  27. package/build/browser/internal/conversions/makeGeoFilterPolygon.js +30 -0
  28. package/build/browser/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
  29. package/build/browser/internal/conversions/makeGeoFilterWithin.js +48 -0
  30. package/build/browser/internal/conversions/makeGeoFilterWithin.js.map +1 -0
  31. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +59 -105
  32. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  33. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
  34. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  35. package/build/browser/object/aggregate.js +3 -0
  36. package/build/browser/object/aggregate.js.map +1 -1
  37. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  38. package/build/browser/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  39. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
  40. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  41. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
  42. package/build/browser/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  43. package/build/browser/object/convertWireToOsdkObjects.test.js +12 -0
  44. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  45. package/build/browser/object/fetchPage.js +13 -6
  46. package/build/browser/object/fetchPage.js.map +1 -1
  47. package/build/browser/object/formatting/applyPropertyFormatter.js +58 -0
  48. package/build/browser/object/formatting/applyPropertyFormatter.js.map +1 -0
  49. package/build/browser/object/formatting/applyPropertyFormatter.test.js +726 -0
  50. package/build/browser/object/formatting/applyPropertyFormatter.test.js.map +1 -0
  51. package/build/browser/object/formatting/formatBoolean.js +23 -0
  52. package/build/browser/object/formatting/formatBoolean.js.map +1 -0
  53. package/build/browser/object/formatting/formatDateTime.js +158 -0
  54. package/build/browser/object/formatting/formatDateTime.js.map +1 -0
  55. package/build/browser/object/formatting/formatNumber.js +242 -0
  56. package/build/browser/object/formatting/formatNumber.js.map +1 -0
  57. package/build/browser/object/formatting/propertyFormattingUtils.js +39 -0
  58. package/build/browser/object/formatting/propertyFormattingUtils.js.map +1 -0
  59. package/build/browser/object/mediaUpload.js +3 -0
  60. package/build/browser/object/mediaUpload.js.map +1 -1
  61. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +17 -0
  62. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  63. package/build/browser/objectSet/createObjectSet.js +11 -0
  64. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  65. package/build/browser/observable/ObservableClient.js.map +1 -1
  66. package/build/browser/observable/internal/BulkObjectLoader.js +12 -4
  67. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
  68. package/build/browser/observable/internal/BulkObjectLoader.test.js +48 -0
  69. package/build/browser/observable/internal/BulkObjectLoader.test.js.map +1 -1
  70. package/build/browser/observable/internal/CacheKeys.js +9 -3
  71. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  72. package/build/browser/observable/internal/Canonicalizer.js +51 -0
  73. package/build/browser/observable/internal/Canonicalizer.js.map +1 -0
  74. package/build/browser/observable/internal/Changes.js.map +1 -1
  75. package/build/browser/observable/internal/IntersectCanonicalizer.js +35 -0
  76. package/build/browser/observable/internal/IntersectCanonicalizer.js.map +1 -0
  77. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
  78. package/build/browser/observable/internal/ObservableClientImpl.js +3 -0
  79. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  80. package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -4
  81. package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
  82. package/build/browser/observable/internal/PivotCanonicalizer.js +33 -0
  83. package/build/browser/observable/internal/PivotCanonicalizer.js.map +1 -0
  84. package/build/browser/observable/internal/RdpCanonicalizer.js +66 -0
  85. package/build/browser/observable/internal/RdpCanonicalizer.js.map +1 -0
  86. package/build/browser/observable/internal/RdpCanonicalizer.test.js +68 -0
  87. package/build/browser/observable/internal/RdpCanonicalizer.test.js.map +1 -0
  88. package/build/browser/observable/internal/SimpleWhereClause.js.map +1 -1
  89. package/build/browser/observable/internal/Store.js +172 -6
  90. package/build/browser/observable/internal/Store.js.map +1 -1
  91. package/build/browser/observable/internal/WhereClauseCanonicalizer.js +1 -1
  92. package/build/browser/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  93. package/build/browser/observable/internal/actions/ActionApplication.js +1 -1
  94. package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -1
  95. package/build/browser/observable/internal/actions/OptimisticJob.js +3 -3
  96. package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -1
  97. package/build/browser/observable/internal/aggregation/AggregationCacheKey.js +22 -0
  98. package/build/browser/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
  99. package/build/browser/observable/internal/aggregation/AggregationQuery.js +77 -0
  100. package/build/browser/observable/internal/aggregation/AggregationQuery.js.map +1 -0
  101. package/build/browser/observable/internal/aggregation/AggregationsHelper.js +54 -0
  102. package/build/browser/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
  103. package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
  104. package/build/browser/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
  105. package/build/browser/observable/internal/base-list/BaseListQuery.js +145 -5
  106. package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -1
  107. package/build/browser/observable/internal/base-list/createCollectionConnectable.js +0 -5
  108. package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  109. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
  110. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  111. package/build/browser/observable/internal/evaluateFilter.js +61 -0
  112. package/build/browser/observable/internal/evaluateFilter.js.map +1 -0
  113. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +33 -1
  114. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  115. package/build/browser/observable/internal/list/InterfaceListQuery.js +8 -3
  116. package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -1
  117. package/build/browser/observable/internal/list/ListCacheKey.js +24 -1
  118. package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -1
  119. package/build/browser/observable/internal/list/ListQuery.js +35 -62
  120. package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
  121. package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -1
  122. package/build/browser/observable/internal/list/ListsHelper.js +18 -8
  123. package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
  124. package/build/browser/observable/internal/list/ObjectListQuery.js +51 -3
  125. package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
  126. package/build/browser/observable/internal/object/ObjectCacheKey.js +20 -1
  127. package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -1
  128. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
  129. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
  130. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
  131. package/build/browser/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
  132. package/build/browser/observable/internal/object/ObjectQuery.js +10 -58
  133. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
  134. package/build/browser/observable/internal/object/ObjectsHelper.js +65 -5
  135. package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
  136. package/build/browser/observable/internal/objectMatchesWhereClause.js +3 -37
  137. package/build/browser/observable/internal/objectMatchesWhereClause.js.map +1 -1
  138. package/build/browser/observable/internal/objectMatchesWhereClause.test.js +2 -1
  139. package/build/browser/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  140. package/build/browser/observable/internal/objectset/ObjectSetHelper.js +5 -1
  141. package/build/browser/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
  142. package/build/browser/observable/internal/objectset/ObjectSetQuery.js +3 -0
  143. package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  144. package/build/browser/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
  145. package/build/browser/observable/internal/testUtils/invalidateList.js +6 -1
  146. package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -1
  147. package/build/browser/observable/internal/testUtils.js +5 -3
  148. package/build/browser/observable/internal/testUtils.js.map +1 -1
  149. package/build/browser/observable/internal/types/ObjectUpdate.js +2 -0
  150. package/build/browser/observable/internal/types/ObjectUpdate.js.map +1 -0
  151. package/build/browser/observable/internal/utils/rdpFieldOperations.js +83 -0
  152. package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -0
  153. package/build/browser/ontology/loadActionMetadata.js +3 -1
  154. package/build/browser/ontology/loadActionMetadata.js.map +1 -1
  155. package/build/browser/ontology/loadFullObjectMetadata.js +2 -1
  156. package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
  157. package/build/browser/ontology/loadInterfaceMetadata.js +2 -1
  158. package/build/browser/ontology/loadInterfaceMetadata.js.map +1 -1
  159. package/build/browser/public/internal-node.js +18 -0
  160. package/build/browser/public/internal-node.js.map +1 -0
  161. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  162. package/build/browser/queries/applyQuery.js +5 -4
  163. package/build/browser/queries/applyQuery.js.map +1 -1
  164. package/build/browser/util/UserAgent.js +2 -2
  165. package/build/browser/util/UserAgent.js.map +1 -1
  166. package/build/browser/util/extractObjectOrInterfaceType.js +5 -1
  167. package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -1
  168. package/build/browser/util/extractObjectOrInterfaceType.test.js +21 -2
  169. package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -1
  170. package/build/browser/util/toDataValue.js +16 -1
  171. package/build/browser/util/toDataValue.js.map +1 -1
  172. package/build/browser/util/toDataValue.test.js +42 -2
  173. package/build/browser/util/toDataValue.test.js.map +1 -1
  174. package/build/cjs/chunk-6SCDLAU2.cjs +57 -0
  175. package/build/cjs/chunk-6SCDLAU2.cjs.map +1 -0
  176. package/build/cjs/{chunk-SDFKR62Z.cjs → chunk-HJX4D4KL.cjs} +627 -63
  177. package/build/cjs/chunk-HJX4D4KL.cjs.map +1 -0
  178. package/build/cjs/{chunk-MEL46GIF.cjs → chunk-RO7XAQOS.cjs} +454 -242
  179. package/build/cjs/chunk-RO7XAQOS.cjs.map +1 -0
  180. package/build/cjs/{createClient-BJo8T7Js.d.cts → createClient-mOlFts15.d.cts} +1 -0
  181. package/build/cjs/{delay-QK4T7RVX.cjs → delay-KIUUJ5NJ.cjs} +4 -3
  182. package/build/cjs/delay-KIUUJ5NJ.cjs.map +1 -0
  183. package/build/cjs/index.cjs +24 -8
  184. package/build/cjs/index.cjs.map +1 -1
  185. package/build/cjs/index.d.cts +10 -3
  186. package/build/cjs/public/internal-node.cjs +193767 -0
  187. package/build/cjs/public/internal-node.cjs.map +1 -0
  188. package/build/cjs/public/internal-node.d.cts +29 -0
  189. package/build/cjs/public/internal.cjs +16 -9
  190. package/build/cjs/public/internal.cjs.map +1 -1
  191. package/build/cjs/public/unstable-do-not-use.cjs +1736 -868
  192. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  193. package/build/cjs/public/unstable-do-not-use.d.cts +43 -7
  194. package/build/esm/Client.js +1 -1
  195. package/build/esm/Client.js.map +1 -1
  196. package/build/esm/MinimalClientContext.js.map +1 -1
  197. package/build/esm/actions/applyAction.js +4 -0
  198. package/build/esm/actions/applyAction.js.map +1 -1
  199. package/build/esm/createClient.js +2 -1
  200. package/build/esm/createClient.js.map +1 -1
  201. package/build/esm/createClient.test.js +19 -1
  202. package/build/esm/createClient.test.js.map +1 -1
  203. package/build/esm/createMinimalClient.js +4 -2
  204. package/build/esm/createMinimalClient.js.map +1 -1
  205. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +19 -1
  206. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  207. package/build/esm/fetchMetadata.test.js +11 -0
  208. package/build/esm/fetchMetadata.test.js.map +1 -1
  209. package/build/esm/index.js +2 -2
  210. package/build/esm/index.js.map +1 -1
  211. package/build/esm/internal/conversions/extractNamespace.js +22 -0
  212. package/build/esm/internal/conversions/extractNamespace.js.map +1 -0
  213. package/build/esm/internal/conversions/fullyQualifyPropName.js +26 -0
  214. package/build/esm/internal/conversions/fullyQualifyPropName.js.map +1 -0
  215. package/build/esm/internal/conversions/makeGeoFilterBbox.js +41 -0
  216. package/build/esm/internal/conversions/makeGeoFilterBbox.js.map +1 -0
  217. package/build/esm/internal/conversions/makeGeoFilterIntersects.js +29 -0
  218. package/build/esm/internal/conversions/makeGeoFilterIntersects.js.map +1 -0
  219. package/build/esm/internal/conversions/makeGeoFilterPolygon.js +30 -0
  220. package/build/esm/internal/conversions/makeGeoFilterPolygon.js.map +1 -0
  221. package/build/esm/internal/conversions/makeGeoFilterWithin.js +48 -0
  222. package/build/esm/internal/conversions/makeGeoFilterWithin.js.map +1 -0
  223. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +59 -105
  224. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  225. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +309 -0
  226. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  227. package/build/esm/object/aggregate.js +3 -0
  228. package/build/esm/object/aggregate.js.map +1 -1
  229. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  230. package/build/esm/object/convertWireToOsdkObjects/InterfaceHolder.js.map +1 -1
  231. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +5 -1
  232. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  233. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js +10 -0
  234. package/build/esm/object/convertWireToOsdkObjects/createOsdkObject.js.map +1 -1
  235. package/build/esm/object/convertWireToOsdkObjects.test.js +12 -0
  236. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  237. package/build/esm/object/fetchPage.js +13 -6
  238. package/build/esm/object/fetchPage.js.map +1 -1
  239. package/build/esm/object/formatting/applyPropertyFormatter.js +58 -0
  240. package/build/esm/object/formatting/applyPropertyFormatter.js.map +1 -0
  241. package/build/esm/object/formatting/applyPropertyFormatter.test.js +726 -0
  242. package/build/esm/object/formatting/applyPropertyFormatter.test.js.map +1 -0
  243. package/build/esm/object/formatting/formatBoolean.js +23 -0
  244. package/build/esm/object/formatting/formatBoolean.js.map +1 -0
  245. package/build/esm/object/formatting/formatDateTime.js +158 -0
  246. package/build/esm/object/formatting/formatDateTime.js.map +1 -0
  247. package/build/esm/object/formatting/formatNumber.js +242 -0
  248. package/build/esm/object/formatting/formatNumber.js.map +1 -0
  249. package/build/esm/object/formatting/propertyFormattingUtils.js +39 -0
  250. package/build/esm/object/formatting/propertyFormattingUtils.js.map +1 -0
  251. package/build/esm/object/mediaUpload.js +3 -0
  252. package/build/esm/object/mediaUpload.js.map +1 -1
  253. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +17 -0
  254. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  255. package/build/esm/objectSet/createObjectSet.js +11 -0
  256. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  257. package/build/esm/observable/ObservableClient.js.map +1 -1
  258. package/build/esm/observable/internal/BulkObjectLoader.js +12 -4
  259. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
  260. package/build/esm/observable/internal/BulkObjectLoader.test.js +48 -0
  261. package/build/esm/observable/internal/BulkObjectLoader.test.js.map +1 -1
  262. package/build/esm/observable/internal/CacheKeys.js +9 -3
  263. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  264. package/build/esm/observable/internal/Canonicalizer.js +51 -0
  265. package/build/esm/observable/internal/Canonicalizer.js.map +1 -0
  266. package/build/esm/observable/internal/Changes.js.map +1 -1
  267. package/build/esm/observable/internal/IntersectCanonicalizer.js +35 -0
  268. package/build/esm/observable/internal/IntersectCanonicalizer.js.map +1 -0
  269. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
  270. package/build/esm/observable/internal/ObservableClientImpl.js +3 -0
  271. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  272. package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -4
  273. package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
  274. package/build/esm/observable/internal/PivotCanonicalizer.js +33 -0
  275. package/build/esm/observable/internal/PivotCanonicalizer.js.map +1 -0
  276. package/build/esm/observable/internal/RdpCanonicalizer.js +66 -0
  277. package/build/esm/observable/internal/RdpCanonicalizer.js.map +1 -0
  278. package/build/esm/observable/internal/RdpCanonicalizer.test.js +68 -0
  279. package/build/esm/observable/internal/RdpCanonicalizer.test.js.map +1 -0
  280. package/build/esm/observable/internal/SimpleWhereClause.js.map +1 -1
  281. package/build/esm/observable/internal/Store.js +172 -6
  282. package/build/esm/observable/internal/Store.js.map +1 -1
  283. package/build/esm/observable/internal/WhereClauseCanonicalizer.js +1 -1
  284. package/build/esm/observable/internal/WhereClauseCanonicalizer.js.map +1 -1
  285. package/build/esm/observable/internal/actions/ActionApplication.js +1 -1
  286. package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -1
  287. package/build/esm/observable/internal/actions/OptimisticJob.js +3 -3
  288. package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -1
  289. package/build/esm/observable/internal/aggregation/AggregationCacheKey.js +22 -0
  290. package/build/esm/observable/internal/aggregation/AggregationCacheKey.js.map +1 -0
  291. package/build/esm/observable/internal/aggregation/AggregationQuery.js +77 -0
  292. package/build/esm/observable/internal/aggregation/AggregationQuery.js.map +1 -0
  293. package/build/esm/observable/internal/aggregation/AggregationsHelper.js +54 -0
  294. package/build/esm/observable/internal/aggregation/AggregationsHelper.js.map +1 -0
  295. package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js +33 -0
  296. package/build/esm/observable/internal/aggregation/ObjectAggregationQuery.js.map +1 -0
  297. package/build/esm/observable/internal/base-list/BaseListQuery.js +145 -5
  298. package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -1
  299. package/build/esm/observable/internal/base-list/createCollectionConnectable.js +0 -5
  300. package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  301. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +26 -13
  302. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  303. package/build/esm/observable/internal/evaluateFilter.js +61 -0
  304. package/build/esm/observable/internal/evaluateFilter.js.map +1 -0
  305. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +33 -1
  306. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -1
  307. package/build/esm/observable/internal/list/InterfaceListQuery.js +8 -3
  308. package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -1
  309. package/build/esm/observable/internal/list/ListCacheKey.js +24 -1
  310. package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -1
  311. package/build/esm/observable/internal/list/ListQuery.js +35 -62
  312. package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
  313. package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -1
  314. package/build/esm/observable/internal/list/ListsHelper.js +18 -8
  315. package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
  316. package/build/esm/observable/internal/list/ObjectListQuery.js +51 -3
  317. package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
  318. package/build/esm/observable/internal/object/ObjectCacheKey.js +20 -1
  319. package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -1
  320. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js +126 -0
  321. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.js.map +1 -0
  322. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js +173 -0
  323. package/build/esm/observable/internal/object/ObjectCacheKeyRegistry.test.js.map +1 -0
  324. package/build/esm/observable/internal/object/ObjectQuery.js +10 -58
  325. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
  326. package/build/esm/observable/internal/object/ObjectsHelper.js +65 -5
  327. package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
  328. package/build/esm/observable/internal/objectMatchesWhereClause.js +3 -37
  329. package/build/esm/observable/internal/objectMatchesWhereClause.js.map +1 -1
  330. package/build/esm/observable/internal/objectMatchesWhereClause.test.js +2 -1
  331. package/build/esm/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  332. package/build/esm/observable/internal/objectset/ObjectSetHelper.js +5 -1
  333. package/build/esm/observable/internal/objectset/ObjectSetHelper.js.map +1 -1
  334. package/build/esm/observable/internal/objectset/ObjectSetQuery.js +3 -0
  335. package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  336. package/build/esm/observable/internal/objectset/ObjectSetQueryOptions.js.map +1 -1
  337. package/build/esm/observable/internal/testUtils/invalidateList.js +6 -1
  338. package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -1
  339. package/build/esm/observable/internal/testUtils.js +5 -3
  340. package/build/esm/observable/internal/testUtils.js.map +1 -1
  341. package/build/esm/observable/internal/types/ObjectUpdate.js +2 -0
  342. package/build/esm/observable/internal/types/ObjectUpdate.js.map +1 -0
  343. package/build/esm/observable/internal/utils/rdpFieldOperations.js +83 -0
  344. package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -0
  345. package/build/esm/ontology/loadActionMetadata.js +3 -1
  346. package/build/esm/ontology/loadActionMetadata.js.map +1 -1
  347. package/build/esm/ontology/loadFullObjectMetadata.js +2 -1
  348. package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
  349. package/build/esm/ontology/loadInterfaceMetadata.js +2 -1
  350. package/build/esm/ontology/loadInterfaceMetadata.js.map +1 -1
  351. package/build/esm/public/internal-node.js +18 -0
  352. package/build/esm/public/internal-node.js.map +1 -0
  353. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  354. package/build/esm/queries/applyQuery.js +5 -4
  355. package/build/esm/queries/applyQuery.js.map +1 -1
  356. package/build/esm/util/UserAgent.js +2 -2
  357. package/build/esm/util/UserAgent.js.map +1 -1
  358. package/build/esm/util/extractObjectOrInterfaceType.js +5 -1
  359. package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -1
  360. package/build/esm/util/extractObjectOrInterfaceType.test.js +21 -2
  361. package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -1
  362. package/build/esm/util/toDataValue.js +16 -1
  363. package/build/esm/util/toDataValue.js.map +1 -1
  364. package/build/esm/util/toDataValue.test.js +42 -2
  365. package/build/esm/util/toDataValue.test.js.map +1 -1
  366. package/build/types/Client.d.ts +1 -1
  367. package/build/types/MinimalClientContext.d.ts +3 -1
  368. package/build/types/MinimalClientContext.d.ts.map +1 -1
  369. package/build/types/actions/applyAction.d.ts.map +1 -1
  370. package/build/types/createClient.d.ts +1 -0
  371. package/build/types/createClient.d.ts.map +1 -1
  372. package/build/types/index.d.ts +3 -3
  373. package/build/types/index.d.ts.map +1 -1
  374. package/build/types/internal/conversions/extractNamespace.d.ts +1 -0
  375. package/build/types/internal/conversions/extractNamespace.d.ts.map +1 -0
  376. package/build/types/internal/conversions/fullyQualifyPropName.d.ts +2 -0
  377. package/build/types/internal/conversions/fullyQualifyPropName.d.ts.map +1 -0
  378. package/build/types/internal/conversions/makeGeoFilterBbox.d.ts +3 -0
  379. package/build/types/internal/conversions/makeGeoFilterBbox.d.ts.map +1 -0
  380. package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts +3 -0
  381. package/build/types/internal/conversions/makeGeoFilterIntersects.d.ts.map +1 -0
  382. package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts +3 -0
  383. package/build/types/internal/conversions/makeGeoFilterPolygon.d.ts.map +1 -0
  384. package/build/types/internal/conversions/makeGeoFilterWithin.d.ts +3 -0
  385. package/build/types/internal/conversions/makeGeoFilterWithin.d.ts.map +1 -0
  386. package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts +1 -1
  387. package/build/types/internal/conversions/modernToLegacyWhereClause.d.ts.map +1 -1
  388. package/build/types/object/fetchPage.d.ts.map +1 -1
  389. package/build/types/object/formatting/applyPropertyFormatter.d.ts +18 -0
  390. package/build/types/object/formatting/applyPropertyFormatter.d.ts.map +1 -0
  391. package/build/types/object/formatting/applyPropertyFormatter.test.d.ts +1 -0
  392. package/build/types/object/formatting/applyPropertyFormatter.test.d.ts.map +1 -0
  393. package/build/types/object/formatting/formatBoolean.d.ts +5 -0
  394. package/build/types/object/formatting/formatBoolean.d.ts.map +1 -0
  395. package/build/types/object/formatting/formatDateTime.d.ts +6 -0
  396. package/build/types/object/formatting/formatDateTime.d.ts.map +1 -0
  397. package/build/types/object/formatting/formatNumber.d.ts +15 -0
  398. package/build/types/object/formatting/formatNumber.d.ts.map +1 -0
  399. package/build/types/object/formatting/propertyFormattingUtils.d.ts +10 -0
  400. package/build/types/object/formatting/propertyFormattingUtils.d.ts.map +1 -0
  401. package/build/types/object/mediaUpload.d.ts +2 -1
  402. package/build/types/object/mediaUpload.d.ts.map +1 -1
  403. package/build/types/observable/ObservableClient.d.ts +60 -5
  404. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  405. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
  406. package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
  407. package/build/types/observable/internal/Canonicalizer.d.ts +37 -0
  408. package/build/types/observable/internal/Canonicalizer.d.ts.map +1 -0
  409. package/build/types/observable/internal/Changes.d.ts +4 -3
  410. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  411. package/build/types/observable/internal/IntersectCanonicalizer.d.ts +18 -0
  412. package/build/types/observable/internal/IntersectCanonicalizer.d.ts.map +1 -0
  413. package/build/types/observable/internal/KnownCacheKey.d.ts +2 -1
  414. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
  415. package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
  416. package/build/types/observable/internal/PivotCanonicalizer.d.ts +10 -0
  417. package/build/types/observable/internal/PivotCanonicalizer.d.ts.map +1 -0
  418. package/build/types/observable/internal/RdpCanonicalizer.d.ts +8 -0
  419. package/build/types/observable/internal/RdpCanonicalizer.d.ts.map +1 -0
  420. package/build/types/observable/internal/RdpCanonicalizer.test.d.ts +1 -0
  421. package/build/types/observable/internal/RdpCanonicalizer.test.d.ts.map +1 -0
  422. package/build/types/observable/internal/SimpleWhereClause.d.ts +6 -2
  423. package/build/types/observable/internal/SimpleWhereClause.d.ts.map +1 -1
  424. package/build/types/observable/internal/Store.d.ts +10 -0
  425. package/build/types/observable/internal/Store.d.ts.map +1 -1
  426. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts +5 -2
  427. package/build/types/observable/internal/WhereClauseCanonicalizer.d.ts.map +1 -1
  428. package/build/types/observable/internal/actions/ActionApplication.d.ts.map +1 -1
  429. package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts +12 -0
  430. package/build/types/observable/internal/aggregation/AggregationCacheKey.d.ts.map +1 -0
  431. package/build/types/observable/internal/aggregation/AggregationQuery.d.ts +49 -0
  432. package/build/types/observable/internal/aggregation/AggregationQuery.d.ts.map +1 -0
  433. package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts +37 -0
  434. package/build/types/observable/internal/aggregation/AggregationsHelper.d.ts.map +1 -0
  435. package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts +5 -0
  436. package/build/types/observable/internal/aggregation/ObjectAggregationQuery.d.ts.map +1 -0
  437. package/build/types/observable/internal/base-list/BaseListQuery.d.ts +48 -2
  438. package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -1
  439. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts +1 -23
  440. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -1
  441. package/build/types/observable/internal/evaluateFilter.d.ts +6 -0
  442. package/build/types/observable/internal/evaluateFilter.d.ts.map +1 -0
  443. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +5 -0
  444. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -1
  445. package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -1
  446. package/build/types/observable/internal/list/ListCacheKey.d.ts +10 -1
  447. package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -1
  448. package/build/types/observable/internal/list/ListQuery.d.ts +12 -15
  449. package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
  450. package/build/types/observable/internal/list/ListQueryOptions.d.ts +9 -1
  451. package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -1
  452. package/build/types/observable/internal/list/ListsHelper.d.ts +7 -1
  453. package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
  454. package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
  455. package/build/types/observable/internal/object/ObjectCacheKey.d.ts +6 -1
  456. package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -1
  457. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts +60 -0
  458. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.d.ts.map +1 -0
  459. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts +1 -0
  460. package/build/types/observable/internal/object/ObjectCacheKeyRegistry.test.d.ts.map +1 -0
  461. package/build/types/observable/internal/object/ObjectQuery.d.ts +1 -1
  462. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
  463. package/build/types/observable/internal/object/ObjectsHelper.d.ts +15 -1
  464. package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
  465. package/build/types/observable/internal/objectMatchesWhereClause.d.ts.map +1 -1
  466. package/build/types/observable/internal/objectset/ObjectSetHelper.d.ts.map +1 -1
  467. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +2 -1
  468. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
  469. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts +1 -0
  470. package/build/types/observable/internal/objectset/ObjectSetQueryOptions.d.ts.map +1 -1
  471. package/build/types/observable/internal/testUtils.d.ts +1 -1
  472. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  473. package/build/types/observable/internal/types/ObjectUpdate.d.ts +11 -0
  474. package/build/types/observable/internal/types/ObjectUpdate.d.ts.map +1 -0
  475. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts +5 -0
  476. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts.map +1 -0
  477. package/build/types/public/internal-node.d.ts +2 -0
  478. package/build/types/public/internal-node.d.ts.map +1 -0
  479. package/build/types/public/unstable-do-not-use.d.ts +1 -1
  480. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  481. package/build/types/queries/applyQuery.d.ts.map +1 -1
  482. package/internal-node.d.ts +17 -0
  483. package/package.json +23 -13
  484. package/build/cjs/chunk-MEL46GIF.cjs.map +0 -1
  485. package/build/cjs/chunk-Q7SFCCGT.cjs +0 -11
  486. package/build/cjs/chunk-Q7SFCCGT.cjs.map +0 -1
  487. package/build/cjs/chunk-SDFKR62Z.cjs.map +0 -1
  488. package/build/cjs/delay-QK4T7RVX.cjs.map +0 -1
@@ -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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,SAAS,MAAM,iBAAiB;AACvC,OAAOC,SAAS,MAAM,gBAAgB;AAGtC,SAASC,cAAc,QAAQ,qBAAqB;AAGpD,SAASC,MAAMA,CACbC,WAA8B,EACgB;EAC9C,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzC,IAAI,MAAM,IAAIH,WAAW,EAAE;MACzB,CACEI,KAAK,CAACC,OAAO,CAACL,WAAW,CAACM,IAAI,CAAC,GAAAL,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADjCN,SAAS,QAEP,8BAA8B,IAFhCA,SAAS;MAIT,EACEU,MAAM,CAACC,IAAI,CAACR,WAAW,CAAC,CAACS,MAAM,KAAK,CAAC,IAAAR,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADvCN,SAAS,QAEP,kCAAkC,IAFpCA,SAAS;IAIX;EACF;EACA,OAAO,MAAM,IAAIG,WAAW;AAC9B;AAEA,SAASU,KAAKA,CACZV,WAA8B,EACe;EAC7C,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzC,IAAI,KAAK,IAAIH,WAAW,EAAE;MACxB,CACEI,KAAK,CAACC,OAAO,CAACL,WAAW,CAACW,GAAG,CAAC,GAAAV,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADhCN,SAAS,QAEP,6BAA6B,IAF/BA,SAAS;MAIT,EACEU,MAAM,CAACC,IAAI,CAACR,WAAW,CAAC,CAACS,MAAM,KAAK,CAAC,IAAAR,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADvCN,SAAS,QAEP,iCAAiC,IAFnCA,SAAS;IAIX;EACF;EACA,OAAO,KAAK,IAAIG,WAAW;AAC7B;AAEA,SAASY,MAAMA,CACbZ,WAA8B,EACc;EAC5C,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;IACzC,IAAI,MAAM,IAAIH,WAAW,EAAE;MACzB,EACEO,MAAM,CAACC,IAAI,CAACR,WAAW,CAAC,CAACS,MAAM,KAAK,CAAC,IAAAR,OAAA,CAAAC,GAAA,CAAAC,QAAA,oBADvCN,SAAS,QAEP,kCAAkC,IAFpCA,SAAS;IAIX;EACF;EAEA,OAAO,MAAM,IAAIG,WAAW;AAC9B;AAEA,OAAO,SAASa,6BAA6BA,CAC3CC,CAAiC,EACjCd,WAA8B,EAC9Be,MAAe,EACN;EACT,IAAInB,SAAS,CAAC,CAAC,CAAC,EAAEI,WAAW,CAAC,EAAE;IAC9B,OAAO,IAAI;EACb;EAEA,IAAID,MAAM,CAACC,WAAW,CAAC,EAAE;IACvB,OAAOA,WAAW,CAACM,IAAI,CAACU,KAAK,CAACC,CAAC,IAC7BJ,6BAA6B,CAACC,CAAC,EAAEG,CAAC,EAAEF,MAAM,CAC5C,CAAC;EACH;EACA,IAAIL,KAAK,CAACV,WAAW,CAAC,EAAE;IACtB,OAAOA,WAAW,CAACW,GAAG,CAACO,IAAI,CAACD,CAAC,IAC3BJ,6BAA6B,CAACC,CAAC,EAAEG,CAAC,EAAEF,MAAM,CAC5C,CAAC;EACH;EACA,IAAIH,MAAM,CAACZ,WAAW,CAAC,EAAE;IACvB,OAAO,CAACa,6BAA6B,CAACC,CAAC,EAAEd,WAAW,CAACmB,IAAI,EAAEJ,MAAM,CAAC;EACpE;EAEA,OAAOR,MAAM,CAACa,OAAO,CAACpB,WAAW,CAAC,CAACgB,KAAK,CAAC,CAAC,CAACK,GAAG,EAAEC,MAAM,CAAC,KAAK;IAC1D,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,IAAI,IAAI,EAAE;MAChD,MAAMC,SAAc,GAAGT,CAAC,CAACO,GAAG,CAAmB;MAC/C,MAAM,CAACG,CAAC,CAAC,GAAGjB,MAAM,CAACC,IAAI,CAACc,MAAM,CAAsC;MACpE,MAAMG,QAAQ,GAAIH,MAAM,CAASE,CAAC,CAAC;MACnC,OAAO1B,cAAc,CAAC0B,CAAC,EAAED,SAAS,EAAEE,QAAQ,EAAEV,MAAM,CAAC;IACvD;IAEA,IAAIM,GAAG,IAAIP,CAAC,EAAE;MACZ,IAAIA,CAAC,CAACO,GAAG,CAAmB,KAAKC,MAAM,EAAE;QACvC,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -50,7 +50,8 @@ const fauxObject = {
50
50
  short: 5,
51
51
  shortArray: [],
52
52
  string: "Hi there",
53
- stringArray: []
53
+ stringArray: [],
54
+ vector: []
54
55
  };
55
56
  const objects = {
56
57
  fauxObject
@@ -1 +1 @@
1
- {"version":3,"file":"objectMatchesWhereClause.test.js","names":["describe","expect","expectTypeOf","it","objectSortaMatchesWhereClause","fauxObject","attachment","undefined","attachment2","attachmentArray","boolean","booleanArray","byte","byteArray","date","dateArray","dateTime","Date","toISOString","dateTimeArray","decimal","decimalArray","double","doubleArray","float","floatArray","geoPoint","type","coordinates","geoPointArray","geoShape","geoShapeArray","id","integer","integerArray","long","longArray","mediaReference","short","shortArray","string","stringArray","objects","whereClauses","booleanTrue","stringStartsWithHi","$startsWith","stringStartsWithBye","mediaReferenceIsNull","$isNull","mediaReferenceNotIsNull","$not","geopointIntersects","$intersects","$bbox","empty","stringStartsWithHiAndBye","$and","stringStartsWithHiOrBye","$or","whereStrictAndNot","whereStrictOrNot","push","cases","toEqualTypeOf","each","instanceName","whereClauseName","strictExpected","nonStrictExpected","instance","whereClause","toBeDefined","toBe"],"sources":["objectMatchesWhereClause.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk, WhereClause } from \"@osdk/api\";\nimport type { objectTypeWithAllPropertyTypes } from \"@osdk/client.test.ontology\";\nimport { describe, expect, expectTypeOf, it } from \"vitest\";\nimport type { ObjectHolder } from \"../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport { objectSortaMatchesWhereClause } from \"./objectMatchesWhereClause.js\";\n\nconst fauxObject: Osdk.Instance<objectTypeWithAllPropertyTypes> = {\n attachment: undefined,\n attachment2: undefined,\n attachmentArray: [],\n boolean: true,\n booleanArray: [],\n byte: 5,\n byteArray: [],\n date: \"2024-01-01\",\n dateArray: [],\n dateTime: new Date().toISOString(),\n dateTimeArray: [],\n decimal: \"5.3\",\n decimalArray: [],\n double: 5.5,\n doubleArray: [],\n float: 5.6,\n floatArray: [],\n geoPoint: {\n type: \"Point\",\n coordinates: [5, 5],\n },\n geoPointArray: [],\n geoShape: undefined,\n geoShapeArray: [],\n id: 5,\n integer: 6,\n integerArray: [],\n long: \"5\",\n longArray: [],\n mediaReference: undefined,\n short: 5,\n shortArray: [],\n string: \"Hi there\",\n stringArray: [],\n} satisfies objectTypeWithAllPropertyTypes.Props as unknown as Osdk.Instance<\n objectTypeWithAllPropertyTypes\n>;\n\nconst objects = {\n fauxObject,\n};\n\nconst whereClauses = {\n booleanTrue: {\n boolean: true,\n },\n stringStartsWithHi: {\n string: {\n $startsWith: \"Hi\",\n },\n },\n stringStartsWithBye: {\n string: {\n $startsWith: \"Bye\",\n },\n },\n mediaReferenceIsNull: {\n mediaReference: { $isNull: true },\n },\n mediaReferenceNotIsNull: {\n $not: {\n mediaReference: { $isNull: true },\n },\n },\n geopointIntersects: {\n geoPoint: {\n $intersects: {\n $bbox: [5, 3, 3, 2],\n },\n },\n },\n empty: {},\n stringStartsWithHiAndBye: {\n $and: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n stringStartsWithHiOrBye: {\n $or: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n whereStrictAndNot: {\n $and: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n whereStrictOrNot: {\n $or: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n} satisfies Record<\n string,\n WhereClause<objectTypeWithAllPropertyTypes>\n>;\n\nwhereClauses.stringStartsWithHiAndBye.$and.push(\n whereClauses.stringStartsWithHi,\n whereClauses.stringStartsWithBye,\n);\n\nwhereClauses.stringStartsWithHiOrBye.$or.push(\n whereClauses.stringStartsWithHi,\n whereClauses.stringStartsWithBye,\n);\n\nwhereClauses.whereStrictAndNot.$and.push(\n whereClauses.stringStartsWithHi,\n whereClauses.geopointIntersects,\n);\n\nwhereClauses.whereStrictOrNot.$or.push(\n whereClauses.stringStartsWithHi,\n whereClauses.geopointIntersects,\n);\n\nconst cases = [\n [\"fauxObject\", \"empty\", true, true],\n [\"fauxObject\", \"booleanTrue\", true, true],\n [\"fauxObject\", \"stringStartsWithHi\", true, true],\n [\"fauxObject\", \"stringStartsWithBye\", false, false],\n [\"fauxObject\", \"mediaReferenceIsNull\", true, true],\n [\"fauxObject\", \"mediaReferenceNotIsNull\", false, false],\n [\"fauxObject\", \"geopointIntersects\", false, true],\n [\"fauxObject\", \"stringStartsWithHiAndBye\", false, false],\n [\"fauxObject\", \"stringStartsWithHiOrBye\", true, true],\n [\"fauxObject\", \"whereStrictAndNot\", false, true],\n [\"fauxObject\", \"whereStrictOrNot\", true, true],\n] satisfies Array<\n [keyof typeof objects, keyof typeof whereClauses, boolean, boolean]\n>;\n\ntype usedWhereClauses = typeof cases[number][1];\ntype unusedWhereClauses = Exclude<keyof typeof whereClauses, usedWhereClauses>;\nexpectTypeOf<never>().toEqualTypeOf<unusedWhereClauses>;\n\ndescribe(objectSortaMatchesWhereClause, () => {\n it.each<[keyof typeof objects, keyof typeof whereClauses, boolean, boolean]>(\n cases,\n )(\n \"%s | %s ==> { strict: %s, loose: %s }\",\n (instanceName, whereClauseName, strictExpected, nonStrictExpected) => {\n const instance = objects[instanceName] as unknown as ObjectHolder<\n typeof objects[typeof instanceName]\n >;\n const whereClause = whereClauses[whereClauseName] as WhereClause<\n objectTypeWithAllPropertyTypes\n >;\n expect(instance).toBeDefined();\n expect(whereClause).toBeDefined();\n expect(objectSortaMatchesWhereClause(instance, whereClause, true)).toBe(\n strictExpected,\n );\n\n expect(objectSortaMatchesWhereClause(instance, whereClause, false))\n .toBe(nonStrictExpected);\n },\n );\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"objectMatchesWhereClause.test.js","names":["describe","expect","expectTypeOf","it","objectSortaMatchesWhereClause","fauxObject","attachment","undefined","attachment2","attachmentArray","boolean","booleanArray","byte","byteArray","date","dateArray","dateTime","Date","toISOString","dateTimeArray","decimal","decimalArray","double","doubleArray","float","floatArray","geoPoint","type","coordinates","geoPointArray","geoShape","geoShapeArray","id","integer","integerArray","long","longArray","mediaReference","short","shortArray","string","stringArray","vector","objects","whereClauses","booleanTrue","stringStartsWithHi","$startsWith","stringStartsWithBye","mediaReferenceIsNull","$isNull","mediaReferenceNotIsNull","$not","geopointIntersects","$intersects","$bbox","empty","stringStartsWithHiAndBye","$and","stringStartsWithHiOrBye","$or","whereStrictAndNot","whereStrictOrNot","push","cases","toEqualTypeOf","each","instanceName","whereClauseName","strictExpected","nonStrictExpected","instance","whereClause","toBeDefined","toBe"],"sources":["objectMatchesWhereClause.test.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Osdk, WhereClause } from \"@osdk/api\";\nimport type { objectTypeWithAllPropertyTypes } from \"@osdk/client.test.ontology\";\nimport { describe, expect, expectTypeOf, it } from \"vitest\";\nimport type { ObjectHolder } from \"../../object/convertWireToOsdkObjects/ObjectHolder.js\";\nimport { objectSortaMatchesWhereClause } from \"./objectMatchesWhereClause.js\";\n\nconst fauxObject: Osdk.Instance<objectTypeWithAllPropertyTypes> = {\n attachment: undefined,\n attachment2: undefined,\n attachmentArray: [],\n boolean: true,\n booleanArray: [],\n byte: 5,\n byteArray: [],\n date: \"2024-01-01\",\n dateArray: [],\n dateTime: new Date().toISOString(),\n dateTimeArray: [],\n decimal: \"5.3\",\n decimalArray: [],\n double: 5.5,\n doubleArray: [],\n float: 5.6,\n floatArray: [],\n geoPoint: {\n type: \"Point\",\n coordinates: [5, 5],\n },\n geoPointArray: [],\n geoShape: undefined,\n geoShapeArray: [],\n id: 5,\n integer: 6,\n integerArray: [],\n long: \"5\",\n longArray: [],\n mediaReference: undefined,\n short: 5,\n shortArray: [],\n string: \"Hi there\",\n stringArray: [],\n vector: [],\n} satisfies objectTypeWithAllPropertyTypes.Props as unknown as Osdk.Instance<\n objectTypeWithAllPropertyTypes\n>;\n\nconst objects = {\n fauxObject,\n};\n\nconst whereClauses = {\n booleanTrue: {\n boolean: true,\n },\n stringStartsWithHi: {\n string: {\n $startsWith: \"Hi\",\n },\n },\n stringStartsWithBye: {\n string: {\n $startsWith: \"Bye\",\n },\n },\n mediaReferenceIsNull: {\n mediaReference: { $isNull: true },\n },\n mediaReferenceNotIsNull: {\n $not: {\n mediaReference: { $isNull: true },\n },\n },\n geopointIntersects: {\n geoPoint: {\n $intersects: {\n $bbox: [5, 3, 3, 2],\n },\n },\n },\n empty: {},\n stringStartsWithHiAndBye: {\n $and: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n stringStartsWithHiOrBye: {\n $or: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n whereStrictAndNot: {\n $and: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n whereStrictOrNot: {\n $or: [] as WhereClause<objectTypeWithAllPropertyTypes>[],\n },\n} satisfies Record<\n string,\n WhereClause<objectTypeWithAllPropertyTypes>\n>;\n\nwhereClauses.stringStartsWithHiAndBye.$and.push(\n whereClauses.stringStartsWithHi,\n whereClauses.stringStartsWithBye,\n);\n\nwhereClauses.stringStartsWithHiOrBye.$or.push(\n whereClauses.stringStartsWithHi,\n whereClauses.stringStartsWithBye,\n);\n\nwhereClauses.whereStrictAndNot.$and.push(\n whereClauses.stringStartsWithHi,\n whereClauses.geopointIntersects,\n);\n\nwhereClauses.whereStrictOrNot.$or.push(\n whereClauses.stringStartsWithHi,\n whereClauses.geopointIntersects,\n);\n\nconst cases = [\n [\"fauxObject\", \"empty\", true, true],\n [\"fauxObject\", \"booleanTrue\", true, true],\n [\"fauxObject\", \"stringStartsWithHi\", true, true],\n [\"fauxObject\", \"stringStartsWithBye\", false, false],\n [\"fauxObject\", \"mediaReferenceIsNull\", true, true],\n [\"fauxObject\", \"mediaReferenceNotIsNull\", false, false],\n [\"fauxObject\", \"geopointIntersects\", false, true],\n [\"fauxObject\", \"stringStartsWithHiAndBye\", false, false],\n [\"fauxObject\", \"stringStartsWithHiOrBye\", true, true],\n [\"fauxObject\", \"whereStrictAndNot\", false, true],\n [\"fauxObject\", \"whereStrictOrNot\", true, true],\n] satisfies Array<\n [keyof typeof objects, keyof typeof whereClauses, boolean, boolean]\n>;\n\ntype usedWhereClauses = typeof cases[number][1];\ntype unusedWhereClauses = Exclude<keyof typeof whereClauses, usedWhereClauses>;\nexpectTypeOf<never>().toEqualTypeOf<unusedWhereClauses>;\n\ndescribe(objectSortaMatchesWhereClause, () => {\n it.each<[keyof typeof objects, keyof typeof whereClauses, boolean, boolean]>(\n cases,\n )(\n \"%s | %s ==> { strict: %s, loose: %s }\",\n (instanceName, whereClauseName, strictExpected, nonStrictExpected) => {\n const instance = objects[instanceName] as unknown as ObjectHolder<\n typeof objects[typeof instanceName]\n >;\n const whereClause = whereClauses[whereClauseName] as WhereClause<\n objectTypeWithAllPropertyTypes\n >;\n expect(instance).toBeDefined();\n expect(whereClause).toBeDefined();\n expect(objectSortaMatchesWhereClause(instance, whereClause, true)).toBe(\n strictExpected,\n );\n\n expect(objectSortaMatchesWhereClause(instance, whereClause, false))\n .toBe(nonStrictExpected);\n },\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":[]}
@@ -129,6 +129,9 @@ export class ObjectSetQuery extends BaseListQuery {
129
129
  data: []
130
130
  }, "error", batch);
131
131
  }
132
+ registerStreamUpdates(sub) {
133
+ this.createWebsocketSubscription(this.#composedObjectSet, sub, "observeObjectSet");
134
+ }
132
135
  invalidateObjectType = async (objectType, changes) => {
133
136
  if (this.#objectTypes.has(objectType)) {
134
137
  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","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","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 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 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 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":[]}
@@ -126,7 +126,8 @@ export function createClientMockHelper() {
126
126
  fetch: vitest.fn(),
127
127
  clientCacheKey: {},
128
128
  requestContext: {},
129
- logger
129
+ logger,
130
+ asTypeInterfaceOrObjectMapping: {}
130
131
  };
131
132
  client.fetchMetadata = vitest.fn();
132
133
  return {
@@ -419,7 +420,8 @@ export function updateList(store, {
419
420
  store.batch({
420
421
  optimisticId
421
422
  }, batch => {
422
- const objectCacheKeys = store.objects.storeOsdkInstances(objects, batch);
423
+ const rdpConfig = query.rdpConfig;
424
+ const objectCacheKeys = store.objects.storeOsdkInstances(objects, batch, rdpConfig);
423
425
  query._updateList(objectCacheKeys, "loaded", batch, false);
424
426
  });
425
427
  }
@@ -432,7 +434,7 @@ export function updateObject(store, value, {
432
434
  const query = store.objects.getQuery({
433
435
  apiName: value.$apiName,
434
436
  pk: value.$primaryKey
435
- });
437
+ }, undefined);
436
438
  store.batch({
437
439
  optimisticId
438
440
  }, batch => {