@osdk/client 2.7.0-beta.8 → 2.7.0-rc.15

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 (326) hide show
  1. package/CHANGELOG.md +190 -0
  2. package/build/browser/MinimalClientContext.js.map +1 -1
  3. package/build/browser/actions/actions.test.js +9 -8
  4. package/build/browser/actions/actions.test.js.map +1 -1
  5. package/build/browser/actions/applyAction.js +0 -4
  6. package/build/browser/actions/applyAction.js.map +1 -1
  7. package/build/browser/createClient.js +1 -2
  8. package/build/browser/createClient.js.map +1 -1
  9. package/build/browser/createMinimalClient.js +0 -1
  10. package/build/browser/createMinimalClient.js.map +1 -1
  11. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js +1 -17
  12. package/build/browser/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  13. package/build/browser/index.js +1 -1
  14. package/build/browser/index.js.map +1 -1
  15. package/build/browser/internal/conversions/modernToLegacyWhereClause.js +14 -9
  16. package/build/browser/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  17. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js +74 -0
  18. package/build/browser/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  19. package/build/browser/object/SimpleOsdkProperties.js.map +1 -1
  20. package/build/browser/object/aggregate.js +0 -1
  21. package/build/browser/object/aggregate.js.map +1 -1
  22. package/build/browser/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  23. package/build/browser/object/fetchPage.js +0 -2
  24. package/build/browser/object/fetchPage.js.map +1 -1
  25. package/build/browser/objectSet/ObjectSetListenerWebsocket.js +13 -4
  26. package/build/browser/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  27. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js +46 -2
  28. package/build/browser/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  29. package/build/browser/objectSet/createObjectSet.js +1 -1
  30. package/build/browser/objectSet/createObjectSet.js.map +1 -1
  31. package/build/browser/objectSet/fetchLinksPage.js +0 -1
  32. package/build/browser/objectSet/fetchLinksPage.js.map +1 -1
  33. package/build/browser/observable/FunctionPayload.js +2 -0
  34. package/build/browser/observable/FunctionPayload.js.map +1 -0
  35. package/build/browser/observable/ObservableClient.js.map +1 -1
  36. package/build/browser/observable/internal/BulkObjectLoader.js +2 -1
  37. package/build/browser/observable/internal/BulkObjectLoader.js.map +1 -1
  38. package/build/browser/observable/internal/Changes.js +4 -1
  39. package/build/browser/observable/internal/Changes.js.map +1 -1
  40. package/build/browser/observable/internal/KnownCacheKey.js.map +1 -1
  41. package/build/browser/observable/internal/ObservableClientImpl.js +21 -1
  42. package/build/browser/observable/internal/ObservableClientImpl.js.map +1 -1
  43. package/build/browser/observable/internal/RidListCanonicalizer.js +30 -0
  44. package/build/browser/observable/internal/RidListCanonicalizer.js.map +1 -0
  45. package/build/browser/observable/internal/RidListCanonicalizer.test.js +50 -0
  46. package/build/browser/observable/internal/RidListCanonicalizer.test.js.map +1 -0
  47. package/build/browser/observable/internal/Store.js +11 -1
  48. package/build/browser/observable/internal/Store.js.map +1 -1
  49. package/build/browser/observable/internal/Store.test.js +106 -5
  50. package/build/browser/observable/internal/Store.test.js.map +1 -1
  51. package/build/browser/observable/internal/actions/ActionApplication.js +11 -7
  52. package/build/browser/observable/internal/actions/ActionApplication.js.map +1 -1
  53. package/build/browser/observable/internal/base-list/BaseCollectionQuery.js.map +1 -1
  54. package/build/browser/observable/internal/base-list/BaseListQuery.js +15 -9
  55. package/build/browser/observable/internal/base-list/BaseListQuery.js.map +1 -1
  56. package/build/browser/observable/internal/base-list/createCollectionConnectable.js +4 -2
  57. package/build/browser/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  58. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js +1 -2
  59. package/build/browser/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  60. package/build/browser/observable/internal/evaluateFilter.js +1 -1
  61. package/build/browser/observable/internal/evaluateFilter.js.map +1 -1
  62. package/build/browser/observable/internal/evaluateFilter.test.js +105 -0
  63. package/build/browser/observable/internal/evaluateFilter.test.js.map +1 -0
  64. package/build/browser/observable/internal/function/FunctionCacheKey.js +26 -0
  65. package/build/browser/observable/internal/function/FunctionCacheKey.js.map +1 -0
  66. package/build/browser/observable/internal/function/FunctionParamsCanonicalizer.js +151 -0
  67. package/build/browser/observable/internal/function/FunctionParamsCanonicalizer.js.map +1 -0
  68. package/build/browser/observable/internal/function/FunctionParamsCanonicalizer.test.js +186 -0
  69. package/build/browser/observable/internal/function/FunctionParamsCanonicalizer.test.js.map +1 -0
  70. package/build/browser/observable/internal/function/FunctionQuery.js +137 -0
  71. package/build/browser/observable/internal/function/FunctionQuery.js.map +1 -0
  72. package/build/browser/observable/internal/function/FunctionQuery.test.js +278 -0
  73. package/build/browser/observable/internal/function/FunctionQuery.test.js.map +1 -0
  74. package/build/browser/observable/internal/function/FunctionsHelper.js +92 -0
  75. package/build/browser/observable/internal/function/FunctionsHelper.js.map +1 -0
  76. package/build/browser/observable/internal/links/SpecificLinkQuery.js +2 -1
  77. package/build/browser/observable/internal/links/SpecificLinkQuery.js.map +1 -1
  78. package/build/browser/observable/internal/list/InterfaceListQuery.js +27 -10
  79. package/build/browser/observable/internal/list/InterfaceListQuery.js.map +1 -1
  80. package/build/browser/observable/internal/list/ListCacheKey.js +1 -0
  81. package/build/browser/observable/internal/list/ListCacheKey.js.map +1 -1
  82. package/build/browser/observable/internal/list/ListQuery.js +27 -6
  83. package/build/browser/observable/internal/list/ListQuery.js.map +1 -1
  84. package/build/browser/observable/internal/list/ListQuery.test.js +167 -3
  85. package/build/browser/observable/internal/list/ListQuery.test.js.map +1 -1
  86. package/build/browser/observable/internal/list/ListsHelper.js +6 -3
  87. package/build/browser/observable/internal/list/ListsHelper.js.map +1 -1
  88. package/build/browser/observable/internal/list/ObjectListQuery.js +23 -9
  89. package/build/browser/observable/internal/list/ObjectListQuery.js.map +1 -1
  90. package/build/browser/observable/internal/object/ObjectQuery.js +15 -1
  91. package/build/browser/observable/internal/object/ObjectQuery.js.map +1 -1
  92. package/build/browser/observable/internal/object/ObjectsHelper.js +1 -3
  93. package/build/browser/observable/internal/object/ObjectsHelper.js.map +1 -1
  94. package/build/browser/observable/internal/objectMatchesWhereClause.test.js +11 -1
  95. package/build/browser/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  96. package/build/browser/observable/internal/objectset/ObjectSetQuery.js +15 -9
  97. package/build/browser/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  98. package/build/browser/observable/internal/testUtils.js +8 -5
  99. package/build/browser/observable/internal/testUtils.js.map +1 -1
  100. package/build/browser/observable/internal/utils/rdpFieldOperations.js +6 -3
  101. package/build/browser/observable/internal/utils/rdpFieldOperations.js.map +1 -1
  102. package/build/browser/observable/internal/utils/rdpFieldOperations.test.js +172 -0
  103. package/build/browser/observable/internal/utils/rdpFieldOperations.test.js.map +1 -0
  104. package/build/browser/ontology/loadActionMetadata.js +1 -3
  105. package/build/browser/ontology/loadActionMetadata.js.map +1 -1
  106. package/build/browser/ontology/loadFullObjectMetadata.js +1 -2
  107. package/build/browser/ontology/loadFullObjectMetadata.js.map +1 -1
  108. package/build/browser/ontology/loadInterfaceMetadata.js +1 -2
  109. package/build/browser/ontology/loadInterfaceMetadata.js.map +1 -1
  110. package/build/browser/public/unstable-do-not-use.js.map +1 -1
  111. package/build/browser/queries/applyQuery.js +14 -0
  112. package/build/browser/queries/applyQuery.js.map +1 -1
  113. package/build/browser/queries/queries.test.js +14 -2
  114. package/build/browser/queries/queries.test.js.map +1 -1
  115. package/build/browser/util/UserAgent.js +2 -2
  116. package/build/browser/util/UserAgent.js.map +1 -1
  117. package/build/browser/util/isObjectSpecifiersObject.js.map +1 -1
  118. package/build/browser/util/toDataValue.js +0 -5
  119. package/build/browser/util/toDataValue.js.map +1 -1
  120. package/build/browser/util/toDataValue.test.js +2 -7
  121. package/build/browser/util/toDataValue.test.js.map +1 -1
  122. package/build/cjs/{Client-DaUJl7jZ.d.cts → Client-Cmx6x_V1.d.cts} +1 -1
  123. package/build/cjs/{chunk-FL7QZC57.cjs → chunk-CDUYWOVQ.cjs} +79 -82
  124. package/build/cjs/chunk-CDUYWOVQ.cjs.map +1 -0
  125. package/build/cjs/{chunk-PARVKNVB.cjs → chunk-Y362HOIZ.cjs} +30 -35
  126. package/build/cjs/chunk-Y362HOIZ.cjs.map +1 -0
  127. package/build/cjs/{createClient-D5G3qzAO.d.cts → createClient-BDmrDOzZ.d.cts} +1 -2
  128. package/build/cjs/index.cjs +8 -12
  129. package/build/cjs/index.cjs.map +1 -1
  130. package/build/cjs/index.d.cts +3 -3
  131. package/build/cjs/public/internal.cjs +8 -8
  132. package/build/cjs/public/internal.d.cts +1 -1
  133. package/build/cjs/public/unstable-do-not-use.cjs +719 -108
  134. package/build/cjs/public/unstable-do-not-use.cjs.map +1 -1
  135. package/build/cjs/public/unstable-do-not-use.d.cts +75 -4
  136. package/build/esm/MinimalClientContext.js.map +1 -1
  137. package/build/esm/actions/actions.test.js +9 -8
  138. package/build/esm/actions/actions.test.js.map +1 -1
  139. package/build/esm/actions/applyAction.js +0 -4
  140. package/build/esm/actions/applyAction.js.map +1 -1
  141. package/build/esm/createClient.js +1 -2
  142. package/build/esm/createClient.js.map +1 -1
  143. package/build/esm/createMinimalClient.js +0 -1
  144. package/build/esm/createMinimalClient.js.map +1 -1
  145. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js +1 -17
  146. package/build/esm/derivedProperties/createWithPropertiesObjectSet.js.map +1 -1
  147. package/build/esm/index.js +1 -1
  148. package/build/esm/index.js.map +1 -1
  149. package/build/esm/internal/conversions/modernToLegacyWhereClause.js +14 -9
  150. package/build/esm/internal/conversions/modernToLegacyWhereClause.js.map +1 -1
  151. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js +74 -0
  152. package/build/esm/internal/conversions/modernToLegacyWhereClause.test.js.map +1 -1
  153. package/build/esm/object/SimpleOsdkProperties.js.map +1 -1
  154. package/build/esm/object/aggregate.js +0 -1
  155. package/build/esm/object/aggregate.js.map +1 -1
  156. package/build/esm/object/convertWireToOsdkObjects/BaseHolder.js.map +1 -1
  157. package/build/esm/object/fetchPage.js +0 -2
  158. package/build/esm/object/fetchPage.js.map +1 -1
  159. package/build/esm/objectSet/ObjectSetListenerWebsocket.js +13 -4
  160. package/build/esm/objectSet/ObjectSetListenerWebsocket.js.map +1 -1
  161. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js +46 -2
  162. package/build/esm/objectSet/ObjectSetListenerWebsocket.test.js.map +1 -1
  163. package/build/esm/objectSet/createObjectSet.js +1 -1
  164. package/build/esm/objectSet/createObjectSet.js.map +1 -1
  165. package/build/esm/objectSet/fetchLinksPage.js +0 -1
  166. package/build/esm/objectSet/fetchLinksPage.js.map +1 -1
  167. package/build/esm/observable/FunctionPayload.js +2 -0
  168. package/build/esm/observable/FunctionPayload.js.map +1 -0
  169. package/build/esm/observable/ObservableClient.js.map +1 -1
  170. package/build/esm/observable/internal/BulkObjectLoader.js +2 -1
  171. package/build/esm/observable/internal/BulkObjectLoader.js.map +1 -1
  172. package/build/esm/observable/internal/Changes.js +4 -1
  173. package/build/esm/observable/internal/Changes.js.map +1 -1
  174. package/build/esm/observable/internal/KnownCacheKey.js.map +1 -1
  175. package/build/esm/observable/internal/ObservableClientImpl.js +21 -1
  176. package/build/esm/observable/internal/ObservableClientImpl.js.map +1 -1
  177. package/build/esm/observable/internal/RidListCanonicalizer.js +30 -0
  178. package/build/esm/observable/internal/RidListCanonicalizer.js.map +1 -0
  179. package/build/esm/observable/internal/RidListCanonicalizer.test.js +50 -0
  180. package/build/esm/observable/internal/RidListCanonicalizer.test.js.map +1 -0
  181. package/build/esm/observable/internal/Store.js +11 -1
  182. package/build/esm/observable/internal/Store.js.map +1 -1
  183. package/build/esm/observable/internal/Store.test.js +106 -5
  184. package/build/esm/observable/internal/Store.test.js.map +1 -1
  185. package/build/esm/observable/internal/actions/ActionApplication.js +11 -7
  186. package/build/esm/observable/internal/actions/ActionApplication.js.map +1 -1
  187. package/build/esm/observable/internal/base-list/BaseCollectionQuery.js.map +1 -1
  188. package/build/esm/observable/internal/base-list/BaseListQuery.js +15 -9
  189. package/build/esm/observable/internal/base-list/BaseListQuery.js.map +1 -1
  190. package/build/esm/observable/internal/base-list/createCollectionConnectable.js +4 -2
  191. package/build/esm/observable/internal/base-list/createCollectionConnectable.js.map +1 -1
  192. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js +1 -2
  193. package/build/esm/observable/internal/base-list/createCollectionConnectable.test.js.map +1 -1
  194. package/build/esm/observable/internal/evaluateFilter.js +1 -1
  195. package/build/esm/observable/internal/evaluateFilter.js.map +1 -1
  196. package/build/esm/observable/internal/evaluateFilter.test.js +105 -0
  197. package/build/esm/observable/internal/evaluateFilter.test.js.map +1 -0
  198. package/build/esm/observable/internal/function/FunctionCacheKey.js +26 -0
  199. package/build/esm/observable/internal/function/FunctionCacheKey.js.map +1 -0
  200. package/build/esm/observable/internal/function/FunctionParamsCanonicalizer.js +151 -0
  201. package/build/esm/observable/internal/function/FunctionParamsCanonicalizer.js.map +1 -0
  202. package/build/esm/observable/internal/function/FunctionParamsCanonicalizer.test.js +186 -0
  203. package/build/esm/observable/internal/function/FunctionParamsCanonicalizer.test.js.map +1 -0
  204. package/build/esm/observable/internal/function/FunctionQuery.js +137 -0
  205. package/build/esm/observable/internal/function/FunctionQuery.js.map +1 -0
  206. package/build/esm/observable/internal/function/FunctionQuery.test.js +278 -0
  207. package/build/esm/observable/internal/function/FunctionQuery.test.js.map +1 -0
  208. package/build/esm/observable/internal/function/FunctionsHelper.js +92 -0
  209. package/build/esm/observable/internal/function/FunctionsHelper.js.map +1 -0
  210. package/build/esm/observable/internal/links/SpecificLinkQuery.js +2 -1
  211. package/build/esm/observable/internal/links/SpecificLinkQuery.js.map +1 -1
  212. package/build/esm/observable/internal/list/InterfaceListQuery.js +27 -10
  213. package/build/esm/observable/internal/list/InterfaceListQuery.js.map +1 -1
  214. package/build/esm/observable/internal/list/ListCacheKey.js +1 -0
  215. package/build/esm/observable/internal/list/ListCacheKey.js.map +1 -1
  216. package/build/esm/observable/internal/list/ListQuery.js +27 -6
  217. package/build/esm/observable/internal/list/ListQuery.js.map +1 -1
  218. package/build/esm/observable/internal/list/ListQuery.test.js +167 -3
  219. package/build/esm/observable/internal/list/ListQuery.test.js.map +1 -1
  220. package/build/esm/observable/internal/list/ListsHelper.js +6 -3
  221. package/build/esm/observable/internal/list/ListsHelper.js.map +1 -1
  222. package/build/esm/observable/internal/list/ObjectListQuery.js +23 -9
  223. package/build/esm/observable/internal/list/ObjectListQuery.js.map +1 -1
  224. package/build/esm/observable/internal/object/ObjectQuery.js +15 -1
  225. package/build/esm/observable/internal/object/ObjectQuery.js.map +1 -1
  226. package/build/esm/observable/internal/object/ObjectsHelper.js +1 -3
  227. package/build/esm/observable/internal/object/ObjectsHelper.js.map +1 -1
  228. package/build/esm/observable/internal/objectMatchesWhereClause.test.js +11 -1
  229. package/build/esm/observable/internal/objectMatchesWhereClause.test.js.map +1 -1
  230. package/build/esm/observable/internal/objectset/ObjectSetQuery.js +15 -9
  231. package/build/esm/observable/internal/objectset/ObjectSetQuery.js.map +1 -1
  232. package/build/esm/observable/internal/testUtils.js +8 -5
  233. package/build/esm/observable/internal/testUtils.js.map +1 -1
  234. package/build/esm/observable/internal/utils/rdpFieldOperations.js +6 -3
  235. package/build/esm/observable/internal/utils/rdpFieldOperations.js.map +1 -1
  236. package/build/esm/observable/internal/utils/rdpFieldOperations.test.js +172 -0
  237. package/build/esm/observable/internal/utils/rdpFieldOperations.test.js.map +1 -0
  238. package/build/esm/ontology/loadActionMetadata.js +1 -3
  239. package/build/esm/ontology/loadActionMetadata.js.map +1 -1
  240. package/build/esm/ontology/loadFullObjectMetadata.js +1 -2
  241. package/build/esm/ontology/loadFullObjectMetadata.js.map +1 -1
  242. package/build/esm/ontology/loadInterfaceMetadata.js +1 -2
  243. package/build/esm/ontology/loadInterfaceMetadata.js.map +1 -1
  244. package/build/esm/public/unstable-do-not-use.js.map +1 -1
  245. package/build/esm/queries/applyQuery.js +14 -0
  246. package/build/esm/queries/applyQuery.js.map +1 -1
  247. package/build/esm/queries/queries.test.js +14 -2
  248. package/build/esm/queries/queries.test.js.map +1 -1
  249. package/build/esm/util/UserAgent.js +2 -2
  250. package/build/esm/util/UserAgent.js.map +1 -1
  251. package/build/esm/util/isObjectSpecifiersObject.js.map +1 -1
  252. package/build/esm/util/toDataValue.js +0 -5
  253. package/build/esm/util/toDataValue.js.map +1 -1
  254. package/build/esm/util/toDataValue.test.js +2 -7
  255. package/build/esm/util/toDataValue.test.js.map +1 -1
  256. package/build/types/MinimalClientContext.d.ts +1 -1
  257. package/build/types/actions/applyAction.d.ts.map +1 -1
  258. package/build/types/createClient.d.ts +0 -1
  259. package/build/types/createClient.d.ts.map +1 -1
  260. package/build/types/index.d.ts +1 -1
  261. package/build/types/index.d.ts.map +1 -1
  262. package/build/types/objectSet/createObjectSet.d.ts +14 -1
  263. package/build/types/objectSet/createObjectSet.d.ts.map +1 -1
  264. package/build/types/objectSet/fetchLinksPage.d.ts +9 -1
  265. package/build/types/objectSet/fetchLinksPage.d.ts.map +1 -1
  266. package/build/types/observable/FunctionPayload.d.ts +10 -0
  267. package/build/types/observable/FunctionPayload.d.ts.map +1 -0
  268. package/build/types/observable/ObservableClient.d.ts +73 -1
  269. package/build/types/observable/ObservableClient.d.ts.map +1 -1
  270. package/build/types/observable/internal/BulkObjectLoader.d.ts.map +1 -1
  271. package/build/types/observable/internal/Changes.d.ts +5 -3
  272. package/build/types/observable/internal/Changes.d.ts.map +1 -1
  273. package/build/types/observable/internal/KnownCacheKey.d.ts +2 -1
  274. package/build/types/observable/internal/KnownCacheKey.d.ts.map +1 -1
  275. package/build/types/observable/internal/RidListCanonicalizer.d.ts +5 -0
  276. package/build/types/observable/internal/RidListCanonicalizer.d.ts.map +1 -0
  277. package/build/types/observable/internal/RidListCanonicalizer.test.d.ts +1 -0
  278. package/build/types/observable/internal/RidListCanonicalizer.test.d.ts.map +1 -0
  279. package/build/types/observable/internal/Store.d.ts +7 -1
  280. package/build/types/observable/internal/Store.d.ts.map +1 -1
  281. package/build/types/observable/internal/Store.test.d.ts.map +1 -1
  282. package/build/types/observable/internal/actions/ActionApplication.d.ts.map +1 -1
  283. package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts +3 -0
  284. package/build/types/observable/internal/base-list/BaseCollectionQuery.d.ts.map +1 -1
  285. package/build/types/observable/internal/base-list/BaseListQuery.d.ts +3 -1
  286. package/build/types/observable/internal/base-list/BaseListQuery.d.ts.map +1 -1
  287. package/build/types/observable/internal/evaluateFilter.test.d.ts +1 -0
  288. package/build/types/observable/internal/evaluateFilter.test.d.ts.map +1 -0
  289. package/build/types/observable/internal/function/FunctionCacheKey.d.ts +17 -0
  290. package/build/types/observable/internal/function/FunctionCacheKey.d.ts.map +1 -0
  291. package/build/types/observable/internal/function/FunctionParamsCanonicalizer.d.ts +16 -0
  292. package/build/types/observable/internal/function/FunctionParamsCanonicalizer.d.ts.map +1 -0
  293. package/build/types/observable/internal/function/FunctionParamsCanonicalizer.test.d.ts +1 -0
  294. package/build/types/observable/internal/function/FunctionParamsCanonicalizer.test.d.ts.map +1 -0
  295. package/build/types/observable/internal/function/FunctionQuery.d.ts +40 -0
  296. package/build/types/observable/internal/function/FunctionQuery.d.ts.map +1 -0
  297. package/build/types/observable/internal/function/FunctionQuery.test.d.ts +1 -0
  298. package/build/types/observable/internal/function/FunctionQuery.test.d.ts.map +1 -0
  299. package/build/types/observable/internal/function/FunctionsHelper.d.ts +25 -0
  300. package/build/types/observable/internal/function/FunctionsHelper.d.ts.map +1 -0
  301. package/build/types/observable/internal/links/SpecificLinkQuery.d.ts.map +1 -1
  302. package/build/types/observable/internal/list/InterfaceListQuery.d.ts +3 -0
  303. package/build/types/observable/internal/list/InterfaceListQuery.d.ts.map +1 -1
  304. package/build/types/observable/internal/list/ListCacheKey.d.ts +2 -1
  305. package/build/types/observable/internal/list/ListCacheKey.d.ts.map +1 -1
  306. package/build/types/observable/internal/list/ListQuery.d.ts +1 -1
  307. package/build/types/observable/internal/list/ListQuery.d.ts.map +1 -1
  308. package/build/types/observable/internal/list/ListsHelper.d.ts +3 -1
  309. package/build/types/observable/internal/list/ListsHelper.d.ts.map +1 -1
  310. package/build/types/observable/internal/list/ObjectListQuery.d.ts.map +1 -1
  311. package/build/types/observable/internal/object/ObjectQuery.d.ts.map +1 -1
  312. package/build/types/observable/internal/object/ObjectsHelper.d.ts.map +1 -1
  313. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts +1 -0
  314. package/build/types/observable/internal/objectset/ObjectSetQuery.d.ts.map +1 -1
  315. package/build/types/observable/internal/testUtils.d.ts.map +1 -1
  316. package/build/types/observable/internal/utils/rdpFieldOperations.d.ts.map +1 -1
  317. package/build/types/observable/internal/utils/rdpFieldOperations.test.d.ts +1 -0
  318. package/build/types/observable/internal/utils/rdpFieldOperations.test.d.ts.map +1 -0
  319. package/build/types/public/unstable-do-not-use.d.ts +2 -1
  320. package/build/types/public/unstable-do-not-use.d.ts.map +1 -1
  321. package/build/types/queries/applyQuery.d.ts.map +1 -1
  322. package/build/types/util/isObjectSpecifiersObject.d.ts +1 -0
  323. package/build/types/util/isObjectSpecifiersObject.d.ts.map +1 -1
  324. package/package.json +10 -10
  325. package/build/cjs/chunk-FL7QZC57.cjs.map +0 -1
  326. package/build/cjs/chunk-PARVKNVB.cjs.map +0 -1
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
- var chunkFL7QZC57_cjs = require('../chunk-FL7QZC57.cjs');
4
- var chunkPARVKNVB_cjs = require('../chunk-PARVKNVB.cjs');
3
+ var chunkCDUYWOVQ_cjs = require('../chunk-CDUYWOVQ.cjs');
4
+ var chunkY362HOIZ_cjs = require('../chunk-Y362HOIZ.cjs');
5
5
  var chunkLDTMSHUZ_cjs = require('../chunk-LDTMSHUZ.cjs');
6
6
  var trie = require('@wry/trie');
7
7
  var deepEqual = require('fast-deep-equal');
8
- var invariant4 = require('tiny-invariant');
8
+ var invariant5 = require('tiny-invariant');
9
9
  var shared_net_fetch = require('@osdk/shared.net.fetch');
10
10
  var rxjs = require('rxjs');
11
11
  var mnemonist = require('mnemonist');
@@ -15,7 +15,7 @@ var shared_net_errors = require('@osdk/shared.net.errors');
15
15
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
16
 
17
17
  var deepEqual__default = /*#__PURE__*/_interopDefault(deepEqual);
18
- var invariant4__default = /*#__PURE__*/_interopDefault(invariant4);
18
+ var invariant5__default = /*#__PURE__*/_interopDefault(invariant5);
19
19
  var groupBy__default = /*#__PURE__*/_interopDefault(groupBy);
20
20
 
21
21
  // src/public/unstable-do-not-use.ts
@@ -126,8 +126,8 @@ var WhereClauseCanonicalizer = class {
126
126
  #toCanon = (where, set = /* @__PURE__ */ new Set()) => {
127
127
  if ("$and" in where) {
128
128
  if (process.env.NODE_ENV !== "production") {
129
- !Array.isArray(where.$and) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected $and to be an array") : invariant4__default.default(false) : void 0;
130
- !(Object.keys(where).length === 1) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected only $and to be present") : invariant4__default.default(false) : void 0;
129
+ !Array.isArray(where.$and) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected $and to be an array") : invariant5__default.default(false) : void 0;
130
+ !(Object.keys(where).length === 1) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected only $and to be present") : invariant5__default.default(false) : void 0;
131
131
  }
132
132
  if (where.$and.length === 0) {
133
133
  return {};
@@ -153,7 +153,7 @@ var WhereClauseCanonicalizer = class {
153
153
  var whereCanonicalizer = new WhereClauseCanonicalizer();
154
154
  var orderByCanonicalizer = new OrderByCanonicalizer();
155
155
  function computeObjectSetCacheKey(objectSet, options) {
156
- const keyParts = ["objectSet", chunkPARVKNVB_cjs.getWireObjectSet(objectSet)];
156
+ const keyParts = ["objectSet", chunkY362HOIZ_cjs.getWireObjectSet(objectSet)];
157
157
  if (!options) {
158
158
  return JSON.stringify(keyParts);
159
159
  }
@@ -165,13 +165,13 @@ function computeObjectSetCacheKey(objectSet, options) {
165
165
  keyParts.push("props", propKeys);
166
166
  }
167
167
  if (options.union && options.union.length > 0) {
168
- keyParts.push("union", options.union.map((os) => chunkPARVKNVB_cjs.getWireObjectSet(os)));
168
+ keyParts.push("union", options.union.map((os) => chunkY362HOIZ_cjs.getWireObjectSet(os)));
169
169
  }
170
170
  if (options.intersect && options.intersect.length > 0) {
171
- keyParts.push("intersect", options.intersect.map((os) => chunkPARVKNVB_cjs.getWireObjectSet(os)));
171
+ keyParts.push("intersect", options.intersect.map((os) => chunkY362HOIZ_cjs.getWireObjectSet(os)));
172
172
  }
173
173
  if (options.subtract && options.subtract.length > 0) {
174
- keyParts.push("subtract", options.subtract.map((os) => chunkPARVKNVB_cjs.getWireObjectSet(os)));
174
+ keyParts.push("subtract", options.subtract.map((os) => chunkY362HOIZ_cjs.getWireObjectSet(os)));
175
175
  }
176
176
  if (options.pivotTo) {
177
177
  keyParts.push("pivotTo", options.pivotTo);
@@ -231,6 +231,20 @@ var ObservableClientImpl = class {
231
231
  observeAggregation = (options, subFn) => {
232
232
  return this.__experimentalStore.aggregations.observe(options, subFn);
233
233
  };
234
+ observeFunction = (queryDef, params, options, subFn) => {
235
+ const dependsOn = options.dependsOn?.map((dep) => typeof dep === "string" ? dep : dep.apiName);
236
+ const dependsOnObjects = options.dependsOnObjects?.map((obj) => ({
237
+ $apiName: obj.$objectType ?? obj.$apiName,
238
+ $primaryKey: obj.$primaryKey
239
+ }));
240
+ return this.__experimentalStore.functions.observe({
241
+ ...options,
242
+ queryDef,
243
+ params,
244
+ dependsOn,
245
+ dependsOnObjects
246
+ }, subFn);
247
+ };
234
248
  observeLinks = (objects, linkName, options, subFn) => {
235
249
  const objectsArray = Array.isArray(objects) ? objects : [objects];
236
250
  const parentSub = new rxjs.Subscription();
@@ -240,7 +254,7 @@ var ObservableClientImpl = class {
240
254
  ...options,
241
255
  srcType: {
242
256
  type: "object",
243
- apiName: obj.$apiName
257
+ apiName: obj.$objectType ?? obj.$apiName
244
258
  },
245
259
  linkName,
246
260
  pk: obj.$primaryKey
@@ -271,6 +285,12 @@ var ObservableClientImpl = class {
271
285
  invalidateObjectType(type) {
272
286
  return this.__experimentalStore.invalidateObjectType(type, void 0);
273
287
  }
288
+ invalidateFunction(apiName, params) {
289
+ return this.__experimentalStore.invalidateFunction(apiName, params);
290
+ }
291
+ invalidateFunctionsByObject(apiName, primaryKey) {
292
+ return this.__experimentalStore.invalidateFunctionsByObject(apiName, primaryKey);
293
+ }
274
294
  canonicalizeWhereClause(where) {
275
295
  return this.__experimentalStore.whereCanonicalizer.canonicalize(where);
276
296
  }
@@ -351,7 +371,7 @@ var OptimisticJob = class {
351
371
  return this;
352
372
  },
353
373
  createObject(type, pk, properties) {
354
- const create = store.client[chunkPARVKNVB_cjs.additionalContext].objectFactory2(store.client[chunkPARVKNVB_cjs.additionalContext], [{
374
+ const create = store.client[chunkY362HOIZ_cjs.additionalContext].objectFactory2(store.client[chunkY362HOIZ_cjs.additionalContext], [{
355
375
  $primaryKey: pk,
356
376
  $apiName: type.apiName,
357
377
  $objectType: type.apiName,
@@ -433,13 +453,17 @@ var ActionApplication = class {
433
453
  }
434
454
  })();
435
455
  };
436
- #invalidateActionEditResponse = async ({
437
- deletedObjects,
438
- modifiedObjects,
439
- addedObjects,
440
- editedObjectTypes,
441
- type
442
- }) => {
456
+ #invalidateActionEditResponse = async (actionEditResponse) => {
457
+ if (actionEditResponse == null) {
458
+ return;
459
+ }
460
+ const {
461
+ deletedObjects,
462
+ modifiedObjects,
463
+ addedObjects,
464
+ editedObjectTypes,
465
+ type
466
+ } = actionEditResponse;
443
467
  let changes;
444
468
  if (type === "edits") {
445
469
  const promisesToWait = [];
@@ -569,7 +593,7 @@ var Query = class {
569
593
  this.store = store;
570
594
  this.cacheKeys = store.cacheKeys;
571
595
  this.#subject = observable;
572
- this.logger = logger ?? (process.env.NODE_ENV === "production" ? store.client[chunkPARVKNVB_cjs.additionalContext].logger : store.client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
596
+ this.logger = logger ?? (process.env.NODE_ENV === "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger : store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
573
597
  msgPrefix: process.env.NODE_ENV !== "production" ? `Query<${cacheKey.type}, ${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>` : "Query"
574
598
  }));
575
599
  }
@@ -727,7 +751,7 @@ var Query = class {
727
751
  // src/observable/internal/aggregation/AggregationQuery.ts
728
752
  var AggregationQuery = class extends Query {
729
753
  constructor(store, subject, cacheKey, opts) {
730
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
754
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
731
755
  msgPrefix: `AggregationQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
732
756
  }) : void 0);
733
757
  this.apiName = cacheKey.otherKeys[API_NAME_IDX];
@@ -974,7 +998,7 @@ var Changes = class {
974
998
  modified = /* @__PURE__ */ new Set();
975
999
  deleted = /* @__PURE__ */ new Set();
976
1000
  registerObject = (cacheKey, data, isNew) => {
977
- this[isNew ? "addedObjects" : "modifiedObjects"].set(data.$apiName, data);
1001
+ this[isNew ? "addedObjects" : "modifiedObjects"].set(data.$objectType ?? data.$apiName, data);
978
1002
  this[isNew ? "added" : "modified"].add(cacheKey);
979
1003
  };
980
1004
  deleteObject = (cacheKey) => {
@@ -992,6 +1016,9 @@ var Changes = class {
992
1016
  registerObjectSet = (key) => {
993
1017
  this.modified.add(key);
994
1018
  };
1019
+ registerFunction = (key) => {
1020
+ this.modified.add(key);
1021
+ };
995
1022
  isEmpty() {
996
1023
  return this.modifiedObjects.size === 0 && this.addedObjects.size === 0 && this.added.size === 0 && this.modified.size === 0 && this.deleted.size === 0;
997
1024
  }
@@ -1020,6 +1047,325 @@ function multimapHelper(multimap) {
1020
1047
  }));
1021
1048
  }
1022
1049
 
1050
+ // src/observable/internal/function/FunctionsHelper.ts
1051
+ chunkLDTMSHUZ_cjs.init_cjs_shims();
1052
+
1053
+ // src/observable/internal/function/FunctionCacheKey.ts
1054
+ chunkLDTMSHUZ_cjs.init_cjs_shims();
1055
+ var PARAMS_IDX = 2;
1056
+
1057
+ // src/observable/internal/function/FunctionParamsCanonicalizer.ts
1058
+ chunkLDTMSHUZ_cjs.init_cjs_shims();
1059
+ function isPrimitiveValue(value) {
1060
+ if (value == null) return true;
1061
+ const t = typeof value;
1062
+ return t === "string" || t === "number" || t === "boolean" || t === "bigint";
1063
+ }
1064
+ var FunctionParamsCanonicalizer = class {
1065
+ #inputCache = /* @__PURE__ */ new WeakMap();
1066
+ #trie = new trie.Trie(false);
1067
+ #canonicalByMarker = /* @__PURE__ */ new WeakMap();
1068
+ canonicalize(params) {
1069
+ if (params == null) {
1070
+ return void 0;
1071
+ }
1072
+ if (this.#inputCache.has(params)) {
1073
+ return this.#inputCache.get(params);
1074
+ }
1075
+ const seen = /* @__PURE__ */ new WeakSet();
1076
+ const path = [];
1077
+ const canonicalValue = this.#encodeAndBuild(params, path, seen);
1078
+ const marker = this.#trie.lookupArray(path);
1079
+ let canonical = this.#canonicalByMarker.get(marker);
1080
+ if (canonical === void 0) {
1081
+ canonical = canonicalValue;
1082
+ this.#canonicalByMarker.set(marker, canonical);
1083
+ }
1084
+ this.#inputCache.set(params, canonical);
1085
+ return canonical;
1086
+ }
1087
+ #encodeAndBuild(value, path, seen) {
1088
+ if (value == null) {
1089
+ path.push(value);
1090
+ return value;
1091
+ }
1092
+ if (isPrimitiveValue(value)) {
1093
+ path.push(value);
1094
+ return value;
1095
+ }
1096
+ if (seen.has(value)) {
1097
+ throw new Error("Circular reference in function parameters");
1098
+ }
1099
+ seen.add(value);
1100
+ if (value instanceof Date) {
1101
+ const iso = value.toISOString();
1102
+ path.push("$:date", iso);
1103
+ return iso;
1104
+ }
1105
+ if (Array.isArray(value)) {
1106
+ path.push("$:array");
1107
+ const arr = value.map((item) => this.#encodeAndBuild(item, path, seen));
1108
+ path.push("$:array_end");
1109
+ return arr;
1110
+ }
1111
+ if (value instanceof Set) {
1112
+ path.push("$:set");
1113
+ const sorted = this.#sortSetValues(Array.from(value));
1114
+ const arr = sorted.map((item) => this.#encodeAndBuild(item, path, seen));
1115
+ path.push("$:set_end");
1116
+ return arr;
1117
+ }
1118
+ if (value instanceof Map) {
1119
+ path.push("$:map");
1120
+ const sorted = this.#sortMapEntries(Array.from(value.entries()));
1121
+ const arr = sorted.map(([k, v]) => [this.#encodeAndBuild(k, path, seen), this.#encodeAndBuild(v, path, seen)]);
1122
+ path.push("$:map_end");
1123
+ return arr;
1124
+ }
1125
+ if (chunkCDUYWOVQ_cjs.isObjectSpecifiersObject(value)) {
1126
+ const objectType = value.$objectType ?? value.$apiName;
1127
+ path.push("$:osdk", objectType, value.$primaryKey);
1128
+ return {
1129
+ $apiName: objectType,
1130
+ $primaryKey: value.$primaryKey
1131
+ };
1132
+ }
1133
+ if (chunkY362HOIZ_cjs.isObjectSet(value)) {
1134
+ const wire = chunkY362HOIZ_cjs.getWireObjectSet(value);
1135
+ path.push("$:objectset", wire);
1136
+ return wire;
1137
+ }
1138
+ const obj = value;
1139
+ path.push("$:object");
1140
+ const canonical = {};
1141
+ for (const key of Object.keys(obj).sort()) {
1142
+ path.push(key);
1143
+ canonical[key] = this.#encodeAndBuild(obj[key], path, seen);
1144
+ }
1145
+ path.push("$:object_end");
1146
+ return canonical;
1147
+ }
1148
+ #comparePrimitives(a, b) {
1149
+ const ta = typeof a;
1150
+ const tb = typeof b;
1151
+ if (ta !== tb) return ta.localeCompare(tb);
1152
+ if (ta === "string") return a.localeCompare(b);
1153
+ if (ta === "number") {
1154
+ const an = a;
1155
+ const bn = b;
1156
+ if (Number.isNaN(an) && Number.isNaN(bn)) return 0;
1157
+ if (Number.isNaN(an)) return 1;
1158
+ if (Number.isNaN(bn)) return -1;
1159
+ return an - bn;
1160
+ }
1161
+ if (ta === "boolean") return (a ? 1 : 0) - (b ? 1 : 0);
1162
+ if (ta === "bigint") {
1163
+ const ab = a;
1164
+ const bb = b;
1165
+ return ab < bb ? -1 : ab > bb ? 1 : 0;
1166
+ }
1167
+ return 0;
1168
+ }
1169
+ #sortSetValues(items) {
1170
+ return items.slice().sort((a, b) => {
1171
+ if (isPrimitiveValue(a) && isPrimitiveValue(b)) {
1172
+ return this.#comparePrimitives(a, b);
1173
+ }
1174
+ return JSON.stringify(a).localeCompare(JSON.stringify(b));
1175
+ });
1176
+ }
1177
+ #sortMapEntries(entries) {
1178
+ return entries.slice().sort(([a], [b]) => {
1179
+ if (isPrimitiveValue(a) && isPrimitiveValue(b)) {
1180
+ return this.#comparePrimitives(a, b);
1181
+ }
1182
+ return JSON.stringify(a).localeCompare(JSON.stringify(b));
1183
+ });
1184
+ }
1185
+ };
1186
+
1187
+ // src/observable/internal/function/FunctionQuery.ts
1188
+ chunkLDTMSHUZ_cjs.init_cjs_shims();
1189
+ var FunctionQuery = class extends Query {
1190
+ #apiName;
1191
+ #version;
1192
+ #params;
1193
+ #dependsOn;
1194
+ #dependsOnObjects;
1195
+ #queryDef;
1196
+ constructor(store, subject, queryDef, params, cacheKey, opts) {
1197
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
1198
+ msgPrefix: `FunctionQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
1199
+ }) : void 0);
1200
+ this.#apiName = queryDef.apiName;
1201
+ this.#version = queryDef.isFixedVersion ? queryDef.version : void 0;
1202
+ this.#params = params;
1203
+ this.#dependsOn = opts.dependsOn;
1204
+ this.#dependsOnObjects = opts.dependsOnObjects;
1205
+ this.#queryDef = queryDef;
1206
+ }
1207
+ _createConnectable(subject) {
1208
+ return rxjs.connectable(subject.pipe(rxjs.map((x) => {
1209
+ const value = x.value;
1210
+ return {
1211
+ status: x.status,
1212
+ result: value?.result,
1213
+ lastUpdated: value?.executedAt ?? 0,
1214
+ error: value?.error
1215
+ };
1216
+ })), {
1217
+ connector: () => new rxjs.BehaviorSubject({
1218
+ status: "init",
1219
+ result: void 0,
1220
+ lastUpdated: 0
1221
+ })
1222
+ });
1223
+ }
1224
+ async _fetchAndStore() {
1225
+ if (process.env.NODE_ENV !== "production") {
1226
+ this.logger?.child({
1227
+ methodName: "_fetchAndStore"
1228
+ }).debug("calling _fetchAndStore");
1229
+ }
1230
+ try {
1231
+ const result = await chunkCDUYWOVQ_cjs.applyQuery(this.store.client[chunkY362HOIZ_cjs.additionalContext], this.#queryDef, this.#params);
1232
+ const executedAt = Date.now();
1233
+ this.store.batch({}, (batch) => {
1234
+ this.writeToStore({
1235
+ result,
1236
+ executedAt
1237
+ }, "loaded", batch);
1238
+ });
1239
+ } catch (e) {
1240
+ if (process.env.NODE_ENV !== "production") {
1241
+ this.logger?.child({
1242
+ methodName: "_fetchAndStore"
1243
+ }).error("Error executing function", e);
1244
+ }
1245
+ const error = e instanceof Error ? e : new Error(String(e));
1246
+ this.store.batch({}, (batch) => {
1247
+ this.writeToStore({
1248
+ result: void 0,
1249
+ executedAt: 0,
1250
+ error
1251
+ }, "error", batch);
1252
+ });
1253
+ }
1254
+ }
1255
+ writeToStore(data, status, batch) {
1256
+ batch.write(this.cacheKey, data, status);
1257
+ return batch.read(this.cacheKey);
1258
+ }
1259
+ invalidateObjectType = (objectType, changes) => {
1260
+ if (this.#dependsOn?.includes(objectType)) {
1261
+ changes?.registerFunction(this.cacheKey);
1262
+ return this.revalidate(true);
1263
+ }
1264
+ return Promise.resolve();
1265
+ };
1266
+ dependsOnObject(apiName, primaryKey) {
1267
+ if (!this.#dependsOnObjects) {
1268
+ return false;
1269
+ }
1270
+ return this.#dependsOnObjects.some((obj) => obj.$apiName === apiName && obj.$primaryKey === primaryKey);
1271
+ }
1272
+ /**
1273
+ * Called during batch operations when objects change.
1274
+ * Checks if any objects in dependsOnObjects were modified/added
1275
+ * and triggers revalidation if so.
1276
+ */
1277
+ maybeUpdateAndRevalidate = (changes, _optimisticId) => {
1278
+ if (!this.#dependsOnObjects?.length) {
1279
+ return void 0;
1280
+ }
1281
+ for (const dep of this.#dependsOnObjects) {
1282
+ const modifiedObjects = changes.modifiedObjects.get(dep.$apiName);
1283
+ if (modifiedObjects?.some((obj) => obj.$primaryKey === dep.$primaryKey)) {
1284
+ return this.revalidate(true);
1285
+ }
1286
+ const addedObjects = changes.addedObjects.get(dep.$apiName);
1287
+ if (addedObjects?.some((obj) => obj.$primaryKey === dep.$primaryKey)) {
1288
+ return this.revalidate(true);
1289
+ }
1290
+ }
1291
+ return void 0;
1292
+ };
1293
+ get apiName() {
1294
+ return this.#apiName;
1295
+ }
1296
+ get version() {
1297
+ return this.#version;
1298
+ }
1299
+ };
1300
+
1301
+ // src/observable/internal/function/FunctionsHelper.ts
1302
+ var FunctionsHelper = class extends AbstractHelper {
1303
+ paramsCanonicalizer = new FunctionParamsCanonicalizer();
1304
+ constructor(store, cacheKeys) {
1305
+ super(store, cacheKeys);
1306
+ }
1307
+ observe(options, subFn) {
1308
+ return super.observe(options, subFn);
1309
+ }
1310
+ getQuery(options) {
1311
+ const {
1312
+ queryDef,
1313
+ params,
1314
+ ...observeOpts
1315
+ } = options;
1316
+ const apiName = queryDef.apiName;
1317
+ const version = queryDef.isFixedVersion ? queryDef.version : void 0;
1318
+ const canonicalParams = this.paramsCanonicalizer.canonicalize(params);
1319
+ const functionCacheKey = this.cacheKeys.get("function", apiName, version, canonicalParams);
1320
+ return this.store.queries.get(functionCacheKey, () => new FunctionQuery(this.store, this.store.subjects.get(functionCacheKey), queryDef, params, functionCacheKey, observeOpts));
1321
+ }
1322
+ async invalidateFunction(apiName, params) {
1323
+ const functionApiName = typeof apiName === "string" ? apiName : apiName.apiName;
1324
+ let canonicalParams;
1325
+ if (params !== void 0) {
1326
+ canonicalParams = this.paramsCanonicalizer.canonicalize(params);
1327
+ }
1328
+ const promises = [];
1329
+ for (const cacheKey of this.store.queries.keys()) {
1330
+ if (cacheKey.type !== "function") {
1331
+ continue;
1332
+ }
1333
+ const query = this.store.queries.peek(cacheKey);
1334
+ if (!query) {
1335
+ continue;
1336
+ }
1337
+ if (query.apiName !== functionApiName) {
1338
+ continue;
1339
+ }
1340
+ if (canonicalParams !== void 0) {
1341
+ const queryCacheKey = cacheKey;
1342
+ const queryParams = queryCacheKey.otherKeys[PARAMS_IDX];
1343
+ if (queryParams !== canonicalParams) {
1344
+ continue;
1345
+ }
1346
+ }
1347
+ promises.push(query.revalidate(true));
1348
+ }
1349
+ await Promise.allSettled(promises);
1350
+ }
1351
+ async invalidateFunctionsByObject(apiName, primaryKey) {
1352
+ const promises = [];
1353
+ for (const cacheKey of this.store.queries.keys()) {
1354
+ if (cacheKey.type !== "function") {
1355
+ continue;
1356
+ }
1357
+ const query = this.store.queries.peek(cacheKey);
1358
+ if (!query) {
1359
+ continue;
1360
+ }
1361
+ if (query.dependsOnObject(apiName, primaryKey)) {
1362
+ promises.push(query.revalidate(true));
1363
+ }
1364
+ }
1365
+ await Promise.allSettled(promises);
1366
+ }
1367
+ };
1368
+
1023
1369
  // src/observable/internal/IntersectCanonicalizer.ts
1024
1370
  chunkLDTMSHUZ_cjs.init_cjs_shims();
1025
1371
 
@@ -1301,7 +1647,7 @@ var Layers = class {
1301
1647
  return this.#truthLayer;
1302
1648
  }
1303
1649
  remove(layerId) {
1304
- !(layerId != null) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "undefined is the reserved layerId for the truth layer") : invariant4__default.default(false) : void 0;
1650
+ !(layerId != null) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "undefined is the reserved layerId for the truth layer") : invariant5__default.default(false) : void 0;
1305
1651
  let currentLayer = this.#topLayer;
1306
1652
  const cacheKeys = /* @__PURE__ */ new Map();
1307
1653
  while (currentLayer != null && currentLayer.parentLayer != null) {
@@ -1329,7 +1675,7 @@ var Layers = class {
1329
1675
  optimisticId,
1330
1676
  changes
1331
1677
  }, batchFn) {
1332
- !(optimisticId === void 0 || !!optimisticId) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "optimistic must be undefined or not falsy") : invariant4__default.default(false) : void 0;
1678
+ !(optimisticId === void 0 || !!optimisticId) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "optimistic must be undefined or not falsy") : invariant5__default.default(false) : void 0;
1333
1679
  const batchContext = this.#createBatchContext({
1334
1680
  optimisticId,
1335
1681
  changes
@@ -1417,6 +1763,7 @@ var ORDER_BY_IDX = 3;
1417
1763
  var RDP_IDX2 = 4;
1418
1764
  var INTERSECT_IDX = 5;
1419
1765
  var PIVOT_IDX = 6;
1766
+ var RIDS_IDX = 7;
1420
1767
 
1421
1768
  // src/observable/internal/sorting/SortingStrategy.ts
1422
1769
  chunkLDTMSHUZ_cjs.init_cjs_shims();
@@ -1475,12 +1822,14 @@ function createCollectionConnectable(subject, subjects, createPayload) {
1475
1822
  resolvedData,
1476
1823
  isOptimistic: rxjs.of(listEntry.isOptimistic),
1477
1824
  status: rxjs.of(listEntry.status),
1478
- lastUpdated: rxjs.of(listEntry.lastUpdated)
1825
+ lastUpdated: rxjs.of(listEntry.lastUpdated),
1826
+ totalCount: rxjs.of(listEntry?.value?.totalCount)
1479
1827
  }).pipe(rxjs.map((params) => createPayload({
1480
1828
  resolvedData: Array.isArray(params.resolvedData) ? params.resolvedData : [],
1481
1829
  isOptimistic: params.isOptimistic,
1482
1830
  status: params.status,
1483
- lastUpdated: params.lastUpdated
1831
+ lastUpdated: params.lastUpdated,
1832
+ totalCount: params.totalCount
1484
1833
  }))), rxjs.asapScheduler);
1485
1834
  })), {
1486
1835
  resetOnDisconnect: false,
@@ -1535,9 +1884,10 @@ var BaseListQuery = class extends Query {
1535
1884
  * @param status Status to set for the list
1536
1885
  * @param batch Batch context to use
1537
1886
  * @param append Whether to append to the existing list or replace it
1887
+ * @param totalCount Optional total count from API response
1538
1888
  * @returns The updated entry
1539
1889
  */
1540
- _updateList(items, status, batch, append = false) {
1890
+ _updateList(items, status, batch, append = false, totalCount) {
1541
1891
  if (process.env.NODE_ENV !== "production") {
1542
1892
  this.logger?.child({
1543
1893
  methodName: "updateList"
@@ -1555,7 +1905,8 @@ var BaseListQuery = class extends Query {
1555
1905
  objectCacheKeys = this._sortCacheKeys(objectCacheKeys, batch);
1556
1906
  objectCacheKeys = removeDuplicates(objectCacheKeys, batch);
1557
1907
  return this.writeToStore({
1558
- data: objectCacheKeys
1908
+ data: objectCacheKeys,
1909
+ totalCount
1559
1910
  }, status, batch);
1560
1911
  }
1561
1912
  /**
@@ -1646,7 +1997,8 @@ var BaseListQuery = class extends Query {
1646
1997
  fetchMore: this.fetchMore,
1647
1998
  hasMore: this.nextPageToken != null,
1648
1999
  status: params.status,
1649
- lastUpdated: params.lastUpdated
2000
+ lastUpdated: params.lastUpdated,
2001
+ totalCount: params.totalCount
1650
2002
  };
1651
2003
  }
1652
2004
  /**
@@ -1747,6 +2099,7 @@ var BaseListQuery = class extends Query {
1747
2099
  try {
1748
2100
  const hadPreviousPage = this.nextPageToken != null;
1749
2101
  const result = await this.fetchPageData(signal);
2102
+ this.currentTotalCount = result.totalCount;
1750
2103
  if (signal?.aborted) {
1751
2104
  return void 0;
1752
2105
  }
@@ -1756,7 +2109,7 @@ var BaseListQuery = class extends Query {
1756
2109
  const append = hadPreviousPage;
1757
2110
  const finalStatus = result.nextPageToken ? status : "loaded";
1758
2111
  const objectKeys = this.store.objects.storeOsdkInstances(result.data, batch, this.rdpConfig);
1759
- return this._updateList(objectKeys, finalStatus, batch, append);
2112
+ return this._updateList(objectKeys, finalStatus, batch, append, this.currentTotalCount);
1760
2113
  });
1761
2114
  return retVal;
1762
2115
  } catch (error) {
@@ -1792,8 +2145,10 @@ var BaseListQuery = class extends Query {
1792
2145
  * @returns The updated entry with error status
1793
2146
  */
1794
2147
  handleFetchError(_error, _status, batch) {
2148
+ const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;
1795
2149
  return this.writeToStore({
1796
- data: []
2150
+ data: [],
2151
+ totalCount: existingTotalCount
1797
2152
  }, "error", batch);
1798
2153
  }
1799
2154
  /**
@@ -1832,8 +2187,10 @@ var BaseListQuery = class extends Query {
1832
2187
  objectCacheKeys = this.#retainReleaseAppend(batch, options.append ?? false, objectCacheKeys);
1833
2188
  objectCacheKeys = this._sortCacheKeys(objectCacheKeys, batch);
1834
2189
  objectCacheKeys = removeDuplicates(objectCacheKeys, batch);
2190
+ const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;
1835
2191
  return this.writeToStore({
1836
- data: objectCacheKeys
2192
+ data: objectCacheKeys,
2193
+ totalCount: existingTotalCount
1837
2194
  }, options.status, batch);
1838
2195
  }
1839
2196
  //
@@ -1958,7 +2315,7 @@ var BaseListQuery = class extends Query {
1958
2315
  }).debug("Removing object", object);
1959
2316
  }
1960
2317
  this.store.batch({}, (batch) => {
1961
- const objectCacheKey = this.store.cacheKeys.get("object", object.$apiName, object.$primaryKey);
2318
+ const objectCacheKey = this.store.cacheKeys.get("object", object.$objectType ?? object.$apiName, object.$primaryKey);
1962
2319
  batch.delete(objectCacheKey, "loaded");
1963
2320
  });
1964
2321
  }
@@ -1978,7 +2335,7 @@ var SpecificLinkQuery = class extends BaseListQuery {
1978
2335
  batch.changes.modified.add(this.cacheKey);
1979
2336
  }
1980
2337
  constructor(store, subject, cacheKey, opts) {
1981
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
2338
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
1982
2339
  msgPrefix: `SpecificLinkQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
1983
2340
  }) : void 0);
1984
2341
  [this.#sourceApiName, this.#sourcePk, this.#linkName, this.#whereClause, this.#orderBy] = cacheKey.otherKeys;
@@ -1994,7 +2351,7 @@ var SpecificLinkQuery = class extends BaseListQuery {
1994
2351
  type: "object",
1995
2352
  apiName: this.#sourceApiName
1996
2353
  };
1997
- const sourceMetadata = await client[chunkPARVKNVB_cjs.additionalContext].ontologyProvider.getObjectDefinition(this.#sourceApiName);
2354
+ const sourceMetadata = await client[chunkY362HOIZ_cjs.additionalContext].ontologyProvider.getObjectDefinition(this.#sourceApiName);
1998
2355
  if (this.#orderBy && Object.keys(this.#orderBy).length > 0) {
1999
2356
  const linkDef = sourceMetadata.links?.[this.#linkName];
2000
2357
  if (!linkDef?.targetType) {
@@ -2011,7 +2368,8 @@ var SpecificLinkQuery = class extends BaseListQuery {
2011
2368
  }
2012
2369
  const queryParams = {
2013
2370
  $pageSize: this.options.pageSize || 100,
2014
- $nextPageToken: this.nextPageToken
2371
+ $nextPageToken: this.nextPageToken,
2372
+ $includeRid: true
2015
2373
  };
2016
2374
  if (this.#orderBy && Object.keys(this.#orderBy).length > 0) {
2017
2375
  queryParams.$orderBy = this.#orderBy;
@@ -2065,7 +2423,7 @@ var SpecificLinkQuery = class extends BaseListQuery {
2065
2423
  return this.revalidate(true);
2066
2424
  } else {
2067
2425
  return (async () => {
2068
- const sourceMetadata = await this.store.client[chunkPARVKNVB_cjs.additionalContext].ontologyProvider.getObjectDefinition(this.#sourceApiName);
2426
+ const sourceMetadata = await this.store.client[chunkY362HOIZ_cjs.additionalContext].ontologyProvider.getObjectDefinition(this.#sourceApiName);
2069
2427
  const linkDef = sourceMetadata.links?.[this.#linkName];
2070
2428
  if (!linkDef || linkDef.targetType !== objectType) return;
2071
2429
  const promise = this.revalidate(true);
@@ -2105,6 +2463,162 @@ chunkLDTMSHUZ_cjs.init_cjs_shims();
2105
2463
  // src/observable/internal/list/ListQuery.ts
2106
2464
  chunkLDTMSHUZ_cjs.init_cjs_shims();
2107
2465
 
2466
+ // src/observable/internal/getObjectTypesThatInvalidate.ts
2467
+ chunkLDTMSHUZ_cjs.init_cjs_shims();
2468
+ async function getObjectTypesThatInvalidate(mc, objectSet) {
2469
+ const counts = {};
2470
+ const resultType = await calcObjectSet(objectSet, {
2471
+ counts,
2472
+ methodInput: void 0,
2473
+ ontologyProvider: mc.ontologyProvider
2474
+ });
2475
+ const tweaked = {
2476
+ ...counts,
2477
+ [resultType.apiName]: counts[resultType.apiName] - 1
2478
+ };
2479
+ return {
2480
+ resultType,
2481
+ counts,
2482
+ invalidationSet: new Set(Object.entries(tweaked).filter(([, v]) => v > 0).map(([k]) => k))
2483
+ };
2484
+ }
2485
+ async function calcObjectSet(os, ctx) {
2486
+ const op = ctx.ontologyProvider;
2487
+ async function bumpObject(apiName) {
2488
+ const objectType = await op.getObjectDefinition(apiName);
2489
+ ctx.counts[apiName] = (ctx.counts[apiName] ?? 0) + 1;
2490
+ return objectType;
2491
+ }
2492
+ async function bumpInterface(apiName) {
2493
+ const interfaceDef = await op.getInterfaceDefinition(apiName);
2494
+ for (const s of interfaceDef.implementedBy ?? []) {
2495
+ ctx.counts[s] = (ctx.counts[s] ?? 0) + 1;
2496
+ }
2497
+ return interfaceDef;
2498
+ }
2499
+ switch (os.type) {
2500
+ case "base":
2501
+ return await bumpObject(os.objectType);
2502
+ case "interfaceBase":
2503
+ return await bumpInterface(os.interfaceType);
2504
+ case "interfaceLinkSearchAround": {
2505
+ const srcDef = await calcObjectSet(os.objectSet, ctx);
2506
+ !(srcDef.type === "interface") ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false) : invariant5__default.default(false) : void 0;
2507
+ for (const [k, v] of Object.entries(srcDef.links)) {
2508
+ if (k === os.interfaceLink) {
2509
+ if (v.targetType === "object") {
2510
+ return await bumpObject(v.targetType);
2511
+ }
2512
+ return await bumpInterface(v.targetType);
2513
+ }
2514
+ }
2515
+ throw new Error(`Could not find link ${os.interfaceLink} in object set ${JSON.stringify(os.objectSet)}`);
2516
+ }
2517
+ case "searchAround": {
2518
+ const contextDef = await calcObjectSet(os.objectSet, ctx);
2519
+ !(contextDef.type === "object") ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false) : invariant5__default.default(false) : void 0;
2520
+ for (const [k, v] of Object.entries(contextDef.links)) {
2521
+ if (k === os.link) {
2522
+ return await bumpObject(v.targetType);
2523
+ }
2524
+ }
2525
+ throw new Error(`Could not find link ${os.link} in object set ${JSON.stringify(os.objectSet)}`);
2526
+ }
2527
+ case "filter":
2528
+ return calcObjectSet(os.objectSet, ctx);
2529
+ case "union":
2530
+ case "subtract":
2531
+ case "intersect":
2532
+ const returnTypes = await Promise.all(os.objectSets.map(async (os2) => {
2533
+ const counts = {};
2534
+ const r = await calcObjectSet(os2, {
2535
+ ...ctx,
2536
+ counts
2537
+ });
2538
+ return {
2539
+ r,
2540
+ counts
2541
+ };
2542
+ }));
2543
+ for (const {
2544
+ counts
2545
+ } of returnTypes) {
2546
+ for (const [k, v] of Object.entries(counts)) {
2547
+ ctx.counts[k] = Math.max(ctx.counts[k] ?? 0, v);
2548
+ }
2549
+ }
2550
+ if (returnTypes.length === 0) {
2551
+ throw new Error(`Could not find any context types for set operation`);
2552
+ }
2553
+ const allMatch = returnTypes.every(({
2554
+ r
2555
+ }) => r.apiName === returnTypes[0].r.apiName);
2556
+ if (!allMatch) {
2557
+ throw new Error(`Incompatible context types found for set operation`);
2558
+ }
2559
+ return returnTypes[0].r;
2560
+ case "withProperties":
2561
+ for (const [, v] of Object.entries(os.derivedProperties)) {
2562
+ await calcRdp(v, {
2563
+ ...ctx,
2564
+ methodInput: os.objectSet
2565
+ });
2566
+ }
2567
+ return calcObjectSet(os.objectSet, {
2568
+ ...ctx,
2569
+ methodInput: os.objectSet
2570
+ });
2571
+ // used by rdps
2572
+ case "methodInput":
2573
+ !ctx.methodInput ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "methodInput must be provided") : invariant5__default.default(false) : void 0;
2574
+ return await calcObjectSet(ctx.methodInput, {
2575
+ ...ctx,
2576
+ counts: {}
2577
+ });
2578
+ case "asType":
2579
+ // we don't currently support this anywhere.
2580
+ case "asBaseObjectTypes":
2581
+ // We don't currently support this because it could return multiple object types conceptually
2582
+ // internally, we actually use it this way but we shouldn't be finding that object sets.
2583
+ case "reference":
2584
+ // reference is particularly problematic because we cannot answer the question about
2585
+ // which types without loading the object set definition (and it can change).
2586
+ case "static":
2587
+ throw new Error(`Unsupported ObjectSet type ${os.type}`);
2588
+ case "nearestNeighbors":
2589
+ return calcObjectSet(os.objectSet, ctx);
2590
+ default:
2591
+ throw new Error(`Unhandled ObjectSet type ${os.type}`);
2592
+ }
2593
+ }
2594
+ async function calcRdp(dpd, ctx) {
2595
+ switch (dpd.type) {
2596
+ // Operates on object sets
2597
+ case "selection":
2598
+ return await calcObjectSet(dpd.objectSet, ctx);
2599
+ // Operates on single property
2600
+ case "negate":
2601
+ case "extract":
2602
+ case "absoluteValue":
2603
+ return await calcRdp(dpd.property, ctx);
2604
+ // Operates on many (unordered) properties
2605
+ case "least":
2606
+ case "greatest":
2607
+ case "add":
2608
+ case "multiply":
2609
+ return await Promise.all(dpd.properties.map((innerDpd) => calcRdp(innerDpd, ctx)));
2610
+ // Operates on 2 ordered properties
2611
+ case "subtract":
2612
+ case "divide":
2613
+ return await Promise.all([calcRdp(dpd.left, ctx), calcRdp(dpd.right, ctx)]);
2614
+ // Operates on a single property name
2615
+ case "property":
2616
+ return;
2617
+ default:
2618
+ throw new Error(`Unhandled DerivedPropertyDefinition type ${dpd.type}`);
2619
+ }
2620
+ }
2621
+
2108
2622
  // src/observable/internal/objectMatchesWhereClause.ts
2109
2623
  chunkLDTMSHUZ_cjs.init_cjs_shims();
2110
2624
 
@@ -2125,7 +2639,7 @@ function evaluateFilter(f, realValue, expected, strict) {
2125
2639
  case "$ne":
2126
2640
  return realValue !== expected;
2127
2641
  case "$in":
2128
- return expected.$in.includes(realValue);
2642
+ return Array.isArray(expected) && expected.includes(realValue);
2129
2643
  case "$isNull":
2130
2644
  return realValue == null;
2131
2645
  case "$startsWith":
@@ -2139,7 +2653,7 @@ function evaluateFilter(f, realValue, expected, strict) {
2139
2653
  return !strict;
2140
2654
  default:
2141
2655
  if (process.env.NODE_ENV !== "production") {
2142
- process.env.NODE_ENV !== "production" ? invariant4__default.default(false, `Unknown where filter ${f}`) : invariant4__default.default(false) ;
2656
+ process.env.NODE_ENV !== "production" ? invariant5__default.default(false, `Unknown where filter ${f}`) : invariant5__default.default(false) ;
2143
2657
  }
2144
2658
  return !strict;
2145
2659
  }
@@ -2149,8 +2663,8 @@ function evaluateFilter(f, realValue, expected, strict) {
2149
2663
  function is$and(whereClause) {
2150
2664
  if (process.env.NODE_ENV !== "production") {
2151
2665
  if ("$and" in whereClause) {
2152
- !Array.isArray(whereClause.$and) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected $and to be an array") : invariant4__default.default(false) : void 0;
2153
- !(Object.keys(whereClause).length === 1) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected only $and to be present") : invariant4__default.default(false) : void 0;
2666
+ !Array.isArray(whereClause.$and) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected $and to be an array") : invariant5__default.default(false) : void 0;
2667
+ !(Object.keys(whereClause).length === 1) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected only $and to be present") : invariant5__default.default(false) : void 0;
2154
2668
  }
2155
2669
  }
2156
2670
  return "$and" in whereClause;
@@ -2158,8 +2672,8 @@ function is$and(whereClause) {
2158
2672
  function is$or(whereClause) {
2159
2673
  if (process.env.NODE_ENV !== "production") {
2160
2674
  if ("$or" in whereClause) {
2161
- !Array.isArray(whereClause.$or) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected $or to be an array") : invariant4__default.default(false) : void 0;
2162
- !(Object.keys(whereClause).length === 1) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected only $or to be present") : invariant4__default.default(false) : void 0;
2675
+ !Array.isArray(whereClause.$or) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected $or to be an array") : invariant5__default.default(false) : void 0;
2676
+ !(Object.keys(whereClause).length === 1) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected only $or to be present") : invariant5__default.default(false) : void 0;
2163
2677
  }
2164
2678
  }
2165
2679
  return "$or" in whereClause;
@@ -2167,7 +2681,7 @@ function is$or(whereClause) {
2167
2681
  function is$not(whereClause) {
2168
2682
  if (process.env.NODE_ENV !== "production") {
2169
2683
  if ("$not" in whereClause) {
2170
- !(Object.keys(whereClause).length === 1) ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "expected only $not to be present") : invariant4__default.default(false) : void 0;
2684
+ !(Object.keys(whereClause).length === 1) ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "expected only $not to be present") : invariant5__default.default(false) : void 0;
2171
2685
  }
2172
2686
  }
2173
2687
  return "$not" in whereClause;
@@ -2217,7 +2731,7 @@ var ListQuery = class extends BaseListQuery {
2217
2731
  batch.changes.registerList(this.cacheKey);
2218
2732
  }
2219
2733
  constructor(store, subject, apiName, cacheKey, opts) {
2220
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
2734
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
2221
2735
  msgPrefix: `ListQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
2222
2736
  }) : void 0);
2223
2737
  this.apiName = apiName;
@@ -2226,7 +2740,9 @@ var ListQuery = class extends BaseListQuery {
2226
2740
  this.#intersectWith = cacheKey.otherKeys[INTERSECT_IDX];
2227
2741
  this.#pivotInfo = cacheKey.otherKeys[PIVOT_IDX];
2228
2742
  this.#objectSet = this.createObjectSet(store);
2229
- this.sortingStrategy = new OrderBySortingStrategy(this.apiName, this.#orderBy);
2743
+ if (!this.#pivotInfo) {
2744
+ this.sortingStrategy = new OrderBySortingStrategy(this.apiName, this.#orderBy);
2745
+ }
2230
2746
  if (opts.autoFetchMore === true) {
2231
2747
  this.minResultsToLoad = Number.MAX_SAFE_INTEGER;
2232
2748
  } else if (typeof opts.autoFetchMore === "number") {
@@ -2252,9 +2768,17 @@ var ListQuery = class extends BaseListQuery {
2252
2768
  * Fetches a page of data
2253
2769
  */
2254
2770
  async fetchPageData(signal) {
2771
+ if (Object.keys(this.#orderBy).length > 0 && !(this.sortingStrategy instanceof OrderBySortingStrategy)) {
2772
+ const wireObjectSet = chunkY362HOIZ_cjs.getWireObjectSet(this.#objectSet);
2773
+ const {
2774
+ resultType
2775
+ } = await getObjectTypesThatInvalidate(this.store.client[chunkY362HOIZ_cjs.additionalContext], wireObjectSet);
2776
+ this.sortingStrategy = new OrderBySortingStrategy(resultType.apiName, this.#orderBy);
2777
+ }
2255
2778
  const resp = await this.#objectSet.fetchPage({
2256
2779
  $nextPageToken: this.nextPageToken,
2257
2780
  $pageSize: this.options.pageSize,
2781
+ $includeRid: true,
2258
2782
  // For now this keeps the shared test code from falling apart
2259
2783
  // but shouldn't be needed ideally
2260
2784
  ...Object.keys(this.#orderBy).length > 0 ? {
@@ -2277,8 +2801,10 @@ var ListQuery = class extends BaseListQuery {
2277
2801
  handleFetchError(error, _status, batch) {
2278
2802
  this.logger?.error("error", error);
2279
2803
  this.store.subjects.get(this.cacheKey).error(error);
2804
+ const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;
2280
2805
  return this.writeToStore({
2281
- data: []
2806
+ data: [],
2807
+ totalCount: existingTotalCount
2282
2808
  }, "error", batch);
2283
2809
  }
2284
2810
  /**
@@ -2356,12 +2882,14 @@ var ListQuery = class extends BaseListQuery {
2356
2882
  for (const obj of toAdd) {
2357
2883
  newList.push(this.getObjectCacheKey(obj));
2358
2884
  }
2885
+ const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;
2359
2886
  this._updateList(
2360
2887
  newList,
2361
2888
  status,
2362
2889
  batch,
2363
2890
  /* append */
2364
- false
2891
+ false,
2892
+ existingTotalCount
2365
2893
  );
2366
2894
  });
2367
2895
  if (needsRevalidation) {
@@ -2430,14 +2958,16 @@ var ListQuery = class extends BaseListQuery {
2430
2958
  }) : this.logger;
2431
2959
  this.store.batch({}, (batch) => {
2432
2960
  const existing = batch.read(this.cacheKey);
2433
- !existing ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, "the truth value for our list should exist as we already subscribed") : invariant4__default.default(false) : void 0;
2961
+ !existing ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, "the truth value for our list should exist as we already subscribed") : invariant5__default.default(false) : void 0;
2434
2962
  if (existing.status === "loaded") {
2435
2963
  const objectCacheKey = this.getObjectCacheKey(objOrIface);
2436
2964
  const newObjects = existing.value?.data.filter((o) => o !== objectCacheKey);
2437
2965
  if (newObjects?.length !== existing.value?.data.length) {
2438
2966
  batch.changes.registerList(this.cacheKey);
2967
+ const existingTotalCount = existing.value?.totalCount;
2439
2968
  batch.write(this.cacheKey, {
2440
- data: newObjects ?? []
2969
+ data: newObjects ?? [],
2970
+ totalCount: existingTotalCount
2441
2971
  }, "loaded");
2442
2972
  }
2443
2973
  return;
@@ -2495,9 +3025,20 @@ var InterfaceListQuery = class extends ListQuery {
2495
3025
  async postProcessFetchedData(data) {
2496
3026
  return reloadDataAsFullObjects(this.store.client, data);
2497
3027
  }
3028
+ createPayload(params) {
3029
+ const resolvedList = params.resolvedData.map((obj) => obj.$as(this.apiName));
3030
+ return {
3031
+ resolvedList,
3032
+ isOptimistic: params.isOptimistic,
3033
+ fetchMore: this.fetchMore,
3034
+ hasMore: this.nextPageToken != null,
3035
+ status: params.status,
3036
+ lastUpdated: params.lastUpdated
3037
+ };
3038
+ }
2498
3039
  extractRelevantObjects(changes) {
2499
3040
  const matchesApiName = ([, object]) => {
2500
- return this.apiName in object[chunkFL7QZC57_cjs.ObjectDefRef].interfaceMap;
3041
+ return this.apiName in object[chunkCDUYWOVQ_cjs.ObjectDefRef].interfaceMap;
2501
3042
  };
2502
3043
  const added = Array.from(changes.addedObjects).filter(matchesApiName).map(([, object]) => object.$as(this.apiName));
2503
3044
  const modified = Array.from(changes.modifiedObjects).filter(matchesApiName).map(([, object]) => object.$as(this.apiName));
@@ -2516,22 +3057,30 @@ var InterfaceListQuery = class extends ListQuery {
2516
3057
  }
2517
3058
  };
2518
3059
  async function reloadDataAsFullObjects(client, data) {
3060
+ if (data.length === 0) {
3061
+ return data;
3062
+ }
2519
3063
  const groups = groupBy__default.default(data, (x) => x.$objectType);
2520
3064
  const objectTypeToPrimaryKeyToObject = Object.fromEntries(await Promise.all(Object.entries(groups).map(async ([apiName, objects]) => {
2521
- const objectDef = objects[0][chunkFL7QZC57_cjs.UnderlyingOsdkObject][chunkFL7QZC57_cjs.ObjectDefRef];
3065
+ const objectDef = await client.fetchMetadata({
3066
+ type: "object",
3067
+ apiName
3068
+ });
2522
3069
  const where = {
2523
3070
  [objectDef.primaryKeyApiName]: {
2524
3071
  $in: objects.map((x) => x.$primaryKey)
2525
3072
  }
2526
3073
  };
2527
- const result = await client(objectDef).where(where).fetchPage();
3074
+ const result = await client(objectDef).where(where).fetchPage({
3075
+ $includeRid: true
3076
+ });
2528
3077
  return [apiName, Object.fromEntries(result.data.map((x) => [x.$primaryKey, x]))];
2529
3078
  })));
2530
- data = data.map((obj) => {
2531
- !objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey] ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false, `Could not find object ${obj.$objectType} ${obj.$primaryKey}`) : invariant4__default.default(false) : void 0;
2532
- return objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey];
3079
+ return data.map((obj) => {
3080
+ const fullObject = objectTypeToPrimaryKeyToObject[obj.$objectType][obj.$primaryKey];
3081
+ !fullObject ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false, `Could not find object ${obj.$objectType} ${obj.$primaryKey}`) : invariant5__default.default(false) : void 0;
3082
+ return fullObject;
2533
3083
  });
2534
- return data;
2535
3084
  }
2536
3085
 
2537
3086
  // src/observable/internal/list/ObjectListQuery.ts
@@ -2541,16 +3090,22 @@ var ObjectListQuery = class extends ListQuery {
2541
3090
  const rdpConfig = this.cacheKey.otherKeys[RDP_IDX2];
2542
3091
  const intersectWith = this.cacheKey.otherKeys[INTERSECT_IDX];
2543
3092
  const pivotInfo = this.cacheKey.otherKeys[PIVOT_IDX];
3093
+ const rids = this.cacheKey.otherKeys[RIDS_IDX];
3094
+ const clientCtx = store.client[chunkY362HOIZ_cjs.additionalContext];
3095
+ const typeDefinition = {
3096
+ type: "object",
3097
+ apiName: this.apiName
3098
+ };
2544
3099
  if (pivotInfo != null) {
2545
- const sourceSet = store.client({
3100
+ let sourceSet = store.client({
2546
3101
  type: "object",
2547
3102
  apiName: pivotInfo.sourceType
2548
3103
  });
3104
+ sourceSet = sourceSet.where(this.canonicalWhere);
2549
3105
  let objectSet2 = sourceSet.pivotTo(pivotInfo.linkName);
2550
3106
  if (rdpConfig != null) {
2551
3107
  objectSet2 = objectSet2.withProperties(rdpConfig);
2552
3108
  }
2553
- objectSet2 = objectSet2.where(this.canonicalWhere);
2554
3109
  if (intersectWith != null && intersectWith.length > 0) {
2555
3110
  const intersectSets = intersectWith.map((whereClause) => {
2556
3111
  let intersectSet = store.client({
@@ -2566,10 +3121,15 @@ var ObjectListQuery = class extends ListQuery {
2566
3121
  }
2567
3122
  return objectSet2;
2568
3123
  }
2569
- let objectSet = store.client({
2570
- type: "object",
2571
- apiName: this.apiName
2572
- });
3124
+ let objectSet;
3125
+ if (rids != null) {
3126
+ objectSet = clientCtx.objectSetFactory(typeDefinition, clientCtx, {
3127
+ type: "static",
3128
+ objects: [...rids]
3129
+ });
3130
+ } else {
3131
+ objectSet = store.client(typeDefinition);
3132
+ }
2573
3133
  if (rdpConfig != null) {
2574
3134
  objectSet = objectSet.withProperties(rdpConfig);
2575
3135
  }
@@ -2618,13 +3178,14 @@ var ObjectListQuery = class extends ListQuery {
2618
3178
 
2619
3179
  // src/observable/internal/list/ListsHelper.ts
2620
3180
  var ListsHelper = class extends AbstractHelper {
2621
- constructor(store, cacheKeys, whereCanonicalizer2, orderByCanonicalizer2, rdpCanonicalizer, intersectCanonicalizer, pivotCanonicalizer) {
3181
+ constructor(store, cacheKeys, whereCanonicalizer2, orderByCanonicalizer2, rdpCanonicalizer, intersectCanonicalizer, pivotCanonicalizer, ridListCanonicalizer) {
2622
3182
  super(store, cacheKeys);
2623
3183
  this.whereCanonicalizer = whereCanonicalizer2;
2624
3184
  this.orderByCanonicalizer = orderByCanonicalizer2;
2625
3185
  this.rdpCanonicalizer = rdpCanonicalizer;
2626
3186
  this.intersectCanonicalizer = intersectCanonicalizer;
2627
3187
  this.pivotCanonicalizer = pivotCanonicalizer;
3188
+ this.ridListCanonicalizer = ridListCanonicalizer;
2628
3189
  }
2629
3190
  observe(options, subFn) {
2630
3191
  const ret = super.observe(options, subFn);
@@ -2640,7 +3201,8 @@ var ListsHelper = class extends AbstractHelper {
2640
3201
  orderBy,
2641
3202
  withProperties,
2642
3203
  intersectWith,
2643
- pivotTo
3204
+ pivotTo,
3205
+ rids
2644
3206
  } = options;
2645
3207
  const {
2646
3208
  apiName,
@@ -2651,7 +3213,8 @@ var ListsHelper = class extends AbstractHelper {
2651
3213
  const canonRdp = withProperties ? this.rdpCanonicalizer.canonicalize(withProperties) : void 0;
2652
3214
  const canonIntersect = intersectWith && intersectWith.length > 0 ? this.intersectCanonicalizer.canonicalize(intersectWith) : void 0;
2653
3215
  const canonPivot = pivotTo ? this.pivotCanonicalizer.canonicalize(apiName, pivotTo) : void 0;
2654
- const listCacheKey = this.cacheKeys.get("list", type, apiName, canonWhere, canonOrderBy, canonRdp, canonIntersect, canonPivot);
3216
+ const canonRids = rids != null ? this.ridListCanonicalizer.canonicalize(rids) : void 0;
3217
+ const listCacheKey = this.cacheKeys.get("list", type, apiName, canonWhere, canonOrderBy, canonRdp, canonIntersect, canonPivot, canonRids);
2655
3218
  return this.store.queries.get(listCacheKey, () => {
2656
3219
  const QueryClass = type === "object" ? ObjectListQuery : InterfaceListQuery;
2657
3220
  return new QueryClass(this.store, this.store.subjects.get(listCacheKey), apiName, listCacheKey, options);
@@ -2679,20 +3242,21 @@ function stripRdpFields(value, rdpFields) {
2679
3242
  if (rdpFields.size === 0) {
2680
3243
  return value;
2681
3244
  }
2682
- const underlying = value[chunkFL7QZC57_cjs.UnderlyingOsdkObject];
2683
- const objectDef = value[chunkFL7QZC57_cjs.ObjectDefRef];
3245
+ const underlying = value[chunkCDUYWOVQ_cjs.UnderlyingOsdkObject];
3246
+ const objectDef = value[chunkCDUYWOVQ_cjs.ObjectDefRef];
2684
3247
  const newProps = {
2685
3248
  $apiName: underlying.$apiName,
2686
3249
  $objectType: underlying.$objectType,
2687
3250
  $primaryKey: underlying.$primaryKey,
2688
- $title: underlying.$title
3251
+ $title: underlying.$title,
3252
+ $rid: underlying.$rid
2689
3253
  };
2690
3254
  for (const key of Object.keys(underlying)) {
2691
3255
  if (key in objectDef.properties && !rdpFields.has(key)) {
2692
3256
  newProps[key] = underlying[key];
2693
3257
  }
2694
3258
  }
2695
- return chunkFL7QZC57_cjs.createOsdkObject(value[chunkFL7QZC57_cjs.ClientRef], objectDef, newProps);
3259
+ return chunkCDUYWOVQ_cjs.createOsdkObject(value[chunkCDUYWOVQ_cjs.ClientRef], objectDef, newProps);
2696
3260
  }
2697
3261
  function isSuperset(superset, subset) {
2698
3262
  for (const field of subset) {
@@ -2703,13 +3267,14 @@ function isSuperset(superset, subset) {
2703
3267
  return true;
2704
3268
  }
2705
3269
  function filterToRdpFields(value, rdpFieldsToKeep, sourceRdpFields) {
2706
- const underlying = value[chunkFL7QZC57_cjs.UnderlyingOsdkObject];
2707
- const objectDef = value[chunkFL7QZC57_cjs.ObjectDefRef];
3270
+ const underlying = value[chunkCDUYWOVQ_cjs.UnderlyingOsdkObject];
3271
+ const objectDef = value[chunkCDUYWOVQ_cjs.ObjectDefRef];
2708
3272
  const newProps = {
2709
3273
  $apiName: underlying.$apiName,
2710
3274
  $objectType: underlying.$objectType,
2711
3275
  $primaryKey: underlying.$primaryKey,
2712
- $title: underlying.$title
3276
+ $title: underlying.$title,
3277
+ $rid: underlying.$rid
2713
3278
  };
2714
3279
  for (const key of Object.keys(underlying)) {
2715
3280
  if (key in objectDef.properties) {
@@ -2719,7 +3284,7 @@ function filterToRdpFields(value, rdpFieldsToKeep, sourceRdpFields) {
2719
3284
  }
2720
3285
  }
2721
3286
  }
2722
- return chunkFL7QZC57_cjs.createOsdkObject(value[chunkFL7QZC57_cjs.ClientRef], objectDef, newProps);
3287
+ return chunkCDUYWOVQ_cjs.createOsdkObject(value[chunkCDUYWOVQ_cjs.ClientRef], objectDef, newProps);
2723
3288
  }
2724
3289
  function mergeObjectFields(sourceValue, sourceRdpFields, targetRdpFields, targetCurrentValue) {
2725
3290
  if (targetRdpFields.size === 0) {
@@ -2731,13 +3296,14 @@ function mergeObjectFields(sourceValue, sourceRdpFields, targetRdpFields, target
2731
3296
  }
2732
3297
  return filterToRdpFields(sourceValue, targetRdpFields, sourceRdpFields);
2733
3298
  }
2734
- const sourceUnderlying = sourceValue[chunkFL7QZC57_cjs.UnderlyingOsdkObject];
2735
- const objectDef = sourceValue[chunkFL7QZC57_cjs.ObjectDefRef];
3299
+ const sourceUnderlying = sourceValue[chunkCDUYWOVQ_cjs.UnderlyingOsdkObject];
3300
+ const objectDef = sourceValue[chunkCDUYWOVQ_cjs.ObjectDefRef];
2736
3301
  const newProps = {
2737
3302
  $apiName: sourceUnderlying.$apiName,
2738
3303
  $objectType: sourceUnderlying.$objectType,
2739
3304
  $primaryKey: sourceUnderlying.$primaryKey,
2740
- $title: sourceUnderlying.$title
3305
+ $title: sourceUnderlying.$title,
3306
+ $rid: sourceUnderlying.$rid
2741
3307
  };
2742
3308
  for (const key of Object.keys(sourceUnderlying)) {
2743
3309
  if (key in objectDef.properties && (!sourceRdpFields.has(key) || targetRdpFields.has(key))) {
@@ -2745,14 +3311,14 @@ function mergeObjectFields(sourceValue, sourceRdpFields, targetRdpFields, target
2745
3311
  }
2746
3312
  }
2747
3313
  if (targetCurrentValue) {
2748
- const targetUnderlying = targetCurrentValue[chunkFL7QZC57_cjs.UnderlyingOsdkObject];
3314
+ const targetUnderlying = targetCurrentValue[chunkCDUYWOVQ_cjs.UnderlyingOsdkObject];
2749
3315
  for (const field of targetRdpFields) {
2750
3316
  if (!sourceRdpFields.has(field) && field in targetUnderlying) {
2751
3317
  newProps[field] = targetUnderlying[field];
2752
3318
  }
2753
3319
  }
2754
3320
  }
2755
- return chunkFL7QZC57_cjs.createOsdkObject(sourceValue[chunkFL7QZC57_cjs.ClientRef], objectDef, newProps);
3321
+ return chunkCDUYWOVQ_cjs.createOsdkObject(sourceValue[chunkCDUYWOVQ_cjs.ClientRef], objectDef, newProps);
2756
3322
  }
2757
3323
 
2758
3324
  // src/observable/internal/object/ObjectCacheKeyRegistry.ts
@@ -2887,7 +3453,7 @@ var BulkObjectLoader = class {
2887
3453
  #maxEntries;
2888
3454
  constructor(client, maxWait = 25, maxEntries = 100) {
2889
3455
  this.#client = client;
2890
- this.#logger = client[chunkPARVKNVB_cjs.additionalContext].logger;
3456
+ this.#logger = client[chunkY362HOIZ_cjs.additionalContext].logger;
2891
3457
  this.#maxWait = maxWait;
2892
3458
  this.#maxEntries = maxEntries;
2893
3459
  }
@@ -2934,7 +3500,8 @@ var BulkObjectLoader = class {
2934
3500
  const {
2935
3501
  data
2936
3502
  } = await this.#client(miniDef).where(whereClause).fetchPage({
2937
- $pageSize: pks.length
3503
+ $pageSize: pks.length,
3504
+ $includeRid: true
2938
3505
  });
2939
3506
  for (const {
2940
3507
  primaryKey,
@@ -2955,7 +3522,7 @@ var ObjectQuery = class extends Query {
2955
3522
  #apiName;
2956
3523
  #pk;
2957
3524
  constructor(store, subject, type, pk, cacheKey, opts) {
2958
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
3525
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
2959
3526
  msgPrefix: `ObjectQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
2960
3527
  }) : void 0);
2961
3528
  this.#apiName = type;
@@ -2984,7 +3551,20 @@ var ObjectQuery = class extends Query {
2984
3551
  methodName: "_fetchAndStore"
2985
3552
  }).debug("calling _fetchAndStore");
2986
3553
  }
2987
- const obj = await getBulkObjectLoader(this.store.client).fetch(this.#apiName, this.#pk);
3554
+ const rdpConfig = this.cacheKey.otherKeys[RDP_CONFIG_IDX];
3555
+ let obj;
3556
+ if (rdpConfig) {
3557
+ const miniDef = {
3558
+ type: "object",
3559
+ apiName: this.#apiName
3560
+ };
3561
+ const fetched = await this.store.client(miniDef).withProperties(rdpConfig).fetchOne(this.#pk, {
3562
+ $includeRid: true
3563
+ });
3564
+ obj = fetched;
3565
+ } else {
3566
+ obj = await getBulkObjectLoader(this.store.client).fetch(this.#apiName, this.#pk);
3567
+ }
2988
3568
  this.store.batch({}, (batch) => {
2989
3569
  this.writeToStore(obj, "loaded", batch);
2990
3570
  });
@@ -3034,7 +3614,7 @@ var ObjectsHelper = class extends AbstractHelper {
3034
3614
  */
3035
3615
  storeOsdkInstances(values, batch, rdpConfig) {
3036
3616
  return values.map((v) => this.getQuery({
3037
- apiName: v.$apiName,
3617
+ apiName: v.$objectType ?? v.$apiName,
3038
3618
  pk: v.$primaryKey
3039
3619
  }, rdpConfig).writeToStore(v, "loaded", batch).cacheKey);
3040
3620
  }
@@ -3103,17 +3683,13 @@ var ObjectSetQuery = class extends BaseListQuery {
3103
3683
  #composedObjectSet;
3104
3684
  #objectTypes;
3105
3685
  constructor(store, subject, baseObjectSetWire, operations, cacheKey, opts) {
3106
- super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
3686
+ super(store, subject, opts, cacheKey, process.env.NODE_ENV !== "production" ? store.client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
3107
3687
  msgPrefix: `ObjectSetQuery<${cacheKey.otherKeys.map((x) => JSON.stringify(x)).join(", ")}>`
3108
3688
  }) : void 0);
3109
3689
  this.#baseObjectSetWire = baseObjectSetWire;
3110
3690
  this.#operations = operations;
3111
3691
  this.#composedObjectSet = this.#composeObjectSet(opts);
3112
3692
  this.#objectTypes = this.#extractObjectTypes(opts);
3113
- if (operations.orderBy && Object.keys(operations.orderBy).length > 0) {
3114
- const firstType = Array.from(this.#objectTypes)[0];
3115
- this.sortingStrategy = new OrderBySortingStrategy(firstType, operations.orderBy);
3116
- }
3117
3693
  if (opts.autoFetchMore === true) {
3118
3694
  this.minResultsToLoad = Number.MAX_SAFE_INTEGER;
3119
3695
  } else if (typeof opts.autoFetchMore === "number") {
@@ -3152,7 +3728,7 @@ var ObjectSetQuery = class extends BaseListQuery {
3152
3728
  }
3153
3729
  if (opts.union) {
3154
3730
  for (const os of opts.union) {
3155
- const wire = chunkPARVKNVB_cjs.getWireObjectSet(os);
3731
+ const wire = chunkY362HOIZ_cjs.getWireObjectSet(os);
3156
3732
  if (wire.type) {
3157
3733
  types.add(wire.type);
3158
3734
  }
@@ -3160,7 +3736,7 @@ var ObjectSetQuery = class extends BaseListQuery {
3160
3736
  }
3161
3737
  if (opts.intersect) {
3162
3738
  for (const os of opts.intersect) {
3163
- const wire = chunkPARVKNVB_cjs.getWireObjectSet(os);
3739
+ const wire = chunkY362HOIZ_cjs.getWireObjectSet(os);
3164
3740
  if (wire.type) {
3165
3741
  types.add(wire.type);
3166
3742
  }
@@ -3168,7 +3744,7 @@ var ObjectSetQuery = class extends BaseListQuery {
3168
3744
  }
3169
3745
  if (opts.subtract) {
3170
3746
  for (const os of opts.subtract) {
3171
- const wire = chunkPARVKNVB_cjs.getWireObjectSet(os);
3747
+ const wire = chunkY362HOIZ_cjs.getWireObjectSet(os);
3172
3748
  if (wire.type) {
3173
3749
  types.add(wire.type);
3174
3750
  }
@@ -3187,9 +3763,17 @@ var ObjectSetQuery = class extends BaseListQuery {
3187
3763
  * Fetches a page of data from the composed ObjectSet
3188
3764
  */
3189
3765
  async fetchPageData(signal) {
3766
+ if (this.#operations.orderBy && Object.keys(this.#operations.orderBy).length > 0 && !(this.sortingStrategy instanceof OrderBySortingStrategy)) {
3767
+ const wireObjectSet = chunkY362HOIZ_cjs.getWireObjectSet(this.#composedObjectSet);
3768
+ const {
3769
+ resultType
3770
+ } = await getObjectTypesThatInvalidate(this.store.client[chunkY362HOIZ_cjs.additionalContext], wireObjectSet);
3771
+ this.sortingStrategy = new OrderBySortingStrategy(resultType.apiName, this.#operations.orderBy);
3772
+ }
3190
3773
  const resp = await this.#composedObjectSet.fetchPage({
3191
3774
  $nextPageToken: this.nextPageToken,
3192
3775
  $pageSize: this.options.pageSize,
3776
+ $includeRid: true,
3193
3777
  // OrderBy is already applied in the composed ObjectSet
3194
3778
  ...this.#operations.orderBy && Object.keys(this.#operations.orderBy).length > 0 ? {
3195
3779
  $orderBy: this.#operations.orderBy
@@ -3204,8 +3788,10 @@ var ObjectSetQuery = class extends BaseListQuery {
3204
3788
  handleFetchError(error, _status, batch) {
3205
3789
  this.logger?.error("error", error);
3206
3790
  this.store.subjects.get(this.cacheKey).error(error);
3791
+ const existingTotalCount = batch.read(this.cacheKey)?.value?.totalCount;
3207
3792
  return this.writeToStore({
3208
- data: []
3793
+ data: [],
3794
+ totalCount: existingTotalCount
3209
3795
  }, "error", batch);
3210
3796
  }
3211
3797
  registerStreamUpdates(sub) {
@@ -3226,7 +3812,8 @@ var ObjectSetQuery = class extends BaseListQuery {
3226
3812
  hasMore: this.nextPageToken != null,
3227
3813
  status: params.status,
3228
3814
  lastUpdated: params.lastUpdated,
3229
- objectSet: this.#composedObjectSet
3815
+ objectSet: this.#composedObjectSet,
3816
+ totalCount: params.totalCount
3230
3817
  };
3231
3818
  }
3232
3819
  };
@@ -3249,7 +3836,7 @@ var ObjectSetHelper = class extends AbstractHelper {
3249
3836
  const {
3250
3837
  baseObjectSet
3251
3838
  } = options;
3252
- const baseObjectSetWire = JSON.stringify(chunkPARVKNVB_cjs.getWireObjectSet(baseObjectSet));
3839
+ const baseObjectSetWire = JSON.stringify(chunkY362HOIZ_cjs.getWireObjectSet(baseObjectSet));
3253
3840
  const operations = this.buildCanonicalizedOperations(options);
3254
3841
  const objectSetCacheKey = this.cacheKeys.get("objectSet", baseObjectSetWire, operations);
3255
3842
  return this.store.queries.get(objectSetCacheKey, () => {
@@ -3265,13 +3852,13 @@ var ObjectSetHelper = class extends AbstractHelper {
3265
3852
  operations.withProperties = Object.keys(options.withProperties).sort();
3266
3853
  }
3267
3854
  if (options.union && options.union.length > 0) {
3268
- operations.union = options.union.map((os) => JSON.stringify(chunkPARVKNVB_cjs.getWireObjectSet(os)));
3855
+ operations.union = options.union.map((os) => JSON.stringify(chunkY362HOIZ_cjs.getWireObjectSet(os)));
3269
3856
  }
3270
3857
  if (options.intersect && options.intersect.length > 0) {
3271
- operations.intersect = options.intersect.map((os) => JSON.stringify(chunkPARVKNVB_cjs.getWireObjectSet(os)));
3858
+ operations.intersect = options.intersect.map((os) => JSON.stringify(chunkY362HOIZ_cjs.getWireObjectSet(os)));
3272
3859
  }
3273
3860
  if (options.subtract && options.subtract.length > 0) {
3274
- operations.subtract = options.subtract.map((os) => JSON.stringify(chunkPARVKNVB_cjs.getWireObjectSet(os)));
3861
+ operations.subtract = options.subtract.map((os) => JSON.stringify(chunkY362HOIZ_cjs.getWireObjectSet(os)));
3275
3862
  }
3276
3863
  if (options.pivotTo) {
3277
3864
  operations.pivotTo = options.pivotTo;
@@ -3343,7 +3930,7 @@ var RdpCanonicalizer = class extends CachingCanonicalizer {
3343
3930
  apiName: "__rdp_canonicalizer_holder__"
3344
3931
  };
3345
3932
  for (const [key, rdpFunction] of Object.entries(rdp)) {
3346
- const builder = chunkPARVKNVB_cjs.createWithPropertiesObjectSet(
3933
+ const builder = chunkY362HOIZ_cjs.createWithPropertiesObjectSet(
3347
3934
  objectTypeHolder,
3348
3935
  {
3349
3936
  type: "methodInput"
@@ -3377,6 +3964,22 @@ var RdpCanonicalizer = class extends CachingCanonicalizer {
3377
3964
  }
3378
3965
  };
3379
3966
 
3967
+ // src/observable/internal/RidListCanonicalizer.ts
3968
+ chunkLDTMSHUZ_cjs.init_cjs_shims();
3969
+ var RidListCanonicalizer = class {
3970
+ cache = /* @__PURE__ */ new Map();
3971
+ canonicalize(rids) {
3972
+ const sorted = [...new Set(rids)].sort();
3973
+ const key = sorted.join("\0");
3974
+ let canonical = this.cache.get(key);
3975
+ if (!canonical) {
3976
+ canonical = sorted;
3977
+ this.cache.set(key, canonical);
3978
+ }
3979
+ return canonical;
3980
+ }
3981
+ };
3982
+
3380
3983
  // src/observable/internal/Store.ts
3381
3984
  var Store = class {
3382
3985
  whereCanonicalizer = new WhereClauseCanonicalizer();
@@ -3384,6 +3987,7 @@ var Store = class {
3384
3987
  rdpCanonicalizer = new RdpCanonicalizer();
3385
3988
  intersectCanonicalizer = new IntersectCanonicalizer(this.whereCanonicalizer);
3386
3989
  pivotCanonicalizer = new PivotCanonicalizer();
3990
+ ridListCanonicalizer = new RidListCanonicalizer();
3387
3991
  /** @internal */
3388
3992
  queries = new Queries();
3389
3993
  objectCacheKeyRegistry = new ObjectCacheKeyRegistry();
@@ -3394,7 +3998,7 @@ var Store = class {
3394
3998
  subjects = this.layers.subjects;
3395
3999
  // these are hopefully temporary
3396
4000
  constructor(client) {
3397
- this.logger = client[chunkPARVKNVB_cjs.additionalContext].logger?.child({}, {
4001
+ this.logger = client[chunkY362HOIZ_cjs.additionalContext].logger?.child({}, {
3398
4002
  msgPrefix: "Store"
3399
4003
  });
3400
4004
  this.client = client;
@@ -3402,7 +4006,8 @@ var Store = class {
3402
4006
  onDestroy: this.#cleanupCacheKey
3403
4007
  });
3404
4008
  this.aggregations = new AggregationsHelper(this, this.cacheKeys, this.whereCanonicalizer, this.rdpCanonicalizer);
3405
- this.lists = new ListsHelper(this, this.cacheKeys, this.whereCanonicalizer, this.orderByCanonicalizer, this.rdpCanonicalizer, this.intersectCanonicalizer, this.pivotCanonicalizer);
4009
+ this.functions = new FunctionsHelper(this, this.cacheKeys);
4010
+ this.lists = new ListsHelper(this, this.cacheKeys, this.whereCanonicalizer, this.orderByCanonicalizer, this.rdpCanonicalizer, this.intersectCanonicalizer, this.pivotCanonicalizer, this.ridListCanonicalizer);
3406
4011
  this.objects = new ObjectsHelper(this, this.cacheKeys);
3407
4012
  this.links = new LinksHelper(this, this.cacheKeys, this.whereCanonicalizer, this.orderByCanonicalizer);
3408
4013
  this.objectSets = new ObjectSetHelper(this, this.cacheKeys, this.whereCanonicalizer, this.orderByCanonicalizer);
@@ -3414,7 +4019,7 @@ var Store = class {
3414
4019
  #cleanupCacheKey = (key) => {
3415
4020
  const subject = this.subjects.peek(key);
3416
4021
  if (process.env.NODE_ENV !== "production") {
3417
- !subject ? process.env.NODE_ENV !== "production" ? invariant4__default.default(false) : invariant4__default.default(false) : void 0;
4022
+ !subject ? process.env.NODE_ENV !== "production" ? invariant5__default.default(false) : invariant5__default.default(false) : void 0;
3418
4023
  }
3419
4024
  this.subjects.delete(key);
3420
4025
  this.queries.delete(key);
@@ -3656,14 +4261,20 @@ var Store = class {
3656
4261
  }
3657
4262
  return Promise.allSettled(promises).then(() => void 0);
3658
4263
  }
4264
+ async invalidateFunction(apiName, params) {
4265
+ return this.functions.invalidateFunction(apiName, params);
4266
+ }
4267
+ async invalidateFunctionsByObject(apiName, primaryKey) {
4268
+ return this.functions.invalidateFunctionsByObject(apiName, primaryKey);
4269
+ }
3659
4270
  };
3660
4271
 
3661
4272
  // src/observable/ObservableClient.ts
3662
4273
  function createObservableClient(client) {
3663
- const tweakedClient = chunkFL7QZC57_cjs.createClientFromContext({
3664
- ...client[chunkPARVKNVB_cjs.additionalContext],
3665
- fetch: shared_net_fetch.createFetchHeaderMutator(client[chunkPARVKNVB_cjs.additionalContext].fetch, (headers) => {
3666
- headers.set("Fetch-User-Agent", [headers.get("Fetch-User-Agent"), chunkFL7QZC57_cjs.OBSERVABLE_USER_AGENT].filter((x) => x && x?.length > 0).join(" "));
4274
+ const tweakedClient = chunkCDUYWOVQ_cjs.createClientFromContext({
4275
+ ...client[chunkY362HOIZ_cjs.additionalContext],
4276
+ fetch: shared_net_fetch.createFetchHeaderMutator(client[chunkY362HOIZ_cjs.additionalContext].fetch, (headers) => {
4277
+ headers.set("Fetch-User-Agent", [headers.get("Fetch-User-Agent"), chunkCDUYWOVQ_cjs.OBSERVABLE_USER_AGENT].filter((x) => x && x?.length > 0).join(" "));
3667
4278
  return headers;
3668
4279
  })
3669
4280
  });
@@ -3707,11 +4318,11 @@ function getOsdkConfig(ontologyRid) {
3707
4318
 
3708
4319
  Object.defineProperty(exports, "createClientWithTransaction", {
3709
4320
  enumerable: true,
3710
- get: function () { return chunkFL7QZC57_cjs.createClientWithTransaction; }
4321
+ get: function () { return chunkCDUYWOVQ_cjs.createClientWithTransaction; }
3711
4322
  });
3712
4323
  Object.defineProperty(exports, "augment", {
3713
4324
  enumerable: true,
3714
- get: function () { return chunkPARVKNVB_cjs.augment; }
4325
+ get: function () { return chunkY362HOIZ_cjs.augment; }
3715
4326
  });
3716
4327
  exports.computeObjectSetCacheKey = computeObjectSetCacheKey;
3717
4328
  exports.createObservableClient = createObservableClient;