@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
@@ -14,21 +14,29 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { editTodo, Employee, FooInterface, Todo } from "@osdk/client.test.ontology";
17
+ import { editTodo, Employee, FooInterface, Office, Todo } from "@osdk/client.test.ontology";
18
18
  import { FauxFoundry, ontologies, startNodeApiServer, stubData, TypeHelpers } from "@osdk/shared.test";
19
19
  import chalk from "chalk";
20
+ import { inspect } from "node:util";
20
21
  import invariant from "tiny-invariant";
21
- import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, vitest } from "vitest";
22
+ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
22
23
  import { ActionValidationError } from "../../actions/ActionValidationError.js";
23
24
  import { createClient } from "../../createClient.js";
24
25
  import { TestLogger } from "../../logger/TestLogger.js";
26
+ import { runOptimisticJob } from "./actions/OptimisticJob.js";
25
27
  import { createOptimisticId } from "./OptimisticId.js";
26
- import { runOptimisticJob } from "./OptimisticJob.js";
27
- import { invalidateList, Store } from "./Store.js";
28
- import { applyCustomMatchers, createClientMockHelper, createDefer, expectNoMoreCalls, expectSingleListCallAndClear, expectSingleObjectCallAndClear, getObject, mockListSubCallback, mockSingleSubCallback, objectPayloadContaining, updateList, updateObject, waitForCall } from "./testUtils.js";
28
+ import { Store } from "./Store.js";
29
+ import { applyCustomMatchers, createClientMockHelper, createDefer, expectNoMoreCalls, expectSingleLinkCallAndClear, expectSingleListCallAndClear, expectSingleObjectCallAndClear, getObject, mockListSubCallback, mockSingleSubCallback, objectPayloadContaining, updateList, updateObject, waitForCall } from "./testUtils.js";
30
+ import { invalidateList } from "./testUtils/invalidateList.js";
31
+ import { expectStandardObserveLink } from "./testUtils/observeLink/expectStandardObserveLink.js";
32
+ import { expectStandardObserveObject } from "./testUtils/observeObject/expectStandardObserveObject.js";
29
33
  const JOHN_DOE_ID = 50030;
30
34
  const defer = createDefer();
31
- const logger = new TestLogger();
35
+ const logger = new TestLogger({}, {
36
+ level: "debug"
37
+ });
38
+ inspect.defaultOptions.depth = 9;
39
+ inspect.defaultOptions.colors = true;
32
40
  beforeAll(() => {
33
41
  vi.setConfig({
34
42
  fakeTimers: {
@@ -75,10 +83,10 @@ function setupOntology(fauxFoundry) {
75
83
  }
76
84
  function setupSomeEmployees(fauxFoundry) {
77
85
  const dataStore = fauxFoundry.getDefaultDataStore();
78
- dataStore.registerObject(Employee, {
86
+ const emp1 = dataStore.registerObject(Employee, {
79
87
  employeeId: 1
80
88
  });
81
- dataStore.registerObject(Employee, {
89
+ const emp2 = dataStore.registerObject(Employee, {
82
90
  employeeId: 2
83
91
  });
84
92
  dataStore.registerObject(Employee, {
@@ -89,16 +97,214 @@ function setupSomeEmployees(fauxFoundry) {
89
97
  $apiName: "Employee",
90
98
  employeeId: 4
91
99
  });
92
- dataStore.registerObject(Employee, {
100
+ const johnDoe = dataStore.registerObject(Employee, {
93
101
  $apiName: "Employee",
94
102
  employeeId: JOHN_DOE_ID,
95
103
  fullName: "John Doe"
96
104
  });
105
+ dataStore.registerLink(emp1, "peeps", johnDoe, "lead");
106
+
107
+ // Create offices
108
+ const office1 = dataStore.registerObject(Office, {
109
+ officeId: "101",
110
+ name: "Office 1"
111
+ });
112
+ const office2 = dataStore.registerObject(Office, {
113
+ officeId: "102",
114
+ name: "Office 2"
115
+ });
116
+
117
+ // Link employees to offices (Employee->Office: officeLink, Office->Employee: occupants)
118
+ dataStore.registerLink(emp1, "officeLink", office1, "occupants");
119
+ dataStore.registerLink(emp2, "officeLink", office2, "occupants");
97
120
  }
98
121
  describe(Store, () => {
122
+ describe("observeLinks", () => {
123
+ let client;
124
+ let cache;
125
+ let fauxFoundry;
126
+ beforeAll(async () => {
127
+ // Set up the mock environment and client
128
+ const testSetup = startNodeApiServer(new FauxFoundry("https://stack.palantir.com/"), createClient, {
129
+ logger
130
+ });
131
+ ({
132
+ client,
133
+ fauxFoundry
134
+ } = testSetup);
135
+
136
+ // Use the existing setup function that adds Employee objects
137
+ setupOntology(fauxFoundry);
138
+ setupSomeEmployees(fauxFoundry);
139
+ return () => {
140
+ testSetup.apiServer.close();
141
+ };
142
+ });
143
+ beforeEach(() => {
144
+ cache = new Store(client);
145
+ return () => {
146
+ cache = undefined;
147
+ };
148
+ });
149
+ const objectLikeJohnDoe = expect.objectContaining({
150
+ $apiName: "Employee",
151
+ $primaryKey: JOHN_DOE_ID
152
+ });
153
+ expect.objectContaining({
154
+ $apiName: "Employee",
155
+ $primaryKey: 2
156
+ });
157
+ it("removing link updates", async () => {
158
+ const {
159
+ payload: emp1Payload,
160
+ subFn
161
+ } = await expectStandardObserveObject({
162
+ cache,
163
+ type: Employee,
164
+ primaryKey: 1
165
+ });
166
+ const emp1 = emp1Payload?.object;
167
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
168
+
169
+ // Set up mock callback for observing links
170
+ const {
171
+ payload,
172
+ linkSubFn
173
+ } = await expectStandardObserveLink({
174
+ store: cache,
175
+ srcObject: emp1,
176
+ srcLinkName: "peeps",
177
+ targetType: Employee,
178
+ expected: [objectLikeJohnDoe]
179
+ });
180
+
181
+ // Unregister the link "in the backend"
182
+ fauxFoundry.getDefaultDataStore().unregisterLink(asBsoStub(emp1), "peeps", {
183
+ __apiName: "Employee",
184
+ __primaryKey: JOHN_DOE_ID
185
+ }, "lead");
186
+ testStage("Observing Employee 1's peeps");
187
+
188
+ // Invalidate the employee cache
189
+ const invalidateEmployeePromise = cache.invalidateObjectType("Employee", undefined);
190
+ await waitForCall(linkSubFn);
191
+ // Initially go to an invalidated loading state
192
+ expectSingleLinkCallAndClear(linkSubFn, [objectLikeJohnDoe], {
193
+ status: "loading"
194
+ });
195
+ await invalidateEmployeePromise;
196
+
197
+ // Should have no peeps now
198
+ expectSingleLinkCallAndClear(linkSubFn, [], {
199
+ status: "loaded"
200
+ });
201
+ });
202
+ it("invalidating Employee type only invalidates links, not Office objects", async () => {
203
+ // Get an Office object that has Employee occupants
204
+ const {
205
+ payload: office1Payload,
206
+ subFn: officeSubFn
207
+ } = await expectStandardObserveObject({
208
+ cache,
209
+ type: Office,
210
+ primaryKey: "101"
211
+ });
212
+ const office1 = office1Payload?.object;
213
+ !office1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
214
+ expect(await office1.$link.occupants.fetchPage()).toMatchInlineSnapshot(`
215
+ {
216
+ "data": [
217
+ {
218
+ "$apiName": "Employee",
219
+ "$objectSpecifier": "Employee:1",
220
+ "$objectType": "Employee",
221
+ "$primaryKey": 1,
222
+ "$title": undefined,
223
+ "employeeId": 1,
224
+ "office": "101",
225
+ },
226
+ ],
227
+ "nextPageToken": undefined,
228
+ "totalCount": undefined,
229
+ }
230
+ `);
231
+ testStage("Observing Employee 1");
232
+
233
+ // Get an Employee object linked to the office
234
+ const {
235
+ payload: emp1Payload,
236
+ subFn: empSubFn
237
+ } = await expectStandardObserveObject({
238
+ cache,
239
+ type: Employee,
240
+ primaryKey: 1
241
+ });
242
+ const emp1 = emp1Payload?.object;
243
+ !emp1 ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
244
+ testStage("Observing Office 101's occupants");
245
+
246
+ // Set up observation of occupants link
247
+ const {
248
+ linkSubFn: occupantsLinkSubFn
249
+ } = await expectStandardObserveLink({
250
+ store: cache,
251
+ srcObject: office1,
252
+ srcLinkName: "occupants",
253
+ targetType: Employee,
254
+ expected: [expect.objectContaining({
255
+ $primaryKey: 1
256
+ })]
257
+ });
258
+
259
+ // Clear any initial calls
260
+ officeSubFn.next.mockClear();
261
+ empSubFn.next.mockClear();
262
+ occupantsLinkSubFn.next.mockClear();
263
+ testStage("Invalidating Employee object type");
264
+
265
+ // Invalidate the Employee object type
266
+ // This should cause:
267
+ // - any object query for Employee to be invalidated
268
+ // - any object list query for Employee to be invalidated
269
+ // - any link queries where the source is an Employee to be invalidated
270
+ // - any link queries where the target is an Employee to be invalidated
271
+ const invalidateEmployeePromise = cache.invalidateObjectType(Employee, undefined);
272
+
273
+ // The link should be invalidated (loading state)
274
+ await waitForCall(occupantsLinkSubFn, 1);
275
+ expectSingleLinkCallAndClear(occupantsLinkSubFn, [emp1], {
276
+ status: "loading"
277
+ });
278
+
279
+ // The employee should be invalidated (loading state)
280
+ await waitForCall(empSubFn, 1);
281
+ expectSingleObjectCallAndClear(empSubFn, emp1, "loading");
282
+
283
+ // The link should be revalidated (loaded state)
284
+ await waitForCall(occupantsLinkSubFn, 1);
285
+ expectSingleLinkCallAndClear(occupantsLinkSubFn, [emp1], {
286
+ status: "loaded"
287
+ });
288
+
289
+ // the Employee object should also be invalidated (loading state)
290
+ await waitForCall(empSubFn, 1);
291
+ expectSingleObjectCallAndClear(empSubFn, emp1, "loaded");
292
+
293
+ // The Office object should NOT have any calls
294
+ // This is the key verification - no calls should be made to the office subscription
295
+ expect(officeSubFn.next).not.toHaveBeenCalled();
296
+ await invalidateEmployeePromise;
297
+
298
+ // ensure at the end of invalidation there are no new calls
299
+ expect(occupantsLinkSubFn.next).not.toHaveBeenCalled();
300
+ expect(empSubFn.next).not.toHaveBeenCalled();
301
+ expect(officeSubFn.next).not.toHaveBeenCalled();
302
+ });
303
+ });
99
304
  describe("with mock server", () => {
100
305
  let client;
101
306
  let cache;
307
+ let cacheKeys;
102
308
  let employeesAsServerReturns;
103
309
  let mutatedEmployees;
104
310
  beforeAll(async () => {
@@ -120,13 +326,14 @@ describe(Store, () => {
120
326
  });
121
327
  beforeEach(() => {
122
328
  cache = new Store(client);
329
+ cacheKeys = cache.cacheKeys;
123
330
  return () => {
124
331
  cache = undefined;
125
332
  };
126
333
  });
127
334
  it("basic single object works", async () => {
128
335
  const emp = employeesAsServerReturns[0];
129
- const cacheKey = cache.getCacheKey("object", "Employee", emp.$primaryKey);
336
+ const cacheKey = cacheKeys.get("object", "Employee", emp.$primaryKey);
130
337
 
131
338
  // starts empty
132
339
  expect(cache.getValue(cacheKey)?.value).toBeUndefined();
@@ -149,7 +356,9 @@ describe(Store, () => {
149
356
  updateObject(cache, emp); // pre-seed the cache with the "real" value
150
357
 
151
358
  const subFn = mockSingleSubCallback();
152
- defer(cache.observeObject(Employee, emp.$primaryKey, {
359
+ defer(cache.objects.observe({
360
+ apiName: Employee,
361
+ pk: emp.$primaryKey,
153
362
  mode: "offline"
154
363
  }, subFn));
155
364
  expectSingleObjectCallAndClear(subFn, emp, "loaded");
@@ -165,7 +374,7 @@ describe(Store, () => {
165
374
  }), "loaded");
166
375
 
167
376
  // remove the optimistic write
168
- cache.removeLayer(optimisticId);
377
+ cache.layers.remove(optimisticId);
169
378
  expectSingleObjectCallAndClear(subFn, emp, "loaded");
170
379
  });
171
380
  it("rolls back to an updated real value", async () => {
@@ -177,12 +386,14 @@ describe(Store, () => {
177
386
  }, employeesAsServerReturns);
178
387
  const emp = employeesAsServerReturns[0];
179
388
  const empSubFn = mockSingleSubCallback();
180
- defer(cache.observeObject(Employee, emp.$primaryKey, {
389
+ defer(cache.objects.observe({
390
+ apiName: Employee,
391
+ pk: emp.$primaryKey,
181
392
  mode: "offline"
182
393
  }, empSubFn));
183
394
  expectSingleObjectCallAndClear(empSubFn, emp, "loaded");
184
395
  const listSubFn = mockListSubCallback();
185
- defer(cache.observeList({
396
+ defer(cache.lists.observe({
186
397
  type: Employee,
187
398
  mode: "offline"
188
399
  }, listSubFn));
@@ -223,7 +434,7 @@ describe(Store, () => {
223
434
  }, [truthUpdatedEmployee]);
224
435
 
225
436
  // remove the optimistic write
226
- cache.removeLayer(optimisticId);
437
+ cache.layers.remove(optimisticId);
227
438
 
228
439
  // see the object observation get updated
229
440
  expectSingleObjectCallAndClear(empSubFn, truthUpdatedEmployee, "loaded");
@@ -240,7 +451,9 @@ describe(Store, () => {
240
451
  updateObject(cache, emp); // pre-seed the cache with the "real" value
241
452
 
242
453
  const subFn = mockSingleSubCallback();
243
- defer(cache.observeObject(Employee, emp.$primaryKey, {
454
+ defer(cache.objects.observe({
455
+ apiName: Employee,
456
+ pk: emp.$primaryKey,
244
457
  mode: "offline"
245
458
  }, subFn));
246
459
  expectSingleObjectCallAndClear(subFn, emp, "loaded");
@@ -263,7 +476,7 @@ describe(Store, () => {
263
476
  expect(subFn.next).not.toHaveBeenCalled();
264
477
 
265
478
  // remove the optimistic write
266
- cache.removeLayer(optimisticId);
479
+ cache.layers.remove(optimisticId);
267
480
  expectSingleObjectCallAndClear(subFn, truthUpdatedEmployee);
268
481
  expectNoMoreCalls(subFn);
269
482
  });
@@ -276,12 +489,14 @@ describe(Store, () => {
276
489
  orderBy: {}
277
490
  }, [emp]);
278
491
  const subFn = mockSingleSubCallback();
279
- defer(cache.observeObject(Employee, emp.$primaryKey, {
492
+ defer(cache.objects.observe({
493
+ apiName: Employee,
494
+ pk: emp.$primaryKey,
280
495
  mode: "offline"
281
496
  }, subFn));
282
497
  expectSingleObjectCallAndClear(subFn, emp);
283
498
  const subListFn = mockListSubCallback();
284
- defer(cache.observeList({
499
+ defer(cache.lists.observe({
285
500
  type: Employee,
286
501
  mode: "offline"
287
502
  }, subListFn));
@@ -289,7 +504,7 @@ describe(Store, () => {
289
504
  expectSingleListCallAndClear(subListFn, [emp], {
290
505
  status: "loaded"
291
506
  });
292
- const cacheKey = cache.getCacheKey("object", emp.$apiName, emp.$primaryKey);
507
+ const cacheKey = cacheKeys.get("object", emp.$apiName, emp.$primaryKey);
293
508
 
294
509
  // Actual test is here, prior to this is setup
295
510
  testStage("delete the object");
@@ -316,7 +531,9 @@ describe(Store, () => {
316
531
  });
317
532
  updateObject(cache, staleEmp);
318
533
  const subFn = mockSingleSubCallback();
319
- defer(cache.observeObject(Employee, emp.$primaryKey, {
534
+ defer(cache.objects.observe({
535
+ apiName: Employee,
536
+ pk: emp.$primaryKey,
320
537
  mode: "offline"
321
538
  }, subFn));
322
539
  expectSingleObjectCallAndClear(subFn, staleEmp, "loaded");
@@ -331,12 +548,6 @@ describe(Store, () => {
331
548
  });
332
549
  });
333
550
  describe(".invalidateList", () => {
334
- beforeEach(() => {
335
- vi.useFakeTimers({});
336
- });
337
- afterEach(() => {
338
- vi.useRealTimers();
339
- });
340
551
  it("triggers an update", async () => {
341
552
  const emp = employeesAsServerReturns[0];
342
553
  const staleEmp = emp.$clone({
@@ -348,12 +559,14 @@ describe(Store, () => {
348
559
  orderBy: {}
349
560
  }, [staleEmp]);
350
561
  const subFn = mockSingleSubCallback();
351
- defer(cache.observeObject(Employee, emp.$primaryKey, {
562
+ defer(cache.objects.observe({
563
+ apiName: Employee,
564
+ pk: emp.$primaryKey,
352
565
  mode: "offline"
353
566
  }, subFn));
354
567
  expectSingleObjectCallAndClear(subFn, staleEmp);
355
568
  const subListFn = mockListSubCallback();
356
- defer(cache.observeList({
569
+ defer(cache.lists.observe({
357
570
  type: Employee,
358
571
  mode: "offline"
359
572
  }, subListFn));
@@ -399,12 +612,14 @@ describe(Store, () => {
399
612
  orderBy: {}
400
613
  }, [staleEmp]);
401
614
  const subFn = mockSingleSubCallback();
402
- defer(cache.observeObject(Employee, emp.$primaryKey, {
615
+ defer(cache.objects.observe({
616
+ apiName: Employee,
617
+ pk: emp.$primaryKey,
403
618
  mode: "offline"
404
619
  }, subFn));
405
620
  expectSingleObjectCallAndClear(subFn, staleEmp);
406
621
  const subListFn = mockListSubCallback();
407
- defer(cache.observeList({
622
+ defer(cache.lists.observe({
408
623
  type: Employee,
409
624
  where: {},
410
625
  orderBy: {},
@@ -422,8 +637,19 @@ describe(Store, () => {
422
637
  });
423
638
  await waitForCall(subListFn, 1);
424
639
  expectSingleListCallAndClear(subListFn, employeesAsServerReturns);
425
- await waitForCall(subFn, 1);
426
- expectSingleObjectCallAndClear(subFn, emp, "loaded");
640
+ testStage("Check invalidation call for single sub");
641
+ await waitForCall(subFn, 2);
642
+ // First call is for loading state
643
+ expect(subFn.next).toHaveBeenNthCalledWith(1, objectPayloadContaining({
644
+ status: "loading",
645
+ object: staleEmp
646
+ }));
647
+ // Second call is for loaded state with fresh data
648
+ expect(subFn.next).toHaveBeenNthCalledWith(2, objectPayloadContaining({
649
+ status: "loaded",
650
+ object: emp
651
+ }));
652
+ subFn.next.mockClear();
427
653
 
428
654
  // we don't need this value to control the test but we want to make sure we don't have
429
655
  // any unhandled exceptions upon test completion
@@ -446,7 +672,9 @@ describe(Store, () => {
446
672
  fullName: "John Doe"
447
673
  });
448
674
  it("fetches and updates twice", async () => {
449
- defer(cache.observeObject(Employee, JOHN_DOE_ID, {
675
+ defer(cache.objects.observe({
676
+ apiName: Employee,
677
+ pk: JOHN_DOE_ID,
450
678
  mode: "force"
451
679
  }, subFn1));
452
680
  expect(subFn1.next).toHaveBeenCalledExactlyOnceWith(objectPayloadContaining({
@@ -462,7 +690,9 @@ describe(Store, () => {
462
690
  }));
463
691
  const firstLoad = subFn1.next.mock.lastCall?.[0];
464
692
  subFn1.next.mockClear();
465
- defer(cache.observeObject(Employee, JOHN_DOE_ID, {
693
+ defer(cache.objects.observe({
694
+ apiName: Employee,
695
+ pk: JOHN_DOE_ID,
466
696
  mode: "force"
467
697
  }, subFn2));
468
698
  expectSingleObjectCallAndClear(subFn1, likeEmployee50030, "loading");
@@ -489,7 +719,9 @@ describe(Store, () => {
489
719
  subFn.complete.mockClear();
490
720
  subFn.next.mockClear();
491
721
  subFn.error.mockClear();
492
- sub = defer(cache.observeObject(Employee, JOHN_DOE_ID, {
722
+ sub = defer(cache.objects.observe({
723
+ apiName: Employee,
724
+ pk: JOHN_DOE_ID,
493
725
  mode: "offline"
494
726
  }, subFn));
495
727
  expectSingleObjectCallAndClear(subFn, undefined, "init");
@@ -535,11 +767,10 @@ describe(Store, () => {
535
767
  }));
536
768
  });
537
769
  });
538
- describe(".observeList", () => {
770
+ describe(".lists.observe", () => {
539
771
  const listSub1 = mockListSubCallback();
540
772
  const ifaceSub = mockListSubCallback();
541
773
  beforeEach(() => {
542
- vi.useFakeTimers({});
543
774
  vi.mocked(listSub1.next).mockReset();
544
775
  vi.mocked(listSub1.error).mockReset();
545
776
  vi.mocked(listSub1.complete).mockReset();
@@ -547,22 +778,18 @@ describe(Store, () => {
547
778
  vi.mocked(ifaceSub.error).mockReset();
548
779
  vi.mocked(ifaceSub.complete).mockReset();
549
780
  });
550
- afterEach(() => {
551
- vi.useRealTimers();
552
- });
553
781
  describe("mode=force", () => {
554
782
  it("initial load", async () => {
555
- defer(cache.observeList({
783
+ defer(cache.lists.observe({
556
784
  type: Employee,
557
785
  orderBy: {},
558
786
  mode: "force"
559
787
  }, listSub1));
560
- defer(cache.observeList({
788
+ defer(cache.lists.observe({
561
789
  type: FooInterface,
562
790
  orderBy: {},
563
791
  mode: "force"
564
792
  }, ifaceSub));
565
- vitest.runOnlyPendingTimers();
566
793
  await waitForCall(listSub1);
567
794
  await waitForCall(ifaceSub);
568
795
  expectSingleListCallAndClear(listSub1, [], {
@@ -593,7 +820,7 @@ describe(Store, () => {
593
820
  where: {},
594
821
  orderBy: {}
595
822
  }, mutatedEmployees);
596
- defer(cache.observeList({
823
+ defer(cache.lists.observe({
597
824
  type: Employee,
598
825
  mode: "force"
599
826
  }, listSub1));
@@ -611,19 +838,18 @@ describe(Store, () => {
611
838
  });
612
839
  describe("mode = offline", () => {
613
840
  it("updates with list updates", async () => {
614
- defer(cache.observeList({
841
+ defer(cache.lists.observe({
615
842
  type: Employee,
616
843
  where: {},
617
844
  orderBy: {},
618
845
  mode: "offline"
619
846
  }, listSub1));
620
- expect(listSub1.next).toHaveBeenCalledTimes(0);
621
847
  updateList(cache, {
622
848
  type: Employee,
623
849
  where: {},
624
850
  orderBy: {}
625
851
  }, employeesAsServerReturns);
626
- vitest.runOnlyPendingTimers();
852
+ await waitForCall(listSub1);
627
853
  expectSingleListCallAndClear(listSub1, employeesAsServerReturns);
628
854
 
629
855
  // list is just now one object
@@ -632,23 +858,22 @@ describe(Store, () => {
632
858
  where: {},
633
859
  orderBy: {}
634
860
  }, [employeesAsServerReturns[0]]);
635
- vitest.runOnlyPendingTimers();
861
+ await waitForCall(listSub1);
636
862
  expectSingleListCallAndClear(listSub1, [employeesAsServerReturns[0]]);
637
863
  });
638
864
  it("updates with different list updates", async () => {
639
- defer(cache.observeList({
865
+ defer(cache.lists.observe({
640
866
  type: Employee,
641
867
  where: {},
642
868
  orderBy: {},
643
869
  mode: "offline"
644
870
  }, listSub1));
645
- expect(listSub1.next).toHaveBeenCalledTimes(0);
646
871
  updateList(cache, {
647
872
  type: Employee,
648
873
  where: {},
649
874
  orderBy: {}
650
875
  }, employeesAsServerReturns);
651
- vitest.runOnlyPendingTimers();
876
+ await waitForCall(listSub1);
652
877
  expectSingleListCallAndClear(listSub1, employeesAsServerReturns);
653
878
 
654
879
  // new where === different list
@@ -661,9 +886,9 @@ describe(Store, () => {
661
886
  },
662
887
  orderBy: {}
663
888
  }, mutatedEmployees);
664
- vitest.runOnlyPendingTimers();
665
889
 
666
890
  // original list updates still
891
+ await waitForCall(listSub1);
667
892
  expectSingleListCallAndClear(listSub1, mutatedEmployees);
668
893
  });
669
894
  });
@@ -677,14 +902,13 @@ describe(Store, () => {
677
902
  });
678
903
  it("works in the solo case", async () => {
679
904
  const listSub = mockListSubCallback();
680
- defer(cache.observeList({
905
+ defer(cache.lists.observe({
681
906
  type: Employee,
682
907
  where: {},
683
908
  orderBy: {},
684
909
  mode: "force",
685
910
  pageSize: 1
686
911
  }, listSub));
687
- expect(listSub.next).not.toHaveBeenCalled();
688
912
  await waitForCall(listSub, 1);
689
913
  expectSingleListCallAndClear(listSub, [], {
690
914
  status: "loading"
@@ -740,15 +964,22 @@ describe(Store, () => {
740
964
 
741
965
  // ignores unhandled rejection, like one we will get from fire-and-forget metadata call
742
966
  process.on("unhandledRejection", () => {});
743
- store.observeList({
967
+ store.lists.observe({
744
968
  type: {
745
969
  apiName: "notReal",
746
970
  type: "object"
747
971
  },
748
972
  orderBy: {}
749
973
  }, sub);
750
- await waitForCall(sub.error, 1);
751
- expect(sub.error).toHaveBeenCalled();
974
+ await waitForCall(sub.next);
975
+
976
+ // initial loading state
977
+ expect(sub.next).toHaveBeenCalledOnce();
978
+ expectSingleListCallAndClear(sub, [], {
979
+ status: "loading"
980
+ });
981
+ await waitForCall(sub.error);
982
+ expect(sub.error).toHaveBeenCalledOnce();
752
983
  expect(sub.next).not.toHaveBeenCalled();
753
984
  });
754
985
  describe("batching", () => {
@@ -763,8 +994,14 @@ describe(Store, () => {
763
994
  });
764
995
  const a = mockSingleSubCallback();
765
996
  const b = mockSingleSubCallback();
766
- defer(store.observeObject(Employee, 0, {}, a));
767
- defer(store.observeObject(Employee, 1, {}, b));
997
+ defer(store.objects.observe({
998
+ apiName: Employee,
999
+ pk: 0
1000
+ }, a));
1001
+ defer(store.objects.observe({
1002
+ apiName: Employee,
1003
+ pk: 1
1004
+ }, b));
768
1005
  await a.expectLoadingAndLoaded({
769
1006
  loading: objectPayloadContaining({
770
1007
  status: "loading",
@@ -800,7 +1037,10 @@ describe(Store, () => {
800
1037
  text: "og title"
801
1038
  });
802
1039
  const todoSubFn = mockSingleSubCallback();
803
- defer(store.observeObject(Todo, 0, {}, todoSubFn));
1040
+ defer(store.objects.observe({
1041
+ apiName: Todo,
1042
+ pk: 0
1043
+ }, todoSubFn));
804
1044
  await todoSubFn.expectLoadingAndLoaded({
805
1045
  loading: objectPayloadContaining({
806
1046
  status: "loading",
@@ -842,7 +1082,10 @@ describe(Store, () => {
842
1082
  text: "does not matter"
843
1083
  });
844
1084
  const todoSubFn = mockSingleSubCallback();
845
- defer(store.observeObject(Todo, 0, {}, todoSubFn));
1085
+ defer(store.objects.observe({
1086
+ apiName: Todo,
1087
+ pk: 0
1088
+ }, todoSubFn));
846
1089
  await todoSubFn.expectLoadingAndLoaded({
847
1090
  loading: objectPayloadContaining({
848
1091
  status: "loading",
@@ -855,7 +1098,7 @@ describe(Store, () => {
855
1098
  isOptimistic: false
856
1099
  })
857
1100
  });
858
- const object = store.getValue(store.getCacheKey("object", "Todo", 0))?.value;
1101
+ const object = store.getValue(store.cacheKeys.get("object", "Todo", 0))?.value;
859
1102
  !object ? process.env.NODE_ENV !== "production" ? invariant(false) : invariant(false) : void 0;
860
1103
 
861
1104
  // at this point we have an observation properly set up
@@ -915,19 +1158,27 @@ describe(Store, () => {
915
1158
  text: "asc"
916
1159
  }
917
1160
  };
918
- const subListUnordered = mockListSubCallback();
919
- const subListOrdered = mockListSubCallback();
920
- beforeEach(() => {
921
- defer(store.observeList({
1161
+ let subListUnordered = mockListSubCallback();
1162
+ let subListOrdered = mockListSubCallback();
1163
+ beforeEach(async () => {
1164
+ subListUnordered = mockListSubCallback();
1165
+ subListOrdered = mockListSubCallback();
1166
+ defer(store.lists.observe({
922
1167
  ...noWhereNoOrderBy,
923
1168
  mode: "offline"
924
1169
  }, subListUnordered));
925
- expect(subListUnordered.next).toHaveBeenCalledTimes(0);
926
- defer(store.observeList({
1170
+ await waitForCall(subListUnordered);
1171
+ expectSingleListCallAndClear(subListUnordered, [], {
1172
+ status: "init"
1173
+ });
1174
+ defer(store.lists.observe({
927
1175
  ...noWhereOrderByText,
928
1176
  mode: "offline"
929
1177
  }, subListOrdered));
930
- expect(subListOrdered.next).toHaveBeenCalledTimes(0);
1178
+ await waitForCall(subListOrdered);
1179
+ expectSingleListCallAndClear(subListOrdered, [], {
1180
+ status: "init"
1181
+ });
931
1182
  });
932
1183
  it("invalidates the correct lists", async () => {
933
1184
  // for whatever reason, the first list is loaded as [B, A]
@@ -1114,7 +1365,7 @@ describe(Store, () => {
1114
1365
  $apiName: "Employee",
1115
1366
  $title: `truth ${i}`
1116
1367
  }));
1117
- const cacheKeys = baseObjects.map(obj => store.getCacheKey("object", "Employee", obj.$primaryKey));
1368
+ const cacheKeys = baseObjects.map(obj => store.cacheKeys.get("object", "Employee", obj.$primaryKey));
1118
1369
 
1119
1370
  // set the truth
1120
1371
  for (const obj of baseObjects) {
@@ -1149,7 +1400,7 @@ describe(Store, () => {
1149
1400
  }
1150
1401
 
1151
1402
  // remove the first layer
1152
- store.removeLayer(layerIds[0]);
1403
+ store.layers.remove(layerIds[0]);
1153
1404
 
1154
1405
  // should have truth object 1 and optimistic object 2
1155
1406
  expect(getObject(store, "Employee", 1)).toEqual(expect.objectContaining({
@@ -1160,7 +1411,7 @@ describe(Store, () => {
1160
1411
  }));
1161
1412
 
1162
1413
  // remove the second layer
1163
- store.removeLayer(layerIds[1]);
1414
+ store.layers.remove(layerIds[1]);
1164
1415
 
1165
1416
  // should have truth objects
1166
1417
  for (const obj of baseObjects) {
@@ -1171,4 +1422,10 @@ describe(Store, () => {
1171
1422
  });
1172
1423
  });
1173
1424
  });
1425
+ export function asBsoStub(x) {
1426
+ return {
1427
+ __apiName: x.$apiName,
1428
+ __primaryKey: x.$primaryKey
1429
+ };
1430
+ }
1174
1431
  //# sourceMappingURL=Store.test.js.map