@osdk/client 2.4.2 → 2.5.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 (521) hide show
  1. package/CHANGELOG.md +106 -93
  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 +6 -2
  8. package/build/browser/createClient.js.map +1 -1
  9. package/build/browser/createMinimalClient.js +2 -1
  10. package/build/browser/createMinimalClient.js.map +1 -1
  11. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +17 -0
  12. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  13. package/build/browser/fetchMetadata.test.js +11 -0
  14. package/build/browser/fetchMetadata.test.js.map +1 -1
  15. package/build/browser/index.js +3 -1
  16. package/build/browser/index.js.map +1 -1
  17. package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js +8 -1
  18. package/build/browser/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -1
  19. package/build/browser/intellisense.test.js +14 -4
  20. package/build/browser/intellisense.test.js.map +1 -1
  21. package/build/browser/object/Cache.js +1 -1
  22. package/build/browser/object/Cache.js.map +1 -1
  23. package/build/browser/object/Cache.test.js +1 -1
  24. package/build/browser/object/Cache.test.js.map +1 -1
  25. package/build/browser/object/SimpleCache.js +1 -1
  26. package/build/browser/object/SimpleCache.js.map +1 -1
  27. package/build/browser/object/aggregate.js +2 -0
  28. package/build/browser/object/aggregate.js.map +1 -1
  29. package/build/browser/object/aggregate.test.js +30 -0
  30. package/build/browser/object/aggregate.test.js.map +1 -1
  31. package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +1 -0
  32. package/build/browser/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
  33. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js +6 -0
  34. package/build/browser/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  35. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js +20 -1
  36. package/build/browser/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  37. package/build/browser/object/convertWireToOsdkObjects.js +4 -0
  38. package/build/browser/object/convertWireToOsdkObjects.js.map +1 -1
  39. package/build/browser/object/convertWireToOsdkObjects.test.js +14 -0
  40. package/build/browser/object/convertWireToOsdkObjects.test.js.map +1 -1
  41. package/build/browser/object/fetchPage.js +96 -21
  42. package/build/browser/object/fetchPage.js.map +1 -1
  43. package/build/browser/object/fetchPage.test.js +35 -1
  44. package/build/browser/object/fetchPage.test.js.map +1 -1
  45. package/build/browser/object/geotimeseriesreference.test.js +0 -2
  46. package/build/browser/object/geotimeseriesreference.test.js.map +1 -1
  47. package/build/browser/object/mediaUpload.js +3 -0
  48. package/build/browser/object/mediaUpload.js.map +1 -1
  49. package/build/browser/objectSet/ObjectSet.test.js +6 -0
  50. package/build/browser/objectSet/ObjectSet.test.js.map +1 -1
  51. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +31 -9
  52. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  53. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +69 -4
  54. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  55. package/build/browser/objectSet/createObjectSet.js +3 -1
  56. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  57. package/build/browser/observable/LinkPayload.js +2 -0
  58. package/build/browser/observable/LinkPayload.js.map +1 -0
  59. package/build/browser/observable/ObjectPayload.js.map +1 -1
  60. package/build/browser/observable/ObservableClient/ObserveLink.js +17 -0
  61. package/build/browser/observable/ObservableClient/ObserveLink.js.map +1 -0
  62. package/build/browser/observable/ObservableClient/common.js +2 -0
  63. package/build/browser/observable/ObservableClient/common.js.map +1 -0
  64. package/build/browser/observable/ObservableClient.js +20 -0
  65. package/build/browser/observable/ObservableClient.js.map +1 -1
  66. package/build/browser/observable/Unsubscribable.js +2 -0
  67. package/build/browser/observable/Unsubscribable.js.map +1 -0
  68. package/build/browser/observable/internal/AbstractHelper.js +54 -0
  69. package/build/browser/observable/internal/AbstractHelper.js.map +1 -0
  70. package/build/browser/observable/internal/BatchContext.js +2 -0
  71. package/build/browser/observable/internal/BatchContext.js.map +1 -0
  72. package/build/browser/observable/internal/BulkObjectLoader.js +3 -3
  73. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
  74. package/build/browser/observable/internal/CacheKeys.js +65 -25
  75. package/build/browser/observable/internal/CacheKeys.js.map +1 -1
  76. package/build/browser/observable/internal/Changes.js +6 -0
  77. package/build/browser/observable/internal/Changes.js.map +1 -1
  78. package/build/browser/observable/internal/KnownCacheKey.js +2 -0
  79. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -0
  80. package/build/browser/observable/internal/Layer.js +0 -8
  81. package/build/browser/observable/internal/Layer.js.map +1 -1
  82. package/build/browser/observable/internal/Layers.js +151 -0
  83. package/build/browser/observable/internal/Layers.js.map +1 -0
  84. package/build/browser/observable/internal/ObservableClientImpl.js +54 -3
  85. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  86. package/build/browser/observable/internal/OrderByCanonicalizer.js +1 -37
  87. package/build/browser/observable/internal/OrderByCanonicalizer.js.map +1 -1
  88. package/build/browser/observable/internal/Queries.js +40 -0
  89. package/build/browser/observable/internal/Queries.js.map +1 -0
  90. package/build/browser/observable/internal/Query.js +45 -4
  91. package/build/browser/observable/internal/Query.js.map +1 -1
  92. package/build/browser/observable/internal/QuerySubscription.js +48 -0
  93. package/build/browser/observable/internal/QuerySubscription.js.map +1 -0
  94. package/build/browser/observable/internal/Store.invalidation.test.js +646 -0
  95. package/build/browser/observable/internal/Store.invalidation.test.js.map +1 -0
  96. package/build/browser/observable/internal/Store.js +87 -308
  97. package/build/browser/observable/internal/Store.js.map +1 -1
  98. package/build/browser/observable/internal/Store.test.js +330 -73
  99. package/build/browser/observable/internal/Store.test.js.map +1 -1
  100. package/build/browser/observable/internal/SubjectPayload.js +2 -0
  101. package/build/browser/observable/internal/SubjectPayload.js.map +1 -0
  102. package/build/browser/observable/internal/Subjects.js +55 -0
  103. package/build/browser/observable/internal/Subjects.js.map +1 -0
  104. package/build/browser/observable/internal/UnsubscribableWrapper.js +30 -0
  105. package/build/browser/observable/internal/UnsubscribableWrapper.js.map +1 -0
  106. package/build/browser/observable/internal/WeakRefTrie.js +61 -0
  107. package/build/browser/observable/internal/WeakRefTrie.js.map +1 -0
  108. package/build/browser/observable/internal/{ActionApplication.js → actions/ActionApplication.js} +2 -2
  109. package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -0
  110. package/build/{esm/observable/internal → browser/observable/internal/actions}/OptimisticJob.js +15 -6
  111. package/build/browser/observable/internal/actions/OptimisticJob.js.map +1 -0
  112. package/build/browser/observable/internal/base-list/BaseCollectionQuery.js +2 -0
  113. package/build/browser/observable/internal/base-list/BaseCollectionQuery.js.map +1 -0
  114. package/build/browser/observable/internal/base-list/BaseListQuery.js +411 -0
  115. package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -0
  116. package/build/browser/observable/internal/base-list/createCollectionConnectable.js +50 -0
  117. package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -0
  118. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +597 -0
  119. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -0
  120. package/build/browser/observable/internal/base-list/removeDuplicates.js +36 -0
  121. package/build/browser/observable/internal/base-list/removeDuplicates.js.map +1 -0
  122. package/build/browser/observable/internal/createInitEntry.js +25 -0
  123. package/build/browser/observable/internal/createInitEntry.js.map +1 -0
  124. package/build/browser/observable/internal/getObjectTypesThatInvalidate.js +216 -0
  125. package/build/browser/observable/internal/getObjectTypesThatInvalidate.js.map +1 -0
  126. package/build/browser/observable/internal/getObjectTypesThatInvalidate.test.js +382 -0
  127. package/build/browser/observable/internal/getObjectTypesThatInvalidate.test.js.map +1 -0
  128. package/build/browser/observable/internal/isObjectInstance.js +23 -0
  129. package/build/browser/observable/internal/isObjectInstance.js.map +1 -0
  130. package/build/browser/observable/internal/links/LinksHelper.js +37 -0
  131. package/build/browser/observable/internal/links/LinksHelper.js.map +1 -0
  132. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js +2 -0
  133. package/build/browser/observable/internal/links/SpecificLinkCacheKey.js.map +1 -0
  134. package/build/browser/observable/internal/links/SpecificLinkQuery.js +185 -0
  135. package/build/browser/observable/internal/links/SpecificLinkQuery.js.map +1 -0
  136. package/build/browser/observable/internal/list/InterfaceListQuery.js +83 -0
  137. package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -0
  138. package/build/browser/observable/internal/list/ListCacheKey.js +2 -0
  139. package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -0
  140. package/build/browser/observable/internal/list/ListQuery.js +372 -0
  141. package/build/browser/observable/internal/list/ListQuery.js.map +1 -0
  142. package/build/browser/observable/internal/list/ListQueryOptions.js +2 -0
  143. package/build/browser/observable/internal/list/ListQueryOptions.js.map +1 -0
  144. package/build/browser/observable/internal/list/ListsHelper.js +51 -0
  145. package/build/browser/observable/internal/list/ListsHelper.js.map +1 -0
  146. package/build/browser/observable/internal/list/ObjectListQuery.js +48 -0
  147. package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -0
  148. package/build/browser/observable/internal/object/ObjectCacheKey.js +2 -0
  149. package/build/browser/observable/internal/object/ObjectCacheKey.js.map +1 -0
  150. package/build/browser/observable/internal/{ObjectQuery.js → object/ObjectQuery.js} +27 -18
  151. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -0
  152. package/build/browser/observable/internal/object/ObjectsHelper.js +48 -0
  153. package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -0
  154. package/build/browser/observable/internal/sorting/SortingStrategy.js +78 -0
  155. package/build/browser/observable/internal/sorting/SortingStrategy.js.map +1 -0
  156. package/build/browser/observable/internal/testUtils/invalidateList.js +23 -0
  157. package/build/browser/observable/internal/testUtils/invalidateList.js.map +1 -0
  158. package/build/browser/observable/internal/testUtils/observeLink/expectStandardObserveLink.js +69 -0
  159. package/build/browser/observable/internal/testUtils/observeLink/expectStandardObserveLink.js.map +1 -0
  160. package/build/browser/observable/internal/testUtils/observeObject/expectStandardObserveObject.js +56 -0
  161. package/build/browser/observable/internal/testUtils/observeObject/expectStandardObserveObject.js.map +1 -0
  162. package/build/browser/observable/internal/testUtils.js +72 -10
  163. package/build/browser/observable/internal/testUtils.js.map +1 -1
  164. package/build/browser/ontology/loadActionMetadata.js +3 -1
  165. package/build/browser/ontology/loadActionMetadata.js.map +1 -1
  166. package/build/browser/ontology/loadFullObjectMetadata.js +2 -1
  167. package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
  168. package/build/browser/ontology/loadInterfaceMetadata.js +2 -1
  169. package/build/browser/ontology/loadInterfaceMetadata.js.map +1 -1
  170. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  171. package/build/browser/util/UserAgent.js +2 -2
  172. package/build/browser/util/UserAgent.js.map +1 -1
  173. package/build/browser/util/exponentialBackoff.js +51 -0
  174. package/build/browser/util/exponentialBackoff.js.map +1 -0
  175. package/build/browser/util/exponentialBackoff.test.js +81 -0
  176. package/build/browser/util/exponentialBackoff.test.js.map +1 -0
  177. package/build/browser/util/extractObjectOrInterfaceType.js +9 -1
  178. package/build/browser/util/extractObjectOrInterfaceType.js.map +1 -1
  179. package/build/browser/util/extractObjectOrInterfaceType.test.js +2 -2
  180. package/build/browser/util/extractObjectOrInterfaceType.test.js.map +1 -1
  181. package/build/browser/util/streamutils.js +1 -1
  182. package/build/browser/util/streamutils.js.map +1 -1
  183. package/build/browser/util/toDataValue.js +15 -1
  184. package/build/browser/util/toDataValue.js.map +1 -1
  185. package/build/browser/util/toDataValue.test.js +42 -2
  186. package/build/browser/util/toDataValue.test.js.map +1 -1
  187. package/build/cjs/{chunk-633AI7EA.cjs → chunk-GVGP7T5P.cjs} +407 -257
  188. package/build/cjs/chunk-GVGP7T5P.cjs.map +1 -0
  189. package/build/cjs/{chunk-26WFEZQO.cjs → chunk-YADG7KA6.cjs} +136 -84
  190. package/build/cjs/chunk-YADG7KA6.cjs.map +1 -0
  191. package/build/cjs/{createClient-BJo8T7Js.d.cts → createClient-mOlFts15.d.cts} +1 -0
  192. package/build/cjs/index.cjs +11 -7
  193. package/build/cjs/index.d.cts +2 -2
  194. package/build/cjs/public/internal.cjs +8 -8
  195. package/build/cjs/public/unstable-do-not-use.cjs +1502 -851
  196. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  197. package/build/cjs/public/unstable-do-not-use.d.cts +183 -13
  198. package/build/esm/Client.js +1 -1
  199. package/build/esm/Client.js.map +1 -1
  200. package/build/esm/MinimalClientContext.js.map +1 -1
  201. package/build/esm/actions/applyAction.js +4 -0
  202. package/build/esm/actions/applyAction.js.map +1 -1
  203. package/build/esm/createClient.js +6 -2
  204. package/build/esm/createClient.js.map +1 -1
  205. package/build/esm/createMinimalClient.js +2 -1
  206. package/build/esm/createMinimalClient.js.map +1 -1
  207. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +17 -0
  208. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  209. package/build/esm/fetchMetadata.test.js +11 -0
  210. package/build/esm/fetchMetadata.test.js.map +1 -1
  211. package/build/esm/index.js +3 -1
  212. package/build/esm/index.js.map +1 -1
  213. package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js +8 -1
  214. package/build/esm/intellisense.test.helpers/orderBySuggestionIsRight.js.map +1 -1
  215. package/build/esm/intellisense.test.js +14 -4
  216. package/build/esm/intellisense.test.js.map +1 -1
  217. package/build/esm/object/Cache.js +1 -1
  218. package/build/esm/object/Cache.js.map +1 -1
  219. package/build/esm/object/Cache.test.js +1 -1
  220. package/build/esm/object/Cache.test.js.map +1 -1
  221. package/build/esm/object/SimpleCache.js +1 -1
  222. package/build/esm/object/SimpleCache.js.map +1 -1
  223. package/build/esm/object/aggregate.js +2 -0
  224. package/build/esm/object/aggregate.js.map +1 -1
  225. package/build/esm/object/aggregate.test.js +30 -0
  226. package/build/esm/object/aggregate.test.js.map +1 -1
  227. package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js +1 -0
  228. package/build/esm/object/convertWireToOsdkObjects/OsdkCustomInspectPrototype.js.map +1 -1
  229. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js +6 -0
  230. package/build/esm/object/convertWireToOsdkObjects/createOsdkInterface.js.map +1 -1
  231. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js +20 -1
  232. package/build/esm/object/convertWireToOsdkObjects/getDollarLink.js.map +1 -1
  233. package/build/esm/object/convertWireToOsdkObjects.js +4 -0
  234. package/build/esm/object/convertWireToOsdkObjects.js.map +1 -1
  235. package/build/esm/object/convertWireToOsdkObjects.test.js +14 -0
  236. package/build/esm/object/convertWireToOsdkObjects.test.js.map +1 -1
  237. package/build/esm/object/fetchPage.js +96 -21
  238. package/build/esm/object/fetchPage.js.map +1 -1
  239. package/build/esm/object/fetchPage.test.js +35 -1
  240. package/build/esm/object/fetchPage.test.js.map +1 -1
  241. package/build/esm/object/geotimeseriesreference.test.js +0 -2
  242. package/build/esm/object/geotimeseriesreference.test.js.map +1 -1
  243. package/build/esm/object/mediaUpload.js +3 -0
  244. package/build/esm/object/mediaUpload.js.map +1 -1
  245. package/build/esm/objectSet/ObjectSet.test.js +6 -0
  246. package/build/esm/objectSet/ObjectSet.test.js.map +1 -1
  247. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +31 -9
  248. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  249. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +69 -4
  250. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  251. package/build/esm/objectSet/createObjectSet.js +3 -1
  252. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  253. package/build/esm/observable/LinkPayload.js +2 -0
  254. package/build/esm/observable/LinkPayload.js.map +1 -0
  255. package/build/esm/observable/ObjectPayload.js.map +1 -1
  256. package/build/esm/observable/ObservableClient/ObserveLink.js +17 -0
  257. package/build/esm/observable/ObservableClient/ObserveLink.js.map +1 -0
  258. package/build/esm/observable/ObservableClient/common.js +2 -0
  259. package/build/esm/observable/ObservableClient/common.js.map +1 -0
  260. package/build/esm/observable/ObservableClient.js +20 -0
  261. package/build/esm/observable/ObservableClient.js.map +1 -1
  262. package/build/esm/observable/Unsubscribable.js +2 -0
  263. package/build/esm/observable/Unsubscribable.js.map +1 -0
  264. package/build/esm/observable/internal/AbstractHelper.js +54 -0
  265. package/build/esm/observable/internal/AbstractHelper.js.map +1 -0
  266. package/build/esm/observable/internal/BatchContext.js +2 -0
  267. package/build/esm/observable/internal/BatchContext.js.map +1 -0
  268. package/build/esm/observable/internal/BulkObjectLoader.js +3 -3
  269. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
  270. package/build/esm/observable/internal/CacheKeys.js +65 -25
  271. package/build/esm/observable/internal/CacheKeys.js.map +1 -1
  272. package/build/esm/observable/internal/Changes.js +6 -0
  273. package/build/esm/observable/internal/Changes.js.map +1 -1
  274. package/build/esm/observable/internal/KnownCacheKey.js +2 -0
  275. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -0
  276. package/build/esm/observable/internal/Layer.js +0 -8
  277. package/build/esm/observable/internal/Layer.js.map +1 -1
  278. package/build/esm/observable/internal/Layers.js +151 -0
  279. package/build/esm/observable/internal/Layers.js.map +1 -0
  280. package/build/esm/observable/internal/ObservableClientImpl.js +54 -3
  281. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  282. package/build/esm/observable/internal/OrderByCanonicalizer.js +1 -37
  283. package/build/esm/observable/internal/OrderByCanonicalizer.js.map +1 -1
  284. package/build/esm/observable/internal/Queries.js +40 -0
  285. package/build/esm/observable/internal/Queries.js.map +1 -0
  286. package/build/esm/observable/internal/Query.js +45 -4
  287. package/build/esm/observable/internal/Query.js.map +1 -1
  288. package/build/esm/observable/internal/QuerySubscription.js +48 -0
  289. package/build/esm/observable/internal/QuerySubscription.js.map +1 -0
  290. package/build/esm/observable/internal/Store.invalidation.test.js +646 -0
  291. package/build/esm/observable/internal/Store.invalidation.test.js.map +1 -0
  292. package/build/esm/observable/internal/Store.js +87 -308
  293. package/build/esm/observable/internal/Store.js.map +1 -1
  294. package/build/esm/observable/internal/Store.test.js +330 -73
  295. package/build/esm/observable/internal/Store.test.js.map +1 -1
  296. package/build/esm/observable/internal/SubjectPayload.js +2 -0
  297. package/build/esm/observable/internal/SubjectPayload.js.map +1 -0
  298. package/build/esm/observable/internal/Subjects.js +55 -0
  299. package/build/esm/observable/internal/Subjects.js.map +1 -0
  300. package/build/esm/observable/internal/UnsubscribableWrapper.js +30 -0
  301. package/build/esm/observable/internal/UnsubscribableWrapper.js.map +1 -0
  302. package/build/esm/observable/internal/WeakRefTrie.js +61 -0
  303. package/build/esm/observable/internal/WeakRefTrie.js.map +1 -0
  304. package/build/esm/observable/internal/{ActionApplication.js → actions/ActionApplication.js} +2 -2
  305. package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -0
  306. package/build/{browser/observable/internal → esm/observable/internal/actions}/OptimisticJob.js +15 -6
  307. package/build/esm/observable/internal/actions/OptimisticJob.js.map +1 -0
  308. package/build/esm/observable/internal/base-list/BaseCollectionQuery.js +2 -0
  309. package/build/esm/observable/internal/base-list/BaseCollectionQuery.js.map +1 -0
  310. package/build/esm/observable/internal/base-list/BaseListQuery.js +411 -0
  311. package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -0
  312. package/build/esm/observable/internal/base-list/createCollectionConnectable.js +50 -0
  313. package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -0
  314. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +597 -0
  315. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -0
  316. package/build/esm/observable/internal/base-list/removeDuplicates.js +36 -0
  317. package/build/esm/observable/internal/base-list/removeDuplicates.js.map +1 -0
  318. package/build/esm/observable/internal/createInitEntry.js +25 -0
  319. package/build/esm/observable/internal/createInitEntry.js.map +1 -0
  320. package/build/esm/observable/internal/getObjectTypesThatInvalidate.js +216 -0
  321. package/build/esm/observable/internal/getObjectTypesThatInvalidate.js.map +1 -0
  322. package/build/esm/observable/internal/getObjectTypesThatInvalidate.test.js +382 -0
  323. package/build/esm/observable/internal/getObjectTypesThatInvalidate.test.js.map +1 -0
  324. package/build/esm/observable/internal/isObjectInstance.js +23 -0
  325. package/build/esm/observable/internal/isObjectInstance.js.map +1 -0
  326. package/build/esm/observable/internal/links/LinksHelper.js +37 -0
  327. package/build/esm/observable/internal/links/LinksHelper.js.map +1 -0
  328. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js +2 -0
  329. package/build/esm/observable/internal/links/SpecificLinkCacheKey.js.map +1 -0
  330. package/build/esm/observable/internal/links/SpecificLinkQuery.js +185 -0
  331. package/build/esm/observable/internal/links/SpecificLinkQuery.js.map +1 -0
  332. package/build/esm/observable/internal/list/InterfaceListQuery.js +83 -0
  333. package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -0
  334. package/build/esm/observable/internal/list/ListCacheKey.js +2 -0
  335. package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -0
  336. package/build/esm/observable/internal/list/ListQuery.js +372 -0
  337. package/build/esm/observable/internal/list/ListQuery.js.map +1 -0
  338. package/build/esm/observable/internal/list/ListQueryOptions.js +2 -0
  339. package/build/esm/observable/internal/list/ListQueryOptions.js.map +1 -0
  340. package/build/esm/observable/internal/list/ListsHelper.js +51 -0
  341. package/build/esm/observable/internal/list/ListsHelper.js.map +1 -0
  342. package/build/esm/observable/internal/list/ObjectListQuery.js +48 -0
  343. package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -0
  344. package/build/esm/observable/internal/object/ObjectCacheKey.js +2 -0
  345. package/build/esm/observable/internal/object/ObjectCacheKey.js.map +1 -0
  346. package/build/esm/observable/internal/{ObjectQuery.js → object/ObjectQuery.js} +27 -18
  347. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -0
  348. package/build/esm/observable/internal/object/ObjectsHelper.js +48 -0
  349. package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -0
  350. package/build/esm/observable/internal/sorting/SortingStrategy.js +78 -0
  351. package/build/esm/observable/internal/sorting/SortingStrategy.js.map +1 -0
  352. package/build/esm/observable/internal/testUtils/invalidateList.js +23 -0
  353. package/build/esm/observable/internal/testUtils/invalidateList.js.map +1 -0
  354. package/build/esm/observable/internal/testUtils/observeLink/expectStandardObserveLink.js +69 -0
  355. package/build/esm/observable/internal/testUtils/observeLink/expectStandardObserveLink.js.map +1 -0
  356. package/build/esm/observable/internal/testUtils/observeObject/expectStandardObserveObject.js +56 -0
  357. package/build/esm/observable/internal/testUtils/observeObject/expectStandardObserveObject.js.map +1 -0
  358. package/build/esm/observable/internal/testUtils.js +72 -10
  359. package/build/esm/observable/internal/testUtils.js.map +1 -1
  360. package/build/esm/ontology/loadActionMetadata.js +3 -1
  361. package/build/esm/ontology/loadActionMetadata.js.map +1 -1
  362. package/build/esm/ontology/loadFullObjectMetadata.js +2 -1
  363. package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
  364. package/build/esm/ontology/loadInterfaceMetadata.js +2 -1
  365. package/build/esm/ontology/loadInterfaceMetadata.js.map +1 -1
  366. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  367. package/build/esm/util/UserAgent.js +2 -2
  368. package/build/esm/util/UserAgent.js.map +1 -1
  369. package/build/esm/util/exponentialBackoff.js +51 -0
  370. package/build/esm/util/exponentialBackoff.js.map +1 -0
  371. package/build/esm/util/exponentialBackoff.test.js +81 -0
  372. package/build/esm/util/exponentialBackoff.test.js.map +1 -0
  373. package/build/esm/util/extractObjectOrInterfaceType.js +9 -1
  374. package/build/esm/util/extractObjectOrInterfaceType.js.map +1 -1
  375. package/build/esm/util/extractObjectOrInterfaceType.test.js +2 -2
  376. package/build/esm/util/extractObjectOrInterfaceType.test.js.map +1 -1
  377. package/build/esm/util/streamutils.js +1 -1
  378. package/build/esm/util/streamutils.js.map +1 -1
  379. package/build/esm/util/toDataValue.js +15 -1
  380. package/build/esm/util/toDataValue.js.map +1 -1
  381. package/build/esm/util/toDataValue.test.js +42 -2
  382. package/build/esm/util/toDataValue.test.js.map +1 -1
  383. package/build/types/Client.d.ts +1 -1
  384. package/build/types/MinimalClientContext.d.ts +1 -0
  385. package/build/types/MinimalClientContext.d.ts.map +1 -1
  386. package/build/types/actions/applyAction.d.ts.map +1 -1
  387. package/build/types/createClient.d.ts +1 -0
  388. package/build/types/createClient.d.ts.map +1 -1
  389. package/build/types/index.d.ts +1 -1
  390. package/build/types/index.d.ts.map +1 -1
  391. package/build/types/object/fetchPage.d.ts.map +1 -1
  392. package/build/types/object/mediaUpload.d.ts +2 -1
  393. package/build/types/object/mediaUpload.d.ts.map +1 -1
  394. package/build/types/observable/LinkPayload.d.ts +9 -0
  395. package/build/types/observable/LinkPayload.d.ts.map +1 -0
  396. package/build/types/observable/ObjectPayload.d.ts +4 -0
  397. package/build/types/observable/ObjectPayload.d.ts.map +1 -1
  398. package/build/types/observable/ObservableClient/ObserveLink.d.ts +32 -0
  399. package/build/types/observable/ObservableClient/ObserveLink.d.ts.map +1 -0
  400. package/build/types/observable/ObservableClient/common.d.ts +67 -0
  401. package/build/types/observable/ObservableClient/common.d.ts.map +1 -0
  402. package/build/types/observable/ObservableClient.d.ts +103 -15
  403. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  404. package/build/types/observable/Unsubscribable.d.ts +3 -0
  405. package/build/types/observable/Unsubscribable.d.ts.map +1 -0
  406. package/build/types/observable/internal/AbstractHelper.d.ts +17 -0
  407. package/build/types/observable/internal/AbstractHelper.d.ts.map +1 -0
  408. package/build/types/observable/internal/BatchContext.d.ts +11 -0
  409. package/build/types/observable/internal/BatchContext.d.ts.map +1 -0
  410. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
  411. package/build/types/observable/internal/CacheKeys.d.ts +12 -6
  412. package/build/types/observable/internal/CacheKeys.d.ts.map +1 -1
  413. package/build/types/observable/internal/Changes.d.ts +8 -5
  414. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  415. package/build/types/observable/internal/KnownCacheKey.d.ts +4 -0
  416. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -0
  417. package/build/types/observable/internal/Layer.d.ts +6 -7
  418. package/build/types/observable/internal/Layer.d.ts.map +1 -1
  419. package/build/types/observable/internal/Layers.d.ts +26 -0
  420. package/build/types/observable/internal/Layers.d.ts.map +1 -0
  421. package/build/types/observable/internal/OrderByCanonicalizer.d.ts +0 -7
  422. package/build/types/observable/internal/OrderByCanonicalizer.d.ts.map +1 -1
  423. package/build/types/observable/internal/Queries.d.ts +9 -0
  424. package/build/types/observable/internal/Queries.d.ts.map +1 -0
  425. package/build/types/observable/internal/Query.d.ts +23 -6
  426. package/build/types/observable/internal/Query.d.ts.map +1 -1
  427. package/build/types/observable/internal/QuerySubscription.d.ts +1 -0
  428. package/build/types/observable/internal/QuerySubscription.d.ts.map +1 -0
  429. package/build/types/observable/internal/Store.d.ts +41 -51
  430. package/build/types/observable/internal/Store.d.ts.map +1 -1
  431. package/build/types/observable/internal/Store.invalidation.test.d.ts +1 -0
  432. package/build/types/observable/internal/Store.invalidation.test.d.ts.map +1 -0
  433. package/build/types/observable/internal/Store.test.d.ts +4 -1
  434. package/build/types/observable/internal/Store.test.d.ts.map +1 -1
  435. package/build/types/observable/internal/SubjectPayload.d.ts +5 -0
  436. package/build/types/observable/internal/SubjectPayload.d.ts.map +1 -0
  437. package/build/types/observable/internal/Subjects.d.ts +16 -0
  438. package/build/types/observable/internal/Subjects.d.ts.map +1 -0
  439. package/build/types/observable/internal/UnsubscribableWrapper.d.ts +1 -0
  440. package/build/types/observable/internal/UnsubscribableWrapper.d.ts.map +1 -0
  441. package/build/types/observable/internal/WeakRefTrie.d.ts +13 -0
  442. package/build/types/observable/internal/WeakRefTrie.d.ts.map +1 -0
  443. package/build/types/observable/internal/{ActionApplication.d.ts → actions/ActionApplication.d.ts} +2 -2
  444. package/build/types/observable/internal/{ActionApplication.d.ts.map → actions/ActionApplication.d.ts.map} +1 -1
  445. package/build/types/observable/internal/{OptimisticJob.d.ts → actions/OptimisticJob.d.ts} +4 -4
  446. package/build/types/observable/internal/actions/OptimisticJob.d.ts.map +1 -0
  447. package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts +64 -0
  448. package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts.map +1 -0
  449. package/build/types/observable/internal/base-list/BaseListQuery.d.ts +145 -0
  450. package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -0
  451. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts +39 -0
  452. package/build/types/observable/internal/base-list/createCollectionConnectable.d.ts.map +1 -0
  453. package/build/types/observable/internal/base-list/createCollectionConnectable.test.d.ts +1 -0
  454. package/build/types/observable/internal/base-list/createCollectionConnectable.test.d.ts.map +1 -0
  455. package/build/types/observable/internal/base-list/removeDuplicates.d.ts +11 -0
  456. package/build/types/observable/internal/base-list/removeDuplicates.d.ts.map +1 -0
  457. package/build/types/observable/internal/createInitEntry.d.ts +3 -0
  458. package/build/types/observable/internal/createInitEntry.d.ts.map +1 -0
  459. package/build/types/observable/internal/getObjectTypesThatInvalidate.d.ts +9 -0
  460. package/build/types/observable/internal/getObjectTypesThatInvalidate.d.ts.map +1 -0
  461. package/build/types/observable/internal/getObjectTypesThatInvalidate.test.d.ts +1 -0
  462. package/build/types/observable/internal/getObjectTypesThatInvalidate.test.d.ts.map +1 -0
  463. package/build/types/observable/internal/isObjectInstance.d.ts +5 -0
  464. package/build/types/observable/internal/isObjectInstance.d.ts.map +1 -0
  465. package/build/types/observable/internal/links/LinksHelper.d.ts +31 -0
  466. package/build/types/observable/internal/links/LinksHelper.d.ts.map +1 -0
  467. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts +17 -0
  468. package/build/types/observable/internal/links/SpecificLinkCacheKey.d.ts.map +1 -0
  469. package/build/types/observable/internal/links/SpecificLinkQuery.d.ts +47 -0
  470. package/build/types/observable/internal/links/SpecificLinkQuery.d.ts.map +1 -0
  471. package/build/types/observable/internal/list/InterfaceListQuery.d.ts +18 -0
  472. package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -0
  473. package/build/types/observable/internal/list/ListCacheKey.d.ts +7 -0
  474. package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -0
  475. package/build/types/observable/internal/list/ListQuery.d.ts +106 -0
  476. package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -0
  477. package/build/types/observable/internal/list/ListQueryOptions.d.ts +4 -0
  478. package/build/types/observable/internal/list/ListQueryOptions.d.ts.map +1 -0
  479. package/build/types/observable/internal/list/ListsHelper.d.ts +19 -0
  480. package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -0
  481. package/build/types/observable/internal/list/ObjectListQuery.d.ts +18 -0
  482. package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -0
  483. package/build/types/observable/internal/object/ObjectCacheKey.d.ts +5 -0
  484. package/build/types/observable/internal/object/ObjectCacheKey.d.ts.map +1 -0
  485. package/build/types/observable/internal/{ObjectQuery.d.ts → object/ObjectQuery.d.ts} +11 -9
  486. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -0
  487. package/build/types/observable/internal/object/ObjectsHelper.d.ts +11 -0
  488. package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -0
  489. package/build/types/observable/internal/sorting/SortingStrategy.d.ts +41 -0
  490. package/build/types/observable/internal/sorting/SortingStrategy.d.ts.map +1 -0
  491. package/build/types/observable/internal/testUtils/invalidateList.d.ts +9 -0
  492. package/build/types/observable/internal/testUtils/invalidateList.d.ts.map +1 -0
  493. package/build/types/observable/internal/testUtils/observeLink/expectStandardObserveLink.d.ts +46 -0
  494. package/build/types/observable/internal/testUtils/observeLink/expectStandardObserveLink.d.ts.map +1 -0
  495. package/build/types/observable/internal/testUtils/observeObject/expectStandardObserveObject.d.ts +26 -0
  496. package/build/types/observable/internal/testUtils/observeObject/expectStandardObserveObject.d.ts.map +1 -0
  497. package/build/types/observable/internal/testUtils.d.ts +26 -4
  498. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  499. package/build/types/public/unstable-do-not-use.d.ts +4 -2
  500. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  501. package/build/types/util/exponentialBackoff.d.ts +14 -0
  502. package/build/types/util/exponentialBackoff.d.ts.map +1 -0
  503. package/build/types/util/exponentialBackoff.test.d.ts +1 -0
  504. package/build/types/util/exponentialBackoff.test.d.ts.map +1 -0
  505. package/package.json +27 -27
  506. package/build/browser/observable/internal/ActionApplication.js.map +0 -1
  507. package/build/browser/observable/internal/ListQuery.js +0 -618
  508. package/build/browser/observable/internal/ListQuery.js.map +0 -1
  509. package/build/browser/observable/internal/ObjectQuery.js.map +0 -1
  510. package/build/browser/observable/internal/OptimisticJob.js.map +0 -1
  511. package/build/cjs/chunk-26WFEZQO.cjs.map +0 -1
  512. package/build/cjs/chunk-633AI7EA.cjs.map +0 -1
  513. package/build/esm/observable/internal/ActionApplication.js.map +0 -1
  514. package/build/esm/observable/internal/ListQuery.js +0 -618
  515. package/build/esm/observable/internal/ListQuery.js.map +0 -1
  516. package/build/esm/observable/internal/ObjectQuery.js.map +0 -1
  517. package/build/esm/observable/internal/OptimisticJob.js.map +0 -1
  518. package/build/types/observable/internal/ListQuery.d.ts +0 -88
  519. package/build/types/observable/internal/ListQuery.d.ts.map +0 -1
  520. package/build/types/observable/internal/ObjectQuery.d.ts.map +0 -1
  521. package/build/types/observable/internal/OptimisticJob.d.ts.map +0 -1
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { UnsubscribableWrapper } from "./UnsubscribableWrapper.js";
18
+ let subscriptionIdCounter = 0;
19
+
20
+ /** @internal */
21
+ export class QuerySubscription extends UnsubscribableWrapper {
22
+ /** @internal */
23
+
24
+ /** @internal */
25
+
26
+ /** @internal */
27
+
28
+ constructor(query, subscription) {
29
+ super(subscription);
30
+ this.query = query;
31
+ this.subscription = subscription;
32
+ this.subscriptionId = `sub_${++subscriptionIdCounter}`;
33
+
34
+ // hide these from introspection
35
+ Object.defineProperties(this, {
36
+ query: {
37
+ enumerable: false
38
+ },
39
+ subscription: {
40
+ enumerable: false
41
+ },
42
+ subscriptionId: {
43
+ enumerable: false
44
+ }
45
+ });
46
+ }
47
+ }
48
+ //# sourceMappingURL=QuerySubscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuerySubscription.js","names":["UnsubscribableWrapper","subscriptionIdCounter","QuerySubscription","constructor","query","subscription","subscriptionId","Object","defineProperties","enumerable"],"sources":["QuerySubscription.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 { Subscription } from \"rxjs\";\nimport type {\n CommonObserveOptions,\n ObserveOptions,\n} from \"../ObservableClient/common.js\";\nimport type { KnownCacheKey } from \"./KnownCacheKey.js\";\nimport type { Query } from \"./Query.js\";\nimport { UnsubscribableWrapper } from \"./UnsubscribableWrapper.js\";\n\nlet subscriptionIdCounter = 0;\n\n/** @internal */\nexport class QuerySubscription<\n TQuery extends Query<\n KnownCacheKey,\n unknown,\n CommonObserveOptions & ObserveOptions\n >,\n> extends UnsubscribableWrapper {\n /** @internal */\n query: TQuery;\n\n /** @internal */\n subscription: Subscription;\n\n /** @internal */\n subscriptionId: string;\n\n constructor(query: TQuery, subscription: Subscription) {\n super(subscription);\n this.query = query;\n this.subscription = subscription;\n this.subscriptionId = `sub_${++subscriptionIdCounter}`;\n\n // hide these from introspection\n Object.defineProperties(this, {\n query: { enumerable: false },\n subscription: { enumerable: false },\n subscriptionId: { enumerable: false },\n });\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,qBAAqB,QAAQ,4BAA4B;AAElE,IAAIC,qBAAqB,GAAG,CAAC;;AAE7B;AACA,OAAO,MAAMC,iBAAiB,SAMpBF,qBAAqB,CAAC;EAC9B;;EAGA;;EAGA;;EAGAG,WAAWA,CAACC,KAAa,EAAEC,YAA0B,EAAE;IACrD,KAAK,CAACA,YAAY,CAAC;IACnB,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,cAAc,GAAG,OAAO,EAAEL,qBAAqB,EAAE;;IAEtD;IACAM,MAAM,CAACC,gBAAgB,CAAC,IAAI,EAAE;MAC5BJ,KAAK,EAAE;QAAEK,UAAU,EAAE;MAAM,CAAC;MAC5BJ,YAAY,EAAE;QAAEI,UAAU,EAAE;MAAM,CAAC;MACnCH,cAAc,EAAE;QAAEG,UAAU,EAAE;MAAM;IACtC,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -0,0 +1,646 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { Employee, Office, Todo } from "@osdk/client.test.ontology";
18
+ import { FauxFoundry, ontologies, startNodeApiServer, stubData } from "@osdk/shared.test";
19
+ import invariant from "tiny-invariant";
20
+ import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
21
+ import { createClient } from "../../createClient.js";
22
+ import { TestLogger } from "../../logger/TestLogger.js";
23
+ import { Store } from "./Store.js";
24
+ import { createDefer, mockListSubCallback, updateList } from "./testUtils.js";
25
+ import { expectStandardObserveLink } from "./testUtils/observeLink/expectStandardObserveLink.js";
26
+ import { expectStandardObserveObject } from "./testUtils/observeObject/expectStandardObserveObject.js";
27
+
28
+ // Defer utility to track subscriptions for cleanup
29
+ const defer = createDefer();
30
+
31
+ // Logger setup
32
+ const logger = new TestLogger({}, {
33
+ // level: "debug",
34
+ });
35
+
36
+ // Constants for test objects
37
+ const EMPLOYEE_1_ID = 1;
38
+ const EMPLOYEE_2_ID = 2;
39
+ const OFFICE_1_ID = "101";
40
+ const OFFICE_2_ID = "102";
41
+ const TODO_1_ID = 201;
42
+ const TODO_2_ID = 202;
43
+ describe("Store Invalidation Type Isolation", () => {
44
+ let client;
45
+ let cache;
46
+ let fauxFoundry;
47
+ function setupOntology(fauxFoundry) {
48
+ const fauxOntology = fauxFoundry.getDefaultOntology();
49
+ ontologies.addEmployeeOntology(fauxOntology);
50
+ fauxFoundry.getDefaultOntology().registerObjectType(stubData.todoWithLinkTypes);
51
+ fauxFoundry.getDefaultOntology().registerActionType(stubData.editTodo.actionTypeV2, (b, payload) => {
52
+ const {
53
+ id,
54
+ ...other
55
+ } = payload.parameters;
56
+ b.modifyObject(Todo.apiName, id, {
57
+ ...other
58
+ });
59
+ });
60
+ }
61
+ function setupTestObjects(fauxFoundry) {
62
+ const dataStore = fauxFoundry.getDefaultDataStore();
63
+
64
+ // Create Employees
65
+ const emp1 = dataStore.registerObject(Employee, {
66
+ employeeId: EMPLOYEE_1_ID,
67
+ fullName: "Employee One"
68
+ });
69
+ const emp2 = dataStore.registerObject(Employee, {
70
+ employeeId: EMPLOYEE_2_ID,
71
+ fullName: "Employee Two"
72
+ });
73
+
74
+ // Create Offices
75
+ const office1 = dataStore.registerObject(Office, {
76
+ officeId: OFFICE_1_ID,
77
+ name: "Office One"
78
+ });
79
+ const office2 = dataStore.registerObject(Office, {
80
+ officeId: OFFICE_2_ID,
81
+ name: "Office Two"
82
+ });
83
+
84
+ // Create Todos
85
+ const todo1 = dataStore.registerObject(Todo, {
86
+ $apiName: "Todo",
87
+ id: TODO_1_ID,
88
+ text: "Todo One"
89
+ });
90
+ const todo2 = dataStore.registerObject(Todo, {
91
+ $apiName: "Todo",
92
+ id: TODO_2_ID,
93
+ text: "Todo Two"
94
+ });
95
+
96
+ // Link employees to offices
97
+ dataStore.registerLink(emp1, "officeLink", office1, "occupants");
98
+ dataStore.registerLink(emp2, "officeLink", office2, "occupants");
99
+
100
+ // Link employees to todos (we're not using these links in this test, but showing different link patterns)
101
+ // Note: There are no direct Todo-Employee links in the test ontology
102
+ }
103
+ beforeAll(async () => {
104
+ // Set up the mock environment and client
105
+ const testSetup = startNodeApiServer(new FauxFoundry("https://stack.palantir.com/"), createClient, {
106
+ logger
107
+ });
108
+ ({
109
+ client,
110
+ fauxFoundry
111
+ } = testSetup);
112
+
113
+ // Set up the test ontology and data
114
+ setupOntology(fauxFoundry);
115
+ setupTestObjects(fauxFoundry);
116
+ return () => {
117
+ testSetup.apiServer.close();
118
+ };
119
+ });
120
+ beforeEach(() => {
121
+ vi.resetAllMocks();
122
+ cache = new Store(client);
123
+ return () => {
124
+ cache = undefined;
125
+ };
126
+ });
127
+ describe("Object Type Isolation", () => {
128
+ it("invalidating Employee type should not affect Office objects", async () => {
129
+ // Set up observations for an Employee and Office object
130
+ const {
131
+ payload: emp1Payload,
132
+ subFn: empSubFn
133
+ } = await expectStandardObserveObject({
134
+ cache,
135
+ type: Employee,
136
+ primaryKey: EMPLOYEE_1_ID
137
+ });
138
+ const emp1 = emp1Payload?.object;
139
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
140
+ const {
141
+ payload: office1Payload,
142
+ subFn: officeSubFn
143
+ } = await expectStandardObserveObject({
144
+ cache,
145
+ type: Office,
146
+ primaryKey: OFFICE_1_ID
147
+ });
148
+ const office1 = office1Payload?.object;
149
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
150
+
151
+ // Clear the initial calls
152
+ empSubFn.next.mockClear();
153
+ officeSubFn.next.mockClear();
154
+
155
+ // Invalidate only the Employee type
156
+ await cache.invalidateObjectType(Employee, undefined);
157
+
158
+ // Allow time for any potential updates
159
+ await new Promise(resolve => setTimeout(resolve, 500));
160
+
161
+ // Employee should be updated
162
+ expect(empSubFn.next).toHaveBeenCalled();
163
+
164
+ // Office object should NOT receive any updates
165
+ expect(officeSubFn.next).not.toHaveBeenCalled();
166
+ });
167
+ it("invalidating Office type should not affect Employee objects", async () => {
168
+ // Set up observations for an Employee and Office object
169
+ const {
170
+ payload: emp1Payload,
171
+ subFn: empSubFn
172
+ } = await expectStandardObserveObject({
173
+ cache,
174
+ type: Employee,
175
+ primaryKey: EMPLOYEE_1_ID
176
+ });
177
+ const emp1 = emp1Payload?.object;
178
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
179
+ const {
180
+ payload: office1Payload,
181
+ subFn: officeSubFn
182
+ } = await expectStandardObserveObject({
183
+ cache,
184
+ type: Office,
185
+ primaryKey: OFFICE_1_ID
186
+ });
187
+ const office1 = office1Payload?.object;
188
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
189
+
190
+ // Clear the initial calls
191
+ empSubFn.next.mockClear();
192
+ officeSubFn.next.mockClear();
193
+
194
+ // Invalidate only the Office type
195
+ await cache.invalidateObjectType(Office, undefined);
196
+
197
+ // Allow time for any potential updates
198
+ await new Promise(resolve => setTimeout(resolve, 500));
199
+
200
+ // Office should be updated
201
+ expect(officeSubFn.next).toHaveBeenCalled();
202
+
203
+ // Employee object should NOT receive any updates
204
+ expect(empSubFn.next).not.toHaveBeenCalled();
205
+ });
206
+ it("invalidating Todo type should not affect Employee or Office objects", async () => {
207
+ // Set up observations for Employee, Office, and Todo objects
208
+ const {
209
+ payload: emp1Payload,
210
+ subFn: empSubFn
211
+ } = await expectStandardObserveObject({
212
+ cache,
213
+ type: Employee,
214
+ primaryKey: EMPLOYEE_1_ID
215
+ });
216
+ const emp1 = emp1Payload?.object;
217
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
218
+ const {
219
+ payload: office1Payload,
220
+ subFn: officeSubFn
221
+ } = await expectStandardObserveObject({
222
+ cache,
223
+ type: Office,
224
+ primaryKey: OFFICE_1_ID
225
+ });
226
+ const office1 = office1Payload?.object;
227
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
228
+ const {
229
+ payload: todo1Payload,
230
+ subFn: todoSubFn
231
+ } = await expectStandardObserveObject({
232
+ cache,
233
+ type: Todo,
234
+ primaryKey: TODO_1_ID
235
+ });
236
+ const todo1 = todo1Payload?.object;
237
+ !todo1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
238
+
239
+ // Clear the initial calls
240
+ empSubFn.next.mockClear();
241
+ officeSubFn.next.mockClear();
242
+ todoSubFn.next.mockClear();
243
+
244
+ // Invalidate only the Todo type
245
+ await cache.invalidateObjectType(Todo, undefined);
246
+
247
+ // Allow time for any potential updates
248
+ await new Promise(resolve => setTimeout(resolve, 500));
249
+
250
+ // Todo should be updated
251
+ expect(todoSubFn.next).toHaveBeenCalled();
252
+
253
+ // Employee and Office objects should NOT receive any updates
254
+ expect(empSubFn.next).not.toHaveBeenCalled();
255
+ expect(officeSubFn.next).not.toHaveBeenCalled();
256
+ });
257
+ });
258
+ describe("List Query Isolation", () => {
259
+ it("invalidating Employee type should only affect Employee lists", async () => {
260
+ // Pre-seed the cache with lists - need to fetch the objects first to get proper instances
261
+ const emp1 = await client(Employee).fetchOne(EMPLOYEE_1_ID);
262
+ const emp2 = await client(Employee).fetchOne(EMPLOYEE_2_ID);
263
+ const office1 = await client(Office).fetchOne(OFFICE_1_ID);
264
+ const office2 = await client(Office).fetchOne(OFFICE_2_ID);
265
+ updateList(cache, {
266
+ type: Employee,
267
+ where: {},
268
+ orderBy: {}
269
+ }, [emp1, emp2]);
270
+ updateList(cache, {
271
+ type: Office,
272
+ where: {},
273
+ orderBy: {}
274
+ }, [office1, office2]);
275
+
276
+ // Set up list observations
277
+ const empListSubFn = mockListSubCallback();
278
+ defer(cache.lists.observe({
279
+ type: Employee,
280
+ where: {},
281
+ orderBy: {},
282
+ mode: "offline"
283
+ }, empListSubFn));
284
+ const officeListSubFn = mockListSubCallback();
285
+ defer(cache.lists.observe({
286
+ type: Office,
287
+ where: {},
288
+ orderBy: {},
289
+ mode: "offline"
290
+ }, officeListSubFn));
291
+
292
+ // Wait for the initial calls and clear them
293
+ await new Promise(resolve => setTimeout(resolve, 100));
294
+ empListSubFn.next.mockClear();
295
+ officeListSubFn.next.mockClear();
296
+
297
+ // Invalidate only the Employee type
298
+ await cache.invalidateObjectType(Employee, undefined);
299
+
300
+ // Allow time for any potential updates
301
+ await new Promise(resolve => setTimeout(resolve, 500));
302
+
303
+ // Employee list should be updated
304
+ expect(empListSubFn.next).toHaveBeenCalled();
305
+
306
+ // Office list should NOT be invalidated
307
+ expect(officeListSubFn.next).not.toHaveBeenCalled();
308
+ });
309
+ });
310
+ describe("Link Query Isolation", () => {
311
+ it("basic source object filtering works for direct invalidation", async () => {
312
+ // Get an Office object that has Employee occupants
313
+ const {
314
+ payload: office1Payload,
315
+ subFn: officeSubFn
316
+ } = await expectStandardObserveObject({
317
+ cache,
318
+ type: Office,
319
+ primaryKey: OFFICE_1_ID
320
+ });
321
+ const office1 = office1Payload?.object;
322
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
323
+
324
+ // Get an Employee object
325
+ const {
326
+ payload: emp1Payload,
327
+ subFn: empSubFn
328
+ } = await expectStandardObserveObject({
329
+ cache,
330
+ type: Employee,
331
+ primaryKey: EMPLOYEE_1_ID
332
+ });
333
+ const emp1 = emp1Payload?.object;
334
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
335
+
336
+ // Set up observation of Employee -> Office link
337
+ const {
338
+ linkSubFn: officeLinkSubFn
339
+ } = await expectStandardObserveLink({
340
+ store: cache,
341
+ srcObject: emp1,
342
+ srcLinkName: "officeLink",
343
+ targetType: Office,
344
+ expected: [expect.objectContaining({
345
+ $primaryKey: OFFICE_1_ID
346
+ })]
347
+ });
348
+
349
+ // Clear initial calls
350
+ officeSubFn.next.mockClear();
351
+ empSubFn.next.mockClear();
352
+ officeLinkSubFn.next.mockClear();
353
+
354
+ // Invalidate the Employee type
355
+ await cache.invalidateObjectType(Employee, undefined);
356
+
357
+ // Allow time for any potential updates
358
+ await new Promise(resolve => setTimeout(resolve, 500));
359
+
360
+ // Employee object should be invalidated
361
+ expect(empSubFn.next).toHaveBeenCalled();
362
+
363
+ // Employee -> Office link (with Employee source) should be invalidated
364
+ // because its source is an Employee object
365
+ expect(officeLinkSubFn.next).toHaveBeenCalled();
366
+ });
367
+ });
368
+ describe("Complex Multi-Type Scenario", () => {
369
+ it("should correctly isolate invalidation across multiple related objects", async () => {
370
+ // Set up observations for all three object types
371
+ const {
372
+ payload: emp1Payload,
373
+ subFn: empSubFn
374
+ } = await expectStandardObserveObject({
375
+ cache,
376
+ type: Employee,
377
+ primaryKey: EMPLOYEE_1_ID
378
+ });
379
+ const emp1 = emp1Payload?.object;
380
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
381
+ const {
382
+ payload: office1Payload,
383
+ subFn: officeSubFn
384
+ } = await expectStandardObserveObject({
385
+ cache,
386
+ type: Office,
387
+ primaryKey: OFFICE_1_ID
388
+ });
389
+ const office1 = office1Payload?.object;
390
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
391
+ const {
392
+ payload: todo1Payload,
393
+ subFn: todoSubFn
394
+ } = await expectStandardObserveObject({
395
+ cache,
396
+ type: Todo,
397
+ primaryKey: TODO_1_ID
398
+ });
399
+ const todo1 = todo1Payload?.object;
400
+ !todo1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
401
+
402
+ // Set up list observations
403
+ const empListSubFn = mockListSubCallback();
404
+ defer(cache.lists.observe({
405
+ type: Employee,
406
+ where: {},
407
+ orderBy: {},
408
+ mode: "offline"
409
+ }, empListSubFn));
410
+ const officeListSubFn = mockListSubCallback();
411
+ defer(cache.lists.observe({
412
+ type: Office,
413
+ where: {},
414
+ orderBy: {},
415
+ mode: "offline"
416
+ }, officeListSubFn));
417
+ const todoListSubFn = mockListSubCallback();
418
+ defer(cache.lists.observe({
419
+ type: Todo,
420
+ where: {},
421
+ orderBy: {},
422
+ mode: "offline"
423
+ }, todoListSubFn));
424
+
425
+ // Set up link observations
426
+ const {
427
+ linkSubFn: employeeOfficeLinkSubFn
428
+ } = await expectStandardObserveLink({
429
+ store: cache,
430
+ srcObject: emp1,
431
+ srcLinkName: "officeLink",
432
+ targetType: Office,
433
+ expected: [expect.objectContaining({
434
+ $primaryKey: OFFICE_1_ID
435
+ })]
436
+ });
437
+
438
+ // Setup another link observation for the test
439
+ const {
440
+ linkSubFn: officeOccupantsLinkSubFn
441
+ } = await expectStandardObserveLink({
442
+ store: cache,
443
+ srcObject: office1,
444
+ srcLinkName: "occupants",
445
+ targetType: Employee,
446
+ expected: [expect.objectContaining({
447
+ $primaryKey: EMPLOYEE_1_ID
448
+ })]
449
+ });
450
+
451
+ // Clear all the initial calls
452
+ empSubFn.next.mockClear();
453
+ officeSubFn.next.mockClear();
454
+ todoSubFn.next.mockClear();
455
+ empListSubFn.next.mockClear();
456
+ officeListSubFn.next.mockClear();
457
+ todoListSubFn.next.mockClear();
458
+ employeeOfficeLinkSubFn.next.mockClear();
459
+ officeOccupantsLinkSubFn.next.mockClear();
460
+
461
+ // Invalidate only the Todo type
462
+ await cache.invalidateObjectType(Todo, undefined);
463
+
464
+ // Allow time for any potential updates
465
+ await new Promise(resolve => setTimeout(resolve, 500));
466
+
467
+ // Todo object and list should be invalidated
468
+ expect(todoSubFn.next).toHaveBeenCalled();
469
+ expect(todoListSubFn.next).toHaveBeenCalled();
470
+
471
+ // All Employee and Office related items should NOT be invalidated
472
+ expect(empSubFn.next).not.toHaveBeenCalled();
473
+ expect(officeSubFn.next).not.toHaveBeenCalled();
474
+ expect(empListSubFn.next).not.toHaveBeenCalled();
475
+ expect(officeListSubFn.next).not.toHaveBeenCalled();
476
+ expect(employeeOfficeLinkSubFn.next).not.toHaveBeenCalled();
477
+ expect(officeOccupantsLinkSubFn.next).not.toHaveBeenCalled();
478
+ });
479
+ });
480
+ describe("invalidateAll", () => {
481
+ it("should invalidate all cached queries", async () => {
482
+ const {
483
+ subFn: empSubFn
484
+ } = await expectStandardObserveObject({
485
+ cache,
486
+ type: Employee,
487
+ primaryKey: EMPLOYEE_1_ID
488
+ });
489
+ const {
490
+ subFn: officeSubFn
491
+ } = await expectStandardObserveObject({
492
+ cache,
493
+ type: Office,
494
+ primaryKey: OFFICE_1_ID
495
+ });
496
+ const {
497
+ subFn: todoSubFn
498
+ } = await expectStandardObserveObject({
499
+ cache,
500
+ type: Todo,
501
+ primaryKey: TODO_1_ID
502
+ });
503
+ empSubFn.next.mockClear();
504
+ officeSubFn.next.mockClear();
505
+ todoSubFn.next.mockClear();
506
+ await cache.invalidateAll();
507
+ await new Promise(resolve => setTimeout(resolve, 500));
508
+ expect(empSubFn.next).toHaveBeenCalled();
509
+ expect(officeSubFn.next).toHaveBeenCalled();
510
+ expect(todoSubFn.next).toHaveBeenCalled();
511
+ });
512
+ it("should invalidate all list queries", async () => {
513
+ const empListSubFn = mockListSubCallback();
514
+ defer(cache.lists.observe({
515
+ type: Employee,
516
+ where: {},
517
+ orderBy: {},
518
+ pageSize: 10
519
+ }, empListSubFn));
520
+ const officeListSubFn = mockListSubCallback();
521
+ defer(cache.lists.observe({
522
+ type: Office,
523
+ where: {},
524
+ orderBy: {},
525
+ pageSize: 10
526
+ }, officeListSubFn));
527
+ await new Promise(resolve => setTimeout(resolve, 100));
528
+ empListSubFn.next.mockClear();
529
+ officeListSubFn.next.mockClear();
530
+ await cache.invalidateAll();
531
+ await new Promise(resolve => setTimeout(resolve, 500));
532
+ expect(empListSubFn.next).toHaveBeenCalled();
533
+ expect(officeListSubFn.next).toHaveBeenCalled();
534
+ });
535
+ });
536
+ describe("invalidateObjects", () => {
537
+ it("should invalidate a single object", async () => {
538
+ const {
539
+ subFn: empSubFn
540
+ } = await expectStandardObserveObject({
541
+ cache,
542
+ type: Employee,
543
+ primaryKey: EMPLOYEE_1_ID
544
+ });
545
+ const {
546
+ subFn: emp2SubFn
547
+ } = await expectStandardObserveObject({
548
+ cache,
549
+ type: Employee,
550
+ primaryKey: EMPLOYEE_2_ID
551
+ });
552
+ empSubFn.next.mockClear();
553
+ emp2SubFn.next.mockClear();
554
+ const emp1 = await client(Employee).fetchOne(EMPLOYEE_1_ID);
555
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
556
+ await cache.invalidateObjects(emp1);
557
+ await new Promise(resolve => setTimeout(resolve, 500));
558
+ expect(empSubFn.next).toHaveBeenCalled();
559
+ expect(emp2SubFn.next).not.toHaveBeenCalled();
560
+ });
561
+ it("should invalidate multiple objects", async () => {
562
+ const {
563
+ subFn: empSubFn
564
+ } = await expectStandardObserveObject({
565
+ cache,
566
+ type: Employee,
567
+ primaryKey: EMPLOYEE_1_ID
568
+ });
569
+ const {
570
+ subFn: emp2SubFn
571
+ } = await expectStandardObserveObject({
572
+ cache,
573
+ type: Employee,
574
+ primaryKey: EMPLOYEE_2_ID
575
+ });
576
+ const {
577
+ subFn: officeSubFn
578
+ } = await expectStandardObserveObject({
579
+ cache,
580
+ type: Office,
581
+ primaryKey: OFFICE_1_ID
582
+ });
583
+ empSubFn.next.mockClear();
584
+ emp2SubFn.next.mockClear();
585
+ officeSubFn.next.mockClear();
586
+ const emp1 = await client(Employee).fetchOne(EMPLOYEE_1_ID);
587
+ const emp2 = await client(Employee).fetchOne(EMPLOYEE_2_ID);
588
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
589
+ !emp2 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
590
+ await cache.invalidateObjects([emp1, emp2]);
591
+ await new Promise(resolve => setTimeout(resolve, 500));
592
+ expect(empSubFn.next).toHaveBeenCalled();
593
+ expect(emp2SubFn.next).toHaveBeenCalled();
594
+ expect(officeSubFn.next).not.toHaveBeenCalled();
595
+ });
596
+ it("should invalidate mixed object types", async () => {
597
+ const {
598
+ subFn: empSubFn
599
+ } = await expectStandardObserveObject({
600
+ cache,
601
+ type: Employee,
602
+ primaryKey: EMPLOYEE_1_ID
603
+ });
604
+ const {
605
+ subFn: officeSubFn
606
+ } = await expectStandardObserveObject({
607
+ cache,
608
+ type: Office,
609
+ primaryKey: OFFICE_1_ID
610
+ });
611
+ const {
612
+ subFn: todoSubFn
613
+ } = await expectStandardObserveObject({
614
+ cache,
615
+ type: Todo,
616
+ primaryKey: TODO_1_ID
617
+ });
618
+ empSubFn.next.mockClear();
619
+ officeSubFn.next.mockClear();
620
+ todoSubFn.next.mockClear();
621
+ const emp1 = await client(Employee).fetchOne(EMPLOYEE_1_ID);
622
+ const office1 = await client(Office).fetchOne(OFFICE_1_ID);
623
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
624
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
625
+ await cache.invalidateObjects([emp1, office1]);
626
+ await new Promise(resolve => setTimeout(resolve, 500));
627
+ expect(empSubFn.next).toHaveBeenCalled();
628
+ expect(officeSubFn.next).toHaveBeenCalled();
629
+ expect(todoSubFn.next).not.toHaveBeenCalled();
630
+ });
631
+ it("should handle empty array", async () => {
632
+ const {
633
+ subFn: empSubFn
634
+ } = await expectStandardObserveObject({
635
+ cache,
636
+ type: Employee,
637
+ primaryKey: EMPLOYEE_1_ID
638
+ });
639
+ empSubFn.next.mockClear();
640
+ await cache.invalidateObjects([]);
641
+ await new Promise(resolve => setTimeout(resolve, 500));
642
+ expect(empSubFn.next).not.toHaveBeenCalled();
643
+ });
644
+ });
645
+ });
646
+ //# sourceMappingURL=Store.invalidation.test.js.map