@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
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSet.test.js","names":["isOk","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid","BarInterface","BgaoNflPlayer","Employee","FooInterface","objectTypeWithAllPropertyTypes","Office","LegacyFauxFoundry","startNodeApiServer","stubData","beforeAll","describe","expect","expectTypeOf","it","createClient","client","testSetup","apiServer","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","data","employees","fetchPage","pks","Set","emp","add","$primaryKey","size","toEqual","has","employee1","employeeId","toBe","employee2","employee3","employee4withDerived","employeePassesStrict","__primaryKey","employee50050","objectSet2","where","subtractedObjectSet","objectSetResults","objectSet2Results","subtractedObjectSetResults","toHaveLength","length","find","x","toBeUndefined","intersectedObjectSet","$isNull","$orderBy","map","e","employee","fetchOne","toMatchTypeOf","fetchOneByRid","__rid","fetchPageByRid","$select","player","address1","address","addressLine1","address2","addressLine2","city","state","zipCode","travisPlayer","employeeResult","fetchOneWithErrors","value","branded","toEqualTypeOf","rejects","toThrow","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","$or","fullName","$containsAllTerms","office","term","fuzzySearch","$containsAnyTerm","toBeCallableWith","$and","$eq","$gte","$containsAllTermsInOrder","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","withProperties","base","aggregate","selectProperty","derivedPropertyName2","incorrect","fails","limit","percentile","numericAggregationObjectSet","setAggregationObjectSet","selectPropertyObjectSet","objectWithRdp","derivedPropertyName","objectWithUndefinedRdp","attachmentSelectDp","toMatchInlineSnapshot","geoSelectDp","geoCollectListDp","fetchPageTest","nearestNeighborsObjectSet","nearestNeighbors","filteredObjectSet","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Attachment,\n CompileTimeMetadata,\n ConvertProps,\n FetchPageResult,\n InterfaceDefinition,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n Result,\n} from \"@osdk/api\";\nimport { isOk } from \"@osdk/api\";\nimport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n} from \"@osdk/api/unstable\";\nimport {\n BarInterface,\n BgaoNflPlayer,\n Employee,\n FooInterface,\n objectTypeWithAllPropertyTypes,\n Office,\n} from \"@osdk/client.test.ontology\";\nimport {\n LegacyFauxFoundry,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { beforeAll, describe, expect, expectTypeOf, it } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ntype ApiNameAsString<\n T extends ObjectOrInterfaceDefinition,\n> = CompileTimeMetadata<T>[\"apiName\"];\n\ntype JustProps<\n T extends ObjectOrInterfaceDefinition,\n P extends ValidOsdkPropParams<T>,\n> = P extends \"$all\" ? PropertyKeys<T>\n : Exclude<P, SpecialOsdkPropParams>;\n\ntype SpecialOsdkPropParams =\n | \"$all\"\n | \"$rid\"\n | \"$strict\"\n | \"$notStrict\";\n\ntype ValidOsdkPropParams<Q extends ObjectOrInterfaceDefinition> =\n | SpecialOsdkPropParams\n | PropertyKeys<Q>;\n\ntype PropMapToInterface<\n FROM extends ObjectTypeDefinition,\n TO extends InterfaceDefinition,\n> = NonNullable<\n CompileTimeMetadata<FROM>[\"inverseInterfaceMap\"]\n>[ApiNameAsString<TO>];\n\nexport type PropMapToObject<\n FROM extends ObjectOrInterfaceDefinition,\n TO extends ObjectTypeDefinition,\n> = NonNullable<CompileTimeMetadata<TO>[\"interfaceMap\"]>[ApiNameAsString<FROM>];\n\ndescribe(\"ObjectSet\", () => {\n let client: Client;\n\n beforeAll(() => {\n const testSetup = startNodeApiServer(new LegacyFauxFoundry(), createClient);\n ({ client } = testSetup);\n return () => {\n testSetup.apiServer.close();\n };\n });\n\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os: ObjectSet<Employee>) {\n return os;\n }\n\n function takesNewStyleObjectSet(os: Employee.ObjectSet) {\n return os;\n }\n\n function maybe() {\n const newStyleObjectSet: Employee.ObjectSet = client(Employee);\n const oldStyleObjectSet: ObjectSet<Employee> = newStyleObjectSet;\n\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const { data: employees } = await unionedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n\n const objectSetResults = await objectSet.fetchPage();\n const objectSet2Results = await objectSet2.fetchPage();\n const subtractedObjectSetResults = await subtractedObjectSet.fetchPage();\n\n expect(objectSet2Results.data).toHaveLength(1);\n expect(subtractedObjectSetResults.data).toHaveLength(\n objectSetResults.data.length - objectSet2Results.data.length,\n );\n expect(subtractedObjectSetResults.data.find(x => x.$primaryKey === 50030))\n .toBeUndefined();\n });\n\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n const iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .where({\n employeeId: { $isNull: false },\n })\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n\n expect(employees.map(e => e.$primaryKey))\n .toEqual([\n 50030,\n 50031,\n 50032,\n 50033,\n 50035,\n stubData.employee50050.employeeId,\n ]);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee1.__rid,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching page of rids with experimental function\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee1.__rid, stubData.employee2.__rid],\n {},\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, PropertyKeys<Employee>, boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee1.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee2.__rid,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select 2\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee2.__rid, stubData.employee3.__rid],\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, \"fullName\", boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee2.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee3.employeeId);\n });\n\n it(\"check struct parsing\", async () => {\n const player = await client(BgaoNflPlayer).fetchOne(\n \"tkelce\",\n );\n expectTypeOf<typeof player>().toMatchTypeOf<\n Osdk<BgaoNflPlayer, PropertyKeys<BgaoNflPlayer>>\n >;\n expectTypeOf<typeof player.address>().toMatchTypeOf<\n {\n addressLine1: string | undefined;\n addressLine2: string | undefined;\n city: string | undefined;\n state: string | undefined;\n zipCode: number | undefined;\n } | undefined\n >;\n\n const address1 = player.address!.addressLine1;\n expectTypeOf<typeof address1>().toMatchTypeOf<\n string | undefined\n >;\n expect(address1).toEqual(\"15 Muppets Lane\");\n\n const address2 = player.address?.addressLine2;\n expectTypeOf<typeof address2>().toMatchTypeOf<\n string | undefined\n >;\n expect(address2).toEqual(\"Resort No 4\");\n\n const city = player.address?.city;\n expectTypeOf<typeof city>().toMatchTypeOf<\n string | undefined\n >;\n expect(city).toEqual(\"Memphis\");\n\n const state = player.address?.state;\n expectTypeOf<typeof state>().toMatchTypeOf<\n string | undefined\n >;\n expect(state).toEqual(\"TN\");\n\n const zipCode = player.address?.zipCode;\n expectTypeOf<typeof zipCode>().toMatchTypeOf<\n number | undefined\n >;\n expect(zipCode).toEqual(11100);\n\n expect(player.$primaryKey).toEqual(stubData.travisPlayer.__primaryKey);\n expect(player.address).toEqual(stubData.travisPlayer.address);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employeeResult>().toMatchTypeOf<\n Result<Osdk<Employee, PropertyKeys<Employee>>>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().branded.toEqualTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee, \"fullName\">>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee>>\n >;\n\n expect(\"error\" in employeeResult);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n const pks = new Set<number>();\n for (const emp of result.value!.data) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"allows $in filter with ReadonlyArrays\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n const objectSet = client(Employee).where({\n employeeId: { $in: ids },\n });\n expect(objectSet).toBeDefined();\n });\n\n it(\"does not allow arbitrary keys when no properties\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n // @ts-expect-error\n employeeIdNonExistent: { $in: ids },\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking containsallterm and containsanyterm\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n $or: [{ fullName: { $containsAllTerms: \"John Smith\" } }, {\n office: { $containsAllTerms: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAllTerms: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAllTerms: { fuzzySearch: false } },\n }],\n });\n\n client(Employee).where({\n $or: [{ fullName: { $containsAnyTerm: \"John Smith\" } }, {\n office: { $containsAnyTerm: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAnyTerm: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAnyTerm: { fuzzySearch: false } },\n }],\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking struct where clauses\", () => {\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n $and: [{ address: { city: { $eq: \"NYC\" } } }, {\n address: { zipCode: { $gte: 55555 } },\n }],\n });\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n address: {\n addressLine1: { $containsAllTerms: \"BLVD\" },\n // @ts-expect-error\n addressLine2: { $containsAllTermsInOrder: \"Apartment Number\" },\n },\n });\n });\n\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: \\\"drop\\\"\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Osdk<Employee, \"$rid\" | \"$all\">\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<\"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<never>\n // >();\n // });\n // });\n // });\n\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n >();\n });\n });\n\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $includeRid: false,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n });\n });\n });\n });\n\n describe(\"Derived Properties Object Set\", () => {\n it(\"does not allow aggregate before a link type is selected\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n // @ts-expect-error\n base.aggregate(\"employeeId:exactDistinct\"),\n });\n });\n\n it(\"does not allow selectProperty when a many link was selected at any point\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeId\");\n },\n });\n });\n\n it(\"enforces a return only of correct type\", () => {\n client(Employee).withProperties({\n // @ts-expect-error\n \"derivedPropertyName\": (base) => {\n return base.pivotTo(\"peeps\");\n },\n // @ts-expect-error\n \"derivedPropertyName2\": (base) => {\n return { incorrect: \"type\" };\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it.fails(\"correctly narrows types of aggregate function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"notAProperty:sum\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\":avg\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:notAnOp\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"\");\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\");\n\n return base.pivotTo(\"lead\").aggregate(\"employeeId:sum\");\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it(\"correctly narrows types of options for aggregate functions\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:approximateDistinct\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectSet\", { limit: 1 });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n // @ts-expect-error\n percentile: 1,\n });\n\n return base.pivotTo(\"lead\").aggregate(\n \"employeeId:approximatePercentile\",\n { percentile: 0.5 },\n );\n },\n });\n\n expectTypeOf(objectSet).branded.toEqualTypeOf<\n ObjectSet<\n Employee,\n { derivedPropertyName: \"double\" | undefined }\n >\n >();\n });\n\n it(\"correctly narrows types of selectProperty function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").selectProperty(\"notAProperty\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeStatus\");\n },\n }) satisfies ObjectSet<\n Employee,\n {\n \"derivedPropertyName\": \"stringTimeseries\" | undefined;\n }\n >;\n });\n\n it(\"propagates derived property type to future object set operations with correct types\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n // @ts-expect-error\n }).where({ \"notAProperty\": { \"$eq\": 3 } });\n\n const numericAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(numericAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\"),\n }).where({ \"derivedPropertyName\": { \"$isNull\": false } })\n // @ts-expect-error\n .where({ \"derivedPropertyName\": { \"$eq\": [1, 2] } });\n\n const setAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"fullName:collectSet\"),\n });\n setAggregationObjectSet.where({\n \"derivedPropertyName\": { \"$isNull\": false },\n });\n\n setAggregationObjectSet.where({\n // @ts-expect-error\n \"derivedPropertyName\": { \"$eq\": [1, 2] },\n });\n expectTypeOf(setAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"string\"[] | undefined;\n }>\n >();\n\n const selectPropertyObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(selectPropertyObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"integer\";\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"startDate\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": \"datetimeFilter\" } });\n });\n\n it(\"correctly types multiple property definitions in one clause\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"derivedPropertyName2\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } })\n .where({ \"derivedPropertyName2\": { \"$eq\": \"name\" } });\n\n expectTypeOf(objectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n derivedPropertyName2: \"string\" | undefined;\n }>\n >();\n });\n\n it(\"ensures other properties are consistently typed\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"fullName\": { \"$eq\": \"A\" } });\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"employeeId\": { \"$eq\": 2 } });\n });\n\n it(\"allows fetching derived properties with correctly typed Osdk.Instance types\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<\n number\n >();\n expect(objectWithRdp.derivedPropertyName).toBe(\n stubData.employee2.__primaryKey,\n );\n\n const objectWithUndefinedRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee2.employeeId, {\n $select: [\"derivedPropertyName\"],\n });\n\n expect(objectWithUndefinedRdp.derivedPropertyName).toBeUndefined();\n });\n\n it(\"correctly deserializes attachments and geo properties\", async () => {\n const objectWithRdp = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).fetchOne(5);\n\n expectTypeOf(objectWithRdp.attachmentSelectDp).toEqualTypeOf<\n Attachment | undefined\n >();\n expect(objectWithRdp.attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n\n expectTypeOf(objectWithRdp.geoSelectDp).toEqualTypeOf<\n GeoJSON.GeoJSON | undefined\n >();\n expect(objectWithRdp.geoSelectDp).toMatchInlineSnapshot(`\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n }\n `);\n\n expectTypeOf(objectWithRdp.geoCollectListDp).toEqualTypeOf<\n GeoJSON.GeoJSON[] | undefined\n >();\n expect(objectWithRdp.geoCollectListDp).toMatchInlineSnapshot(`\n [\n [\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n ],\n ]\n `);\n\n // Tests that we deserialize properly for fetchPage as well\n const fetchPageTest = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).where({ \"id\": { \"$eq\": 5 } }).fetchPage();\n\n expect(fetchPageTest.data[0].attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n });\n it(\"correctly deserializes count\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"$count\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<number>();\n expect(objectWithRdp.derivedPropertyName).toEqual(1);\n });\n });\n\n describe(\"nearestNeighbors\", () => {\n it(\"works as a subsequent object set operation\", async () => {\n const employeeObjectSet = client(Employee).where({\n employeeId: { $in: [50030, 50031] },\n });\n const nearestNeighborsObjectSet = await employeeObjectSet\n .nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPage();\n\n expect(nearestNeighborsObjectSet.data.length).toEqual(2);\n });\n\n it(\"works as a preceding object set operation\", async () => {\n const nearestNeighborsObjectSet = client(Employee).nearestNeighbors(\n \"textQuery\",\n 7,\n \"skillSetEmbedding\",\n );\n\n const filteredObjectSet = await nearestNeighborsObjectSet.where({\n employeeId: { $in: [50030, 50031] },\n }).fetchPage();\n\n expect(filteredObjectSet.data.length).toEqual(2);\n });\n });\n\n // Can't run these tests because we can't load by primary key!\n // describe.each([\"fetchOne\", \"fetchOneWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: false\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"returns bad data\", async () => {\n // // Look at this\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"returns bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\">\n // >();\n // });\n // });\n // });\n // });\n\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({});\n\n const empNotStrict = result.data[0];\n const empNotStrict2: Osdk<Employee, \"$all\" | \"$notStrict\"> =\n empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never, Employee.PropertyKeys>\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never>\n >();\n\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf<ApiNameAsString<FooInterface>>()\n .toEqualTypeOf<\"FooInterface\">();\n\n expectTypeOf<\n NonNullable<CompileTimeMetadata<Employee>[\"interfaceMap\"]>\n >()\n .toEqualTypeOf<{\n FooInterface: {\n fooSpt: \"fullName\";\n };\n }>();\n\n expectTypeOf<PropMapToInterface<Employee, FooInterface>>()\n .toEqualTypeOf<{ fullName: \"fooSpt\" }>();\n\n expectTypeOf<PropMapToObject<FooInterface, Employee>>()\n .toEqualTypeOf<{ fooSpt: \"fullName\" }>();\n\n expectTypeOf<ConvertProps<Employee, FooInterface, \"fullName\">>()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<JustProps<Employee, \"$all\">>()\n .toEqualTypeOf<\n | \"class\"\n | \"fullName\"\n | \"office\"\n | \"employeeId\"\n | \"employeeStatus\"\n | \"startDate\"\n | \"employeeLocation\"\n | \"employeeSensor\"\n | \"skillSet\"\n | \"skillSetEmbedding\"\n >();\n\n expectTypeOf<\n ConvertProps<Employee, FooInterface, \"fullName\" | \"office\">\n >()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\">\n >()\n .toEqualTypeOf<\"fullName\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\", \"$allBaseProperties\">\n >()\n .toEqualTypeOf<\n | \"employeeId\"\n | \"fullName\"\n | \"office\"\n | \"class\"\n | \"startDate\"\n | \"employeeStatus\"\n | \"employeeSensor\"\n | \"employeeLocation\"\n | \"skillSet\"\n | \"skillSetEmbedding\"\n >();\n\n // We don't have a proper definition that has\n // a non-null property on an interface so\n // we cheese it here to be sure the types work\n type CheesedProp<\n T extends InterfaceDefinition,\n K extends PropertyKeys<T>,\n > = T & { properties: { [KK in K]: { nullable: false } } };\n\n type CheesedFoo = CheesedProp<FooInterface, \"fooSpt\">;\n const CheesedFoo: CheesedFoo = FooInterface as CheesedFoo;\n\n type T = ConvertProps<Employee, CheesedFoo, \"fullName\">;\n\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf<\n Osdk<CheesedFoo, \"$all\" | \"$notStrict\">\n >();\n\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA,SAASA,IAAI,QAAQ,WAAW;AAChC,SACEC,gDAAgD,EAChDC,iDAAiD,QAC5C,oBAAoB;AAC3B,SACEC,YAAY,EACZC,aAAa,EACbC,QAAQ,EACRC,YAAY,EACZC,8BAA8B,EAC9BC,MAAM,QACD,4BAA4B;AACnC,SACEC,iBAAiB,EACjBC,kBAAkB,EAClBC,QAAQ,QACH,mBAAmB;AAC1B,SAASC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,YAAY,EAAEC,EAAE,QAAQ,QAAQ;AAEtE,SAASC,YAAY,QAAQ,oBAAoB;AAkCjDJ,QAAQ,CAAC,WAAW,EAAE,MAAM;EAC1B,IAAIK,MAAc;EAElBN,SAAS,CAAC,MAAM;IACd,MAAMO,SAAS,GAAGT,kBAAkB,CAAC,IAAID,iBAAiB,CAAC,CAAC,EAAEQ,YAAY,CAAC;IAC3E,CAAC;MAAEC;IAAO,CAAC,GAAGC,SAAS;IACvB,OAAO,MAAM;MACXA,SAAS,CAACC,SAAS,CAACC,KAAK,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,CAAC;EAEFL,EAAE,CAAC,qEAAqE,EAAE,MAAM;IAC9E,MAAMM,iBAAiB,GAAGJ,MAAM,CAACb,QAAQ,CAAC;IAC1C,MAAMkB,eAAe,GAAGL,MAAM,CAACV,MAAM,CAAC;;IAEtC;IACAc,iBAAiB,CAACE,KAAK,CAACD,eAAe,CAAC;;IAExC;IACAD,iBAAiB,CAACG,QAAQ,CAACF,eAAe,CAAC;;IAE3C;IACAD,iBAAiB,CAACI,SAAS,CAACH,eAAe,CAAC;EAC9C,CAAC,CAAC;EAEFP,EAAE,CAAC,6BAA6B,EAAE,MAAM,CAwBxC,CAAC,CAAC;EAEFA,EAAE,CAAC,mBAAmB,EAAE,YAAY;IAClC,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC;IAClC,MAAMuB,gBAAgB,GAAGD,SAAS,CAACH,KAAK,CAACG,SAAS,CAAC;IACnD,MAAM;MAAEE,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAMF,gBAAgB,CAACG,SAAS,CAAC,CAAC;IAC9D,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAS,CAAC;IAC7B,KAAK,MAAMC,GAAG,IAAIJ,SAAS,EAAE;MAC3BE,GAAG,CAACG,GAAG,CAACD,GAAG,CAACE,WAAW,CAAC;IAC1B;IAEAtB,MAAM,CAACkB,GAAG,CAACK,IAAI,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC;IAC3BxB,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACgC,SAAS,CAACF,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACiC,SAAS,CAACH,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACkC,oBAAoB,CAACJ,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACpE5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACmC,oBAAoB,CAACC,YAAY,CAAC,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC;IACtE5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACqC,aAAa,CAACP,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC/D,CAAC,CAAC;EAEF1B,EAAE,CAAC,sBAAsB,EAAE,YAAY;IACrC,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC;IAClC,MAAM4C,UAAU,GAAG/B,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MACxCT,UAAU,EAAE;IACd,CAAC,CAAC;IACF,MAAMU,mBAAmB,GAAGxB,SAAS,CAACF,QAAQ,CAACwB,UAAU,CAAC;IAE1D,MAAMG,gBAAgB,GAAG,MAAMzB,SAAS,CAACI,SAAS,CAAC,CAAC;IACpD,MAAMsB,iBAAiB,GAAG,MAAMJ,UAAU,CAAClB,SAAS,CAAC,CAAC;IACtD,MAAMuB,0BAA0B,GAAG,MAAMH,mBAAmB,CAACpB,SAAS,CAAC,CAAC;IAExEjB,MAAM,CAACuC,iBAAiB,CAACxB,IAAI,CAAC,CAAC0B,YAAY,CAAC,CAAC,CAAC;IAC9CzC,MAAM,CAACwC,0BAA0B,CAACzB,IAAI,CAAC,CAAC0B,YAAY,CAClDH,gBAAgB,CAACvB,IAAI,CAAC2B,MAAM,GAAGH,iBAAiB,CAACxB,IAAI,CAAC2B,MACxD,CAAC;IACD1C,MAAM,CAACwC,0BAA0B,CAACzB,IAAI,CAAC4B,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACtB,WAAW,KAAK,KAAK,CAAC,CAAC,CACvEuB,aAAa,CAAC,CAAC;EACpB,CAAC,CAAC;EAEF3C,EAAE,CAAC,uBAAuB,EAAE,YAAY;IACtC,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC;IAClC,MAAMuD,oBAAoB,GAAGjC,SAAS,CAACD,SAAS,CAACC,SAAS,CAAC;IAE3D,MAAM;MAAEE,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAM8B,oBAAoB,CAAC7B,SAAS,CAAC,CAAC;IAClE,MAAMC,GAAG,GAAG,IAAIC,GAAG,CAAS,CAAC;IAC7B,KAAK,MAAMC,GAAG,IAAIJ,SAAS,EAAE;MAC3BE,GAAG,CAACG,GAAG,CAACD,GAAG,CAACE,WAAW,CAAC;IAC1B;IAEAtB,MAAM,CAACkB,GAAG,CAACK,IAAI,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC;IAC3BxB,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACgC,SAAS,CAACF,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACiC,SAAS,CAACH,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACkC,oBAAoB,CAACJ,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACpE5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACmC,oBAAoB,CAACC,YAAY,CAAC,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC;IACtE5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACqC,aAAa,CAACP,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC/D,CAAC,CAAC;EAEF1B,EAAE,CAAC,6EAA6E,EAAE,YAAY;IAC5F,MAAM;MAAEa,IAAI,EAAEC;IAAU,CAAC,GAAG,MAAMZ,MAAM,CAACb,QAAQ,CAAC,CAC/C6C,KAAK,CAAC;MACLT,UAAU,EAAE;QAAEoB,OAAO,EAAE;MAAM;IAC/B,CAAC,CAAC,CACD9B,SAAS,CAAC;MACT+B,QAAQ,EAAE;QAAE,YAAY,EAAE;MAAM;IAClC,CAAC,CAAC;IAEJhD,MAAM,CAACgB,SAAS,CAACiC,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAC5B,WAAW,CAAC,CAAC,CACtCE,OAAO,CAAC,CACP,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL3B,QAAQ,CAACqC,aAAa,CAACP,UAAU,CAClC,CAAC;EACN,CAAC,CAAC;EAEFzB,EAAE,CAAC,yDAAyD,EAAE,YAAY;IACxE,MAAMiD,QAAQ,GAAG,MAAM/C,MAAM,CAACb,QAAQ,CAAC,CAAC6D,QAAQ,CAC9CvD,QAAQ,CAAC6B,SAAS,CAACC,UACrB,CAAC;IACD1B,YAAY,CAAkB,CAAC,CAACoD,aAAa;IAG7CrD,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;EAClE,CAAC,CAAC;EAEFzB,EAAE,CAAC,mDAAmD,EAAE,YAAY;IAClE,MAAMiD,QAAQ,GAAG,MAAM/C,MAAM,CAC3BjB,gDACF,CAAC,CAACmE,aAAa,CACb/D,QAAQ,EACRM,QAAQ,CAAC6B,SAAS,CAAC6B,KACrB,CAAC;IACDtD,YAAY,CAAkB,CAAC,CAACoD,aAAa;IAG7CrD,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;EAClE,CAAC,CAAC;EAEFzB,EAAE,CAAC,yDAAyD,EAAE,YAAY;IACxE,MAAMc,SAAS,GAAG,MAAMZ,MAAM,CAC5BhB,iDACF,CAAC,CAACoE,cAAc,CACdjE,QAAQ,EACR,CAACM,QAAQ,CAAC6B,SAAS,CAAC6B,KAAK,EAAE1D,QAAQ,CAACgC,SAAS,CAAC0B,KAAK,CAAC,EACpD,CAAC,CACH,CAAC;IACDtD,YAAY,CAAmB,CAAC,CAACoD,aAAa;IAG9CrD,MAAM,CAACgB,SAAS,CAACD,IAAI,CAAC,CAAC,CAAC,CAACO,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;IACzE3B,MAAM,CAACgB,SAAS,CAACD,IAAI,CAAC,CAAC,CAAC,CAACO,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAACgC,SAAS,CAACF,UAAU,CAAC;EAC3E,CAAC,CAAC;EAEFzB,EAAE,CAAC,gEAAgE,EAAE,YAAY;IAC/E,MAAMiD,QAAQ,GAAG,MAAM/C,MAAM,CAC3BjB,gDACF,CAAC,CAACmE,aAAa,CACb/D,QAAQ,EACRM,QAAQ,CAACgC,SAAS,CAAC0B,KAAK,EACxB;MAAEE,OAAO,EAAE,CAAC,UAAU;IAAE,CAC1B,CAAC;IACDxD,YAAY,CAAkB,CAAC,CAACoD,aAAa;IAG7CrD,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAACgC,SAAS,CAACF,UAAU,CAAC;EAClE,CAAC,CAAC;EAEFzB,EAAE,CAAC,kEAAkE,EAAE,YAAY;IACjF,MAAMc,SAAS,GAAG,MAAMZ,MAAM,CAC5BhB,iDACF,CAAC,CAACoE,cAAc,CACdjE,QAAQ,EACR,CAACM,QAAQ,CAACgC,SAAS,CAAC0B,KAAK,EAAE1D,QAAQ,CAACiC,SAAS,CAACyB,KAAK,CAAC,EACpD;MAAEE,OAAO,EAAE,CAAC,UAAU;IAAE,CAC1B,CAAC;IACDxD,YAAY,CAAmB,CAAC,CAACoD,aAAa;IAG9CrD,MAAM,CAACgB,SAAS,CAACD,IAAI,CAAC,CAAC,CAAC,CAACO,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAACgC,SAAS,CAACF,UAAU,CAAC;IACzE3B,MAAM,CAACgB,SAAS,CAACD,IAAI,CAAC,CAAC,CAAC,CAACO,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAACiC,SAAS,CAACH,UAAU,CAAC;EAC3E,CAAC,CAAC;EAEFzB,EAAE,CAAC,sBAAsB,EAAE,YAAY;IACrC,MAAMwD,MAAM,GAAG,MAAMtD,MAAM,CAACd,aAAa,CAAC,CAAC8D,QAAQ,CACjD,QACF,CAAC;IACDnD,YAAY,CAAgB,CAAC,CAACoD,aAAa;IAG3CpD,YAAY,CAAwB,CAAC,CAACoD,aAAa;IAUnD,MAAMM,QAAQ,GAAGD,MAAM,CAACE,OAAO,CAAEC,YAAY;IAC7C5D,YAAY,CAAkB,CAAC,CAACoD,aAAa;IAG7CrD,MAAM,CAAC2D,QAAQ,CAAC,CAACnC,OAAO,CAAC,iBAAiB,CAAC;IAE3C,MAAMsC,QAAQ,GAAGJ,MAAM,CAACE,OAAO,EAAEG,YAAY;IAC7C9D,YAAY,CAAkB,CAAC,CAACoD,aAAa;IAG7CrD,MAAM,CAAC8D,QAAQ,CAAC,CAACtC,OAAO,CAAC,aAAa,CAAC;IAEvC,MAAMwC,IAAI,GAAGN,MAAM,CAACE,OAAO,EAAEI,IAAI;IACjC/D,YAAY,CAAc,CAAC,CAACoD,aAAa;IAGzCrD,MAAM,CAACgE,IAAI,CAAC,CAACxC,OAAO,CAAC,SAAS,CAAC;IAE/B,MAAMyC,KAAK,GAAGP,MAAM,CAACE,OAAO,EAAEK,KAAK;IACnChE,YAAY,CAAe,CAAC,CAACoD,aAAa;IAG1CrD,MAAM,CAACiE,KAAK,CAAC,CAACzC,OAAO,CAAC,IAAI,CAAC;IAE3B,MAAM0C,OAAO,GAAGR,MAAM,CAACE,OAAO,EAAEM,OAAO;IACvCjE,YAAY,CAAiB,CAAC,CAACoD,aAAa;IAG5CrD,MAAM,CAACkE,OAAO,CAAC,CAAC1C,OAAO,CAAC,KAAK,CAAC;IAE9BxB,MAAM,CAAC0D,MAAM,CAACpC,WAAW,CAAC,CAACE,OAAO,CAAC3B,QAAQ,CAACsE,YAAY,CAAClC,YAAY,CAAC;IACtEjC,MAAM,CAAC0D,MAAM,CAACE,OAAO,CAAC,CAACpC,OAAO,CAAC3B,QAAQ,CAACsE,YAAY,CAACP,OAAO,CAAC;EAC/D,CAAC,CAAC;EAEF1D,EAAE,CAAC,mEAAmE,EAAE,YAAY;IAClF,MAAMkE,cAAc,GAAG,MAAMhE,MAAM,CAACb,QAAQ,CAAC,CAC1C8E,kBAAkB,CACjBxE,QAAQ,CAAC6B,SAAS,CAACC,UACrB,CAAC;IACH1B,YAAY,CAAwB,CAAC,CAACoD,aAAa;IAInD,IAAInE,IAAI,CAACkF,cAAc,CAAC,EAAE;MACxB,MAAMjB,QAAQ,GAAGiB,cAAc,CAACE,KAAK;MACrCtE,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;IAClE;EACF,CAAC,CAAC;EAEFzB,EAAE,CAAC,kFAAkF,EAAE,YAAY;IACjG,MAAMiD,QAAQ,GAAG,MAAM/C,MAAM,CAACb,QAAQ,CAAC,CAAC6D,QAAQ,CAC9CvD,QAAQ,CAAC6B,SAAS,CAACC,UAAU,EAC7B;MAAE8B,OAAO,EAAE,CAAC,UAAU;IAAE,CAC1B,CAAC;IACDxD,YAAY,CAAkB,CAAC,CAACsE,OAAO,CAACC,aAAa;IAGrDxE,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;EAClE,CAAC,CAAC;EAEFzB,EAAE,CAAC,4FAA4F,EAAE,YAAY;IAC3G,MAAMkE,cAAc,GAAG,MAAMhE,MAAM,CAACb,QAAQ,CAAC,CAC1C8E,kBAAkB,CACjBxE,QAAQ,CAAC6B,SAAS,CAACC,UAAU,EAC7B;MAAE8B,OAAO,EAAE,CAAC,UAAU;IAAE,CAC1B,CAAC;IACHxD,YAAY,CAAwB,CAAC,CAACsE,OAAO,CAACC,aAAa;IAI3D,IAAItF,IAAI,CAACkF,cAAc,CAAC,EAAE;MACxB,MAAMjB,QAAQ,GAAGiB,cAAc,CAACE,KAAK;MACrCtE,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;IAClE;EACF,CAAC,CAAC;EAEFzB,EAAE,CAAC,0EAA0E,EAAE,YAAY;IACzF,MAAMF,MAAM,CAACI,MAAM,CAACb,QAAQ,CAAC,CAAC6D,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAACqB,OAAO,CAChDC,OAAO,CAAC,CAAC;EACd,CAAC,CAAC;EAEFxE,EAAE,CAAC,oFAAoF,EAAE,YAAY;IACnG,MAAMkE,cAAc,GAAG,MAAMhE,MAAM,CAACb,QAAQ,CAAC,CAC1C8E,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAEzBpE,YAAY,CAAwB,CAAC,CAACsE,OAAO,CAACC,aAAa;IAI3DxE,MAAM,CAAC,OAAO,IAAIoE,cAAc,CAAC;EACnC,CAAC,CAAC;EAEFlE,EAAE,CAAC,4DAA4D,EAAE,YAAY;IAC3E,MAAMiD,QAAQ,GAAG,MAAM/C,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MAC5CT,UAAU,EAAE9B,QAAQ,CAACgC,SAAS,CAACF;IACjC,CAAC,CAAC,CACCgD,OAAO,CAAC,OAAO,CAAC,CAACvB,QAAQ,CAACvD,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;IAE3D3B,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;EAClE,CAAC,CAAC;EAEFzB,EAAE,CAAC,sEAAsE,EAAE,YAAY;IACrF,MAAMkE,cAAc,GAAG,MAAMhE,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MAClDT,UAAU,EAAE9B,QAAQ,CAACgC,SAAS,CAACF;IACjC,CAAC,CAAC,CACCgD,OAAO,CAAC,OAAO,CAAC,CAACN,kBAAkB,CAACxE,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;IAErE,IAAIzC,IAAI,CAACkF,cAAc,CAAC,EAAE;MACxB,MAAMjB,QAAQ,GAAGiB,cAAc,CAACE,KAAK;MACrCtE,MAAM,CAACmD,QAAQ,CAAC7B,WAAW,CAAC,CAACM,IAAI,CAAC/B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;IAClE;EACF,CAAC,CAAC;EAEFzB,EAAE,CAAC,kDAAkD,EAAE,YAAY;IACjE,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC;IAClC,MAAMuB,gBAAgB,GAAGD,SAAS,CAACH,KAAK,CAACG,SAAS,CAAC;IAEnD,MAAM+D,MAAM,GAAG,MAAM9D,gBAAgB,CAAC+D,mBAAmB,CAAC,CAAC;IAC3D,MAAM3D,GAAG,GAAG,IAAIC,GAAG,CAAS,CAAC;IAC7B,KAAK,MAAMC,GAAG,IAAIwD,MAAM,CAACN,KAAK,CAAEvD,IAAI,EAAE;MACpCG,GAAG,CAACG,GAAG,CAACD,GAAG,CAACE,WAAW,CAAC;IAC1B;IAEAtB,MAAM,CAACkB,GAAG,CAACK,IAAI,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC;IAC3BxB,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACgC,SAAS,CAACF,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACiC,SAAS,CAACH,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACzD5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACkC,oBAAoB,CAACJ,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;IACpE5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACmC,oBAAoB,CAACC,YAAY,CAAC,CAAC,CAACL,IAAI,CAAC,IAAI,CAAC;IACtE5B,MAAM,CAACkB,GAAG,CAACO,GAAG,CAAC5B,QAAQ,CAACqC,aAAa,CAACP,UAAU,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC;EAC/D,CAAC,CAAC;EAEF1B,EAAE,CAAC,uCAAuC,EAAE,MAAM;IAEhD,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MACvCT,UAAU,EAAE;QAAEmD,GAAG,EAFgB,CAAC,KAAK,EAAE,KAAK;MAEvB;IACzB,CAAC,CAAC;IACF9E,MAAM,CAACa,SAAS,CAAC,CAACkE,WAAW,CAAC,CAAC;EACjC,CAAC,CAAC;EAEF7E,EAAE,CAAC,kDAAkD,EAAE,MAAM;IAE3DE,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MACrB;MACA4C,qBAAqB,EAAE;QAAEF,GAAG,EAHK,CAAC,KAAK,EAAE,KAAK;MAGZ;IACpC,CAAC,CAAC;IAEF1E,MAAM,CAACf,YAAY,CAAC,CAAC+C,KAAK,CAAC;MACzB;MACA6C,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,EAAE,CAAC,mDAAmD,EAAE,MAAM;IAE5DE,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MACrB8C,GAAG,EAAE,CAAC;QAAEC,QAAQ,EAAE;UAAEC,iBAAiB,EAAE;QAAa;MAAE,CAAC,EAAE;QACvDC,MAAM,EAAE;UAAED,iBAAiB,EAAE;YAAEE,IAAI,EAAE;UAAS;QAAE;MAClD,CAAC,EAAE;QACDH,QAAQ,EAAE;UACRC,iBAAiB,EAAE;YAAEE,IAAI,EAAE,YAAY;YAAEC,WAAW,EAAE;UAAM;QAC9D;MACF,CAAC,EAAE;QACD;QACAJ,QAAQ,EAAE;UAAEC,iBAAiB,EAAE;YAAEG,WAAW,EAAE;UAAM;QAAE;MACxD,CAAC;IACH,CAAC,CAAC;IAEFnF,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;MACrB8C,GAAG,EAAE,CAAC;QAAEC,QAAQ,EAAE;UAAEK,gBAAgB,EAAE;QAAa;MAAE,CAAC,EAAE;QACtDH,MAAM,EAAE;UAAEG,gBAAgB,EAAE;YAAEF,IAAI,EAAE;UAAS;QAAE;MACjD,CAAC,EAAE;QACDH,QAAQ,EAAE;UACRK,gBAAgB,EAAE;YAAEF,IAAI,EAAE,YAAY;YAAEC,WAAW,EAAE;UAAM;QAC7D;MACF,CAAC,EAAE;QACD;QACAJ,QAAQ,EAAE;UAAEK,gBAAgB,EAAE;YAAED,WAAW,EAAE;UAAM;QAAE;MACvD,CAAC;IACH,CAAC,CAAC;IAEFnF,MAAM,CAACf,YAAY,CAAC,CAAC+C,KAAK,CAAC;MACzB;MACA6C,eAAe,EAAE;IACnB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/E,EAAE,CAAC,oCAAoC,EAAE,MAAM;IAC7CD,YAAY,CAACG,MAAM,CAACd,aAAa,CAAC,CAAC8C,KAAK,CAAC,CAACqD,gBAAgB,CAAC;MACzDC,IAAI,EAAE,CAAC;QAAE9B,OAAO,EAAE;UAAEI,IAAI,EAAE;YAAE2B,GAAG,EAAE;UAAM;QAAE;MAAE,CAAC,EAAE;QAC5C/B,OAAO,EAAE;UAAEM,OAAO,EAAE;YAAE0B,IAAI,EAAE;UAAM;QAAE;MACtC,CAAC;IACH,CAAC,CAAC;IACF3F,YAAY,CAACG,MAAM,CAACd,aAAa,CAAC,CAAC8C,KAAK,CAAC,CAACqD,gBAAgB,CAAC;MACzD7B,OAAO,EAAE;QACPC,YAAY,EAAE;UAAEuB,iBAAiB,EAAE;QAAO,CAAC;QAC3C;QACArB,YAAY,EAAE;UAAE8B,wBAAwB,EAAE;QAAmB;MAC/D;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF9F,QAAQ,CAAC+F,IAAI,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAU,CAAC,CAAC,IAAI,EAAGC,CAAC,IAAK;IACxE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEAhG,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACrCA,QAAQ,CAAC,kBAAkB,EAAE,MAAM;QACjCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UACjC,MAAM8F,IAAI,GAAG;YACXC,6BAA6B,EAAE,KAAK;YACpCC,WAAW,EAAE;UACf,CAAU;UACV,MAAMtB,MAAM,GAAGmB,CAAC,KAAK,WAAW,GAC5B,MAAM3F,MAAM,CAACb,QAAQ,CAAC,CAAC0B,SAAS,CAAC+E,IAAI,CAAC,GACtC,CAAC,MAAM5F,MAAM,CAACb,QAAQ,CAAC,CAACsF,mBAAmB,CAACmB,IAAI,CAAC,EAAE1B,KAAM;UAE7DtE,MAAM,CAAC4E,MAAM,CAAC7D,IAAI,CAAC,CAAC0B,YAAY,CAAC,CAAC,CAAC;UACnCxC,YAAY,CAAC2E,MAAM,CAAC7D,IAAI,CAAC,CAAC,CAAC,CAAC,CAACwD,OAAO,CAACC,aAAa,CAEhD,CAAC;QACL,CAAC,CAAC;MACJ,CAAC,CAAC;MAEFzE,QAAQ,CAAC,mBAAmB,EAAE,MAAM;QAClCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;UACjC,MAAM8F,IAAI,GAAG;YACXE,WAAW,EAAE;UACf,CAAU;UACV,MAAMtB,MAAM,GAAGmB,CAAC,KAAK,WAAW,GAC5B,MAAM3F,MAAM,CAACb,QAAQ,CAAC,CAAC0B,SAAS,CAAC+E,IAAI,CAAC,GACtC,CAAC,MAAM5F,MAAM,CAACb,QAAQ,CAAC,CAACsF,mBAAmB,CAACmB,IAAI,CAAC,EAAE1B,KAAM;UAE7DtE,MAAM,CAAC4E,MAAM,CAAC7D,IAAI,CAAC,CAAC0B,YAAY,CAAC,CAAC,CAAC;UACnCxC,YAAY,CAAC2E,MAAM,CAAC7D,IAAI,CAAC,CAAC,CAAC,CAAC,CAACwD,OAAO,CAACC,aAAa,CAEhD,CAAC;QACL,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzE,QAAQ,CAAC,+BAA+B,EAAE,MAAM;IAC9CG,EAAE,CAAC,yDAAyD,EAAE,MAAM;MAClEE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI;QAC1B;QACAA,IAAI,CAACC,SAAS,CAAC,0BAA0B;MAC7C,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFnG,EAAE,CAAC,0EAA0E,EAAE,MAAM;MACnFE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAAK;UAC/B;UACAA,IAAI,CAACzB,OAAO,CAAC,OAAO,CAAC,CAAC2B,cAAc,CAAC,YAAY,CAAC;;UAElD;UACAF,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAACA,OAAO,CAAC,OAAO,CAAC,CAAC2B,cAAc,CAAC,YAAY,CAAC;UAElE,OAAOF,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,YAAY,CAAC;QAC1D;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFpG,EAAE,CAAC,wCAAwC,EAAE,MAAM;MACjDE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B;QACA,qBAAqB,EAAGC,IAAI,IAAK;UAC/B,OAAOA,IAAI,CAACzB,OAAO,CAAC,OAAO,CAAC;QAC9B,CAAC;QACD;QACA,sBAAsB,EAAE4B,CAAA,KAAU;UAChC,OAAO;YAAEC,SAAS,EAAE;UAAO,CAAC;QAC9B;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACAtG,EAAE,CAACuG,KAAK,CAAC,+CAA+C,EAAE,MAAM;MAC9DrG,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAAK;UAC/B;UACAA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,kBAAkB,CAAC;;UAElD;UACAD,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,MAAM,CAAC;;UAEtC;UACAD,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,oBAAoB,CAAC;;UAEpD;UACAD,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,EAAE,CAAC;UAElCD,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,wBAAwB,CAAC;UAExD,OAAOD,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,gBAAgB,CAAC;QACzD;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACAnG,EAAE,CAAC,4DAA4D,EAAE,MAAM;MACrE,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAChD,qBAAqB,EAAGC,IAAI,IAAK;UAC/B;UACAA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,gCAAgC,EAAE;YAC/DK,KAAK,EAAE;UACT,CAAC,CAAC;UAEFN,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,wBAAwB,EAAE;YACvDK,KAAK,EAAE;UACT,CAAC,CAAC;UAEFN,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,uBAAuB,EAAE;YAAEK,KAAK,EAAE;UAAE,CAAC,CAAC;UAErEN,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,wBAAwB,EAAE;YACvD;YACAM,UAAU,EAAE;UACd,CAAC,CAAC;UAEF,OAAOP,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CACnC,kCAAkC,EAClC;YAAEM,UAAU,EAAE;UAAI,CACpB,CAAC;QACH;MACF,CAAC,CAAC;MAEF1G,YAAY,CAACY,SAAS,CAAC,CAAC0D,OAAO,CAACC,aAAa,CAK3C,CAAC;IACL,CAAC,CAAC;IAEFtE,EAAE,CAAC,oDAAoD,EAAE,MAAM;MAC7DE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAAK;UAC/B;UACAA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,cAAc,CAAC;UAEnD,OAAOF,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,gBAAgB,CAAC;QAC9D;MACF,CAAC,CAAC;IAMJ,CAAC,CAAC;IAEFpG,EAAE,CAAC,qFAAqF,EAAE,MAAM;MAC9FE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,gBAAgB;QACjD;MACF,CAAC,CAAC,CAACjE,KAAK,CAAC;QAAE,cAAc,EAAE;UAAE,KAAK,EAAE;QAAE;MAAE,CAAC,CAAC;MAE1C,MAAMwE,2BAA2B,GAAGxG,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAClE,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,gBAAgB;MACnD,CAAC,CAAC,CAACjE,KAAK,CAAC;QAAE,qBAAqB,EAAE;UAAE,KAAK,EAAE;QAAE;MAAE,CAAC,CAAC;MAEjDnC,YAAY,CAAC2G,2BAA2B,CAAC,CAACpC,aAAa,CAIrD,CAAC;MAEHpE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,wBAAwB;MAC3D,CAAC,CAAC,CAACjE,KAAK,CAAC;QAAE,qBAAqB,EAAE;UAAE,SAAS,EAAE;QAAM;MAAE,CAAC;MACtD;MAAA,CACCA,KAAK,CAAC;QAAE,qBAAqB,EAAE;UAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAAE;MAAE,CAAC,CAAC;MAEtD,MAAMyE,uBAAuB,GAAGzG,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9D,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,qBAAqB;MACxD,CAAC,CAAC;MACFQ,uBAAuB,CAACzE,KAAK,CAAC;QAC5B,qBAAqB,EAAE;UAAE,SAAS,EAAE;QAAM;MAC5C,CAAC,CAAC;MAEFyE,uBAAuB,CAACzE,KAAK,CAAC;QAC5B;QACA,qBAAqB,EAAE;UAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;QAAE;MACzC,CAAC,CAAC;MACFnC,YAAY,CAAC4G,uBAAuB,CAAC,CAACrC,aAAa,CAIjD,CAAC;MAEH,MAAMsC,uBAAuB,GAAG1G,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9D,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,YAAY;MACpD,CAAC,CAAC,CAAClE,KAAK,CAAC;QAAE,qBAAqB,EAAE;UAAE,KAAK,EAAE;QAAE;MAAE,CAAC,CAAC;MAEjDnC,YAAY,CAAC6G,uBAAuB,CAAC,CAACtC,aAAa,CAIjD,CAAC;MAEHpE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,WAAW;MACnD,CAAC,CAAC,CAAClE,KAAK,CAAC;QAAE,qBAAqB,EAAE;UAAE,KAAK,EAAE;QAAiB;MAAE,CAAC,CAAC;IAClE,CAAC,CAAC;IAEFlC,EAAE,CAAC,6DAA6D,EAAE,MAAM;MACtE,MAAMW,SAAS,GAAGT,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAChD,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,gBAAgB,CAAC;QAClD,sBAAsB,EAAGD,IAAI,IAC3BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,UAAU;MAClD,CAAC,CAAC,CAAClE,KAAK,CAAC;QAAE,qBAAqB,EAAE;UAAE,KAAK,EAAE;QAAE;MAAE,CAAC,CAAC,CAC9CA,KAAK,CAAC;QAAE,sBAAsB,EAAE;UAAE,KAAK,EAAE;QAAO;MAAE,CAAC,CAAC;MAEvDnC,YAAY,CAACY,SAAS,CAAC,CAAC2D,aAAa,CAKnC,CAAC;IACL,CAAC,CAAC;IAEFtE,EAAE,CAAC,iDAAiD,EAAE,MAAM;MAC1DE,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,YAAY;MACpD,CAAC,CAAC,CAAClE,KAAK,CAAC;QAAE,UAAU,EAAE;UAAE,KAAK,EAAE;QAAI;MAAE,CAAC,CAAC;MAExChC,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC9B,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,YAAY;MACpD,CAAC,CAAC,CAAClE,KAAK,CAAC;QAAE,YAAY,EAAE;UAAE,KAAK,EAAE;QAAE;MAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEFlC,EAAE,CAAC,6EAA6E,EAAE,YAAY;MAC5F,MAAM6G,aAAa,GAAG,MAAM3G,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC1D,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,YAAY;MACpD,CAAC,CAAC,CAAClD,QAAQ,CAACvD,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;MAE1C1B,YAAY,CAAC8G,aAAa,CAACC,mBAAmB,CAAC,CAACxC,aAAa,CAE3D,CAAC;MACHxE,MAAM,CAAC+G,aAAa,CAACC,mBAAmB,CAAC,CAACpF,IAAI,CAC5C/B,QAAQ,CAACgC,SAAS,CAACI,YACrB,CAAC;MAED,MAAMgF,sBAAsB,GAAG,MAAM7G,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QACnE,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC2B,cAAc,CAAC,YAAY;MACpD,CAAC,CAAC,CAAClD,QAAQ,CAACvD,QAAQ,CAACgC,SAAS,CAACF,UAAU,EAAE;QACzC8B,OAAO,EAAE,CAAC,qBAAqB;MACjC,CAAC,CAAC;MAEFzD,MAAM,CAACiH,sBAAsB,CAACD,mBAAmB,CAAC,CAACnE,aAAa,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF3C,EAAE,CAAC,uDAAuD,EAAE,YAAY;MACtE,MAAM6G,aAAa,GAAG,MAAM3G,MAAM,CAACX,8BAA8B,CAAC,CAC/D0G,cAAc,CAAC;QACd,oBAAoB,EAAGC,IAAI,IACzBA,IAAI,CAACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC2B,cAAc,CAAC,YAAY,CAAC;QAC/D,aAAa,EAAGF,IAAI,IAClBA,IAAI,CAACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC2B,cAAc,CAAC,UAAU,CAAC;QAC7D,kBAAkB,EAAGF,IAAI,IACvBA,IAAI,CAACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC0B,SAAS,CACxC,2BACF;MACJ,CAAC,CAAC,CAACjD,QAAQ,CAAC,CAAC,CAAC;MAEhBnD,YAAY,CAAC8G,aAAa,CAACG,kBAAkB,CAAC,CAAC1C,aAAa,CAE1D,CAAC;MACHxE,MAAM,CAAC+G,aAAa,CAACG,kBAAkB,CAAC,CAACC,qBAAqB,CAC5D;AACR;AACA;AACA;AACA;AACA;AACA,OACM,CAAC;MAEDlH,YAAY,CAAC8G,aAAa,CAACK,WAAW,CAAC,CAAC5C,aAAa,CAEnD,CAAC;MACHxE,MAAM,CAAC+G,aAAa,CAACK,WAAW,CAAC,CAACD,qBAAqB,CAAC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;MAEFlH,YAAY,CAAC8G,aAAa,CAACM,gBAAgB,CAAC,CAAC7C,aAAa,CAExD,CAAC;MACHxE,MAAM,CAAC+G,aAAa,CAACM,gBAAgB,CAAC,CAACF,qBAAqB,CAAC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,CAAC;;MAEF;MACA,MAAMG,aAAa,GAAG,MAAMlH,MAAM,CAACX,8BAA8B,CAAC,CAC/D0G,cAAc,CAAC;QACd,oBAAoB,EAAGC,IAAI,IACzBA,IAAI,CAACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC2B,cAAc,CAAC,YAAY,CAAC;QAC/D,aAAa,EAAGF,IAAI,IAClBA,IAAI,CAACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC2B,cAAc,CAAC,UAAU,CAAC;QAC7D,kBAAkB,EAAGF,IAAI,IACvBA,IAAI,CAACzB,OAAO,CAAC,kBAAkB,CAAC,CAAC0B,SAAS,CACxC,2BACF;MACJ,CAAC,CAAC,CAACjE,KAAK,CAAC;QAAE,IAAI,EAAE;UAAE,KAAK,EAAE;QAAE;MAAE,CAAC,CAAC,CAACnB,SAAS,CAAC,CAAC;MAE9CjB,MAAM,CAACsH,aAAa,CAACvG,IAAI,CAAC,CAAC,CAAC,CAACmG,kBAAkB,CAAC,CAACC,qBAAqB,CACpE;AACR;AACA;AACA;AACA;AACA;AACA,OACM,CAAC;IACH,CAAC,CAAC;IACFjH,EAAE,CAAC,8BAA8B,EAAE,YAAY;MAC7C,MAAM6G,aAAa,GAAG,MAAM3G,MAAM,CAACb,QAAQ,CAAC,CAAC4G,cAAc,CAAC;QAC1D,qBAAqB,EAAGC,IAAI,IAC1BA,IAAI,CAACzB,OAAO,CAAC,MAAM,CAAC,CAAC0B,SAAS,CAAC,QAAQ;MAC3C,CAAC,CAAC,CAACjD,QAAQ,CAACvD,QAAQ,CAAC6B,SAAS,CAACC,UAAU,CAAC;MAE1C1B,YAAY,CAAC8G,aAAa,CAACC,mBAAmB,CAAC,CAACxC,aAAa,CAAS,CAAC;MACvExE,MAAM,CAAC+G,aAAa,CAACC,mBAAmB,CAAC,CAACxF,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFzB,QAAQ,CAAC,kBAAkB,EAAE,MAAM;IACjCG,EAAE,CAAC,4CAA4C,EAAE,YAAY;MAC3D,MAAMM,iBAAiB,GAAGJ,MAAM,CAACb,QAAQ,CAAC,CAAC6C,KAAK,CAAC;QAC/CT,UAAU,EAAE;UAAEmD,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK;QAAE;MACpC,CAAC,CAAC;MACF,MAAMyC,yBAAyB,GAAG,MAAM/G,iBAAiB,CACtDgH,gBAAgB,CACf,WAAW,EACX,CAAC,EACD,mBACF,CAAC,CAACvG,SAAS,CAAC,CAAC;MAEfjB,MAAM,CAACuH,yBAAyB,CAACxG,IAAI,CAAC2B,MAAM,CAAC,CAAClB,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEFtB,EAAE,CAAC,2CAA2C,EAAE,YAAY;MAC1D,MAAMqH,yBAAyB,GAAGnH,MAAM,CAACb,QAAQ,CAAC,CAACiI,gBAAgB,CACjE,WAAW,EACX,CAAC,EACD,mBACF,CAAC;MAED,MAAMC,iBAAiB,GAAG,MAAMF,yBAAyB,CAACnF,KAAK,CAAC;QAC9DT,UAAU,EAAE;UAAEmD,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK;QAAE;MACpC,CAAC,CAAC,CAAC7D,SAAS,CAAC,CAAC;MAEdjB,MAAM,CAACyH,iBAAiB,CAAC1G,IAAI,CAAC2B,MAAM,CAAC,CAAClB,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ,CAAC,CAAC;;EAEF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEAzB,QAAQ,CAAC,aAAa,EAAE,MAAM;IAC5BA,QAAQ,CAAC,sBAAsB,EAAE,MAAM;MACrCG,EAAE,CAAC,kBAAkB,EAAE,YAAY;QACjC,MAAM0E,MAAM,GAAG,MAAMxE,MAAM,CAACb,QAAQ,CAAC,CAAC0B,SAAS,CAAC,CAAC,CAAC,CAAC;QAEnD,MAAMyG,YAAY,GAAG9C,MAAM,CAAC7D,IAAI,CAAC,CAAC,CAAC;QAGnCd,YAAY,CAACyH,YAAY,CAAC,CAACnD,OAAO,CAACC,aAAa,CAE9C,CAAC;QACHvE,YAAY,CAACyH,YAAY,CAAC,CAACnD,OAAO,CAACC,aAAa,CAE9C,CAAC;QACHvE,YAAY,CAACyH,YAAY,CAAC,CAACnD,OAAO,CAACC,aAAa,CAE9C,CAAC;QAEHvE,YAAY,CAACyH,YAAY,CAAC/F,UAAU,CAAC,CAAC6C,aAAa,CAEjD,CAAC;QAEHvE,YAAY,CAfVyH,YAAY,CAea/F,UAAU,CAAC,CAAC6C,aAAa,CAElD,CAAC;QAEHvE,YAAY,CAAgC,CAAC,CAC1CuE,aAAa,CAAiB,CAAC;QAElCvE,YAAY,CAEV,CAAC,CACAuE,aAAa,CAIX,CAAC;QAENvE,YAAY,CAA6C,CAAC,CACvDuE,aAAa,CAAyB,CAAC;QAE1CvE,YAAY,CAA0C,CAAC,CACpDuE,aAAa,CAAyB,CAAC;QAE1CvE,YAAY,CAAmD,CAAC,CAC7DuE,aAAa,CAAW,CAAC;QAE5BvE,YAAY,CAA8B,CAAC,CACxCuE,aAAa,CAWZ,CAAC;QAELvE,YAAY,CAEV,CAAC,CACAuE,aAAa,CAAW,CAAC;QAE5BvE,YAAY,CAEV,CAAC,CACAuE,aAAa,CAAa,CAAC;QAE9BvE,YAAY,CAEV,CAAC,CACAuE,aAAa,CAWZ,CAAC;;QAEL;QACA;QACA;;QAWA,MAAMmD,mBAAmB,GAAG/C,MAAM,CAAC7D,IAAI,CAAC,CAAC,CAAC,CAAC6G,GAAG,CAJfpI,YAI0B,CAAC;QAC1DS,YAAY,CAAC0H,mBAAmB,CAAC,CAACpD,OAAO,CAACC,aAAa,CAErD,CAAC;QAEHmD,mBAAmB,CAACE,MAAM;MAC5B,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ObjectSet.test.js","names":["isOk","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid","__EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid","BarInterface","BgaoNflPlayer","Employee","FooInterface","objectTypeWithAllPropertyTypes","Office","LegacyFauxFoundry","startNodeApiServer","stubData","beforeAll","describe","expect","expectTypeOf","it","createClient","client","testSetup","apiServer","close","employeeObjectSet","officeObjectSet","union","subtract","intersect","objectSet","unionedObjectSet","data","employees","fetchPage","pks","Set","emp","add","$primaryKey","size","toEqual","has","employee1","employeeId","toBe","employee2","employee3","employee4withDerived","employeePassesStrict","__primaryKey","employee50050","objectSet2","where","subtractedObjectSet","objectSetResults","objectSet2Results","subtractedObjectSetResults","toHaveLength","length","find","x","toBeUndefined","intersectedObjectSet","$isNull","$orderBy","map","e","employee","fetchOne","toMatchTypeOf","fetchOneByRid","__rid","fetchPageByRid","fetchPageByRidNoType","$select","player","address1","address","addressLine1","address2","addressLine2","city","state","zipCode","travisPlayer","employeeResult","fetchOneWithErrors","value","branded","toEqualTypeOf","rejects","toThrow","pivotTo","result","fetchPageWithErrors","$in","toBeDefined","employeeIdNonExistent","nonExistentProp","$or","fullName","$containsAllTerms","office","term","fuzzySearch","$containsAnyTerm","toBeCallableWith","$and","$eq","$gte","$containsAllTermsInOrder","each","k","opts","$__EXPERIMENTAL_strictNonNull","$includeRid","withProperties","base","aggregate","selectProperty","derivedPropertyName2","incorrect","fails","limit","percentile","numericAggregationObjectSet","setAggregationObjectSet","selectPropertyObjectSet","objectWithRdp","derivedPropertyName","objectWithUndefinedRdp","attachmentSelectDp","toMatchInlineSnapshot","geoSelectDp","geoCollectListDp","fetchPageTest","nearestNeighborsObjectSet","nearestNeighbors","filteredObjectSet","empNotStrict","cheesedFooNotStrict","$as","fooSpt"],"sources":["ObjectSet.test.ts"],"sourcesContent":["/*\n * Copyright 2024 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n Attachment,\n CompileTimeMetadata,\n ConvertProps,\n FetchPageResult,\n InterfaceDefinition,\n ObjectOrInterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n Osdk,\n PropertyKeys,\n Result,\n} from \"@osdk/api\";\nimport { isOk } from \"@osdk/api\";\nimport {\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n} from \"@osdk/api/unstable\";\nimport {\n BarInterface,\n BgaoNflPlayer,\n Employee,\n FooInterface,\n objectTypeWithAllPropertyTypes,\n Office,\n} from \"@osdk/client.test.ontology\";\nimport {\n LegacyFauxFoundry,\n startNodeApiServer,\n stubData,\n} from \"@osdk/shared.test\";\nimport { beforeAll, describe, expect, expectTypeOf, it } from \"vitest\";\nimport type { Client } from \"../Client.js\";\nimport { createClient } from \"../createClient.js\";\n\ntype ApiNameAsString<\n T extends ObjectOrInterfaceDefinition,\n> = CompileTimeMetadata<T>[\"apiName\"];\n\ntype JustProps<\n T extends ObjectOrInterfaceDefinition,\n P extends ValidOsdkPropParams<T>,\n> = P extends \"$all\" ? PropertyKeys<T>\n : Exclude<P, SpecialOsdkPropParams>;\n\ntype SpecialOsdkPropParams =\n | \"$all\"\n | \"$rid\"\n | \"$strict\"\n | \"$notStrict\";\n\ntype ValidOsdkPropParams<Q extends ObjectOrInterfaceDefinition> =\n | SpecialOsdkPropParams\n | PropertyKeys<Q>;\n\ntype PropMapToInterface<\n FROM extends ObjectTypeDefinition,\n TO extends InterfaceDefinition,\n> = NonNullable<\n CompileTimeMetadata<FROM>[\"inverseInterfaceMap\"]\n>[ApiNameAsString<TO>];\n\nexport type PropMapToObject<\n FROM extends ObjectOrInterfaceDefinition,\n TO extends ObjectTypeDefinition,\n> = NonNullable<CompileTimeMetadata<TO>[\"interfaceMap\"]>[ApiNameAsString<FROM>];\n\ndescribe(\"ObjectSet\", () => {\n let client: Client;\n\n beforeAll(() => {\n const testSetup = startNodeApiServer(new LegacyFauxFoundry(), createClient);\n ({ client } = testSetup);\n return () => {\n testSetup.apiServer.close();\n };\n });\n\n it(\"does not allow intersect/union/subtract with different object types\", () => {\n const employeeObjectSet = client(Employee);\n const officeObjectSet = client(Office);\n\n // @ts-expect-error\n employeeObjectSet.union(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.subtract(officeObjectSet);\n\n // @ts-expect-error\n employeeObjectSet.intersect(officeObjectSet);\n });\n\n it(\"can be cast bidirectionally\", () => {\n function takesOldStyleObjectSet(os: ObjectSet<Employee>) {\n return os;\n }\n\n function takesNewStyleObjectSet(os: Employee.ObjectSet) {\n return os;\n }\n\n function maybe() {\n const newStyleObjectSet: Employee.ObjectSet = client(Employee);\n const oldStyleObjectSet: ObjectSet<Employee> = newStyleObjectSet;\n\n takesOldStyleObjectSet(newStyleObjectSet);\n takesNewStyleObjectSet(newStyleObjectSet);\n\n takesOldStyleObjectSet(oldStyleObjectSet);\n takesNewStyleObjectSet(oldStyleObjectSet);\n }\n\n if (false) {\n // here for a simple type check\n maybe();\n }\n });\n\n it(\"objects set union\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const { data: employees } = await unionedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"objects set subtract\", async () => {\n const objectSet = client(Employee);\n const objectSet2 = client(Employee).where({\n employeeId: 50030,\n });\n const subtractedObjectSet = objectSet.subtract(objectSet2);\n\n const objectSetResults = await objectSet.fetchPage();\n const objectSet2Results = await objectSet2.fetchPage();\n const subtractedObjectSetResults = await subtractedObjectSet.fetchPage();\n\n expect(objectSet2Results.data).toHaveLength(1);\n expect(subtractedObjectSetResults.data).toHaveLength(\n objectSetResults.data.length - objectSet2Results.data.length,\n );\n expect(subtractedObjectSetResults.data.find(x => x.$primaryKey === 50030))\n .toBeUndefined();\n });\n\n it(\"objects set intersect\", async () => {\n const objectSet = client(Employee);\n const intersectedObjectSet = objectSet.intersect(objectSet);\n const iter = 0;\n const { data: employees } = await intersectedObjectSet.fetchPage();\n const pks = new Set<number>();\n for (const emp of employees) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"orders objects in ascending order without a filter, and returns all results\", async () => {\n const { data: employees } = await client(Employee)\n .where({\n employeeId: { $isNull: false },\n })\n .fetchPage({\n $orderBy: { \"employeeId\": \"asc\" },\n });\n\n expect(employees.map(e => e.$primaryKey))\n .toEqual([\n 50030,\n 50031,\n 50032,\n 50033,\n 50035,\n stubData.employee50050.employeeId,\n ]);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee1.__rid,\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, PropertyKeys<Employee>>\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching page of rids with experimental function\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee1.__rid, stubData.employee2.__rid],\n {},\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, PropertyKeys<Employee>, boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee1.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching a page of rids without a type specifier\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRidNoType(\n [stubData.employee1.__rid, stubData.employee2.__rid],\n {},\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<\n ObjectOrInterfaceDefinition,\n PropertyKeys<ObjectOrInterfaceDefinition>,\n boolean,\n any,\n any\n >\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee1.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select\", async () => {\n const employee = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchOneByRid,\n ).fetchOneByRid(\n Employee,\n stubData.employee2.__rid,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().toMatchTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee2.employeeId);\n });\n\n it(\"allows fetching by rid with experimental function, with select 2\", async () => {\n const employees = await client(\n __EXPERIMENTAL__NOT_SUPPORTED_YET__fetchPageByRid,\n ).fetchPageByRid(\n Employee,\n [stubData.employee2.__rid, stubData.employee3.__rid],\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employees>().toMatchTypeOf<\n FetchPageResult<Employee, \"fullName\", boolean, any, any>\n >;\n expect(employees.data[0].$primaryKey).toBe(stubData.employee2.employeeId);\n expect(employees.data[1].$primaryKey).toBe(stubData.employee3.employeeId);\n });\n\n it(\"check struct parsing\", async () => {\n const player = await client(BgaoNflPlayer).fetchOne(\n \"tkelce\",\n );\n expectTypeOf<typeof player>().toMatchTypeOf<\n Osdk<BgaoNflPlayer, PropertyKeys<BgaoNflPlayer>>\n >;\n expectTypeOf<typeof player.address>().toMatchTypeOf<\n {\n addressLine1: string | undefined;\n addressLine2: string | undefined;\n city: string | undefined;\n state: string | undefined;\n zipCode: number | undefined;\n } | undefined\n >;\n\n const address1 = player.address!.addressLine1;\n expectTypeOf<typeof address1>().toMatchTypeOf<\n string | undefined\n >;\n expect(address1).toEqual(\"15 Muppets Lane\");\n\n const address2 = player.address?.addressLine2;\n expectTypeOf<typeof address2>().toMatchTypeOf<\n string | undefined\n >;\n expect(address2).toEqual(\"Resort No 4\");\n\n const city = player.address?.city;\n expectTypeOf<typeof city>().toMatchTypeOf<\n string | undefined\n >;\n expect(city).toEqual(\"Memphis\");\n\n const state = player.address?.state;\n expectTypeOf<typeof state>().toMatchTypeOf<\n string | undefined\n >;\n expect(state).toEqual(\"TN\");\n\n const zipCode = player.address?.zipCode;\n expectTypeOf<typeof zipCode>().toMatchTypeOf<\n number | undefined\n >;\n expect(zipCode).toEqual(11100);\n\n expect(player.$primaryKey).toEqual(stubData.travisPlayer.__primaryKey);\n expect(player.address).toEqual(stubData.travisPlayer.address);\n });\n\n it(\"allows fetching by PK from a base object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n );\n expectTypeOf<typeof employeeResult>().toMatchTypeOf<\n Result<Osdk<Employee, PropertyKeys<Employee>>>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOne\", async () => {\n const employee = await client(Employee).fetchOne(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employee>().branded.toEqualTypeOf<\n Osdk<Employee, \"fullName\">\n >;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a base object set with selected properties - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(\n stubData.employee1.employeeId,\n { $select: [\"fullName\"] },\n );\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee, \"fullName\">>\n >;\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOne\", async () => {\n await expect(client(Employee).fetchOne(-1)).rejects\n .toThrow();\n });\n\n it(\"throws when fetching by PK with an object that does not exist - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee)\n .fetchOneWithErrors(-1);\n\n expectTypeOf<typeof employeeResult>().branded.toEqualTypeOf<\n Result<Osdk<Employee>>\n >;\n\n expect(\"error\" in employeeResult);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOne\", async () => {\n const employee = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOne(stubData.employee1.employeeId);\n\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n });\n\n it(\"allows fetching by PK from a pivoted object set - fetchOneWithErrors\", async () => {\n const employeeResult = await client(Employee).where({\n employeeId: stubData.employee2.employeeId,\n })\n .pivotTo(\"peeps\").fetchOneWithErrors(stubData.employee1.employeeId);\n\n if (isOk(employeeResult)) {\n const employee = employeeResult.value;\n expect(employee.$primaryKey).toBe(stubData.employee1.employeeId);\n }\n });\n\n it(\" object set union works with fetchPageWithErrors\", async () => {\n const objectSet = client(Employee);\n const unionedObjectSet = objectSet.union(objectSet);\n const iter = 0;\n const result = await unionedObjectSet.fetchPageWithErrors();\n const pks = new Set<number>();\n for (const emp of result.value!.data) {\n pks.add(emp.$primaryKey);\n }\n\n expect(pks.size).toEqual(6);\n expect(pks.has(stubData.employee1.employeeId)).toBe(true);\n expect(pks.has(stubData.employee2.employeeId)).toBe(true);\n expect(pks.has(stubData.employee3.employeeId)).toBe(true);\n expect(pks.has(stubData.employee4withDerived.employeeId)).toBe(true);\n expect(pks.has(stubData.employeePassesStrict.__primaryKey)).toBe(true);\n expect(pks.has(stubData.employee50050.employeeId)).toBe(true);\n });\n\n it(\"allows $in filter with ReadonlyArrays\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n const objectSet = client(Employee).where({\n employeeId: { $in: ids },\n });\n expect(objectSet).toBeDefined();\n });\n\n it(\"does not allow arbitrary keys when no properties\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n // @ts-expect-error\n employeeIdNonExistent: { $in: ids },\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking containsallterm and containsanyterm\", () => {\n const ids: ReadonlyArray<number> = [50030, 50031];\n client(Employee).where({\n $or: [{ fullName: { $containsAllTerms: \"John Smith\" } }, {\n office: { $containsAllTerms: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAllTerms: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAllTerms: { fuzzySearch: false } },\n }],\n });\n\n client(Employee).where({\n $or: [{ fullName: { $containsAnyTerm: \"John Smith\" } }, {\n office: { $containsAnyTerm: { term: \"NYC DC\" } },\n }, {\n fullName: {\n $containsAnyTerm: { term: \"John Smith\", fuzzySearch: false },\n },\n }, {\n // @ts-expect-error\n fullName: { $containsAnyTerm: { fuzzySearch: false } },\n }],\n });\n\n client(BarInterface).where({\n // @ts-expect-error\n nonExistentProp: \"\",\n });\n });\n\n it(\"type checking struct where clauses\", () => {\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n $and: [{ address: { city: { $eq: \"NYC\" } } }, {\n address: { zipCode: { $gte: 55555 } },\n }],\n });\n expectTypeOf(client(BgaoNflPlayer).where).toBeCallableWith({\n address: {\n addressLine1: { $containsAllTerms: \"BLVD\" },\n // @ts-expect-error\n addressLine2: { $containsAllTermsInOrder: \"Apartment Number\" },\n },\n });\n });\n\n describe.each([\"fetchPage\", \"fetchPageWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: \\\"drop\\\"\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Osdk<Employee, \"$rid\" | \"$all\">\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<\"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"drops bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: \"drop\",\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchPage\"\n // ? await client(Employee).fetchPage(opts)\n // : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n // expect(result.data).toHaveLength(3);\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<Osdk<Employee>>();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject\n // >();\n // expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n // Employee.OsdkObject<never>\n // >();\n // });\n // });\n // });\n\n describe(\"strictNonNull: false\", () => {\n describe(\"includeRid: true\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $__EXPERIMENTAL_strictNonNull: false,\n $includeRid: true,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n >();\n });\n });\n\n describe(\"includeRid: false\", () => {\n it(\"returns bad data\", async () => {\n const opts = {\n $includeRid: false,\n } as const;\n const result = k === \"fetchPage\"\n ? await client(Employee).fetchPage(opts)\n : (await client(Employee).fetchPageWithErrors(opts)).value!;\n\n expect(result.data).toHaveLength(6);\n expectTypeOf(result.data[0]).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n });\n });\n });\n });\n\n describe(\"Derived Properties Object Set\", () => {\n it(\"does not allow aggregate before a link type is selected\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n // @ts-expect-error\n base.aggregate(\"employeeId:exactDistinct\"),\n });\n });\n\n it(\"does not allow selectProperty when a many link was selected at any point\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").pivotTo(\"peeps\").selectProperty(\"employeeId\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeId\");\n },\n });\n });\n\n it(\"enforces a return only of correct type\", () => {\n client(Employee).withProperties({\n // @ts-expect-error\n \"derivedPropertyName\": (base) => {\n return base.pivotTo(\"peeps\");\n },\n // @ts-expect-error\n \"derivedPropertyName2\": (base) => {\n return { incorrect: \"type\" };\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it.fails(\"correctly narrows types of aggregate function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"notAProperty:sum\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\":avg\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:notAnOp\");\n\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"\");\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\");\n\n return base.pivotTo(\"lead\").aggregate(\"employeeId:sum\");\n },\n });\n });\n\n // Executed code fails since we're providing bad strings to the function\n it(\"correctly narrows types of options for aggregate functions\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").aggregate(\"employeeId:approximateDistinct\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n limit: 1,\n });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectSet\", { limit: 1 });\n\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\", {\n // @ts-expect-error\n percentile: 1,\n });\n\n return base.pivotTo(\"lead\").aggregate(\n \"employeeId:approximatePercentile\",\n { percentile: 0.5 },\n );\n },\n });\n\n expectTypeOf(objectSet).branded.toEqualTypeOf<\n ObjectSet<\n Employee,\n { derivedPropertyName: \"double\" | undefined }\n >\n >();\n });\n\n it(\"correctly narrows types of selectProperty function\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) => {\n // @ts-expect-error\n base.pivotTo(\"lead\").selectProperty(\"notAProperty\");\n\n return base.pivotTo(\"lead\").selectProperty(\"employeeStatus\");\n },\n }) satisfies ObjectSet<\n Employee,\n {\n \"derivedPropertyName\": \"stringTimeseries\" | undefined;\n }\n >;\n });\n\n it(\"propagates derived property type to future object set operations with correct types\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n // @ts-expect-error\n }).where({ \"notAProperty\": { \"$eq\": 3 } });\n\n const numericAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(numericAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:collectList\"),\n }).where({ \"derivedPropertyName\": { \"$isNull\": false } })\n // @ts-expect-error\n .where({ \"derivedPropertyName\": { \"$eq\": [1, 2] } });\n\n const setAggregationObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"fullName:collectSet\"),\n });\n setAggregationObjectSet.where({\n \"derivedPropertyName\": { \"$isNull\": false },\n });\n\n setAggregationObjectSet.where({\n // @ts-expect-error\n \"derivedPropertyName\": { \"$eq\": [1, 2] },\n });\n expectTypeOf(setAggregationObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"string\"[] | undefined;\n }>\n >();\n\n const selectPropertyObjectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } });\n\n expectTypeOf(selectPropertyObjectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"integer\";\n }>\n >();\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"startDate\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": \"datetimeFilter\" } });\n });\n\n it(\"correctly types multiple property definitions in one clause\", () => {\n const objectSet = client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"employeeId:sum\"),\n \"derivedPropertyName2\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"fullName\"),\n }).where({ \"derivedPropertyName\": { \"$eq\": 3 } })\n .where({ \"derivedPropertyName2\": { \"$eq\": \"name\" } });\n\n expectTypeOf(objectSet).toEqualTypeOf<\n ObjectSet<Employee, {\n derivedPropertyName: \"double\" | undefined;\n derivedPropertyName2: \"string\" | undefined;\n }>\n >();\n });\n\n it(\"ensures other properties are consistently typed\", () => {\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"fullName\": { \"$eq\": \"A\" } });\n\n client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).where({ \"employeeId\": { \"$eq\": 2 } });\n });\n\n it(\"allows fetching derived properties with correctly typed Osdk.Instance types\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<\n number\n >();\n expect(objectWithRdp.derivedPropertyName).toBe(\n stubData.employee2.__primaryKey,\n );\n\n const objectWithUndefinedRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").selectProperty(\"employeeId\"),\n }).fetchOne(stubData.employee2.employeeId, {\n $select: [\"derivedPropertyName\"],\n });\n\n expect(objectWithUndefinedRdp.derivedPropertyName).toBeUndefined();\n });\n\n it(\"correctly deserializes attachments and geo properties\", async () => {\n const objectWithRdp = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).fetchOne(5);\n\n expectTypeOf(objectWithRdp.attachmentSelectDp).toEqualTypeOf<\n Attachment | undefined\n >();\n expect(objectWithRdp.attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n\n expectTypeOf(objectWithRdp.geoSelectDp).toEqualTypeOf<\n GeoJSON.GeoJSON | undefined\n >();\n expect(objectWithRdp.geoSelectDp).toMatchInlineSnapshot(`\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n }\n `);\n\n expectTypeOf(objectWithRdp.geoCollectListDp).toEqualTypeOf<\n GeoJSON.GeoJSON[] | undefined\n >();\n expect(objectWithRdp.geoCollectListDp).toMatchInlineSnapshot(`\n [\n [\n {\n \"coordinates\": [\n [\n [\n 1,\n 1,\n ],\n [\n 1,\n 2,\n ],\n [\n 2,\n 2,\n ],\n [\n 2,\n 1,\n ],\n [\n 1,\n 1,\n ],\n ],\n ],\n \"type\": \"Polygon\",\n },\n ],\n ]\n `);\n\n // Tests that we deserialize properly for fetchPage as well\n const fetchPageTest = await client(objectTypeWithAllPropertyTypes)\n .withProperties({\n \"attachmentSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"attachment\"),\n \"geoSelectDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").selectProperty(\"geoShape\"),\n \"geoCollectListDp\": (base) =>\n base.pivotTo(\"linkedObjectType\").aggregate(\n \"geoShapeArray:collectList\",\n ),\n }).where({ \"id\": { \"$eq\": 5 } }).fetchPage();\n\n expect(fetchPageTest.data[0].attachmentSelectDp).toMatchInlineSnapshot(\n `\n {\n \"fetchContents\": [Function],\n \"fetchMetadata\": [Function],\n \"rid\": \"ri.attachments.main.attachment.86016861-707f-4292-b258-6a7108915a75\",\n }\n `,\n );\n });\n it(\"correctly deserializes count\", async () => {\n const objectWithRdp = await client(Employee).withProperties({\n \"derivedPropertyName\": (base) =>\n base.pivotTo(\"lead\").aggregate(\"$count\"),\n }).fetchOne(stubData.employee1.employeeId);\n\n expectTypeOf(objectWithRdp.derivedPropertyName).toEqualTypeOf<number>();\n expect(objectWithRdp.derivedPropertyName).toEqual(1);\n });\n });\n\n describe(\"nearestNeighbors\", () => {\n it(\"works as a subsequent object set operation\", async () => {\n const employeeObjectSet = client(Employee).where({\n employeeId: { $in: [50030, 50031] },\n });\n const nearestNeighborsObjectSet = await employeeObjectSet\n .nearestNeighbors(\n \"textQuery\",\n 3,\n \"skillSetEmbedding\",\n ).fetchPage();\n\n expect(nearestNeighborsObjectSet.data.length).toEqual(2);\n });\n\n it(\"works as a preceding object set operation\", async () => {\n const nearestNeighborsObjectSet = client(Employee).nearestNeighbors(\n \"textQuery\",\n 7,\n \"skillSetEmbedding\",\n );\n\n const filteredObjectSet = await nearestNeighborsObjectSet.where({\n employeeId: { $in: [50030, 50031] },\n }).fetchPage();\n\n expect(filteredObjectSet.data.length).toEqual(2);\n });\n });\n\n // Can't run these tests because we can't load by primary key!\n // describe.each([\"fetchOne\", \"fetchOneWithErrors\"] as const)(\"%s\", (k) => {\n // describe(\"strictNonNull: false\", () => {\n // describe(\"includeRid: true\", () => {\n // it(\"returns bad data\", async () => {\n // // Look at this\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: true,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\" | \"$rid\">\n // >();\n // });\n // });\n\n // describe(\"includeRid: false\", () => {\n // it(\"returns bad data\", async () => {\n // const opts = {\n // $__EXPERIMENTAL_strictNonNull: false,\n // $includeRid: false,\n // } as const;\n // const result = k === \"fetchOne\"\n // ? await client(Employee).fetchOne(50033, opts)\n // : (await client(Employee).fetchOneWithErrors(50033, opts)).value!;\n\n // expect(result).not.toBeUndefined();\n // expectTypeOf(result).branded.toEqualTypeOf<\n // Osdk<Employee, \"$all\" | \"$notStrict\">\n // >();\n // });\n // });\n // });\n // });\n\n describe(\"conversions\", () => {\n describe(\"strictNonNull: false\", () => {\n it(\"returns bad data\", async () => {\n const result = await client(Employee).fetchPage({});\n\n const empNotStrict = result.data[0];\n const empNotStrict2: Osdk<Employee, \"$all\" | \"$notStrict\"> =\n empNotStrict;\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Osdk<Employee, \"$all\" | \"$notStrict\">\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never, Employee.PropertyKeys>\n >();\n expectTypeOf(empNotStrict).branded.toEqualTypeOf<\n Employee.OsdkObject<never>\n >();\n\n expectTypeOf(empNotStrict.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf(empNotStrict2.employeeId).toEqualTypeOf<\n number\n >();\n\n expectTypeOf<ApiNameAsString<FooInterface>>()\n .toEqualTypeOf<\"FooInterface\">();\n\n expectTypeOf<\n NonNullable<CompileTimeMetadata<Employee>[\"interfaceMap\"]>\n >()\n .toEqualTypeOf<{\n FooInterface: {\n fooSpt: \"fullName\";\n };\n }>();\n\n expectTypeOf<PropMapToInterface<Employee, FooInterface>>()\n .toEqualTypeOf<{ fullName: \"fooSpt\" }>();\n\n expectTypeOf<PropMapToObject<FooInterface, Employee>>()\n .toEqualTypeOf<{ fooSpt: \"fullName\" }>();\n\n expectTypeOf<ConvertProps<Employee, FooInterface, \"fullName\">>()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<JustProps<Employee, \"$all\">>()\n .toEqualTypeOf<\n | \"class\"\n | \"fullName\"\n | \"office\"\n | \"employeeId\"\n | \"employeeStatus\"\n | \"startDate\"\n | \"employeeLocation\"\n | \"employeeSensor\"\n | \"skillSet\"\n | \"skillSetEmbedding\"\n >();\n\n expectTypeOf<\n ConvertProps<Employee, FooInterface, \"fullName\" | \"office\">\n >()\n .toEqualTypeOf<\"fooSpt\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\">\n >()\n .toEqualTypeOf<\"fullName\">();\n\n expectTypeOf<\n ConvertProps<FooInterface, Employee, \"fooSpt\", \"$allBaseProperties\">\n >()\n .toEqualTypeOf<\n | \"employeeId\"\n | \"fullName\"\n | \"office\"\n | \"class\"\n | \"startDate\"\n | \"employeeStatus\"\n | \"employeeSensor\"\n | \"employeeLocation\"\n | \"skillSet\"\n | \"skillSetEmbedding\"\n >();\n\n // We don't have a proper definition that has\n // a non-null property on an interface so\n // we cheese it here to be sure the types work\n type CheesedProp<\n T extends InterfaceDefinition,\n K extends PropertyKeys<T>,\n > = T & { properties: { [KK in K]: { nullable: false } } };\n\n type CheesedFoo = CheesedProp<FooInterface, \"fooSpt\">;\n const CheesedFoo: CheesedFoo = FooInterface as CheesedFoo;\n\n type T = ConvertProps<Employee, CheesedFoo, \"fullName\">;\n\n const cheesedFooNotStrict = result.data[0].$as(CheesedFoo);\n expectTypeOf(cheesedFooNotStrict).branded.toEqualTypeOf<\n Osdk<CheesedFoo, \"$all\" | \"$notStrict\">\n >();\n\n cheesedFooNotStrict.fooSpt;\n });\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,13 @@
16
16
 
17
17
  import WebSocket from "isomorphic-ws";
18
18
  import invariant from "tiny-invariant";
19
+ import { ExponentialBackoff } from "../util/exponentialBackoff.js";
19
20
  const MINIMUM_RECONNECT_DELAY_MS = 5 * 1000;
21
+ const EXPONENTIAL_BACKOFF_INITIAL_DELAY_MS = 1000;
22
+ const EXPONENTIAL_BACKOFF_MAX_DELAY_MS = 60000;
23
+ const EXPONENTIAL_BACKOFF_MULTIPLIER = 2;
24
+ const EXPONENTIAL_BACKOFF_JITTER_FACTOR = 0.3;
25
+ const WEBSOCKET_IDLE_DISCONNECT_DELAY_MS = 15000;
20
26
 
21
27
  /** Noop function to reduce conditional checks */
22
28
  function doNothing() {}
@@ -59,6 +65,8 @@ export class ObjectSetListenerWebsocket {
59
65
  #ws;
60
66
  #lastWsConnect = 0;
61
67
  #client;
68
+ #backoff;
69
+ #isFirstConnection = true;
62
70
  #logger;
63
71
 
64
72
  /**
@@ -80,6 +88,12 @@ export class ObjectSetListenerWebsocket {
80
88
  } = {}) {
81
89
  this.MINIMUM_RECONNECT_DELAY_MS = minimumReconnectDelayMs;
82
90
  this.#client = client;
91
+ this.#backoff = new ExponentialBackoff({
92
+ initialDelayMs: EXPONENTIAL_BACKOFF_INITIAL_DELAY_MS,
93
+ maxDelayMs: EXPONENTIAL_BACKOFF_MAX_DELAY_MS,
94
+ multiplier: EXPONENTIAL_BACKOFF_MULTIPLIER,
95
+ jitterFactor: EXPONENTIAL_BACKOFF_JITTER_FACTOR
96
+ });
83
97
  this.#logger = client.logger?.child({}, {
84
98
  msgPrefix: "<OSW> "
85
99
  });
@@ -217,7 +231,7 @@ export class ObjectSetListenerWebsocket {
217
231
  if (this.#subscriptions.size === 0) {
218
232
  this.#cycleWebsocket();
219
233
  }
220
- }, 15_000 /* ms */);
234
+ }, WEBSOCKET_IDLE_DISCONNECT_DELAY_MS);
221
235
  }
222
236
  async #ensureWebsocket() {
223
237
  if (this.#ws == null) {
@@ -231,12 +245,17 @@ export class ObjectSetListenerWebsocket {
231
245
  // tokenProvider is async, there could potentially be a race to create the websocket.
232
246
  // Only the first call to reach here will find a null this.#ws, the rest will bail out
233
247
  if (this.#ws == null) {
234
- // TODO this can probably be exponential backoff with jitter
235
- // don't reconnect more quickly than MINIMUM_RECONNECT_DELAY
236
- const nextConnectTime = (this.#lastWsConnect ?? 0) + this.MINIMUM_RECONNECT_DELAY_MS;
237
- if (nextConnectTime > Date.now()) {
248
+ // Only apply exponential backoff delay on reconnection attempts, not the first connection
249
+ if (!this.#isFirstConnection) {
250
+ const delay = this.#backoff.calculateDelay();
251
+ if (process.env.NODE_ENV !== "production") {
252
+ this.#logger?.debug({
253
+ delay,
254
+ attempt: this.#backoff.getAttempt()
255
+ }, "Waiting before reconnect");
256
+ }
238
257
  await new Promise(resolve => {
239
- setTimeout(resolve, nextConnectTime - Date.now());
258
+ setTimeout(resolve, delay);
240
259
  });
241
260
  }
242
261
  this.#lastWsConnect = Date.now();
@@ -268,7 +287,7 @@ export class ObjectSetListenerWebsocket {
268
287
  }
269
288
  function error(evt) {
270
289
  cleanup();
271
- reject(evt);
290
+ reject(new Error(String(evt)));
272
291
  }
273
292
  ws.addEventListener("open", open);
274
293
  ws.addEventListener("error", error);
@@ -278,11 +297,15 @@ export class ObjectSetListenerWebsocket {
278
297
  }
279
298
  }
280
299
  #onOpen = () => {
300
+ // Mark that we've successfully connected at least once
301
+ this.#isFirstConnection = false;
302
+ // Reset backoff on successful connection
303
+ this.#backoff.reset();
281
304
  // resubscribe all of the listeners
282
305
  this.#sendSubscribeMessage();
283
306
  };
284
307
  #onMessage = async message => {
285
- const data = JSON.parse(message.data.toString());
308
+ const data = JSON.parse(String(message.data));
286
309
  if (process.env.NODE_ENV !== "production") {
287
310
  this.#logger?.debug({
288
311
  payload: data
@@ -437,7 +460,6 @@ export class ObjectSetListenerWebsocket {
437
460
  event
438
461
  }, "Received close event from ws", event);
439
462
  }
440
- // TODO we should probably throttle this so we don't abuse the backend
441
463
  this.#cycleWebsocket();
442
464
  };
443
465
  #cycleWebsocket = () => {